From a0cce524a862e65b793a7e090cfabea2fae45d18 Mon Sep 17 00:00:00 2001 From: tdreyno Date: Mon, 15 Feb 2010 13:02:20 -0800 Subject: [PATCH] remove vendored gems --- Gemfile | 19 - Rakefile | 17 + VERSION | 2 +- lib/middleman.rb | 2 +- lib/middleman/vendor/bin/compass | 3 - lib/middleman/vendor/bin/css2sass | 3 - lib/middleman/vendor/bin/edit_json.rb | 3 - lib/middleman/vendor/bin/haml | 3 - lib/middleman/vendor/bin/html2haml | 3 - lib/middleman/vendor/bin/htmldiff | 3 - lib/middleman/vendor/bin/ldiff | 3 - lib/middleman/vendor/bin/prettify_json.rb | 3 - lib/middleman/vendor/bin/rackup | 3 - lib/middleman/vendor/bin/rake | 3 - lib/middleman/vendor/bin/sass | 3 - lib/middleman/vendor/bin/shotgun | 3 - lib/middleman/vendor/bin/smusher | 3 - lib/middleman/vendor/bin/sprocketize | 3 - lib/middleman/vendor/gems/environment.rb | 4 - .../ruby/1.8/cache/compass-0.10.0.pre5.gem | Bin 832000 -> 0 bytes .../ruby/1.8/cache/compass-colors-0.3.1.gem | Bin 9216 -> 0 bytes .../ruby/1.8/cache/compass-slickmap-0.2.3.gem | Bin 11264 -> 0 bytes .../gems/ruby/1.8/cache/diff-lcs-1.1.2.gem | Bin 27136 -> 0 bytes .../gems/ruby/1.8/cache/extlib-0.9.14.gem | Bin 64512 -> 0 bytes .../ruby/1.8/cache/fancy-buttons-0.3.9.gem | Bin 9728 -> 0 bytes .../gems/ruby/1.8/cache/haml-2.2.17.gem | Bin 149504 -> 0 bytes .../gems/ruby/1.8/cache/highline-1.5.1.gem | Bin 55296 -> 0 bytes .../ruby/1.8/cache/httpclient-2.1.5.2.gem | Bin 147456 -> 0 bytes .../vendor/gems/ruby/1.8/cache/json-1.2.0.gem | Bin 385536 -> 0 bytes .../gems/ruby/1.8/cache/json_pure-1.2.0.gem | Bin 385536 -> 0 bytes .../vendor/gems/ruby/1.8/cache/rack-1.1.0.gem | Bin 104448 -> 0 bytes .../gems/ruby/1.8/cache/rack-test-0.5.3.gem | Bin 19456 -> 0 bytes .../vendor/gems/ruby/1.8/cache/rake-0.8.7.gem | Bin 104960 -> 0 bytes .../gems/ruby/1.8/cache/shotgun-0.6.gem | Bin 8192 -> 0 bytes .../gems/ruby/1.8/cache/sinatra-1.0.a.gem | Bin 117760 -> 0 bytes .../1.8/cache/sinatra-content-for-0.2.gem | Bin 6656 -> 0 bytes .../gems/ruby/1.8/cache/smusher-0.4.2.gem | Bin 20992 -> 0 bytes .../gems/ruby/1.8/cache/sprockets-1.0.2.gem | Bin 13312 -> 0 bytes .../gems/ruby/1.8/cache/templater-1.0.0.gem | Bin 32256 -> 0 bytes .../ruby/1.8/cache/yui-compressor-0.9.1.gem | Bin 817152 -> 0 bytes .../vendor/gems/ruby/1.8/environment.rb | 177 - .../compass-0.10.0.pre5/CHANGELOG.markdown | 793 ---- .../gems/compass-0.10.0.pre5/LICENSE.markdown | 29 - .../gems/compass-0.10.0.pre5/README.markdown | 56 - .../1.8/gems/compass-0.10.0.pre5/REVISION | 1 - .../1.8/gems/compass-0.10.0.pre5/Rakefile | 167 - .../1.8/gems/compass-0.10.0.pre5/VERSION.yml | 5 - .../1.8/gems/compass-0.10.0.pre5/bin/compass | 26 - .../examples/README.markdown | 4 - .../examples/blueprint_default/config.rb | 7 - .../blueprint_default/images/grid.png | Bin 206 -> 0 bytes .../blueprint_default/index.html.haml | 85 - .../parts/elements.html.haml | 282 -- .../blueprint_default/parts/forms.html.haml | 192 - .../blueprint_default/parts/grid.html.haml | 274 -- .../blueprint_default/parts/test-small.jpg | Bin 1886 -> 0 bytes .../examples/blueprint_default/parts/test.jpg | Bin 35467 -> 0 bytes .../blueprint_default/parts/valid.png | Bin 1669 -> 0 bytes .../examples/blueprint_default/src/ie.sass | 3 - .../blueprint_default/src/images/grid.png | Bin 206 -> 0 bytes .../examples/blueprint_default/src/print.sass | 3 - .../blueprint_default/src/screen.sass | 8 - .../examples/blueprint_plugins/config.rb | 8 - .../images/buttons/cross.png | Bin 655 -> 0 bytes .../blueprint_plugins/images/buttons/key.png | Bin 455 -> 0 bytes .../blueprint_plugins/images/buttons/tick.png | Bin 537 -> 0 bytes .../blueprint_plugins/images/grid.png | Bin 206 -> 0 bytes .../images/link_icons/doc.png | Bin 777 -> 0 bytes .../images/link_icons/email.png | Bin 641 -> 0 bytes .../images/link_icons/external.png | Bin 46848 -> 0 bytes .../images/link_icons/feed.png | Bin 691 -> 0 bytes .../images/link_icons/im.png | Bin 741 -> 0 bytes .../images/link_icons/pdf.png | Bin 591 -> 0 bytes .../images/link_icons/visited.png | Bin 46990 -> 0 bytes .../images/link_icons/xls.png | Bin 663 -> 0 bytes .../blueprint_plugins/images/test-small.jpg | Bin 1886 -> 0 bytes .../blueprint_plugins/images/test.jpg | Bin 35467 -> 0 bytes .../blueprint_plugins/images/valid.png | Bin 1669 -> 0 bytes .../blueprint_plugins/index.html.haml | 96 - .../plugins/buttons.html.haml | 67 - .../plugins/fancy_type.html.haml | 100 - .../plugins/link_icons.html.haml | 61 - .../blueprint_plugins/plugins/rtl.html.haml | 100 - .../blueprint_plugins/src/buttons.sass | 49 - .../examples/blueprint_plugins/src/ie.sass | 3 - .../blueprint_plugins/src/images/grid.png | Bin 206 -> 0 bytes .../blueprint_plugins/src/link_icons.sass | 13 - .../examples/blueprint_plugins/src/print.sass | 3 - .../blueprint_plugins/src/rtl_screen.sass | 13 - .../blueprint_plugins/src/screen.sass | 11 - .../examples/blueprint_scoped/images/grid.png | Bin 199 -> 0 bytes .../examples/blueprint_scoped/src/ie.sass | 4 - .../examples/blueprint_scoped/src/print.sass | 4 - .../examples/blueprint_scoped/src/screen.sass | 5 - .../blueprint_scoped_form/images/grid.png | Bin 199 -> 0 bytes .../blueprint_scoped_form/src/ie.sass | 3 - .../blueprint_scoped_form/src/print.sass | 3 - .../blueprint_scoped_form/src/screen.sass | 10 - .../examples/blueprint_semantic/config.rb | 7 - .../blueprint_semantic/images/grid.png | Bin 206 -> 0 bytes .../blueprint_semantic/index.html.haml | 86 - .../parts/fancy_type.html.haml | 100 - .../blueprint_semantic/parts/liquid.html.haml | 100 - .../blueprint_semantic/parts/test-small.jpg | Bin 1886 -> 0 bytes .../blueprint_semantic/parts/test.jpg | Bin 35467 -> 0 bytes .../blueprint_semantic/parts/valid.png | Bin 1669 -> 0 bytes .../examples/blueprint_semantic/src/ie.sass | 3 - .../blueprint_semantic/src/images/grid.png | Bin 206 -> 0 bytes .../blueprint_semantic/src/liquid.sass | 69 - .../blueprint_semantic/src/print.sass | 3 - .../blueprint_semantic/src/screen.sass | 70 - .../examples/compass/bootstrap.rb | 3 - .../examples/compass/compass.html.haml | 39 - .../examples/compass/config.rb | 7 - .../extensions/yui/stylesheets/_yui.sass | 7 - .../yui/stylesheets/yui/modules/_base.sass | 70 - .../yui/stylesheets/yui/modules/_fonts.sass | 45 - .../yui/stylesheets/yui/modules/_grids.sass | 385 -- .../yui/stylesheets/yui/modules/_reset.sass | 61 - .../yui/templates/project/manifest.rb | 1 - .../yui/templates/project/screen.sass | 4 - .../examples/compass/images/blue_arrow.gif | Bin 51 -> 0 bytes .../examples/compass/src/compass.sass | 47 - .../compass/src/images/blue_arrow.gif | Bin 51 -> 0 bytes .../examples/compass/src/sticky_footer.sass | 11 - .../examples/compass/src/utilities.sass | 108 - .../examples/compass/sticky_footer.html.haml | 14 - .../examples/compass/utilities.html.haml | 189 - .../examples/css3/config.rb | 6 - .../templates/project/Vtks Revolt.ttf | Bin 158556 -> 0 bytes .../templates/project/angelina.ttf | Bin 77048 -> 0 bytes .../templates/project/fancy-fonts.sass | 7 - .../fancy-fonts/templates/project/manifest.rb | 5 - .../examples/css3/images/fresh-peas.jpg | Bin 35990 -> 0 bytes .../examples/css3/index.html.haml | 55 - .../examples/css3/src/_base.sass | 14 - .../examples/css3/src/fancy-fonts.sass | 7 - .../examples/css3/src/gradient.sass | 10 - .../examples/css3/src/main.sass | 80 - .../css3/stylesheets/fonts/Vtks Revolt.ttf | Bin 158556 -> 0 bytes .../css3/stylesheets/fonts/angelina.ttf | Bin 77048 -> 0 bytes .../examples/downloader.rb | 57 - .../examples/logo/logo.html.haml | 40 - .../examples/logo/src/ie.sass | 6 - .../examples/logo/src/print.sass | 6 - .../examples/logo/src/screen.sass | 29 - .../examples/ninesixty/bootstrap.rb | 4 - .../examples/ninesixty/config.rb | 9 - .../extensions/ninesixty/README.mkdn | 56 - .../ninesixty/compass-960-plugin.gemspec | 36 - .../extensions/ninesixty/lib/ninesixty.rb | 1 - .../ninesixty/lib/ninesixty/compass_plugin.rb | 5 - .../extensions/ninesixty/sass/960/_grid.sass | 64 - .../extensions/ninesixty/sass/960/_text.sass | 59 - .../ninesixty/templates/project/grid.sass | 34 - .../ninesixty/templates/project/manifest.rb | 2 - .../ninesixty/templates/project/text.sass | 10 - .../examples/ninesixty/src/grid.sass | 16 - .../examples/ninesixty/src/text.sass | 10 - .../examples/susy/bootstrap.rb | 3 - .../examples/susy/config.rb | 9 - .../examples/susy/extensions/susy/LICENSE.txt | 28 - .../examples/susy/extensions/susy/README.mkdn | 235 - .../susy/compass-susy-plugin.gemspec | 35 - .../extensions/susy/docs/tutorial/build.sh | 141 - .../code/01_target/src/_defaults.sass | 100 - .../tutorial/code/01_target/src/screen.sass | 98 - .../code/02_container/src/_defaults.sass | 147 - .../code/02_container/src/screen.sass | 19 - .../code/03_structure/src/_defaults.sass | 147 - .../code/03_structure/src/screen.sass | 48 - .../susy/docs/tutorial/code/_common/config.rb | 14 - .../tutorial/code/_common/images/grid.png | Bin 169 -> 0 bytes .../code/_common/images/susy_logo.png | Bin 3206 -> 0 bytes .../docs/tutorial/code/_common/src/_base.sass | 63 - .../docs/tutorial/code/_tools/Markdown.pl | 1450 ------ .../tutorial/code/site/src/_defaults.sass | 100 - .../docs/tutorial/code/site/src/screen.sass | 91 - .../docs/tutorial/figures/susy_element.png | Bin 15458 -> 0 bytes .../susy/docs/tutorial/figures/susy_grid.png | Bin 13633 -> 0 bytes .../extensions/susy/docs/tutorial/index.mkdn | 301 -- .../examples/susy/extensions/susy/lib/susy.rb | 2 - .../susy/lib/susy/compass_plugin.rb | 5 - .../susy/lib/susy/sass_extensions.rb | 79 - .../susy/extensions/susy/sass/susy/_grid.sass | 128 - .../extensions/susy/sass/susy/_reset.sass | 7 - .../susy/extensions/susy/sass/susy/_susy.sass | 23 - .../susy/extensions/susy/sass/susy/_text.sass | 15 - .../extensions/susy/sass/susy/_utils.sass | 81 - .../susy/templates/project/_base.sass | 62 - .../susy/templates/project/_defaults.sass | 147 - .../extensions/susy/templates/project/ie.sass | 9 - .../susy/templates/project/manifest.rb | 5 - .../susy/templates/project/print.sass | 7 - .../susy/templates/project/screen.sass | 44 - .../examples/susy/src/_base.sass | 62 - .../examples/susy/src/_defaults.sass | 148 - .../examples/susy/src/screen.sass | 114 - .../examples/yui/bootstrap.rb | 3 - .../examples/yui/divisions.html.haml | 179 - .../yui/extensions/yui/stylesheets/_yui.sass | 7 - .../yui/stylesheets/yui/modules/_base.sass | 70 - .../yui/stylesheets/yui/modules/_fonts.sass | 45 - .../yui/stylesheets/yui/modules/_grids.sass | 385 -- .../yui/stylesheets/yui/modules/_reset.sass | 61 - .../yui/templates/project/manifest.rb | 1 - .../yui/templates/project/screen.sass | 4 - .../examples/yui/index.html.haml | 19 - .../examples/yui/src/screen.sass | 13 - .../examples/yui/sub_divisions.html.haml | 169 - .../examples/yui/templates.html.haml | 54 - .../compass-0.10.0.pre5/examples/yui/test.jpg | Bin 35467 -> 0 bytes .../examples/yui/typography.html.haml | 132 - .../features/command_line.feature | 247 - .../features/extensions.feature | 20 - .../step_definitions/command_line_steps.rb | 234 - .../step_definitions/extension_steps.rb | 13 - .../blueprint/stylesheets/_blueprint.sass | 31 - .../stylesheets/blueprint/_buttons.sass | 84 - .../stylesheets/blueprint/_colors.sass | 33 - .../stylesheets/blueprint/_debug.sass | 9 - .../stylesheets/blueprint/_fancy_type.sass | 82 - .../stylesheets/blueprint/_form.sass | 56 - .../stylesheets/blueprint/_grid.sass | 179 - .../blueprint/stylesheets/blueprint/_ie.sass | 99 - .../stylesheets/blueprint/_interaction.sass | 58 - .../stylesheets/blueprint/_link_icons.sass | 44 - .../stylesheets/blueprint/_liquid.sass | 141 - .../stylesheets/blueprint/_print.sass | 87 - .../stylesheets/blueprint/_reset.sass | 58 - .../blueprint/stylesheets/blueprint/_rtl.sass | 123 - .../stylesheets/blueprint/_scaffolding.sass | 49 - .../stylesheets/blueprint/_screen.sass | 2 - .../stylesheets/blueprint/_typography.sass | 162 - .../stylesheets/blueprint/_utilities.sass | 37 - .../blueprint/docs/_buttons.sass.html | 26 - .../blueprint/docs/_colors.sass.html | 1 - .../blueprint/docs/_debug.sass.html | 1 - .../blueprint/docs/_fancy_type.sass.html | 45 - .../blueprint/docs/_form.sass.html | 3 - .../blueprint/docs/_grid.sass.html | 46 - .../stylesheets/blueprint/docs/_ie.sass.html | 7 - .../blueprint/docs/_interaction.sass.html | 1 - .../blueprint/docs/_link_icons.sass.html | 1 - .../blueprint/docs/_liquid.sass.html | 7 - .../blueprint/docs/_print.sass.html | 7 - .../blueprint/docs/_reset.sass.html | 7 - .../stylesheets/blueprint/docs/_rtl.sass.html | 38 - .../blueprint/docs/_scaffolding.sass.html | 11 - .../blueprint/docs/_screen.sass.html | 1 - .../blueprint/docs/_typography.sass.html | 3 - .../blueprint/docs/_utilities.sass.html | 3 - .../stylesheets/blueprint/docs/index.html | 31 - .../blueprint/docs/modules/_buttons.sass.html | 1 - .../blueprint/docs/modules/_colors.sass.html | 1 - .../blueprint/docs/modules/_debug.sass.html | 1 - .../docs/modules/_fancy_type.sass.html | 1 - .../blueprint/docs/modules/_form.sass.html | 1 - .../blueprint/docs/modules/_grid.sass.html | 1 - .../docs/modules/_interaction.sass.html | 1 - .../docs/modules/_link_icons.sass.html | 1 - .../blueprint/docs/modules/_liquid.sass.html | 1 - .../blueprint/docs/modules/_reset.sass.html | 1 - .../blueprint/docs/modules/_rtl.sass.html | 1 - .../docs/modules/_scaffolding.sass.html | 1 - .../docs/modules/_typography.sass.html | 1 - .../docs/modules/_utilities.sass.html | 1 - .../blueprint/modules/_buttons.sass | 2 - .../blueprint/modules/_colors.sass | 2 - .../stylesheets/blueprint/modules/_debug.sass | 2 - .../blueprint/modules/_fancy_type.sass | 2 - .../stylesheets/blueprint/modules/_form.sass | 2 - .../stylesheets/blueprint/modules/_grid.sass | 2 - .../blueprint/modules/_interaction.sass | 2 - .../blueprint/modules/_link_icons.sass | 2 - .../blueprint/modules/_liquid.sass | 3 - .../stylesheets/blueprint/modules/_reset.sass | 2 - .../stylesheets/blueprint/modules/_rtl.sass | 2 - .../blueprint/modules/_scaffolding.sass | 2 - .../blueprint/modules/_typography.sass | 2 - .../blueprint/modules/_utilities.sass | 2 - .../blueprint/templates/buttons/buttons.sass | 49 - .../templates/buttons/buttons/cross.png | Bin 655 -> 0 bytes .../templates/buttons/buttons/key.png | Bin 455 -> 0 bytes .../templates/buttons/buttons/tick.png | Bin 537 -> 0 bytes .../blueprint/templates/buttons/manifest.rb | 17 - .../templates/link_icons/link_icons.sass | 13 - .../templates/link_icons/link_icons/doc.png | Bin 777 -> 0 bytes .../templates/link_icons/link_icons/email.png | Bin 641 -> 0 bytes .../link_icons/link_icons/external.png | Bin 46848 -> 0 bytes .../templates/link_icons/link_icons/feed.png | Bin 691 -> 0 bytes .../templates/link_icons/link_icons/im.png | Bin 741 -> 0 bytes .../templates/link_icons/link_icons/pdf.png | Bin 591 -> 0 bytes .../link_icons/link_icons/visited.png | Bin 46990 -> 0 bytes .../templates/link_icons/link_icons/xls.png | Bin 663 -> 0 bytes .../templates/link_icons/manifest.rb | 23 - .../blueprint/templates/project/grid.png | Bin 206 -> 0 bytes .../blueprint/templates/project/ie.sass | 16 - .../blueprint/templates/project/manifest.rb | 30 - .../templates/project/partials/_base.sass | 11 - .../blueprint/templates/project/print.sass | 8 - .../blueprint/templates/project/screen.sass | 41 - .../compass/stylesheets/_compass.sass | 2 - .../compass/stylesheets/compass/_css3.sass | 14 - .../compass/stylesheets/compass/_layout.sass | 1 - .../compass/stylesheets/compass/_misc.sass | 24 - .../compass/stylesheets/compass/_reset.sass | 3 - .../stylesheets/compass/_utilities.sass | 6 - .../compass/css3/_background_clip.sass | 16 - .../compass/css3/_background_origin.sass | 18 - .../compass/css3/_background_size.sass | 14 - .../compass/css3/_border_radius.sass | 47 - .../stylesheets/compass/css3/_box_shadow.sass | 20 - .../stylesheets/compass/css3/_box_sizing.sass | 13 - .../stylesheets/compass/css3/_columns.sass | 37 - .../stylesheets/compass/css3/_font_face.sass | 31 - .../stylesheets/compass/css3/_gradient.sass | 40 - .../compass/css3/_inline_block.sass | 7 - .../stylesheets/compass/css3/_opacity.sass | 18 - .../compass/css3/_text_shadow.sass | 15 - .../stylesheets/compass/css3/_transform.sass | 62 - .../stylesheets/compass/css3/_transition.sass | 57 - .../compass/layout/_sticky_footer.sass | 19 - .../compass/utilities/_general.sass | 5 - .../stylesheets/compass/utilities/_links.sass | 3 - .../stylesheets/compass/utilities/_lists.sass | 3 - .../stylesheets/compass/utilities/_print.sass | 18 - .../compass/utilities/_sprites.sass | 1 - .../compass/utilities/_tables.sass | 3 - .../stylesheets/compass/utilities/_text.sass | 2 - .../compass/utilities/general/_clearfix.sass | 24 - .../compass/utilities/general/_float.sass | 17 - .../compass/utilities/general/_hacks.sass | 15 - .../compass/utilities/general/_min.sass | 17 - .../compass/utilities/general/_reset.sass | 134 - .../compass/utilities/general/_tabs.sass | 0 .../compass/utilities/general/_tag_cloud.sass | 19 - .../compass/utilities/links/_hover_link.sass | 5 - .../compass/utilities/links/_link_colors.sass | 24 - .../utilities/links/_unstyled_link.sass | 7 - .../compass/utilities/lists/_bullets.sass | 21 - .../utilities/lists/_horizontal_list.sass | 52 - .../compass/utilities/lists/_inline_list.sass | 29 - .../utilities/sprites/_sprite_img.sass | 52 - .../tables/_alternating_rows_and_columns.sass | 20 - .../compass/utilities/tables/_borders.sass | 27 - .../utilities/tables/_scaffolding.sass | 9 - .../compass/utilities/text/_ellipsis.sass | 13 - .../compass/utilities/text/_nowrap.sass | 3 - .../compass/utilities/text/_replacement.sass | 22 - .../compass/templates/ellipsis/ellipsis.sass | 6 - .../compass/templates/ellipsis/manifest.rb | 27 - .../templates/ellipsis/xml/ellipsis.xml | 14 - .../compass/templates/extension/manifest.rb | 20 - .../templates/extension/stylesheets/main.sass | 1 - .../extension/templates/project/manifest.rb | 2 - .../extension/templates/project/screen.sass | 2 - .../compass/templates/project/USAGE.markdown | 32 - .../compass/templates/project/ie.sass | 6 - .../compass/templates/project/manifest.rb | 4 - .../compass/templates/project/print.sass | 6 - .../compass/templates/project/screen.sass | 13 - .../gems/compass-0.10.0.pre5/lib/compass.rb | 22 - .../lib/compass/actions.rb | 98 - .../lib/compass/app_integration.rb | 24 - .../lib/compass/app_integration/merb.rb | 1 - .../compass/app_integration/merb/runtime.rb | 63 - .../lib/compass/app_integration/rails.rb | 26 - .../rails/action_controller.rb | 15 - .../rails/configuration_defaults.rb | 49 - .../app_integration/rails/installer.rb | 128 - .../compass/app_integration/rails/runtime.rb | 14 - .../app_integration/rails/sass_plugin.rb | 5 - .../rails/templates/compass-install-rails.rb | 94 - .../lib/compass/app_integration/rails/urls.rb | 14 - .../compass/app_integration/stand_alone.rb | 22 - .../stand_alone/configuration_defaults.rb | 32 - .../app_integration/stand_alone/installer.rb | 83 - .../lib/compass/commands.rb | 11 - .../lib/compass/commands/base.rb | 36 - .../lib/compass/commands/create_project.rb | 122 - .../commands/generate_grid_background.rb | 87 - .../lib/compass/commands/help.rb | 89 - .../lib/compass/commands/installer_command.rb | 38 - .../lib/compass/commands/interactive.rb | 61 - .../lib/compass/commands/list_frameworks.rb | 16 - .../lib/compass/commands/print_version.rb | 91 - .../lib/compass/commands/project_base.rb | 92 - .../lib/compass/commands/project_stats.rb | 162 - .../lib/compass/commands/registry.rb | 22 - .../lib/compass/commands/stamp_pattern.rb | 86 - .../lib/compass/commands/update_project.rb | 103 - .../lib/compass/commands/validate_project.rb | 77 - .../lib/compass/commands/watch_project.rb | 109 - .../compass/commands/write_configuration.rb | 113 - .../lib/compass/compiler.rb | 137 - .../lib/compass/configuration.rb | 46 - .../lib/compass/configuration/adapters.rb | 63 - .../lib/compass/configuration/comments.rb | 22 - .../lib/compass/configuration/data.rb | 108 - .../lib/compass/configuration/defaults.rb | 148 - .../lib/compass/configuration/helpers.rb | 120 - .../lib/compass/configuration/inheritance.rb | 170 - .../lib/compass/configuration/paths.rb | 19 - .../compass/configuration/serialization.rb | 86 - .../lib/compass/core_ext.rb | 14 - .../lib/compass/dependencies.rb | 6 - .../compass-0.10.0.pre5/lib/compass/errors.rb | 10 - .../compass-0.10.0.pre5/lib/compass/exec.rb | 18 - .../lib/compass/exec/command_option_parser.rb | 23 - .../lib/compass/exec/global_options_parser.rb | 41 - .../lib/compass/exec/helpers.rb | 28 - .../compass/exec/project_options_parser.rb | 46 - .../lib/compass/exec/sub_command_ui.rb | 45 - .../lib/compass/exec/switch_ui.rb | 170 - .../lib/compass/frameworks.rb | 92 - .../lib/compass/grid_builder.rb | 102 - .../lib/compass/installers.rb | 3 - .../lib/compass/installers/bare_installer.rb | 58 - .../lib/compass/installers/base.rb | 147 - .../lib/compass/installers/manifest.rb | 111 - .../compass/installers/manifest_installer.rb | 59 - .../compass/installers/template_context.rb | 44 - .../compass-0.10.0.pre5/lib/compass/logger.rb | 87 - .../lib/compass/sass_extensions.rb | 5 - .../lib/compass/sass_extensions/functions.rb | 21 - .../sass_extensions/functions/color_stop.rb | 10 - .../sass_extensions/functions/display.rb | 22 - .../sass_extensions/functions/enumerate.rb | 6 - .../sass_extensions/functions/font_files.rb | 11 - .../sass_extensions/functions/inline_image.rb | 56 - .../sass_extensions/functions/selectors.rb | 42 - .../compass/sass_extensions/functions/urls.rb | 125 - .../compass/sass_extensions/monkey_patches.rb | 3 - .../monkey_patches/stylesheet_updating.rb | 40 - .../monkey_patches/traversal.rb | 23 - .../compass-0.10.0.pre5/lib/compass/stats.rb | 92 - .../lib/compass/test_case.rb | 38 - .../lib/compass/validator.rb | 9 - .../lib/compass/version.rb | 57 - .../lib/vendor/fssm/fssm.rb | 33 - .../lib/vendor/fssm/fssm/backends/fsevents.rb | 36 - .../lib/vendor/fssm/fssm/backends/inotify.rb | 23 - .../lib/vendor/fssm/fssm/backends/polling.rb | 25 - .../fssm/fssm/backends/rubycocoa/fsevents.rb | 131 - .../lib/vendor/fssm/fssm/monitor.rb | 26 - .../lib/vendor/fssm/fssm/path.rb | 91 - .../lib/vendor/fssm/fssm/pathname.rb | 528 --- .../lib/vendor/fssm/fssm/state/directory.rb | 57 - .../lib/vendor/fssm/fssm/state/file.rb | 24 - .../lib/vendor/fssm/fssm/support.rb | 60 - .../lib/vendor/fssm/fssm/tree.rb | 176 - .../test/command_line_helper.rb | 115 - .../test/command_line_test.rb | 67 - .../test/compass_png_test.rb | 46 - .../compass-0.10.0.pre5/test/compass_test.rb | 142 - .../test/configuration_test.rb | 148 - .../fixtures/stylesheets/blueprint/config.rb | 9 - .../stylesheets/blueprint/css/typography.css | 160 - .../stylesheets/blueprint/images/grid.png | Bin 199 -> 0 bytes .../stylesheets/blueprint/sass/ie.sass | 3 - .../stylesheets/blueprint/sass/print.sass | 3 - .../stylesheets/blueprint/sass/screen.sass | 17 - .../blueprint/sass/typography.sass | 3 - .../fixtures/stylesheets/compass/config.rb | 9 - .../stylesheets/compass/css/layout.css | 15 - .../stylesheets/compass/css/print.css | 12 - .../stylesheets/compass/css/reset.css | 60 - .../stylesheets/compass/css/utilities.css | 17 - .../stylesheets/compass/sass/layout.sass | 3 - .../stylesheets/compass/sass/print.sass | 5 - .../stylesheets/compass/sass/reset.sass | 10 - .../stylesheets/compass/sass/utilities.sass | 6 - .../fixtures/stylesheets/image_urls/config.rb | 17 - .../stylesheets/image_urls/css/screen.css | 5 - .../stylesheets/image_urls/images/grid.png | Bin 199 -> 0 bytes .../stylesheets/image_urls/sass/screen.sass | 6 - .../relative/assets/images/testing.png | 0 .../fixtures/stylesheets/relative/config.rb | 9 - .../fixtures/stylesheets/relative/css/ie.css | 1 - .../stylesheets/relative/css/print.css | 1 - .../stylesheets/relative/css/screen.css | 1 - .../stylesheets/relative/sass/ie.sass | 6 - .../stylesheets/relative/sass/print.sass | 6 - .../stylesheets/relative/sass/screen.sass | 3 - .../compass-0.10.0.pre5/test/io_helper.rb | 36 - .../compass-0.10.0.pre5/test/rails_helper.rb | 40 - .../test/rails_integration_test.rb | 50 - .../test/sass_extensions_test.rb | 31 - .../test/test_case_helper.rb | 13 - .../compass-0.10.0.pre5/test/test_helper.rb | 28 - .../test/test_rails_helper.rb | 20 - .../gems/compass-colors-0.3.1/README.markdown | 50 - .../1.8/gems/compass-colors-0.3.1/Rakefile | 26 - .../1.8/gems/compass-colors-0.3.1/VERSION.yml | 5 - .../compass-colors-0.3.1/example/config.rb | 13 - .../example/split_compliment_example.html | 38 - .../example/src/_split_compliment_theme.sass | 28 - .../example/src/screen.sass | 40 - .../lib/compass-colors.rb | 9 - .../lib/compass-colors/compass_extension.rb | 7 - .../lib/compass-colors/hsl.rb | 109 - .../lib/compass-colors/sass_extensions.rb | 112 - .../spec/approximate_color_matching.rb | 43 - .../spec/sass_extensions_spec.rb | 54 - .../templates/analogous/_theme.sass | 28 - .../templates/analogous/manifest.rb | 1 - .../templates/basic/_theme.sass | 7 - .../templates/basic/manifest.rb | 1 - .../templates/complementary/_theme.sass | 20 - .../templates/complementary/manifest.rb | 1 - .../templates/split_complement/_theme.sass | 28 - .../templates/split_complement/manifest.rb | 1 - .../templates/triadic/_theme.sass | 28 - .../templates/triadic/manifest.rb | 1 - .../gems/compass-slickmap-0.2.3/.gitignore | 3 - .../1.8/gems/compass-slickmap-0.2.3/Rakefile | 20 - .../1.8/gems/compass-slickmap-0.2.3/VERSION | 1 - .../compass-slickmap.gemspec | 53 - .../compass-slickmap-0.2.3/lib/slickmap.rb | 45 - .../lib/slickmap/compass_plugin.rb | 5 - .../sass/_slickmap.sass | 210 - .../templates/project/images/L1-center.png | Bin 300 -> 0 bytes .../templates/project/images/L1-left.png | Bin 305 -> 0 bytes .../templates/project/images/L1-right.png | Bin 295 -> 0 bytes .../templates/project/images/L3-bottom.png | Bin 353 -> 0 bytes .../templates/project/images/L3-center.png | Bin 326 -> 0 bytes .../templates/project/images/L3-li-top.png | Bin 3019 -> 0 bytes .../templates/project/images/L3-ul-top.png | Bin 201 -> 0 bytes .../project/images/vertical-line.png | Bin 152 -> 0 bytes .../project/images/white-highlight.png | Bin 189 -> 0 bytes .../templates/project/manifest.rb | 10 - .../templates/project/sitemap.sass | 7 - .../ruby/1.8/gems/diff-lcs-1.1.2/ChangeLog | 46 - .../gems/ruby/1.8/gems/diff-lcs-1.1.2/Install | 6 - .../gems/ruby/1.8/gems/diff-lcs-1.1.2/README | 76 - .../ruby/1.8/gems/diff-lcs-1.1.2/Rakefile | 116 - .../ruby/1.8/gems/diff-lcs-1.1.2/bin/htmldiff | 112 - .../ruby/1.8/gems/diff-lcs-1.1.2/bin/ldiff | 45 - .../1.8/gems/diff-lcs-1.1.2/lib/diff/lcs.rb | 1105 ----- .../gems/diff-lcs-1.1.2/lib/diff/lcs/array.rb | 21 - .../gems/diff-lcs-1.1.2/lib/diff/lcs/block.rb | 51 - .../diff-lcs-1.1.2/lib/diff/lcs/callbacks.rb | 322 -- .../diff-lcs-1.1.2/lib/diff/lcs/change.rb | 169 - .../gems/diff-lcs-1.1.2/lib/diff/lcs/hunk.rb | 257 - .../gems/diff-lcs-1.1.2/lib/diff/lcs/ldiff.rb | 226 - .../diff-lcs-1.1.2/lib/diff/lcs/string.rb | 19 - .../1.8/gems/diff-lcs-1.1.2/tests/00test.rb | 626 --- .../ruby/1.8/gems/extlib-0.9.14/.autotest | 21 - .../ruby/1.8/gems/extlib-0.9.14/.document | 5 - .../ruby/1.8/gems/extlib-0.9.14/.gitignore | 22 - .../gems/ruby/1.8/gems/extlib-0.9.14/LICENSE | 47 - .../ruby/1.8/gems/extlib-0.9.14/README.rdoc | 17 - .../gems/ruby/1.8/gems/extlib-0.9.14/Rakefile | 28 - .../gems/ruby/1.8/gems/extlib-0.9.14/VERSION | 1 - .../1.8/gems/extlib-0.9.14/extlib.gemspec | 146 - .../ruby/1.8/gems/extlib-0.9.14/lib/extlib.rb | 50 - .../gems/extlib-0.9.14/lib/extlib/array.rb | 36 - .../extlib-0.9.14/lib/extlib/assertions.rb | 8 - .../gems/extlib-0.9.14/lib/extlib/blank.rb | 89 - .../gems/extlib-0.9.14/lib/extlib/boolean.rb | 11 - .../extlib-0.9.14/lib/extlib/byte_array.rb | 6 - .../gems/extlib-0.9.14/lib/extlib/class.rb | 177 - .../gems/extlib-0.9.14/lib/extlib/datetime.rb | 29 - .../extlib-0.9.14/lib/extlib/dictionary.rb | 433 -- .../1.8/gems/extlib-0.9.14/lib/extlib/hash.rb | 442 -- .../1.8/gems/extlib-0.9.14/lib/extlib/hook.rb | 401 -- .../extlib-0.9.14/lib/extlib/inflection.rb | 440 -- .../extlib-0.9.14/lib/extlib/lazy_array.rb | 451 -- .../extlib-0.9.14/lib/extlib/lazy_module.rb | 18 - .../gems/extlib-0.9.14/lib/extlib/logger.rb | 198 - .../1.8/gems/extlib-0.9.14/lib/extlib/mash.rb | 155 - .../gems/extlib-0.9.14/lib/extlib/module.rb | 47 - .../1.8/gems/extlib-0.9.14/lib/extlib/nil.rb | 5 - .../gems/extlib-0.9.14/lib/extlib/numeric.rb | 5 - .../gems/extlib-0.9.14/lib/extlib/object.rb | 175 - .../extlib-0.9.14/lib/extlib/object_space.rb | 13 - .../gems/extlib-0.9.14/lib/extlib/pathname.rb | 20 - .../gems/extlib-0.9.14/lib/extlib/pooling.rb | 235 - .../gems/extlib-0.9.14/lib/extlib/rubygems.rb | 38 - .../extlib-0.9.14/lib/extlib/simple_set.rb | 66 - .../gems/extlib-0.9.14/lib/extlib/string.rb | 176 - .../gems/extlib-0.9.14/lib/extlib/struct.rb | 17 - .../gems/extlib-0.9.14/lib/extlib/symbol.rb | 21 - .../1.8/gems/extlib-0.9.14/lib/extlib/time.rb | 43 - .../extlib-0.9.14/lib/extlib/virtual_file.rb | 10 - .../1.8/gems/extlib-0.9.14/spec/array_spec.rb | 39 - .../1.8/gems/extlib-0.9.14/spec/blank_spec.rb | 85 - .../extlib-0.9.14/spec/byte_array_spec.rb | 7 - .../1.8/gems/extlib-0.9.14/spec/class_spec.rb | 157 - .../gems/extlib-0.9.14/spec/datetime_spec.rb | 22 - .../1.8/gems/extlib-0.9.14/spec/hash_spec.rb | 537 --- .../1.8/gems/extlib-0.9.14/spec/hook_spec.rb | 1234 ----- .../spec/inflection/plural_spec.rb | 564 --- .../spec/inflection/singular_spec.rb | 497 -- .../spec/inflection_extras_spec.rb | 110 - .../extlib-0.9.14/spec/lazy_array_spec.rb | 1957 -------- .../extlib-0.9.14/spec/lazy_module_spec.rb | 38 - .../1.8/gems/extlib-0.9.14/spec/mash_spec.rb | 311 -- .../gems/extlib-0.9.14/spec/module_spec.rb | 70 - .../extlib-0.9.14/spec/object_space_spec.rb | 9 - .../gems/extlib-0.9.14/spec/object_spec.rb | 114 - .../gems/extlib-0.9.14/spec/pooling_spec.rb | 511 -- .../1.8/gems/extlib-0.9.14/spec/rcov.opts | 6 - .../extlib-0.9.14/spec/simple_set_spec.rb | 57 - .../1.8/gems/extlib-0.9.14/spec/spec.opts | 4 - .../gems/extlib-0.9.14/spec/spec_helper.rb | 10 - .../gems/extlib-0.9.14/spec/string_spec.rb | 221 - .../gems/extlib-0.9.14/spec/struct_spec.rb | 12 - .../gems/extlib-0.9.14/spec/symbol_spec.rb | 8 - .../1.8/gems/extlib-0.9.14/spec/time_spec.rb | 29 - .../gems/extlib-0.9.14/spec/try_call_spec.rb | 73 - .../gems/extlib-0.9.14/spec/try_dup_spec.rb | 45 - .../extlib-0.9.14/spec/virtual_file_spec.rb | 21 - .../ruby/1.8/gems/extlib-0.9.14/tasks/ci.rake | 1 - .../1.8/gems/extlib-0.9.14/tasks/metrics.rake | 36 - .../1.8/gems/extlib-0.9.14/tasks/spec.rake | 25 - .../1.8/gems/extlib-0.9.14/tasks/yard.rake | 9 - .../gems/extlib-0.9.14/tasks/yardstick.rake | 19 - .../gems/fancy-buttons-0.3.9/README.markdown | 41 - .../1.8/gems/fancy-buttons-0.3.9/Rakefile | 22 - .../fancy-buttons-0.3.9/fancy-buttons.gemspec | 55 - .../fancy-buttons-0.3.9/lib/fancy-buttons.rb | 3 - .../lib/sass/_fancy_buttons.sass | 173 - .../lib/sass/_fancy_gradient.sass | 28 - .../lib/templates/project/button_bg.png | Bin 1295 -> 0 bytes .../lib/templates/project/buttons.sass | 57 - .../lib/templates/project/ie6.sass | 4 - .../lib/templates/project/index.html | 39 - .../lib/templates/project/manifest.rb | 4 - .../gems/ruby/1.8/gems/haml-2.2.17/.yardopts | 5 - .../ruby/1.8/gems/haml-2.2.17/CONTRIBUTING | 4 - .../ruby/1.8/gems/haml-2.2.17/MIT-LICENSE | 20 - .../gems/ruby/1.8/gems/haml-2.2.17/README.md | 357 -- .../gems/ruby/1.8/gems/haml-2.2.17/REVISION | 1 - .../gems/ruby/1.8/gems/haml-2.2.17/Rakefile | 392 -- .../gems/ruby/1.8/gems/haml-2.2.17/VERSION | 1 - .../ruby/1.8/gems/haml-2.2.17/VERSION_NAME | 1 - .../ruby/1.8/gems/haml-2.2.17/bin/css2sass | 7 - .../gems/ruby/1.8/gems/haml-2.2.17/bin/haml | 9 - .../ruby/1.8/gems/haml-2.2.17/bin/html2haml | 7 - .../gems/ruby/1.8/gems/haml-2.2.17/bin/sass | 8 - .../1.8/gems/haml-2.2.17/extra/haml-mode.el | 662 --- .../1.8/gems/haml-2.2.17/extra/sass-mode.el | 206 - .../gems/haml-2.2.17/extra/update_watch.rb | 13 - .../gems/ruby/1.8/gems/haml-2.2.17/init.rb | 16 - .../ruby/1.8/gems/haml-2.2.17/lib/haml.rb | 40 - .../1.8/gems/haml-2.2.17/lib/haml/buffer.rb | 302 -- .../1.8/gems/haml-2.2.17/lib/haml/engine.rb | 299 -- .../1.8/gems/haml-2.2.17/lib/haml/error.rb | 22 - .../1.8/gems/haml-2.2.17/lib/haml/exec.rb | 462 -- .../1.8/gems/haml-2.2.17/lib/haml/filters.rb | 341 -- .../1.8/gems/haml-2.2.17/lib/haml/helpers.rb | 563 --- .../haml/helpers/action_view_extensions.rb | 55 - .../lib/haml/helpers/action_view_mods.rb | 177 - .../haml-2.2.17/lib/haml/helpers/xss_mods.rb | 95 - .../1.8/gems/haml-2.2.17/lib/haml/html.rb | 260 - .../gems/haml-2.2.17/lib/haml/precompiler.rb | 1043 ---- .../1.8/gems/haml-2.2.17/lib/haml/shared.rb | 78 - .../1.8/gems/haml-2.2.17/lib/haml/template.rb | 85 - .../haml-2.2.17/lib/haml/template/patch.rb | 58 - .../haml-2.2.17/lib/haml/template/plugin.rb | 75 - .../1.8/gems/haml-2.2.17/lib/haml/util.rb | 289 -- .../1.8/gems/haml-2.2.17/lib/haml/version.rb | 64 - .../ruby/1.8/gems/haml-2.2.17/lib/sass.rb | 24 - .../ruby/1.8/gems/haml-2.2.17/lib/sass/css.rb | 404 -- .../1.8/gems/haml-2.2.17/lib/sass/engine.rb | 475 -- .../gems/haml-2.2.17/lib/sass/environment.rb | 79 - .../1.8/gems/haml-2.2.17/lib/sass/error.rb | 57 - .../1.8/gems/haml-2.2.17/lib/sass/files.rb | 147 - .../1.8/gems/haml-2.2.17/lib/sass/plugin.rb | 222 - .../gems/haml-2.2.17/lib/sass/plugin/merb.rb | 49 - .../gems/haml-2.2.17/lib/sass/plugin/rack.rb | 65 - .../gems/haml-2.2.17/lib/sass/plugin/rails.rb | 24 - .../1.8/gems/haml-2.2.17/lib/sass/repl.rb | 58 - .../1.8/gems/haml-2.2.17/lib/sass/script.rb | 59 - .../gems/haml-2.2.17/lib/sass/script/bool.rb | 17 - .../gems/haml-2.2.17/lib/sass/script/color.rb | 220 - .../haml-2.2.17/lib/sass/script/funcall.rb | 50 - .../haml-2.2.17/lib/sass/script/functions.rb | 257 - .../gems/haml-2.2.17/lib/sass/script/lexer.rb | 191 - .../haml-2.2.17/lib/sass/script/literal.rb | 177 - .../gems/haml-2.2.17/lib/sass/script/node.rb | 14 - .../haml-2.2.17/lib/sass/script/number.rb | 381 -- .../haml-2.2.17/lib/sass/script/operation.rb | 45 - .../haml-2.2.17/lib/sass/script/parser.rb | 222 - .../haml-2.2.17/lib/sass/script/string.rb | 12 - .../lib/sass/script/unary_operation.rb | 34 - .../haml-2.2.17/lib/sass/script/variable.rb | 31 - .../haml-2.2.17/lib/sass/tree/comment_node.rb | 84 - .../haml-2.2.17/lib/sass/tree/debug_node.rb | 30 - .../lib/sass/tree/directive_node.rb | 68 - .../haml-2.2.17/lib/sass/tree/for_node.rb | 48 - .../gems/haml-2.2.17/lib/sass/tree/if_node.rb | 54 - .../haml-2.2.17/lib/sass/tree/import_node.rb | 65 - .../lib/sass/tree/mixin_def_node.rb | 29 - .../haml-2.2.17/lib/sass/tree/mixin_node.rb | 48 - .../gems/haml-2.2.17/lib/sass/tree/node.rb | 251 - .../haml-2.2.17/lib/sass/tree/prop_node.rb | 121 - .../haml-2.2.17/lib/sass/tree/rule_node.rb | 223 - .../lib/sass/tree/variable_node.rb | 34 - .../haml-2.2.17/lib/sass/tree/while_node.rb | 31 - .../ruby/1.8/gems/haml-2.2.17/rails/init.rb | 1 - .../1.8/gems/haml-2.2.17/test/benchmark.rb | 99 - .../gems/haml-2.2.17/test/haml/engine_test.rb | 1251 ----- .../gems/haml-2.2.17/test/haml/helper_test.rb | 282 -- .../haml-2.2.17/test/haml/html2haml_test.rb | 152 - .../test/haml/markaby/standard.mab | 52 - .../haml-2.2.17/test/haml/mocks/article.rb | 6 - .../haml/results/content_for_layout.xhtml | 12 - .../test/haml/results/eval_suppressed.xhtml | 9 - .../test/haml/results/filters.xhtml | 62 - .../test/haml/results/helpers.xhtml | 93 - .../test/haml/results/helpful.xhtml | 10 - .../test/haml/results/just_stuff.xhtml | 68 - .../haml-2.2.17/test/haml/results/list.xhtml | 12 - .../haml/results/nuke_inner_whitespace.xhtml | 40 - .../haml/results/nuke_outer_whitespace.xhtml | 148 - .../test/haml/results/original_engine.xhtml | 20 - .../test/haml/results/partial_layout.xhtml | 5 - .../test/haml/results/partials.xhtml | 21 - .../test/haml/results/render_layout.xhtml | 3 - .../test/haml/results/silent_script.xhtml | 74 - .../test/haml/results/standard.xhtml | 162 - .../test/haml/results/tag_parsing.xhtml | 23 - .../test/haml/results/very_basic.xhtml | 5 - .../haml/results/whitespace_handling.xhtml | 89 - .../test/haml/rhtml/_av_partial_1.rhtml | 12 - .../test/haml/rhtml/_av_partial_2.rhtml | 8 - .../test/haml/rhtml/action_view.rhtml | 62 - .../test/haml/rhtml/standard.rhtml | 54 - .../gems/haml-2.2.17/test/haml/spec/README.md | 97 - .../test/haml/spec/lua_haml_spec.lua | 30 - .../test/haml/spec/ruby_haml_test.rb | 19 - .../haml-2.2.17/test/haml/spec/tests.json | 488 -- .../haml-2.2.17/test/haml/template_test.rb | 296 -- .../test/haml/templates/_av_partial_1.haml | 9 - .../haml/templates/_av_partial_1_ugly.haml | 9 - .../test/haml/templates/_av_partial_2.haml | 5 - .../haml/templates/_av_partial_2_ugly.haml | 5 - .../test/haml/templates/_layout.erb | 3 - .../haml/templates/_layout_for_partial.haml | 3 - .../test/haml/templates/_partial.haml | 8 - .../test/haml/templates/_text_area.haml | 3 - .../test/haml/templates/action_view.haml | 47 - .../test/haml/templates/action_view_ugly.haml | 47 - .../test/haml/templates/breakage.haml | 8 - .../haml/templates/content_for_layout.haml | 8 - .../test/haml/templates/eval_suppressed.haml | 11 - .../test/haml/templates/filters.haml | 66 - .../test/haml/templates/helpers.haml | 95 - .../test/haml/templates/helpful.haml | 11 - .../test/haml/templates/just_stuff.haml | 83 - .../haml-2.2.17/test/haml/templates/list.haml | 12 - .../haml/templates/nuke_inner_whitespace.haml | 32 - .../haml/templates/nuke_outer_whitespace.haml | 144 - .../test/haml/templates/original_engine.haml | 17 - .../test/haml/templates/partial_layout.haml | 3 - .../test/haml/templates/partialize.haml | 1 - .../test/haml/templates/partials.haml | 12 - .../test/haml/templates/render_layout.haml | 2 - .../test/haml/templates/silent_script.haml | 40 - .../test/haml/templates/standard.haml | 42 - .../test/haml/templates/standard_ugly.haml | 42 - .../test/haml/templates/tag_parsing.haml | 21 - .../test/haml/templates/very_basic.haml | 4 - .../haml/templates/whitespace_handling.haml | 87 - .../gems/haml-2.2.17/test/haml/util_test.rb | 107 - .../1.8/gems/haml-2.2.17/test/linked_rails.rb | 21 - .../haml-2.2.17/test/sass/css2sass_test.rb | 251 - .../gems/haml-2.2.17/test/sass/engine_test.rb | 939 ---- .../haml-2.2.17/test/sass/functions_test.rb | 173 - .../test/sass/more_results/more1.css | 9 - .../more_results/more1_with_line_comments.css | 26 - .../test/sass/more_results/more_import.css | 29 - .../sass/more_templates/_more_partial.sass | 2 - .../test/sass/more_templates/more1.sass | 23 - .../test/sass/more_templates/more_import.sass | 11 - .../gems/haml-2.2.17/test/sass/plugin_test.rb | 232 - .../haml-2.2.17/test/sass/results/alt.css | 4 - .../haml-2.2.17/test/sass/results/basic.css | 9 - .../haml-2.2.17/test/sass/results/compact.css | 5 - .../haml-2.2.17/test/sass/results/complex.css | 87 - .../test/sass/results/compressed.css | 1 - .../test/sass/results/expanded.css | 19 - .../haml-2.2.17/test/sass/results/import.css | 29 - .../test/sass/results/line_numbers.css | 49 - .../haml-2.2.17/test/sass/results/mixins.css | 95 - .../test/sass/results/multiline.css | 24 - .../haml-2.2.17/test/sass/results/nested.css | 22 - .../test/sass/results/parent_ref.css | 13 - .../haml-2.2.17/test/sass/results/script.css | 16 - .../subdir/nested_subdir/nested_subdir.css | 1 - .../test/sass/results/subdir/subdir.css | 3 - .../haml-2.2.17/test/sass/results/units.css | 11 - .../gems/haml-2.2.17/test/sass/script_test.rb | 267 -- .../test/sass/templates/_partial.sass | 2 - .../haml-2.2.17/test/sass/templates/alt.sass | 16 - .../test/sass/templates/basic.sass | 23 - .../haml-2.2.17/test/sass/templates/bork.sass | 2 - .../test/sass/templates/bork2.sass | 2 - .../test/sass/templates/compact.sass | 17 - .../test/sass/templates/complex.sass | 307 -- .../test/sass/templates/compressed.sass | 15 - .../test/sass/templates/expanded.sass | 17 - .../test/sass/templates/import.sass | 11 - .../test/sass/templates/importee.sass | 19 - .../test/sass/templates/line_numbers.sass | 13 - .../test/sass/templates/mixins.sass | 76 - .../test/sass/templates/multiline.sass | 20 - .../test/sass/templates/nested.sass | 25 - .../test/sass/templates/parent_ref.sass | 25 - .../test/sass/templates/script.sass | 101 - .../subdir/nested_subdir/_nested_partial.sass | 2 - .../subdir/nested_subdir/nested_subdir.sass | 3 - .../test/sass/templates/subdir/subdir.sass | 6 - .../test/sass/templates/units.sass | 11 - .../1.8/gems/haml-2.2.17/test/test_helper.rb | 35 - .../ruby/1.8/gems/highline-1.5.1/CHANGELOG | 222 - .../gems/ruby/1.8/gems/highline-1.5.1/INSTALL | 35 - .../gems/ruby/1.8/gems/highline-1.5.1/LICENSE | 7 - .../gems/ruby/1.8/gems/highline-1.5.1/README | 63 - .../ruby/1.8/gems/highline-1.5.1/Rakefile | 82 - .../gems/ruby/1.8/gems/highline-1.5.1/TODO | 6 - .../highline-1.5.1/examples/ansi_colors.rb | 38 - .../examples/asking_for_arrays.rb | 18 - .../highline-1.5.1/examples/basic_usage.rb | 75 - .../highline-1.5.1/examples/color_scheme.rb | 32 - .../1.8/gems/highline-1.5.1/examples/limit.rb | 12 - .../1.8/gems/highline-1.5.1/examples/menus.rb | 65 - .../gems/highline-1.5.1/examples/overwrite.rb | 19 - .../highline-1.5.1/examples/page_and_wrap.rb | 322 -- .../gems/highline-1.5.1/examples/password.rb | 7 - .../highline-1.5.1/examples/trapping_eof.rb | 22 - .../highline-1.5.1/examples/using_readline.rb | 17 - .../1.8/gems/highline-1.5.1/lib/highline.rb | 758 --- .../lib/highline/color_scheme.rb | 120 - .../lib/highline/compatibility.rb | 17 - .../highline-1.5.1/lib/highline/import.rb | 43 - .../gems/highline-1.5.1/lib/highline/menu.rb | 395 -- .../highline-1.5.1/lib/highline/question.rb | 463 -- .../lib/highline/system_extensions.rb | 193 - .../ruby/1.8/gems/highline-1.5.1/setup.rb | 1360 ------ .../highline-1.5.1/test/tc_color_scheme.rb | 56 - .../gems/highline-1.5.1/test/tc_highline.rb | 823 ---- .../1.8/gems/highline-1.5.1/test/tc_import.rb | 54 - .../1.8/gems/highline-1.5.1/test/tc_menu.rb | 429 -- .../1.8/gems/highline-1.5.1/test/ts_all.rb | 15 - .../httpclient-2.1.5.2/lib/http-access2.rb | 53 - .../lib/http-access2/cookie.rb | 1 - .../lib/http-access2/http.rb | 1 - .../gems/httpclient-2.1.5.2/lib/httpclient.rb | 1020 ---- .../httpclient-2.1.5.2/lib/httpclient/auth.rb | 522 -- .../lib/httpclient/cacert.p7s | 1579 ------- .../lib/httpclient/cacert_sha1.p7s | 1579 ------- .../lib/httpclient/connection.rb | 84 - .../lib/httpclient/cookie.rb | 562 --- .../httpclient-2.1.5.2/lib/httpclient/http.rb | 867 ---- .../lib/httpclient/session.rb | 863 ---- .../lib/httpclient/ssl_config.rb | 417 -- .../lib/httpclient/timeout.rb | 136 - .../httpclient-2.1.5.2/lib/httpclient/util.rb | 86 - .../ruby/1.8/gems/httpclient-2.1.5.2/lib/tags | 908 ---- .../ruby/1.8/gems/json-1.2.0/.require_paths | 4 - .../gems/ruby/1.8/gems/json-1.2.0/CHANGES | 136 - .../gems/ruby/1.8/gems/json-1.2.0/COPYING | 58 - .../vendor/gems/ruby/1.8/gems/json-1.2.0/GPL | 340 -- .../gems/ruby/1.8/gems/json-1.2.0/README | 360 -- .../gems/ruby/1.8/gems/json-1.2.0/Rakefile | 287 -- .../vendor/gems/ruby/1.8/gems/json-1.2.0/TODO | 1 - .../gems/ruby/1.8/gems/json-1.2.0/VERSION | 1 - .../GeneratorBenchmarkComparison.log | 52 - ...markExt#generator_fast-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkExt#generator_fast.dat | 1001 ---- ...rkExt#generator_pretty-autocorrelation.dat | 900 ---- ...GeneratorBenchmarkExt#generator_pretty.dat | 901 ---- ...markExt#generator_safe-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkExt#generator_safe.dat | 1001 ---- .../GeneratorBenchmarkExt.log | 261 - ...arkPure#generator_fast-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkPure#generator_fast.dat | 1001 ---- ...kPure#generator_pretty-autocorrelation.dat | 1000 ---- ...eneratorBenchmarkPure#generator_pretty.dat | 1001 ---- ...arkPure#generator_safe-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkPure#generator_safe.dat | 1001 ---- .../GeneratorBenchmarkPure.log | 262 -- ...nchmarkRails#generator-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkRails#generator.dat | 1001 ---- .../GeneratorBenchmarkRails.log | 82 - .../ParserBenchmarkComparison.log | 34 - ...serBenchmarkExt#parser-autocorrelation.dat | 900 ---- .../ParserBenchmarkExt#parser.dat | 901 ---- .../ParserBenchmarkExt.log | 81 - ...erBenchmarkPure#parser-autocorrelation.dat | 1000 ---- .../ParserBenchmarkPure#parser.dat | 1001 ---- .../ParserBenchmarkPure.log | 82 - ...rBenchmarkRails#parser-autocorrelation.dat | 1000 ---- .../ParserBenchmarkRails#parser.dat | 1001 ---- .../ParserBenchmarkRails.log | 82 - ...erBenchmarkYAML#parser-autocorrelation.dat | 1000 ---- .../ParserBenchmarkYAML#parser.dat | 1001 ---- .../ParserBenchmarkYAML.log | 82 - .../benchmarks/generator_benchmark.rb | 165 - .../json-1.2.0/benchmarks/parser_benchmark.rb | 197 - .../ruby/1.8/gems/json-1.2.0/bin/edit_json.rb | 9 - .../1.8/gems/json-1.2.0/bin/prettify_json.rb | 75 - .../1.8/gems/json-1.2.0/data/example.json | 1 - .../ruby/1.8/gems/json-1.2.0/data/index.html | 38 - .../1.8/gems/json-1.2.0/data/prototype.js | 4184 ----------------- .../json-1.2.0/ext/json/ext/generator.bundle | Bin 67176 -> 0 bytes .../ext/json/ext/generator/Makefile | 157 - .../ext/json/ext/generator/extconf.rb | 11 - .../ext/json/ext/generator/generator.bundle | Bin 67176 -> 0 bytes .../ext/json/ext/generator/generator.c | 935 ---- .../ext/json/ext/generator/generator.o | Bin 94316 -> 0 bytes .../ext/json/ext/generator/mkmf.log | 21 - .../ext/json/ext/generator/unicode.c | 180 - .../ext/json/ext/generator/unicode.h | 53 - .../ext/json/ext/generator/unicode.o | Bin 19844 -> 0 bytes .../json-1.2.0/ext/json/ext/parser.bundle | Bin 50760 -> 0 bytes .../json-1.2.0/ext/json/ext/parser/Makefile | 157 - .../json-1.2.0/ext/json/ext/parser/extconf.rb | 11 - .../json-1.2.0/ext/json/ext/parser/mkmf.log | 20 - .../ext/json/ext/parser/parser.bundle | Bin 50760 -> 0 bytes .../json-1.2.0/ext/json/ext/parser/parser.c | 1880 -------- .../json-1.2.0/ext/json/ext/parser/parser.o | Bin 75884 -> 0 bytes .../json-1.2.0/ext/json/ext/parser/parser.rl | 737 --- .../json-1.2.0/ext/json/ext/parser/unicode.c | 154 - .../json-1.2.0/ext/json/ext/parser/unicode.h | 58 - .../json-1.2.0/ext/json/ext/parser/unicode.o | Bin 18300 -> 0 bytes .../gems/ruby/1.8/gems/json-1.2.0/install.rb | 26 - .../gems/ruby/1.8/gems/json-1.2.0/lib/json.rb | 10 - .../1.8/gems/json-1.2.0/lib/json/Array.xpm | 21 - .../gems/json-1.2.0/lib/json/FalseClass.xpm | 21 - .../1.8/gems/json-1.2.0/lib/json/Hash.xpm | 21 - .../ruby/1.8/gems/json-1.2.0/lib/json/Key.xpm | 73 - .../1.8/gems/json-1.2.0/lib/json/NilClass.xpm | 21 - .../1.8/gems/json-1.2.0/lib/json/Numeric.xpm | 28 - .../1.8/gems/json-1.2.0/lib/json/String.xpm | 96 - .../gems/json-1.2.0/lib/json/TrueClass.xpm | 21 - .../1.8/gems/json-1.2.0/lib/json/add/core.rb | 135 - .../1.8/gems/json-1.2.0/lib/json/add/rails.rb | 58 - .../1.8/gems/json-1.2.0/lib/json/common.rb | 371 -- .../1.8/gems/json-1.2.0/lib/json/editor.rb | 1371 ------ .../ruby/1.8/gems/json-1.2.0/lib/json/ext.rb | 15 - .../1.8/gems/json-1.2.0/lib/json/json.xpm | 1499 ------ .../ruby/1.8/gems/json-1.2.0/lib/json/pure.rb | 77 - .../json-1.2.0/lib/json/pure/generator.rb | 443 -- .../gems/json-1.2.0/lib/json/pure/parser.rb | 303 -- .../1.8/gems/json-1.2.0/lib/json/version.rb | 8 - .../gems/json-1.2.0/tests/fixtures/fail1.json | 1 - .../json-1.2.0/tests/fixtures/fail10.json | 1 - .../json-1.2.0/tests/fixtures/fail11.json | 1 - .../json-1.2.0/tests/fixtures/fail12.json | 1 - .../json-1.2.0/tests/fixtures/fail13.json | 1 - .../json-1.2.0/tests/fixtures/fail14.json | 1 - .../json-1.2.0/tests/fixtures/fail18.json | 1 - .../json-1.2.0/tests/fixtures/fail19.json | 1 - .../gems/json-1.2.0/tests/fixtures/fail2.json | 1 - .../json-1.2.0/tests/fixtures/fail20.json | 1 - .../json-1.2.0/tests/fixtures/fail21.json | 1 - .../json-1.2.0/tests/fixtures/fail22.json | 1 - .../json-1.2.0/tests/fixtures/fail23.json | 1 - .../json-1.2.0/tests/fixtures/fail24.json | 1 - .../json-1.2.0/tests/fixtures/fail25.json | 1 - .../json-1.2.0/tests/fixtures/fail27.json | 2 - .../json-1.2.0/tests/fixtures/fail28.json | 2 - .../gems/json-1.2.0/tests/fixtures/fail3.json | 1 - .../gems/json-1.2.0/tests/fixtures/fail4.json | 1 - .../gems/json-1.2.0/tests/fixtures/fail5.json | 1 - .../gems/json-1.2.0/tests/fixtures/fail6.json | 1 - .../gems/json-1.2.0/tests/fixtures/fail7.json | 1 - .../gems/json-1.2.0/tests/fixtures/fail8.json | 1 - .../gems/json-1.2.0/tests/fixtures/fail9.json | 1 - .../gems/json-1.2.0/tests/fixtures/pass1.json | 56 - .../json-1.2.0/tests/fixtures/pass15.json | 1 - .../json-1.2.0/tests/fixtures/pass16.json | 1 - .../json-1.2.0/tests/fixtures/pass17.json | 1 - .../gems/json-1.2.0/tests/fixtures/pass2.json | 1 - .../json-1.2.0/tests/fixtures/pass26.json | 1 - .../gems/json-1.2.0/tests/fixtures/pass3.json | 6 - .../1.8/gems/json-1.2.0/tests/test_json.rb | 320 -- .../json-1.2.0/tests/test_json_addition.rb | 164 - .../json-1.2.0/tests/test_json_encoding.rb | 67 - .../json-1.2.0/tests/test_json_fixtures.rb | 34 - .../json-1.2.0/tests/test_json_generate.rb | 120 - .../gems/json-1.2.0/tests/test_json_rails.rb | 146 - .../json-1.2.0/tests/test_json_unicode.rb | 62 - .../ruby/1.8/gems/json-1.2.0/tools/fuzz.rb | 139 - .../ruby/1.8/gems/json-1.2.0/tools/server.rb | 61 - .../ruby/1.8/gems/json_pure-1.2.0/CHANGES | 136 - .../ruby/1.8/gems/json_pure-1.2.0/COPYING | 58 - .../gems/ruby/1.8/gems/json_pure-1.2.0/GPL | 340 -- .../gems/ruby/1.8/gems/json_pure-1.2.0/README | 360 -- .../ruby/1.8/gems/json_pure-1.2.0/Rakefile | 287 -- .../gems/ruby/1.8/gems/json_pure-1.2.0/TODO | 1 - .../ruby/1.8/gems/json_pure-1.2.0/VERSION | 1 - .../GeneratorBenchmarkComparison.log | 52 - ...markExt#generator_fast-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkExt#generator_fast.dat | 1001 ---- ...rkExt#generator_pretty-autocorrelation.dat | 900 ---- ...GeneratorBenchmarkExt#generator_pretty.dat | 901 ---- ...markExt#generator_safe-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkExt#generator_safe.dat | 1001 ---- .../GeneratorBenchmarkExt.log | 261 - ...arkPure#generator_fast-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkPure#generator_fast.dat | 1001 ---- ...kPure#generator_pretty-autocorrelation.dat | 1000 ---- ...eneratorBenchmarkPure#generator_pretty.dat | 1001 ---- ...arkPure#generator_safe-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkPure#generator_safe.dat | 1001 ---- .../GeneratorBenchmarkPure.log | 262 -- ...nchmarkRails#generator-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkRails#generator.dat | 1001 ---- .../GeneratorBenchmarkRails.log | 82 - .../ParserBenchmarkComparison.log | 34 - ...serBenchmarkExt#parser-autocorrelation.dat | 900 ---- .../ParserBenchmarkExt#parser.dat | 901 ---- .../ParserBenchmarkExt.log | 81 - ...erBenchmarkPure#parser-autocorrelation.dat | 1000 ---- .../ParserBenchmarkPure#parser.dat | 1001 ---- .../ParserBenchmarkPure.log | 82 - ...rBenchmarkRails#parser-autocorrelation.dat | 1000 ---- .../ParserBenchmarkRails#parser.dat | 1001 ---- .../ParserBenchmarkRails.log | 82 - ...erBenchmarkYAML#parser-autocorrelation.dat | 1000 ---- .../ParserBenchmarkYAML#parser.dat | 1001 ---- .../ParserBenchmarkYAML.log | 82 - .../benchmarks/generator_benchmark.rb | 165 - .../benchmarks/parser_benchmark.rb | 197 - .../1.8/gems/json_pure-1.2.0/bin/edit_json.rb | 9 - .../gems/json_pure-1.2.0/bin/prettify_json.rb | 75 - .../gems/json_pure-1.2.0/data/example.json | 1 - .../1.8/gems/json_pure-1.2.0/data/index.html | 38 - .../gems/json_pure-1.2.0/data/prototype.js | 4184 ----------------- .../ext/json/ext/generator/extconf.rb | 11 - .../ext/json/ext/generator/generator.c | 935 ---- .../ext/json/ext/generator/unicode.c | 180 - .../ext/json/ext/generator/unicode.h | 53 - .../ext/json/ext/parser/extconf.rb | 11 - .../ext/json/ext/parser/parser.c | 1880 -------- .../ext/json/ext/parser/parser.rl | 737 --- .../ext/json/ext/parser/unicode.c | 154 - .../ext/json/ext/parser/unicode.h | 58 - .../ruby/1.8/gems/json_pure-1.2.0/install.rb | 26 - .../ruby/1.8/gems/json_pure-1.2.0/lib/json.rb | 10 - .../gems/json_pure-1.2.0/lib/json/Array.xpm | 21 - .../json_pure-1.2.0/lib/json/FalseClass.xpm | 21 - .../gems/json_pure-1.2.0/lib/json/Hash.xpm | 21 - .../1.8/gems/json_pure-1.2.0/lib/json/Key.xpm | 73 - .../json_pure-1.2.0/lib/json/NilClass.xpm | 21 - .../gems/json_pure-1.2.0/lib/json/Numeric.xpm | 28 - .../gems/json_pure-1.2.0/lib/json/String.xpm | 96 - .../json_pure-1.2.0/lib/json/TrueClass.xpm | 21 - .../gems/json_pure-1.2.0/lib/json/add/core.rb | 135 - .../json_pure-1.2.0/lib/json/add/rails.rb | 58 - .../gems/json_pure-1.2.0/lib/json/common.rb | 371 -- .../gems/json_pure-1.2.0/lib/json/editor.rb | 1371 ------ .../1.8/gems/json_pure-1.2.0/lib/json/ext.rb | 15 - .../gems/json_pure-1.2.0/lib/json/json.xpm | 1499 ------ .../1.8/gems/json_pure-1.2.0/lib/json/pure.rb | 77 - .../lib/json/pure/generator.rb | 443 -- .../json_pure-1.2.0/lib/json/pure/parser.rb | 303 -- .../gems/json_pure-1.2.0/lib/json/version.rb | 8 - .../json_pure-1.2.0/tests/fixtures/fail1.json | 1 - .../tests/fixtures/fail10.json | 1 - .../tests/fixtures/fail11.json | 1 - .../tests/fixtures/fail12.json | 1 - .../tests/fixtures/fail13.json | 1 - .../tests/fixtures/fail14.json | 1 - .../tests/fixtures/fail18.json | 1 - .../tests/fixtures/fail19.json | 1 - .../json_pure-1.2.0/tests/fixtures/fail2.json | 1 - .../tests/fixtures/fail20.json | 1 - .../tests/fixtures/fail21.json | 1 - .../tests/fixtures/fail22.json | 1 - .../tests/fixtures/fail23.json | 1 - .../tests/fixtures/fail24.json | 1 - .../tests/fixtures/fail25.json | 1 - .../tests/fixtures/fail27.json | 2 - .../tests/fixtures/fail28.json | 2 - .../json_pure-1.2.0/tests/fixtures/fail3.json | 1 - .../json_pure-1.2.0/tests/fixtures/fail4.json | 1 - .../json_pure-1.2.0/tests/fixtures/fail5.json | 1 - .../json_pure-1.2.0/tests/fixtures/fail6.json | 1 - .../json_pure-1.2.0/tests/fixtures/fail7.json | 1 - .../json_pure-1.2.0/tests/fixtures/fail8.json | 1 - .../json_pure-1.2.0/tests/fixtures/fail9.json | 1 - .../json_pure-1.2.0/tests/fixtures/pass1.json | 56 - .../tests/fixtures/pass15.json | 1 - .../tests/fixtures/pass16.json | 1 - .../tests/fixtures/pass17.json | 1 - .../json_pure-1.2.0/tests/fixtures/pass2.json | 1 - .../tests/fixtures/pass26.json | 1 - .../json_pure-1.2.0/tests/fixtures/pass3.json | 6 - .../gems/json_pure-1.2.0/tests/test_json.rb | 320 -- .../tests/test_json_addition.rb | 164 - .../tests/test_json_encoding.rb | 67 - .../tests/test_json_fixtures.rb | 34 - .../tests/test_json_generate.rb | 120 - .../json_pure-1.2.0/tests/test_json_rails.rb | 146 - .../tests/test_json_unicode.rb | 62 - .../1.8/gems/json_pure-1.2.0/tools/fuzz.rb | 139 - .../1.8/gems/json_pure-1.2.0/tools/server.rb | 61 - .../gems/ruby/1.8/gems/rack-1.1.0/COPYING | 18 - .../ruby/1.8/gems/rack-1.1.0/KNOWN-ISSUES | 21 - .../vendor/gems/ruby/1.8/gems/rack-1.1.0/RDOX | 0 .../gems/ruby/1.8/gems/rack-1.1.0/README | 399 -- .../vendor/gems/ruby/1.8/gems/rack-1.1.0/SPEC | 171 - .../gems/ruby/1.8/gems/rack-1.1.0/bin/rackup | 4 - .../1.8/gems/rack-1.1.0/contrib/rack_logo.svg | 111 - .../1.8/gems/rack-1.1.0/example/lobster.ru | 4 - .../rack-1.1.0/example/protectedlobster.rb | 14 - .../rack-1.1.0/example/protectedlobster.ru | 8 - .../gems/ruby/1.8/gems/rack-1.1.0/lib/rack.rb | 92 - .../rack-1.1.0/lib/rack/adapter/camping.rb | 22 - .../lib/rack/auth/abstract/handler.rb | 37 - .../lib/rack/auth/abstract/request.rb | 37 - .../gems/rack-1.1.0/lib/rack/auth/basic.rb | 58 - .../rack-1.1.0/lib/rack/auth/digest/md5.rb | 124 - .../rack-1.1.0/lib/rack/auth/digest/nonce.rb | 51 - .../rack-1.1.0/lib/rack/auth/digest/params.rb | 55 - .../lib/rack/auth/digest/request.rb | 40 - .../1.8/gems/rack-1.1.0/lib/rack/builder.rb | 80 - .../1.8/gems/rack-1.1.0/lib/rack/cascade.rb | 41 - .../1.8/gems/rack-1.1.0/lib/rack/chunked.rb | 49 - .../gems/rack-1.1.0/lib/rack/commonlogger.rb | 49 - .../rack-1.1.0/lib/rack/conditionalget.rb | 47 - .../1.8/gems/rack-1.1.0/lib/rack/config.rb | 15 - .../rack-1.1.0/lib/rack/content_length.rb | 29 - .../gems/rack-1.1.0/lib/rack/content_type.rb | 23 - .../1.8/gems/rack-1.1.0/lib/rack/deflater.rb | 96 - .../1.8/gems/rack-1.1.0/lib/rack/directory.rb | 157 - .../ruby/1.8/gems/rack-1.1.0/lib/rack/etag.rb | 23 - .../ruby/1.8/gems/rack-1.1.0/lib/rack/file.rb | 90 - .../1.8/gems/rack-1.1.0/lib/rack/handler.rb | 88 - .../gems/rack-1.1.0/lib/rack/handler/cgi.rb | 61 - .../lib/rack/handler/evented_mongrel.rb | 8 - .../rack-1.1.0/lib/rack/handler/fastcgi.rb | 89 - .../gems/rack-1.1.0/lib/rack/handler/lsws.rb | 63 - .../rack-1.1.0/lib/rack/handler/mongrel.rb | 90 - .../gems/rack-1.1.0/lib/rack/handler/scgi.rb | 62 - .../lib/rack/handler/swiftiplied_mongrel.rb | 8 - .../gems/rack-1.1.0/lib/rack/handler/thin.rb | 18 - .../rack-1.1.0/lib/rack/handler/webrick.rb | 69 - .../ruby/1.8/gems/rack-1.1.0/lib/rack/head.rb | 19 - .../ruby/1.8/gems/rack-1.1.0/lib/rack/lint.rb | 575 --- .../1.8/gems/rack-1.1.0/lib/rack/lobster.rb | 65 - .../ruby/1.8/gems/rack-1.1.0/lib/rack/lock.rb | 16 - .../1.8/gems/rack-1.1.0/lib/rack/logger.rb | 20 - .../rack-1.1.0/lib/rack/methodoverride.rb | 27 - .../ruby/1.8/gems/rack-1.1.0/lib/rack/mime.rb | 206 - .../ruby/1.8/gems/rack-1.1.0/lib/rack/mock.rb | 189 - .../gems/rack-1.1.0/lib/rack/nulllogger.rb | 18 - .../1.8/gems/rack-1.1.0/lib/rack/recursive.rb | 57 - .../1.8/gems/rack-1.1.0/lib/rack/reloader.rb | 109 - .../1.8/gems/rack-1.1.0/lib/rack/request.rb | 271 -- .../1.8/gems/rack-1.1.0/lib/rack/response.rb | 149 - .../rack-1.1.0/lib/rack/rewindable_input.rb | 100 - .../1.8/gems/rack-1.1.0/lib/rack/runtime.rb | 27 - .../1.8/gems/rack-1.1.0/lib/rack/sendfile.rb | 142 - .../1.8/gems/rack-1.1.0/lib/rack/server.rb | 212 - .../lib/rack/session/abstract/id.rb | 140 - .../rack-1.1.0/lib/rack/session/cookie.rb | 90 - .../rack-1.1.0/lib/rack/session/memcache.rb | 119 - .../gems/rack-1.1.0/lib/rack/session/pool.rb | 100 - .../rack-1.1.0/lib/rack/showexceptions.rb | 349 -- .../gems/rack-1.1.0/lib/rack/showstatus.rb | 106 - .../1.8/gems/rack-1.1.0/lib/rack/static.rb | 38 - .../1.8/gems/rack-1.1.0/lib/rack/urlmap.rb | 56 - .../1.8/gems/rack-1.1.0/lib/rack/utils.rb | 620 --- .../ruby/1.8/gems/rack-1.1.0/rack.gemspec | 38 - .../rack-1.1.0/test/spec_rack_auth_basic.rb | 73 - .../rack-1.1.0/test/spec_rack_auth_digest.rb | 226 - .../gems/rack-1.1.0/test/spec_rack_builder.rb | 84 - .../gems/rack-1.1.0/test/spec_rack_camping.rb | 51 - .../gems/rack-1.1.0/test/spec_rack_cascade.rb | 48 - .../1.8/gems/rack-1.1.0/test/spec_rack_cgi.rb | 89 - .../gems/rack-1.1.0/test/spec_rack_chunked.rb | 62 - .../rack-1.1.0/test/spec_rack_commonlogger.rb | 61 - .../test/spec_rack_conditionalget.rb | 41 - .../gems/rack-1.1.0/test/spec_rack_config.rb | 24 - .../test/spec_rack_content_length.rb | 43 - .../rack-1.1.0/test/spec_rack_content_type.rb | 30 - .../rack-1.1.0/test/spec_rack_deflater.rb | 127 - .../rack-1.1.0/test/spec_rack_directory.rb | 61 - .../gems/rack-1.1.0/test/spec_rack_etag.rb | 17 - .../gems/rack-1.1.0/test/spec_rack_fastcgi.rb | 89 - .../gems/rack-1.1.0/test/spec_rack_file.rb | 75 - .../gems/rack-1.1.0/test/spec_rack_handler.rb | 43 - .../gems/rack-1.1.0/test/spec_rack_head.rb | 30 - .../gems/rack-1.1.0/test/spec_rack_lint.rb | 528 --- .../gems/rack-1.1.0/test/spec_rack_lobster.rb | 45 - .../gems/rack-1.1.0/test/spec_rack_lock.rb | 38 - .../gems/rack-1.1.0/test/spec_rack_logger.rb | 21 - .../test/spec_rack_methodoverride.rb | 60 - .../gems/rack-1.1.0/test/spec_rack_mock.rb | 243 - .../gems/rack-1.1.0/test/spec_rack_mongrel.rb | 189 - .../rack-1.1.0/test/spec_rack_nulllogger.rb | 13 - .../rack-1.1.0/test/spec_rack_recursive.rb | 77 - .../gems/rack-1.1.0/test/spec_rack_request.rb | 545 --- .../rack-1.1.0/test/spec_rack_response.rb | 221 - .../test/spec_rack_rewindable_input.rb | 118 - .../gems/rack-1.1.0/test/spec_rack_runtime.rb | 35 - .../rack-1.1.0/test/spec_rack_sendfile.rb | 86 - .../test/spec_rack_session_cookie.rb | 73 - .../test/spec_rack_session_memcache.rb | 273 -- .../rack-1.1.0/test/spec_rack_session_pool.rb | 172 - .../test/spec_rack_showexceptions.rb | 21 - .../rack-1.1.0/test/spec_rack_showstatus.rb | 72 - .../gems/rack-1.1.0/test/spec_rack_static.rb | 37 - .../gems/rack-1.1.0/test/spec_rack_thin.rb | 91 - .../gems/rack-1.1.0/test/spec_rack_urlmap.rb | 215 - .../gems/rack-1.1.0/test/spec_rack_utils.rb | 552 --- .../gems/rack-1.1.0/test/spec_rack_webrick.rb | 130 - .../1.8/gems/rack-1.1.0/test/spec_rackup.rb | 154 - .../ruby/1.8/gems/rack-test-0.5.3/.document | 4 - .../ruby/1.8/gems/rack-test-0.5.3/.gitignore | 4 - .../ruby/1.8/gems/rack-test-0.5.3/History.txt | 107 - .../1.8/gems/rack-test-0.5.3/MIT-LICENSE.txt | 19 - .../ruby/1.8/gems/rack-test-0.5.3/README.rdoc | 57 - .../ruby/1.8/gems/rack-test-0.5.3/Rakefile | 39 - .../ruby/1.8/gems/rack-test-0.5.3/Thorfile | 114 - .../rack-test-0.5.3/lib/rack/mock_session.rb | 61 - .../1.8/gems/rack-test-0.5.3/lib/rack/test.rb | 276 -- .../lib/rack/test/cookie_jar.rb | 172 - .../rack-test-0.5.3/lib/rack/test/methods.rb | 80 - .../lib/rack/test/mock_digest_request.rb | 29 - .../lib/rack/test/uploaded_file.rb | 46 - .../rack-test-0.5.3/lib/rack/test/utils.rb | 101 - .../gems/rack-test-0.5.3/rack-test.gemspec | 73 - .../rack-test-0.5.3/spec/fixtures/config.ru | 3 - .../rack-test-0.5.3/spec/fixtures/fake_app.rb | 123 - .../rack-test-0.5.3/spec/fixtures/foo.txt | 1 - .../spec/rack/test/cookie_spec.rb | 199 - .../spec/rack/test/digest_auth_spec.rb | 48 - .../spec/rack/test/multipart_spec.rb | 87 - .../spec/rack/test/utils_spec.rb | 97 - .../rack-test-0.5.3/spec/rack/test_spec.rb | 443 -- .../1.8/gems/rack-test-0.5.3/spec/spec.opts | 2 - .../gems/rack-test-0.5.3/spec/spec_helper.rb | 52 - .../gems/ruby/1.8/gems/rake-0.8.7/CHANGES | 440 -- .../gems/ruby/1.8/gems/rake-0.8.7/MIT-LICENSE | 21 - .../gems/ruby/1.8/gems/rake-0.8.7/README | 196 - .../gems/ruby/1.8/gems/rake-0.8.7/Rakefile | 430 -- .../vendor/gems/ruby/1.8/gems/rake-0.8.7/TODO | 20 - .../gems/ruby/1.8/gems/rake-0.8.7/bin/rake | 31 - .../rake-0.8.7/doc/command_line_usage.rdoc | 102 - .../1.8/gems/rake-0.8.7/doc/example/Rakefile1 | 38 - .../1.8/gems/rake-0.8.7/doc/example/Rakefile2 | 35 - .../ruby/1.8/gems/rake-0.8.7/doc/example/a.c | 6 - .../ruby/1.8/gems/rake-0.8.7/doc/example/b.c | 6 - .../1.8/gems/rake-0.8.7/doc/example/main.c | 11 - .../1.8/gems/rake-0.8.7/doc/glossary.rdoc | 51 - .../ruby/1.8/gems/rake-0.8.7/doc/jamis.rb | 591 --- .../1.8/gems/rake-0.8.7/doc/proto_rake.rdoc | 127 - .../ruby/1.8/gems/rake-0.8.7/doc/rake.1.gz | Bin 1369 -> 0 bytes .../1.8/gems/rake-0.8.7/doc/rakefile.rdoc | 534 --- .../1.8/gems/rake-0.8.7/doc/rational.rdoc | 151 - .../doc/release_notes/rake-0.4.14.rdoc | 23 - .../doc/release_notes/rake-0.4.15.rdoc | 35 - .../doc/release_notes/rake-0.5.0.rdoc | 53 - .../doc/release_notes/rake-0.5.3.rdoc | 78 - .../doc/release_notes/rake-0.5.4.rdoc | 46 - .../doc/release_notes/rake-0.6.0.rdoc | 141 - .../doc/release_notes/rake-0.7.0.rdoc | 119 - .../doc/release_notes/rake-0.7.1.rdoc | 59 - .../doc/release_notes/rake-0.7.2.rdoc | 121 - .../doc/release_notes/rake-0.7.3.rdoc | 47 - .../doc/release_notes/rake-0.8.0.rdoc | 114 - .../doc/release_notes/rake-0.8.2.rdoc | 165 - .../doc/release_notes/rake-0.8.3.rdoc | 112 - .../doc/release_notes/rake-0.8.4.rdoc | 147 - .../doc/release_notes/rake-0.8.5.rdoc | 53 - .../doc/release_notes/rake-0.8.6.rdoc | 55 - .../doc/release_notes/rake-0.8.7.rdoc | 55 - .../gems/ruby/1.8/gems/rake-0.8.7/install.rb | 88 - .../gems/ruby/1.8/gems/rake-0.8.7/lib/rake.rb | 2506 ---------- .../gems/rake-0.8.7/lib/rake/alt_system.rb | 108 - .../rake-0.8.7/lib/rake/classic_namespace.rb | 8 - .../1.8/gems/rake-0.8.7/lib/rake/clean.rb | 33 - .../lib/rake/contrib/compositepublisher.rb | 24 - .../rake-0.8.7/lib/rake/contrib/ftptools.rb | 153 - .../rake-0.8.7/lib/rake/contrib/publisher.rb | 75 - .../lib/rake/contrib/rubyforgepublisher.rb | 18 - .../lib/rake/contrib/sshpublisher.rb | 47 - .../gems/rake-0.8.7/lib/rake/contrib/sys.rb | 209 - .../rake-0.8.7/lib/rake/gempackagetask.rb | 97 - .../rake-0.8.7/lib/rake/loaders/makefile.rb | 42 - .../gems/rake-0.8.7/lib/rake/packagetask.rb | 184 - .../rake-0.8.7/lib/rake/rake_test_loader.rb | 5 - .../1.8/gems/rake-0.8.7/lib/rake/rdoctask.rb | 209 - .../lib/rake/ruby182_test_unit_fix.rb | 23 - .../1.8/gems/rake-0.8.7/lib/rake/runtest.rb | 23 - .../1.8/gems/rake-0.8.7/lib/rake/tasklib.rb | 23 - .../1.8/gems/rake-0.8.7/lib/rake/testtask.rb | 161 - .../1.8/gems/rake-0.8.7/lib/rake/win32.rb | 55 - .../gems/rake-0.8.7/test/capture_stdout.rb | 26 - .../gems/rake-0.8.7/test/check_expansion.rb | 5 - .../rake-0.8.7/test/check_no_expansion.rb | 5 - .../gems/rake-0.8.7/test/contrib/test_sys.rb | 47 - .../gems/rake-0.8.7/test/data/chains/Rakefile | 15 - .../rake-0.8.7/test/data/default/Rakefile | 19 - .../gems/rake-0.8.7/test/data/dryrun/Rakefile | 22 - .../test/data/file_creation_task/Rakefile | 33 - .../rake-0.8.7/test/data/imports/Rakefile | 19 - .../gems/rake-0.8.7/test/data/imports/deps.mf | 1 - .../rake-0.8.7/test/data/multidesc/Rakefile | 17 - .../rake-0.8.7/test/data/namespace/Rakefile | 57 - .../rake-0.8.7/test/data/rakelib/test1.rb | 3 - .../rake-0.8.7/test/data/rbext/rakefile.rb | 3 - .../1.8/gems/rake-0.8.7/test/data/sample.mf | 14 - .../test/data/statusreturn/Rakefile | 8 - .../rake-0.8.7/test/data/unittest/Rakefile | 1 - .../1.8/gems/rake-0.8.7/test/filecreation.rb | 32 - .../1.8/gems/rake-0.8.7/test/functional.rb | 15 - .../gems/rake-0.8.7/test/in_environment.rb | 30 - .../gems/rake-0.8.7/test/rake_test_setup.rb | 24 - .../ruby/1.8/gems/rake-0.8.7/test/reqfile.rb | 3 - .../ruby/1.8/gems/rake-0.8.7/test/reqfile2.rb | 3 - .../rake-0.8.7/test/session_functional.rb | 339 -- .../1.8/gems/rake-0.8.7/test/shellcommand.rb | 3 - .../gems/rake-0.8.7/test/test_application.rb | 675 --- .../1.8/gems/rake-0.8.7/test/test_clean.rb | 14 - .../gems/rake-0.8.7/test/test_definitions.rb | 85 - .../gems/rake-0.8.7/test/test_earlytime.rb | 35 - .../gems/rake-0.8.7/test/test_extension.rb | 63 - .../test/test_file_creation_task.rb | 62 - .../gems/rake-0.8.7/test/test_file_task.rb | 143 - .../1.8/gems/rake-0.8.7/test/test_filelist.rb | 623 --- .../gems/rake-0.8.7/test/test_fileutils.rb | 251 - .../ruby/1.8/gems/rake-0.8.7/test/test_ftp.rb | 59 - .../rake-0.8.7/test/test_invocation_chain.rb | 81 - .../rake-0.8.7/test/test_makefile_loader.rb | 26 - .../gems/rake-0.8.7/test/test_multitask.rb | 45 - .../gems/rake-0.8.7/test/test_namespace.rb | 55 - .../gems/rake-0.8.7/test/test_package_task.rb | 118 - .../1.8/gems/rake-0.8.7/test/test_pathmap.rb | 210 - .../rake-0.8.7/test/test_pseudo_status.rb | 26 - .../1.8/gems/rake-0.8.7/test/test_rake.rb | 41 - .../gems/rake-0.8.7/test/test_rdoc_task.rb | 88 - .../1.8/gems/rake-0.8.7/test/test_require.rb | 35 - .../1.8/gems/rake-0.8.7/test/test_rules.rb | 349 -- .../rake-0.8.7/test/test_task_arguments.rb | 89 - .../gems/rake-0.8.7/test/test_task_manager.rb | 173 - .../1.8/gems/rake-0.8.7/test/test_tasklib.rb | 12 - .../1.8/gems/rake-0.8.7/test/test_tasks.rb | 374 -- .../gems/rake-0.8.7/test/test_test_task.rb | 77 - .../test/test_top_level_functions.rb | 86 - .../1.8/gems/rake-0.8.7/test/test_win32.rb | 72 - .../gems/ruby/1.8/gems/shotgun-0.6/COPYING | 18 - .../gems/ruby/1.8/gems/shotgun-0.6/README | 46 - .../gems/ruby/1.8/gems/shotgun-0.6/Rakefile | 43 - .../ruby/1.8/gems/shotgun-0.6/bin/shotgun | 154 - .../ruby/1.8/gems/shotgun-0.6/lib/shotgun.rb | 98 - .../ruby/1.8/gems/shotgun-0.6/shotgun.gemspec | 34 - .../1.8/gems/shotgun-0.6/test/shotgun_test.rb | 22 - .../ruby/1.8/gems/shotgun-0.6/test/test.ru | 7 - .../gems/ruby/1.8/gems/sinatra-1.0.a/AUTHORS | 43 - .../gems/ruby/1.8/gems/sinatra-1.0.a/CHANGES | 470 -- .../gems/ruby/1.8/gems/sinatra-1.0.a/LICENSE | 22 - .../1.8/gems/sinatra-1.0.a/README.jp.rdoc | 552 --- .../ruby/1.8/gems/sinatra-1.0.a/README.rdoc | 622 --- .../gems/ruby/1.8/gems/sinatra-1.0.a/Rakefile | 113 - .../1.8/gems/sinatra-1.0.a/lib/sinatra.rb | 7 - .../gems/sinatra-1.0.a/lib/sinatra/base.rb | 1151 ----- .../sinatra-1.0.a/lib/sinatra/images/404.png | Bin 23305 -> 0 bytes .../sinatra-1.0.a/lib/sinatra/images/500.png | Bin 31056 -> 0 bytes .../gems/sinatra-1.0.a/lib/sinatra/main.rb | 28 - .../lib/sinatra/showexceptions.rb | 307 -- .../gems/sinatra-1.0.a/lib/sinatra/tilt.rb | 509 -- .../1.8/gems/sinatra-1.0.a/sinatra.gemspec | 91 - .../1.8/gems/sinatra-1.0.a/test/base_test.rb | 160 - .../gems/sinatra-1.0.a/test/builder_test.rb | 65 - .../1.8/gems/sinatra-1.0.a/test/contest.rb | 64 - .../1.8/gems/sinatra-1.0.a/test/erb_test.rb | 81 - .../gems/sinatra-1.0.a/test/erubis_test.rb | 82 - .../sinatra-1.0.a/test/extensions_test.rb | 100 - .../gems/sinatra-1.0.a/test/filter_test.rb | 221 - .../1.8/gems/sinatra-1.0.a/test/haml_test.rb | 90 - .../1.8/gems/sinatra-1.0.a/test/helper.rb | 76 - .../gems/sinatra-1.0.a/test/helpers_test.rb | 573 --- .../sinatra-1.0.a/test/mapped_error_test.rb | 186 - .../sinatra-1.0.a/test/middleware_test.rb | 68 - .../sinatra-1.0.a/test/public/favicon.ico | 0 .../gems/sinatra-1.0.a/test/request_test.rb | 33 - .../gems/sinatra-1.0.a/test/response_test.rb | 42 - .../gems/sinatra-1.0.a/test/result_test.rb | 98 - .../test/route_added_hook_test.rb | 59 - .../gems/sinatra-1.0.a/test/routing_test.rb | 860 ---- .../1.8/gems/sinatra-1.0.a/test/sass_test.rb | 79 - .../gems/sinatra-1.0.a/test/server_test.rb | 47 - .../gems/sinatra-1.0.a/test/settings_test.rb | 383 -- .../gems/sinatra-1.0.a/test/sinatra_test.rb | 13 - .../gems/sinatra-1.0.a/test/static_test.rb | 93 - .../gems/sinatra-1.0.a/test/templates_test.rb | 155 - .../sinatra-1.0.a/test/views/error.builder | 3 - .../gems/sinatra-1.0.a/test/views/error.erb | 3 - .../sinatra-1.0.a/test/views/error.erubis | 3 - .../gems/sinatra-1.0.a/test/views/error.haml | 3 - .../gems/sinatra-1.0.a/test/views/error.sass | 2 - .../sinatra-1.0.a/test/views/foo/hello.test | 1 - .../sinatra-1.0.a/test/views/hello.builder | 1 - .../gems/sinatra-1.0.a/test/views/hello.erb | 1 - .../sinatra-1.0.a/test/views/hello.erubis | 1 - .../gems/sinatra-1.0.a/test/views/hello.haml | 1 - .../gems/sinatra-1.0.a/test/views/hello.sass | 2 - .../gems/sinatra-1.0.a/test/views/hello.test | 1 - .../sinatra-1.0.a/test/views/layout2.builder | 3 - .../gems/sinatra-1.0.a/test/views/layout2.erb | 2 - .../sinatra-1.0.a/test/views/layout2.erubis | 2 - .../sinatra-1.0.a/test/views/layout2.haml | 2 - .../sinatra-1.0.a/test/views/layout2.test | 1 - .../gems/sinatra-content-for-0.2/.gitignore | 3 - .../1.8/gems/sinatra-content-for-0.2/LICENSE | 22 - .../gems/sinatra-content-for-0.2/README.rdoc | 41 - .../lib/sinatra/content_for.rb | 58 - .../sinatra-content-for.gemspec | 34 - .../test/content_for_test.rb | 156 - .../ruby/1.8/gems/smusher-0.4.2/.gitignore | 2 - .../1.8/gems/smusher-0.4.2/README.markdown | 59 - .../gems/ruby/1.8/gems/smusher-0.4.2/Rakefile | 20 - .../gems/ruby/1.8/gems/smusher-0.4.2/VERSION | 1 - .../ruby/1.8/gems/smusher-0.4.2/bin/smusher | 35 - .../1.8/gems/smusher-0.4.2/lib/smusher.rb | 97 - .../smusher-0.4.2/lib/smusher/puny_png.rb | 17 - .../smusher-0.4.2/lib/smusher/smush_it.rb | 22 - .../1.8/gems/smusher-0.4.2/smusher.gemspec | 78 - .../gems/smusher-0.4.2/spec/empty/.gitignore | 0 .../1.8/gems/smusher-0.4.2/spec/images/ad.gif | Bin 371 -> 0 bytes .../gems/smusher-0.4.2/spec/images/add.png | Bin 733 -> 0 bytes .../smusher-0.4.2/spec/images/drink_empty.png | Bin 433 -> 0 bytes .../gems/smusher-0.4.2/spec/images/logo.gif | Bin 945 -> 0 bytes .../gems/smusher-0.4.2/spec/images/people.jpg | Bin 2458 -> 0 bytes .../gems/smusher-0.4.2/spec/images/water.JPG | Bin 4719 -> 0 bytes .../gems/smusher-0.4.2/spec/images/woman.jpeg | Bin 2572 -> 0 bytes .../1.8/gems/smusher-0.4.2/spec/out/ad.gif | Bin 371 -> 0 bytes .../gems/smusher-0.4.2/spec/out/people.jpg | Bin 2458 -> 0 bytes .../gems/smusher-0.4.2/spec/reduced/add.png | Bin 680 -> 0 bytes .../smusher-0.4.2/spec/reduced/add_puny.png | Bin 733 -> 0 bytes .../gems/smusher-0.4.2/spec/reduced/fam.png | Bin 381 -> 0 bytes .../spec/smusher/puny_png_spec.rb | 12 - .../spec/smusher/smush_it_spec.rb | 12 - .../gems/smusher-0.4.2/spec/smusher_spec.rb | 181 - .../gems/smusher-0.4.2/spec/spec_helper.rb | 8 - .../ruby/1.8/gems/sprockets-1.0.2/Rakefile | 19 - .../1.8/gems/sprockets-1.0.2/bin/sprocketize | 54 - .../sprockets-1.0.2/ext/nph-sprockets.cgi | 127 - .../1.8/gems/sprockets-1.0.2/lib/sprockets.rb | 42 - .../lib/sprockets/concatenation.rb | 36 - .../lib/sprockets/environment.rb | 52 - .../sprockets-1.0.2/lib/sprockets/error.rb | 5 - .../sprockets-1.0.2/lib/sprockets/pathname.rb | 37 - .../lib/sprockets/preprocessor.rb | 91 - .../lib/sprockets/secretary.rb | 106 - .../lib/sprockets/source_file.rb | 54 - .../lib/sprockets/source_line.rb | 82 - .../sprockets-1.0.2/lib/sprockets/version.rb | 9 - .../assets/images/script_with_assets/one.png | 1 - .../assets/images/script_with_assets/two.png | 1 - .../assets/stylesheets/script_with_assets.css | 1 - .../test/fixtures/constants.yml | 1 - ...be_ignored_when_strip_comments_is_false.js | 8 - ...t_requires_should_be_removed_by_default.js | 2 - ...e_comments_should_be_removed_by_default.js | 4 - ...already_been_required_should_do_nothing.js | 5 - ...at_does_not_exist_should_raise_an_error.js | 1 - ..._require_comment_with_the_file_contents.js | 3 - ...ring_the_current_file_should_do_nothing.js | 1 - .../test/fixtures/src/constants.yml | 3 - .../sprockets-1.0.2/test/fixtures/src/foo.js | 1 - .../test/fixtures/src/foo/bar.js | 4 - .../test/fixtures/src/foo/foo.js | 1 - .../test/fixtures/src/script_with_assets.js | 3 - .../test/test_concatenation.rb | 28 - .../sprockets-1.0.2/test/test_environment.rb | 64 - .../gems/sprockets-1.0.2/test/test_helper.rb | 55 - .../sprockets-1.0.2/test/test_pathname.rb | 43 - .../sprockets-1.0.2/test/test_preprocessor.rb | 107 - .../sprockets-1.0.2/test/test_secretary.rb | 83 - .../sprockets-1.0.2/test/test_source_file.rb | 34 - .../sprockets-1.0.2/test/test_source_line.rb | 89 - .../ruby/1.8/gems/templater-1.0.0/History.txt | 3 - .../1.8/gems/templater-1.0.0/Manifest.txt | 64 - .../ruby/1.8/gems/templater-1.0.0/README.rdoc | 266 -- .../ruby/1.8/gems/templater-1.0.0/Rakefile | 23 - .../1.8/gems/templater-1.0.0/lib/templater.rb | 49 - .../lib/templater/actions/action.rb | 43 - .../lib/templater/actions/directory.rb | 22 - .../lib/templater/actions/empty_directory.rb | 57 - .../lib/templater/actions/file.rb | 60 - .../lib/templater/actions/template.rb | 61 - .../lib/templater/capture_helpers.rb | 62 - .../lib/templater/cli/generator.rb | 175 - .../lib/templater/cli/manifold.rb | 59 - .../lib/templater/cli/parser.rb | 85 - .../lib/templater/core_ext/kernel.rb | 14 - .../lib/templater/core_ext/string.rb | 17 - .../lib/templater/description.rb | 78 - .../lib/templater/discovery.rb | 86 - .../lib/templater/generator.rb | 644 --- .../templater-1.0.0/lib/templater/manifold.rb | 98 - .../lib/templater/spec/helpers.rb | 67 - .../1.8/gems/templater-1.0.0/script/console | 10 - .../1.8/gems/templater-1.0.0/script/destroy | 14 - .../1.8/gems/templater-1.0.0/script/generate | 14 - .../spec/actions/directory_spec.rb | 21 - .../spec/actions/empty_directory_spec.rb | 108 - .../templater-1.0.0/spec/actions/file_spec.rb | 112 - .../spec/actions/template_spec.rb | 141 - .../spec/core_ext/string_spec.rb | 39 - .../spec/generator/actions_spec.rb | 111 - .../spec/generator/arguments_spec.rb | 225 - .../spec/generator/desc_spec.rb | 10 - .../spec/generator/destination_root_spec.rb | 9 - .../spec/generator/empty_directories_spec.rb | 148 - .../spec/generator/files_spec.rb | 199 - .../spec/generator/generators_spec.rb | 63 - .../spec/generator/glob_spec.rb | 94 - .../spec/generator/invocations_spec.rb | 173 - .../spec/generator/invoke_spec.rb | 21 - .../spec/generator/options_spec.rb | 46 - .../spec/generator/render_spec.rb | 21 - .../spec/generator/source_root_spec.rb | 18 - .../spec/generator/templates_spec.rb | 209 - .../templater-1.0.0/spec/manifold_spec.rb | 146 - .../spec/options_parser_spec.rb | 20 - .../gems/templater-1.0.0/spec/results/erb.rbs | 1 - .../templater-1.0.0/spec/results/file.rbs | 1 - .../templater-1.0.0/spec/results/random.rbs | 1 - .../spec/results/simple_erb.rbs | 1 - .../gems/templater-1.0.0/spec/spec_helper.rb | 65 - .../templater-1.0.0/spec/spec_helpers_spec.rb | 85 - .../templater-1.0.0/spec/templater_spec.rb | 7 - .../templater-1.0.0/spec/templates/erb.rbt | 1 - .../spec/templates/glob/README | 1 - .../spec/templates/glob/arg.js | 3 - .../spec/templates/glob/hellothar.%feh% | 1 - .../spec/templates/glob/hellothar.html.%feh% | 1 - .../templates/glob/subfolder/jessica_alba.jpg | 1 - .../spec/templates/glob/subfolder/monkey.rb | 1 - .../spec/templates/glob/test.rb | 1 - .../spec/templates/literals_erb.rbt | 1 - .../templater-1.0.0/spec/templates/simple.rbt | 1 - .../spec/templates/simple_erb.rbt | 1 - .../gems/templater-1.0.0/templater.gemspec | 54 - .../1.8/gems/yui-compressor-0.9.1/Rakefile | 21 - .../lib/yui/compressor.rb | 200 - .../test/compressor_test.rb | 94 - .../vendor/yuicompressor-2.4.2.jar | Bin 851219 -> 0 bytes .../compass-0.10.0.pre5.gemspec | 36 - .../compass-colors-0.3.1.gemspec | 33 - .../compass-slickmap-0.2.3.gemspec | 30 - .../1.8/specifications/diff-lcs-1.1.2.gemspec | 34 - .../1.8/specifications/extlib-0.9.14.gemspec | 40 - .../fancy-buttons-0.3.9.gemspec | 38 - .../1.8/specifications/haml-2.2.17.gemspec | 45 - .../1.8/specifications/highline-1.5.1.gemspec | 31 - .../specifications/httpclient-2.1.5.2.gemspec | 26 - .../1.8/specifications/json-1.2.0.gemspec | 34 - .../specifications/json_pure-1.2.0.gemspec | 33 - .../1.8/specifications/rack-1.1.0.gemspec | 57 - .../specifications/rack-test-0.5.3.gemspec | 36 - .../1.8/specifications/rake-0.8.7.gemspec | 32 - .../1.8/specifications/shotgun-0.6.gemspec | 34 - .../1.8/specifications/sinatra-1.0.a.gemspec | 49 - .../sinatra-content-for-0.2.gemspec | 40 - .../1.8/specifications/smusher-0.4.2.gemspec | 40 - .../specifications/sprockets-1.0.2.gemspec | 31 - .../specifications/templater-1.0.0.gemspec | 54 - .../yui-compressor-0.9.1.gemspec | 29 - .../ruby/1.9.1/cache/compass-0.10.0.pre4.gem | Bin 831488 -> 0 bytes .../ruby/1.9.1/cache/compass-colors-0.3.1.gem | Bin 9216 -> 0 bytes .../1.9.1/cache/compass-slickmap-0.2.3.gem | Bin 11264 -> 0 bytes .../ruby/1.9.1/cache/configuration-1.1.0.gem | Bin 9216 -> 0 bytes .../gems/ruby/1.9.1/cache/diff-lcs-1.1.2.gem | Bin 27136 -> 0 bytes .../gems/ruby/1.9.1/cache/extlib-0.9.14.gem | Bin 64512 -> 0 bytes .../ruby/1.9.1/cache/fancy-buttons-0.3.7.gem | Bin 9216 -> 0 bytes .../gems/ruby/1.9.1/cache/haml-2.2.17.gem | Bin 149504 -> 0 bytes .../gems/ruby/1.9.1/cache/highline-1.5.1.gem | Bin 55296 -> 0 bytes .../ruby/1.9.1/cache/httpclient-2.1.5.2.gem | Bin 147456 -> 0 bytes .../gems/ruby/1.9.1/cache/json-1.2.0.gem | Bin 385536 -> 0 bytes .../gems/ruby/1.9.1/cache/json_pure-1.2.0.gem | Bin 385536 -> 0 bytes .../gems/ruby/1.9.1/cache/launchy-0.3.5.gem | Bin 17408 -> 0 bytes .../gems/ruby/1.9.1/cache/rack-1.1.0.gem | Bin 104448 -> 0 bytes .../gems/ruby/1.9.1/cache/rack-test-0.5.3.gem | Bin 19456 -> 0 bytes .../gems/ruby/1.9.1/cache/rake-0.8.7.gem | Bin 104960 -> 0 bytes .../gems/ruby/1.9.1/cache/shotgun-0.5.gem | Bin 7680 -> 0 bytes .../gems/ruby/1.9.1/cache/sinatra-0.9.4.gem | Bin 119808 -> 0 bytes .../1.9.1/cache/sinatra-content-for-0.2.gem | Bin 6656 -> 0 bytes .../gems/ruby/1.9.1/cache/smusher-0.4.2.gem | Bin 20992 -> 0 bytes .../gems/ruby/1.9.1/cache/sprockets-1.0.2.gem | Bin 13312 -> 0 bytes .../gems/ruby/1.9.1/cache/templater-1.0.0.gem | Bin 32256 -> 0 bytes .../ruby/1.9.1/cache/yui-compressor-0.9.1.gem | Bin 817152 -> 0 bytes .../vendor/gems/ruby/1.9.1/environment.rb | 185 - .../compass-0.10.0.pre4/CHANGELOG.markdown | 777 --- .../gems/compass-0.10.0.pre4/LICENSE.markdown | 29 - .../gems/compass-0.10.0.pre4/README.markdown | 56 - .../1.9.1/gems/compass-0.10.0.pre4/REVISION | 1 - .../1.9.1/gems/compass-0.10.0.pre4/Rakefile | 166 - .../gems/compass-0.10.0.pre4/VERSION.yml | 5 - .../gems/compass-0.10.0.pre4/bin/compass | 26 - .../1.9.1/gems/compass-0.10.0.pre4/deps.rip | 1 - .../examples/README.markdown | 4 - .../examples/blueprint_default/config.rb | 7 - .../blueprint_default/images/grid.png | Bin 206 -> 0 bytes .../blueprint_default/index.html.haml | 85 - .../parts/elements.html.haml | 282 -- .../blueprint_default/parts/forms.html.haml | 192 - .../blueprint_default/parts/grid.html.haml | 274 -- .../blueprint_default/parts/test-small.jpg | Bin 1886 -> 0 bytes .../examples/blueprint_default/parts/test.jpg | Bin 35467 -> 0 bytes .../blueprint_default/parts/valid.png | Bin 1669 -> 0 bytes .../examples/blueprint_default/src/ie.sass | 3 - .../blueprint_default/src/images/grid.png | Bin 206 -> 0 bytes .../examples/blueprint_default/src/print.sass | 3 - .../blueprint_default/src/screen.sass | 8 - .../examples/blueprint_plugins/config.rb | 8 - .../images/buttons/cross.png | Bin 655 -> 0 bytes .../blueprint_plugins/images/buttons/key.png | Bin 455 -> 0 bytes .../blueprint_plugins/images/buttons/tick.png | Bin 537 -> 0 bytes .../blueprint_plugins/images/grid.png | Bin 206 -> 0 bytes .../images/link_icons/doc.png | Bin 777 -> 0 bytes .../images/link_icons/email.png | Bin 641 -> 0 bytes .../images/link_icons/external.png | Bin 46848 -> 0 bytes .../images/link_icons/feed.png | Bin 691 -> 0 bytes .../images/link_icons/im.png | Bin 741 -> 0 bytes .../images/link_icons/pdf.png | Bin 591 -> 0 bytes .../images/link_icons/visited.png | Bin 46990 -> 0 bytes .../images/link_icons/xls.png | Bin 663 -> 0 bytes .../blueprint_plugins/images/test-small.jpg | Bin 1886 -> 0 bytes .../blueprint_plugins/images/test.jpg | Bin 35467 -> 0 bytes .../blueprint_plugins/images/valid.png | Bin 1669 -> 0 bytes .../blueprint_plugins/index.html.haml | 96 - .../plugins/buttons.html.haml | 67 - .../plugins/fancy_type.html.haml | 100 - .../plugins/link_icons.html.haml | 61 - .../blueprint_plugins/plugins/rtl.html.haml | 100 - .../blueprint_plugins/src/buttons.sass | 49 - .../examples/blueprint_plugins/src/ie.sass | 3 - .../blueprint_plugins/src/images/grid.png | Bin 206 -> 0 bytes .../blueprint_plugins/src/link_icons.sass | 13 - .../examples/blueprint_plugins/src/print.sass | 3 - .../blueprint_plugins/src/rtl_screen.sass | 13 - .../blueprint_plugins/src/screen.sass | 11 - .../examples/blueprint_scoped/images/grid.png | Bin 199 -> 0 bytes .../examples/blueprint_scoped/src/ie.sass | 4 - .../examples/blueprint_scoped/src/print.sass | 4 - .../examples/blueprint_scoped/src/screen.sass | 5 - .../blueprint_scoped_form/images/grid.png | Bin 199 -> 0 bytes .../blueprint_scoped_form/src/ie.sass | 3 - .../blueprint_scoped_form/src/print.sass | 3 - .../blueprint_scoped_form/src/screen.sass | 10 - .../examples/blueprint_semantic/config.rb | 7 - .../blueprint_semantic/images/grid.png | Bin 206 -> 0 bytes .../blueprint_semantic/index.html.haml | 86 - .../parts/fancy_type.html.haml | 100 - .../blueprint_semantic/parts/liquid.html.haml | 100 - .../blueprint_semantic/parts/test-small.jpg | Bin 1886 -> 0 bytes .../blueprint_semantic/parts/test.jpg | Bin 35467 -> 0 bytes .../blueprint_semantic/parts/valid.png | Bin 1669 -> 0 bytes .../examples/blueprint_semantic/src/ie.sass | 3 - .../blueprint_semantic/src/images/grid.png | Bin 206 -> 0 bytes .../blueprint_semantic/src/liquid.sass | 69 - .../blueprint_semantic/src/print.sass | 3 - .../blueprint_semantic/src/screen.sass | 70 - .../examples/compass/bootstrap.rb | 3 - .../examples/compass/compass.html.haml | 39 - .../examples/compass/config.rb | 7 - .../extensions/yui/stylesheets/_yui.sass | 7 - .../yui/stylesheets/yui/modules/_base.sass | 70 - .../yui/stylesheets/yui/modules/_fonts.sass | 45 - .../yui/stylesheets/yui/modules/_grids.sass | 385 -- .../yui/stylesheets/yui/modules/_reset.sass | 61 - .../yui/templates/project/manifest.rb | 1 - .../yui/templates/project/screen.sass | 4 - .../examples/compass/images/blue_arrow.gif | Bin 51 -> 0 bytes .../examples/compass/src/compass.sass | 47 - .../compass/src/images/blue_arrow.gif | Bin 51 -> 0 bytes .../examples/compass/src/sticky_footer.sass | 11 - .../examples/compass/src/utilities.sass | 108 - .../examples/compass/sticky_footer.html.haml | 14 - .../examples/compass/utilities.html.haml | 189 - .../examples/css3/config.rb | 6 - .../templates/project/Vtks Revolt.ttf | Bin 158556 -> 0 bytes .../templates/project/angelina.ttf | Bin 77048 -> 0 bytes .../templates/project/fancy-fonts.sass | 7 - .../fancy-fonts/templates/project/manifest.rb | 5 - .../examples/css3/images/fresh-peas.jpg | Bin 35990 -> 0 bytes .../examples/css3/index.html.haml | 55 - .../examples/css3/src/_base.sass | 14 - .../examples/css3/src/fancy-fonts.sass | 7 - .../examples/css3/src/gradient.sass | 10 - .../examples/css3/src/main.sass | 80 - .../css3/stylesheets/fonts/Vtks Revolt.ttf | Bin 158556 -> 0 bytes .../css3/stylesheets/fonts/angelina.ttf | Bin 77048 -> 0 bytes .../examples/downloader.rb | 57 - .../examples/logo/logo.html.haml | 40 - .../examples/logo/src/ie.sass | 6 - .../examples/logo/src/print.sass | 6 - .../examples/logo/src/screen.sass | 29 - .../examples/ninesixty/bootstrap.rb | 4 - .../examples/ninesixty/config.rb | 9 - .../extensions/ninesixty/README.mkdn | 56 - .../ninesixty/compass-960-plugin.gemspec | 36 - .../extensions/ninesixty/lib/ninesixty.rb | 1 - .../ninesixty/lib/ninesixty/compass_plugin.rb | 5 - .../extensions/ninesixty/sass/960/_grid.sass | 64 - .../extensions/ninesixty/sass/960/_text.sass | 59 - .../ninesixty/templates/project/grid.sass | 34 - .../ninesixty/templates/project/manifest.rb | 2 - .../ninesixty/templates/project/text.sass | 10 - .../examples/ninesixty/src/grid.sass | 16 - .../examples/ninesixty/src/text.sass | 10 - .../examples/susy/bootstrap.rb | 3 - .../examples/susy/config.rb | 9 - .../examples/susy/extensions/susy/LICENSE.txt | 28 - .../examples/susy/extensions/susy/README.mkdn | 235 - .../susy/compass-susy-plugin.gemspec | 35 - .../extensions/susy/docs/tutorial/build.sh | 141 - .../code/01_target/src/_defaults.sass | 100 - .../tutorial/code/01_target/src/screen.sass | 98 - .../code/02_container/src/_defaults.sass | 147 - .../code/02_container/src/screen.sass | 19 - .../code/03_structure/src/_defaults.sass | 147 - .../code/03_structure/src/screen.sass | 48 - .../susy/docs/tutorial/code/_common/config.rb | 14 - .../tutorial/code/_common/images/grid.png | Bin 169 -> 0 bytes .../code/_common/images/susy_logo.png | Bin 3206 -> 0 bytes .../docs/tutorial/code/_common/src/_base.sass | 63 - .../docs/tutorial/code/_tools/Markdown.pl | 1450 ------ .../tutorial/code/site/src/_defaults.sass | 100 - .../docs/tutorial/code/site/src/screen.sass | 91 - .../docs/tutorial/figures/susy_element.png | Bin 15458 -> 0 bytes .../susy/docs/tutorial/figures/susy_grid.png | Bin 13633 -> 0 bytes .../extensions/susy/docs/tutorial/index.mkdn | 301 -- .../examples/susy/extensions/susy/lib/susy.rb | 2 - .../susy/lib/susy/compass_plugin.rb | 5 - .../susy/lib/susy/sass_extensions.rb | 79 - .../susy/extensions/susy/sass/susy/_grid.sass | 128 - .../extensions/susy/sass/susy/_reset.sass | 7 - .../susy/extensions/susy/sass/susy/_susy.sass | 23 - .../susy/extensions/susy/sass/susy/_text.sass | 15 - .../extensions/susy/sass/susy/_utils.sass | 81 - .../susy/templates/project/_base.sass | 62 - .../susy/templates/project/_defaults.sass | 147 - .../extensions/susy/templates/project/ie.sass | 9 - .../susy/templates/project/manifest.rb | 5 - .../susy/templates/project/print.sass | 7 - .../susy/templates/project/screen.sass | 44 - .../examples/susy/src/_base.sass | 62 - .../examples/susy/src/_defaults.sass | 148 - .../examples/susy/src/screen.sass | 114 - .../examples/yui/bootstrap.rb | 3 - .../examples/yui/divisions.html.haml | 179 - .../yui/extensions/yui/stylesheets/_yui.sass | 7 - .../yui/stylesheets/yui/modules/_base.sass | 70 - .../yui/stylesheets/yui/modules/_fonts.sass | 45 - .../yui/stylesheets/yui/modules/_grids.sass | 385 -- .../yui/stylesheets/yui/modules/_reset.sass | 61 - .../yui/templates/project/manifest.rb | 1 - .../yui/templates/project/screen.sass | 4 - .../examples/yui/index.html.haml | 19 - .../examples/yui/src/screen.sass | 13 - .../examples/yui/sub_divisions.html.haml | 169 - .../examples/yui/templates.html.haml | 54 - .../compass-0.10.0.pre4/examples/yui/test.jpg | Bin 35467 -> 0 bytes .../examples/yui/typography.html.haml | 132 - .../features/command_line.feature | 247 - .../features/extensions.feature | 20 - .../step_definitions/command_line_steps.rb | 234 - .../step_definitions/extension_steps.rb | 13 - .../gems/compass-0.10.0.pre4/lib/compass.rb | 22 - .../lib/compass/actions.rb | 98 - .../lib/compass/app_integration.rb | 24 - .../lib/compass/app_integration/merb.rb | 1 - .../compass/app_integration/merb/runtime.rb | 63 - .../lib/compass/app_integration/rails.rb | 26 - .../rails/action_controller.rb | 15 - .../rails/configuration_defaults.rb | 49 - .../app_integration/rails/installer.rb | 127 - .../compass/app_integration/rails/runtime.rb | 14 - .../app_integration/rails/sass_plugin.rb | 5 - .../rails/templates/compass-install-rails.rb | 89 - .../lib/compass/app_integration/rails/urls.rb | 14 - .../compass/app_integration/stand_alone.rb | 22 - .../stand_alone/configuration_defaults.rb | 32 - .../app_integration/stand_alone/installer.rb | 83 - .../lib/compass/commands.rb | 11 - .../lib/compass/commands/base.rb | 36 - .../lib/compass/commands/create_project.rb | 122 - .../commands/generate_grid_background.rb | 87 - .../lib/compass/commands/help.rb | 89 - .../lib/compass/commands/installer_command.rb | 38 - .../lib/compass/commands/interactive.rb | 61 - .../lib/compass/commands/list_frameworks.rb | 16 - .../lib/compass/commands/print_version.rb | 91 - .../lib/compass/commands/project_base.rb | 92 - .../lib/compass/commands/project_stats.rb | 162 - .../lib/compass/commands/registry.rb | 22 - .../lib/compass/commands/stamp_pattern.rb | 86 - .../lib/compass/commands/update_project.rb | 103 - .../lib/compass/commands/validate_project.rb | 77 - .../lib/compass/commands/watch_project.rb | 71 - .../compass/commands/write_configuration.rb | 113 - .../lib/compass/compiler.rb | 137 - .../lib/compass/configuration.rb | 46 - .../lib/compass/configuration/adapters.rb | 63 - .../lib/compass/configuration/comments.rb | 22 - .../lib/compass/configuration/data.rb | 105 - .../lib/compass/configuration/defaults.rb | 148 - .../lib/compass/configuration/helpers.rb | 120 - .../lib/compass/configuration/inheritance.rb | 170 - .../compass/configuration/serialization.rb | 86 - .../lib/compass/core_ext.rb | 14 - .../lib/compass/dependencies.rb | 6 - .../compass-0.10.0.pre4/lib/compass/errors.rb | 10 - .../compass-0.10.0.pre4/lib/compass/exec.rb | 16 - .../lib/compass/exec/command_option_parser.rb | 23 - .../lib/compass/exec/global_options_parser.rb | 37 - .../lib/compass/exec/helpers.rb | 28 - .../compass/exec/project_options_parser.rb | 46 - .../lib/compass/exec/sub_command_ui.rb | 45 - .../lib/compass/exec/switch_ui.rb | 166 - .../lib/compass/frameworks.rb | 92 - .../blueprint/stylesheets/_blueprint.sass | 31 - .../stylesheets/blueprint/_buttons.sass | 84 - .../stylesheets/blueprint/_colors.sass | 33 - .../stylesheets/blueprint/_debug.sass | 9 - .../stylesheets/blueprint/_fancy_type.sass | 82 - .../stylesheets/blueprint/_form.sass | 56 - .../stylesheets/blueprint/_grid.sass | 179 - .../blueprint/stylesheets/blueprint/_ie.sass | 99 - .../stylesheets/blueprint/_interaction.sass | 58 - .../stylesheets/blueprint/_link_icons.sass | 44 - .../stylesheets/blueprint/_liquid.sass | 141 - .../stylesheets/blueprint/_print.sass | 87 - .../stylesheets/blueprint/_reset.sass | 58 - .../blueprint/stylesheets/blueprint/_rtl.sass | 123 - .../stylesheets/blueprint/_scaffolding.sass | 49 - .../stylesheets/blueprint/_screen.sass | 2 - .../stylesheets/blueprint/_typography.sass | 162 - .../stylesheets/blueprint/_utilities.sass | 37 - .../blueprint/docs/_buttons.sass.html | 26 - .../blueprint/docs/_colors.sass.html | 1 - .../blueprint/docs/_debug.sass.html | 1 - .../blueprint/docs/_fancy_type.sass.html | 45 - .../blueprint/docs/_form.sass.html | 3 - .../blueprint/docs/_grid.sass.html | 46 - .../stylesheets/blueprint/docs/_ie.sass.html | 7 - .../blueprint/docs/_interaction.sass.html | 1 - .../blueprint/docs/_link_icons.sass.html | 1 - .../blueprint/docs/_liquid.sass.html | 7 - .../blueprint/docs/_print.sass.html | 7 - .../blueprint/docs/_reset.sass.html | 7 - .../stylesheets/blueprint/docs/_rtl.sass.html | 38 - .../blueprint/docs/_scaffolding.sass.html | 11 - .../blueprint/docs/_screen.sass.html | 1 - .../blueprint/docs/_typography.sass.html | 3 - .../blueprint/docs/_utilities.sass.html | 3 - .../stylesheets/blueprint/docs/index.html | 31 - .../blueprint/docs/modules/_buttons.sass.html | 1 - .../blueprint/docs/modules/_colors.sass.html | 1 - .../blueprint/docs/modules/_debug.sass.html | 1 - .../docs/modules/_fancy_type.sass.html | 1 - .../blueprint/docs/modules/_form.sass.html | 1 - .../blueprint/docs/modules/_grid.sass.html | 1 - .../docs/modules/_interaction.sass.html | 1 - .../docs/modules/_link_icons.sass.html | 1 - .../blueprint/docs/modules/_liquid.sass.html | 1 - .../blueprint/docs/modules/_reset.sass.html | 1 - .../blueprint/docs/modules/_rtl.sass.html | 1 - .../docs/modules/_scaffolding.sass.html | 1 - .../docs/modules/_typography.sass.html | 1 - .../docs/modules/_utilities.sass.html | 1 - .../blueprint/modules/_buttons.sass | 2 - .../blueprint/modules/_colors.sass | 2 - .../stylesheets/blueprint/modules/_debug.sass | 2 - .../blueprint/modules/_fancy_type.sass | 2 - .../stylesheets/blueprint/modules/_form.sass | 2 - .../stylesheets/blueprint/modules/_grid.sass | 2 - .../blueprint/modules/_interaction.sass | 2 - .../blueprint/modules/_link_icons.sass | 2 - .../blueprint/modules/_liquid.sass | 3 - .../stylesheets/blueprint/modules/_reset.sass | 2 - .../stylesheets/blueprint/modules/_rtl.sass | 2 - .../blueprint/modules/_scaffolding.sass | 2 - .../blueprint/modules/_typography.sass | 2 - .../blueprint/modules/_utilities.sass | 2 - .../blueprint/templates/buttons/buttons.sass | 49 - .../templates/buttons/buttons/cross.png | Bin 655 -> 0 bytes .../templates/buttons/buttons/key.png | Bin 455 -> 0 bytes .../templates/buttons/buttons/tick.png | Bin 537 -> 0 bytes .../blueprint/templates/buttons/manifest.rb | 17 - .../templates/link_icons/link_icons.sass | 13 - .../templates/link_icons/link_icons/doc.png | Bin 777 -> 0 bytes .../templates/link_icons/link_icons/email.png | Bin 641 -> 0 bytes .../link_icons/link_icons/external.png | Bin 46848 -> 0 bytes .../templates/link_icons/link_icons/feed.png | Bin 691 -> 0 bytes .../templates/link_icons/link_icons/im.png | Bin 741 -> 0 bytes .../templates/link_icons/link_icons/pdf.png | Bin 591 -> 0 bytes .../link_icons/link_icons/visited.png | Bin 46990 -> 0 bytes .../templates/link_icons/link_icons/xls.png | Bin 663 -> 0 bytes .../templates/link_icons/manifest.rb | 23 - .../blueprint/templates/project/grid.png | Bin 206 -> 0 bytes .../blueprint/templates/project/ie.sass | 16 - .../blueprint/templates/project/manifest.rb | 32 - .../templates/project/partials/_base.sass | 11 - .../blueprint/templates/project/print.sass | 8 - .../blueprint/templates/project/screen.sass | 41 - .../templates/project/welcome.html.haml | 21 - .../compass/stylesheets/_compass.sass | 2 - .../compass/stylesheets/compass/_css3.sass | 14 - .../compass/stylesheets/compass/_layout.sass | 1 - .../compass/stylesheets/compass/_misc.sass | 24 - .../compass/stylesheets/compass/_reset.sass | 3 - .../stylesheets/compass/_utilities.sass | 6 - .../compass/css3/_background_clip.sass | 16 - .../compass/css3/_background_origin.sass | 18 - .../compass/css3/_background_size.sass | 14 - .../compass/css3/_border_radius.sass | 47 - .../stylesheets/compass/css3/_box_shadow.sass | 20 - .../stylesheets/compass/css3/_box_sizing.sass | 13 - .../stylesheets/compass/css3/_columns.sass | 37 - .../stylesheets/compass/css3/_font_face.sass | 31 - .../stylesheets/compass/css3/_gradient.sass | 40 - .../compass/css3/_inline_block.sass | 7 - .../stylesheets/compass/css3/_opacity.sass | 18 - .../compass/css3/_text_shadow.sass | 15 - .../stylesheets/compass/css3/_transform.sass | 62 - .../stylesheets/compass/css3/_transition.sass | 57 - .../compass/layout/_sticky_footer.sass | 19 - .../compass/utilities/_general.sass | 5 - .../stylesheets/compass/utilities/_links.sass | 3 - .../stylesheets/compass/utilities/_lists.sass | 3 - .../stylesheets/compass/utilities/_print.sass | 18 - .../compass/utilities/_sprites.sass | 1 - .../compass/utilities/_tables.sass | 3 - .../stylesheets/compass/utilities/_text.sass | 2 - .../compass/utilities/general/_clearfix.sass | 24 - .../compass/utilities/general/_float.sass | 17 - .../compass/utilities/general/_hacks.sass | 15 - .../compass/utilities/general/_min.sass | 17 - .../compass/utilities/general/_reset.sass | 134 - .../compass/utilities/general/_tabs.sass | 0 .../compass/utilities/general/_tag_cloud.sass | 19 - .../compass/utilities/links/_hover_link.sass | 5 - .../compass/utilities/links/_link_colors.sass | 24 - .../utilities/links/_unstyled_link.sass | 7 - .../compass/utilities/lists/_bullets.sass | 21 - .../utilities/lists/_horizontal_list.sass | 52 - .../compass/utilities/lists/_inline_list.sass | 29 - .../utilities/sprites/_sprite_img.sass | 52 - .../tables/_alternating_rows_and_columns.sass | 20 - .../compass/utilities/tables/_borders.sass | 27 - .../utilities/tables/_scaffolding.sass | 9 - .../compass/utilities/text/_ellipsis.sass | 13 - .../compass/utilities/text/_nowrap.sass | 3 - .../compass/utilities/text/_replacement.sass | 22 - .../compass/templates/ellipsis/ellipsis.sass | 6 - .../compass/templates/ellipsis/manifest.rb | 27 - .../templates/ellipsis/xml/ellipsis.xml | 14 - .../compass/templates/extension/manifest.rb | 20 - .../templates/extension/stylesheets/main.sass | 1 - .../extension/templates/project/manifest.rb | 2 - .../extension/templates/project/screen.sass | 2 - .../compass/templates/project/USAGE.markdown | 32 - .../compass/templates/project/ie.sass | 6 - .../compass/templates/project/manifest.rb | 4 - .../compass/templates/project/print.sass | 6 - .../compass/templates/project/screen.sass | 13 - .../lib/compass/grid_builder.rb | 99 - .../lib/compass/installers.rb | 3 - .../lib/compass/installers/bare_installer.rb | 58 - .../lib/compass/installers/base.rb | 147 - .../lib/compass/installers/manifest.rb | 111 - .../compass/installers/manifest_installer.rb | 59 - .../compass/installers/template_context.rb | 44 - .../compass-0.10.0.pre4/lib/compass/logger.rb | 87 - .../lib/compass/sass_extensions.rb | 5 - .../lib/compass/sass_extensions/functions.rb | 21 - .../sass_extensions/functions/color_stop.rb | 10 - .../sass_extensions/functions/display.rb | 22 - .../sass_extensions/functions/enumerate.rb | 6 - .../sass_extensions/functions/font_files.rb | 11 - .../sass_extensions/functions/inline_image.rb | 56 - .../sass_extensions/functions/selectors.rb | 42 - .../compass/sass_extensions/functions/urls.rb | 125 - .../compass/sass_extensions/monkey_patches.rb | 3 - .../monkey_patches/stylesheet_updating.rb | 40 - .../monkey_patches/traversal.rb | 23 - .../compass-0.10.0.pre4/lib/compass/stats.rb | 92 - .../lib/compass/test_case.rb | 38 - .../lib/compass/validator.rb | 9 - .../lib/compass/version.rb | 57 - .../compass-0.10.0.pre4/lib/vendor/fssm.rb | 40 - .../lib/vendor/fssm/backends/fsevents.rb | 37 - .../lib/vendor/fssm/backends/inotify.rb | 25 - .../lib/vendor/fssm/backends/polling.rb | 26 - .../fssm/backends/rubycocoa/fsevents.rb | 131 - .../lib/vendor/fssm/monitor.rb | 25 - .../lib/vendor/fssm/path.rb | 91 - .../lib/vendor/fssm/pathname.rb | 528 --- .../lib/vendor/fssm/state.rb | 54 - .../lib/vendor/fssm/support.rb | 52 - .../lib/vendor/fssm/tree.rb | 176 - .../test/command_line_helper.rb | 105 - .../test/command_line_test.rb | 67 - .../test/compass_png_test.rb | 46 - .../compass-0.10.0.pre4/test/compass_test.rb | 142 - .../test/configuration_test.rb | 123 - .../fixtures/stylesheets/blueprint/config.rb | 9 - .../stylesheets/blueprint/css/typography.css | 160 - .../stylesheets/blueprint/images/grid.png | Bin 199 -> 0 bytes .../stylesheets/blueprint/sass/ie.sass | 3 - .../stylesheets/blueprint/sass/print.sass | 3 - .../stylesheets/blueprint/sass/screen.sass | 17 - .../blueprint/sass/typography.sass | 3 - .../fixtures/stylesheets/compass/config.rb | 9 - .../stylesheets/compass/css/layout.css | 15 - .../stylesheets/compass/css/print.css | 12 - .../stylesheets/compass/css/reset.css | 60 - .../stylesheets/compass/css/utilities.css | 17 - .../stylesheets/compass/sass/layout.sass | 3 - .../stylesheets/compass/sass/print.sass | 5 - .../stylesheets/compass/sass/reset.sass | 10 - .../stylesheets/compass/sass/utilities.sass | 6 - .../fixtures/stylesheets/image_urls/config.rb | 17 - .../stylesheets/image_urls/css/screen.css | 5 - .../stylesheets/image_urls/images/grid.png | Bin 199 -> 0 bytes .../stylesheets/image_urls/sass/screen.sass | 6 - .../relative/assets/images/testing.png | 0 .../fixtures/stylesheets/relative/config.rb | 9 - .../fixtures/stylesheets/relative/css/ie.css | 1 - .../stylesheets/relative/css/print.css | 1 - .../stylesheets/relative/css/screen.css | 1 - .../stylesheets/relative/sass/ie.sass | 6 - .../stylesheets/relative/sass/print.sass | 6 - .../stylesheets/relative/sass/screen.sass | 3 - .../compass-0.10.0.pre4/test/io_helper.rb | 36 - .../compass-0.10.0.pre4/test/rails_helper.rb | 40 - .../test/rails_integration_test.rb | 46 - .../test/sass_extensions_test.rb | 31 - .../test/test_case_helper.rb | 13 - .../compass-0.10.0.pre4/test/test_helper.rb | 28 - .../test/test_rails_helper.rb | 20 - .../gems/compass-colors-0.3.1/README.markdown | 50 - .../1.9.1/gems/compass-colors-0.3.1/Rakefile | 26 - .../gems/compass-colors-0.3.1/VERSION.yml | 5 - .../compass-colors-0.3.1/example/config.rb | 13 - .../example/split_compliment_example.html | 38 - .../example/src/_split_compliment_theme.sass | 28 - .../example/src/screen.sass | 40 - .../lib/compass-colors.rb | 9 - .../lib/compass-colors/compass_extension.rb | 7 - .../lib/compass-colors/hsl.rb | 109 - .../lib/compass-colors/sass_extensions.rb | 112 - .../spec/approximate_color_matching.rb | 43 - .../spec/sass_extensions_spec.rb | 54 - .../templates/analogous/_theme.sass | 28 - .../templates/analogous/manifest.rb | 1 - .../templates/basic/_theme.sass | 7 - .../templates/basic/manifest.rb | 1 - .../templates/complementary/_theme.sass | 20 - .../templates/complementary/manifest.rb | 1 - .../templates/split_complement/_theme.sass | 28 - .../templates/split_complement/manifest.rb | 1 - .../templates/triadic/_theme.sass | 28 - .../templates/triadic/manifest.rb | 1 - .../gems/compass-slickmap-0.2.3/.gitignore | 3 - .../gems/compass-slickmap-0.2.3/Rakefile | 20 - .../1.9.1/gems/compass-slickmap-0.2.3/VERSION | 1 - .../compass-slickmap.gemspec | 53 - .../compass-slickmap-0.2.3/lib/slickmap.rb | 45 - .../lib/slickmap/compass_plugin.rb | 5 - .../sass/_slickmap.sass | 210 - .../templates/project/images/L1-center.png | Bin 300 -> 0 bytes .../templates/project/images/L1-left.png | Bin 305 -> 0 bytes .../templates/project/images/L1-right.png | Bin 295 -> 0 bytes .../templates/project/images/L3-bottom.png | Bin 353 -> 0 bytes .../templates/project/images/L3-center.png | Bin 326 -> 0 bytes .../templates/project/images/L3-li-top.png | Bin 3019 -> 0 bytes .../templates/project/images/L3-ul-top.png | Bin 201 -> 0 bytes .../project/images/vertical-line.png | Bin 152 -> 0 bytes .../project/images/white-highlight.png | Bin 189 -> 0 bytes .../templates/project/manifest.rb | 10 - .../templates/project/sitemap.sass | 7 - .../1.9.1/gems/configuration-1.1.0/README | 197 - .../1.9.1/gems/configuration-1.1.0/README.erb | 69 - .../1.9.1/gems/configuration-1.1.0/Rakefile | 241 - .../gems/configuration-1.1.0/config/a.rb | 5 - .../gems/configuration-1.1.0/config/b.rb | 19 - .../gems/configuration-1.1.0/config/c.rb | 8 - .../gems/configuration-1.1.0/config/d.rb | 5 - .../gems/configuration-1.1.0/config/e.rb | 13 - .../configuration-1.1.0/configuration.gemspec | 28 - .../configuration-1.1.0/lib/configuration.rb | 199 - .../gems/configuration-1.1.0/samples/a.rb | 11 - .../gems/configuration-1.1.0/samples/b.rb | 11 - .../gems/configuration-1.1.0/samples/c.rb | 11 - .../gems/configuration-1.1.0/samples/d.rb | 14 - .../gems/configuration-1.1.0/samples/e.rb | 12 - .../ruby/1.9.1/gems/diff-lcs-1.1.2/ChangeLog | 46 - .../ruby/1.9.1/gems/diff-lcs-1.1.2/Install | 6 - .../ruby/1.9.1/gems/diff-lcs-1.1.2/README | 76 - .../ruby/1.9.1/gems/diff-lcs-1.1.2/Rakefile | 116 - .../1.9.1/gems/diff-lcs-1.1.2/bin/htmldiff | 112 - .../ruby/1.9.1/gems/diff-lcs-1.1.2/bin/ldiff | 45 - .../1.9.1/gems/diff-lcs-1.1.2/lib/diff/lcs.rb | 1105 ----- .../gems/diff-lcs-1.1.2/lib/diff/lcs/array.rb | 21 - .../gems/diff-lcs-1.1.2/lib/diff/lcs/block.rb | 51 - .../diff-lcs-1.1.2/lib/diff/lcs/callbacks.rb | 322 -- .../diff-lcs-1.1.2/lib/diff/lcs/change.rb | 169 - .../gems/diff-lcs-1.1.2/lib/diff/lcs/hunk.rb | 257 - .../gems/diff-lcs-1.1.2/lib/diff/lcs/ldiff.rb | 226 - .../diff-lcs-1.1.2/lib/diff/lcs/string.rb | 19 - .../1.9.1/gems/diff-lcs-1.1.2/tests/00test.rb | 626 --- .../ruby/1.9.1/gems/extlib-0.9.14/.autotest | 21 - .../ruby/1.9.1/gems/extlib-0.9.14/.document | 5 - .../ruby/1.9.1/gems/extlib-0.9.14/.gitignore | 22 - .../ruby/1.9.1/gems/extlib-0.9.14/LICENSE | 47 - .../ruby/1.9.1/gems/extlib-0.9.14/README.rdoc | 17 - .../ruby/1.9.1/gems/extlib-0.9.14/Rakefile | 28 - .../ruby/1.9.1/gems/extlib-0.9.14/VERSION | 1 - .../1.9.1/gems/extlib-0.9.14/extlib.gemspec | 146 - .../1.9.1/gems/extlib-0.9.14/lib/extlib.rb | 50 - .../gems/extlib-0.9.14/lib/extlib/array.rb | 36 - .../extlib-0.9.14/lib/extlib/assertions.rb | 8 - .../gems/extlib-0.9.14/lib/extlib/blank.rb | 89 - .../gems/extlib-0.9.14/lib/extlib/boolean.rb | 11 - .../extlib-0.9.14/lib/extlib/byte_array.rb | 6 - .../gems/extlib-0.9.14/lib/extlib/class.rb | 177 - .../gems/extlib-0.9.14/lib/extlib/datetime.rb | 29 - .../extlib-0.9.14/lib/extlib/dictionary.rb | 433 -- .../gems/extlib-0.9.14/lib/extlib/hash.rb | 442 -- .../gems/extlib-0.9.14/lib/extlib/hook.rb | 401 -- .../extlib-0.9.14/lib/extlib/inflection.rb | 440 -- .../extlib-0.9.14/lib/extlib/lazy_array.rb | 451 -- .../extlib-0.9.14/lib/extlib/lazy_module.rb | 18 - .../gems/extlib-0.9.14/lib/extlib/logger.rb | 198 - .../gems/extlib-0.9.14/lib/extlib/mash.rb | 155 - .../gems/extlib-0.9.14/lib/extlib/module.rb | 47 - .../gems/extlib-0.9.14/lib/extlib/nil.rb | 5 - .../gems/extlib-0.9.14/lib/extlib/numeric.rb | 5 - .../gems/extlib-0.9.14/lib/extlib/object.rb | 175 - .../extlib-0.9.14/lib/extlib/object_space.rb | 13 - .../gems/extlib-0.9.14/lib/extlib/pathname.rb | 20 - .../gems/extlib-0.9.14/lib/extlib/pooling.rb | 235 - .../gems/extlib-0.9.14/lib/extlib/rubygems.rb | 38 - .../extlib-0.9.14/lib/extlib/simple_set.rb | 66 - .../gems/extlib-0.9.14/lib/extlib/string.rb | 176 - .../gems/extlib-0.9.14/lib/extlib/struct.rb | 17 - .../gems/extlib-0.9.14/lib/extlib/symbol.rb | 21 - .../gems/extlib-0.9.14/lib/extlib/time.rb | 43 - .../extlib-0.9.14/lib/extlib/virtual_file.rb | 10 - .../gems/extlib-0.9.14/spec/array_spec.rb | 39 - .../gems/extlib-0.9.14/spec/blank_spec.rb | 85 - .../extlib-0.9.14/spec/byte_array_spec.rb | 7 - .../gems/extlib-0.9.14/spec/class_spec.rb | 157 - .../gems/extlib-0.9.14/spec/datetime_spec.rb | 22 - .../gems/extlib-0.9.14/spec/hash_spec.rb | 537 --- .../gems/extlib-0.9.14/spec/hook_spec.rb | 1234 ----- .../spec/inflection/plural_spec.rb | 564 --- .../spec/inflection/singular_spec.rb | 497 -- .../spec/inflection_extras_spec.rb | 110 - .../extlib-0.9.14/spec/lazy_array_spec.rb | 1957 -------- .../extlib-0.9.14/spec/lazy_module_spec.rb | 38 - .../gems/extlib-0.9.14/spec/mash_spec.rb | 311 -- .../gems/extlib-0.9.14/spec/module_spec.rb | 70 - .../extlib-0.9.14/spec/object_space_spec.rb | 9 - .../gems/extlib-0.9.14/spec/object_spec.rb | 114 - .../gems/extlib-0.9.14/spec/pooling_spec.rb | 511 -- .../1.9.1/gems/extlib-0.9.14/spec/rcov.opts | 6 - .../extlib-0.9.14/spec/simple_set_spec.rb | 57 - .../1.9.1/gems/extlib-0.9.14/spec/spec.opts | 4 - .../gems/extlib-0.9.14/spec/spec_helper.rb | 10 - .../gems/extlib-0.9.14/spec/string_spec.rb | 221 - .../gems/extlib-0.9.14/spec/struct_spec.rb | 12 - .../gems/extlib-0.9.14/spec/symbol_spec.rb | 8 - .../gems/extlib-0.9.14/spec/time_spec.rb | 29 - .../gems/extlib-0.9.14/spec/try_call_spec.rb | 73 - .../gems/extlib-0.9.14/spec/try_dup_spec.rb | 45 - .../extlib-0.9.14/spec/virtual_file_spec.rb | 21 - .../1.9.1/gems/extlib-0.9.14/tasks/ci.rake | 1 - .../gems/extlib-0.9.14/tasks/metrics.rake | 36 - .../1.9.1/gems/extlib-0.9.14/tasks/spec.rake | 25 - .../1.9.1/gems/extlib-0.9.14/tasks/yard.rake | 9 - .../gems/extlib-0.9.14/tasks/yardstick.rake | 19 - .../gems/fancy-buttons-0.3.7/README.markdown | 41 - .../1.9.1/gems/fancy-buttons-0.3.7/Rakefile | 22 - .../fancy-buttons-0.3.7/fancy-buttons.gemspec | 54 - .../fancy-buttons-0.3.7/lib/fancy-buttons.rb | 3 - .../lib/sass/_fancy_buttons.sass | 172 - .../lib/sass/_fancy_gradient.sass | 28 - .../lib/templates/project/button_bg.png | Bin 1295 -> 0 bytes .../lib/templates/project/buttons.sass | 57 - .../lib/templates/project/index.html | 36 - .../lib/templates/project/manifest.rb | 3 - .../ruby/1.9.1/gems/haml-2.2.17/.yardopts | 5 - .../ruby/1.9.1/gems/haml-2.2.17/CONTRIBUTING | 4 - .../ruby/1.9.1/gems/haml-2.2.17/MIT-LICENSE | 20 - .../ruby/1.9.1/gems/haml-2.2.17/README.md | 357 -- .../gems/ruby/1.9.1/gems/haml-2.2.17/REVISION | 1 - .../gems/ruby/1.9.1/gems/haml-2.2.17/Rakefile | 392 -- .../gems/ruby/1.9.1/gems/haml-2.2.17/VERSION | 1 - .../ruby/1.9.1/gems/haml-2.2.17/VERSION_NAME | 1 - .../ruby/1.9.1/gems/haml-2.2.17/bin/css2sass | 7 - .../gems/ruby/1.9.1/gems/haml-2.2.17/bin/haml | 9 - .../ruby/1.9.1/gems/haml-2.2.17/bin/html2haml | 7 - .../gems/ruby/1.9.1/gems/haml-2.2.17/bin/sass | 8 - .../1.9.1/gems/haml-2.2.17/extra/haml-mode.el | 662 --- .../1.9.1/gems/haml-2.2.17/extra/sass-mode.el | 206 - .../gems/haml-2.2.17/extra/update_watch.rb | 13 - .../gems/ruby/1.9.1/gems/haml-2.2.17/init.rb | 16 - .../ruby/1.9.1/gems/haml-2.2.17/lib/haml.rb | 40 - .../1.9.1/gems/haml-2.2.17/lib/haml/buffer.rb | 302 -- .../1.9.1/gems/haml-2.2.17/lib/haml/engine.rb | 299 -- .../1.9.1/gems/haml-2.2.17/lib/haml/error.rb | 22 - .../1.9.1/gems/haml-2.2.17/lib/haml/exec.rb | 462 -- .../gems/haml-2.2.17/lib/haml/filters.rb | 341 -- .../gems/haml-2.2.17/lib/haml/helpers.rb | 563 --- .../haml/helpers/action_view_extensions.rb | 55 - .../lib/haml/helpers/action_view_mods.rb | 177 - .../haml-2.2.17/lib/haml/helpers/xss_mods.rb | 95 - .../1.9.1/gems/haml-2.2.17/lib/haml/html.rb | 260 - .../gems/haml-2.2.17/lib/haml/precompiler.rb | 1043 ---- .../1.9.1/gems/haml-2.2.17/lib/haml/shared.rb | 78 - .../gems/haml-2.2.17/lib/haml/template.rb | 85 - .../haml-2.2.17/lib/haml/template/patch.rb | 58 - .../haml-2.2.17/lib/haml/template/plugin.rb | 75 - .../1.9.1/gems/haml-2.2.17/lib/haml/util.rb | 289 -- .../gems/haml-2.2.17/lib/haml/version.rb | 64 - .../ruby/1.9.1/gems/haml-2.2.17/lib/sass.rb | 24 - .../1.9.1/gems/haml-2.2.17/lib/sass/css.rb | 404 -- .../1.9.1/gems/haml-2.2.17/lib/sass/engine.rb | 475 -- .../gems/haml-2.2.17/lib/sass/environment.rb | 79 - .../1.9.1/gems/haml-2.2.17/lib/sass/error.rb | 57 - .../1.9.1/gems/haml-2.2.17/lib/sass/files.rb | 147 - .../1.9.1/gems/haml-2.2.17/lib/sass/plugin.rb | 222 - .../gems/haml-2.2.17/lib/sass/plugin/merb.rb | 49 - .../gems/haml-2.2.17/lib/sass/plugin/rack.rb | 65 - .../gems/haml-2.2.17/lib/sass/plugin/rails.rb | 24 - .../1.9.1/gems/haml-2.2.17/lib/sass/repl.rb | 58 - .../1.9.1/gems/haml-2.2.17/lib/sass/script.rb | 59 - .../gems/haml-2.2.17/lib/sass/script/bool.rb | 17 - .../gems/haml-2.2.17/lib/sass/script/color.rb | 220 - .../haml-2.2.17/lib/sass/script/funcall.rb | 50 - .../haml-2.2.17/lib/sass/script/functions.rb | 257 - .../gems/haml-2.2.17/lib/sass/script/lexer.rb | 191 - .../haml-2.2.17/lib/sass/script/literal.rb | 177 - .../gems/haml-2.2.17/lib/sass/script/node.rb | 14 - .../haml-2.2.17/lib/sass/script/number.rb | 381 -- .../haml-2.2.17/lib/sass/script/operation.rb | 45 - .../haml-2.2.17/lib/sass/script/parser.rb | 222 - .../haml-2.2.17/lib/sass/script/string.rb | 12 - .../lib/sass/script/unary_operation.rb | 34 - .../haml-2.2.17/lib/sass/script/variable.rb | 31 - .../haml-2.2.17/lib/sass/tree/comment_node.rb | 84 - .../haml-2.2.17/lib/sass/tree/debug_node.rb | 30 - .../lib/sass/tree/directive_node.rb | 68 - .../haml-2.2.17/lib/sass/tree/for_node.rb | 48 - .../gems/haml-2.2.17/lib/sass/tree/if_node.rb | 54 - .../haml-2.2.17/lib/sass/tree/import_node.rb | 65 - .../lib/sass/tree/mixin_def_node.rb | 29 - .../haml-2.2.17/lib/sass/tree/mixin_node.rb | 48 - .../gems/haml-2.2.17/lib/sass/tree/node.rb | 251 - .../haml-2.2.17/lib/sass/tree/prop_node.rb | 121 - .../haml-2.2.17/lib/sass/tree/rule_node.rb | 223 - .../lib/sass/tree/variable_node.rb | 34 - .../haml-2.2.17/lib/sass/tree/while_node.rb | 31 - .../ruby/1.9.1/gems/haml-2.2.17/rails/init.rb | 1 - .../1.9.1/gems/haml-2.2.17/test/benchmark.rb | 99 - .../gems/haml-2.2.17/test/haml/engine_test.rb | 1251 ----- .../gems/haml-2.2.17/test/haml/helper_test.rb | 282 -- .../haml-2.2.17/test/haml/html2haml_test.rb | 152 - .../test/haml/markaby/standard.mab | 52 - .../haml-2.2.17/test/haml/mocks/article.rb | 6 - .../haml/results/content_for_layout.xhtml | 12 - .../test/haml/results/eval_suppressed.xhtml | 9 - .../test/haml/results/filters.xhtml | 62 - .../test/haml/results/helpers.xhtml | 93 - .../test/haml/results/helpful.xhtml | 10 - .../test/haml/results/just_stuff.xhtml | 68 - .../haml-2.2.17/test/haml/results/list.xhtml | 12 - .../haml/results/nuke_inner_whitespace.xhtml | 40 - .../haml/results/nuke_outer_whitespace.xhtml | 148 - .../test/haml/results/original_engine.xhtml | 20 - .../test/haml/results/partial_layout.xhtml | 5 - .../test/haml/results/partials.xhtml | 21 - .../test/haml/results/render_layout.xhtml | 3 - .../test/haml/results/silent_script.xhtml | 74 - .../test/haml/results/standard.xhtml | 162 - .../test/haml/results/tag_parsing.xhtml | 23 - .../test/haml/results/very_basic.xhtml | 5 - .../haml/results/whitespace_handling.xhtml | 89 - .../test/haml/rhtml/_av_partial_1.rhtml | 12 - .../test/haml/rhtml/_av_partial_2.rhtml | 8 - .../test/haml/rhtml/action_view.rhtml | 62 - .../test/haml/rhtml/standard.rhtml | 54 - .../gems/haml-2.2.17/test/haml/spec/README.md | 97 - .../test/haml/spec/lua_haml_spec.lua | 30 - .../test/haml/spec/ruby_haml_test.rb | 19 - .../haml-2.2.17/test/haml/spec/tests.json | 488 -- .../haml-2.2.17/test/haml/template_test.rb | 296 -- .../test/haml/templates/_av_partial_1.haml | 9 - .../haml/templates/_av_partial_1_ugly.haml | 9 - .../test/haml/templates/_av_partial_2.haml | 5 - .../haml/templates/_av_partial_2_ugly.haml | 5 - .../test/haml/templates/_layout.erb | 3 - .../haml/templates/_layout_for_partial.haml | 3 - .../test/haml/templates/_partial.haml | 8 - .../test/haml/templates/_text_area.haml | 3 - .../test/haml/templates/action_view.haml | 47 - .../test/haml/templates/action_view_ugly.haml | 47 - .../test/haml/templates/breakage.haml | 8 - .../haml/templates/content_for_layout.haml | 8 - .../test/haml/templates/eval_suppressed.haml | 11 - .../test/haml/templates/filters.haml | 66 - .../test/haml/templates/helpers.haml | 95 - .../test/haml/templates/helpful.haml | 11 - .../test/haml/templates/just_stuff.haml | 83 - .../haml-2.2.17/test/haml/templates/list.haml | 12 - .../haml/templates/nuke_inner_whitespace.haml | 32 - .../haml/templates/nuke_outer_whitespace.haml | 144 - .../test/haml/templates/original_engine.haml | 17 - .../test/haml/templates/partial_layout.haml | 3 - .../test/haml/templates/partialize.haml | 1 - .../test/haml/templates/partials.haml | 12 - .../test/haml/templates/render_layout.haml | 2 - .../test/haml/templates/silent_script.haml | 40 - .../test/haml/templates/standard.haml | 42 - .../test/haml/templates/standard_ugly.haml | 42 - .../test/haml/templates/tag_parsing.haml | 21 - .../test/haml/templates/very_basic.haml | 4 - .../haml/templates/whitespace_handling.haml | 87 - .../gems/haml-2.2.17/test/haml/util_test.rb | 107 - .../gems/haml-2.2.17/test/linked_rails.rb | 21 - .../haml-2.2.17/test/sass/css2sass_test.rb | 251 - .../gems/haml-2.2.17/test/sass/engine_test.rb | 939 ---- .../haml-2.2.17/test/sass/functions_test.rb | 173 - .../test/sass/more_results/more1.css | 9 - .../more_results/more1_with_line_comments.css | 26 - .../test/sass/more_results/more_import.css | 29 - .../sass/more_templates/_more_partial.sass | 2 - .../test/sass/more_templates/more1.sass | 23 - .../test/sass/more_templates/more_import.sass | 11 - .../gems/haml-2.2.17/test/sass/plugin_test.rb | 232 - .../haml-2.2.17/test/sass/results/alt.css | 4 - .../haml-2.2.17/test/sass/results/basic.css | 9 - .../haml-2.2.17/test/sass/results/compact.css | 5 - .../haml-2.2.17/test/sass/results/complex.css | 87 - .../test/sass/results/compressed.css | 1 - .../test/sass/results/expanded.css | 19 - .../haml-2.2.17/test/sass/results/import.css | 29 - .../test/sass/results/line_numbers.css | 49 - .../haml-2.2.17/test/sass/results/mixins.css | 95 - .../test/sass/results/multiline.css | 24 - .../haml-2.2.17/test/sass/results/nested.css | 22 - .../test/sass/results/parent_ref.css | 13 - .../haml-2.2.17/test/sass/results/script.css | 16 - .../subdir/nested_subdir/nested_subdir.css | 1 - .../test/sass/results/subdir/subdir.css | 3 - .../haml-2.2.17/test/sass/results/units.css | 11 - .../gems/haml-2.2.17/test/sass/script_test.rb | 267 -- .../test/sass/templates/_partial.sass | 2 - .../haml-2.2.17/test/sass/templates/alt.sass | 16 - .../test/sass/templates/basic.sass | 23 - .../haml-2.2.17/test/sass/templates/bork.sass | 2 - .../test/sass/templates/bork2.sass | 2 - .../test/sass/templates/compact.sass | 17 - .../test/sass/templates/complex.sass | 307 -- .../test/sass/templates/compressed.sass | 15 - .../test/sass/templates/expanded.sass | 17 - .../test/sass/templates/import.sass | 11 - .../test/sass/templates/importee.sass | 19 - .../test/sass/templates/line_numbers.sass | 13 - .../test/sass/templates/mixins.sass | 76 - .../test/sass/templates/multiline.sass | 20 - .../test/sass/templates/nested.sass | 25 - .../test/sass/templates/parent_ref.sass | 25 - .../test/sass/templates/script.sass | 101 - .../subdir/nested_subdir/_nested_partial.sass | 2 - .../subdir/nested_subdir/nested_subdir.sass | 3 - .../test/sass/templates/subdir/subdir.sass | 6 - .../test/sass/templates/units.sass | 11 - .../gems/haml-2.2.17/test/test_helper.rb | 35 - .../ruby/1.9.1/gems/highline-1.5.1/CHANGELOG | 222 - .../ruby/1.9.1/gems/highline-1.5.1/INSTALL | 35 - .../ruby/1.9.1/gems/highline-1.5.1/LICENSE | 7 - .../ruby/1.9.1/gems/highline-1.5.1/README | 63 - .../ruby/1.9.1/gems/highline-1.5.1/Rakefile | 82 - .../gems/ruby/1.9.1/gems/highline-1.5.1/TODO | 6 - .../highline-1.5.1/examples/ansi_colors.rb | 38 - .../examples/asking_for_arrays.rb | 18 - .../highline-1.5.1/examples/basic_usage.rb | 75 - .../highline-1.5.1/examples/color_scheme.rb | 32 - .../gems/highline-1.5.1/examples/limit.rb | 12 - .../gems/highline-1.5.1/examples/menus.rb | 65 - .../gems/highline-1.5.1/examples/overwrite.rb | 19 - .../highline-1.5.1/examples/page_and_wrap.rb | 322 -- .../gems/highline-1.5.1/examples/password.rb | 7 - .../highline-1.5.1/examples/trapping_eof.rb | 22 - .../highline-1.5.1/examples/using_readline.rb | 17 - .../1.9.1/gems/highline-1.5.1/lib/highline.rb | 758 --- .../lib/highline/color_scheme.rb | 120 - .../lib/highline/compatibility.rb | 17 - .../highline-1.5.1/lib/highline/import.rb | 43 - .../gems/highline-1.5.1/lib/highline/menu.rb | 395 -- .../highline-1.5.1/lib/highline/question.rb | 463 -- .../lib/highline/system_extensions.rb | 193 - .../ruby/1.9.1/gems/highline-1.5.1/setup.rb | 1360 ------ .../highline-1.5.1/test/tc_color_scheme.rb | 56 - .../gems/highline-1.5.1/test/tc_highline.rb | 823 ---- .../gems/highline-1.5.1/test/tc_import.rb | 54 - .../1.9.1/gems/highline-1.5.1/test/tc_menu.rb | 429 -- .../1.9.1/gems/highline-1.5.1/test/ts_all.rb | 15 - .../httpclient-2.1.5.2/lib/http-access2.rb | 53 - .../lib/http-access2/cookie.rb | 1 - .../lib/http-access2/http.rb | 1 - .../gems/httpclient-2.1.5.2/lib/httpclient.rb | 1020 ---- .../httpclient-2.1.5.2/lib/httpclient/auth.rb | 522 -- .../lib/httpclient/cacert.p7s | 1579 ------- .../lib/httpclient/cacert_sha1.p7s | 1579 ------- .../lib/httpclient/connection.rb | 84 - .../lib/httpclient/cookie.rb | 562 --- .../httpclient-2.1.5.2/lib/httpclient/http.rb | 867 ---- .../lib/httpclient/session.rb | 863 ---- .../lib/httpclient/ssl_config.rb | 417 -- .../lib/httpclient/timeout.rb | 136 - .../httpclient-2.1.5.2/lib/httpclient/util.rb | 86 - .../1.9.1/gems/httpclient-2.1.5.2/lib/tags | 908 ---- .../ruby/1.9.1/gems/json-1.2.0/.require_paths | 4 - .../gems/ruby/1.9.1/gems/json-1.2.0/CHANGES | 136 - .../gems/ruby/1.9.1/gems/json-1.2.0/COPYING | 58 - .../gems/ruby/1.9.1/gems/json-1.2.0/GPL | 340 -- .../gems/ruby/1.9.1/gems/json-1.2.0/README | 360 -- .../gems/ruby/1.9.1/gems/json-1.2.0/Rakefile | 287 -- .../gems/ruby/1.9.1/gems/json-1.2.0/TODO | 1 - .../gems/ruby/1.9.1/gems/json-1.2.0/VERSION | 1 - .../GeneratorBenchmarkComparison.log | 52 - ...markExt#generator_fast-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkExt#generator_fast.dat | 1001 ---- ...rkExt#generator_pretty-autocorrelation.dat | 900 ---- ...GeneratorBenchmarkExt#generator_pretty.dat | 901 ---- ...markExt#generator_safe-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkExt#generator_safe.dat | 1001 ---- .../GeneratorBenchmarkExt.log | 261 - ...arkPure#generator_fast-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkPure#generator_fast.dat | 1001 ---- ...kPure#generator_pretty-autocorrelation.dat | 1000 ---- ...eneratorBenchmarkPure#generator_pretty.dat | 1001 ---- ...arkPure#generator_safe-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkPure#generator_safe.dat | 1001 ---- .../GeneratorBenchmarkPure.log | 262 -- ...nchmarkRails#generator-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkRails#generator.dat | 1001 ---- .../GeneratorBenchmarkRails.log | 82 - .../ParserBenchmarkComparison.log | 34 - ...serBenchmarkExt#parser-autocorrelation.dat | 900 ---- .../ParserBenchmarkExt#parser.dat | 901 ---- .../ParserBenchmarkExt.log | 81 - ...erBenchmarkPure#parser-autocorrelation.dat | 1000 ---- .../ParserBenchmarkPure#parser.dat | 1001 ---- .../ParserBenchmarkPure.log | 82 - ...rBenchmarkRails#parser-autocorrelation.dat | 1000 ---- .../ParserBenchmarkRails#parser.dat | 1001 ---- .../ParserBenchmarkRails.log | 82 - ...erBenchmarkYAML#parser-autocorrelation.dat | 1000 ---- .../ParserBenchmarkYAML#parser.dat | 1001 ---- .../ParserBenchmarkYAML.log | 82 - .../benchmarks/generator_benchmark.rb | 165 - .../json-1.2.0/benchmarks/parser_benchmark.rb | 197 - .../1.9.1/gems/json-1.2.0/bin/edit_json.rb | 9 - .../gems/json-1.2.0/bin/prettify_json.rb | 75 - .../1.9.1/gems/json-1.2.0/data/example.json | 1 - .../1.9.1/gems/json-1.2.0/data/index.html | 38 - .../1.9.1/gems/json-1.2.0/data/prototype.js | 4184 ----------------- .../json-1.2.0/ext/json/ext/generator.bundle | Bin 36232 -> 0 bytes .../ext/json/ext/generator/Makefile | 181 - .../ext/json/ext/generator/extconf.rb | 11 - .../ext/json/ext/generator/generator.bundle | Bin 36232 -> 0 bytes .../ext/json/ext/generator/generator.c | 935 ---- .../ext/json/ext/generator/generator.o | Bin 59464 -> 0 bytes .../ext/json/ext/generator/mkmf.log | 32 - .../ext/json/ext/generator/unicode.c | 180 - .../ext/json/ext/generator/unicode.h | 53 - .../ext/json/ext/generator/unicode.o | Bin 8584 -> 0 bytes .../json-1.2.0/ext/json/ext/parser.bundle | Bin 28784 -> 0 bytes .../json-1.2.0/ext/json/ext/parser/Makefile | 181 - .../json-1.2.0/ext/json/ext/parser/extconf.rb | 11 - .../json-1.2.0/ext/json/ext/parser/mkmf.log | 33 - .../ext/json/ext/parser/parser.bundle | Bin 28784 -> 0 bytes .../json-1.2.0/ext/json/ext/parser/parser.c | 1880 -------- .../json-1.2.0/ext/json/ext/parser/parser.o | Bin 45224 -> 0 bytes .../json-1.2.0/ext/json/ext/parser/parser.rl | 737 --- .../json-1.2.0/ext/json/ext/parser/unicode.c | 154 - .../json-1.2.0/ext/json/ext/parser/unicode.h | 58 - .../json-1.2.0/ext/json/ext/parser/unicode.o | Bin 6416 -> 0 bytes .../ruby/1.9.1/gems/json-1.2.0/install.rb | 26 - .../ruby/1.9.1/gems/json-1.2.0/lib/json.rb | 10 - .../1.9.1/gems/json-1.2.0/lib/json/Array.xpm | 21 - .../gems/json-1.2.0/lib/json/FalseClass.xpm | 21 - .../1.9.1/gems/json-1.2.0/lib/json/Hash.xpm | 21 - .../1.9.1/gems/json-1.2.0/lib/json/Key.xpm | 73 - .../gems/json-1.2.0/lib/json/NilClass.xpm | 21 - .../gems/json-1.2.0/lib/json/Numeric.xpm | 28 - .../1.9.1/gems/json-1.2.0/lib/json/String.xpm | 96 - .../gems/json-1.2.0/lib/json/TrueClass.xpm | 21 - .../gems/json-1.2.0/lib/json/add/core.rb | 135 - .../gems/json-1.2.0/lib/json/add/rails.rb | 58 - .../1.9.1/gems/json-1.2.0/lib/json/common.rb | 371 -- .../1.9.1/gems/json-1.2.0/lib/json/editor.rb | 1371 ------ .../1.9.1/gems/json-1.2.0/lib/json/ext.rb | 15 - .../1.9.1/gems/json-1.2.0/lib/json/json.xpm | 1499 ------ .../1.9.1/gems/json-1.2.0/lib/json/pure.rb | 77 - .../json-1.2.0/lib/json/pure/generator.rb | 443 -- .../gems/json-1.2.0/lib/json/pure/parser.rb | 303 -- .../1.9.1/gems/json-1.2.0/lib/json/version.rb | 8 - .../gems/json-1.2.0/tests/fixtures/fail1.json | 1 - .../json-1.2.0/tests/fixtures/fail10.json | 1 - .../json-1.2.0/tests/fixtures/fail11.json | 1 - .../json-1.2.0/tests/fixtures/fail12.json | 1 - .../json-1.2.0/tests/fixtures/fail13.json | 1 - .../json-1.2.0/tests/fixtures/fail14.json | 1 - .../json-1.2.0/tests/fixtures/fail18.json | 1 - .../json-1.2.0/tests/fixtures/fail19.json | 1 - .../gems/json-1.2.0/tests/fixtures/fail2.json | 1 - .../json-1.2.0/tests/fixtures/fail20.json | 1 - .../json-1.2.0/tests/fixtures/fail21.json | 1 - .../json-1.2.0/tests/fixtures/fail22.json | 1 - .../json-1.2.0/tests/fixtures/fail23.json | 1 - .../json-1.2.0/tests/fixtures/fail24.json | 1 - .../json-1.2.0/tests/fixtures/fail25.json | 1 - .../json-1.2.0/tests/fixtures/fail27.json | 2 - .../json-1.2.0/tests/fixtures/fail28.json | 2 - .../gems/json-1.2.0/tests/fixtures/fail3.json | 1 - .../gems/json-1.2.0/tests/fixtures/fail4.json | 1 - .../gems/json-1.2.0/tests/fixtures/fail5.json | 1 - .../gems/json-1.2.0/tests/fixtures/fail6.json | 1 - .../gems/json-1.2.0/tests/fixtures/fail7.json | 1 - .../gems/json-1.2.0/tests/fixtures/fail8.json | 1 - .../gems/json-1.2.0/tests/fixtures/fail9.json | 1 - .../gems/json-1.2.0/tests/fixtures/pass1.json | 56 - .../json-1.2.0/tests/fixtures/pass15.json | 1 - .../json-1.2.0/tests/fixtures/pass16.json | 1 - .../json-1.2.0/tests/fixtures/pass17.json | 1 - .../gems/json-1.2.0/tests/fixtures/pass2.json | 1 - .../json-1.2.0/tests/fixtures/pass26.json | 1 - .../gems/json-1.2.0/tests/fixtures/pass3.json | 6 - .../1.9.1/gems/json-1.2.0/tests/test_json.rb | 320 -- .../json-1.2.0/tests/test_json_addition.rb | 164 - .../json-1.2.0/tests/test_json_encoding.rb | 67 - .../json-1.2.0/tests/test_json_fixtures.rb | 34 - .../json-1.2.0/tests/test_json_generate.rb | 120 - .../gems/json-1.2.0/tests/test_json_rails.rb | 146 - .../json-1.2.0/tests/test_json_unicode.rb | 62 - .../ruby/1.9.1/gems/json-1.2.0/tools/fuzz.rb | 139 - .../1.9.1/gems/json-1.2.0/tools/server.rb | 61 - .../ruby/1.9.1/gems/json_pure-1.2.0/CHANGES | 136 - .../ruby/1.9.1/gems/json_pure-1.2.0/COPYING | 58 - .../gems/ruby/1.9.1/gems/json_pure-1.2.0/GPL | 340 -- .../ruby/1.9.1/gems/json_pure-1.2.0/README | 360 -- .../ruby/1.9.1/gems/json_pure-1.2.0/Rakefile | 287 -- .../gems/ruby/1.9.1/gems/json_pure-1.2.0/TODO | 1 - .../ruby/1.9.1/gems/json_pure-1.2.0/VERSION | 1 - .../GeneratorBenchmarkComparison.log | 52 - ...markExt#generator_fast-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkExt#generator_fast.dat | 1001 ---- ...rkExt#generator_pretty-autocorrelation.dat | 900 ---- ...GeneratorBenchmarkExt#generator_pretty.dat | 901 ---- ...markExt#generator_safe-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkExt#generator_safe.dat | 1001 ---- .../GeneratorBenchmarkExt.log | 261 - ...arkPure#generator_fast-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkPure#generator_fast.dat | 1001 ---- ...kPure#generator_pretty-autocorrelation.dat | 1000 ---- ...eneratorBenchmarkPure#generator_pretty.dat | 1001 ---- ...arkPure#generator_safe-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkPure#generator_safe.dat | 1001 ---- .../GeneratorBenchmarkPure.log | 262 -- ...nchmarkRails#generator-autocorrelation.dat | 1000 ---- .../GeneratorBenchmarkRails#generator.dat | 1001 ---- .../GeneratorBenchmarkRails.log | 82 - .../ParserBenchmarkComparison.log | 34 - ...serBenchmarkExt#parser-autocorrelation.dat | 900 ---- .../ParserBenchmarkExt#parser.dat | 901 ---- .../ParserBenchmarkExt.log | 81 - ...erBenchmarkPure#parser-autocorrelation.dat | 1000 ---- .../ParserBenchmarkPure#parser.dat | 1001 ---- .../ParserBenchmarkPure.log | 82 - ...rBenchmarkRails#parser-autocorrelation.dat | 1000 ---- .../ParserBenchmarkRails#parser.dat | 1001 ---- .../ParserBenchmarkRails.log | 82 - ...erBenchmarkYAML#parser-autocorrelation.dat | 1000 ---- .../ParserBenchmarkYAML#parser.dat | 1001 ---- .../ParserBenchmarkYAML.log | 82 - .../benchmarks/generator_benchmark.rb | 165 - .../benchmarks/parser_benchmark.rb | 197 - .../gems/json_pure-1.2.0/bin/edit_json.rb | 9 - .../gems/json_pure-1.2.0/bin/prettify_json.rb | 75 - .../gems/json_pure-1.2.0/data/example.json | 1 - .../gems/json_pure-1.2.0/data/index.html | 38 - .../gems/json_pure-1.2.0/data/prototype.js | 4184 ----------------- .../ext/json/ext/generator/extconf.rb | 11 - .../ext/json/ext/generator/generator.c | 935 ---- .../ext/json/ext/generator/unicode.c | 180 - .../ext/json/ext/generator/unicode.h | 53 - .../ext/json/ext/parser/extconf.rb | 11 - .../ext/json/ext/parser/parser.c | 1880 -------- .../ext/json/ext/parser/parser.rl | 737 --- .../ext/json/ext/parser/unicode.c | 154 - .../ext/json/ext/parser/unicode.h | 58 - .../1.9.1/gems/json_pure-1.2.0/install.rb | 26 - .../1.9.1/gems/json_pure-1.2.0/lib/json.rb | 10 - .../gems/json_pure-1.2.0/lib/json/Array.xpm | 21 - .../json_pure-1.2.0/lib/json/FalseClass.xpm | 21 - .../gems/json_pure-1.2.0/lib/json/Hash.xpm | 21 - .../gems/json_pure-1.2.0/lib/json/Key.xpm | 73 - .../json_pure-1.2.0/lib/json/NilClass.xpm | 21 - .../gems/json_pure-1.2.0/lib/json/Numeric.xpm | 28 - .../gems/json_pure-1.2.0/lib/json/String.xpm | 96 - .../json_pure-1.2.0/lib/json/TrueClass.xpm | 21 - .../gems/json_pure-1.2.0/lib/json/add/core.rb | 135 - .../json_pure-1.2.0/lib/json/add/rails.rb | 58 - .../gems/json_pure-1.2.0/lib/json/common.rb | 371 -- .../gems/json_pure-1.2.0/lib/json/editor.rb | 1371 ------ .../gems/json_pure-1.2.0/lib/json/ext.rb | 15 - .../gems/json_pure-1.2.0/lib/json/json.xpm | 1499 ------ .../gems/json_pure-1.2.0/lib/json/pure.rb | 77 - .../lib/json/pure/generator.rb | 443 -- .../json_pure-1.2.0/lib/json/pure/parser.rb | 303 -- .../gems/json_pure-1.2.0/lib/json/version.rb | 8 - .../json_pure-1.2.0/tests/fixtures/fail1.json | 1 - .../tests/fixtures/fail10.json | 1 - .../tests/fixtures/fail11.json | 1 - .../tests/fixtures/fail12.json | 1 - .../tests/fixtures/fail13.json | 1 - .../tests/fixtures/fail14.json | 1 - .../tests/fixtures/fail18.json | 1 - .../tests/fixtures/fail19.json | 1 - .../json_pure-1.2.0/tests/fixtures/fail2.json | 1 - .../tests/fixtures/fail20.json | 1 - .../tests/fixtures/fail21.json | 1 - .../tests/fixtures/fail22.json | 1 - .../tests/fixtures/fail23.json | 1 - .../tests/fixtures/fail24.json | 1 - .../tests/fixtures/fail25.json | 1 - .../tests/fixtures/fail27.json | 2 - .../tests/fixtures/fail28.json | 2 - .../json_pure-1.2.0/tests/fixtures/fail3.json | 1 - .../json_pure-1.2.0/tests/fixtures/fail4.json | 1 - .../json_pure-1.2.0/tests/fixtures/fail5.json | 1 - .../json_pure-1.2.0/tests/fixtures/fail6.json | 1 - .../json_pure-1.2.0/tests/fixtures/fail7.json | 1 - .../json_pure-1.2.0/tests/fixtures/fail8.json | 1 - .../json_pure-1.2.0/tests/fixtures/fail9.json | 1 - .../json_pure-1.2.0/tests/fixtures/pass1.json | 56 - .../tests/fixtures/pass15.json | 1 - .../tests/fixtures/pass16.json | 1 - .../tests/fixtures/pass17.json | 1 - .../json_pure-1.2.0/tests/fixtures/pass2.json | 1 - .../tests/fixtures/pass26.json | 1 - .../json_pure-1.2.0/tests/fixtures/pass3.json | 6 - .../gems/json_pure-1.2.0/tests/test_json.rb | 320 -- .../tests/test_json_addition.rb | 164 - .../tests/test_json_encoding.rb | 67 - .../tests/test_json_fixtures.rb | 34 - .../tests/test_json_generate.rb | 120 - .../json_pure-1.2.0/tests/test_json_rails.rb | 146 - .../tests/test_json_unicode.rb | 62 - .../1.9.1/gems/json_pure-1.2.0/tools/fuzz.rb | 139 - .../gems/json_pure-1.2.0/tools/server.rb | 61 - .../ruby/1.9.1/gems/launchy-0.3.5/HISTORY | 62 - .../ruby/1.9.1/gems/launchy-0.3.5/LICENSE | 16 - .../gems/ruby/1.9.1/gems/launchy-0.3.5/README | 53 - .../ruby/1.9.1/gems/launchy-0.3.5/Rakefile | 62 - .../ruby/1.9.1/gems/launchy-0.3.5/bin/launchy | 12 - .../ruby/1.9.1/gems/launchy-0.3.5/gemspec.rb | 41 - .../1.9.1/gems/launchy-0.3.5/lib/launchy.rb | 53 - .../launchy-0.3.5/lib/launchy/application.rb | 174 - .../gems/launchy-0.3.5/lib/launchy/browser.rb | 98 - .../launchy-0.3.5/lib/launchy/command_line.rb | 48 - .../gems/launchy-0.3.5/lib/launchy/paths.rb | 53 - .../gems/launchy-0.3.5/lib/launchy/version.rb | 17 - .../launchy-0.3.5/spec/application_spec.rb | 62 - .../gems/launchy-0.3.5/spec/browser_spec.rb | 58 - .../gems/launchy-0.3.5/spec/launchy_spec.rb | 18 - .../gems/launchy-0.3.5/spec/paths_spec.rb | 15 - .../gems/launchy-0.3.5/spec/spec_helper.rb | 5 - .../launchy-0.3.5/spec/tattle-host-os.yml | 427 -- .../gems/launchy-0.3.5/spec/version_spec.rb | 11 - .../gems/launchy-0.3.5/tasks/announce.rake | 39 - .../1.9.1/gems/launchy-0.3.5/tasks/config.rb | 107 - .../launchy-0.3.5/tasks/distribution.rake | 46 - .../launchy-0.3.5/tasks/documentation.rake | 32 - .../1.9.1/gems/launchy-0.3.5/tasks/rspec.rake | 29 - .../gems/launchy-0.3.5/tasks/rubyforge.rake | 52 - .../1.9.1/gems/launchy-0.3.5/tasks/utils.rb | 80 - .../gems/ruby/1.9.1/gems/rack-1.1.0/COPYING | 18 - .../ruby/1.9.1/gems/rack-1.1.0/KNOWN-ISSUES | 21 - .../gems/ruby/1.9.1/gems/rack-1.1.0/RDOX | 0 .../gems/ruby/1.9.1/gems/rack-1.1.0/README | 399 -- .../gems/ruby/1.9.1/gems/rack-1.1.0/SPEC | 171 - .../ruby/1.9.1/gems/rack-1.1.0/bin/rackup | 4 - .../gems/rack-1.1.0/contrib/rack_logo.svg | 111 - .../1.9.1/gems/rack-1.1.0/example/lobster.ru | 4 - .../rack-1.1.0/example/protectedlobster.rb | 14 - .../rack-1.1.0/example/protectedlobster.ru | 8 - .../ruby/1.9.1/gems/rack-1.1.0/lib/rack.rb | 92 - .../rack-1.1.0/lib/rack/adapter/camping.rb | 22 - .../lib/rack/auth/abstract/handler.rb | 37 - .../lib/rack/auth/abstract/request.rb | 37 - .../gems/rack-1.1.0/lib/rack/auth/basic.rb | 58 - .../rack-1.1.0/lib/rack/auth/digest/md5.rb | 124 - .../rack-1.1.0/lib/rack/auth/digest/nonce.rb | 51 - .../rack-1.1.0/lib/rack/auth/digest/params.rb | 55 - .../lib/rack/auth/digest/request.rb | 40 - .../1.9.1/gems/rack-1.1.0/lib/rack/builder.rb | 80 - .../1.9.1/gems/rack-1.1.0/lib/rack/cascade.rb | 41 - .../1.9.1/gems/rack-1.1.0/lib/rack/chunked.rb | 49 - .../gems/rack-1.1.0/lib/rack/commonlogger.rb | 49 - .../rack-1.1.0/lib/rack/conditionalget.rb | 47 - .../1.9.1/gems/rack-1.1.0/lib/rack/config.rb | 15 - .../rack-1.1.0/lib/rack/content_length.rb | 29 - .../gems/rack-1.1.0/lib/rack/content_type.rb | 23 - .../gems/rack-1.1.0/lib/rack/deflater.rb | 96 - .../gems/rack-1.1.0/lib/rack/directory.rb | 157 - .../1.9.1/gems/rack-1.1.0/lib/rack/etag.rb | 23 - .../1.9.1/gems/rack-1.1.0/lib/rack/file.rb | 90 - .../1.9.1/gems/rack-1.1.0/lib/rack/handler.rb | 88 - .../gems/rack-1.1.0/lib/rack/handler/cgi.rb | 61 - .../lib/rack/handler/evented_mongrel.rb | 8 - .../rack-1.1.0/lib/rack/handler/fastcgi.rb | 89 - .../gems/rack-1.1.0/lib/rack/handler/lsws.rb | 63 - .../rack-1.1.0/lib/rack/handler/mongrel.rb | 90 - .../gems/rack-1.1.0/lib/rack/handler/scgi.rb | 62 - .../lib/rack/handler/swiftiplied_mongrel.rb | 8 - .../gems/rack-1.1.0/lib/rack/handler/thin.rb | 18 - .../rack-1.1.0/lib/rack/handler/webrick.rb | 69 - .../1.9.1/gems/rack-1.1.0/lib/rack/head.rb | 19 - .../1.9.1/gems/rack-1.1.0/lib/rack/lint.rb | 575 --- .../1.9.1/gems/rack-1.1.0/lib/rack/lobster.rb | 65 - .../1.9.1/gems/rack-1.1.0/lib/rack/lock.rb | 16 - .../1.9.1/gems/rack-1.1.0/lib/rack/logger.rb | 20 - .../rack-1.1.0/lib/rack/methodoverride.rb | 27 - .../1.9.1/gems/rack-1.1.0/lib/rack/mime.rb | 206 - .../1.9.1/gems/rack-1.1.0/lib/rack/mock.rb | 189 - .../gems/rack-1.1.0/lib/rack/nulllogger.rb | 18 - .../gems/rack-1.1.0/lib/rack/recursive.rb | 57 - .../gems/rack-1.1.0/lib/rack/reloader.rb | 109 - .../1.9.1/gems/rack-1.1.0/lib/rack/request.rb | 271 -- .../gems/rack-1.1.0/lib/rack/response.rb | 149 - .../rack-1.1.0/lib/rack/rewindable_input.rb | 100 - .../1.9.1/gems/rack-1.1.0/lib/rack/runtime.rb | 27 - .../gems/rack-1.1.0/lib/rack/sendfile.rb | 142 - .../1.9.1/gems/rack-1.1.0/lib/rack/server.rb | 212 - .../lib/rack/session/abstract/id.rb | 140 - .../rack-1.1.0/lib/rack/session/cookie.rb | 90 - .../rack-1.1.0/lib/rack/session/memcache.rb | 119 - .../gems/rack-1.1.0/lib/rack/session/pool.rb | 100 - .../rack-1.1.0/lib/rack/showexceptions.rb | 349 -- .../gems/rack-1.1.0/lib/rack/showstatus.rb | 106 - .../1.9.1/gems/rack-1.1.0/lib/rack/static.rb | 38 - .../1.9.1/gems/rack-1.1.0/lib/rack/urlmap.rb | 56 - .../1.9.1/gems/rack-1.1.0/lib/rack/utils.rb | 620 --- .../ruby/1.9.1/gems/rack-1.1.0/rack.gemspec | 38 - .../rack-1.1.0/test/spec_rack_auth_basic.rb | 73 - .../rack-1.1.0/test/spec_rack_auth_digest.rb | 226 - .../gems/rack-1.1.0/test/spec_rack_builder.rb | 84 - .../gems/rack-1.1.0/test/spec_rack_camping.rb | 51 - .../gems/rack-1.1.0/test/spec_rack_cascade.rb | 48 - .../gems/rack-1.1.0/test/spec_rack_cgi.rb | 89 - .../gems/rack-1.1.0/test/spec_rack_chunked.rb | 62 - .../rack-1.1.0/test/spec_rack_commonlogger.rb | 61 - .../test/spec_rack_conditionalget.rb | 41 - .../gems/rack-1.1.0/test/spec_rack_config.rb | 24 - .../test/spec_rack_content_length.rb | 43 - .../rack-1.1.0/test/spec_rack_content_type.rb | 30 - .../rack-1.1.0/test/spec_rack_deflater.rb | 127 - .../rack-1.1.0/test/spec_rack_directory.rb | 61 - .../gems/rack-1.1.0/test/spec_rack_etag.rb | 17 - .../gems/rack-1.1.0/test/spec_rack_fastcgi.rb | 89 - .../gems/rack-1.1.0/test/spec_rack_file.rb | 75 - .../gems/rack-1.1.0/test/spec_rack_handler.rb | 43 - .../gems/rack-1.1.0/test/spec_rack_head.rb | 30 - .../gems/rack-1.1.0/test/spec_rack_lint.rb | 528 --- .../gems/rack-1.1.0/test/spec_rack_lobster.rb | 45 - .../gems/rack-1.1.0/test/spec_rack_lock.rb | 38 - .../gems/rack-1.1.0/test/spec_rack_logger.rb | 21 - .../test/spec_rack_methodoverride.rb | 60 - .../gems/rack-1.1.0/test/spec_rack_mock.rb | 243 - .../gems/rack-1.1.0/test/spec_rack_mongrel.rb | 189 - .../rack-1.1.0/test/spec_rack_nulllogger.rb | 13 - .../rack-1.1.0/test/spec_rack_recursive.rb | 77 - .../gems/rack-1.1.0/test/spec_rack_request.rb | 545 --- .../rack-1.1.0/test/spec_rack_response.rb | 221 - .../test/spec_rack_rewindable_input.rb | 118 - .../gems/rack-1.1.0/test/spec_rack_runtime.rb | 35 - .../rack-1.1.0/test/spec_rack_sendfile.rb | 86 - .../test/spec_rack_session_cookie.rb | 73 - .../test/spec_rack_session_memcache.rb | 273 -- .../rack-1.1.0/test/spec_rack_session_pool.rb | 172 - .../test/spec_rack_showexceptions.rb | 21 - .../rack-1.1.0/test/spec_rack_showstatus.rb | 72 - .../gems/rack-1.1.0/test/spec_rack_static.rb | 37 - .../gems/rack-1.1.0/test/spec_rack_thin.rb | 91 - .../gems/rack-1.1.0/test/spec_rack_urlmap.rb | 215 - .../gems/rack-1.1.0/test/spec_rack_utils.rb | 552 --- .../gems/rack-1.1.0/test/spec_rack_webrick.rb | 130 - .../1.9.1/gems/rack-1.1.0/test/spec_rackup.rb | 154 - .../ruby/1.9.1/gems/rack-test-0.5.3/.document | 4 - .../1.9.1/gems/rack-test-0.5.3/.gitignore | 4 - .../1.9.1/gems/rack-test-0.5.3/History.txt | 107 - .../gems/rack-test-0.5.3/MIT-LICENSE.txt | 19 - .../1.9.1/gems/rack-test-0.5.3/README.rdoc | 57 - .../ruby/1.9.1/gems/rack-test-0.5.3/Rakefile | 39 - .../ruby/1.9.1/gems/rack-test-0.5.3/Thorfile | 114 - .../rack-test-0.5.3/lib/rack/mock_session.rb | 61 - .../gems/rack-test-0.5.3/lib/rack/test.rb | 276 -- .../lib/rack/test/cookie_jar.rb | 172 - .../rack-test-0.5.3/lib/rack/test/methods.rb | 80 - .../lib/rack/test/mock_digest_request.rb | 29 - .../lib/rack/test/uploaded_file.rb | 46 - .../rack-test-0.5.3/lib/rack/test/utils.rb | 101 - .../gems/rack-test-0.5.3/rack-test.gemspec | 73 - .../rack-test-0.5.3/spec/fixtures/config.ru | 3 - .../rack-test-0.5.3/spec/fixtures/fake_app.rb | 123 - .../rack-test-0.5.3/spec/fixtures/foo.txt | 1 - .../spec/rack/test/cookie_spec.rb | 199 - .../spec/rack/test/digest_auth_spec.rb | 48 - .../spec/rack/test/multipart_spec.rb | 87 - .../spec/rack/test/utils_spec.rb | 97 - .../rack-test-0.5.3/spec/rack/test_spec.rb | 443 -- .../1.9.1/gems/rack-test-0.5.3/spec/spec.opts | 2 - .../gems/rack-test-0.5.3/spec/spec_helper.rb | 52 - .../gems/ruby/1.9.1/gems/rake-0.8.7/CHANGES | 440 -- .../ruby/1.9.1/gems/rake-0.8.7/MIT-LICENSE | 21 - .../gems/ruby/1.9.1/gems/rake-0.8.7/README | 196 - .../gems/ruby/1.9.1/gems/rake-0.8.7/Rakefile | 430 -- .../gems/ruby/1.9.1/gems/rake-0.8.7/TODO | 20 - .../gems/ruby/1.9.1/gems/rake-0.8.7/bin/rake | 31 - .../rake-0.8.7/doc/command_line_usage.rdoc | 102 - .../gems/rake-0.8.7/doc/example/Rakefile1 | 38 - .../gems/rake-0.8.7/doc/example/Rakefile2 | 35 - .../1.9.1/gems/rake-0.8.7/doc/example/a.c | 6 - .../1.9.1/gems/rake-0.8.7/doc/example/b.c | 6 - .../1.9.1/gems/rake-0.8.7/doc/example/main.c | 11 - .../1.9.1/gems/rake-0.8.7/doc/glossary.rdoc | 51 - .../ruby/1.9.1/gems/rake-0.8.7/doc/jamis.rb | 591 --- .../1.9.1/gems/rake-0.8.7/doc/proto_rake.rdoc | 127 - .../ruby/1.9.1/gems/rake-0.8.7/doc/rake.1.gz | Bin 1369 -> 0 bytes .../1.9.1/gems/rake-0.8.7/doc/rakefile.rdoc | 534 --- .../1.9.1/gems/rake-0.8.7/doc/rational.rdoc | 151 - .../doc/release_notes/rake-0.4.14.rdoc | 23 - .../doc/release_notes/rake-0.4.15.rdoc | 35 - .../doc/release_notes/rake-0.5.0.rdoc | 53 - .../doc/release_notes/rake-0.5.3.rdoc | 78 - .../doc/release_notes/rake-0.5.4.rdoc | 46 - .../doc/release_notes/rake-0.6.0.rdoc | 141 - .../doc/release_notes/rake-0.7.0.rdoc | 119 - .../doc/release_notes/rake-0.7.1.rdoc | 59 - .../doc/release_notes/rake-0.7.2.rdoc | 121 - .../doc/release_notes/rake-0.7.3.rdoc | 47 - .../doc/release_notes/rake-0.8.0.rdoc | 114 - .../doc/release_notes/rake-0.8.2.rdoc | 165 - .../doc/release_notes/rake-0.8.3.rdoc | 112 - .../doc/release_notes/rake-0.8.4.rdoc | 147 - .../doc/release_notes/rake-0.8.5.rdoc | 53 - .../doc/release_notes/rake-0.8.6.rdoc | 55 - .../doc/release_notes/rake-0.8.7.rdoc | 55 - .../ruby/1.9.1/gems/rake-0.8.7/install.rb | 88 - .../ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb | 2506 ---------- .../gems/rake-0.8.7/lib/rake/alt_system.rb | 108 - .../rake-0.8.7/lib/rake/classic_namespace.rb | 8 - .../1.9.1/gems/rake-0.8.7/lib/rake/clean.rb | 33 - .../lib/rake/contrib/compositepublisher.rb | 24 - .../rake-0.8.7/lib/rake/contrib/ftptools.rb | 153 - .../rake-0.8.7/lib/rake/contrib/publisher.rb | 75 - .../lib/rake/contrib/rubyforgepublisher.rb | 18 - .../lib/rake/contrib/sshpublisher.rb | 47 - .../gems/rake-0.8.7/lib/rake/contrib/sys.rb | 209 - .../rake-0.8.7/lib/rake/gempackagetask.rb | 97 - .../rake-0.8.7/lib/rake/loaders/makefile.rb | 42 - .../gems/rake-0.8.7/lib/rake/packagetask.rb | 184 - .../rake-0.8.7/lib/rake/rake_test_loader.rb | 5 - .../gems/rake-0.8.7/lib/rake/rdoctask.rb | 209 - .../lib/rake/ruby182_test_unit_fix.rb | 23 - .../1.9.1/gems/rake-0.8.7/lib/rake/runtest.rb | 23 - .../1.9.1/gems/rake-0.8.7/lib/rake/tasklib.rb | 23 - .../gems/rake-0.8.7/lib/rake/testtask.rb | 161 - .../1.9.1/gems/rake-0.8.7/lib/rake/win32.rb | 55 - .../gems/rake-0.8.7/test/capture_stdout.rb | 26 - .../gems/rake-0.8.7/test/check_expansion.rb | 5 - .../rake-0.8.7/test/check_no_expansion.rb | 5 - .../gems/rake-0.8.7/test/contrib/test_sys.rb | 47 - .../gems/rake-0.8.7/test/data/chains/Rakefile | 15 - .../rake-0.8.7/test/data/default/Rakefile | 19 - .../gems/rake-0.8.7/test/data/dryrun/Rakefile | 22 - .../test/data/file_creation_task/Rakefile | 33 - .../rake-0.8.7/test/data/imports/Rakefile | 19 - .../gems/rake-0.8.7/test/data/imports/deps.mf | 1 - .../rake-0.8.7/test/data/multidesc/Rakefile | 17 - .../rake-0.8.7/test/data/namespace/Rakefile | 57 - .../rake-0.8.7/test/data/rakelib/test1.rb | 3 - .../rake-0.8.7/test/data/rbext/rakefile.rb | 3 - .../1.9.1/gems/rake-0.8.7/test/data/sample.mf | 14 - .../test/data/statusreturn/Rakefile | 8 - .../rake-0.8.7/test/data/unittest/Rakefile | 1 - .../gems/rake-0.8.7/test/filecreation.rb | 32 - .../1.9.1/gems/rake-0.8.7/test/functional.rb | 15 - .../gems/rake-0.8.7/test/in_environment.rb | 30 - .../gems/rake-0.8.7/test/rake_test_setup.rb | 24 - .../1.9.1/gems/rake-0.8.7/test/reqfile.rb | 3 - .../1.9.1/gems/rake-0.8.7/test/reqfile2.rb | 3 - .../rake-0.8.7/test/session_functional.rb | 339 -- .../gems/rake-0.8.7/test/shellcommand.rb | 3 - .../gems/rake-0.8.7/test/test_application.rb | 675 --- .../1.9.1/gems/rake-0.8.7/test/test_clean.rb | 14 - .../gems/rake-0.8.7/test/test_definitions.rb | 85 - .../gems/rake-0.8.7/test/test_earlytime.rb | 35 - .../gems/rake-0.8.7/test/test_extension.rb | 63 - .../test/test_file_creation_task.rb | 62 - .../gems/rake-0.8.7/test/test_file_task.rb | 143 - .../gems/rake-0.8.7/test/test_filelist.rb | 623 --- .../gems/rake-0.8.7/test/test_fileutils.rb | 251 - .../1.9.1/gems/rake-0.8.7/test/test_ftp.rb | 59 - .../rake-0.8.7/test/test_invocation_chain.rb | 81 - .../rake-0.8.7/test/test_makefile_loader.rb | 26 - .../gems/rake-0.8.7/test/test_multitask.rb | 45 - .../gems/rake-0.8.7/test/test_namespace.rb | 55 - .../gems/rake-0.8.7/test/test_package_task.rb | 118 - .../gems/rake-0.8.7/test/test_pathmap.rb | 210 - .../rake-0.8.7/test/test_pseudo_status.rb | 26 - .../1.9.1/gems/rake-0.8.7/test/test_rake.rb | 41 - .../gems/rake-0.8.7/test/test_rdoc_task.rb | 88 - .../gems/rake-0.8.7/test/test_require.rb | 35 - .../1.9.1/gems/rake-0.8.7/test/test_rules.rb | 349 -- .../rake-0.8.7/test/test_task_arguments.rb | 89 - .../gems/rake-0.8.7/test/test_task_manager.rb | 173 - .../gems/rake-0.8.7/test/test_tasklib.rb | 12 - .../1.9.1/gems/rake-0.8.7/test/test_tasks.rb | 374 -- .../gems/rake-0.8.7/test/test_test_task.rb | 77 - .../test/test_top_level_functions.rb | 86 - .../1.9.1/gems/rake-0.8.7/test/test_win32.rb | 72 - .../gems/ruby/1.9.1/gems/shotgun-0.5/COPYING | 18 - .../gems/ruby/1.9.1/gems/shotgun-0.5/README | 46 - .../gems/ruby/1.9.1/gems/shotgun-0.5/Rakefile | 42 - .../ruby/1.9.1/gems/shotgun-0.5/bin/shotgun | 143 - .../1.9.1/gems/shotgun-0.5/lib/shotgun.rb | 98 - .../1.9.1/gems/shotgun-0.5/shotgun.gemspec | 33 - .../ruby/1.9.1/gems/sinatra-0.9.4/AUTHORS | 41 - .../ruby/1.9.1/gems/sinatra-0.9.4/CHANGES | 385 -- .../ruby/1.9.1/gems/sinatra-0.9.4/LICENSE | 22 - .../ruby/1.9.1/gems/sinatra-0.9.4/README.rdoc | 573 --- .../ruby/1.9.1/gems/sinatra-0.9.4/Rakefile | 138 - .../gems/sinatra-0.9.4/compat/app_test.rb | 282 -- .../sinatra-0.9.4/compat/application_test.rb | 262 -- .../gems/sinatra-0.9.4/compat/builder_test.rb | 101 - .../gems/sinatra-0.9.4/compat/compat_test.rb | 12 - .../sinatra-0.9.4/compat/custom_error_test.rb | 62 - .../gems/sinatra-0.9.4/compat/erb_test.rb | 136 - .../gems/sinatra-0.9.4/compat/events_test.rb | 78 - .../gems/sinatra-0.9.4/compat/filter_test.rb | 30 - .../gems/sinatra-0.9.4/compat/haml_test.rb | 236 - .../1.9.1/gems/sinatra-0.9.4/compat/helper.rb | 33 - .../sinatra-0.9.4/compat/mapped_error_test.rb | 72 - .../sinatra-0.9.4/compat/pipeline_test.rb | 45 - .../gems/sinatra-0.9.4/compat/public/foo.xml | 1 - .../gems/sinatra-0.9.4/compat/sass_test.rb | 67 - .../sinatra-0.9.4/compat/sessions_test.rb | 42 - .../sinatra-0.9.4/compat/streaming_test.rb | 133 - .../sinatra-0.9.4/compat/sym_params_test.rb | 19 - .../sinatra-0.9.4/compat/template_test.rb | 30 - .../compat/use_in_file_templates_test.rb | 47 - .../sinatra-0.9.4/compat/views/foo.builder | 1 - .../gems/sinatra-0.9.4/compat/views/foo.erb | 1 - .../gems/sinatra-0.9.4/compat/views/foo.haml | 1 - .../gems/sinatra-0.9.4/compat/views/foo.sass | 2 - .../sinatra-0.9.4/compat/views/foo_layout.erb | 2 - .../compat/views/foo_layout.haml | 2 - .../compat/views/layout_test/foo.builder | 1 - .../compat/views/layout_test/foo.erb | 1 - .../compat/views/layout_test/foo.haml | 1 - .../compat/views/layout_test/foo.sass | 2 - .../compat/views/layout_test/layout.builder | 3 - .../compat/views/layout_test/layout.erb | 1 - .../compat/views/layout_test/layout.haml | 1 - .../compat/views/layout_test/layout.sass | 2 - .../compat/views/no_layout/no_layout.builder | 1 - .../compat/views/no_layout/no_layout.haml | 1 - .../1.9.1/gems/sinatra-0.9.4/lib/sinatra.rb | 8 - .../gems/sinatra-0.9.4/lib/sinatra/base.rb | 1119 ----- .../gems/sinatra-0.9.4/lib/sinatra/compat.rb | 266 -- .../sinatra-0.9.4/lib/sinatra/images/404.png | Bin 23305 -> 0 bytes .../sinatra-0.9.4/lib/sinatra/images/500.png | Bin 31056 -> 0 bytes .../gems/sinatra-0.9.4/lib/sinatra/main.rb | 35 - .../lib/sinatra/showexceptions.rb | 303 -- .../gems/sinatra-0.9.4/lib/sinatra/test.rb | 128 - .../sinatra-0.9.4/lib/sinatra/test/bacon.rb | 19 - .../sinatra-0.9.4/lib/sinatra/test/rspec.rb | 13 - .../sinatra-0.9.4/lib/sinatra/test/spec.rb | 11 - .../sinatra-0.9.4/lib/sinatra/test/unit.rb | 13 - .../1.9.1/gems/sinatra-0.9.4/sinatra.gemspec | 125 - .../gems/sinatra-0.9.4/test/base_test.rb | 160 - .../gems/sinatra-0.9.4/test/builder_test.rb | 65 - .../1.9.1/gems/sinatra-0.9.4/test/contest.rb | 64 - .../test/data/reload_app_file.rb | 3 - .../1.9.1/gems/sinatra-0.9.4/test/erb_test.rb | 81 - .../sinatra-0.9.4/test/extensions_test.rb | 100 - .../gems/sinatra-0.9.4/test/filter_test.rb | 99 - .../gems/sinatra-0.9.4/test/haml_test.rb | 90 - .../1.9.1/gems/sinatra-0.9.4/test/helper.rb | 76 - .../gems/sinatra-0.9.4/test/helpers_test.rb | 503 -- .../sinatra-0.9.4/test/mapped_error_test.rb | 155 - .../sinatra-0.9.4/test/middleware_test.rb | 68 - .../gems/sinatra-0.9.4/test/options_test.rb | 372 -- .../test/render_backtrace_test.rb | 145 - .../gems/sinatra-0.9.4/test/request_test.rb | 18 - .../gems/sinatra-0.9.4/test/response_test.rb | 42 - .../gems/sinatra-0.9.4/test/result_test.rb | 98 - .../test/route_added_hook_test.rb | 59 - .../gems/sinatra-0.9.4/test/routing_test.rb | 784 --- .../gems/sinatra-0.9.4/test/sass_test.rb | 79 - .../gems/sinatra-0.9.4/test/server_test.rb | 47 - .../gems/sinatra-0.9.4/test/sinatra_test.rb | 13 - .../gems/sinatra-0.9.4/test/static_test.rb | 80 - .../gems/sinatra-0.9.4/test/templates_test.rb | 122 - .../gems/sinatra-0.9.4/test/test_test.rb | 152 - .../sinatra-0.9.4/test/views/error.builder | 3 - .../gems/sinatra-0.9.4/test/views/error.erb | 3 - .../gems/sinatra-0.9.4/test/views/error.haml | 3 - .../gems/sinatra-0.9.4/test/views/error.sass | 2 - .../sinatra-0.9.4/test/views/foo/hello.test | 1 - .../sinatra-0.9.4/test/views/hello.builder | 1 - .../gems/sinatra-0.9.4/test/views/hello.erb | 1 - .../gems/sinatra-0.9.4/test/views/hello.haml | 1 - .../gems/sinatra-0.9.4/test/views/hello.sass | 2 - .../gems/sinatra-0.9.4/test/views/hello.test | 1 - .../sinatra-0.9.4/test/views/layout2.builder | 3 - .../gems/sinatra-0.9.4/test/views/layout2.erb | 2 - .../sinatra-0.9.4/test/views/layout2.haml | 2 - .../sinatra-0.9.4/test/views/layout2.test | 1 - .../gems/sinatra-content-for-0.2/.gitignore | 3 - .../gems/sinatra-content-for-0.2/LICENSE | 22 - .../gems/sinatra-content-for-0.2/README.rdoc | 41 - .../lib/sinatra/content_for.rb | 58 - .../sinatra-content-for.gemspec | 34 - .../test/content_for_test.rb | 156 - .../ruby/1.9.1/gems/smusher-0.4.2/.gitignore | 2 - .../1.9.1/gems/smusher-0.4.2/README.markdown | 59 - .../ruby/1.9.1/gems/smusher-0.4.2/Rakefile | 20 - .../ruby/1.9.1/gems/smusher-0.4.2/VERSION | 1 - .../ruby/1.9.1/gems/smusher-0.4.2/bin/smusher | 35 - .../1.9.1/gems/smusher-0.4.2/lib/smusher.rb | 97 - .../smusher-0.4.2/lib/smusher/puny_png.rb | 17 - .../smusher-0.4.2/lib/smusher/smush_it.rb | 22 - .../1.9.1/gems/smusher-0.4.2/smusher.gemspec | 78 - .../gems/smusher-0.4.2/spec/empty/.gitignore | 0 .../gems/smusher-0.4.2/spec/images/ad.gif | Bin 371 -> 0 bytes .../gems/smusher-0.4.2/spec/images/add.png | Bin 733 -> 0 bytes .../smusher-0.4.2/spec/images/drink_empty.png | Bin 433 -> 0 bytes .../gems/smusher-0.4.2/spec/images/logo.gif | Bin 945 -> 0 bytes .../gems/smusher-0.4.2/spec/images/people.jpg | Bin 2458 -> 0 bytes .../gems/smusher-0.4.2/spec/images/water.JPG | Bin 4719 -> 0 bytes .../gems/smusher-0.4.2/spec/images/woman.jpeg | Bin 2572 -> 0 bytes .../1.9.1/gems/smusher-0.4.2/spec/out/ad.gif | Bin 371 -> 0 bytes .../gems/smusher-0.4.2/spec/out/people.jpg | Bin 2458 -> 0 bytes .../gems/smusher-0.4.2/spec/reduced/add.png | Bin 680 -> 0 bytes .../smusher-0.4.2/spec/reduced/add_puny.png | Bin 733 -> 0 bytes .../gems/smusher-0.4.2/spec/reduced/fam.png | Bin 381 -> 0 bytes .../spec/smusher/puny_png_spec.rb | 12 - .../spec/smusher/smush_it_spec.rb | 12 - .../gems/smusher-0.4.2/spec/smusher_spec.rb | 181 - .../gems/smusher-0.4.2/spec/spec_helper.rb | 8 - .../ruby/1.9.1/gems/sprockets-1.0.2/Rakefile | 19 - .../gems/sprockets-1.0.2/bin/sprocketize | 54 - .../sprockets-1.0.2/ext/nph-sprockets.cgi | 127 - .../gems/sprockets-1.0.2/lib/sprockets.rb | 42 - .../lib/sprockets/concatenation.rb | 36 - .../lib/sprockets/environment.rb | 52 - .../sprockets-1.0.2/lib/sprockets/error.rb | 5 - .../sprockets-1.0.2/lib/sprockets/pathname.rb | 37 - .../lib/sprockets/preprocessor.rb | 91 - .../lib/sprockets/secretary.rb | 106 - .../lib/sprockets/source_file.rb | 54 - .../lib/sprockets/source_line.rb | 82 - .../sprockets-1.0.2/lib/sprockets/version.rb | 9 - .../assets/images/script_with_assets/one.png | 1 - .../assets/images/script_with_assets/two.png | 1 - .../assets/stylesheets/script_with_assets.css | 1 - .../test/fixtures/constants.yml | 1 - ...be_ignored_when_strip_comments_is_false.js | 8 - ...t_requires_should_be_removed_by_default.js | 2 - ...e_comments_should_be_removed_by_default.js | 4 - ...already_been_required_should_do_nothing.js | 5 - ...at_does_not_exist_should_raise_an_error.js | 1 - ..._require_comment_with_the_file_contents.js | 3 - ...ring_the_current_file_should_do_nothing.js | 1 - .../test/fixtures/src/constants.yml | 3 - .../sprockets-1.0.2/test/fixtures/src/foo.js | 1 - .../test/fixtures/src/foo/bar.js | 4 - .../test/fixtures/src/foo/foo.js | 1 - .../test/fixtures/src/script_with_assets.js | 3 - .../test/test_concatenation.rb | 28 - .../sprockets-1.0.2/test/test_environment.rb | 64 - .../gems/sprockets-1.0.2/test/test_helper.rb | 55 - .../sprockets-1.0.2/test/test_pathname.rb | 43 - .../sprockets-1.0.2/test/test_preprocessor.rb | 107 - .../sprockets-1.0.2/test/test_secretary.rb | 83 - .../sprockets-1.0.2/test/test_source_file.rb | 34 - .../sprockets-1.0.2/test/test_source_line.rb | 89 - .../1.9.1/gems/templater-1.0.0/History.txt | 3 - .../1.9.1/gems/templater-1.0.0/Manifest.txt | 64 - .../1.9.1/gems/templater-1.0.0/README.rdoc | 266 -- .../ruby/1.9.1/gems/templater-1.0.0/Rakefile | 23 - .../gems/templater-1.0.0/lib/templater.rb | 49 - .../lib/templater/actions/action.rb | 43 - .../lib/templater/actions/directory.rb | 22 - .../lib/templater/actions/empty_directory.rb | 57 - .../lib/templater/actions/file.rb | 60 - .../lib/templater/actions/template.rb | 61 - .../lib/templater/capture_helpers.rb | 62 - .../lib/templater/cli/generator.rb | 175 - .../lib/templater/cli/manifold.rb | 59 - .../lib/templater/cli/parser.rb | 85 - .../lib/templater/core_ext/kernel.rb | 14 - .../lib/templater/core_ext/string.rb | 17 - .../lib/templater/description.rb | 78 - .../lib/templater/discovery.rb | 86 - .../lib/templater/generator.rb | 644 --- .../templater-1.0.0/lib/templater/manifold.rb | 98 - .../lib/templater/spec/helpers.rb | 67 - .../1.9.1/gems/templater-1.0.0/script/console | 10 - .../1.9.1/gems/templater-1.0.0/script/destroy | 14 - .../gems/templater-1.0.0/script/generate | 14 - .../spec/actions/directory_spec.rb | 21 - .../spec/actions/empty_directory_spec.rb | 108 - .../templater-1.0.0/spec/actions/file_spec.rb | 112 - .../spec/actions/template_spec.rb | 141 - .../spec/core_ext/string_spec.rb | 39 - .../spec/generator/actions_spec.rb | 111 - .../spec/generator/arguments_spec.rb | 225 - .../spec/generator/desc_spec.rb | 10 - .../spec/generator/destination_root_spec.rb | 9 - .../spec/generator/empty_directories_spec.rb | 148 - .../spec/generator/files_spec.rb | 199 - .../spec/generator/generators_spec.rb | 63 - .../spec/generator/glob_spec.rb | 94 - .../spec/generator/invocations_spec.rb | 173 - .../spec/generator/invoke_spec.rb | 21 - .../spec/generator/options_spec.rb | 46 - .../spec/generator/render_spec.rb | 21 - .../spec/generator/source_root_spec.rb | 18 - .../spec/generator/templates_spec.rb | 209 - .../templater-1.0.0/spec/manifold_spec.rb | 146 - .../spec/options_parser_spec.rb | 20 - .../gems/templater-1.0.0/spec/results/erb.rbs | 1 - .../templater-1.0.0/spec/results/file.rbs | 1 - .../templater-1.0.0/spec/results/random.rbs | 1 - .../spec/results/simple_erb.rbs | 1 - .../gems/templater-1.0.0/spec/spec_helper.rb | 65 - .../templater-1.0.0/spec/spec_helpers_spec.rb | 85 - .../templater-1.0.0/spec/templater_spec.rb | 7 - .../templater-1.0.0/spec/templates/erb.rbt | 1 - .../spec/templates/glob/README | 1 - .../spec/templates/glob/arg.js | 3 - .../spec/templates/glob/hellothar.%feh% | 1 - .../spec/templates/glob/hellothar.html.%feh% | 1 - .../templates/glob/subfolder/jessica_alba.jpg | 1 - .../spec/templates/glob/subfolder/monkey.rb | 1 - .../spec/templates/glob/test.rb | 1 - .../spec/templates/literals_erb.rbt | 1 - .../templater-1.0.0/spec/templates/simple.rbt | 1 - .../spec/templates/simple_erb.rbt | 1 - .../gems/templater-1.0.0/templater.gemspec | 54 - .../1.9.1/gems/yui-compressor-0.9.1/Rakefile | 21 - .../lib/yui/compressor.rb | 200 - .../test/compressor_test.rb | 94 - .../vendor/yuicompressor-2.4.2.jar | Bin 851219 -> 0 bytes .../compass-0.10.0.pre4.gemspec | 36 - .../compass-colors-0.3.1.gemspec | 33 - .../compass-slickmap-0.2.3.gemspec | 30 - .../configuration-1.1.0.gemspec | 27 - .../specifications/diff-lcs-1.1.2.gemspec | 34 - .../specifications/extlib-0.9.14.gemspec | 40 - .../fancy-buttons-0.3.7.gemspec | 38 - .../1.9.1/specifications/haml-2.2.17.gemspec | 45 - .../specifications/highline-1.5.1.gemspec | 31 - .../specifications/httpclient-2.1.5.2.gemspec | 26 - .../1.9.1/specifications/json-1.2.0.gemspec | 34 - .../specifications/json_pure-1.2.0.gemspec | 33 - .../specifications/launchy-0.3.5.gemspec | 44 - .../1.9.1/specifications/rack-1.1.0.gemspec | 57 - .../specifications/rack-test-0.5.3.gemspec | 36 - .../1.9.1/specifications/rake-0.8.7.gemspec | 32 - .../1.9.1/specifications/shotgun-0.5.gemspec | 36 - .../specifications/sinatra-0.9.4.gemspec | 40 - .../sinatra-content-for-0.2.gemspec | 40 - .../specifications/smusher-0.4.2.gemspec | 40 - .../specifications/sprockets-1.0.2.gemspec | 31 - .../specifications/templater-1.0.0.gemspec | 54 - .../yui-compressor-0.9.1.gemspec | 29 - 3202 files changed, 19 insertions(+), 379164 deletions(-) delete mode 100644 Gemfile delete mode 100755 lib/middleman/vendor/bin/compass delete mode 100755 lib/middleman/vendor/bin/css2sass delete mode 100755 lib/middleman/vendor/bin/edit_json.rb delete mode 100755 lib/middleman/vendor/bin/haml delete mode 100755 lib/middleman/vendor/bin/html2haml delete mode 100755 lib/middleman/vendor/bin/htmldiff delete mode 100755 lib/middleman/vendor/bin/ldiff delete mode 100755 lib/middleman/vendor/bin/prettify_json.rb delete mode 100755 lib/middleman/vendor/bin/rackup delete mode 100755 lib/middleman/vendor/bin/rake delete mode 100755 lib/middleman/vendor/bin/sass delete mode 100755 lib/middleman/vendor/bin/shotgun delete mode 100755 lib/middleman/vendor/bin/smusher delete mode 100755 lib/middleman/vendor/bin/sprocketize delete mode 100644 lib/middleman/vendor/gems/environment.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/compass-0.10.0.pre5.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/compass-colors-0.3.1.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/compass-slickmap-0.2.3.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/diff-lcs-1.1.2.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/extlib-0.9.14.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/fancy-buttons-0.3.9.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/haml-2.2.17.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/highline-1.5.1.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/httpclient-2.1.5.2.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/json-1.2.0.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/json_pure-1.2.0.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/rack-1.1.0.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/rack-test-0.5.3.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/rake-0.8.7.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/shotgun-0.6.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/sinatra-1.0.a.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/sinatra-content-for-0.2.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/smusher-0.4.2.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/sprockets-1.0.2.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/templater-1.0.0.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/cache/yui-compressor-0.9.1.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/environment.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/CHANGELOG.markdown delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/LICENSE.markdown delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/README.markdown delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/REVISION delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/VERSION.yml delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/bin/compass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/README.markdown delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/index.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/elements.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/forms.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/grid.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/test-small.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/test.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/valid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/src/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/src/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/src/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/buttons/cross.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/buttons/key.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/buttons/tick.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/doc.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/email.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/external.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/feed.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/im.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/pdf.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/visited.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/xls.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/test-small.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/test.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/valid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/index.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/plugins/buttons.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/plugins/fancy_type.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/plugins/link_icons.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/plugins/rtl.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/src/buttons.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/src/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/src/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/src/link_icons.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/src/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/src/rtl_screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_scoped/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_scoped/src/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_scoped/src/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_scoped/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_scoped_form/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_scoped_form/src/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_scoped_form/src/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_scoped_form/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_semantic/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_semantic/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_semantic/index.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_semantic/parts/fancy_type.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_semantic/parts/liquid.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_semantic/parts/test-small.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_semantic/parts/test.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_semantic/parts/valid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_semantic/src/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_semantic/src/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_semantic/src/liquid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_semantic/src/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_semantic/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/bootstrap.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/compass.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/extensions/yui/stylesheets/_yui.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/extensions/yui/stylesheets/yui/modules/_base.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/extensions/yui/stylesheets/yui/modules/_fonts.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/extensions/yui/stylesheets/yui/modules/_grids.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/extensions/yui/stylesheets/yui/modules/_reset.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/extensions/yui/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/extensions/yui/templates/project/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/images/blue_arrow.gif delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/src/compass.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/src/images/blue_arrow.gif delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/src/sticky_footer.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/src/utilities.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/sticky_footer.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/compass/utilities.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/css3/config.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/css3/extensions/fancy-fonts/templates/project/Vtks Revolt.ttf delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/css3/extensions/fancy-fonts/templates/project/angelina.ttf delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/css3/extensions/fancy-fonts/templates/project/fancy-fonts.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/css3/extensions/fancy-fonts/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/css3/images/fresh-peas.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/css3/index.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/css3/src/_base.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/css3/src/fancy-fonts.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/css3/src/gradient.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/css3/src/main.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/css3/stylesheets/fonts/Vtks Revolt.ttf delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/css3/stylesheets/fonts/angelina.ttf delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/downloader.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/logo/logo.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/logo/src/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/logo/src/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/logo/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/ninesixty/bootstrap.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/ninesixty/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/ninesixty/extensions/ninesixty/README.mkdn delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/ninesixty/extensions/ninesixty/compass-960-plugin.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/ninesixty/extensions/ninesixty/lib/ninesixty.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/ninesixty/extensions/ninesixty/lib/ninesixty/compass_plugin.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/ninesixty/extensions/ninesixty/sass/960/_grid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/ninesixty/extensions/ninesixty/sass/960/_text.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/ninesixty/extensions/ninesixty/templates/project/grid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/ninesixty/extensions/ninesixty/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/ninesixty/extensions/ninesixty/templates/project/text.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/ninesixty/src/grid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/ninesixty/src/text.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/bootstrap.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/LICENSE.txt delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/README.mkdn delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/compass-susy-plugin.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/build.sh delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/01_target/src/_defaults.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/01_target/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/02_container/src/_defaults.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/02_container/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/03_structure/src/_defaults.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/03_structure/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/_common/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/_common/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/_common/images/susy_logo.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/_common/src/_base.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/_tools/Markdown.pl delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/site/src/_defaults.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/site/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/figures/susy_element.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/figures/susy_grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/index.mkdn delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/lib/susy.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/lib/susy/compass_plugin.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/lib/susy/sass_extensions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/sass/susy/_grid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/sass/susy/_reset.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/sass/susy/_susy.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/sass/susy/_text.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/sass/susy/_utils.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/templates/project/_base.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/templates/project/_defaults.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/templates/project/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/templates/project/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/templates/project/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/src/_base.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/src/_defaults.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/bootstrap.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/divisions.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/_yui.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/yui/modules/_base.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/yui/modules/_fonts.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/yui/modules/_grids.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/yui/modules/_reset.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/templates/project/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/index.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/sub_divisions.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/templates.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/test.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/typography.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/features/command_line.feature delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/features/extensions.feature delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/features/step_definitions/command_line_steps.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/features/step_definitions/extension_steps.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/_blueprint.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_buttons.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_colors.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_debug.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_fancy_type.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_form.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_grid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_interaction.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_link_icons.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_liquid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_reset.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_rtl.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_scaffolding.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_typography.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_utilities.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_buttons.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_colors.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_debug.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_fancy_type.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_form.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_grid.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_ie.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_interaction.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_link_icons.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_liquid.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_print.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_reset.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_rtl.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_scaffolding.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_screen.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_typography.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_utilities.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/index.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_buttons.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_colors.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_debug.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_fancy_type.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_form.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_grid.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_interaction.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_link_icons.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_liquid.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_reset.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_rtl.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_scaffolding.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_typography.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_utilities.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_buttons.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_colors.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_debug.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_fancy_type.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_form.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_grid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_interaction.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_link_icons.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_liquid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_reset.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_rtl.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_scaffolding.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_typography.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_utilities.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/buttons/buttons.sass delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/buttons/buttons/cross.png delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/buttons/buttons/key.png delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/buttons/buttons/tick.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/buttons/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/link_icons/link_icons.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/link_icons/link_icons/doc.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/link_icons/link_icons/email.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/link_icons/link_icons/external.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/link_icons/link_icons/feed.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/link_icons/link_icons/im.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/link_icons/link_icons/pdf.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/link_icons/link_icons/visited.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/link_icons/link_icons/xls.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/link_icons/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/project/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/project/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/project/partials/_base.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/project/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/project/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/_compass.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/_css3.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/_layout.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/_misc.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/_reset.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/_utilities.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/css3/_background_clip.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/css3/_background_origin.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/css3/_background_size.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/css3/_border_radius.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/css3/_box_shadow.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/css3/_box_sizing.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/css3/_columns.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/css3/_font_face.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/css3/_gradient.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/css3/_inline_block.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/css3/_opacity.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/css3/_text_shadow.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/css3/_transform.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/css3/_transition.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/layout/_sticky_footer.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/_general.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/_links.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/_lists.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/_print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/_sprites.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/_tables.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/_text.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/general/_clearfix.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/general/_float.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/general/_hacks.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/general/_min.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/general/_reset.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/general/_tabs.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/general/_tag_cloud.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/links/_hover_link.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/links/_link_colors.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/links/_unstyled_link.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/lists/_bullets.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/lists/_horizontal_list.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/lists/_inline_list.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite_img.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/tables/_alternating_rows_and_columns.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/tables/_borders.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/tables/_scaffolding.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/text/_ellipsis.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/text/_nowrap.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/text/_replacement.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/templates/ellipsis/ellipsis.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/templates/ellipsis/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/templates/ellipsis/xml/ellipsis.xml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/templates/extension/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/templates/extension/stylesheets/main.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/templates/extension/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/templates/extension/templates/project/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/templates/project/USAGE.markdown delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/templates/project/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/templates/project/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/templates/project/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/actions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/app_integration.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/app_integration/merb.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/app_integration/merb/runtime.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/app_integration/rails.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/app_integration/rails/action_controller.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/app_integration/rails/configuration_defaults.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/app_integration/rails/installer.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/app_integration/rails/runtime.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/app_integration/rails/sass_plugin.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/app_integration/rails/templates/compass-install-rails.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/app_integration/rails/urls.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/app_integration/stand_alone.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/app_integration/stand_alone/configuration_defaults.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/app_integration/stand_alone/installer.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands/base.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands/create_project.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands/generate_grid_background.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands/help.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands/installer_command.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands/interactive.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands/list_frameworks.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands/print_version.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands/project_base.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands/project_stats.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands/registry.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands/stamp_pattern.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands/update_project.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands/validate_project.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands/watch_project.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/commands/write_configuration.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/compiler.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/configuration.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/configuration/adapters.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/configuration/comments.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/configuration/data.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/configuration/defaults.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/configuration/helpers.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/configuration/inheritance.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/configuration/paths.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/configuration/serialization.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/core_ext.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/dependencies.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/errors.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/exec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/exec/command_option_parser.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/exec/global_options_parser.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/exec/helpers.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/exec/project_options_parser.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/exec/sub_command_ui.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/exec/switch_ui.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/frameworks.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/grid_builder.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/installers.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/installers/bare_installer.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/installers/base.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/installers/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/installers/manifest_installer.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/installers/template_context.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/logger.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/sass_extensions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/sass_extensions/functions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/sass_extensions/functions/color_stop.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/sass_extensions/functions/display.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/sass_extensions/functions/enumerate.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/sass_extensions/functions/font_files.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/sass_extensions/functions/inline_image.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/sass_extensions/functions/selectors.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/sass_extensions/functions/urls.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/sass_extensions/monkey_patches.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/sass_extensions/monkey_patches/stylesheet_updating.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/sass_extensions/monkey_patches/traversal.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/stats.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/test_case.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/validator.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/compass/version.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/vendor/fssm/fssm.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/vendor/fssm/fssm/backends/fsevents.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/vendor/fssm/fssm/backends/inotify.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/vendor/fssm/fssm/backends/polling.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/vendor/fssm/fssm/backends/rubycocoa/fsevents.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/vendor/fssm/fssm/monitor.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/vendor/fssm/fssm/path.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/vendor/fssm/fssm/pathname.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/vendor/fssm/fssm/state/directory.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/vendor/fssm/fssm/state/file.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/vendor/fssm/fssm/support.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/lib/vendor/fssm/fssm/tree.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/command_line_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/command_line_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/compass_png_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/compass_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/configuration_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/blueprint/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/blueprint/css/typography.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/blueprint/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/blueprint/sass/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/blueprint/sass/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/blueprint/sass/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/blueprint/sass/typography.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/compass/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/compass/css/layout.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/compass/css/print.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/compass/css/reset.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/compass/css/utilities.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/compass/sass/layout.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/compass/sass/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/compass/sass/reset.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/compass/sass/utilities.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/image_urls/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/image_urls/css/screen.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/image_urls/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/image_urls/sass/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/relative/assets/images/testing.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/relative/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/relative/css/ie.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/relative/css/print.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/relative/css/screen.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/relative/sass/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/relative/sass/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/fixtures/stylesheets/relative/sass/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/io_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/rails_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/rails_integration_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/sass_extensions_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/test_case_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/test_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/test/test_rails_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/README.markdown delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/VERSION.yml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/example/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/example/split_compliment_example.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/example/src/_split_compliment_theme.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/example/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/lib/compass-colors.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/lib/compass-colors/compass_extension.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/lib/compass-colors/hsl.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/lib/compass-colors/sass_extensions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/spec/approximate_color_matching.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/spec/sass_extensions_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/templates/analogous/_theme.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/templates/analogous/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/templates/basic/_theme.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/templates/basic/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/templates/complementary/_theme.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/templates/complementary/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/templates/split_complement/_theme.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/templates/split_complement/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/templates/triadic/_theme.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-colors-0.3.1/templates/triadic/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/.gitignore delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/VERSION delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/compass-slickmap.gemspec delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/lib/slickmap.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/lib/slickmap/compass_plugin.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/sass/_slickmap.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/templates/project/images/L1-center.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/templates/project/images/L1-left.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/templates/project/images/L1-right.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/templates/project/images/L3-bottom.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/templates/project/images/L3-center.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/templates/project/images/L3-li-top.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/templates/project/images/L3-ul-top.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/templates/project/images/vertical-line.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/templates/project/images/white-highlight.png delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/templates/project/manifest.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/compass-slickmap-0.2.3/templates/project/sitemap.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/diff-lcs-1.1.2/ChangeLog delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/diff-lcs-1.1.2/Install delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/diff-lcs-1.1.2/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/diff-lcs-1.1.2/Rakefile delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/diff-lcs-1.1.2/bin/htmldiff delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/diff-lcs-1.1.2/bin/ldiff delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/diff-lcs-1.1.2/lib/diff/lcs.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/diff-lcs-1.1.2/lib/diff/lcs/array.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/diff-lcs-1.1.2/lib/diff/lcs/block.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/diff-lcs-1.1.2/lib/diff/lcs/callbacks.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/diff-lcs-1.1.2/lib/diff/lcs/change.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/diff-lcs-1.1.2/lib/diff/lcs/hunk.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/diff-lcs-1.1.2/lib/diff/lcs/ldiff.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/diff-lcs-1.1.2/lib/diff/lcs/string.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/diff-lcs-1.1.2/tests/00test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/.autotest delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/.document delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/.gitignore delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/LICENSE delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/README.rdoc delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/VERSION delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/extlib.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/array.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/assertions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/blank.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/boolean.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/byte_array.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/class.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/datetime.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/dictionary.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/hash.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/hook.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/inflection.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/lazy_array.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/lazy_module.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/logger.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/mash.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/module.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/nil.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/numeric.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/object.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/object_space.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/pathname.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/pooling.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/rubygems.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/simple_set.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/string.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/struct.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/symbol.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/time.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/lib/extlib/virtual_file.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/array_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/blank_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/byte_array_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/class_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/datetime_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/hash_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/hook_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/inflection/plural_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/inflection/singular_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/inflection_extras_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/lazy_array_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/lazy_module_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/mash_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/module_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/object_space_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/object_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/pooling_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/rcov.opts delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/simple_set_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/spec.opts delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/spec_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/string_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/struct_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/symbol_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/time_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/try_call_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/try_dup_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/spec/virtual_file_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/tasks/ci.rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/tasks/metrics.rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/tasks/spec.rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/tasks/yard.rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/extlib-0.9.14/tasks/yardstick.rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/fancy-buttons-0.3.9/README.markdown delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/fancy-buttons-0.3.9/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/fancy-buttons-0.3.9/fancy-buttons.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/fancy-buttons-0.3.9/lib/fancy-buttons.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/fancy-buttons-0.3.9/lib/sass/_fancy_buttons.sass delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/fancy-buttons-0.3.9/lib/sass/_fancy_gradient.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/fancy-buttons-0.3.9/lib/templates/project/button_bg.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/fancy-buttons-0.3.9/lib/templates/project/buttons.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/fancy-buttons-0.3.9/lib/templates/project/ie6.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/fancy-buttons-0.3.9/lib/templates/project/index.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/fancy-buttons-0.3.9/lib/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/.yardopts delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/CONTRIBUTING delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/MIT-LICENSE delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/README.md delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/REVISION delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/VERSION delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/VERSION_NAME delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/bin/css2sass delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/bin/haml delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/bin/html2haml delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/bin/sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/extra/haml-mode.el delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/extra/sass-mode.el delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/extra/update_watch.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/init.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/buffer.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/engine.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/error.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/exec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/filters.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/helpers.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/helpers/action_view_extensions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/helpers/action_view_mods.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/helpers/xss_mods.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/html.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/precompiler.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/shared.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/template.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/template/patch.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/template/plugin.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/util.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/version.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/css.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/engine.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/environment.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/error.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/files.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/plugin.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/plugin/merb.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/plugin/rack.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/plugin/rails.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/repl.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/bool.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/color.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/funcall.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/functions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/lexer.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/literal.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/number.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/operation.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/parser.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/string.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/unary_operation.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/variable.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/comment_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/debug_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/directive_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/for_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/if_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/import_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/mixin_def_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/mixin_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/prop_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/rule_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/variable_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/while_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/rails/init.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/benchmark.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/engine_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/helper_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/html2haml_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/markaby/standard.mab delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/mocks/article.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/content_for_layout.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/eval_suppressed.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/filters.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/helpers.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/helpful.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/just_stuff.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/list.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/nuke_inner_whitespace.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/nuke_outer_whitespace.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/original_engine.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/partial_layout.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/partials.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/render_layout.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/silent_script.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/standard.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/tag_parsing.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/very_basic.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/whitespace_handling.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/rhtml/_av_partial_1.rhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/rhtml/_av_partial_2.rhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/rhtml/action_view.rhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/rhtml/standard.rhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/spec/README.md delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/spec/lua_haml_spec.lua delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/spec/ruby_haml_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/spec/tests.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/template_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_av_partial_1.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_av_partial_1_ugly.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_av_partial_2.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_av_partial_2_ugly.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_layout.erb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_layout_for_partial.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_partial.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_text_area.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/action_view.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/action_view_ugly.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/breakage.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/content_for_layout.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/eval_suppressed.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/filters.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/helpers.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/helpful.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/just_stuff.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/list.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/nuke_inner_whitespace.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/nuke_outer_whitespace.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/original_engine.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/partial_layout.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/partialize.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/partials.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/render_layout.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/silent_script.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/standard.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/standard_ugly.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/tag_parsing.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/very_basic.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/whitespace_handling.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/util_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/linked_rails.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/css2sass_test.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/engine_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/functions_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_results/more1.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_results/more1_with_line_comments.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_results/more_import.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_templates/_more_partial.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_templates/more1.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_templates/more_import.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/plugin_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/alt.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/basic.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/compact.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/complex.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/compressed.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/expanded.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/import.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/line_numbers.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/mixins.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/multiline.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/nested.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/parent_ref.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/script.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/subdir/nested_subdir/nested_subdir.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/subdir/subdir.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/units.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/script_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/_partial.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/alt.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/basic.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/bork.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/bork2.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/compact.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/complex.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/compressed.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/expanded.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/import.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/importee.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/line_numbers.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/mixins.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/multiline.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/nested.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/parent_ref.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/script.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/subdir/nested_subdir/_nested_partial.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/subdir/nested_subdir/nested_subdir.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/subdir/subdir.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/units.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/test_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/CHANGELOG delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/INSTALL delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/LICENSE delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/TODO delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/ansi_colors.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/asking_for_arrays.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/basic_usage.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/color_scheme.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/limit.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/menus.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/overwrite.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/page_and_wrap.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/password.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/trapping_eof.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/using_readline.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/color_scheme.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/compatibility.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/import.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/menu.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/question.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/system_extensions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/setup.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/tc_color_scheme.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/tc_highline.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/tc_import.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/tc_menu.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/ts_all.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/http-access2.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/http-access2/cookie.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/http-access2/http.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/auth.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/cacert.p7s delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/cacert_sha1.p7s delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/connection.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/cookie.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/http.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/session.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/ssl_config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/timeout.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/util.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/tags delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/.require_paths delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/CHANGES delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/COPYING delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/GPL delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/TODO delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/VERSION delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/generator_benchmark.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/parser_benchmark.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/bin/edit_json.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/bin/prettify_json.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/data/example.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/data/index.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/data/prototype.js delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/generator.bundle delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/generator/Makefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/generator/extconf.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/generator/generator.bundle delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/generator/generator.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/generator/generator.o delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/generator/mkmf.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/generator/unicode.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/generator/unicode.h delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/generator/unicode.o delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/parser.bundle delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/parser/Makefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/parser/extconf.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/parser/mkmf.log delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/parser/parser.bundle delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/parser/parser.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/parser/parser.o delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/parser/parser.rl delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/parser/unicode.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/parser/unicode.h delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/ext/json/ext/parser/unicode.o delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/install.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/Array.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/FalseClass.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/Hash.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/Key.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/NilClass.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/Numeric.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/String.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/TrueClass.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/add/core.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/add/rails.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/common.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/editor.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/ext.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/json.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/pure.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/pure/generator.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/pure/parser.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/lib/json/version.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail1.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail10.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail11.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail12.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail13.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail14.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail18.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail19.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail2.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail20.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail21.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail22.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail23.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail24.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail25.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail27.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail28.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail3.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail4.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail5.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail6.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail7.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail8.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/fail9.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/pass1.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/pass15.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/pass16.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/pass17.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/pass2.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/pass26.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/fixtures/pass3.json delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/test_json.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/test_json_addition.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/test_json_encoding.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/test_json_fixtures.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/test_json_generate.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/test_json_rails.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tests/test_json_unicode.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tools/fuzz.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/tools/server.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/CHANGES delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/COPYING delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/GPL delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/TODO delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/VERSION delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/generator_benchmark.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/benchmarks/parser_benchmark.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/bin/edit_json.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/bin/prettify_json.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/data/example.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/data/index.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/data/prototype.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/ext/json/ext/generator/extconf.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/ext/json/ext/generator/generator.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/ext/json/ext/generator/unicode.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/ext/json/ext/generator/unicode.h delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/ext/json/ext/parser/extconf.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/ext/json/ext/parser/parser.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/ext/json/ext/parser/parser.rl delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/ext/json/ext/parser/unicode.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/ext/json/ext/parser/unicode.h delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/install.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/Array.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/FalseClass.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/Hash.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/Key.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/NilClass.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/Numeric.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/String.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/TrueClass.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/add/core.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/add/rails.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/common.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/editor.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/ext.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/json.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/pure.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/pure/generator.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/pure/parser.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/lib/json/version.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail1.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail10.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail11.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail12.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail13.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail14.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail18.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail19.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail2.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail20.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail21.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail22.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail23.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail24.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail25.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail27.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail28.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail3.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail4.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail5.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail6.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail7.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail8.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/fail9.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/pass1.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/pass15.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/pass16.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/pass17.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/pass2.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/pass26.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/fixtures/pass3.json delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/test_json.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/test_json_addition.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/test_json_encoding.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/test_json_fixtures.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/test_json_generate.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/test_json_rails.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tests/test_json_unicode.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tools/fuzz.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/tools/server.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/COPYING delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/KNOWN-ISSUES delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/RDOX delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/SPEC delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/bin/rackup delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/contrib/rack_logo.svg delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/example/lobster.ru delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/example/protectedlobster.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/example/protectedlobster.ru delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/adapter/camping.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/auth/abstract/handler.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/auth/abstract/request.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/auth/basic.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/auth/digest/md5.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/auth/digest/nonce.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/auth/digest/params.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/auth/digest/request.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/builder.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/cascade.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/chunked.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/commonlogger.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/conditionalget.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/content_length.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/content_type.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/deflater.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/directory.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/etag.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/file.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/cgi.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/evented_mongrel.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/fastcgi.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/lsws.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/mongrel.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/scgi.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/swiftiplied_mongrel.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/thin.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/handler/webrick.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/head.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/lint.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/lobster.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/lock.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/logger.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/methodoverride.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/mime.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/mock.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/nulllogger.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/recursive.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/reloader.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/request.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/response.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/rewindable_input.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/runtime.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/sendfile.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/server.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/session/abstract/id.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/session/cookie.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/session/memcache.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/session/pool.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/showexceptions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/showstatus.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/static.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/urlmap.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/utils.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/rack.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_auth_basic.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_auth_digest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_builder.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_camping.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_cascade.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_cgi.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_chunked.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_commonlogger.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_conditionalget.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_content_length.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_content_type.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_deflater.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_directory.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_etag.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_fastcgi.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_file.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_handler.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_head.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_lint.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_lobster.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_lock.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_logger.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_methodoverride.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_mock.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_mongrel.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_nulllogger.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_recursive.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_request.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_response.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_rewindable_input.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_runtime.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_sendfile.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_session_cookie.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_session_memcache.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_session_pool.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_showexceptions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_showstatus.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_static.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_thin.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_urlmap.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_utils.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_webrick.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rackup.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/.document delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/.gitignore delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/History.txt delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/MIT-LICENSE.txt delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/README.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/Thorfile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/mock_session.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/cookie_jar.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/methods.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/mock_digest_request.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/uploaded_file.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/utils.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/rack-test.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/fixtures/config.ru delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/fixtures/fake_app.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/fixtures/foo.txt delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test/cookie_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test/digest_auth_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test/multipart_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test/utils_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/spec.opts delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/spec_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/CHANGES delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/MIT-LICENSE delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/TODO delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/bin/rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/command_line_usage.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/Rakefile1 delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/Rakefile2 delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/a.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/b.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/main.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/glossary.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/jamis.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/proto_rake.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/rake.1.gz delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/rakefile.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/rational.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.4.14.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.4.15.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.0.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.3.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.4.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.6.0.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.0.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.1.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.2.rdoc delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.3.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.0.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.2.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.3.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.4.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.5.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.6.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.7.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/install.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/alt_system.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/classic_namespace.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/clean.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/compositepublisher.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/ftptools.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/publisher.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/rubyforgepublisher.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/sshpublisher.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/sys.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/gempackagetask.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/loaders/makefile.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/packagetask.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/rdoctask.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/ruby182_test_unit_fix.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/runtest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/tasklib.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/testtask.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/win32.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/capture_stdout.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/check_expansion.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/check_no_expansion.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/contrib/test_sys.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/chains/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/default/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/dryrun/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/file_creation_task/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/imports/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/imports/deps.mf delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/multidesc/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/namespace/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/rakelib/test1.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/rbext/rakefile.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/sample.mf delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/statusreturn/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/unittest/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/filecreation.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/functional.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/in_environment.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/rake_test_setup.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/reqfile.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/reqfile2.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/session_functional.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/shellcommand.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_application.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_clean.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_definitions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_earlytime.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_extension.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_file_creation_task.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_file_task.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_filelist.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_fileutils.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_ftp.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_invocation_chain.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_makefile_loader.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_multitask.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_namespace.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_package_task.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_pathmap.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_pseudo_status.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_rake.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_rdoc_task.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_require.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_rules.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_task_arguments.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_task_manager.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_tasklib.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_tasks.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_test_task.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_top_level_functions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_win32.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/COPYING delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/Rakefile delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/bin/shotgun delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/lib/shotgun.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/shotgun.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/test/shotgun_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/test/test.ru delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/AUTHORS delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/CHANGES delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/LICENSE delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/README.jp.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/README.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/base.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/images/404.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/images/500.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/main.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/showexceptions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/tilt.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/sinatra.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/base_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/builder_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/contest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/erb_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/erubis_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/extensions_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/filter_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/haml_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/helpers_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/mapped_error_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/middleware_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/public/favicon.ico delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/request_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/response_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/result_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/route_added_hook_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/routing_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/sass_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/server_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/settings_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/sinatra_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/static_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/templates_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.builder delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.erb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.erubis delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/foo/hello.test delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.builder delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.erb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.erubis delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.test delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.builder delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.erb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.erubis delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.test delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/.gitignore delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/LICENSE delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/README.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/lib/sinatra/content_for.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/sinatra-content-for.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/test/content_for_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/.gitignore delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/README.markdown delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/VERSION delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/bin/smusher delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/lib/smusher.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/lib/smusher/puny_png.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/lib/smusher/smush_it.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/smusher.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/empty/.gitignore delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/ad.gif delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/add.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/drink_empty.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/logo.gif delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/people.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/water.JPG delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/woman.jpeg delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/out/ad.gif delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/out/people.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/reduced/add.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/reduced/add_puny.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/reduced/fam.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/smusher/puny_png_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/smusher/smush_it_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/smusher_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/spec_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/Rakefile delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/bin/sprocketize delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/ext/nph-sprockets.cgi delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/concatenation.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/environment.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/error.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/pathname.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/preprocessor.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/secretary.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/source_file.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/source_line.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/version.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/one.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/two.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/assets/stylesheets/script_with_assets.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/constants.yml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_ignored_when_strip_comments_is_false.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_removed_by_default.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/multiline_comments_should_be_removed_by_default.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_after_it_has_already_been_required_should_do_nothing.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_that_does_not_exist_should_raise_an_error.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/requiring_a_single_file_should_replace_the_require_comment_with_the_file_contents.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/requiring_the_current_file_should_do_nothing.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/constants.yml delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/foo.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/foo/bar.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/foo/foo.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/script_with_assets.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_concatenation.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_environment.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_pathname.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_preprocessor.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_secretary.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_source_file.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_source_line.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/History.txt delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/Manifest.txt delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/README.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater/actions/action.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater/actions/directory.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater/actions/empty_directory.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater/actions/file.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater/actions/template.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater/capture_helpers.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater/cli/generator.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater/cli/manifold.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater/cli/parser.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater/core_ext/kernel.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater/core_ext/string.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater/description.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater/discovery.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater/generator.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater/manifold.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/lib/templater/spec/helpers.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/script/console delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/script/destroy delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/script/generate delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/actions/directory_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/actions/empty_directory_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/actions/file_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/actions/template_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/core_ext/string_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/generator/actions_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/generator/arguments_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/generator/desc_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/generator/destination_root_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/generator/empty_directories_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/generator/files_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/generator/generators_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/generator/glob_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/generator/invocations_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/generator/invoke_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/generator/options_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/generator/render_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/generator/source_root_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/generator/templates_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/manifold_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/options_parser_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/results/erb.rbs delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/results/file.rbs delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/results/random.rbs delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/results/simple_erb.rbs delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/spec_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/spec_helpers_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/templater_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/templates/erb.rbt delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/templates/glob/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/templates/glob/arg.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/templates/glob/hellothar.%feh% delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/templates/glob/hellothar.html.%feh% delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/templates/glob/subfolder/jessica_alba.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/templates/glob/subfolder/monkey.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/templates/glob/test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/templates/literals_erb.rbt delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/templates/simple.rbt delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/spec/templates/simple_erb.rbt delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/templater.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/yui-compressor-0.9.1/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/yui-compressor-0.9.1/lib/yui/compressor.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/gems/yui-compressor-0.9.1/test/compressor_test.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.8/gems/yui-compressor-0.9.1/vendor/yuicompressor-2.4.2.jar delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/compass-0.10.0.pre5.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/compass-colors-0.3.1.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/compass-slickmap-0.2.3.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/diff-lcs-1.1.2.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/extlib-0.9.14.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/fancy-buttons-0.3.9.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/haml-2.2.17.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/highline-1.5.1.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/httpclient-2.1.5.2.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/json-1.2.0.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/json_pure-1.2.0.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/rack-1.1.0.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/rack-test-0.5.3.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/rake-0.8.7.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/shotgun-0.6.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/sinatra-1.0.a.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/sinatra-content-for-0.2.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/smusher-0.4.2.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/sprockets-1.0.2.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/templater-1.0.0.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.8/specifications/yui-compressor-0.9.1.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/compass-0.10.0.pre4.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/compass-colors-0.3.1.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/compass-slickmap-0.2.3.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/configuration-1.1.0.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/diff-lcs-1.1.2.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/extlib-0.9.14.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/fancy-buttons-0.3.7.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/haml-2.2.17.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/highline-1.5.1.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/httpclient-2.1.5.2.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/json-1.2.0.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/json_pure-1.2.0.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/launchy-0.3.5.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/rack-1.1.0.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/rack-test-0.5.3.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/rake-0.8.7.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/shotgun-0.5.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/sinatra-0.9.4.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/sinatra-content-for-0.2.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/smusher-0.4.2.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/sprockets-1.0.2.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/templater-1.0.0.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/cache/yui-compressor-0.9.1.gem delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/environment.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/CHANGELOG.markdown delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/LICENSE.markdown delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/README.markdown delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/REVISION delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/VERSION.yml delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/bin/compass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/deps.rip delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/README.markdown delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_default/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_default/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_default/index.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_default/parts/elements.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_default/parts/forms.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_default/parts/grid.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_default/parts/test-small.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_default/parts/test.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_default/parts/valid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_default/src/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_default/src/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_default/src/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_default/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/images/buttons/cross.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/images/buttons/key.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/images/buttons/tick.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/images/link_icons/doc.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/images/link_icons/email.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/images/link_icons/external.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/images/link_icons/feed.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/images/link_icons/im.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/images/link_icons/pdf.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/images/link_icons/visited.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/images/link_icons/xls.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/images/test-small.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/images/test.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/images/valid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/index.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/plugins/buttons.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/plugins/fancy_type.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/plugins/link_icons.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/plugins/rtl.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/src/buttons.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/src/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/src/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/src/link_icons.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/src/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/src/rtl_screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_plugins/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_scoped/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_scoped/src/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_scoped/src/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_scoped/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_scoped_form/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_scoped_form/src/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_scoped_form/src/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_scoped_form/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_semantic/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_semantic/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_semantic/index.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_semantic/parts/fancy_type.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_semantic/parts/liquid.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_semantic/parts/test-small.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_semantic/parts/test.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_semantic/parts/valid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_semantic/src/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_semantic/src/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_semantic/src/liquid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_semantic/src/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/blueprint_semantic/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/bootstrap.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/compass.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/extensions/yui/stylesheets/_yui.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/extensions/yui/stylesheets/yui/modules/_base.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/extensions/yui/stylesheets/yui/modules/_fonts.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/extensions/yui/stylesheets/yui/modules/_grids.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/extensions/yui/stylesheets/yui/modules/_reset.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/extensions/yui/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/extensions/yui/templates/project/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/images/blue_arrow.gif delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/src/compass.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/src/images/blue_arrow.gif delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/src/sticky_footer.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/src/utilities.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/sticky_footer.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/compass/utilities.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/css3/config.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/css3/extensions/fancy-fonts/templates/project/Vtks Revolt.ttf delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/css3/extensions/fancy-fonts/templates/project/angelina.ttf delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/css3/extensions/fancy-fonts/templates/project/fancy-fonts.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/css3/extensions/fancy-fonts/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/css3/images/fresh-peas.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/css3/index.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/css3/src/_base.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/css3/src/fancy-fonts.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/css3/src/gradient.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/css3/src/main.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/css3/stylesheets/fonts/Vtks Revolt.ttf delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/css3/stylesheets/fonts/angelina.ttf delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/downloader.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/logo/logo.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/logo/src/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/logo/src/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/logo/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/ninesixty/bootstrap.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/ninesixty/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/ninesixty/extensions/ninesixty/README.mkdn delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/ninesixty/extensions/ninesixty/compass-960-plugin.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/ninesixty/extensions/ninesixty/lib/ninesixty.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/ninesixty/extensions/ninesixty/lib/ninesixty/compass_plugin.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/ninesixty/extensions/ninesixty/sass/960/_grid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/ninesixty/extensions/ninesixty/sass/960/_text.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/ninesixty/extensions/ninesixty/templates/project/grid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/ninesixty/extensions/ninesixty/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/ninesixty/extensions/ninesixty/templates/project/text.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/ninesixty/src/grid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/ninesixty/src/text.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/bootstrap.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/LICENSE.txt delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/README.mkdn delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/compass-susy-plugin.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/build.sh delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/code/01_target/src/_defaults.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/code/01_target/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/code/02_container/src/_defaults.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/code/02_container/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/code/03_structure/src/_defaults.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/code/03_structure/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/code/_common/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/code/_common/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/code/_common/images/susy_logo.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/code/_common/src/_base.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/code/_tools/Markdown.pl delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/code/site/src/_defaults.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/code/site/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/figures/susy_element.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/figures/susy_grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/docs/tutorial/index.mkdn delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/lib/susy.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/lib/susy/compass_plugin.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/lib/susy/sass_extensions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/sass/susy/_grid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/sass/susy/_reset.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/sass/susy/_susy.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/sass/susy/_text.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/sass/susy/_utils.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/templates/project/_base.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/templates/project/_defaults.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/templates/project/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/templates/project/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/extensions/susy/templates/project/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/src/_base.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/src/_defaults.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/susy/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/yui/bootstrap.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/yui/divisions.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/yui/extensions/yui/stylesheets/_yui.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/yui/extensions/yui/stylesheets/yui/modules/_base.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/yui/extensions/yui/stylesheets/yui/modules/_fonts.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/yui/extensions/yui/stylesheets/yui/modules/_grids.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/yui/extensions/yui/stylesheets/yui/modules/_reset.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/yui/extensions/yui/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/yui/extensions/yui/templates/project/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/yui/index.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/yui/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/yui/sub_divisions.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/yui/templates.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/yui/test.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/examples/yui/typography.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/features/command_line.feature delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/features/extensions.feature delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/features/step_definitions/command_line_steps.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/features/step_definitions/extension_steps.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/actions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/app_integration.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/app_integration/merb.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/app_integration/merb/runtime.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/app_integration/rails.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/app_integration/rails/action_controller.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/app_integration/rails/configuration_defaults.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/app_integration/rails/installer.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/app_integration/rails/runtime.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/app_integration/rails/sass_plugin.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/app_integration/rails/templates/compass-install-rails.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/app_integration/rails/urls.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/app_integration/stand_alone.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/app_integration/stand_alone/configuration_defaults.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/app_integration/stand_alone/installer.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands/base.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands/create_project.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands/generate_grid_background.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands/help.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands/installer_command.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands/interactive.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands/list_frameworks.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands/print_version.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands/project_base.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands/project_stats.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands/registry.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands/stamp_pattern.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands/update_project.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands/validate_project.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands/watch_project.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/commands/write_configuration.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/compiler.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/configuration.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/configuration/adapters.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/configuration/comments.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/configuration/data.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/configuration/defaults.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/configuration/helpers.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/configuration/inheritance.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/configuration/serialization.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/core_ext.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/dependencies.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/errors.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/exec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/exec/command_option_parser.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/exec/global_options_parser.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/exec/helpers.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/exec/project_options_parser.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/exec/sub_command_ui.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/exec/switch_ui.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/_blueprint.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_buttons.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_colors.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_debug.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_fancy_type.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_form.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_grid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_interaction.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_link_icons.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_liquid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_reset.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_rtl.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_scaffolding.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_typography.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/_utilities.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_buttons.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_colors.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_debug.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_fancy_type.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_form.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_grid.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_ie.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_interaction.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_link_icons.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_liquid.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_print.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_reset.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_rtl.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_scaffolding.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_screen.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_typography.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/_utilities.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/index.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/modules/_buttons.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/modules/_colors.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/modules/_debug.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/modules/_fancy_type.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/modules/_form.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/modules/_grid.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/modules/_interaction.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/modules/_link_icons.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/modules/_liquid.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/modules/_reset.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/modules/_rtl.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/modules/_scaffolding.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/modules/_typography.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/docs/modules/_utilities.sass.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_buttons.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_colors.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_debug.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_fancy_type.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_form.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_grid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_interaction.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_link_icons.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_liquid.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_reset.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_rtl.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_scaffolding.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_typography.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/stylesheets/blueprint/modules/_utilities.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/buttons/buttons.sass delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/buttons/buttons/cross.png delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/buttons/buttons/key.png delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/buttons/buttons/tick.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/buttons/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/link_icons/link_icons.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/link_icons/link_icons/doc.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/link_icons/link_icons/email.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/link_icons/link_icons/external.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/link_icons/link_icons/feed.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/link_icons/link_icons/im.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/link_icons/link_icons/pdf.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/link_icons/link_icons/visited.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/link_icons/link_icons/xls.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/link_icons/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/project/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/project/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/project/partials/_base.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/project/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/project/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/blueprint/templates/project/welcome.html.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/_compass.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/_css3.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/_layout.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/_misc.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/_reset.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/_utilities.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/css3/_background_clip.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/css3/_background_origin.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/css3/_background_size.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/css3/_border_radius.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/css3/_box_shadow.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/css3/_box_sizing.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/css3/_columns.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/css3/_font_face.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/css3/_gradient.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/css3/_inline_block.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/css3/_opacity.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/css3/_text_shadow.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/css3/_transform.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/css3/_transition.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/layout/_sticky_footer.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/_general.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/_links.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/_lists.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/_print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/_sprites.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/_tables.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/_text.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/general/_clearfix.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/general/_float.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/general/_hacks.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/general/_min.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/general/_reset.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/general/_tabs.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/general/_tag_cloud.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/links/_hover_link.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/links/_link_colors.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/links/_unstyled_link.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/lists/_bullets.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/lists/_horizontal_list.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/lists/_inline_list.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/sprites/_sprite_img.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/tables/_alternating_rows_and_columns.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/tables/_borders.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/tables/_scaffolding.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/text/_ellipsis.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/text/_nowrap.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/stylesheets/compass/utilities/text/_replacement.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/templates/ellipsis/ellipsis.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/templates/ellipsis/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/templates/ellipsis/xml/ellipsis.xml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/templates/extension/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/templates/extension/stylesheets/main.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/templates/extension/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/templates/extension/templates/project/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/templates/project/USAGE.markdown delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/templates/project/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/templates/project/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/frameworks/compass/templates/project/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/grid_builder.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/installers.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/installers/bare_installer.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/installers/base.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/installers/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/installers/manifest_installer.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/installers/template_context.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/logger.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/sass_extensions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/sass_extensions/functions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/sass_extensions/functions/color_stop.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/sass_extensions/functions/display.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/sass_extensions/functions/enumerate.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/sass_extensions/functions/font_files.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/sass_extensions/functions/inline_image.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/sass_extensions/functions/selectors.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/sass_extensions/functions/urls.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/sass_extensions/monkey_patches.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/sass_extensions/monkey_patches/stylesheet_updating.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/sass_extensions/monkey_patches/traversal.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/stats.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/test_case.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/validator.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/compass/version.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/vendor/fssm.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/vendor/fssm/backends/fsevents.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/vendor/fssm/backends/inotify.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/vendor/fssm/backends/polling.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/vendor/fssm/backends/rubycocoa/fsevents.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/vendor/fssm/monitor.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/vendor/fssm/path.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/vendor/fssm/pathname.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/vendor/fssm/state.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/vendor/fssm/support.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/lib/vendor/fssm/tree.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/command_line_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/command_line_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/compass_png_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/compass_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/configuration_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/blueprint/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/blueprint/css/typography.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/blueprint/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/blueprint/sass/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/blueprint/sass/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/blueprint/sass/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/blueprint/sass/typography.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/compass/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/compass/css/layout.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/compass/css/print.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/compass/css/reset.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/compass/css/utilities.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/compass/sass/layout.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/compass/sass/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/compass/sass/reset.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/compass/sass/utilities.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/image_urls/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/image_urls/css/screen.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/image_urls/images/grid.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/image_urls/sass/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/relative/assets/images/testing.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/relative/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/relative/css/ie.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/relative/css/print.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/relative/css/screen.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/relative/sass/ie.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/relative/sass/print.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/fixtures/stylesheets/relative/sass/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/io_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/rails_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/rails_integration_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/sass_extensions_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/test_case_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/test_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-0.10.0.pre4/test/test_rails_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/README.markdown delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/VERSION.yml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/example/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/example/split_compliment_example.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/example/src/_split_compliment_theme.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/example/src/screen.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/lib/compass-colors.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/lib/compass-colors/compass_extension.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/lib/compass-colors/hsl.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/lib/compass-colors/sass_extensions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/spec/approximate_color_matching.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/spec/sass_extensions_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/templates/analogous/_theme.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/templates/analogous/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/templates/basic/_theme.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/templates/basic/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/templates/complementary/_theme.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/templates/complementary/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/templates/split_complement/_theme.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/templates/split_complement/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/templates/triadic/_theme.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-colors-0.3.1/templates/triadic/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/.gitignore delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/VERSION delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/compass-slickmap.gemspec delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/lib/slickmap.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/lib/slickmap/compass_plugin.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/sass/_slickmap.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/templates/project/images/L1-center.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/templates/project/images/L1-left.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/templates/project/images/L1-right.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/templates/project/images/L3-bottom.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/templates/project/images/L3-center.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/templates/project/images/L3-li-top.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/templates/project/images/L3-ul-top.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/templates/project/images/vertical-line.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/templates/project/images/white-highlight.png delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/templates/project/manifest.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/compass-slickmap-0.2.3/templates/project/sitemap.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/configuration-1.1.0/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/configuration-1.1.0/README.erb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/configuration-1.1.0/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/configuration-1.1.0/config/a.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/configuration-1.1.0/config/b.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/configuration-1.1.0/config/c.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/configuration-1.1.0/config/d.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/configuration-1.1.0/config/e.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/configuration-1.1.0/configuration.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/configuration-1.1.0/lib/configuration.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/configuration-1.1.0/samples/a.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/configuration-1.1.0/samples/b.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/configuration-1.1.0/samples/c.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/configuration-1.1.0/samples/d.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/configuration-1.1.0/samples/e.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/diff-lcs-1.1.2/ChangeLog delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/diff-lcs-1.1.2/Install delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/diff-lcs-1.1.2/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/diff-lcs-1.1.2/Rakefile delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/diff-lcs-1.1.2/bin/htmldiff delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/diff-lcs-1.1.2/bin/ldiff delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/diff-lcs-1.1.2/lib/diff/lcs.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/diff-lcs-1.1.2/lib/diff/lcs/array.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/diff-lcs-1.1.2/lib/diff/lcs/block.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/diff-lcs-1.1.2/lib/diff/lcs/callbacks.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/diff-lcs-1.1.2/lib/diff/lcs/change.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/diff-lcs-1.1.2/lib/diff/lcs/hunk.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/diff-lcs-1.1.2/lib/diff/lcs/ldiff.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/diff-lcs-1.1.2/lib/diff/lcs/string.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/diff-lcs-1.1.2/tests/00test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/.autotest delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/.document delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/.gitignore delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/LICENSE delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/README.rdoc delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/VERSION delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/extlib.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/array.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/assertions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/blank.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/boolean.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/byte_array.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/class.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/datetime.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/dictionary.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/hash.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/hook.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/inflection.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/lazy_array.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/lazy_module.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/logger.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/mash.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/module.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/nil.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/numeric.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/object.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/object_space.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/pathname.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/pooling.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/rubygems.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/simple_set.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/string.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/struct.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/symbol.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/time.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/lib/extlib/virtual_file.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/array_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/blank_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/byte_array_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/class_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/datetime_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/hash_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/hook_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/inflection/plural_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/inflection/singular_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/inflection_extras_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/lazy_array_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/lazy_module_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/mash_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/module_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/object_space_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/object_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/pooling_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/rcov.opts delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/simple_set_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/spec.opts delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/spec_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/string_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/struct_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/symbol_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/time_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/try_call_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/try_dup_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/spec/virtual_file_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/tasks/ci.rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/tasks/metrics.rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/tasks/spec.rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/tasks/yard.rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/extlib-0.9.14/tasks/yardstick.rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/fancy-buttons-0.3.7/README.markdown delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/fancy-buttons-0.3.7/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/fancy-buttons-0.3.7/fancy-buttons.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/fancy-buttons-0.3.7/lib/fancy-buttons.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/fancy-buttons-0.3.7/lib/sass/_fancy_buttons.sass delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/fancy-buttons-0.3.7/lib/sass/_fancy_gradient.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/fancy-buttons-0.3.7/lib/templates/project/button_bg.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/fancy-buttons-0.3.7/lib/templates/project/buttons.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/fancy-buttons-0.3.7/lib/templates/project/index.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/fancy-buttons-0.3.7/lib/templates/project/manifest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/.yardopts delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/CONTRIBUTING delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/MIT-LICENSE delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/README.md delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/REVISION delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/VERSION delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/VERSION_NAME delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/bin/css2sass delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/bin/haml delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/bin/html2haml delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/bin/sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/extra/haml-mode.el delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/extra/sass-mode.el delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/extra/update_watch.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/init.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/buffer.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/engine.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/error.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/exec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/filters.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/helpers.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/helpers/action_view_extensions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/helpers/action_view_mods.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/helpers/xss_mods.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/html.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/precompiler.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/shared.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/template.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/template/patch.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/template/plugin.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/util.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/version.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/css.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/engine.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/environment.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/error.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/files.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/plugin.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/plugin/merb.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/plugin/rack.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/plugin/rails.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/repl.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/bool.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/color.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/funcall.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/functions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/lexer.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/literal.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/number.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/operation.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/parser.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/string.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/unary_operation.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/variable.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/comment_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/debug_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/directive_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/for_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/if_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/import_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/mixin_def_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/mixin_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/prop_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/rule_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/variable_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/while_node.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/rails/init.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/benchmark.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/engine_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/helper_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/html2haml_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/markaby/standard.mab delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/mocks/article.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/content_for_layout.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/eval_suppressed.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/filters.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/helpers.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/helpful.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/just_stuff.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/list.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/nuke_inner_whitespace.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/nuke_outer_whitespace.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/original_engine.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/partial_layout.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/partials.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/render_layout.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/silent_script.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/standard.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/tag_parsing.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/very_basic.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/whitespace_handling.xhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/rhtml/_av_partial_1.rhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/rhtml/_av_partial_2.rhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/rhtml/action_view.rhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/rhtml/standard.rhtml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/spec/README.md delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/spec/lua_haml_spec.lua delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/spec/ruby_haml_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/spec/tests.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/template_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_av_partial_1.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_av_partial_1_ugly.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_av_partial_2.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_av_partial_2_ugly.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_layout.erb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_layout_for_partial.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_partial.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_text_area.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/action_view.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/action_view_ugly.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/breakage.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/content_for_layout.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/eval_suppressed.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/filters.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/helpers.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/helpful.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/just_stuff.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/list.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/nuke_inner_whitespace.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/nuke_outer_whitespace.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/original_engine.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/partial_layout.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/partialize.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/partials.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/render_layout.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/silent_script.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/standard.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/standard_ugly.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/tag_parsing.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/very_basic.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/whitespace_handling.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/util_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/linked_rails.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/css2sass_test.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/engine_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/functions_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_results/more1.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_results/more1_with_line_comments.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_results/more_import.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_templates/_more_partial.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_templates/more1.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_templates/more_import.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/plugin_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/alt.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/basic.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/compact.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/complex.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/compressed.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/expanded.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/import.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/line_numbers.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/mixins.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/multiline.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/nested.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/parent_ref.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/script.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/subdir/nested_subdir/nested_subdir.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/subdir/subdir.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/units.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/script_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/_partial.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/alt.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/basic.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/bork.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/bork2.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/compact.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/complex.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/compressed.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/expanded.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/import.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/importee.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/line_numbers.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/mixins.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/multiline.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/nested.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/parent_ref.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/script.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/subdir/nested_subdir/_nested_partial.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/subdir/nested_subdir/nested_subdir.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/subdir/subdir.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/units.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/test_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/CHANGELOG delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/INSTALL delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/LICENSE delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/TODO delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/ansi_colors.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/asking_for_arrays.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/basic_usage.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/color_scheme.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/limit.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/menus.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/overwrite.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/page_and_wrap.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/password.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/trapping_eof.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/using_readline.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/color_scheme.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/compatibility.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/import.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/menu.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/question.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/system_extensions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/setup.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/tc_color_scheme.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/tc_highline.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/tc_import.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/tc_menu.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/ts_all.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/http-access2.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/http-access2/cookie.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/http-access2/http.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/auth.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/cacert.p7s delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/cacert_sha1.p7s delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/connection.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/cookie.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/http.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/session.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/ssl_config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/timeout.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/util.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/tags delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/.require_paths delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/CHANGES delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/COPYING delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/GPL delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/TODO delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/VERSION delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/generator_benchmark.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/parser_benchmark.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/bin/edit_json.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/bin/prettify_json.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/data/example.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/data/index.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/data/prototype.js delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/generator.bundle delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/generator/Makefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/generator/extconf.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/generator/generator.bundle delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/generator/generator.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/generator/generator.o delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/generator/mkmf.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/generator/unicode.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/generator/unicode.h delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/generator/unicode.o delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/parser.bundle delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/parser/Makefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/parser/extconf.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/parser/mkmf.log delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/parser/parser.bundle delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/parser/parser.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/parser/parser.o delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/parser/parser.rl delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/parser/unicode.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/parser/unicode.h delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/ext/json/ext/parser/unicode.o delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/install.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/Array.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/FalseClass.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/Hash.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/Key.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/NilClass.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/Numeric.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/String.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/TrueClass.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/add/core.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/add/rails.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/common.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/editor.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/ext.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/json.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/pure.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/pure/generator.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/pure/parser.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/lib/json/version.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail1.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail10.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail11.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail12.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail13.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail14.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail18.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail19.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail2.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail20.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail21.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail22.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail23.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail24.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail25.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail27.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail28.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail3.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail4.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail5.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail6.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail7.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail8.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/fail9.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/pass1.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/pass15.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/pass16.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/pass17.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/pass2.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/pass26.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/fixtures/pass3.json delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/test_json.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/test_json_addition.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/test_json_encoding.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/test_json_fixtures.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/test_json_generate.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/test_json_rails.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tests/test_json_unicode.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tools/fuzz.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/tools/server.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/CHANGES delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/COPYING delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/GPL delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/TODO delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/VERSION delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/generator_benchmark.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/benchmarks/parser_benchmark.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/bin/edit_json.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/bin/prettify_json.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/data/example.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/data/index.html delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/data/prototype.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/ext/json/ext/generator/extconf.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/ext/json/ext/generator/generator.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/ext/json/ext/generator/unicode.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/ext/json/ext/generator/unicode.h delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/ext/json/ext/parser/extconf.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/ext/json/ext/parser/parser.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/ext/json/ext/parser/parser.rl delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/ext/json/ext/parser/unicode.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/ext/json/ext/parser/unicode.h delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/install.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/Array.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/FalseClass.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/Hash.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/Key.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/NilClass.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/Numeric.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/String.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/TrueClass.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/add/core.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/add/rails.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/common.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/editor.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/ext.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/json.xpm delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/pure.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/pure/generator.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/pure/parser.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/lib/json/version.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail1.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail10.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail11.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail12.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail13.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail14.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail18.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail19.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail2.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail20.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail21.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail22.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail23.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail24.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail25.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail27.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail28.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail3.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail4.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail5.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail6.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail7.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail8.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/fail9.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/pass1.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/pass15.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/pass16.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/pass17.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/pass2.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/pass26.json delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/fixtures/pass3.json delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/test_json.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/test_json_addition.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/test_json_encoding.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/test_json_fixtures.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/test_json_generate.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/test_json_rails.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tests/test_json_unicode.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tools/fuzz.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/tools/server.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/HISTORY delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/LICENSE delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/Rakefile delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/bin/launchy delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/gemspec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/lib/launchy.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/lib/launchy/application.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/lib/launchy/browser.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/lib/launchy/command_line.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/lib/launchy/paths.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/lib/launchy/version.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/spec/application_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/spec/browser_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/spec/launchy_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/spec/paths_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/spec/spec_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/spec/tattle-host-os.yml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/spec/version_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/tasks/announce.rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/tasks/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/tasks/distribution.rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/tasks/documentation.rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/tasks/rspec.rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/tasks/rubyforge.rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/launchy-0.3.5/tasks/utils.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/COPYING delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/KNOWN-ISSUES delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/RDOX delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/SPEC delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/bin/rackup delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/contrib/rack_logo.svg delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/example/lobster.ru delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/example/protectedlobster.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/example/protectedlobster.ru delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/adapter/camping.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/auth/abstract/handler.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/auth/abstract/request.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/auth/basic.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/auth/digest/md5.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/auth/digest/nonce.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/auth/digest/params.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/auth/digest/request.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/builder.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/cascade.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/chunked.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/commonlogger.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/conditionalget.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/content_length.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/content_type.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/deflater.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/directory.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/etag.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/file.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/handler.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/handler/cgi.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/handler/evented_mongrel.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/handler/fastcgi.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/handler/lsws.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/handler/mongrel.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/handler/scgi.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/handler/swiftiplied_mongrel.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/handler/thin.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/handler/webrick.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/head.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/lint.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/lobster.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/lock.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/logger.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/methodoverride.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/mime.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/mock.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/nulllogger.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/recursive.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/reloader.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/request.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/response.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/rewindable_input.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/runtime.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/sendfile.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/server.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/session/abstract/id.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/session/cookie.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/session/memcache.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/session/pool.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/showexceptions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/showstatus.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/static.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/urlmap.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/utils.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/rack.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_auth_basic.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_auth_digest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_builder.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_camping.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_cascade.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_cgi.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_chunked.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_commonlogger.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_conditionalget.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_config.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_content_length.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_content_type.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_deflater.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_directory.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_etag.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_fastcgi.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_file.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_handler.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_head.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_lint.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_lobster.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_lock.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_logger.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_methodoverride.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_mock.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_mongrel.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_nulllogger.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_recursive.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_request.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_response.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_rewindable_input.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_runtime.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_sendfile.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_session_cookie.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_session_memcache.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_session_pool.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_showexceptions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_showstatus.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_static.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_thin.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_urlmap.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_utils.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_webrick.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rackup.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/.document delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/.gitignore delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/History.txt delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/MIT-LICENSE.txt delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/README.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/Thorfile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/mock_session.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/cookie_jar.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/methods.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/mock_digest_request.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/uploaded_file.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/utils.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/rack-test.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/fixtures/config.ru delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/fixtures/fake_app.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/fixtures/foo.txt delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test/cookie_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test/digest_auth_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test/multipart_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test/utils_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/spec.opts delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/spec_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/CHANGES delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/MIT-LICENSE delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/TODO delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/bin/rake delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/command_line_usage.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/Rakefile1 delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/Rakefile2 delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/a.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/b.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/main.c delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/glossary.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/jamis.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/proto_rake.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/rake.1.gz delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/rakefile.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/rational.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.4.14.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.4.15.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.5.0.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.5.3.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.5.4.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.6.0.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.7.0.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.7.1.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.7.2.rdoc delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.7.3.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.0.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.2.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.3.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.4.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.5.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.6.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.7.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/install.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/alt_system.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/classic_namespace.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/clean.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/compositepublisher.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/ftptools.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/publisher.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/rubyforgepublisher.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/sshpublisher.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/sys.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/gempackagetask.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/loaders/makefile.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/packagetask.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/rdoctask.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/ruby182_test_unit_fix.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/runtest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/tasklib.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/testtask.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/win32.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/capture_stdout.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/check_expansion.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/check_no_expansion.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/contrib/test_sys.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/chains/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/default/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/dryrun/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/file_creation_task/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/imports/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/imports/deps.mf delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/multidesc/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/namespace/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/rakelib/test1.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/rbext/rakefile.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/sample.mf delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/statusreturn/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/unittest/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/filecreation.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/functional.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/in_environment.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/rake_test_setup.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/reqfile.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/reqfile2.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/session_functional.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/shellcommand.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_application.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_clean.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_definitions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_earlytime.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_extension.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_file_creation_task.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_file_task.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_filelist.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_fileutils.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_ftp.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_invocation_chain.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_makefile_loader.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_multitask.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_namespace.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_package_task.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_pathmap.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_pseudo_status.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_rake.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_rdoc_task.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_require.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_rules.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_task_arguments.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_task_manager.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_tasklib.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_tasks.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_test_task.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_top_level_functions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_win32.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/COPYING delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/Rakefile delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/bin/shotgun delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/lib/shotgun.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/shotgun.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/AUTHORS delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/CHANGES delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/LICENSE delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/README.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/app_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/application_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/builder_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/compat_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/custom_error_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/erb_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/events_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/filter_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/haml_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/mapped_error_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/pipeline_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/public/foo.xml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/sass_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/sessions_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/streaming_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/sym_params_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/template_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/use_in_file_templates_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo.builder delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo.erb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo_layout.erb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo_layout.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/foo.builder delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/foo.erb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/foo.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/foo.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/layout.builder delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/layout.erb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/layout.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/layout.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/no_layout/no_layout.builder delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/no_layout/no_layout.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/base.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/compat.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/images/404.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/images/500.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/main.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/showexceptions.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test/bacon.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test/rspec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test/spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test/unit.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/sinatra.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/base_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/builder_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/contest.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/data/reload_app_file.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/erb_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/extensions_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/filter_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/haml_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/helpers_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/mapped_error_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/middleware_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/options_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/render_backtrace_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/request_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/response_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/result_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/route_added_hook_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/routing_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/sass_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/server_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/sinatra_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/static_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/templates_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/test_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/error.builder delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/error.erb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/error.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/error.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/foo/hello.test delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.builder delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.erb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.sass delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.test delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/layout2.builder delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/layout2.erb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/layout2.haml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/layout2.test delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/.gitignore delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/LICENSE delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/README.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/lib/sinatra/content_for.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/sinatra-content-for.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/test/content_for_test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/.gitignore delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/README.markdown delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/VERSION delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/bin/smusher delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/lib/smusher.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/lib/smusher/puny_png.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/lib/smusher/smush_it.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/smusher.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/empty/.gitignore delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/ad.gif delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/add.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/drink_empty.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/logo.gif delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/people.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/water.JPG delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/woman.jpeg delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/out/ad.gif delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/out/people.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/reduced/add.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/reduced/add_puny.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/reduced/fam.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/smusher/puny_png_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/smusher/smush_it_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/smusher_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/spec_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/Rakefile delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/bin/sprocketize delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/ext/nph-sprockets.cgi delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/concatenation.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/environment.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/error.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/pathname.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/preprocessor.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/secretary.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/source_file.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/source_line.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/version.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/one.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/two.png delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/assets/stylesheets/script_with_assets.css delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/constants.yml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_ignored_when_strip_comments_is_false.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_removed_by_default.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/multiline_comments_should_be_removed_by_default.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_after_it_has_already_been_required_should_do_nothing.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_that_does_not_exist_should_raise_an_error.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/requiring_a_single_file_should_replace_the_require_comment_with_the_file_contents.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/requiring_the_current_file_should_do_nothing.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/constants.yml delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/foo.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/foo/bar.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/foo/foo.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/script_with_assets.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_concatenation.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_environment.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_pathname.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_preprocessor.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_secretary.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_source_file.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_source_line.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/History.txt delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/Manifest.txt delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/README.rdoc delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater/actions/action.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater/actions/directory.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater/actions/empty_directory.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater/actions/file.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater/actions/template.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater/capture_helpers.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater/cli/generator.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater/cli/manifold.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater/cli/parser.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater/core_ext/kernel.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater/core_ext/string.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater/description.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater/discovery.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater/generator.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater/manifold.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/lib/templater/spec/helpers.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/script/console delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/script/destroy delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/script/generate delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/actions/directory_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/actions/empty_directory_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/actions/file_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/actions/template_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/core_ext/string_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/generator/actions_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/generator/arguments_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/generator/desc_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/generator/destination_root_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/generator/empty_directories_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/generator/files_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/generator/generators_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/generator/glob_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/generator/invocations_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/generator/invoke_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/generator/options_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/generator/render_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/generator/source_root_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/generator/templates_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/manifold_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/options_parser_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/results/erb.rbs delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/results/file.rbs delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/results/random.rbs delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/results/simple_erb.rbs delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/spec_helper.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/spec_helpers_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/templater_spec.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/templates/erb.rbt delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/templates/glob/README delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/templates/glob/arg.js delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/templates/glob/hellothar.%feh% delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/templates/glob/hellothar.html.%feh% delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/templates/glob/subfolder/jessica_alba.jpg delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/templates/glob/subfolder/monkey.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/templates/glob/test.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/templates/literals_erb.rbt delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/templates/simple.rbt delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/spec/templates/simple_erb.rbt delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/templater.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/yui-compressor-0.9.1/Rakefile delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/yui-compressor-0.9.1/lib/yui/compressor.rb delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/gems/yui-compressor-0.9.1/test/compressor_test.rb delete mode 100755 lib/middleman/vendor/gems/ruby/1.9.1/gems/yui-compressor-0.9.1/vendor/yuicompressor-2.4.2.jar delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/compass-0.10.0.pre4.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/compass-colors-0.3.1.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/compass-slickmap-0.2.3.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/configuration-1.1.0.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/diff-lcs-1.1.2.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/extlib-0.9.14.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/fancy-buttons-0.3.7.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/haml-2.2.17.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/highline-1.5.1.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/httpclient-2.1.5.2.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/json-1.2.0.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/json_pure-1.2.0.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/launchy-0.3.5.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/rack-1.1.0.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/rack-test-0.5.3.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/rake-0.8.7.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/shotgun-0.5.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/sinatra-0.9.4.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/sinatra-content-for-0.2.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/smusher-0.4.2.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/sprockets-1.0.2.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/templater-1.0.0.gemspec delete mode 100644 lib/middleman/vendor/gems/ruby/1.9.1/specifications/yui-compressor-0.9.1.gemspec diff --git a/Gemfile b/Gemfile deleted file mode 100644 index b1f3bf60..00000000 --- a/Gemfile +++ /dev/null @@ -1,19 +0,0 @@ -bundle_path "lib/middleman/vendor/gems" -bin_path "lib/middleman/vendor/bin" -# disable_rubygems -# disable_system_gems - -gem "shotgun" -gem "templater" -gem "sprockets" -gem "sinatra", "1.0.a" -gem "sinatra-content-for" -gem "rack-test" -gem "yui-compressor" -gem "haml" -gem "compass", "0.10.0.pre5" -gem "compass-colors" -gem "fancy-buttons" -gem "json_pure" -gem "smusher" -gem "compass-slickmap" \ No newline at end of file diff --git a/Rakefile b/Rakefile index 6e92190c..59876998 100644 --- a/Rakefile +++ b/Rakefile @@ -15,8 +15,25 @@ begin gem.executables = %w(mm-init mm-build mm-server) gem.add_dependency("rack") gem.add_dependency("thin") + + gem.add_dependency("shotgun") + gem.add_dependency("templater") + gem.add_dependency("sprockets") + gem.add_dependency("sinatra", "1.0.a") + gem.add_dependency("sinatra-content-for") + gem.add_dependency("rack-test") + gem.add_dependency("yui-compressor") + gem.add_dependency("haml") + gem.add_dependency("compass", "0.10.0.pre5") + gem.add_dependency("compass-colors") + gem.add_dependency("fancy-buttons") + gem.add_dependency("json_pure") + gem.add_dependency("smusher") + gem.add_dependency("compass-slickmap") + gem.add_development_dependency("rspec") gem.add_development_dependency("cucumber") + gem.add_development_dependency("jeweler") end Jeweler::GemcutterTasks.new diff --git a/VERSION b/VERSION index c317a918..3f8dcd03 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.13.1 +0.13.2 \ No newline at end of file diff --git a/lib/middleman.rb b/lib/middleman.rb index 4028e716..f731059d 100755 --- a/lib/middleman.rb +++ b/lib/middleman.rb @@ -1,5 +1,5 @@ libdir = File.dirname(__FILE__) $LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir) -require 'middleman/vendor/gems/environment' +require 'rubygems' require 'middleman/base' \ No newline at end of file diff --git a/lib/middleman/vendor/bin/compass b/lib/middleman/vendor/bin/compass deleted file mode 100755 index 13024947..00000000 --- a/lib/middleman/vendor/bin/compass +++ /dev/null @@ -1,3 +0,0 @@ -#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -require File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/environment")) -load File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/gems/compass-0.10.0.pre5/bin/compass")) \ No newline at end of file diff --git a/lib/middleman/vendor/bin/css2sass b/lib/middleman/vendor/bin/css2sass deleted file mode 100755 index fe955763..00000000 --- a/lib/middleman/vendor/bin/css2sass +++ /dev/null @@ -1,3 +0,0 @@ -#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -require File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/environment")) -load File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/gems/haml-2.2.17/bin/css2sass")) \ No newline at end of file diff --git a/lib/middleman/vendor/bin/edit_json.rb b/lib/middleman/vendor/bin/edit_json.rb deleted file mode 100755 index a9fa9ec8..00000000 --- a/lib/middleman/vendor/bin/edit_json.rb +++ /dev/null @@ -1,3 +0,0 @@ -#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -require File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/environment")) -load File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/gems/json-1.2.0/bin/edit_json.rb")) \ No newline at end of file diff --git a/lib/middleman/vendor/bin/haml b/lib/middleman/vendor/bin/haml deleted file mode 100755 index f58c3090..00000000 --- a/lib/middleman/vendor/bin/haml +++ /dev/null @@ -1,3 +0,0 @@ -#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -require File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/environment")) -load File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/gems/haml-2.2.17/bin/haml")) \ No newline at end of file diff --git a/lib/middleman/vendor/bin/html2haml b/lib/middleman/vendor/bin/html2haml deleted file mode 100755 index 7134ea5a..00000000 --- a/lib/middleman/vendor/bin/html2haml +++ /dev/null @@ -1,3 +0,0 @@ -#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -require File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/environment")) -load File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/gems/haml-2.2.17/bin/html2haml")) \ No newline at end of file diff --git a/lib/middleman/vendor/bin/htmldiff b/lib/middleman/vendor/bin/htmldiff deleted file mode 100755 index 8967c07e..00000000 --- a/lib/middleman/vendor/bin/htmldiff +++ /dev/null @@ -1,3 +0,0 @@ -#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -require File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/environment")) -load File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/gems/diff-lcs-1.1.2/bin/htmldiff")) \ No newline at end of file diff --git a/lib/middleman/vendor/bin/ldiff b/lib/middleman/vendor/bin/ldiff deleted file mode 100755 index 6da03082..00000000 --- a/lib/middleman/vendor/bin/ldiff +++ /dev/null @@ -1,3 +0,0 @@ -#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -require File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/environment")) -load File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/gems/diff-lcs-1.1.2/bin/ldiff")) \ No newline at end of file diff --git a/lib/middleman/vendor/bin/prettify_json.rb b/lib/middleman/vendor/bin/prettify_json.rb deleted file mode 100755 index f7642269..00000000 --- a/lib/middleman/vendor/bin/prettify_json.rb +++ /dev/null @@ -1,3 +0,0 @@ -#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -require File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/environment")) -load File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/gems/json-1.2.0/bin/prettify_json.rb")) \ No newline at end of file diff --git a/lib/middleman/vendor/bin/rackup b/lib/middleman/vendor/bin/rackup deleted file mode 100755 index e9c6c1f1..00000000 --- a/lib/middleman/vendor/bin/rackup +++ /dev/null @@ -1,3 +0,0 @@ -#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -require File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/environment")) -load File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/gems/rack-1.1.0/bin/rackup")) \ No newline at end of file diff --git a/lib/middleman/vendor/bin/rake b/lib/middleman/vendor/bin/rake deleted file mode 100755 index 29b9f65a..00000000 --- a/lib/middleman/vendor/bin/rake +++ /dev/null @@ -1,3 +0,0 @@ -#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -require File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/environment")) -load File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/gems/rake-0.8.7/bin/rake")) \ No newline at end of file diff --git a/lib/middleman/vendor/bin/sass b/lib/middleman/vendor/bin/sass deleted file mode 100755 index 3675e7b4..00000000 --- a/lib/middleman/vendor/bin/sass +++ /dev/null @@ -1,3 +0,0 @@ -#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -require File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/environment")) -load File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/gems/haml-2.2.17/bin/sass")) \ No newline at end of file diff --git a/lib/middleman/vendor/bin/shotgun b/lib/middleman/vendor/bin/shotgun deleted file mode 100755 index 52a02d61..00000000 --- a/lib/middleman/vendor/bin/shotgun +++ /dev/null @@ -1,3 +0,0 @@ -#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -require File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/environment")) -load File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/gems/shotgun-0.6/bin/shotgun")) \ No newline at end of file diff --git a/lib/middleman/vendor/bin/smusher b/lib/middleman/vendor/bin/smusher deleted file mode 100755 index aede0aed..00000000 --- a/lib/middleman/vendor/bin/smusher +++ /dev/null @@ -1,3 +0,0 @@ -#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -require File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/environment")) -load File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/gems/smusher-0.4.2/bin/smusher")) \ No newline at end of file diff --git a/lib/middleman/vendor/bin/sprocketize b/lib/middleman/vendor/bin/sprocketize deleted file mode 100755 index 79f96805..00000000 --- a/lib/middleman/vendor/bin/sprocketize +++ /dev/null @@ -1,3 +0,0 @@ -#!/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby -require File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/environment")) -load File.expand_path(File.join(File.dirname(__FILE__), "../gems/ruby/1.8/gems/sprockets-1.0.2/bin/sprocketize")) \ No newline at end of file diff --git a/lib/middleman/vendor/gems/environment.rb b/lib/middleman/vendor/gems/environment.rb deleted file mode 100644 index 23b0cdfc..00000000 --- a/lib/middleman/vendor/gems/environment.rb +++ /dev/null @@ -1,4 +0,0 @@ -require 'rbconfig' -engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : 'ruby' -version = Config::CONFIG['ruby_version'] -require File.expand_path("../#{engine}/#{version}/environment", __FILE__) diff --git a/lib/middleman/vendor/gems/ruby/1.8/cache/compass-0.10.0.pre5.gem b/lib/middleman/vendor/gems/ruby/1.8/cache/compass-0.10.0.pre5.gem deleted file mode 100644 index 5a102743170bcdc4c3dcfdeff48f4d6fb74cad16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 832000 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 zߦV@7Xc@fsHai`P|$1Pi*;z{SrFlAVsDl5jOSbyZdN8Z6=$y*b+DpW_<3TykZ z-5tt-73tIUjvm{?9$W_LI>j=Sesv4Yp+CK&2XPKNklM(SVu*{58$h+ANZyl7Tu<+L zH@377wP-Z(LaopFZ0aO!5o^G-S2Mvrsw{?r$%v!)NXSmyM#5Nd|g@ zS{fa2I+5oZSAYufi-fKNbEM+5pTY!H@C5U+PC0@$y!GMlx~j%ax?)*O^gy|$vs4pS z8nNlC_=A)P1Cid%9l^sJ?;lcR`wJh~tawR(Zw~xV7Ni0ci#BiX)~LoRbvmCw0M9>| z4Xx{>S+WM-yo2RJ3z)O3brWC$)=S}uOg2RGZq`7K-J{!N{RY+Rua~1>(p3R_TXqv5`%{(!b+H|FD;XmXs;$# z0Ak>3Guz6IYN-i*tJN_|-X9YAkBJPoZyYcRt4`_N8)M|eVDzLoCM$qo8oYhvzkN9? zT9qPo>sM*rJ~zMMBGipRl_l}PIVSX*sx!dw3)YNJH8uW-h?5P0KFt#0s}~@(Dwb9t zx~;2_aEI~Km8~2C`_*3CwSyu^^SlH`a)n4XhXQSYuK3-}zXY3g_P$3qQz3p$xe|~l z8x%mIZ@N=@>?)(JH0XgBU9Ba%N_3B#R)MHYR!aqE0Qn0azJ(O*D&kE21zNm9h=PabGdNvV1-dy=b*AoX5LgfdyZNpPQMSB2)ULu2YivLQtGRe72 zf{T&oGn4)TQ+??T8eYS}`oa+G_XWRj(vtPt1Z3slEPq&4FNsC{D%cXu52hJ@*7&m# zp*C~LG>(=Ia)ibXerCyv##cn8$enS6;+$Z<0kkHzL3|mC(1-KPQ2P|sA^l3<)|wF5 zbQsV@D@>B%W?D~)C?1WIy#mT|f%da9csB;i`a|5js`@X(uBM~`K+{3v0kg$|Bshap zng>bT?bIG&*odCT#uhKnA|bD$woO&fRk@nR@UC`T7xCHBkq~1;QXer0wQT4uCJ{$? zmV{57-m9BEL06rZP-a7ZtSF-mOvalC^cy*`jLBc&s$C~{CR5`W0Nv(j1_viU59r9^ zcGKoHC#Zgz@xUujqnUvl2pNlvRmG}5#vNd_$@g|O47YPL!OVz~=R>NUA@-;WpvLB&2$@jlR4^uq^o7@dm6M)d&Sp4Cpf`W0pi{2%bCG~fW4GIQYMQK zF^p@+gH}ONdCGnk&4{-?PQ+71VzL8)734D3g2)&n1{hYG~4oVZsVs+=3p{8z(4gtcf#zHAl)% z)$$CdV#f>pbAOvsilrC1ymn46O_!KpKOd#y%$L7@~y$ zj%;3CmYcPu^4LPWop8>aplh3P7-q?3Xsj8rl;r6PIiZCuAsTgu4+vxYp5{! z8)&rHOU$1LNs%RvP9_t8mvfF_3`~u`D$MBwuzv}IhrRo^8^KpJTZO(^U&{CtNRyX= z{#K9i10thj=gw7Ex!jYY0|Bk&Qims%Nqp8EYg`AG1*r&TXH?4eE7w zDO_5?jKiBRJ3SHZWLy612zN_8e(FVis>V`IXl41*LANt*RppdbyU8!VtbHkbnr!l+ zgpMz)lh>%n2AT@x?ryxFv$Q5H*x84@)zL4cf#|)$$cA(#+DC87q07(p8z^snprKd- zmh4>R`{#pu%+t@3Lb*&tFSOQ1LNy(!&E@lr{z>XAWlYS(Do9AoRc)oLL?;kYl6ByP zV{Nt)VM~lBIS4-1Y5+IBk#8ZM4{5eU%p2#cz_nbwfC8eLb|wFalj9pf*zQb`{wqca zNAwLD@KM_}$DamP)RY2d^m)$tDSPjuo2mR+vLjhX)2*9|DAs@-Pj8t-#BfE+UQ+{| z**Jy!p?+tRsVliGRvYLv?(L^w!I7;ee35yT=w#c|+kP)iU-7iJX#=KjWHP{YBee4b zfG1AeBM_3iv}=>+t~TqjMoNQ?P-u#ama)(+4!S^;Awz9C{i`Q#&bj9B5qSjg%NXoo zXf0iGRT?IVRX{L!n#Ep~8Dh@6G#Usro*2fptIeG_OKqWX*sC^z4v7I)>t_|KiYZ{T zrBB6^&`ghCCP->p&1cNN^K0RM%ZWNYB#2G2tH0Zxbm0z+lqYpVjlp+Q&f#4 zP`Q+$H&stn6fHskNwZ&y8{jb$$m6K58kJIc*r(&H*gAU);*va;zwhmF@uR*ku8F6T z;n0+!)uYKKBpcTy{YeO~SYT0$0?D68CS3Jx+sMFmVTu$fRJDhr{a8Yzz{1iAW6PO7 zjkB*UK8bw@pBm3LIVV07Lw7^A_o5VwcB@=?G;c3^63XB(P! z?>6J-l6{F0zX6=WhCI|8t^t8D|q~fnS*EjHP=>sB^J$S zS}q*FC99o;Y_ABu+4m|Z?_(#AO30DT9fW6mfj%$C%>eQOJToV9w5cnY6jfIb2ks{n zDH-VCuWdv*uG}T33DFGwJ;ADU?&L$T!?%npEPWM9ncs0y`};!&#dW;Cw2u=N1>xRj*=aZ}zuQpX_Bs!?yzF zLtkX!pHW#>9mS`VilR#9y?rmXlE9MC>KsKoMNwF8OgMdpw22e*xn;XgZcB*tv}ao2 zzU7KgQEO}|JffrFM33Fo6Ozl`9*ZTa#|baY>tlsII!Tm|QD#}&r0i*o3A+K?s|Xs- zO#|V^ftt)UG}L6?1LY)#O=%!CW1KW>)N@W#L3~NV59)%vUkDmRl#Ms~2dAFQew}N2wb`h;XgkHvBU`WLZ1s4q7 zely0WhL8Wcc5wiscd&2lUC58PB9m(zvVutngkEO?CPnq6%?N;=s?Jrg^lT&yZxNh7 zPb3k_<||KfT=tukZQkM{SK1~#Gx>Es(hOIx0C`vv56XWjdG>wRbL;>+A3K!dE3#+;#T}2Wr#5*NATE7rjB1fAfmMR#?Fk^C|td%tfyD$r|A;e1& zHx)(=2^q{`%|f)Iy00T+H6EdnDHG)m|14T4IoP;V2}6xX2R~z3TsoA}lN5Igzx3S{ z&U^-Rq#$FD$>Erdo=wwQ0(7Z-q%Opr@V+nH`! zEBoD#j|hvxo?okQU|NzFfi!J}<*>Viv;7Jl2lZ|Zz;n4$2OJynQaa>J1+x=-vNwM; zbtY$qP`ag_wyXAwVZ6ZqVko2zxiE;Bn&u@RWQ{haE3*<96KSF`3C{<>-36sN5ys6} zR^LY2cA_1hBIFizR~>M!FW{^0;}@<;VcS}K-08<6W`;&*ZI;~_PB6CIn;I$5tpu_c zO0#w3OL}2*3Xsqftpia-iiU2`)8l_)kpKh_fsO1XQ*`N{fT&`I;}LQHjbJ28Q8j$G zDPu4r#5qn0z#7kiT-ew8>{*kLG*VYbfj*|!7O$QPH3h@{ALyM4>-R|= z4Fq~Oc6JJeM+QV6&@TjAzf2~5>j&oKOskO@Vbcj~Lo1Eus^R2!aumrY`;Hl?+-cQ= zeGsF$5vz(_Z@TrjYK=y!JzCg%noVYO^!epmVBD<9_Rpd#@La|*>j|vCzifhoW@T%7 z7;zDYW`(X**VdiuoPh3J*sQI&X<8AE8f)AJG{)%}Z6?ZtqzqcIwFCq!<>nk+?(jO( z>MC{()OtD|+g+++1d^20Ts+Hg)5lV5*^y1`8;07cJilC(6#)^ni`@1M1gDdj4sM@p-cSe{pG`Yz8KMb+q_g zFKzm6MEGDb#A7-f*4%Aeyw4lCJZ4g1P(okO19`hO#9HgYs4`p4UJ(#C_h(t6*4hcaCu)KQ`p zzkuyQTCCqX1f7dzEW$anaMw5uK^}d;xm+i?1}#RCJ%wq?PDbllyGMN{Og=@o#V=vT z{qtCZ`D{70dhg8`sWk?9S>P@wf+ z&kO3$r7>f}Ba*j@=BJ|sNt=??wlH2on(CUAYrP9Gy$3f_?N34!E|O8=LT#65up+0p zSESaA@LxoT!2U4d3=hod-)AMqBAQ5Vn8gjcIb~b&nP)aph}YAm&YM(z!W=EBhu)ec zZuZ=#N*ad;?0I?J=18*Ss8pKQo=EGiLv&)MyOm9*Ptt0%4P*&iks$w3l^>gGvMMlP zggNVUUi%v&dcM~=q`!HWT(3lxkEz4s+^VD>h7B$_a$v>u#x%DNsL+RJ>0GOPx79a@JJS`SS96#Rt>Hz297czn_ryc8BRoPl~ z%QxEqU+J5KgdN+neW8IAM#hyE@cJvIhaa^moFQMSO=l8IvgYBa1t?4L++H@Rjx&~A z-uS|ZD-H1$E8`Z?tbP<_?Y8SkOIPQzRh_!yBJpZUoTMY+C5yEc?T^haPC2TFTI7s? zB~&sDS$S#i)~uGTMFQ>R#~>nXSN8`El9-60N| zsx;BhmnTg{H)QMXsUw-}zvBrhZU+_uQFg!Yas1u|xKIpaI*i_-q~^8AWLiR#<%bMq z7U~4ko5rSHR>+6V{10NC-wwj-+Olhb3n^aXmOu zBohIv_ zA@-RX)g&u|b9P(@@4@HCf-X{BKZ{ex)4Yu|(?2AdxX@a(Hjn+~(XtTvsi#?emSNCz zmx1f2F`}5QA5<}NB8{r65yy$(>4qC5q(AlAUfx(hMzJdH?pMy3R;>Zeu*zsT*P!m3 zYE@|;(!`b{p{`5*&S_X?(Z_noCPD#fUXUb$lm4{HeLBujvX0skI-x8?rwO!B5U91{ zfc^Vr&?sK=u$u!e?p!arH*QnK_S#U>zp+6!%_;BeU=JKR+|9G=GOecBs4J6w_^X9= zOKT8GT#$bNE7zb>v=((&gEaZ)*7%8u{Y;DAyHXN0KyALt@e- z1H|KE>JLUrs|Qaoh6&p^XIA{UAi0S>JSts{t@z?IE5r+q569n`Le&u-;}_E37X7h# z0F&C9i)fQ{R4!bGGuCJ_U^aa82TxF*l1-bZV9sO}S^;!Sx>``m1TU0`$Je%do>4wI z;5+xAv$?cr0+vlqI-%MKdK03TKwbmg5UigtMSD{&R~(F6X0>LzOpgf12aFxFw+-j0ksufW%2~)!xf-84U4>7@+Cr|k zs{E~(DFzOgY?SX&rM{U}2tJh1b>#4%nbiH4WZ6x3xwOs~_O9^QY!U0wmXE?EXc=Kq zJChafsIUPn+TiKZQTO`%;9r>T1rShW{1l z(QWY7GWSV>-Qkbc<8tx2Z4u5kL+)kx)>lw%1&$+nIbNeW)e?P=G^M+g>KwMpmK-D1 zSu1Y43YcgN40(1omQe_Mf#PYK1u!Eq;PSV}eH$2?6<+)zd)4}57XN_PCnI^x+#L-4 zm(1XOkPNWWx~MS=4_)Qv*%0FtzN|P9Z!**9o7Kpx*bt8ds+UP_CS7$b(5mM{oh^RG z<=_ftmSjo{qEj%4vsi90rsWMs~k52Wvx6_Y*tA1Jem|d8k3?J4fs* z&TxTIGR^28K$mEy%ms>gze$llf4Mi>FtqWD8=8`<6Mb1Tw%gWR-W6R8wo$L8IsMwv z*-o00%f~Pj{&xGM)dhsb%Ys363aoi1&6fS`mfV?9bM-yaX<7E3_Ldq1e-}~cxhlx% z%Z78_<4sN^7c$XAG9msSR!u&)*)Iv`KGk)TqhE3UeBJpw@RyM;$_a zzroJy;9J5^p!)FOh~JL>dM95Q+o4SuZAYPPpGaML8q3b+_}+14d8LZfPNgmh!Lb+_ z{>n(sCu}y<2vB-CB<;`RtV3b6W606JDc}gT^AvDBKw$Y@kS!%T_m|!cZWagpsJ%&f zbY~fUVz0%L=wcbdABIl5v}BQ2r|2vyY1ZIqrW|8n(R^Q5eKkC;$q{Z!mfjiMPT|gB zb(@&p-FH0y)%H=JS5I$XcJ0_!?zVf!LmwfCrpsp8ZkgVBF-O)Mlk2s zE}Jq^3^Ca_@4q0n;#gbijg&sBB`n;=n=m%E+EBO3@hSc%z5y3c7>x6x;^)V^-)43( znA1wg-Y!qjT>SbCH$LOmxo&RI!drS(H47EO=*lw%eL6I%yz(9@gsc3`o-(vRx8(*YWc{1ItWf_UlL*LvdNVMd?KrnSWEIf$=UVyFH1=q?_tClq8}#Z?7YOS z45gkyesqC0pP}q&su4AVHl|%vW@aeAiGKFmQf60|IN%G-8w?n+CUTRFqTuTjl;paa z8VW9o_P|W78pd<+^|VCmckU`*kT*=qsv=n^Ac(!klLxBJ+3cb)-nt}i(1tqP@4la- zTHGdLPr$P;0R-pOjx@c$^rhbE){dc=8(e$ZHV28vTyeq&{rtd9__<3F;nq?^Wqbd# zXu)o9nKIx@%O0k(g(Wq}LGb!Q;Xtne9LeFil{9F?HLL2Mc{C=qtBv>K{-y1u2bLnl zcWpt1geD<6ucfOYD#Q6vYpsK_@T2IvgBR&`|287{m+-B?YV|3Cm$w`Oj_2-+C zF-Qi~r>5oHhcHtiFf;)*o?c5@C*bdeRlJ+4$~dN^GWYQVun*P$q}Oq@VpaaI>n?ib zfD>2)lc<7-c(`%+RBC8SGRn6l%cNyM(>0=E}?HKg&(fAM!>T zSf1YsDO~0htBm+Htpt)!Pj7&eD=q&V6Zm)O8YHka<&}4WU%M&-l(+1>Qe633lEFe8 zJL{ku5fIv2HCvl~X_rGLB~>dHT3}~pe-0REWh_0PhD)Cu9;e_ZB7{s$%At&su10(h zE6(AJmo56O!_V}f@2W03Cw@Exu{Iq;Z7W}qm+Zoj+||%j{-JjJ%2o&?@<0?^R4N{> zyZimz3O>{L=)%I!+h8`K7@~){$=eMG^mPrLRQqJ?KGmV>8FRPu-|!aAU+%(j+v%T7 zp(GN-nS#k7CcVu!YJ>b@#yHA{G`Wk>qQm*=UT8J2kj8Q5NeG`}`A%Q}ZCx|}j6e|# zRV_&LG)s@y6B(B6F1jzV8~|39x3961HwgwNFyBANPolL&FKy?l5`xYbwTmWTwMMH} z+8Gm{FtHL;F))hQyf7|$c#JxoWT1NG%hpq?+>QhzMD5{g&%6aj$%JIKY4L)YfIaj} zG_#r3wB6v?LXF^&^yLI4HD_D3VK&*rFZ9>cpJb)8e5mUB_db7HV)62Fk}$5~AxN z)#ogCm)JvNZ|=WQ;>Ruc%}_z(Ar-y0E~BsE#D>JHRCxNH&i@FXKkB( zLVCSveDQd0io%;L-x=9tFQhl$^`VVf(Qn?pILN-z+>V4;QQzW;gjC|Y^yj>Vh()Y> zvv6~9<|t_~k^dABxN+^^WjzpvHwN|v-gua8-N+;I!6os>xu&uA?iBOUtRd0i648tN zgW76iphoT|H{$r5F}90%;!%GmvP0)NwclKrr3W?ECUiRbblj6a-mn*Shvfx^RMT7h znTST4O_`fdSjMlj!PIPPeS3rvarEJEtvF(1$TrREh+1%DX)3XPYiJq4dPGQiB@M4I zZkAuV`n()dGF{2j@9erfaDTpkda&qZZU*w5)4_Dk?>fWLV>YMV4OY(CsPG!X#%m@~ zKo*QJv#e^CcEn3JbDgbSX1L{OVWd5Qy?#~ zl~L&yo7-Q)$=qAN==UHf-DIy5Rvd3iav&Gtmr8yHFCI2lVa}!thW(!w1^prlhoSrr zu6)0cWdbXIX?DwQtc8VkiZ!h?1qy%dR5ygrk~ppy>a(@z|G2f@zcHgc-i_z?Df_Bm zQ)g`Ro5v|tBVrd_Mm&X$oC7UlgY8H@<5qtKi{){8WXk^fBd1dr)wsW0NFlwVV5 zG;@nf)eg5#=V~hTLL>51Zn43xFc>$}<7i`pFp-88f5W~ua=?<(k7b@DJyB@=dm6^t zExw0hylrf(y$K;3o^W@k;bNcTLW;v4Ax*oNG(RJkY1@D@qS}Am-;uQI_j`MtX2&V4 zT}OI^WUbJ~i5)zXDhX3n_p;i|D`N8#hE_^)TRAoglxx8(hVu=m-h%;R-ZARd!iFf3 z;U7CMg;)zWc;Ui;5%XsrXKiq;c~E{3(g52S8F7#cjbq!cb~w z_O|r8HWzjz>AQ0_3T)?(>qL$*8Sm|Cb2(a*r_+$robMC=&%dOW3efCVVn&QW1emwq* zx?})NtW2l6UNUKb-Uru^=7_u$|DDaftd=tFRBBb0@k#u@TKlPP68sigItVvOFZ?uD zM&lUyTJHn8ut*>GSgXE=4hM`pMi50gysg4>Ji1rP^_FLj7_PlVNwA|_7K=D16H)D_ zBFJsowY4!*9xH{L%u6Vax`UMR$7yXHY~hkk#Ngtu(s2DUZsDKdpd`j;gPyr%U;V$y z@Lxg{%B2!jMvsY!^qDNuP3biAZl3N^NGSgp*PzDLMq0FhX+yZ{OHP&Tq<0h)E^kQE zvg*|1c!34ziG@057#9X(^u2~d-0{DDQnbl`5&AYhrg*$7qi2e%Wk`?ByHPBaz3QjF zE7WKCD-E3i!|UMF!dmF8eYYUamz#@;jpUU*6+ zlbrm5GY=+?dCFj^y#K++SraQ%WL3c4lS4DkDtlu*P1}4A4Z{6R>3H_iiWe4{<+55J zKY|%~l|fnne(gm;546{XGnL+vzqF=*?Twb-T&%|kAb1$3<7GMROAN31rZiv0gP&)s3yOpb6WgOdSo>m~;@al5%62YTpW<@2!oZI(OsM zFU@z5Dt+NXm%Xh>aX_m44Z@Z0-mb5{6PaNwb|3*2Am*zsD?IPXjrnXKQQ1D~zV%LY z2|Mu=`3Axc7snZ`YCdY*XD!4s=$Rp{oU%P+1^Zwb?<|ntZS+p0R?RbBKeuzdM-MaR zsV6O#oQ$z)yQ!>gOm{U90VuJ`}w`5qtN^jbd^~3z8NmyXxiNR%_+U6^R zfdm-XM?jD)0|t@c>ER$f#SX! z!dP>R;dZAl`Fjy{0t2%-M#I zJt)^h$Koa=sVsKOrAy?2ey@}?f@#8~A>e$&UU%w)KQ!1Tr#NU`{t)iO1i_tkCc$;l-VS;x3UkjV)%KJhjZyW z&X->e6y&7jLXCz7V*H?ZCuo%H?{c;vTFbBx!>D)JayCP`4o6Cg;M;YXNIqmrUezGs}Wn{l2BdhEB8(=E0FLX3CX!(r`?a1ua6I3bCdyOhyOIYjSgY{b&82Xm+i{cNaeWK zJKR<>T#kq?4>OkXJmnIhFYLzjLC8vkveZNjey3DogPM9Y>x}V#_l%4F_SU5E#zfv8 zk)F9eu}g7FDUqet@uM zYMse?^Edqr?=$e(;@57#*$S^ddt3F%)zNys3G-_SesvloCg=$wqI$YL&5J|_h;r-v zvT(|NBTn7I zsLygx5({)apnK4ouQ+_f%ZxK#5(85+I(&lXElo!}Ddn@Fsls>Osax<1a&Ahl8~GhU zeC{e!Z@E3W)H1`&CBpKG`tRK(ev{`OCvxAw(IB2!tp?|zuVxwN;|L@~(x|yMo|?ps zl8>0wF05DGyN=?=MZrWVILpeGZUttU7nV)K!z`4^pQkhWB!J9&_1wjC}TFEQUI)3q3# zu6Ts;kNB@egs4TSQLCV}%i%SF>{yEQC0Z$G$!maQ^+Ly}s#ZNOj&5|_fpKBOyrvST z2Ovju?01d;CQPL4x4Rv0okbZQ#KH5j$QeKw0}bd!N_iuWM}Ge8+=zx}FosfxHvViF z!<6vS<^u71d7>OEyzr4X$#jNI4n}PM1yxD(TxWtu3f?0f7pHLn!Qa?SE6_K}8Yj<8 z=x4bwv9>k7vb1-9{M{zmNz6L7rTo9_Mqe*rELkK`MJ%XIqVmQgOntZYceEfD=!?Pr zR7>GIy$!vM3%^m9ab1uVedu`O7{N0y91jSJS%{kJAN_@Tqr7#X!Ly{)xf$`cRU=B&!$b*4dDsnw zBJ|QNT@UEf2@{HiR7X_bg~z_C=F4=%5QM4lQfkCGrt*qEhp|PSH*7l=lbHU-5p#PE z&d!PPn@<5;=-`+CPEmztrt>3UPAPWil?xmqy^&AGL=U#K&$ZAe6)-ZZDU42{Fl6m8 zo23FMseydN{@FnGuO&S9cd~+JX#a&E5Mxh%o%95FiT~aHTqMa*I7OG*9jK{yoL@L~ zhA#lUu%~ITSt%`KIu!XjS^g6;?6=?QB1%i;SnOtH`itx3uNusFKE~ZYqr>12m+yh` zr97O0zkGjBtR2MsoxMV0*jM`9fl?_dEcep#n&Ih%rt<@zN{#xG24$pHZ#{V$KhWId zqaTJ*xd=|Ae*BaEI?2mZBFM2MfgWUJqtDfjz%i<&!0iVo(o5GqxVgQ?)=uE{iEW#- zNDGDNON^{iOT__SWG;$EM zL3hnYl(mt(ce4iuU*SNQHOjz=T(2V9ZgDX~80ygDFyl!?@Jk(EFb4LC^yjhaO?p3rjr>~lnQyLp;jKK%Sr%zS zJ$3Uq))ur#Le@&vBpYxr(&^_EHKOQ`SyR{`G9uljif8m3CV&x-cZ%AVBn~)&NXYbZ z&)T<&0g|R0Xb!L6#)Ch2Q>fS|Mutl@!JjQSdRifrAlo`2wESbhX0dL;Fqk#6a;Va^U;7< zEdTA`Ax#}#NG91c)DI#J#~cvkQ`~UTNI&iV9{^84u)o{tz{<@K4=G(-WQR^MMnR02 zaMz5P`2+xp@3c?v@D=WqPB}$73D{xoX%=`X zt&-Y%81swk$k2G4r{-Yg7&o(xQC}Zd-K-Utg?HD6PB#AooA_$q1B@6%79{Y{=X~Aj zIS@%*#g`sq>QT`4Z82R|ON68RDZ|t%Mj7%H|6!4d7xYiX1y#0Ol%L`vUf_~8Uy0Ri zQkPiNP^nm1uTIj15k3*jO$y+OV0ayj)TWrG1H6e`1Ae-#VLgMdMY?*<{q*(@z*O}1 zjskU2OIrt#G3*#`;~Bx)wsitCSUt%nrJ>|0vg4p90j;5zj{(z-z==f#-N|k92F4FH zL_Oa$RPN!~7MyW0G1dGcvprTi2m@49qEKvoT;h4EgX|gE$<1yZ`}sks|Q!3BepL5hw?rkR;3t@Qj^ELsp}T zg3XX`WI|qMEr`XVSNm}NLhUy$A?04BJImOEz>-Gr&M4wxK&Vzs5ULRXo-$cPcLwee z60m4)gKh4XLSD*MhyZ964-A4hL|B2Y24Az~@F^MEa9|9_fYuq+X>&?%UPf#ue=&FC zKG_<`1D_}JbBK`XrNc8 z>E4FOiq@G#d2W^nm7&{60+&WR%mBeWfyHgDC|bA%L=i*7wM(&xrWa8OUB;v#6DV%_ zEJ{O2i?nNGu-;_vPnA^O|ld^}i0g)6q zWIMn#HGy~mmb_T3UD)$FLwcfS3WcCDf!+TW@Qq{15LSm}?TvaFLkeRo1=Ivx-B`0Q zta2hyy>4{$jcho(GXe~!BQ>^6LJXB)Li&@9s|P-N|KqBq_F*8zp0XG~nt;FR2)pgg;exL=7JJ6atGjK*V}w`@6vS})7qy`MsxD53?DUYkP0$C3s&;3HYI|BE#kNNh0G8dBn zlJV4m{15x*vqI#9rA_R+w9`!y#-agujx)aVCY;$C>c)HNUcCt!y{ICpZF2=+o6o%2 z7NNUK#S2Sqi|{J}_#>XyKN7g~XEoWaYBEp_5n(pLayScC?a7|Fr^#oI{m&ML;#6X_ z>g4YCG4J`G2*v*<6PbAC!2aJKpI2`g-f(2(c-&4$4sKjG0)IQ;|Dz8-6#nfz@v7_K z&%yTE!Lh^PbMfKYf57h}Y8%h9mn@0=4*y@e_Cx8n!ow4sfpZ-ZcDJNYGZkH04|Ija zjP{SF-g@`?Wl(P8;JUuCjjvWOe&ip2e95bpF8Rel-RrJbuf6HijzizG{JqD%w)YJq z@rTbi^9vtX)_F+a!PPU;Gw%P$%rfPX51#X1*DqT#{PDwn_WKX5`7MrOaA0`dhu3a@ z*^@Pk|Gb~M_J38=caeV(*;9AFk9qcgHqm7NClB!d`{i@eNhd{C;u>Eh^I@M)ZFst=w;QcxY@#+Rc9%I$=iup)fFAnzA|5SN_I)_be5*m z<_Q4k;xLMa6n|pj*PF z1!}C6{n(5;1kP}hTdHq(?6U!0Ex5HDDOye8dVIGJXAk>sF>mgx1)~~W;>V+T%BDHhfP2_vXu^D?aiw1I zcV#=4$+GIZpJB|G#_n&AXO^ zC4KiNG~yREv)en|>QEMw7}Ld2Xadutu1>W=7B6pn7%JxjEuiXjpVLjm)Gs?X+$;0g z>zHEh@>;CdJvM2Y zlYm{6;WvhRc1ic*@8dG++V zWvpg*!dgL4RvMMbm}AzUDce$g6p$K1A_hy34!)!02nz})hGGLg$>Lh^qql{=9CVZVHydh$Qf znE}BD5~H(NMF8+(Po6Fy)cKPsm4`st2ZDLbE}1ivo>aE7l=N6a;!)|!Uv?L7fWdE+ z)k_(->XyEdz6~RNTQ-h*2O$caF*uTZ=h_9Q0P#B2QweN7cR*AKi?jhYX$V-Pie%L6 zdPUOAGUl_!%U1x$G3j^J#;bN6WD_)_X4nQv<$4+KptUJ8xuhF)8`x=LDowmTR5dh1 zs{{68QgJxp;jq^o*0v7(#bi~+dk%Nj<(RY;Gb9)lXk4lo_yxp2L#}k=#mblf8QAYS z=5N$3RpchGm&woxvNDS`pjrDA>300zE_0HMX-KqvT^#4#CjaQFBg`jR9P^%a}?VMh1xMgO_i)X zQaylSLH$<%HJdetpJCR{*4FLJS#OS7;StZ(8h%jwRy3?8?X<4b$1Y;#7vL>mdNJl! zG8}y_ttlT`ixp`$tY+ZRPN6$T_tGjfThUhS;b*VSXVU|Ar53SX;C)Yq--`g6Ctuc?{v&J1@jGizM;-H zyt#(doJ4FI9PO6|hUm_>1t}z(+1xKUrR;SYd95L6x6*1yKH6*#XRnw z2{>$n^*1i9BE5JkpcKV|=E*3*tRR@^4xK3Q4M`{BDr;1Fvm53sCfyx39k#fNj-e*& z8=HtqZj;oS*8(;Wn`782V8Lvq1$6A?ZUV?EGZ=Y83k7qftZ9}Wa8qGzvd42G?K+Gx z(WG^Cb*g2VwdO7HA;9#qCu z?=rrj1b*}S1)|T19CXQ}hoRjIoVrB8JTfNhL;Vi5&vVI2ya{w6f&aCz6^D)03icqJ z1k<68#;9SWq%io+RlP;6M*Ui->e!4qXZKpT^13FyH7PW2yJQE&<)qAiZOJBnAL}Gh zBKc2>42?M8lqk`eQ#4J7Utx-I;~WSw4~oo(B=evNf7N)k?I=WQedOQ9c9z*W)sa_ z_F*<{KesjL2anwfT!DYkdllLs93TdX6x5B3|GszD+lOv?^ZI{zPSU#_1va<;S0a^5 zrb7N-$sGJS;QzHBK2JUWFY>%U;P*9$-xuun!2v1%6mL<#*(C6jj7M@QHBIB5Eq!N(10k7Fw<;Z5+P&u|&z-?@H@4(xPoHiq-qm)ywnjbZc1SK zi6~$Og1-x{rLI2Qntdr1K@X1|Zdkdb+g|;`x)G;O{ z8Pe)5^l0iU8tMPqvBiV{VbiFDYbOh(FoAA^t1~ z{@m`aeXarMCQbd*u6?WN$~V?;EhqX{I^SF-%A1(^qA=Ojlm2qKW2I)*&560npaQPnvFp;*>DIha0!&wOR%=p5-9#9XxhMD zUxJ{J*Hm{SZG>sI%0Y3j(LaH=$ChcQ*rE;l(H-B;-Ozq#=Vz*F- z^hoE7t!L7;X6kme9k0m4P#Q@!Eldzxo^{jC6ZVoVC>CmkW!m5mpDxy&`9Jg8f81b9@~z|NOIs{WnX@M~m3YQm3h|&T^kb=C=;} z-TRG)T}JkL580Sp!~3_RiT%<`a=-MF+7HuKv-JHjZ=#!hJaM9%eK~WDrr8*CMBKaG z{j){yKCL6Qo0|d;tn<@tog4P{eDpEVqIe5Bmuyiy)x3DBMe%g=;^`K}GtG-#I5oWV0%v9c=W!UExsHVJw9HjDJSlUPT?`E237M;G zcsk}Pn_WcN+#<^67g4sbn6-#6rto4`F0q)UODqb17PEMX#jIXpG0T@&%=#r3vw(@k ztYC66E0|o=-doHHCc`V(npPx(>(_#0B^FXBxsXDsg%ny4OhH@g+L8U zK2JqhTexc;Sly@7>ZU!R#^vFkqC$C#!^Q8(AIPIHHZVFiIJ`lMZP_}yF`AIZHuJBU z&~o{0n`9fS)$LL=;WLk6AZnCyH^z3 zjkblVv=ylv8gfY;d<~Pjz-38Ky|K1*)DSKUu*Bu^B1!YpVZ@6g&rgRDFOEb%9Y(x3 zGW~QI@j^)T+!}VCNrt@0spW4 z@p5dXZkcZshaG;%p-TY1Bj9b%vzK7M%a$Fy^k7zIDMEheQA>_K z>6k>{VaK)|zT&K%$&*uSW$UKzLWSd(E?Kr@*-~F~P<|;i2=5X{L1PCUeDJbE599Ba z0vyYZKKP_W-yv;hz4RFQcZVLE+hHYqV|OI=>jz_>x_bSW->P=aYKPQb@$(fc*DZH; zU7RV8{^CFNpMK)bQ?I|_jN`9~+&=J!8$SDojm|fI`ql^6Ui*vpd{15TiR$_Hjy(I# zC!}t>=%wfW`{v8gdmyi(M_p3=Mjde0B)cYNYofBob&9cTRH5wq*_ z%T8E&*-zj5*1MJ&r{0kJ(Utd~WyG)ijdkp+?)>cwzVWrnitAFh7GCuIciwS}ecAK> zaQ2$?w?;R;A@ibhE~)?JP1U>p@6_R+e*D94*SAh@%}!m>ZVWDuzwOTFJW`3?f8FDE zU;2}g!ABnb@9H0acvYsny6dtVqOrF26-%67wg367yDz=%hL8OH_#c1qkqd8n_)XvI z*z&;n8FT9JZ@=~huY1n*uY2(N^h0Bhu6XqkU%c~#@!?Os>%Nt{I+qu|^vbQ5ut}oqo-N*A^t~~nv`m;WB=}7OZN1p%nSAE{P`rUuF z->Gf6{7qvIT=0%Fzcuo}!11?lz2(NQZ(V!)5g$71SC3tK)vNBk{%gbIef4F#e)`V) zPJTT9wTV9ew|q`o@u;mQQ@v^B=J9oxN|@-M4?{ zrJZ-*wk>kZ+1K29)GzP9>Bt}4c+#n(M|5qJuD<*;4_)=Hr7uXluki6tzwkBs|6DQq z=*b_uYt4>#E$=+#f(PVhXve(Lx%b@Xz54IJ|L+qXKI~)52gW{MJm@2TKXbix>#u%u z^w%%ja{VcpJ9eJ+j@$0P^M^yf>b~=}S3LKDYu@{i@||CP>7lD$Jbl%ae#bk1{+aLp zp9X*ZFrp_|oE?$6t5;(IALn@x!?b&Qk*$}%{EeB9{rvUUU;5z_+rRnzXK9!IzWSCE zuY2J^4_x#8Rm*Q*^Yf2Rr60QUE7xCHKl?5JS9Q|6H>6{Ma{F-uc&eee><#c=fgy<@!$h*d;f;;lmI8?a^aja{6U|`Tl=b z9&G!>sjo>CM&ESwyPyB~r^jb{f23Ca+ShUN^oj3o?|tt_wHpr^y70vlZ~yhj&x!S0 zCyf5=l;17+)y*gT+rdZO`;SLH|D8|&=LNr>{%d!_KDBn&k3MzZhM}+YZXO)D;IOOS zCvPy<947zc6RW$9eAaJYvE$SmKJ)hXzU|KKmu}o}>lMeWy!O47Uw3xCDE^`8zdf{h z$w5~h@|FL&@z@=&_|xyZ;&00Kzv1faBbOd^$L+U#_bV&r>pZ;uw z9y&kh5a8XG9S%hi_M?toa_C9Nv?Y%1JM1|tl4l(*?@X;d?&Oh|Dwkig@|1MH^|G73 z@Z9hIZWJ1L9&m(9{p}M+2)!HzFMEk4Tn3|uJ`P5{k@&rnj!yjU;I_WAByNT`E2Im6KO~;QF)w{gL0j`_6ZbeBrv2FH=77$EAP#&Y%8q;aS&x@7^nv%QpPw zJN?TqJpbmzm)HL4`CIR4Uvg35-OoGgH@{m0#Ox2sifezk?n5s;_KM=GZtr-+x#8%K zj=X58_J$X%sGj)d5BGlM3&($V-NsjZZT*d3PfrcM^{R{S`Q;l{pZmqX-1(cEZ}{f7 ze|q{Ko>=m^k<-pU^RV>I2fbapapgH@zGdhQ4^F<~h5Cv&kH7hyZ**>WcE|Jn^n>S@ z-gDe5Z~W}kk+*$u*Cpeb|BZZi!>{hneDReC9l7w_S5unpB}g0enNH4^i=$; z56Zv%#BI;H^4^!0A4);!%%2woAJE&sW?tc+t@RZ5#gOr{46MpR9TKOYi^TTc++l zbIVWf7}n2QdHb8+aGJIGcaI$Nn@6r){qp;tSn}MTUH82y>$~?H^3Kbbz5m#w5`U;& zapU>7SsVWFnw!(Vcu{fF)YrRSf5E>!`#G=v^Pe7m@qZt8&Z>|8{EQ!c>x?h|;oR$9 zwfvbMTzAu@mp|iMKm1Vcly|)7^dCO-`5*kx#NbcveZ%R8=N|1>zN!|#HTKnQgR4e9 za`K}`eD8JFe(MEafAL0xB59d7i)tSntKlR!d zMSnGY)s}BOvE-KGC%%2&H^2LO>+RS7e*hmq;J@KfS}~&DPX14xl;Z<`(!dpr1Pf@a z_c67eRIev?3$~*7Tzv@|8qu#Zt0@Y*{{X9x$noQ@aA{<(# zO43CwHE+>@emqD3c{wRR9z6K!Q(C}*!z8Dc<`5p+$IA9@+OuVGeY;M?jd7)j8R2#w z)`d$WKb-KSI_OP?iugaPtTj~z4off)^Epm5_C z?^XSJ7o@dM9o(6Fd0RO^vie5KixEnm(dfii+pqjU{{U}2c$JAS9JwH-9OJxvIH-1V z?S@OTT(LZm$I6U~p2(ek6-xV#*m&`;^U@m1v${krIK8*3a=dx1msE2dVm|22Ym-o@nCu0s@y~MHG0j=#OER!5s8ynl zJ{+1dd=J0L@z+q(p^BD2uTaNQbLl>(#4T7}eEY z?Wp}m+j-*(u<^gX$KUPNLFT#_yA!|F!)kY?lDbFq(60d?C%|WY@eQH&-nY{TL{V7k z$8t!OWoDj9LRf1u10KLCNFMiMPyIUc1P_pYlv(k=Thc82RK;H_^t0+nDk{QMi==fIY)pe%($> zN6eV`2~y3=SCMX7r+sTPOC0s#Xx>I<19Cot9q8-FfI3Snl7A=zff+0~tbM#}cfAUi ztyGz{HJ2PXqHoh?^)}uMd>`}Hu;&;0BBxNa81qn59Bo*w6)5al->ecxjmn*=W59eL zkH3zwwBB-4wv9@cPrbc@$vtU)fI$Vg0;St*%_OXk<44i~6zGkhVh+0I0@rcxRnen` zE6HB;R_vxKI`(bE?3Zl0noT(07A15v+VBYN>UV7g=a;h5 zFzy2#RBR$zry46r+02ED4Py11K(GX!dgl8)Hh-P}0B!56q%e=0MNh&Sd(%t3zBY3= zdzZPeSjep{VHYLzgk*BuPQbC*BxnyFI({rdPD@FEqSvoZ2%TwC%3aN6n^kM=?U4?- zys}0I9z1==U-$Uv9{$asb4zD(3z40!eJbT50?Qxy0GeZ?{+R*2vG0%Acpl!RbHnZo z>(K+Roz(Lt4zZ^*<7Yt#^&wxRQfx`* zk%k#c>;*o4fA!a1X46%ZyO-5>V&lCCO!OhM40Bh)RTdpoLv`nksw+mkWRhf3pB$H5 zzCVN3Q*DM8&$45gCv~gbf1NZJY??I^vO;J>k#e#uf)F(79r*i+9#DG+&+*k~{zS#2 z%ZleS{zx0Ha(tYxg~^K6qi;rkMVfS*YIz1;48?fwe&3Idjn$coGbjck?ZT$wZDpXz z)xx|k^VWBomFYuAKiGpB&+PP=@&GVl=i~3x?W)X#p_c=I-7i|Ra=bZ7-kVUyTrC_7 zkhiIBb#mZ3L_GOZo45VO@liosydL!7c;& z*-|yWlna|Jl2J5avV&`}K8l?7Gu_9Ft7&Hs^{7>3bsi={%u|R1WEB9Pj-N@O_x09E zt=Y>&pEZvW*nOjB6K)H+o9kLXQy`T$V!Oobe^dR#aj%xy|X(7A{jCQ3wmIk0(HNWi|&(VUnrA;U zwTk*VZDQ?}OsCdL)aG)Mds3SCkZ+GAZ;|lF#=4HK7I3-XlMv|Ff@mp(w~ntQ*lQL& zNghMa)PAy-C&aB|O|p0P`19wXqgnS50;IciD*-P_0yET}Wla#-2uN8aUHiTMNgw?u z@7JzK3x%>#ZPk=lTaA$VSf!g$MFO>n$}u~42gurwBzWsZ@?2A94;z{8Icxe+SH)uH zWr^)fVvc!-l4K1g_%6I}#{R>mI1zGT8*wKFbkfiard)1D3O8ei1r=O`c1If-h<900BvZ|yF3%(I-ZFV|2s<}aHU`Lj&f$<` z?2K(ZghreqNjrkeV3qCW^yPkg~xe z3<=V^46?La60OiG>+C1z5{B<*&=SJ@v^h%~$GoGk^UloGv>X_*A*)HJ7OEf{Tm|S#n zJWORI`liR-`EOoN$=0*1oE0B(Qcxzh3#I13nfX5|% zO3kw3mpC?+`9~~l{BG54$xN<`3E`UnKOBrf=A6MKIFU?lKSEY{s0O6!)#{JX! zXoR=H{{YA5p&_nmaLZn)A(!43N3(gJ>XNm57C*NJKZ+lyZbC^+N;V>fJ?b}K8`&qV zrqfVEoU!vU337~ImCn=mC$F88)a4|Xh-fQK?PiIkNp;6SZB=*k{yLSc!6nYOUTXG& zF5_gu-&vRzSh9G&*TmwZnykN1J$mmnlS;Z$S4GDa3^(KB`}EOVJm;-uvuUq40Y$Hw zse1!?tz*?PX|6I!$IMEA7}O|5NZq%;A3N8P)hq$SFj9u|d8)l^cQ0qgGBebc?pn$_ zWA0FNEV0O}bn*r8$~f^318d0f(_8TKgghJb?^?#1EttPFy=8CZBL4u0>EOGU7mT+Y zLoJiAtt`*JE;;&&O0w}fRnQvq=cPYlZO(DYAhvgaPgr~mb+888XC=tkX(XDK8C(8t zG8N2Tr+}&oo=3*~>wm)z%Fql?*s6OdZIHu)v7W4L&xoEZuNIWS9J503h{BczIS?K=oWVxBWG#m!JYs&q;f1Mt(wI?$2Bt}citBW5slwF~dZ%ZV%jg&=@ z$x&8E3VZ}^J~*iO=`N`GydL!CJ)}a|7sk}b$zm+UoONGb6>63wQ7CX2c;g?!A3N9I zuX-S=q7e#H<42|R>poShLnB+B2solK_WMaAV0`R@t@s@(}(A zSf`K1;r^>7BvUo)gn$-?PlSz0=d+>vG#Br_qid$cOHQ{nizRvv-N(q;D%Or(ZWJTN zQ{u9+NZSj}Zb*H<1RhQPI$&@Bh+I0a0&J~#puLy$sf!VMSg4|sH)5mUnE4M$xBHou zzn>c&AW{zC45E95layV{B)HnYmt@SgZZ8J9k;^|QeC!@%Xs91?^RB65Ur%@svTiWk zvnW#H@eNlY^*1th*(`vN&nL1!dDMrIV!HeI^S*$Zk0;xrR$>Yfi@RFg80$d{whlH) zexuQggE~ve735&R?LJSt`2Kn(j?uRXKms}hN}eycs@@HY+y4MaI_uJJ@U5<+@fwV0bf3bT{G&O2(!Ou{xy<7m8Ge`HpK!5V$sKxA z#PY`+ud)j`PHaAP{{Ub|M_c$MW)J%E?i;W_{Yol(L$iRb3@3I{{7&Bwru7r(sxTp@E}4y(-FFpn(thF2`N{--OyVKfe#>3O1^oqNdEy7hK1<9lA$dUTuzH*SwJ^g&j`bM~OyD>ZxPvT{i* z{i9gtF==I~_IAtZ>J}?Qsy*UlOu|X zM_VnKXs2Qsbj`(g$-^KFLTf-Bk@2Z}Muyn$eG=(>s=B>CFEKsbL#7KELklZGNol+K zkhE#HWsvWZ`S1_V+g*8O^;+{F+tCBJ$q|wnVyadH9VSj&Ff|bIWO81ZtwA`MibC4t zRrl=;`%lM#zNlqdm1VAg*paCFrQafKtLsmS7_&w!^_e83WA&4eRA?ECF5Q&+tQhTB zgZsRE4uO>FGT+yhy%HW8M{>dSS5lf{J3|a)wQtdA<5ymCd;nS4=}R*bPX07LM@HSB z6a(a$Hh`nt#P?U{QdiDdX1x_(Qz>7XNga6PK*0L`M-lA}_x}A0_A=9#)hLITT?fhb z?h)*)k>oGltRhIGTxv$D8ArQsDTsWZBV_N%>uGGAt?d!&koGiQWo$hx1?Vl>n0LN2S594*t1*A%3qm#npD}}vYe9RdFT0=N6 zLmvV1uAcW{v%WqD^U~;7a}Q3aomc^#wdSDJ&i1w5Ed*GQ(g(Dr@_MmGB2vOYPPvX= z(innvHLdj8ZV%p*uc8`t+4F1kveoWawUx3$gAyNS9maJqmxm&N6N$ypEN{(TQy2O%r zWcIwl-;)nMKi%=yomRW?gDPX*uvNXCwR#$KuqjXJWD5C9OCUvJq^NCsU8MVL{Ed#9 z;^A^^fXu57&JQ6ZpHn;3j_v4^)v&dFQ|e0_d~;@K_2-tCe}4n#m~+s-ML@(DREzzc zi0$f@GHqhESJh?o57e!fX`A%lk3Av<9tYp17sdFCLekDFBQlyBp&d~qQ!b&EY(#Y! zQg#GO`oHZbTcua*Wlib0gt4@g;NBYs58h$ZLG7@xExe>?7{@`^^$+R2Dwz#L#uIwb> z=%ZWip6C23$9GSC_l7|*{ju9&6CYAK$t?5ENm!wdH`0l$FcGH}(vK&=*xGcTwQT~G z87@5X9Ot5_`2Qu2|l_qTM6eVDKkWNF6|nIVD~^p{KS-`iSW{{TID zPkAEAV>_%Jsrb>|{l#jmQ{V)V3e5B}QcWsPXvR*};+#86z^VO2()c6Jk5W?G9WX+n z+cywWsQhBc_hwfijW}8~%n!y3d>US1_oC{@MZVh_A07u!X4K~sXi9xJ;+gErmx~8> z+MAZrybUj?s8I`$IK-kc$K;P6BYio}Bp?}}U5)sdxH{d#9#a)lHI|-}FVf^%PH;;c zidd{jyD>NVUK@Jk$N1?K_R~sjB|Pl-h`QTf=?<-&?{D`eW7f!HF|%aBxuIi?0&R_J#=Q!Qg39unOcDpjr= zzDA;ik*0`=SJUCBj9~ulf^>D@`RXcrH8R}(omEb$A_=lnt7|b|C3erycMYtTGK@1+ zOUNLvEYtG+%6O^vji^m{`8_BzTxckI6`Ao=lA*e>1{oiAF6=iJr_VPU@&y?_2WtEeH4&IV;^EP ziVhy5Xz*@kR&PIZufF>Ai37QNZl(p-+)iv~DA1*0>EUp=?opYgb7IxFmAG^FD2-GB z<45~>=?~f(Vsaj+L1`C6D?yO_yYdd+y70BHV9CncWUk++OpE(L9v5Td@ zQm-g;cC-3%#QaI+Je*z65}#q?$@}%ruTk}Pp$lH~R`8jQYMpwIN(mugCiF5nY2>pz z?N}C&bKp-OBS%~DWrM@pfT|(1o;fb8FU!^$k6@|McU)JPwi&zvN?aa zrJuJeeQ>*Kq;pACW{Cr(v?qb#?$Wlv9^iNTf!{>Nf(7iWF2u~clw5*EUk`|qSYXH7 zP>@x46c+S$O00ZUgE&4|^4|Xd$68wFfH?HzfVIQ~cL@b7mL2^IHRrKb2AZsOnU+BU zIrS1~xrUQxTz`%1Y;UJfY+86C+5Z68EP-NsWxIpd?hfdwYPB3p5;r~ z`+dB1^{#*Wh$%QXC0!lIPqT2?yXlec?0zgk8G^*TUROsxIB|(f9)JG;zmA^gFbk9* z6Oc>oU$}Ess9dTjK2!?118a z!=2OmclX9tnLt9jM0A_Ybzc>dWJ z(u_aq9zQxiZoJ1lVE~;#V!!(9f(%%PIZHWArD!`^^%_>;zg|dJ9IXUM^1Gv#jaU!| zrT+j+FOYUWj)k;dTkWn(aN%xYCS&u4YA|M@z+1@8kB`xtHD+H)ShPkcQb;5*rG-^r zkT!MjPe5GuayqwsE~Msx&(SMn@u`r=Wbz^`eiF3v!w1%e;UASAtcufb(^Ow~z)(o| z=&8Y%JBiWoK;Qu-4w^o}?e|+VUTlrqwrkX@mWkvET1b%Ue^c8T&_3=yJpA<6;cys7 z7}s(sXi0gDoHt(WYEO*0!%2(G)#Tw!dLGo)+uP&E^ZmL{X4ho#e>94Z4!4qtg0*W2 zjI=W%d~9}QmhTB`v5r~vx;u}ULJ;_6*N>2TO*&8Dmd4;>Rqi;i+iYdYF_k%AQTcRO z_S#q~tV-*98ciK>*OELRJ$enG_JJI7NpL0=U7DG$Wi9c{v*-wpegt|{{S6Q{o~bo!LE98 zrP=aY$f<#;Tg9n(>Lr!b1IC%8Da}iB@HhVendlu%aZeOlI;Kn>9kKFc4n#<^NixAM zmO{%J->K>PJU~O?LmlXO*Gn+lgaMFBq&tTv+puS4sgurQFw`RAU_t3wJY;@8?k7%B zy`x`0EPC?}^UH7Uywbp5a|$nUS%V{A3y;rT$mFPkBgFQ#Gy0ZdKG=lmvR6&}0+!j| zjd|(jv7j57lK_4GiMvCv;cdy~)2htRlP+xD?K)x{VyrX_ zbb%2%E12jzq7!1h%#YX0VvAbIwVpFdjAdY~4>shXk%=LKa08M1fzg^S^IN>*V7*(K zO0dagane-Bq6o%5%x)c{koY`ZOQQ$>0RCie@AIyyG^)nElO2h2i9quI0Qu`+dFd`Kc>%fV7gDSVz!j-}mO-^gJ&~h>zm9?-YMm4Yd+5>!iMf!7 zs{Y~+ll-5KoaSK=eqcOR4y7gzVKmdPHZFwGG&$^w$6a|zY9B_mc9KCDnnN2Z$Wlg7 zIPXKxOqpfXA@I>A%2hj<{M74=jp*brSAS6&S>`Iz!Z{eC5i?1**xxP#?a-IJjoT%^ zYA@Xia^Wz(jjK4}6$yh0ezoP18BrXpu|S&V%a($ja`JkdlJG|y=iU}zJS>D-?nkRs z{&$hg*1{wD2ptp-ECUlFjh}wK&GYBueKGai#*9S9vs~vpCla$^Be!=kh^ZavSY;W- zT|{MuYUsNT0C09!X~l<-JOR)!x_JH44LgY|m7mpR8g##?9_z!2#1Dq;x_I7iHknJp zY}s-NAs8g+s-I!8`?~!f_>BxZIdS7ETEh|OXni{?r@gZslDLVpXSid>nFGxfbtQjRS1Pvzo39XqC9wAL)0p#fcm7Bk}7CiN97j?`Hd3wD1@2-AT)av0hA@!wxbJPA~p< zt0ZCltIT=mPTW7JJ^_1lKaJMJJ7^960LW$PZ``;40PvsslKz&z0Kfxgtb-0P=gsMd^Qx+Eg757K}E- z25x`kK^BvA9+%@jNBWYJFW(uz!}aaI!*1E3Ume-K%8|TMX70O>t8yEHnyf(siUGFc z<$>$vf049R!Wv|Z$@X6@w>!3XKhF!^JJq`mUoG4fo3{IFw`tI;PN-bILPq*XEAL3` zP;8DXBrOH!C5AtJzfyO;T2ce@)Ymqex)hb9bx1?8dhHuT6^k9oy=)D6KRs(pn&A*F*UP;t6GOZ| zXuO%Me{Nt59lM5tjz{ZO3pNpcpM)%hz=4_kM5OW~TO@q+VulfGnMH^+Zs+t!QRVGs zeMh-!wOlmNqExeggu~Q2Y0E}6t^5LX2mb(;&;UD-Q}(m}0E+Z8IXq=ZXUaoDvf~U8 z;-lb;B&irYT0qXNrB+bEd=aDmX>sO+KMmC*-2KmqEo>5YnQ9bk*iJ$lOo#5Oax8Hs(zeH?;$vkC&%3D&bqRr zM>Xrgz0*ZprPD~LzhfPUh$x1%#XU<4=0{{ljX+I!C+>QY&tL=tb+92<7VXL07`)y$ z8QinTA-3AaK!rbDcEU;QaZg#?f4`Q#+B@oENd^?=thWd%k*C`Dd_F?m%aPR1XD64} zn)g0!6G%>ir|GW(d}xmyL0Y-WZ_#+?j-8lGIY~qbm$%DwTTEJ*ezuObZk`P~Mm*Pbj_Mc>tY`n^DL5>%|#GEyqIw zV835CGhV$Eu~mkfiIxauI}ynv`(xNVf*>vb0Mql;H71~(ySO8Bf3{Q0*$c<5OSvcX z@y8~aiW6~?#HC?^Nd2;v+cy%rB<%0c!Rb_<>RAm1%^+}@3pOLREK>SvF-u=B8RHz* zB9>Nl9LVDi(`rcn0IR}*{PjDAF*%-!cT+PNqFuMyIQ&i5%gs;Fk~!y&wV4~%l2VGG zt0<2}bbqkeVdVVG){zD-nM#NTV(Iz2N~Ui)i+foKGBqZb)Rx?}+m7N+1NV6V6$$}A zC*ys3B3wZ^YnpsXx^T|jv6T|ytK6|;9dx{TEOheOwdg|{FCG!c!+c2d;DA2=0Dhlb z7eH_5BNLJjO9_UlX3jFql48vo^4KxfjiZWrtZ|Y4eMVn8)`!RO)b4u&qbT>{ur;kY zWRByiUlrOGt%ibpTyFKIo70l@mpv~dTEe*vg)5r#w4VSo-YsS$Di-a zo<}L46HfT-eMNswkS_L#{{YQoKkwI(vPW3ZUNI9VT9q^TxZQk)dE&VaU$^^i+8Lg_ z@?&gp6Mey!Cv9uTCIL~te%jYl?Gn*+P7pCJHh)*Gm9zNu_?ddY8E3JRmH<(INJ$#6 zxB1d9l01?ZuhaejfA|zjc`0hU8>LhK0Eg7`7bd%svn8yaM!&Fj-}-6i{{Wc3$WUBx z{{Y3~=dW&1Th;g0ei=$dxBH!)|yf|LkrIS+_w{I%TQ2wa*MFe|N z(lHzd$DXHa{{Y7ZqqumJ+!OI~{Vt_N{SkM5Mzk__r}Z7$l;f>&5{@IcVaeuZX(R;A zDjb~XJzw1X+Alx2ar^w;PvyA&T5tz}@K*+r{jQ~B{{W+p!%ob$Chi-((fE;i3B5{* z-1ZeQvs~XV{t^JbyunFeBw`B=C&BB^tMQuKK!zU8y$1KLXSph@lfL8bw$iS0hj9t( zU$xt9cNyD}V(a4|f$GGcOx(z=T_D_GBI{dEOz8Z4d5yqaL!F4nAFO5Or^L`;+`@?^ z?&PCJ)i@QdU$aNkd^Pw%i-#Xm(t*Pu4%;ucBU{*S=7#?O+9KR?TI!@W+3SkIQDmB} zi^6J_v5O5jGf}&W?LsnRi6m4WJ+4USBMpyvJJ&?u{3XuhJL1DHx=~@zJ8R3DsbN*Kf1H{ z`!~HhvrS_!W@zDWKt-Yo@0886`eBMW@JI8}Hi&NY`0MJavEFiCw|lofrkvI?HzrA{ zyz)a?IVE3RRgoYZdHEg=$svc&L|7fhQqCS~zRcwNt37uikgc&w#-b+|&;X`zh* zZ-a$9BgV@7{2q|@)x|Q9^7k8Lr(?3QV)){x$KQs{)G=G6QC!CXJC&qXJfDCicdz>% zwa>uo=9n_W#SQLU%`BnG(XUnvl^AR))5$6IWAweDkdI(3z!dVj`192-stn=Fhv_P# zvmBDF^u0WcmEgTKTFVN_Mo&P5Xk^h{7j-B5XmKBH{PitLyVf6M!CbVh>9H)r^_NL< z2)PA@cA97l%_<%G1;O(k{iBZj_&;&esx-d*HRP|2?9g_jML1-8kGO)(N)U^WDDk^9 z25_v0U;`(DKK}q6C*=8tTu{_J&RHe6vPqZqzM@8gO6Y?f98sxFzP&I}I4oN8^A($E*(=&DxA>4kDA_p3yXZPVP6vbZA&SE zr12Cic&{EDK_G9*-|~@EG(frYOcu411xh%PH!OX+EA;nPXe^i-)cnTekBmdvrgB$9 z+vnqY(_G^_+Sig`U>A^mRIEiw^9^q$kHyRX06bM>`byE(31GJgBn7^GJ+Az1c@gu_ zRNn&$xmW?HWG0%oVoU^hE13a_f|`jPDSArr#}xd^zs#k`@>#$i!Rsm0-NC4t(MHCI zjwmgR_7e5Kp{ZXZa}7u{U6wtcr;rk=vDjnDk^C`WKKnY*>q}Z))9d+0=QXzdgyDs^ z+BB-cdM-CFPVHG{Gq{+eN9sJ$tmlk|CSCe`cmC0{qtz7f;LhlKM&uK%oc1<{qXmMr zgGF3Zu`PA=QDzDxl|T8X);}D)gYY`$R4s55ZeHYfszoOAN_Trx)$X}-^|0@WnuK-b z{EpPB^YNA19!h1|i;x@h_db5zWoAQ;A>r(!!T!Stjz+TyuV2krF4WPYYSFSPiJ{OD zDFwH|e|O(sAAY)vT;fv;NX=%)cP3(5m9HMo#$~S8nAOKvG8K4OFDLc1NaO7B$Pbb8 zzLaS>qI3!q1}v!m0O|+&jm3T%VQ|>|k8R_h@e3 zJtC9Dj|H6kACvqJzfGgF)26{qwrI<^WTVFc2gyl@z)kg?x80U9nJyn&Zp5p&?6Z5C zDA4Fe{?{NAu1D?Xrnm;=Rs%d0W0{j9-`VA{jqa6>7-sfRXLwk*=*V{{XY1YRutLM`N+>^7(cF+1+?&v=fzYpzKz}=^RH`;R~_iSgZNcK&6HN~pL%chBV@Fe)z*8WFd z8~lf5Ca`lX4d<<-AIg0e7ujqz{7zRhLaSf93|Oh}C40THD@d0jg3BoNEA0<0aVzR8 z`$qo&+pfIEP{tb5oazd7T5?k+GqHPST#e78JIO;L<0%?`Zq%j~J zu7=6hw?m&pXpA@S;o-pxX$POW)xX5Y?z~1;{szWMF5koC;pIbI4U3V(8Hl;B5iZg4 zjDi@DJaO~n&gN5LB4TplZLa0!Z4%d!F+Qq`%689erG8X9-~Rx4B6TzN^tGpr);Elf zF+QKw)BN&bz5Voev})6cm_0|dD9e9K_6E%Keu8=M8Lr^W-m(&5cu6KN)zm>AyK>~E zlS<46lYhAHT~AYJb+C*1>*%yqa5Al_as9<~RK`s7v9L2Z&RNAr9IB5L@A_=WyrVkO zxI5ns>-ZsA<+x%x`09D8!yZlSu}j@`V#-N|?b_`$a3e`t#faodW6=j;Pq#qwatJ>? zcWI2|x3u2E1f~4tY@J&+FTQe&d6-n!c`78Kr1xq=%_IFY81Q%VzdZx!7k7<%Bf>$k z2^y`NxoeR;uU6EN)n}-xh={Rlt2_EY1}YS>@xA{5yL}j=C6=3V&qY((`7gcO`4@8r^oBbVk6A03ZoIDkt)N3ZaQu!< zpv}cdUYXmsGdO;!b%1tV@_G9u{5}^WE_Uoyand~upA@xnZ`-fjvn1QwG2bQj>wi5- zQNYy1IPgVAo$tq4sQC(b?%&Q$NywU4I)qd~~wsHNZ6b z$~MkBWQEeo;W9T<3Ej{`V$Eim>_m#R>p>dv{XMGgMm~7_k3DFmTA7NOp!uT_R(?X} zKNo<4{xXJA+%{-&{Ww-26N4Yq+6HG|a6G&P-<^5s?U%DI9x2YHY>?jAO7T^fKB+B3 z0!Z;m=%P!=C!*YJKkivKy(0M8{x{Nv0tB?*k_NIaJe1qL=Z3T^Ha1SD zbdl+H4};fHX{dkF(&ODLT;_sEO7?#kKLx5;#H4?V9g{}A2qA_=p;FAsVLl{*R7A)M z@!t6zpX0AZp9I@n(f*fZ&>vKu(X)3aO8)?izk->p#lc^``yzOrINr8o3;YqF_bAtCN8w7>HL z2>u$TJ$ZU_Io9TRPKUG(zN=^cDNWG*px=D&ZDx1>JMtw5+5JU(bcCWwp@NcpEbeur( zOo9_9boOQ=x}yBYw5(LYPj&$noNG5En8(eJ9r@PuSN-YWe{O=KF<&HYD_G^R-B=%6 z2{gAxIM z(8AMUXKg zStn3)o~#(JB6c=MxNh04kF`xK$#!q6^lQTdNfhX|Wc6cV9KY%MhsY`yO|6eXyTko? z-rlj?a_FjV^KGB9tQ$F>?n((CY0`@afl8Lee7*H(YK7(ulP9hEk|7JvZV?&Th~D;D zU}5(le4yBOpKup^w)Xp^E0jB2EOPf3)qW-BW@h!QWX!KoQ9Yrl!&lG{$0iwa7`k?G=?%(WomY3Y?_DI(fMkc~$cz>E z`;NS}7SnbwOw~0Q8Zfu^Rev=sj((*oIHArQO0Ao+TRx`F`As4XDJq{IB>4XT1F2p+ zXlckLL8%vj5o)pbPitZ+Np>3ErKlC^S(VB~BXb5e;D9&n9zYrdj$VB9Oxf_pyOTp* z9qD?lT35-=Wu>E)%tbG)YDrSWk-E-9Ye>aF1Mbbs{@NWL5W-7%p{h$;)mRc;z+bUJ z;>O7YwqxBnCG?iJryA=^$p}HgbO9uC@JC$t95P&nkq$fE>m*kD+U8a%;!1ae8U^7HDR{h;FSOEr5_xK|_jpL1QgkrPSniv|Ax zGJO|s-w}^d=yM~^hxYNVh`$BFyxmIBacAD2JCh|(u>E|-d2oHVj>%ZBNe);3W#Xj} zQwl{KV~;VzV~X!bq?&bW*22b;PXWuBM_yX#JWO~kU;I`6rEiq z(LgCp8@TQtWl$(kbk;q2GkG!?f(F7wpOMZFk>Bs%#28dmywnv z994Dak^ArCt-!YumqoF&UyFc9E0-*cSBlq+e)14}_~;yPiCPvs`%6LPo=k)hRyB>f za0FjiAd}M5XnR?{c>e(V>zPtkI6^_p_c+GVT%_@rGs2=Ge6Vsu5;yz~va8@q#*9TR zQcE5CLU*q0iR!(Z9DmeUy+8^706QaJW^v9}z>Pbyu zrRjG@@ z)uV{|Y@=e|B$9fOMfF~Vg-}1WB#u@x zaRN5^3UpL!;QaKOl;-@?TKipB*b2D}Ecg3-6id~wyR32hCEtMF)8j*5=g*HD>OJNh zDb_b#gZ`FqJ=rH|MTnVlFk-F47&N7bNhEPfk^?4&pBma}ihwuf z$n;s6g|ius$WGcdp~Ky8r*!qMk-`>&0~-XFZo#=7H|ei}+ur)}dqxr0P*o13Tb6pd zG24{!n3la;E0L>?t8O^tO!b-NsUZ_5IBiG9KXR#l1vWjveYdUI+FOcA8qG1RXu0!M z4Vxm3_l_)V_8zSv1xfVZL#1wHzdaq8xsq339`@NIr(q=J!A$%iEZ4>N)<#Q^`hM9;-ic<8Mm+m zexB6{IvXG#1ReE7A-V`y#>LWK<82w&2ac;t6O-;ikgn1FC1}veA3t!Di}BhXKmdKL zHhlX}On8GOFKwqRwbrv{{{RfLQ`ez!YE5Ya#H-t}#OXJvMxxuhaYOoqkOT4kgYTdx zA;(a>v9eSH5Fd4$05N^9Vy!OOS-bxLzhQz;%sY1!t1MWl>d54MMa{K(%f>Z!`pN1hX~_2$UoF)!=k#5%vo}8=2eCHEOO)SXS>@WN4R^Qtab7je%z}Zkm7MZ zq@Zz1vZ?x+VlC~Sa(ry6NB76oU}0q~(dv2=^a_(w8)SJ}D-nc~42>UD~Miv2XYj-PS>qRW~rN-moiY6v3HOq4unzp~vVptLx zh~CeQeCwq!JB$I>lD072*65&RbJn|hO88Ht%Hz}4M!9}yRhngxhDNI>;=uVMk=FW_ zqhByN>JlnB*=VAb@>6E1)h*lYG_x7!N;X`{c3BSgp0|*apDtBb_K%(KpnX@gkO$xP zo*Z3fsZwES+vNqu{H|)zM+Rg4SxXnt2t1L+BJe^0ccM>A#^+{kGuK47Qgm+}ew5oi zvtu)bvy()YrEC+V(FKF(q_Ma3+4v%rZDf60oc2$0S&&*_YcTi5etVjyXSUYOGmD?ofBv(oz05Qn4MNEN8EG?QK#3 z-CVCfioNIf!`=5YedXOZbNNUj;*i*oeJyxcA5uECfsq;~Df^_0omyj>VNYNjK>6|fb?M=YDe+CxWY+1ym6{7vkpmIz zVoQ(wO|Q8Dd7P0QenlC84V|4&s`u(!%ybn1gz9u@V+<`wu7k_06dTb_8BL zrHqvg)UqM72xc)KYZ4EFK2L&oujl8icKYv?MKR{{(uzD}`jG)Od3ysz2tg+I<9tUh zwwqQs%4zQ$A(IGkVinyg@JU6S0nGUirXCxY^V2Hj3t7!X?CcIlwo#^ANVTU3Z@{Du zT!`eOUp!8{e`D5CZWWF=ig=$>vi%NT%{xlXHEE(F_O}(#9(*>3A=3``6gd?G8iEN+=BMQW5^8)0l1qKngtK*Z^#Dm^pj{n{EoJw;Km zlBI{5UbBjaF_EP`h(uY3D1)YK1+d?v=>1e>qcTWG?D=k68sCqN_@Bd>POQ=fPJDkc>CI6} zsA=8{V|$xBf3>oZVKN5^e)Z~>EzN$xX(~*U$Rt|nE6Kst{FHJzaV0_P#oeaz2=nJT zU!M*us#OehTKa`pcP@EzV$MDCF-a2MjjZHgjpU55jg4xskN#4(J_Kw2BXQ}6s#Z;htvE+>}&`8M~cn&7jE5x zOR*Z*Su9C@(3Yxs5Z9!#O5UpyJ%~I23I1u>wmQxPh8X_EOvL@Q0isJJFV@+ zj6lk0&w_Efd)K7awh3|bP;p(s zg34CSy4%djGzly;Do-NV5d>0ZCq?VN}-2?nHlXv;~ZSJ$5e{rXFqW`Af|{&O+aK36u;Iye(QyhTgTK{{XL2{{WI&V5fFqguxGV!D0CsgpI%ehtJ!8fAiH1+EV)^CZ>A3 z&oAnx$L)*{9)G{^2V2{$z=%@GD76&JIW6@Wzm1=%RNys9rgHQmBi%x zmkk|yxr_B_)QWkbvgGoYlY$?BU6pRXTM+EGQKmIj%4PsB%I{oZum!N2zXx@*k=yV;T4?>+@CtsH7s_9lL=0hRsbUU{Qj^_DtJ&mPCq&%1HPE%Qm4Er1K#3&H&Y#8Aj-jau|EqV ziL$p}Io+0E^t9c}mbI8asx*=`HT^1)F8m*13*%egM0VPg{{ZR3JAn7k)hyEj`K%bO z;j@d5zCRb)oxh5K=M0$Th8l3R+Gzdix@U=w!-v-$1FoZ~R<%2lYK;6&@rR9^M&WyR$(Gu)+Kjz=q0 z#3G7n$^}W&+Oo$Mm$s#*N@LmMAXZH%9`0?#kDj`w&kwb}o!W&q09|Fv{{ZUO`c=PAxYxV8 zD-l}}kIhZ#-p5qtYc58&6D!6~!bl}vKW+R0zP-(xZ8Qc7j*-BpHTX^!EfSyb!@XB5 z_-DpgYqnfRT)ME?^Xc#>?I*zh03)wVZB1~QPL*Wfe+F;oVtDG&ov-66Q@1r&R{dCS z6p6qH5B~rSGY=&DkgweMnx@*;W^?)>D{yc>(r$YP_*0bcPS&ep?{ipHlNp1m73Bgs zw(0we1I1hc_u#woc4gT9ELpWQk|XcM3)o2LR!ID_~;=1S?uc>giz*Wh-E(qCrKXfY-Q`(qVY%Q!8EJM zrSs~5-UhZdH~u=;d^G05g}YDum2-asm%vQ1NnDTKbcV12V{-n z9gHBU{c<+4AB6+|0MA;-E^tn9<)pCyg?uy~=WwH!5&rG$%fd2ruOLcMzEC7VtU%Q8K zs@Q4cua?KFBzHB-k{@!G9)E8m{{U{BHjI7fJ2+Eky^@L>6E(vWu@lZNUKlck_J8%R zj{bUPGYD{?_>1NDd^2jVanrF^M<#COIqh`&&ny)B8g;(KaWTNUtDxfhb=1jC56t+LFL3Er&ebTp%Hv{cVrhCN}p_F zEm?-N*(|}VlT6D;)lom@FI`9PVdam;yl4&d>@P4HHPsWH1~{riA>5ejP9du%Lla*! z!fX}_%#%wMh`m>c!qa;mHT4vPWnXC4&yAU%W0q=H*MkDe)9m+a_zD&#hRs{Fp`CEH zNn^@W7TPNhK65W#AWwZcfFSw0xh9gV&o4-Z}lgsBi!>{VR|1 zj@j)@9a`B-_p@1#Pt>oAj%GxyPE^;YzN%Cp+xbNG50Ci zrJcdYeubQeqYKX@uRUgrZ1Ii2RX(oveE$FqvIkh*mjIWa!h5MwYj1LTuieqvJ*jfW zGuQ3hY!|C1t1d;ol1J%CjTDQ$9tk8Mk7@Dh zdJ|K2a>h1{fuMK%e;?0ZqU?taHaO%()Uh@}vUFj)+ZjZs3rv|P2cVnZ`-k!TYp+m= zVU8&x#Zx_+YvHr+hq(U$MfGwdEi)b^TbIuN0LPA`p#jjI`-QrHgZ}`Aov+_qsbsr` z#v3tu@u1*PHPjw`ic^X?(v_+Em!)?`Et%_5PE) zlk&NKk1=1ku{5Q0#oEx0!ZNY-5U1aUy#D|?@zm6RlT)lP)@g65NT-BjZc9%)o3Z<& zvaU2)OjOdstNM2<0_tP?1_Q|d0KZoD%r|SKCN;pNNU{(~;whRIB=3Gae0k`FbWo$& zvu3xaDwTPbO~d!sosxRe^{RcW#SY;58u^G87p!?7_JYUvGar`t*G)AV_?3aMu+zcK zN>OJUA(|=uh1d5mBYz*;K}+vE~HpKX9AoqyL}!L5oKh#jKzAi zsaKit6~vOto~(=OqXc#v8w1b#zxsTS&$fG9w=Nx5FiQP_?x`u{9r8sp-$ZQ`jgQs} z>gbZl+==&on|{N~fY=-J)0tS}B&UOsayi|9o4!7dSp`V@UpZlMSn14-TIjtjY)~^6 zMri#RPYr+@$Gfjhk1!7cWA~^?+8-C2Yns;#h6a_ZOC~;Fs>x)eo=mh-deT{A9E685 zDz~3dk*^2gTikluuVxOupLISw_$IF2?Az;lo+s*|r*`z7gx{-XH&;bzB$mdPmbrqf z$dj?dU+(D)$B{bM*<~h~g=^l(S^Pa)xQr)qPyYZ9_kB;J?_pn08^|5_J4rBS5rMVT zTjs1r$C1?yui0giYv!L3)ob=+HIB*Hyk4Z~hwc1pdO4c|V)T*93@a1HgVOQfXb&1B z`PWF=YWBO)4Ua!8l+SiAn<4i{u)Wz1f43s~JY8Al$3Q9LGH~+~{Ul!9a#;d9!ge>n zfxou;Q)*&oU3(_et_X-sJ&4c6gE1 z4~Ekk{r9Flgfut{eb7(%nt5q9Y5O|0>3fp8rCZZU3{p!Usm4g7@)i=hjPYMT^mrp! z&7>Xj-4A7qtAt!ks_P|QzB-_WIofG)_aqHSD^DEOeipLn{{U0dK3SLl0Jxuyf#tDm z^<_6{ZtX&ki+HZ2nX8px$+hWZGvghkXNq^z$bU&RcR^y<8DJH&kd0IKDbFOS&2ZD@HTsGiJZNmUANv?%r|tpe8Vj;v> z^dy}gNm_LBbtIgYL-yLk9KYoj}7mWG+Ii^&1Xgd3*9DNVUa51I)62O+DS>%pS*s~r>4x)v5 zFSMunkK^sr^jE1^D22sggDxcmMTKAm$1=D%_A~M+|kJ@ zM4IvZdEZ@0;r9m?cGna!Hy4e0s`D)-KO-m6C4ALebdg`U=Cw3(Ljp^weFgO0m6e&c zz-wP4@1@ju!@S=8a!7RKMY#QwpzYiSE}W2y4=VjEHl7=DFs~y`#ztgSkcfbr*btv6 zc6gKKpj%0h-j?_7x~3%DWx*T9_XaQM<1}&N?nW6xQ}tKWmdY0ABf}Wu=`?(QpFeNo zrBp9?>#L1IbouKgqTkln;n(5Y;d^KCCY365`yVj^`*``q}!Hi zs`P0Fg9Tm**?3P&9S3^H1uBNcsPT6lgi<_nOkPKuZg~1K1y2j$H=pOPKeWpb(NZ#v zq1H)JejENBVY1b7*xCDjTN&vgj)WFu6Z)1*w0vALg4{N~)C8Yz*pdsk>|66#+7_~a zYlM_G*YxxFf8LgJ*=+Z3U~Bf&%QP}wyN#*pE$A2zVTL$nQW*U4@;-DvH)pK#CmFJ? zjR!a!St?%F^kw){M$MmJCEAvSnM{6^b=lIa&*fDWC7F)3uiQcM2cL?^#9ZcC##Z() zGfDUV0H7Yi&Eu}+>trUw{Uk8ipBG*DP9tacJyR%X<>whvsKrR+KZDj$_@>Yr32;63 zOBAg*zUczz^i|rJDL*jAejw)YRCIod&FB}==9&cqw*p(v{3p)W=b|6U>rlQOeh}1W zlG3lme$lh|Z;^);K1Qx-A=GQT;z*kBWlIN&b5Eo3cKj2FV7yS!8=J`B!h?D|XIa*U;oX zvKHDe5IC{@A*0}OJvO0jCPR?Zml;$?;+Jqso9+*#Fq+2?7=kzbvH`6!N&N96U;2Hz z^6FOYOsYe0uDX9pKa4cL7rzBNf41|#T_1CP6_`7JxiWAlh(0e{#@d!;joC?t4?~uR zn7z&J8u?wmmuFfq?z@jJYYptLZ^*Kpy?HJ{Ox2}yJ(@5X(!iC=o-xdVGZ-x!_zUu< zN69@&R*nnn?2NYZkJ=Y|rU`LVPaT@L{{VGr&d#D0;=6%acj_6{6*Q;Y?jUuoFYwpC zNZl{DEq)i|?fh?XE;<;ayCy!m{T-u3DkeXRayD0h_r}jBK16t3G580kwwGxc$G725 zLtTGmj{z1V6PB%n$&+f^EX7%> zhM67*QR&{7+gsKgLo_T&8%8ATc?u5FKhn})pANjd6m+T|%u5aPf{lFZWc1!{eYNPlUFf<=u^Z2eqn4MrakLW&1kq7w zPohfL20`fs<*%qN#L9nZ05fs`6^e6tuv66%0m)WYAjxGrfoG#Nbg7B1wQ-@4{UqL& z&kGyS4LRmVyWRYF9VGny)*QT4rH(FvmbKMa_L`k*w&TcO%uH#__2X)iH37hDhS;40 z;k}>z$En-^%#@omP`0!|XB%N7$>s7=OLnnpRHox)-WJjIbi4$7hR9Gh3DG?ZoLOey z*2~hVikXF<5tF-tk0m8M#f*+R{{R^ttg%fBDo3-+m;3qaLy7qx8u8bh*0@RG;tC3Q znhoS8Oec0lnvltxrfS7vl>Y#dXQ{ATjU)R=Ss-)pr1@Xuc<7oAGF&)YpPc%tc6zPN z!Y$lZOpNm98SwZuvvDT0kQ-IzGD{?m0Y~QiV|fAj*MqMEeKnO@40XEK?K5WcOK=?C zF;ZNWN%F`pJeTXV+)~8A7LI8n;x?m*_#YsHz4eBkAYAB);o}pIr0*mxs_kK0Z41DAopxab9@z zNS`H#0ePpXMj2m&yMyS#8!z_a&8_dkw-7w!$PuoHvApINrc7Lqa&-K|=$OY_4coQQ zAvRbmv~o@>3bUuR@OfY+7>KV zk*pqaeqy?g%*=n^#ziryKivKL`rm+jIPA^sU-Q5J08y;aMBQn=M;{D!o(L@1wPx&# z6g6R1l1Zdvq*&E<%;cQ_2VT`oERtNbO6Yg=ll>QFY2|7DD}E|d{JzCVQtxT@`^MAB zS-B}&7C_uCU;(7OUUcSe({{UwRT`=z3vfyXHQO(w# z_{1fOvdr=Fl*KBD$2UIRGReJs@5haG=Tl=C$RjTuPb96XuJ%?-_(^iVmLE)Yv5v+9V0=3 zts+Rilgl9WPpcm_EF|RQFSL?4>!}DXXmoc@zX?T_#G35)P06ZPp@pdQ{+O`IT9O89 zg{RPwJymW7P5DFni2nXMb6II4_uuTQ6#=jbQzBh#(8QXRagkJ;g_0aq$U-9=k){$K zO`dl52-&@bc^{uG6&%+IkFW3SvF;3k`&e;za@m}Ooyi2!VR3XSk5awPA4+4NQLmWe z3nRjIHZ`^*#)nC&+;7BN4I0a$jBmWZA@A40DQEH-9{$N(ivbNBl$h6Nn>eAWiDJ=W zB!}E({hSE^k>l;-q|>4{gO}66bz)uet!Dgg{3pkEt!tgdfw>hb;(4HoODu`>@FItV z2UzyRf>n6NS>N{$fIf@imHz<4clzf5dO(H0vph2>0S*AI2&-W*2QPtow&8Z4)rPw{ zkJDZnL;8GJ`SN}|{fA$DN#hJ8xu#_%_jCZ^D$kSpbiIg{JcL%hY&>Zqa$lX0syEU$ zrp-I%nNKygzt#`*i$k;VnEwF8Z^I|dcWypLuRdbzYsxv+?PthD>8@dA;KX%1Kza9`hWa-&VB{{BPVuXXf8t+kfr%ob@uG@IwjhyRhv$pW0E-(NgEJA zJ{U5V2EC?(YX~|kmrSAlvoJlwUQE?K!fIdf6}dk>mVBa2Pp9S{F)eiWqOsZ7{ysc( zmV6D>L2!8SL0X_03$3s0pT!=`{8H`8b9Qzv7;aFO#4yEv4?;OCI4Nd1lqVNi2LTu# z3_#Y7y7Fq%G^%z_%q9(`uH6H96^2Z%BI8%FkBhe78!NrEfT?QJ zlSjtAy$vu}V=r&IEJ3^>BV;M#7cG&slbhGFN>6r0-A0m6c=d#_ucjH!!g_>kjr^8^ zL&Wy=x$4K;w;t`ARAYHEl)^jK^(1D7wBEENN4k&=aSTH91KdXX%6mC;aGbOO@Jt&c zTW2Ae>^E`2jHWJK`d-}n<)dPmF;5_$+9w>!@FH;QuvCEBE%DNyP0R)jr`2nz?twme zrEcxDj_nL2bN1b8RcCuEE;a0W@!3#{oa353vMR~QXvR4F{k{=V;iA^$ky;qrCCgp+ zE$k(g$7Rx_xYHTW)w3_C>X%kRBCJoh>DoZ5q=W8laRaK2GU1vY*|;Mk$6iTEyNV3l z@M0GSg=ECnBKl+=MvW|o){9r$GnG3VBx}cyj=cA7n2U>Q6wY{PxBT?t!o$!D4SOP-H-$eR-Gk^6uy|^iYxQ89%aPGo9!?0mK-`%^ zjVLbP+h?iE`$0Hh#-s9uwN4Rl6rVJCXnh=IoXsl}O=t5O_1%^>tY3#0l=)sKe$6() z2S99Z&v22;oTLk!Gu2+%&d>C*m{rNoYK|{CG!fLs*MF)10F;nOJy?~9XxGDdeV$(K zMCf&347MTlvh_^>cvzJtwhtMOp}{I7!FdM4!tOmo{+|4gC;sE9vAD+% ztfvsz0BTU&4nC2de9O)!u}y%Qoagjl2;L+sBFOCT?k9TD^RMB;kUI5B!WuCy3I704 z_zc(K=i+DL4{m2~re8GKNivx{#7U!K9EtkH;UD`wvi{$;wb$J2^@FH31Spye-E}AW zbNmVHkHQYl?Y`#jT9}-d;;oExWX@vQPh2gSImrb{q+indXq+!3^4lk8M_(7T?N8bs zPA$#@EV=dL$y-VqOs$^n9{3d!dlmDKR*EWp1z13_8T8`crN!6u!f!|d{{VkHNbAdO zo%4Pb+cjZ?-pGfcYdbAWchjYARfW1Oetr&-nF{V#=0fsi9&~r(THjA?j#f#i!slgW zTK8sey0GsS9=+AAi5``Fo+jk4>dzTY!8m=t21b4Pz z?TB%brfV@ZJhVnwvG|=aiYTlf-RmzX;eT^-JT|^Zjr5#dk-6?11p6jZ4anxOV5!B8 z&t0JvY7u%>TuY9bm7$h0BLeQG3@2p-Xd`doms)M*DuB=5ht&SpQl;6rgXD}{6WFkj zSepryd$HT2ZsQpEw<*C^b{_R4FSmbj%bvCYwV1Pa)^4=78NO%*iup>z^7r~zqmuP2 z!#k;st}tJx+(*Ls(`)|#_V1>~G!0FX-1klty@Bma{{X9Y{c89992|dGBAju0UVlmB zXh%03NA1x2Z+$7PxgZ!9?pWGI*IBb&p^=UYn7Vim&THL_+q5ezkpBRs0X~zoia_Tp zM#G<-HxNfIssY)sEWw23B(73^G=35H4`$m;)r>`i^wuzESqG&lnm=5mProY{EsxwMV_}+OsrkI{JJ_hDgti5)widaehI!xAHx!Mz^ZzW;@JQv9;;P^*tER3&f zti}sDD3$xWwWH;82MModB%1BZ)@Ekm6tnS^`e%?V1dkf;XZaovO=i{jS}K3UrFrF@ z?q(v$-MsN)YGdwFY;s2<7&&W69E0C1K?cts+y4Mk`+7HFB=-$>tS){fMM?hv3B5ac z%NaYlD>TGqDO-%KNMNvm9@iz-hp1a%uG4?^>&tnujdMvY$9Yx9aDE(EpF3v04xp`v zxmGFa8;l{ZCoW#tr{osF-kv=l@#CfT?rnv{D5~tQ4uO`kQSu*$-iBKKDokX!)yBW0 zH0dg@sUmY?C7PMl25&Hb2QKnCB{XMbbs^2|0 zGy>zp(h$>&@K)u&ufbqzUa=NlY}5-*xyDp(RiKGs?8pVhy_V zZWt_^leBK<@n?fZvUhNg+Y_>(ZNL2hmAY#Ys2Hj=* z4+G>I`uZP+%jhXa=_{oF0D-@X_zwB)%r$H6iXH8O!qTsn!CP0q>q`V_0g-u? zP#r;#o$q^7@H+VYt7ECL*F2p#c^;i1TT1~pH|uqF_O3pJwi~@wZcCH(=jB!3(T&V) zwe*7(;if_W|Z*HLpR)6``y)6NA1YmWbD?BQZ!hEdWW9R*;`)&&&O0X zji)KDWQm)ov0TUE?bfN2uqwVnztPx?#J^Ot$L^X$+kS@y9|QNV#*af$xP+fBI`>I) z8Z#&daM*mEJBECOGf=<)aMB`1#rME4Sv{WP$vxWxWba3%mLBjm_DaCg37nQ}RqFKX zP_rL$GFf_XlU{y*O(2o^EF6)&@8p8xTK@oWKRq&wSs~xrBcT&1!L4i=yn21ns`oP^ zA&`QYulW^ULK_g_m|dcCZFm1@#5FuA9Uvu zNb*^q!+!15dH&y~$?HWXibrk%ATgO^joDcagR5&}K#8`!m{iF+oABnkyZC4QMfNX# zWo%-wqHGUyRfcx$8hMIo7u45+CYdz=cc`;Uic~|#dL9WrI)=8#T8PIH%jrL*gtg3XmN2dlW%k>iu>-rk{$+{yGdLn4V1GYE%w zVyWdS+|C?sQsUpCC)M7qJ$kJqamHL5MUqx;NruA0yu2^iZ>E-qa81Msk`gO+%-Dab z?cAnnwk5J@4T>39O8PwNMz&&SbVDO7+fFP#Hcy@S=Tj8-N$V*_?ZPxwt8aOO%d_?tg zH|#st;S|e65v75+b)3MMV2p$KW^v7iZbKFis=~~?^WOpu!tJJ%W&%o)9ukpK3 z$;8-`kqC&aeaj*9{rc!=o<%Gh>s{)UyLQC4tzqcXSCb_Iizzyz3iHP=s?#9&jC(ii z_KlD_^WROlpbc|Fh`V(d$7jS9rl|PA+`mgOhHAGR*g){cv4aYR=fHvU@IQgE(?t=G zMNG0xiB?TJk{8a&RCeS>>5g0Wa?i;tx_NO26&~}YEyRPZg*tAM9$eQz9zR5=nJW%P zl|`WxE0n}ZlC4@flKpwx>7BoHaXYXac(KTGGTJ;;tXDN40ES27sXtB!U0KdzIK8%CphiipH# za<|UO<>Swf3Z&=&9(sjKoC{zNvLOakQuMO$(#T1A;F)d5Jg$lKyp|~w)f-S%;!?$c zK1e=#*EGgG9%*kFV#_9DyzSxe_3+mvSSsb7V-)fvGeQTa$U>m`KsjiTO6%b3eLH2M zTLhlvj(KQ>MPs|N%~6Y*3U?k%@@lmP^CVG1{{YJc@cPhU{DIYU>N?$ca!6zPX0_At zNBVc}4*Z$_028n|8gb?Fgh!agTOX|#psZQlzE?~F@X*$`{krtFKZ<{eNQ~t8j%sJo zejH&ke@}mdedYLJe=VEIpGP~Mt|6z3uAZyHtp2E)(Ihl+n8^&;x7!$ehu3oY(q^9zjh9om(V1gVV~=jZ4=n~i;A?y9=LI}6TD=Mf zv!#D7h(=1Mr%YGk*=&u*Yd7O_%1CFKjGwuO>9l@-Z^77I^<6A3vAI5Syz^8LibGYZ z-?5E0o;rCdNntEayJ-$}t1Pt0uk zn$mJCyOGIllkv+#ctW?ucTOxw~#mt&H3hvR;-dt$Fc2AxM2Pz`PLUjd4QUjTo*F~)l1eKC(yiiS_rHGQlV*8ASe3niFZKg2zmP9e^JgFxjg$I?;U^aEF z-8RVqsATb8GOR4*En%{Dvefc)tjsFr9%-V5?D2Aq7>!J)L4#}sJa@icda;io$ARXz z9LVCJX7R7yeTn#!_<8v(H)rlu;g^QP`ibhK(a&9GpOIwL&Fm3@%W4nYD?^SVc%_SG zF1cF=^u73nh3-79dfl&kx+>ue7QV9{oZx1bMu}rbCv)*US86rO#`^ZDZPY-Q=7sKl z9G1`i9e+kW+1g#pjLiNcN$7U$crlmD#|4!aYvg5*-9+$yO(ki_;^37hMS_lzwR}so zW0=9_iPUiX`A3gW6}=-WYE-2ygP9lcPZi7?<_W6R=$Jl+QtcASwleXM@+^16u+w$m zP#j%6#PGC5ywQMP{kx{o!1?BdWLo!h--ewo?%XojuNzW=AE_}|ja50;S1M4vAr-cv zPc1LO*FKqfvE$^3QGH7X3upICS1>aA2BtUi%T}&NK832v%JAi4u$*I99x=ypp^YMi z)E)l-zlc*yT3p-sch0O6-%bR2=YOZwWvuwH*&DYqV&(jev}r2O5=|^Bki{IeWtG#~ z(T;2fv!03aJ~A-QqoNixJ9ykG&gCl6TY@ZJAM4u-Z9b^k$H!XaXIy51y(e~(KW>LT z4|lkAqz3noG>*tL?%ooYa(BWBl+e_M{&q}Z%Ppy5vMRGl%pH}`JN6`!p$Z#Je4lSX_e7XZVa`|FPjg%g z-W}^t>ekJ=yeda5%_q`*NFJcCv&?W(N4LlW?O&?FC)jt&+Wmp^wPP zEj`N9G-RY)0o34yo6ekp^ZplSeJ25MgpSV>VC0j2qE@?J86cJ9(Sq|_h;9X0eMsc8 z%jQ6SP;2e|x?>m{#cN7eS2u3ovpJ^jvovt5QHPR5@%qk^6$#7u<-hzo^V6VB&|x8M zHaoK(;!7q{9E8Z#p42IQib*kUDyA5?^D7q1k`KH5bOxMrKAME!!u~43hqvj88?H0=@>x*7{9KaDHPMYoZXy$f8i<>f!54n$KC6Ies&!AgqfS2tYBBD-I)) z4*-pQ_4Ct300f(+8hlU~a#@UqGEB`OS{Wp@D10RG$LZK7)s{!~xcd|mr;6C|^-vFoD}{+|V8a1if-`3t@D(##A4UJ63e14ZF9RExDp zpD7&KTY|DBYWJ=mY?Je02coCk$Tg+_dvpii%ii_@BRxWRx^AU_%p?@9!BQ(Y?&ak* z*(P}k#^5k5ELt9T5Pa*$#{6yy&Ft?P>m=6GZ~{1{TG-qjS~b0FpXOP5)joXGy7faG2!q^^YPpVpY=zF9vnAMacr~kfgx;)|{bEo}B!DlmQI9zM>~H*) z=$P`Gv3!3SkIc%73CZXcB$$jst<32=aEyeY{cu# zYl1vP8}ar;`?UryBUV^Gy4>_uI`pw~`-( z7fJaGSv$7i{{V=oQksrFNrf1sk$Bg&B6~@Qo-P?l(bvb1o|5ODH`cro@R!-cB%^-3 z$(6NZA7Z{lVvJUXI-wR4Uu1~nYxc^Db?*NF_0e6~d1gOpH6I6Bl_R>dG%_&Lsd7i< z8dv(8@dqq})gF=-P5O!>E#Uq2{m(?^;tB7l3=U`nz0X#jS?xnYrD>^7BA*is?P4$| zW8=)9t07b5pZDne_$KOSEpEHPb^9KT6gjSDZNlhJ8+AFfcBEx@|+ z0G}Ef9y%tw5*$+GEcc!JJ>T3FaT8aa|ZU79*cryjY zd3{n1%uW|2kIBc6yDfV{e^(WcU)4sL0BKbEWkWjeh}S1RcjMq(#ulYkq{H&(n)QdN zQszFD{^HM4q|wxd#x-oh(3=&Dh(UptWo;h=&%q0^wDrb9|Bnq?xI z)X-nIC^0KY%MjE-tIZNBg7TRZ?LXR|Ctl)hx@-B$RFcDG?L(YQ1;|tBWUVFGTqLoS zPf%Fr5-69FXbyWi8`~8zbGQO2=yc0|QkOTGcSuEm&I7<=dK2X{6NE=903n zCG~g6xd-HLaUSfVqt-@uAp$f|+djxnS zuJjLG1LcVzpnWg+=9VI1hU~ueP$IDTfeXs;%A#oFmTg85IXrhFrrUedZ0Mf202=Nx zgar_&wXW--R|m>H`K%JHDUw<67Ryu6*imXdHDJJPTE=XMl91gpc$08VC+a1Yr9Qwn z+;!cn25OSwn1HsaBB_PDNLaUKd!JABmN{6CG>wspq*e+mvz=+mh5j}^df_c>A3vfn za4cDF?d}U}Vy$eIe0t>e>|K_+ymF3BrHy?;rHDme_kF(OtfIAOt{%BhUW;4WG}i9Mm7Q3 z{QE|_HZji48^cG6taF)LS=_cbJt!UwWDh1Y9FQs~P4iE0u{|TtM1o2E$InFeWAITq z)18dY9dX+a!;ILhaWMzVW&w*D7fwdY=TR{6E8h+V?TpSP)Ir7=y3 zr+wq5J#2-^y)gK|^7=u&H(-5Pc0y~)_+joKiCA!w>DEZ8#1SO)_tt681)j=cYh~zR zWXk;pIJrlWnq;=q9v-SBhDMXm5v_f-%ckuV-Cefftp%fKerj)McUN$-+_O@e)sc~` zGu$8Y_YwlCd2flHsT^dV1ZO9 zI{n=PDbLFhmHHytvNA2{Y}9=0kzj3Eu}V+LF2M{|sADFS$jq~a^qn`8jUp0G@dlXFN3c-@&{J$ zx)qNXoRFNH5Mm~5)yG-?05+B2dI$vWPWA1G=xbj6wwrC%J%z5A%}t99(uKQEioa&Q zKGZQ*$-;TtGq0-zMYOCWi^7m(@=w4z`){GZLCpbf9~F+K7ab*9QLb{<5H=ch5SGoR8^D7GR}c2~10V)4`k+Dg-2FK!+y%~B{*X<-~t zBPm5vSdp!<-pCqf`1nAa^#}t3i-(gRoySjq>FqvJ(gd9#Qk*v85wh4d5|aP55~& zd$5T?yMrkuX)0BOWTd-`WVK%*8;GV{g!43}ZXogvABJDH!vnqVsjA`z28u~=%;>C` z%00znxSED;rHd9YuPMpLn3s$b#L=_PLxLi9^(JAZ{{S97I&%xB3$q!{yVDzs5F7#5 zy0|0H!)j|Z=8l$1d{{q6av{3LBFm`T-NBuG<$|}sBarH$Q^plSpya2H;Hj6fa}(Sa z@m4A0=k+^EE3oh~!!t81QM3_y`;u*V-kV2!nR?c`No%s<`&i=Ff=)w%hI^72v$4u~ zT<&U-NvaksMK{!~ea8{2Wdexf^x`Z7@@_+qg2eQ~>xsGZo=~M>zti-DUCpL{@^rCk z3^P_I^IXj+m9gz!Ci;hVf-NjS^KT=WEzdxBUbxgG4xEuQ5j>Et=Io$ZuxO4A!{>V0>5}Xbkr{oL32#qOlsl6-je3@5s*%AzTJGdcSRc_w?)T zKmGp9>bKX5jGK{}k&zj(cbpR^*Sd#_gAztXV>3U7V+z&Acw2}+AGylYg@K*;KDivb z-7X8d9)q~5De(d~NRYQxLDLF$hzlT?|D^088n{4Nh!z`Qn|bts>39QL5{qh#Y`*sS zQds z55A~E0|eGyw}&cj0)TU$L8?N>p7mne?-&f@7fUL&Cjn=c$i7_W^IT=q86%j{eVXsT& zwA)p|Nd(mv3E)ZI#2oRY8-8Rn9ovslhdRR^%sU~Wn2*^%JLgo@8P3fO9?$h`T~SRg z3!T(T#H^)a8Q$U{G}US(Bd7>o#?#*4u4FT{1*fWWWS3pdjeS)YU0!LVzT}~HcEMzW z%Foc#%Tt5TdjrZ^t`st^0%v(}rCUrgbG$-QFfNPrG(7@0;*Ng|RhAN;Z}fz`y1kg3 zEueQs32kQx(>ye0i7c0|f2Ew32n&Z%kaDR>L2T}fh-SICczM1KjsGDGke}D-M)3lC z`KApT*e+l8)nH(^w%a)=PMDAO0$MS;3BPmo`M?3TxDH42HMFEo?Gtk(Ng0-i{?g0v z3OrSV2+h~)MPD=!tkM!Xln!Mj1030?C_K*V^EaTf3?trM5zRSLLacT;BclF1xaqxe zNvqEkJ04e+1b(hxN#e@QJzP!zS@SoJP3@WBA67E#KU{Pux(ki5eDTg)J+cFaLlfj*%S0Ej$?u0khTj5rUnDcNUh*M`kols0<|U_CNKB0k?}q0BM@O7udCx z4rI5|jESWJ?(0#xA1>ITKH0b~BZ}e4yqm4Kz9)C!7}4Do-NF;w zv4V61{$VeC4cCG5|>hk$E*W+0DxD4p>U# zz71DJ=aGx2H?CJDVLl_7d>O!X;_hs@THf!!&cD}_d^JvnKy_@t5TW~N6=U%#P-hPg1KHS~; zEE1>nofa)Uy>_lxpFwRj^{#BtD6Y+FxF{F7r)56l0^fdmiLb`ARx;5gwzZTt_BvAVygb3~;CbtXC>*+|@n9`jqXP8_^@p+iXW}zNHMlVb1j3S6?=UTRm zzY^JyW;hh;$ZNjG{~3Scj-r}lSf|naBLi`$RBg>AB}C-+kC0u&2G--EcLMWZ4!rWN z6!AwQyiWK=_9Q1BQP;xMfY!#!_`iM+`ggE0Gyj&qIY18Ol)i%9Be#7TtZS}Vq!uvN)k#M3JMA` zYI<50P9`QM1`b{>E-n@xAs$gFK5$r=gCVtmX?KaKqvCQdn_%`TXGUDSG5E7Y~l$4a5 zoa`N!6PQ{Qos=DxT^W&Elaf;sT~Hre)R<7#mR#AH_pP9`w7jmauCue#w_+@?YCNE7 zBBXXQt@cM&<3M!dOhU_Sa@%}b$3jl?P(kNpR@YMD_o=)e%f&xtOZyhf2Un_w*J?&L z8YZ^8ySqn5MrLMa78Vx1&+Ydu9gMCYPj8>D9$xP6?;jr@ZyjG9UfiBu-(O!}U*0|5 z+&{g(zP?|AHYb4d-b0}Pc^QSb|5pIyFJ1KT-YQ_d&tk$r!Qi;!?>o>o;;Q!Vx%h8M zbkLj^2nh5@LRdgiyuUm#N&#C8tsg%@Z+fa20+(KmQNk?N=_{sMJ!O4P`K=j!vZ4fb z_CpS+3}yJhnpH$<{sqSJTZ{Fb=hg>Jp?7=f(At4(T_3Cy%+u$Gxytg($EW}oO2s3> zc^YRxcVr@1dg1?h*Y?u_X7iWu0eA6*SMO9^nrh~RCcf%SW zlF-EdR8L?;Kw83gme%PSvLQ`- zfsrEYAy9-uf)+#V6o8X-N45%u?Y6{TkCxqJcz8KooT@btx;7`ETbfc zGhnoVY4^l}jg_D~L1NhWJ;SjM7G7k;E0l29B`DtSRZJyUqrfqWV%vN5mdj=zc&8lT z^+U3Mu0@uZ7fL5<{;C}~t9_zySmqq8p3fkS>)#25f4F`1gBlvW0qjSCDqI=nWLT(# zyzWN^(p}0AI~OE)Q*$>@U%HNqY`W09R7lElIV92=i|(JSlUEt@dPnZh)02@ zi0SVNH*E8&*eK=cSk9<1*K6t5ZI#oYL%^Gz%?-54c|K;Wxk0Xwpp!Ae!HSv9HZyNo zs8=``Xo;=KcQ7CyKb+vF7u9t2CvPS5F%>jk7|-%a5yrh~Xi!lcBp)cTmVpQTG+M(s z{Jsma6hpWRv&Y3G3x?6UoFTbqt9eegC7hNEd?9>?CF9_W#RhDKoeqS#v^)Q#GvPM3 zQhKF<@eFa1DJk&$g>z%Xt<}M`^#1nij&+_5>AGXS&_a@xD zjEq~Fc^6}?kEB}-q+2pf2Y%ZyEZJRepe1e`oD;OkfM1i3gouoAg`ke_-)HLk6F~p2 z{bz5dPiJaKYp-i>|F_-ackDlUdgi~j|L9p+|Fr-95b&E?+F08G2>z-2f9r1;7^;6N zpfNT4dpGh={I}uv_;0Ce{C?2b?r-q{e~LL7jI3P8cy2;ih^X9y%&VD$V13S3+IfM zr$6GC>?#8N1pdDjWIGYSZdW>i>Rps7_Y{Ky$<#uwUzPEm{(6c(4T=9Meuw}6JSF@M z_xRoUpN0Of*MFGbCE-v0{{i?9%>Tb_|K9EV6aPK<9sb+v+Zh^K{fz?fd;Di+VE)(Z zzbt?9|Bt}`f&c%i_>hTU*+^@6*{C+8h3B^?;$HBak<=w01Nk z0GJpO{EJ!$-ruMdfs3^Rxt$?_ouRIQ3jx5I;8$+|2n?)$o#1F{@1SczU|?u(YHUUO zt0q}H0t-Xk_qt301g2I5rbhpGy@{@kjSGR3DZqrl#M(=golc-@vK0q7b zVq-|aL%{j|@~jNBbuFx|3}N)`?X?X|?cR%t>;W$CW9t2l0qlujeo4YV9kA0Ug87S6 z`Hw|^*&~8^=ctVXK>N2#e^vck1M~qfc7_(Z08>Xp?e}Wl>w7;0uyZhk`5(#F|NHoN z`2P>Szn%jCVEs!D?5yqW|4WMizr%k9Mh3RO;y)AfpY#78gMY*SNBWh1^Z)U$-gMtH zFk=B}0U)5t0XFc^!}ooxf5X+6_%&GMf6d~ygNEEdKp=#_{CxJ|gt(tFs9(?mLP7>Z z#t#$$}N`U8|Z(apaudtw@%n zA>Hhk88aArye+H0g9E~BlA4_toFC(L(nez9q+C-zMzmWziI}&L5u(ec89UBR7!wR5 zcO!7n_MQjTWoB(S|G7J~f3!8#?&aO7x3iuj@{LrOnXQovX|c7hm@9RXJ$g9LgO^o( zdlzduL4lugR1Nxz`AG*bucvR~Xg#nAn4re(J%>Y34KCzJUlqR7NNyZki~Ys{m?FU<5XTf-fl<^OB-IFJ7IH1ROjkUx1n67t+6n z;x0(UTEoJiDm)8%@7UN6?)soa0!hU9eir^r9`4<%)Q~WhtJ#C1yBI8~j!o+LQoO3|z%~J{jpmFi_ zCapU_zs=$W!mc&HfBB>X?bk5;a{=e?g#Wnyn;W|P7ngv4&;Dbh|5y6Y@Lu$%{{I2^ z@6vx@)xYTfY8=mJL0!ziar|>cFafy}_*)+ungsazU=|hfNAKLgz(g|Sx@>_^vw`pV z`MLgmW)$Tg+yMtl_eSLv*s!stq^kd@=h65vdP5JCtfuqo#3)wi zxk{vKw?P}t^h#tztO!ia0&f;$+(wLr%S^I+l9i%r*4*UQeDcEk zEWz96AKr-Hz#<{ZH^(eLONUhMd@(tJ+c7Ko?4~g4_wBR;Sb&(TNggJ%{8#t=&ARy? z=Rd$y-~7KO0KaGd(K9jpHUAlz>Hp;aAA$ci{+IrR|Lt*$v_iUQ0dD*3XL?q%m7d?KpporMhw8zx zP8eR@624FYPQdGO?n=DLWRzX0hd!>bJJ6KUx$t;W13T^8=&bcyRm>UrnoLo%uV5Pd zvcI&nCij#_H=@hQiZGf;EuaHG_<>X*kO!ip2zN~#0rw+Jd}J7ko;u!*ZUhf`s?>|_ z#}Q@FWViG09~-)z^ZgEmqe7~{Pt{?Q9XKS@yORWeirKn?8Hvfn4bcZ&TiZY8u{IGI zHFX=A%&Ey&#S+mbJu-@eeV|c~&US0WJsqIHVf$eMJH)R;Dw2qEq%ILZqCD-ul#p)- zK0`H1P!-!fX>la>h3x6uFnJF_RVM7nB35S$I7rwS{@~DklDRv0M{Y5 z#QtaD_x1m8i~aw?@7aIX`DxA>AUtD-H{&N4u{6e#(`FSmb7*@y|4H*IF@uFwn`oxo9 zpBYyX#2X4KtWhlT)peB*1Cq*EHcS2PM@#_lOmt~oxw`VSaYc!pBuVas=p^&zSkcXW zV*RaEc?NZud9H=F=kaKzaiquNF@cbzDG^bLRe}SfL++4bNc;dwX!Br20FOPZ<>}4O z!HeMJ6$Js(7lr;ggpT{HI<<*=J+Z1U=|=>ekg+P zW}kKyGjIdmfJ5%dq5X#>|C~DhllpIHscUNSpPvDKPyZR||62c<=^6k0{_79Hf1CcJ z{zd=4bq&j)>SB6t-aYM~UGo=0awvWZP(j_AGd~B>a09n$2fnLVZDFz{!b;EJj=pJ9tnmXK!(A z$yRzSC#i$vkzx#hvz_~_{`U6n#IAnD`C6wIP5P^yYSbI_8`NCZ; zIz*Z^vYXXNtRIHM`=FVKqNPyn=Bl+S&u>2`Ia&+0vTfcJ(nh!je3xZN-B5o;s!IA2 z3SygX!wqFR1LDpnWE{P{y@mv8!CEr&;VPVrAwz3Go`oM>u1iZaq(J7|GNLIpX- zTvNNej>k7|pxg~Pi?03(Fq{lHEal5=nG=)qD}vCth*oo#PkRx;5)9r@!B9*fP|E&P zi4kTS2%Z5K=lLE6+hK7(o}wB{7j<;IjCiW&emMIYf5+@nLE`r}2T3Kf<>uu($#S=T zLHcTl7s!FNcm452;=%2Fpj!Rc!22JryZ^7?Kd1lB07E+~-T&+q@bBtB0}~VTzx)>X zFZ$2I_UHQVAA)~F|KWb6-}GO}L1Q22|LFh2qWnt0Q>&iOK>u<7-^#{LN!dC5WNH$* zn;#0Cf8>jK$27vI3O`xXss0~6Mjk_ zjhDqXmw@_fthsOB{oZSHgh|_*ny0Y#+xpSdDW4i2{y&`U?R5zZA&&?O-(aTmzAJ8N zE-3oAHuU=Ik^a{A_9>q!2MCC5(9&E{;r(em)SZ_5Vrj{^B5Bk+NZkza_C(AxIDT@I zeq>w26ZsO4rhpy7g4 z?Ckf8u-nm-;jZ(o1{OCC_Kv1{qt&iVML17hpYF>H({`n-jJsQ3b^F^?^vX!iu5!b1 zgeXx(gxjDlOVFXsMet)Q{O{->k1029?P<%7_^-z&k-V$e>U|665p1IC$=GL`(*d>| zT$~(%JczpEZVUQYeBak#w-MR5>{t)dBQIiG$pO2XMO93eV@nytWd=`}W_bL-Y3-_R zO|p>it##JU;v%hLAD8Kh7PvMs7S5*bx`Gjo8V=Q+_T;@7H+2|>14g`#q8S{+H5Xjr*S)-D zljL0c$QPJYNsZ=k8EO*)7KtMleQd#-+?m(9I?VM`Ln4N&QjB!;&8jb6Fj68(J;88RoXiRv(kI3-cPq^-Jbix3ZG{gIZ0^IN#yXeYwd3M zs1f{_AJ}4KSLce^XB79wxGT}_1m!PO8gojU@gX~hedn|RfqwW z)J+I$K#g5;ypAFwdtB2S-UY-SAl-J&^M0k+?uKD`SZS-V)KzbTdfAt+|!Pjt?R6xyb< z#5xNyzdnPBWH{_N0ewc35lrS~oK#JnEvl+h%ljuR0r@_6V(&dfpaZ6lbq2mWCaqW} zG9rU!w&};VbKj!^oehIL)i4H)4?x#zC3O!BzXqWYm{F)~C71QHLQPEm`|d1|1W8C}bTT; zcRR_5(o;YKvPdGL&XMEu<7oPxr7?-nWjLhel_uvt8?CY+3lvgm2` zWGZcMj$fN}-h}|ePhR#NParUnVEIN_C$GVTv&>ih2VG>^@Q)F^vzoDqY!te_XbPHcDcWZIlpg%Uo70)t)ReUu1BthSQIhrq61fguzvy(H&o zwJl}LO<`ZZuZL=49!rI^;?2wLPo(dS!UIoe~_k;Kj&u`w13+uWcRNV!5D zW#hjJ169-0AUv;2TM?a>;~>wDEC;O{11e|Y{|P787X~ts-0-3A!jqlt1xP=4Ez?3H4tyIf0NQsJ=Y*vjuiw=$w{0SnLBAXF0b8oYVqrU$1DPS0Qz zS-WO$)D)O|m!C^7InpS!<-_5%l4UA6Wvw3jG7&`_&eYD2)99aDhDC9djznHQIOa71 zMrE~3PTZ4=(wfHPTv=>=8#L&x&vL6#st0#r8M0$oj4T*&Vv79b-Mqy{eeOTHIA`;V z>P;Du+Iw8$*tHfzoB+amT{{$eg3b)xLL_Tan6Om+MF@>k!U&MVR*a1S$6d6Gpj+%x zJ_1i0dJiP11Dq?(xj1^*kiL^zhqzDY*vR^E#n6ZZq~2BXARU*^gRK zkj^QaQ)q>xKureLCDhK}wx^$9%R^330=fMh)rbwiOT2b%t6RO4F7qWEe&nQ@Fdc`!Tu~ zR&o^%Q3^|NV`s}jZ;F*L4 z38`_{td)qBu_NWIJN5(;p{2))Izo82lMB711m1Lydf}uVAPR?`eec~zwOC~05Buyj zduxctWol;sb)q=Iralbr;iP~JU`Nq%PG1~&h1AxM3<#GAq4pKc1ZxBFo~_@3EKp!N z8e!{}1%+!*Ct~LbxAD!{0paQWKS#Pfzo#bm0`FyHWA%x0_fi}fU$)Y9`dL6{cFHV4)_Ks6 z-YgCfdL3#6J&Z zNAEg11G+bVdSsJeof}}Njy|pAh4*@y0MUxXrCsRQ3CLcB?3lg^#0=xY;G*BMeBvnm zP8lr+bNVbGd)P0rQA7qQqM$fnZDOZqf{?))j0p0R7hhQqRdq!L+eH4^dG5r)%BuAe zX2sipA>Vr?picM`0ap41D5xj#VfwezO~yk;{+5v`hZI)FJLtO8Y@r}H2#a+>sJJ&d}epj;q7)yY~Hfd40YO<5lZTjY};VhG;%NP&J*goHCtx;+F1^_Ru~b z4jn=P%MP|=FPs{iby7A0i_sOo-_Fj?K6xcw(n@6K)_>R%XyATAEj+XBYyKTce9UQb zElz)YTv0#C(N`22qRAj#*&YJIR2i3WOmSf0>N9G6ZH~caDLX6DW=4+~iH+2@2`ZnY zDU6%`^j-EnnPW561o5z7=F4(!*B0gYGu(4%uId+RLpKiF+2kg(gt{T|QdyaNI+`qm z`vnaPzR!zVGHUQ-<)WnJj8jJ_L~%%ngb5~3szbMSQ)Y~&EL5iGF?0H~^7p)Y^c@hgW&)+^6S;_jzJ-HminU3S*yLw4v%FKjwAxM$QX0I&-Wq+0 zU`H;;<22N#y}pi!^OD*{VDKs`mQkf?c_5x0APLxgU2QOFP30_tqIuhH>7|>zRW!FW zqv;-{LATY^1@+2W)?v4wlf?oPa*nKKj2aiqlH#lz+VVtR?MIcLkuxQDcA0QkvICeZ zB?wg*W%AJ?8?0!iah5OoK3k3-f$@ITKwhn}sMz(L1p4Z$nHr`r z^D_ZZL=Y)b7s{|8k1(TcU`>;=+DX{lF;F&AtQVq!jFe#S9~qUe`uOzgCdwcG>=phi~hJ=mz?%IA*HWcnE&E_kW3sbaJdm3-)% z%DrE5e^J;bA5`0&?&O|V6+Upg8jub;%k z^2#;cb9zSn5sv#H$9aiPgVxNtcA?+djolmRNsUVrn^d7f!pL2yI}>kzyIGV9>^S_Qe(f&Sl*O@)d(;NWsP)~Lo+d7oeH0N4oqd|Iu}-=5C-BoR41nH= zVPlg*y@Svks=%?X3B))!%LQ~XWt?_Eq$5>i1$)cZ0S?X!&He$QhC27hU|d-R7YMg5 z-QGoXW4g53lh9hKu?qH9{vCawqRp48@vm^24A(VSEn2^7Mi;`+F&Qkaz--Yw_{LN> zRF5vC{C*suWCh6!g&JM5(5$!rt+sXu9i2=0_?fh}Ry3}2V1%nwZy#P~pYp0gZ@-g^ zOKiyn!}0Z!@r*KX4J@$YS6+e1i74b1lH!CeW(^{y{3}<+$q33T9cc}%W%H~3EvFiz zMR~Zl``@o?ffDlKct2mr8bs*Vb-&s}(zrc5&{n$Og1XQ=^q#*rDma772JNVmWc)lN zEIcC*!?G;|w_dH`)_Ywo5VjMwNz0zlBBQ*w1i@7jaIJfM?BX(aS$&+6fZW;y!#2=g zaHv6?M=B8s0P^6PY?RyM2wXe;vER{jhrIVs|v96~MUo;19?+76b5cc+W>zr$t6z9Kpg z^}2KRQLqK{PNIt?ZJ2yMTt*iww7+)jDNKQTVJ7>5YliMNziLQrL{GA)F~R!~j(@?{ zwQ!~C1V_w(dfO1pQ`pl&dxO^1!p?iO!3I=-PVB(l0=*8p(F~2lrw$x@wM09=(V1Ot z*(Ao#qO)=iaq1xQ>}_$$<=%<#Gl=!r>j&3rUc=eO`oh;UtjumFZGq)&i@Wd1J2<w z78yzFQz_%HVRfJ zfa}97beOA@!z;bP=NeF+u+Z)NImzGwM)!?p<%SXm!zPmD_1h)Dl&=>!9(k4FMt06i z-MbzA=U|f;h%&=q5<@f2mq3=-MM?t&xR9n@O!F~!A>}uqflkB|4ZEEkD&=wexfXyS ztY~z1jVEO}^1vwVF`_s=W}~{dj`XzpN&T&orrY+)O9+XBNM0q|3ZygW`a1TuVo3kE zOaBd-=Nw<~q+*nbV5&pLl}yyP?W=V|*jr+V&MxhnN2RejSp|J!)$*vZq4mdWu5b0c zPqbz~cYpS)zfpg?v4+2hysAUC#RfS_X?f(C%%(q!l&u%vXTqlzkAw%iGAit`jxU zoWn{hx?GUc!11xrvgNj~KFoq#_pPgm0RL?II2+L$?^=wlalf6%U0~l_X(ZRuvAnNg zD@b)Km0iDXz}!l#tz+URFA8<@L}|t6R{XBlakQ(o7>{l)w@#&lmzIzFF9r3@m)=x} zO}{qISKJ#xlOGm_7tZZ^V}3%r5YmbWdZe;kP)z516Rwynz0g}kVy=}+NtjMJZ^ff| z=(v+Nu64K~zssS;HzmV1zcnuUJSgQ)W7>fGvLT_NuFu#BsocBoDMk9pX)sMEg^8Li zFPs#Cg18qZQriUWxMorHnOnGuU_JD8uLhb@A5%-kvxI2Mw3yvRJ zVu1uS%{5Yt_%ps_l2MgmR*~ox*8^j4B5}w=xpshJ2f}`QvQ+Mwp{o!06G#n@)j?Ef z^*q@_-WRHQp9|EX#UD7pI1XpQ?M}hI#HR?Ov(5QeteW@^Yu_GXuon@8F}^AIdC*|v z=aGO2u4zM`F4AbnQs>1k|j(>Y!5gv)cDVheQhD1}@Hn@XrHOcyVfj?hHOZ&S$xWJ=)xh@lo@ks^gWj)AD`q_x*(D z1|S-f3l1kLBb#pqqRd{bmMJe*QeJv_6{yw+cbnDfM=DcxQn-Q9);EtN7idQhnMzqzJY2eg7OEe@pR!LOp0cl& zI^1cWBQfbpx;}>bd*;r*g`F4HR8;D(q;@y08>f3^)Z0mf+@()w;Eqv-y>@<9vL;_r zP+Kp^=O8mYi2O9R7bnAE;NWrUw7rg9E{2k_Z(?3(P;E=ymin4Cchux@eNe<^gKw+I zYwA(RbHzkAdjnpY`Loly>TA%&ip|AJ6RIF`z4>hQ&DToiaAPyN*FoW<)F5tic$(dC z7jyW@PRfQFqUNn{YSt8cVmWeaBBCR%#{|vVv-$*m zZ7)@6(%bCBhh?*`J*QNXFQ`6e^S&f?xj{Y1(wj|fD<3)F$_{1>1Ke|8F2phdFTz-% zs@S(vHEq*qzN)x|sa(j8ibJ`Hg^Btkmrlw9W)RI&JdMJPzGUEBddP4N+cXm;eqU>_ z7b}*f7+N71ULY!-H&tpxk9$lu!c}7^-hT6r)Es>l%DjEUbpU>NAkOLD3l}kpSD{-Z zzilJ?;Avb{Se6sfP6#lNihHcq=!7G7QmCN@c2U99&X~dyY~>J z>d_IBDT^%1=_{PSP3e@H27=L*>}17!yx>W$D}!U~4|w;)j6Ch*{+kRL0(~ z$I5BFzEbmX9rVf%NDK2Uhl9?_O8aIrxqyRfXV>H&Rs&IufzwwhJdzWmF+yhx!vFh0 zTWd1x=zz>e>W3lhcMJ@`B41S=p=XJc9foum+G7Ash zu`J6ccPb3|dQMU3xRil5VV`goyHF9%1NV*#U&k>TS*U}Ke}1BRggOwog9^(EbPk8y z<$dDp9)4lAKs{*Z&GGPEvZX)XY*;&o3qzoC6^b2OJI9n=UjLXoAfu%K?Qi$2Ub^`h_@8oug={ zIf!D8Z>m7gwn^`_Hf~?=*34PmT)-?n2N6<7QSO)?UTmHRGMB?1R;cB^E(HJO)`CQi#u<2l{fA zEp*3y(5CYW`5I&$WD?9tcOhCRWQQ#i)GB=SGKRO}2xOH1D@FkUK2(tza^(pAp2L{4H^OIjm=mE%&VI#g32i2wMjkTJfkN9jg<` zRj4*D6<~ugU_R1Kb2t*__Vodg#R1` z#Il#+n*t$$BR16CX0#~4T1Zy2_K;vl z6N*27wFFeq3+pnI!8f==Pz2MoM`AdFANkl2MNnO5n4p^|V<+`$)aBnbEjk^ZV_)W| zmaM1gm-aAmV-cA*L2v%{sGkYRWlUePmq>bg!1lFp7^-pM7G`-yWi4}YAJVU=pVL%6 zLiO!EU8%%vsPkcTKiAvyXID|B72`^VWHUIjsIDD`F)j`m4GL}2+Dr3ux-N{wihIf_hnI}Ifx>YI9(Ff8hsxEhN1QuT@1$_HNLyZiU9k$pTJ$QYfnRu>zzr8xj> zHhXhkS_-7l0dX_EdpE;M-lF=4YqZTkz6335HMj?x&V8m{xhYZSYWfuQ~hUh`@;*r95lJ}{Y+1Q+(5SI@6KP_T*se|P-UjRJGS zlnj~}Nu<9whiNpY0xT^YFCCbgCGxxwv3Dm@1B+tiaB3n)t^s3XrVTf!-FN;am{1*P zcbYpF+lh9|@8Bj9r1;Q%Z@Kq@`kLR2)o-HaW#x7{b#IQ>h;Gvl7tLEn#iyNqm+=33 zn9msN>53d5{RDOeM@D=j(OY@~Pnq|qCv2Wau{j5mpWv)I#{VAa=iIe!_Lt#uq%Epc ztT!auPo7AZTU?SQPk)CvU&5|i!M4h_4?3nq&4NZ4@t{NPSVHY-fe+T00}MT=>~OxO zr11BUL}ZBm1RJe7?BMd8PC@60QYnm;c~SjiI7Dtn5mLBEUyXBDJp?TXhMK)#I@PPa zI-pFuY+ME@F(whsFo0_*>nLi1Dnq&@a=ZkB>7}mIfCGc1ltMM?1MH4U96Y0bMn>~? z$e7g;C)eUb8v}%O@xpG`kDr}nYC-B@&Sb24`>h#C5=1PjyNM})azGLeY(cIdw$ z$mi~G?54IF=lB0_jL$PW!GNoD(li`#XTmfs&exhsl4p~UiFGS0Z;l^Nt;i#@;n3dq zCar`{W{H~j06oJ4Y1=j)78(k?Tl4@s!)rw3BDAurDK?Qh5vzDv+VVJ7W7K8G_sf7U z=w~r7+DYm5Y5vto_?b`Nm}m}bal#*_Fyl=RCKgB7G_`@mHx&Yoq|m$yk*ZihIl{?B zhyivRy+K{Y2H?_tc#=dX?%`ogWx#htzD*d&&K&2X+u^IT8T0z)KkMQj${5-FzmPaU zeDUXjSebs*c}_h4u~5r+xJaA=H8(Vd`$10DXpBU=fj=BmDvR~hXSvngEy6;5!+xF}pNy@xbs>T3UX1BJ4_@VEk-aTcL8y<1d-TX)5<#+X7z>~wHavu!${3uO<*CCuW&OodRNvzrES1^n zH8b>54H;eh1)}KutD8j%r*dM8H8RqYo>wU3AzH4bOyCvu+4lTl@;XCt((RB-Tbt1zqRJYNkf{)a4;pc+bD+Qr^J6xJ6xKgei3X&-u`^HN2cxY| zhPm;MYK9ro(7t?KPI5WUFCP6WP^i>BOUt;^n3g&*m~+tmJ{gV)o#Tm3FmRIAKw-O} zoWlSq&Bx*=%ZwH=twZs_(_h<#Zd}uMLkGrgZAzvDn_Aj*q>BKju&is{t9`VPcJP>2 zgEctjFiqn4FiZ_nqxO0b2%>7<5rQ5U9BQe8q_dpE;?b|PJ>6o*@=XD}T#FUTVmC_^ zs^3AT{eGkr(``gu)s;fDCuk7)g8Lvdi1j8GWjM6Y?V8EY>8vzArhyZuP|3exB6 z=hCmdo1}={MbcBB#$ZjecszrQ0Euv>M1$RvdP`<~ekMM1W(WJ^@%cd7vOb)5BAO34 z0pm??L_yS8j}zZTBNlgE8O}TRH){K%?tg{$y!e&_x-xh0VG5csRan)vM&~36t(wrO zgnjDr;b2s)g2c#iI@Ta1V}WHIV`kgNd4^P;gCI8KnVYc?$uO>&v&1v^@X?xAawfj$ zYRARa!jyqPf7=+tzmE4z2a7bblVcVMcn%~Z58RtD^}8piI=!+bWsT{L_~t{_8)dwz zwZG@Mjb}WU&~H~J=-x%w2NO>@=r$&Q7hf7XS_0N9ppv&QhtKB@)a!5GU4P9TAiIe) zxX(nG^lbX2vb+B)08tC%{QjP%?H<{k_h1`UrR5lz>RG^kiuUvI*0^?;N2P6+%iT{E zQaVD%O<83bF(_xrIq+UbK82^R%@WpNiaTUypUByQ21ko`l!UEhn^qv6Hx-X@HEj=h zpbhi6_Ne0*odpn0!uo=J(D>1w#u#rC;?jpn_LX9(rZIZ2 z_7;~{IkY6TXYlP4x0AW5OAWsg(GX1yH0q77hF!LU^6HW|WPP)sBd@?lRW6TJ!ZN)X z47vWcI}MDV7ItF%X?a+pv@3tMDF3Udnx-I$D^P2+WZiFZJyVvHy3~ZaQ1PD(Nprl~ zrH?W9(vC8C_74Y<>}hVo9I6e;)anV;VFQ=ENrq_!7kmM6PXbMWhm^+-M{{;|mnrGb zk}@JYb?6AERh3oyn#G`(CQ+OOQMd7Ni~fTa@`GjJU)>C=_J5Qr(JXl;*0iVB6-cQ~ zOR5<{EWel}l3icm2d?F`{UtC7E@dZBrnj7fy~%XRMH1@79700I7qC?HG`@FCrz{aB z=30HMa_Ppx`5y?=;osidHS_L8IVv1mrb?r#lb$)4>shytEm5D9ixol$2rVua4chct zQxPtDdr5>m-;{LHia3+qpt;X}_x>=}Mi!tm$Q~olzSL4LWpB~{k*=Pn6!l)wRs=BI zGS~vVRycy1`jpQc3M#qQH{UpZ=+JO@f6+2%W*+hGZl@PC%+0`Wq-k0HT$^DlXRepl zT97x7FP*mp+{}MNQ`h)(doZemKe#4pwsB-OZPw&49L6>eedEq;`UoR8YGb|HSeTgU zQ_y8_EE}7vA&Wjo8o3VxEqP7e@NIG<>I-RK!HJ704hyu7le_U}9;P@L4EH<-^VeuR z1;;#-jzj@98Q6Qi|HZm{M>X|ykKPmo5fB7v(o`%UO+b2yfHY~MA{|6Tr1xF|B29Xi z7DS{dy>~(pLJvLk&_f9cB@jqRa{WHP`}}_Iy??#yeV?;t%|2_*Idk^jb7s%%^I0ce z*_;zN#s0yZQ{F}}UU^R|>dyP5!CSzFJKw9uN3=u#VQ#;=nPbQxADFA`8!8uI_0ieI zQ*ZKWt{F_#n_2SF8yxcO{YuD1O{@3+$}lZ7zh3hX+EY=u?!U$d73zAlNR-lNN$KQ$ zCxF&z#xNOMQl(%-ikrn^Maoe1(|enf;iDD!*0fatqtBU`?OJV9tk)2)%#jaqeAy+- zvLan-a>!v)6Y@F)NlFzA(XwRmZ zT)UUPE_{lM157-PLVG<;mo`+_==>3J57ysyF8HmekXKtHcC$#3HHHpq&yOw%qPwQE zb5MW2N@jYlCmPxL^r3)vfDU>gP}}EuyG1m3URWm&&}w|Lx(=m#uan&3Sao(UEa zS;^f!(Y%UW*`E#8%nlJKonPBA(u=iG@D2Q{w&#(9fo0D64u6uoE_{>z%$@Vj4)t8#$wt3!mw{SXK)=o$PY1TzC9wa+(8k`oJ_kX^ z%yRR91)W&hrNV#cStfK`?;ql2M3)y{!26J6q52_xKD=XCP$PeT2P2=a2vcEymcgNDxHANjXKo=75-1p0Bp%9VtF0NG!KUID4XzRoOdEd=Q;{OfSG+iK>$^J$)Cl9MV)Bno9O5K$AUFDw!YJt|6**N4iL>K&+ zd`bZjAy+&Z>Z=H$#`4Y@ICJ3GB|^C!pUTQ>6&f_y&iEG|ijx>GIc>e?w> zyJQp%={unDlDuz~w`LUAINZvP`*uw&VorqgVA&Dg^c^?xqUFx|&5eUT8mG^B+3#iV z-=qR!jVp&f>~@w0Agy4`hKmONKhhtW`u`Z-L_lul-#)jzPlJ|sd%CT*%0faNQIxFj zd@U4A5b2)Cm~0YE&_nDTMC(g%;OuoG<)*vKy#uw&<1^>d@7^ zM!&TG^_+Zu)Au}tdzQg@juh$Js^JXp2G^9WNGL?0J3lu<=22l{gR(}S+l`>2(QfQ2(0MzTP`*;IGZ zmCE-iqBb6~Kj<9q*BK5JvopC5i_PX;_MwK8$x%ci6Yuud(Tf!St zzN8$BIo>3tCoWB7-Py%W3yudBt!Mo$cxJ7=uj*E=%?yWBonXoSUrdSlCkgwym*qgl z!e2ZSU!LyEA@X>%Aqem=D^i0lBpkeVT9I3kU)--=Ys#CK4nE!Wec>2JFy)rG~eH!>f*?NUL-ywOxvq?kjX$sb0LpI=fKUE-eL8s5-1OxgF z#O@x}I9&Z~8T6^<8?Yow?EZA1F=zJ}G+s3z6$|cS?)^4m_g=Q0!Sq|-99ruW_#nOx z?!UmBxhpTHl-Sp2nbZCeB$02hS=ek>O>bvDSz}$VJi#0sTDj@sH^Ji zDW$jQbrA2!Hm}!140l&nS}B=V<|R|yNpx|61_qvg9)p#CQ(Huu#yj^h)cuik@Bfqx zTT1W?E`SB!H})tnvdHuSd?w@zYv`fgasAb#8T*p^XPgXzQ!eEnAt_n3fK)^qqUhJyC&>W9Fkab6aiD&1p^!nc)_ z8;{cJqGTy#_Ev5Nq8YDhEOBR-d1@h?Tb1_OwNLmYYq_IEUX)PbO`j^MYhC%$4rW@a zGwZx>qG?3P*b_jB1|9&C`^W>lU%+4eBO7-2E*HoCSlJrKTl*RQMx(`!0_Awbs-O(rJ zKLm&PfxMN$ajwE5-uW_I5WjC*1L{FehAJL^V8()rWzH5?PxcJp39cQf(C`+2DMHne zLIvw-k9yC-*YZy9wfvR6Q>}G@=@Z2YCF?++9=iEjA$F|tGX0q{q9ORg{G40N@=dt( zEgHh}G7{UGzO987q**e;9SoHr$vJMNFrj4&TI6yKSqZ?*@)f=MlKM_vEl-`Haqic- zqmS}D2KI1E=zg%IY2tlx=)|nv;QI|@KS=_hV#Xc6GhyJmsOv-+_tm)y-)jA z5e9_6E4#7LvbNsh{^-j+2iR|${W42?cIdR_Wopc{B!mC#ZPOu+liAxpfQC-CY94*s z4J$84@(lOs!G9#z%8a#-yoXx371?4DU0h5bc^~t1@-dVloG2K|0*q?h`g(u>R+sIM zYlh`Nb!^sL$+onQ_a2P{`hH9Ln`KS-KD%klx_juqS@Xb_qLyXpVfA)^ksHLU^|I!S zwPrm(JDKq;fi<2&%&4$vr<8YAoG`*V`a@236QApqvF4#B6xQL4NO+b1GOa~9qeksj z)l|8Q;KNg~QMvl}uOK9H?zZfUD1`%({2s;eiH1tVC`arFe~o3WKGI)T=yL3xzKJSl zpz6-Rw}+>E`BoWYJty_FHomWGg~>0B*{%OUX>AJYx6HNUK^$fbj-FHw-8{JrCZi6+ z_hkM-X_(2(OKBzFr~Bvx7njArj@ZRJhr4#Ows0L>mN&j2jrZl!i7v+J>yx3I_kVEN z{R*VYn>rFU_nq$SdJop_J3L>XjdU%HHFKQh_S#A64n2_n&?n1UH{p-p&R9O@`Ns1F z)#C?{=jm*237(0v$=*gLWfrc9x+#9@+qq^cCbwt4B=tFl^W~xjV!6-!QzLK%+;YH^ zSWOeC_}dFi4c{XZq0=Nn}xd?1MF) zD0qLZ>03`Sx565k>!-1hJyMXnS+B=HC#d#EVknPSV)eOwG{o;Es;-K!eM!GpDr{w+ zdEwE^qxtUYsKtO@2_d=i9eORfz+M{#XP|5JJ$Zj!NhJO5;@S?osE5q^&GEY`s)oe8 z7cZ{nINImm= zw3O`g5@5d9qkge)@ziQ!wB|?k$@vvM8KvFv<&T7LW^uRR-om@1HyDus74$hlGV^w`4}=f9i{Hd>5hLPmlz+ zRTXG-%5*K}(z6p4V(Of$qY&?3Nz!KOeeB?AKz!5M^Gp0Xc2moyDk|8QSF{yN(S*jX zN@+l-*CJ1*M1=XR)q?zKPRaAV$@5P`KekhzcPbhLeU{kSx9eiWch&SDQk#AuiIPv( zMFb~##z)wW_srJW#Wb=(*z$xM8PeM%aTqx<+;o?}FsI#-Jk^HSUPeAq+=qzTuAnw| zxDjGkPpfzvXvss~)c!%yLrVK#1>2nxct_yu1EV&qrUIFuNU~%F!&pC!-m3rfsMQV` z@>b-Y){?8wlbxj{o?H-LFjsD8@%wA=T)DI=lfeQ7%5?{@q**mkjV5 z6BOQ->+yO~o5Hy_d}H7wfKU?|^DboIpI;d}ogGzP`{i2b4d3|ugb_IkKV&8g?=l!F zvo51@xZ?WBsmCz&;m10X%W!YFXV&1z*vAifw}oyi{m|!ji|09&uuv-&yM}#3Q#6rC z;c)!6aN|sTA-uj`xFhsCb-3FOeX+NH(@_z*hFhBJ2Tm%dcf4mGL>q0D27Ru}&M`qP zQek5Q%C~RTUUDq|`X)7sX*yh*p9g8AGxvtS3FH(z)1<*0#5n!Yd?fePej+>pRJPKW z=r&``{^)s@9Q)6!R;@f%#i}(+YGhIy{r~;t@t?yl_aHmQdH)IH zRSV7AT6YER$Nx;am7@MC8X$FUqu``DU-RKSo0`rmX}xAx^+sa8}r`6X@?RJ7=?xsj9$` z@OZrF3-9s(Kq1K<4_zf?DJdz1ERcDUI~P_8#`$!6N6aLjvy63^WP6Xu)Yaqay!ALH z0Y8miDh-Lf@cjAJ$o?$}ahXi8^4307<0ZvFo1;ZNaz`!-d!nt@v+cCgjVxd_psZ0f z6P{xmr=b%ev*P?Wxh9;NZErgNKJG?i&IRe<;NUPJI@qrm3(?^VR?fN8KDnNIrf~^+ z%RMaJo|$Zk4OU9Ep9Hnm3M07AcZm7++a#oXFi7Xcc{S4b;34GA&`YcY;mrzP6$W0) zZAYp+e8I~*d*O8B4v+07;SpN#>+CroV)UEqF5V_pp6YZa8Z{#yj!!<7_sr^;HB`Zni^5(Afxr;Yc#FEaWNq6Yv15mDzzR z63;J0WjeVQ5}~G?jUNG>j!(~w+Ls{0JACCQ6*PdiqR31eOH$Ka>|Mq{4)2kMp?bsO z`IFo8O(bUJ+zCQ5NyAo2BbW&2BXI!Fh)F){xg8t{=MtnrW9ATt4qR?#AjNsWn-Yw2 zlfEVNc&K_pi5Xi5@XYg1915yzJOsiu1oB@ND~O8CiiL=0On_jK`L9HK*rm@C$vCGv z89kk`KweLe#N%(I3*fyI{!{!isZKn<%!UYU;g-jQq<9OT9ti}8gQJHP8V%3I+U(dH zHwkhG>wdTO_lSDQz`Sz_EPrBpIMDIvuJa@3A<+B)sZc!sL}VbuY*rvx13uRJK5@cW zZAqsJ0VB-gyR+STGWOD~r^8!*;-wMC6VmKZEJEG?^vS|Ac&rX5GvEZ2-hyq={$$_r zOtBLK{@)YwUzLTf{LTOPku1N-8*t_CpGP1v`xi#NndFYVX8U$_a*0ANT`u6B;ZD{2rvO$h2w!? z%dpQXXMFLwYBTxVFvtH^3Wufoe{KKyGr;wW@@B<1zoN;=ZovM>z4?CsA@}CRCvyqV zMQ}$myWhF-Cq{;mdi^=qfaUI<60FTm>lqYEG_G=RuxqntWV$vU4$92ze)oi(jw<}$ zVijvGuNh;`4Rax&X)_dycuoX8JdSQ}VY4l>)MSI5`tNA7@Fsz`XXb5#pX}>Fc+?NUngl!4o3u;iBV8 zr6FMoZ#{fkpD7L91z=eW^9UD7&|x?S2`$Ff+(+C|!10};Hj9YqgkbLVuEsea$hFg@8qik1dK~%?5a%t8ntH|K%YSX$2yl=9HY{ecQ+)E`c?+P7C}8WTYrj-pC0^b`F_vTsh zXWhRg_WT;F+-Y8SM&B*#Z!EKWJofvT*U&tm>C)_?UPF0nR*~7VM9{UvJ@o(vKH9K2youbVO{qHF+od_1-zl7@J)nej%snVz#l9dEhj zT`s0iALqZF=S3M`@NL~vB#o#KED?aeDWPR4z)V52g4<=Q>X?u||Erp1<~o@n|5A8N ze=@2t?h^w>613a^PT&BYy`e5S1GDV8uHH`btqOYmk*yNH)IF7-1{BPn-4&>78k6T> zt4EHglW(!s)yvEI(c|~$1|isW0nupv*JHH)wfly+)PJ-WUm3Hd91?hIEAhy;G7XVz zr(u_spoo4!thD^^xq1ChXY@txXYV_X-wcI*YcqQ;auX3ebIFpSE<7gNl|oo5#Cv1k zKsw;nb>4EY@9e{6+-Vk`L!#0EmKJudSAJ+<>jUGZNwlCYt?F-TJ*%>_(X7G^gAg1j z`;I*9*FaPzW< z6tq@0mT%W;I%*Q6a4M$f-&Y=_CQWq2{g)-!YQSmbEGaCwJX151rm2gu!JECWs6gP6_1`#GDIeRV-B&2;(G%qJQA$j2l=0&1KSNQ zdV~^%Ec4vexkZip@IErFBD25jnAczu!3P7)>lFGgFM!BIx)7HK8=nlRS2Uj9C_$X_ zTj3)-U4o2)-`G9$v;4cUPZd%>AVf4mE?BC2Cn}n69G77l1UJ6YDs&H#_ymJRHw=Ac zRK{L?vVsnwHz$JHBqZ)KIA?g6OB>3@Iq$*w1N$cO-14$IeQcMuD166v&G6+ozpDKk z8l~ul5ga%HZb5?A0PN&Xg%B?A$qvc|S6`V{i^{r5SURx^3V#p8k_J#4031aB?QXl` zMYHL=)yY^ti5p+Y2llbO1g!1&w2bLl8TFI$>JnIfpMpJBOmsr`7hL5N7%!^x$HeOF zYGvKtTBd6>geYa1S^d4fSx>*|HI|zrpGD%|YhgRE3$e3+HfT<1>NMNnL3hIDx@dfC zf%@jR94%$YX44W&DSZ^k_f6jiv{uzFQk#<}tlhe;k8~?asJi-|wbSK(2rOzr1pCp%H+pC74ceWu4Ijh)F`|WKn|-}rE5piGvk|xQSsPzH)-Pc{t!$SfdD{U# z(LYH0gT*gFOr$Og-SC}3)=DjZyyn+BeFxz! z!5u;*KLrkL2>49$BT6^E4KZQFJ_wr%a$wr$($q+{E*ZJRq*$KQMI;ryu@>jtXE zn5*V9yR{=%99JTCHYQ68BwK>LI+`Ri(@_j!ypo@O2#+6IZ$E&T^AwW#Z(udtx5Wy= zTc`vvtdvjdKnwPcszx)?B3z2P^83m^h>5bTS0UAvMtNzP{f)+-f?PXJX7b&25vWIE z%aU}H12KT2UHkgPknTq~j7t&^bi#D~;8*hIsn0C+0FI`ZMt!~+>f?t%=yf_yWTF_z zI0`LFZFs!q^SHC94l2uLy%?qk^-DXLZ5e~V>PkO;-p;6kt6%Avx5{+82dsUE$1>S5 z1$05+E8JY2r|c?xIvxQD)!hGBFnD7h#(gZ{#BMhHt4SKjZ>01CMD#Dw6O(T%x{cMh z0Hc67B*mQ)b*B%Yr_+>@4H@9Lzyk8PKvT^DLxpD6dPRZCR&#RRQOzC?-Xy0Bz3C&9*Trp zHy*9mh2`0#-*6NZi+2%GhVBFLkFw{h*Ti`*kxS1jOH>xcoDH&vf=*}{2V$1*)_9wt z72Q(xDKX`tErcBYGhjVz!A4=^;m=$kW&{(*m|1z6GiLWpL$gNZiONlvB9eZK9Ni0H z{3=7?6vYOHN4T#v6Sl$~DEYzLEWt&7u#XD&zUBg&zN{7WpQ$IU`qHIH2U;{ z{Av9xF4%4$Iy1Ub4}&+IZ;}WX&*>DLkC#a=PmXD8SO0nT$Gqgs=@SNS7)uP=5bi1C zU|82anY>N{&?i6*#!EBX=@jCeWYn@6)4cI)eZuXcAk|X|`bh7%X0Bfl>uTn^DF*E# zX65!AF@OPHov~-)x?qBz<@Fe40BI8FPW-G~;kKYN+On*gDD*dn?LM{MUhqMwRJ&ok zyJr2cT)-1g{UDG;?H=`CQmP>)y7VAxt}%ZVm=Y5TC_XN)F7M;ce^g3&BNP)Jz;*)8u{654>}kT3h^ zSdFl@OG^_ToPAZx&scCzCm2#EuQq0SlPOqc_#~)Kj zM;0mm{;3#1_7JZMR$%?v%j>k0m5hAzdQgVu{A-Ptd@e=)N-NwKP($4theVrQ9rV6- z#h?XorCDfegk`lgK@byVQ57o6l((|Irt)@kt0oOahNwpb^Nfn)JJcn+5|9#z!=kfz z6Lcz!u>hKr7ad8Go4v=&j7zB9u>PBdh!k)+#LPphpi99gg938emF%*hQcyJJ@Ug8fL=9S zzAZ5m+>=H&*S057wHo-j+EZrYHjeDQy#w1f^AwhF?>Pui*{)3d(Tnb)7A^aJ|M?eN zagm&QIsv{~yslqB=8*Np)lBB2cWA8&BQc_KbY~te-pAlb zQl4KmW3u_^?-%wI}1*f>__ zu}r+glsn*v?;k)Z-6|DP?WO<9CSwF333ZboZchfI=30!))7>9E zR_4iWKfql?ZWB~M1ZWA$2g68y-^8fM)Qtc(0b zHX8OsCKPH7QH1h(jrX|(+zqI}GrXj+*VONIe$L6O5DV0JV3{Z!wN~f;tS==2yz0>S zue=x};#~5)WUGO9pp=w!pzz#hc5s<}O6GPQkAr!EQVjz=zyMyAI08_`mGbbkLj?xEPG*;aU<^e%<#4K)k(B2nn`%_rGnlD~8` zd47F18jIWN{O%$6P6YVg&Iq7YeoViY&l2@Uz;OC7SOx3goo$vciFux;nc5q~fO?Y8 z{!pJw%a;=zDe3ST92$Hq7N%wU!1Yp$)S0E(#eLM{U!s5}3S^{r_%d4;cT zCuMd7?zE2>OQ0L&h;3$82+FgaU=$$0htl$e??&JBP3|1V5<;0KILjcVKM5ozK+bU( z%UVnMF_+rL!~1K1Dn`bbRyrR#8-9^rR)*)_rT#Zcn5P&lSndn5Pr}(&VAH7~F(8BB zdrcuV;Z|o+S*9ZO!J~mQ=`R_s^;(XuK2fi$Nqemd{W2^_2_y}#Fgt=LC2=^cXDY%l zwidOXn3G0er*`lHl}p#LCD(?(UH~tf8yoW1`n9u*!0kX^VR|>CP<8rOMf@5d2-(

0k;8ls^JE1Uiy}Nx(nZz{ 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 Ysj&HP}}jzl}O*&t1@(AjkxkG1A|KkL+bjT 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

WfK=GDhFj1KG*BLfaDKO-)*Kbkrbl zMa-Q>x+FkfQSzD*b`XBzG&I=OzV&h;pGe!@IuQ61bEAmog?^Hk#fV+t);47Jbt?Vl zP6>1)wi@2D>L^ZckaNB*WnM@)iN6wl69N(!eA|f>W?}Nalc`V$MUxK?Ii`MD;X2|Y zU=Kgf!xWUL<`uBbZ?d0kO#42knjg~_vPdbO-XQdg1XjVG!pdSHyo16}DWPuEZmURe ziJY0R2o!Y3LEl}&&lgV%aFq4!BB%YGmUh|`?KuT#6w0|i$MvG?s1M>%!3l2)?l_2> zgVm%M+7~XiL6ij!in_#$CkNbcQHU6mjMHm<{UcFtD4bISZWYJ{YgYXRBW<%FAdH{i zZEKtg=+b7xw)0__PWN|FibB&U1sCKOP-_|gvh$c2pBBv=_R-RCL6~v+l24*I84yn@ zBaBwsqXs`Yi$%~vKRMF|Qh;;>jTLJfaT6$mIbOfsQT$Q>*wmCr4vNgWuzhSJ#58

kaG4Ph6a8c|( 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 NIV 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

-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 diff --git a/lib/middleman/vendor/gems/ruby/1.8/cache/compass-colors-0.3.1.gem b/lib/middleman/vendor/gems/ruby/1.8/cache/compass-colors-0.3.1.gem deleted file mode 100644 index a16c5f0ccdcfb4f40b82eb3f24466e464024e9a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9216 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 diff --git a/lib/middleman/vendor/gems/ruby/1.8/cache/compass-slickmap-0.2.3.gem b/lib/middleman/vendor/gems/ruby/1.8/cache/compass-slickmap-0.2.3.gem deleted file mode 100644 index 55038f2bbfbfbf4fb0d689d926a04e1dc502c5e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11264 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 W|7V(A{;Mwk)dT<41OJ(O;J*Q94TO;Z diff --git a/lib/middleman/vendor/gems/ruby/1.8/cache/fancy-buttons-0.3.9.gem b/lib/middleman/vendor/gems/ruby/1.8/cache/fancy-buttons-0.3.9.gem deleted file mode 100644 index 7cca9b2512e4bf5427054e3c22f6a4215f6c6bbb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9728 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�)69ehB2;I@ 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 H%mV)fr@WKd diff --git a/lib/middleman/vendor/gems/ruby/1.8/cache/httpclient-2.1.5.2.gem b/lib/middleman/vendor/gems/ruby/1.8/cache/httpclient-2.1.5.2.gem deleted file mode 100644 index 69093072848a212e76f64d8bdee1c2d680a38341..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147456 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

$WY^2j}2CeEK`=(UsK)V+r@RVu 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 z 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%0Dcv{_YCj+95n41`@ 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�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®htgPl_x_fFZ)}N!t)ax29 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 V|3}{<|LWGiM&Mr~@c-io{5Jx8H+BF3 diff --git a/lib/middleman/vendor/gems/ruby/1.8/cache/json_pure-1.2.0.gem b/lib/middleman/vendor/gems/ruby/1.8/cache/json_pure-1.2.0.gem deleted file mode 100644 index f9e2535e9bb83820abbc3ac693754f2dbfe71264..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 385536 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 -RESULT - assert_equal(result, render(< true)) -= capture_haml do - foo -HAML - end - - def test_plain_equals_with_ugly - assert_equal("foo\nbar\n", render(< true)) -= "foo" -bar -HAML - end - - def test_inline_if - assert_equal(<One

-

-

Three

-HTML -- for name in ["One", "Two", "Three"] - %p= name unless name == "Two" -HAML - end - - def test_end_with_method_call - assert_equal(< - 2|3|4 - b-a-r -

-HTML -%p - = [1, 2, 3].map do |i| - - i + 1 - - end.join("|") - = "bar".gsub(/./) do |s| - - s + "-" - - end.gsub(/-$/) do |s| - - '' -HAML - end - - def test_silent_end_with_stuff - assert_equal(<hi!

-HTML -- if true - %p hi! -- end if "foo".gsub(/f/) do - - "z" -- end + "bar" -HAML - end - - def test_multiline_with_colon_after_filter - assert_equal(< "Bar", | - :b => "Baz" }[:a] | -HAML - assert_equal(< "Bar", | - :b => "Baz" }[:a] | -HAML - end - - def test_multiline_in_filter - assert_equal(< true)) -&= "&" -!= "&" -= "&" -HAML - - assert_equal(html, render(< true)) -&~ "&" -!~ "&" -~ "&" -HAML - - assert_equal(html, render(< true)) -& \#{"&"} -! \#{"&"} -\#{"&"} -HAML - - assert_equal(html, render(< true)) -&== \#{"&"} -!== \#{"&"} -== \#{"&"} -HAML - - tag_html = <&

-

&

-

&

-HTML - - assert_equal(tag_html, render(< true)) -%p&= "&" -%p!= "&" -%p= "&" -HAML - - assert_equal(tag_html, render(< true)) -%p&~ "&" -%p!~ "&" -%p~ "&" -HAML - - assert_equal(tag_html, render(< true)) -%p& \#{"&"} -%p! \#{"&"} -%p \#{"&"} -HAML - - assert_equal(tag_html, render(< true)) -%p&== \#{"&"} -%p!== \#{"&"} -%p== \#{"&"} -HAML - end - - def test_new_attrs_with_hash - assert_equal("\n", render('%a(href="#")')) - end - - def test_javascript_filter_with_dynamic_interp_and_escape_html - assert_equal(< true)) - -HTML -:javascript - & < > \#{"&"} -HAML - end - - def test_silent_script_with_hyphen_case - assert_equal("", render("- 'foo-case-bar-case'")) - end - - def test_silent_script_with_hyphen_end - assert_equal("", render("- 'foo-end-bar-end'")) - end - - def test_silent_script_with_hyphen_end_and_block - assert_equal(<foo-end

-

bar-end

-HTML -- "foo-end-bar-end".gsub(/\\w+-end/) do |s| - %p= s -HAML - end - - def test_if_without_content_and_else - assert_equal(<\n foo & bar\n

\n", render("%p\n &= 'foo & bar'", :escape_html => false)) - end - - def test_ampersand_equals_inline_should_escape - assert_equal("

foo & bar

\n", render("%p&= 'foo & bar'", :escape_html => false)) - end - - def test_ampersand_equals_should_escape_before_preserve - assert_equal("\n", render('%textarea&= "foo\nbar"', :escape_html => false)) - end - - def test_bang_equals_should_not_escape - assert_equal("

\n foo & bar\n

\n", render("%p\n != 'foo & bar'", :escape_html => true)) - end - - def test_bang_equals_inline_should_not_escape - assert_equal("

foo & bar

\n", render("%p!= 'foo & bar'", :escape_html => true)) - end - - def test_static_attributes_should_be_escaped - assert_equal("\n", - render("%img.atlantis{:style => 'ugly&stupid'}")) - assert_equal("
foo
\n", - render(".atlantis{:style => 'ugly&stupid'} foo")) - assert_equal("

foo

\n", - render("%p.atlantis{:style => 'ugly&stupid'}= 'foo'")) - assert_equal("

\n", - render("%p.atlantis{:style => \"ugly\\nstupid\"}")) - end - - def test_dynamic_attributes_should_be_escaped - assert_equal("\n", - render("%img{:width => nil, :src => '&foo.png', :alt => String.new}")) - assert_equal("

foo

\n", - render("%p{:width => nil, :src => '&foo.png', :alt => String.new} foo")) - assert_equal("
foo
\n", - render("%div{:width => nil, :src => '&foo.png', :alt => String.new}= 'foo'")) - assert_equal("\n", - render("%img{:width => nil, :src => \"foo\\n.png\", :alt => String.new}")) - end - - def test_string_double_equals_should_be_esaped - assert_equal("

4&<

\n", render("%p== \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

4&<

\n", render("%p== \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_escaped_inline_string_double_equals - assert_equal("

4&<

\n", render("%p&== \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

4&<

\n", render("%p&== \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_unescaped_inline_string_double_equals - assert_equal("

4&<

\n", render("%p!== \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

4&<

\n", render("%p!== \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_escaped_string_double_equals - assert_equal("

\n 4&<\n

\n", render("%p\n &== \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

\n 4&<\n

\n", render("%p\n &== \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_unescaped_string_double_equals - assert_equal("

\n 4&<\n

\n", render("%p\n !== \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

\n 4&<\n

\n", render("%p\n !== \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_string_interpolation_should_be_esaped - assert_equal("

4&<

\n", render("%p \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

4&<

\n", render("%p \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_escaped_inline_string_interpolation - assert_equal("

4&<

\n", render("%p& \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

4&<

\n", render("%p& \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_unescaped_inline_string_interpolation - assert_equal("

4&<

\n", render("%p! \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

4&<

\n", render("%p! \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_escaped_string_interpolation - assert_equal("

\n 4&<\n

\n", render("%p\n & \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

\n 4&<\n

\n", render("%p\n & \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_unescaped_string_interpolation - assert_equal("

\n 4&<\n

\n", render("%p\n ! \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

\n 4&<\n

\n", render("%p\n ! \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_scripts_should_respect_escape_html_option - assert_equal("

\n foo & bar\n

\n", render("%p\n = 'foo & bar'", :escape_html => true)) - assert_equal("

\n foo & bar\n

\n", render("%p\n = 'foo & bar'", :escape_html => false)) - end - - def test_inline_scripts_should_respect_escape_html_option - assert_equal("

foo & bar

\n", render("%p= 'foo & bar'", :escape_html => true)) - assert_equal("

foo & bar

\n", render("%p= 'foo & bar'", :escape_html => false)) - end - - def test_script_ending_in_comment_should_render_when_html_is_escaped - assert_equal("foo&bar\n", render("= 'foo&bar' #comment", :escape_html => true)) - end - - def test_script_with_if_shouldnt_output - assert_equal(<foo

-

-HTML -%p= "foo" -%p= "bar" if false -HAML - end - - # Options tests - - def test_filename_and_line - begin - render("\n\n = abc", :filename => 'test', :line => 2) - rescue Exception => e - assert_kind_of Haml::SyntaxError, e - assert_match(/test:4/, e.backtrace.first) - end - - begin - render("\n\n= 123\n\n= nil[]", :filename => 'test', :line => 2) - rescue Exception => e - assert_kind_of NoMethodError, e - assert_match(/test:6/, e.backtrace.first) - end - end - - def test_stop_eval - assert_equal("", render("= 'Hello'", :suppress_eval => true)) - assert_equal("", render("- haml_concat 'foo'", :suppress_eval => true)) - assert_equal("
\n", render("#foo{:yes => 'no'}/", :suppress_eval => true)) - assert_equal("
\n", render("#foo{:yes => 'no', :call => a_function() }/", :suppress_eval => true)) - assert_equal("
\n", render("%div[1]/", :suppress_eval => true)) - assert_equal("", render(":ruby\n Kernel.puts 'hello'", :suppress_eval => true)) - end - - def test_doctypes - assert_equal('', - render('!!!', :format => :html5).strip) - assert_equal('', render('!!! 5').strip) - assert_equal('', - render('!!! strict').strip) - assert_equal('', - render('!!! frameset').strip) - assert_equal('', - render('!!! mobile').strip) - assert_equal('', - render('!!! basic').strip) - assert_equal('', - render('!!! transitional').strip) - assert_equal('', - render('!!!').strip) - assert_equal('', - render('!!! strict', :format => :html4).strip) - assert_equal('', - render('!!! frameset', :format => :html4).strip) - assert_equal('', - render('!!! transitional', :format => :html4).strip) - assert_equal('', - render('!!!', :format => :html4).strip) - end - - def test_attr_wrapper - assert_equal("

\n", render("%p{ :strange => 'attrs'}", :attr_wrapper => '*')) - assert_equal("

\n", render("%p{ :escaped => 'quo\"te'}", :attr_wrapper => '"')) - assert_equal("

\n", render("%p{ :escaped => 'quo\\'te'}", :attr_wrapper => '"')) - assert_equal("

\n", render("%p{ :escaped => 'q\\'uo\"te'}", :attr_wrapper => '"')) - assert_equal("\n", render("!!! XML", :attr_wrapper => '"')) - end - - def test_attrs_parsed_correctly - assert_equal("

biddly='bar => baz'>

\n", render("%p{'boom=>biddly' => 'bar => baz'}")) - assert_equal("

\n", render("%p{'foo,bar' => 'baz, qux'}")) - assert_equal("

\n", render("%p{ :escaped => \"quo\\nte\"}")) - assert_equal("

\n", render("%p{ :escaped => \"quo\#{2 + 2}te\"}")) - end - - def test_correct_parsing_with_brackets - assert_equal("

{tada} foo

\n", render("%p{:class => 'foo'} {tada} foo")) - assert_equal("

deep {nested { things }}

\n", render("%p{:class => 'foo'} deep {nested { things }}")) - assert_equal("

{a { d

\n", render("%p{{:class => 'foo'}, :class => 'bar'} {a { d")) - assert_equal("

a}

\n", render("%p{:foo => 'bar'} a}")) - - foo = [] - foo[0] = Struct.new('Foo', :id).new - assert_equal("

New User]

\n", - render("%p[foo[0]] New User]", :locals => {:foo => foo})) - assert_equal("

New User]

\n", - render("%p[foo[0], :prefix] New User]", :locals => {:foo => foo})) - - foo[0].id = 1 - assert_equal("

New User]

\n", - render("%p[foo[0]] New User]", :locals => {:foo => foo})) - assert_equal("

New User]

\n", - render("%p[foo[0], :prefix] New User]", :locals => {:foo => foo})) - end - - def test_empty_attrs - assert_equal("

empty

\n", render("%p{ :attr => '' } empty")) - assert_equal("

empty

\n", render("%p{ :attr => x } empty", :locals => {:x => ''})) - end - - def test_nil_attrs - assert_equal("

nil

\n", render("%p{ :attr => nil } nil")) - assert_equal("

nil

\n", render("%p{ :attr => x } nil", :locals => {:x => nil})) - end - - def test_nil_id_with_syntactic_id - assert_equal("

nil

\n", render("%p#foo{:id => nil} nil")) - assert_equal("

nil

\n", render("%p#foo{{:id => 'bar'}, :id => nil} nil")) - assert_equal("

nil

\n", render("%p#foo{{:id => nil}, :id => 'bar'} nil")) - end - - def test_nil_class_with_syntactic_class - assert_equal("

nil

\n", render("%p.foo{:class => nil} nil")) - assert_equal("

nil

\n", render("%p.bar.foo{:class => nil} nil")) - assert_equal("

nil

\n", render("%p.foo{{:class => 'bar'}, :class => nil} nil")) - assert_equal("

nil

\n", render("%p.foo{{:class => nil}, :class => 'bar'} nil")) - end - - def test_locals - assert_equal("

Paragraph!

\n", render("%p= text", :locals => { :text => "Paragraph!" })) - end - - def test_dynamic_attrs_shouldnt_register_as_literal_values - assert_equal("

\n", render('%p{:a => "b#{1 + 1}c"}')) - assert_equal("

\n", render("%p{:a => 'b' + (1 + 1).to_s + 'c'}")) - end - - def test_dynamic_attrs_with_self_closed_tag - assert_equal("\nc\n", render("%a{'b' => 1 + 1}/\n= 'c'\n")) - end - - EXCEPTION_MAP.each do |key, value| - define_method("test_exception (#{key.inspect})") do - begin - render(key, :filename => __FILE__) - rescue Exception => err - value = [value] unless value.is_a?(Array) - expected_message, line_no = value - line_no ||= key.split("\n").length - - if expected_message == :compile - if Haml::Util.ruby1_8? - assert_match(/^compile error\n/, err.message, "Line: #{key}") - else - assert_match(/^#{Regexp.quote __FILE__}:#{line_no}: syntax error,/, err.message, "Line: #{key}") - end - else - assert_equal(expected_message, err.message, "Line: #{key}") - end - - if Haml::Util.ruby1_8? - assert_match(/^#{Regexp.escape(__FILE__)}:#{line_no}/, err.backtrace[0], "Line: #{key}") - end - else - assert(false, "Exception not raised for\n#{key}") - end - end - end - - def test_exception_line - render("a\nb\n!!!\n c\nd") - rescue Haml::SyntaxError => e - assert_equal("(test_exception_line):4", e.backtrace[0]) - else - assert(false, '"a\nb\n!!!\n c\nd" doesn\'t produce an exception') - end - - def test_exception - render("%p\n hi\n %a= undefined\n= 12") - rescue Exception => e - assert_match("(test_exception):3", e.backtrace[0]) - else - # Test failed... should have raised an exception - assert(false) - end - - def test_compile_error - render("a\nb\n- fee)\nc") - rescue Exception => e - assert_match(/\(test_compile_error\):3: syntax error/i, e.message) - else - assert(false, - '"a\nb\n- fee)\nc" doesn\'t produce an exception!') - end - - def test_unbalanced_brackets - render('foo #{1 + 5} foo #{6 + 7 bar #{8 + 9}') - rescue Haml::SyntaxError => e - assert_equal("Unbalanced brackets.", e.message) - end - - def test_balanced_conditional_comments - assert_equal("\n", - render("/[if !(IE 6)|(IE 7)] Bracket: ]")) - end - - def test_empty_filter - assert_equal(< - // - -END - end - - def test_ugly_filter - assert_equal(< true)) -#foo { - bar: baz; } -END - end - - def test_local_assigns_dont_modify_class - assert_equal("bar\n", render("= foo", :locals => {:foo => 'bar'})) - assert_equal(nil, defined?(foo)) - end - - def test_object_ref_with_nil_id - user = User.new - assert_equal("

New User

\n", - render("%p[user] New User", :locals => {:user => user})) - end - - def test_object_ref_before_attrs - user = User.new 42 - assert_equal("

New User

\n", - render("%p[user]{:style => 'width: 100px;'} New User", :locals => {:user => user})) - end - - def test_non_literal_attributes - assert_equal("

\n", - render("%p{a2, a1, :a3 => 'baz'}/", - :locals => {:a1 => {:a1 => 'foo'}, :a2 => {:a2 => 'bar'}})) - end - - def test_render_should_accept_a_binding_as_scope - string = "This is a string!" - string.instance_variable_set("@var", "Instance variable") - b = string.instance_eval do - var = "Local variable" - binding - end - - assert_equal("

THIS IS A STRING!

\n

Instance variable

\n

Local variable

\n", - render("%p= upcase\n%p= @var\n%p= var", :scope => b)) - end - - def test_yield_should_work_with_binding - assert_equal("12\nFOO\n", render("= yield\n= upcase", :scope => "foo".instance_eval{binding}) { 12 }) - end - - def test_yield_should_work_with_def_method - s = "foo" - engine("= yield\n= upcase").def_method(s, :render) - assert_equal("12\nFOO\n", s.render { 12 }) - end - - def test_def_method_with_module - engine("= yield\n= upcase").def_method(String, :render_haml) - assert_equal("12\nFOO\n", "foo".render_haml { 12 }) - end - - def test_def_method_locals - obj = Object.new - engine("%p= foo\n.bar{:baz => baz}= boom").def_method(obj, :render, :foo, :baz, :boom) - assert_equal("

1

\n
3
\n", obj.render(:foo => 1, :baz => 2, :boom => 3)) - end - - def test_render_proc_locals - proc = engine("%p= foo\n.bar{:baz => baz}= boom").render_proc(Object.new, :foo, :baz, :boom) - assert_equal("

1

\n
3
\n", proc[:foo => 1, :baz => 2, :boom => 3]) - end - - def test_render_proc_with_binding - assert_equal("FOO\n", engine("= upcase").render_proc("foo".instance_eval{binding}).call) - end - - def test_haml_buffer_gets_reset_even_with_exception - scope = Object.new - render("- raise Haml::Error", :scope => scope) - assert(false, "Expected exception") - rescue Exception - assert_nil(scope.send(:haml_buffer)) - end - - def test_def_method_haml_buffer_gets_reset_even_with_exception - scope = Object.new - engine("- raise Haml::Error").def_method(scope, :render) - scope.render - assert(false, "Expected exception") - rescue Exception - assert_nil(scope.send(:haml_buffer)) - end - - def test_render_proc_haml_buffer_gets_reset_even_with_exception - scope = Object.new - proc = engine("- raise Haml::Error").render_proc(scope) - proc.call - assert(false, "Expected exception") - rescue Exception - assert_nil(scope.send(:haml_buffer)) - end - - def test_ugly_true - assert_equal("
\n
\n

hello world

\n
\n
\n", - render("#outer\n #inner\n %p hello world", :ugly => true)) - - assert_equal("

#{'s' * 75}

\n", - render("%p #{'s' * 75}", :ugly => true)) - - assert_equal("

#{'s' * 75}

\n", - render("%p= 's' * 75", :ugly => true)) - end - - def test_auto_preserve_unless_ugly - assert_equal("
foo
bar
\n", render('%pre="foo\nbar"')) - assert_equal("
foo\nbar
\n", render("%pre\n foo\n bar")) - assert_equal("
foo\nbar
\n", render('%pre="foo\nbar"', :ugly => true)) - assert_equal("
foo\nbar
\n", render("%pre\n foo\n bar", :ugly => true)) - end - - def test_xhtml_output_option - assert_equal "

\n
\n

\n", render("%p\n %br", :format => :xhtml) - assert_equal "
\n", render("%a/", :format => :xhtml) - end - - def test_arbitrary_output_option - assert_raise(Haml::Error, "Invalid output format :html1") { engine("%br", :format => :html1) } - end - - def test_static_hashes - assert_equal("\n", render("%a{:b => 'a => b'}", :suppress_eval => true)) - assert_equal("\n", render("%a{:b => 'a, b'}", :suppress_eval => true)) - assert_equal("\n", render('%a{:b => "a\tb"}', :suppress_eval => true)) - assert_equal("\n", render('%a{:b => "a\\#{foo}b"}', :suppress_eval => true)) - end - - def test_dynamic_hashes_with_suppress_eval - assert_equal("\n", render('%a{:b => "a #{1 + 1} b", :c => "d"}', :suppress_eval => true)) - end - - def test_utf8_attrs - assert_equal("\n", render("%a{:href => 'héllo'}")) - assert_equal("\n", render("%a(href='héllo')")) - end - - # HTML 4.0 - - def test_html_has_no_self_closing_tags - assert_equal "

\n
\n

\n", render("%p\n %br", :format => :html4) - assert_equal "
\n", render("%br/", :format => :html4) - end - - def test_html_renders_empty_node_with_closing_tag - assert_equal "
\n", render(".foo", :format => :html4) - end - - def test_html_doesnt_add_slash_to_self_closing_tags - assert_equal "\n", render("%a/", :format => :html4) - assert_equal "\n", render("%a{:foo => 1 + 1}/", :format => :html4) - assert_equal "\n", render("%meta", :format => :html4) - assert_equal "\n", render("%meta{:foo => 1 + 1}", :format => :html4) - end - - def test_html_ignores_xml_prolog_declaration - assert_equal "", render('!!! XML', :format => :html4) - end - - def test_html_has_different_doctype - assert_equal %{\n}, - render('!!!', :format => :html4) - end - - # because anything before the doctype triggers quirks mode in IE - def test_xml_prolog_and_doctype_dont_result_in_a_leading_whitespace_in_html - assert_no_match(/^\s+/, render("!!! xml\n!!!", :format => :html4)) - end - - # HTML5 - def test_html5_doctype - assert_equal %{\n}, render('!!!', :format => :html5) - end - - # New attributes - - def test_basic_new_attributes - assert_equal("bar\n", render("%a() bar")) - assert_equal("bar\n", render("%a(href='foo') bar")) - assert_equal("baz\n", render(%q{%a(b="c" c='d' d="e") baz})) - end - - def test_new_attribute_ids - assert_equal("
\n", render("#foo(id='bar')")) - assert_equal("
\n", render("#foo{:id => 'bar'}(id='baz')")) - assert_equal("
\n", render("#foo(id='baz'){:id => 'bar'}")) - foo = User.new(42) - assert_equal("
\n", - render("#foo(id='baz'){:id => 'bar'}[foo]", :locals => {:foo => foo})) - assert_equal("
\n", - render("#foo(id='baz')[foo]{:id => 'bar'}", :locals => {:foo => foo})) - assert_equal("
\n", - render("#foo[foo](id='baz'){:id => 'bar'}", :locals => {:foo => foo})) - assert_equal("
\n", - render("#foo[foo]{:id => 'bar'}(id='baz')", :locals => {:foo => foo})) - end - - def test_new_attribute_classes - assert_equal("
\n", render(".foo(class='bar')")) - assert_equal("
\n", render(".foo{:class => 'bar'}(class='baz')")) - assert_equal("
\n", render(".foo(class='baz'){:class => 'bar'}")) - foo = User.new(42) - assert_equal("
\n", - render(".foo(class='baz'){:class => 'bar'}[foo]", :locals => {:foo => foo})) - assert_equal("
\n", - render(".foo[foo](class='baz'){:class => 'bar'}", :locals => {:foo => foo})) - assert_equal("
\n", - render(".foo[foo]{:class => 'bar'}(class='baz')", :locals => {:foo => foo})) - end - - def test_dynamic_new_attributes - assert_equal("bar\n", render("%a(href=foo) bar", :locals => {:foo => 12})) - assert_equal("bar\n", render("%a(b=b c='13' d=d) bar", :locals => {:b => 12, :d => 14})) - end - - def test_new_attribute_interpolation - assert_equal("bar\n", render('%a(href="1#{1 + 1}") bar')) - assert_equal("bar\n", render(%q{%a(href='2: #{1 + 1}, 3: #{foo}') bar}, :locals => {:foo => 3})) - assert_equal(%Q{bar\n}, render('%a(href="1\#{1 + 1}") bar')) - end - - def test_truthy_new_attributes - assert_equal("bar\n", render("%a(href) bar")) - assert_equal("bar\n", render("%a(href bar='baz') bar", :format => :html5)) - assert_equal("bar\n", render("%a(href=true) bar")) - assert_equal("bar\n", render("%a(href=false) bar")) - end - - def test_new_attribute_parsing - assert_equal("bar\n", render("%a(a2=b2) bar", :locals => {:b2 => 'b2'})) - assert_equal(%Q{bar\n}, render(%q{%a(a="#{'foo"bar'}") bar})) #' - assert_equal(%Q{bar\n}, render(%q{%a(a="#{"foo'bar"}") bar})) #' - assert_equal(%Q{bar\n}, render(%q{%a(a='foo"bar') bar})) - assert_equal(%Q{bar\n}, render(%q{%a(a="foo'bar") bar})) - assert_equal("bar\n", render("%a(a:b='foo') bar")) - assert_equal("bar\n", render("%a(a = 'foo' b = 'bar') bar")) - assert_equal("bar\n", render("%a(a = foo b = bar) bar", :locals => {:foo => 'foo', :bar => 'bar'})) - assert_equal("(b='bar')\n", render("%a(a='foo')(b='bar')")) - assert_equal("baz\n", render("%a(a='foo)bar') baz")) - assert_equal("baz\n", render("%a( a = 'foo' ) baz")) - end - - def test_new_attribute_escaping - assert_equal(%Q{bar\n}, render(%q{%a(a="foo \" bar") bar})) - assert_equal(%Q{bar\n}, render(%q{%a(a="foo \\\\\" bar") bar})) - - assert_equal(%Q{bar\n}, render(%q{%a(a='foo \' bar') bar})) - assert_equal(%Q{bar\n}, render(%q{%a(a='foo \\\\\' bar') bar})) - - assert_equal(%Q{bar\n}, render(%q{%a(a="foo \\\\ bar") bar})) - assert_equal(%Q{bar\n}, render(%q{%a(a="foo \#{1 + 1} bar") bar})) - end - - def test_multiline_new_attribute - assert_equal("bar\n", render("%a(a='b'\n c='d') bar")) - assert_equal("bar\n", - render("%a(a='b' b='c'\n c='d' d=e\n e='f' f='j') bar", :locals => {:e => 'e'})) - end - - def test_new_and_old_attributes - assert_equal("bar\n", render("%a(a='b'){:c => 'd'} bar")) - assert_equal("bar\n", render("%a{:c => 'd'}(a='b') bar")) - assert_equal("bar\n", render("%a(c='d'){:a => 'b'} bar")) - assert_equal("bar\n", render("%a{:a => 'b'}(c='d') bar")) - - assert_equal("bar\n", render("%a{:a => 'b'}(a='d') bar")) - assert_equal("bar\n", render("%a(a='d'){:a => 'b'} bar")) - - assert_equal("bar\n", - render("%a{:a => 'b',\n:b => 'c'}(c='d'\nd='e') bar")) - end - - # Encodings - - unless Haml::Util.ruby1_8? - def test_default_encoding - assert_equal(Encoding.find("utf-8"), render(< "utf-8")) -

bâr

-

föö

-HTML -%p bâr -%p föö -HAML - end - - def test_fake_ascii_encoding - assert_equal(< "ascii-8bit")) -

bâr

-

föö

-HTML -%p bâr -%p föö -HAML - end - - def test_convert_template_render_proc - assert_converts_template_properly {|e| e.render_proc.call} - end - - def test_convert_template_render - assert_converts_template_properly {|e| e.render} - end - - def test_convert_template_def_method - assert_converts_template_properly do |e| - o = Object.new - e.def_method(o, :render) - o.render - end - end - end - - private - - def assert_converts_template_properly - engine = Haml::Engine.new(< "utf-8") -%p bâr -%p föö -HAML - assert_equal(<bâr

-

föö

-HTML - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/helper_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/helper_test.rb deleted file mode 100644 index 42a8bb25..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/helper_test.rb +++ /dev/null @@ -1,282 +0,0 @@ -#!/usr/bin/env ruby -require File.dirname(__FILE__) + '/../test_helper' -require 'haml/template' - -class ActionView::Base - def nested_tag - content_tag(:span) {content_tag(:div) {"something"}} - end -end - -module Haml::Helpers - def something_that_uses_haml_concat - haml_concat('foo').to_s - end -end - -class HelperTest < Test::Unit::TestCase - Post = Struct.new('Post', :body) - - def setup - @base = ActionView::Base.new - @base.controller = ActionController::Base.new - - if defined?(ActionController::Response) - # This is needed for >=3.0.0 - @base.controller.response = ActionController::Response.new - end - - @base.instance_variable_set('@post', Post.new("Foo bar\nbaz")) - end - - def render(text, options = {}) - if options == :action_view - @base.render :inline => text, :type => :haml - else - scope = options.delete :scope_object - Haml::Engine.new(text, options).to_html(scope ? scope : Object.new) - end - end - - def test_flatten - assert_equal("FooBar", Haml::Helpers.flatten("FooBar")) - - assert_equal("FooBar", Haml::Helpers.flatten("Foo\rBar")) - - assert_equal("Foo Bar", Haml::Helpers.flatten("Foo\nBar")) - - assert_equal("Hello World! YOU ARE FLAT? OMGZ!", - Haml::Helpers.flatten("Hello\nWorld!\nYOU ARE \rFLAT?\n\rOMGZ!")) - end - - def test_list_of_should_render_correctly - assert_equal("
  • 1
  • \n
  • 2
  • \n", render("= list_of([1, 2]) do |i|\n = i")) - assert_equal("
  • [1]
  • \n", render("= list_of([[1]]) do |i|\n = i.inspect")) - assert_equal("
  • \n

    Fee

    \n

    A word!

    \n
  • \n
  • \n

    Fi

    \n

    A word!

    \n
  • \n
  • \n

    Fo

    \n

    A word!

    \n
  • \n
  • \n

    Fum

    \n

    A word!

    \n
  • \n", - render("= list_of(['Fee', 'Fi', 'Fo', 'Fum']) do |title|\n %h1= title\n %p A word!")) - end - - def test_buffer_access - assert(render("= buffer") =~ /#/) - assert_equal(render("= (buffer == _hamlout)"), "true\n") - end - - def test_tabs - assert_equal("foo\n bar\nbaz\n", render("foo\n- tab_up\nbar\n- tab_down\nbaz")) - assert_equal("

    tabbed

    \n", render("- buffer.tabulation=5\n%p tabbed")) - end - - def test_helpers_dont_leak - # Haml helpers shouldn't be accessible from ERB - render("foo") - proper_behavior = false - - begin - ActionView::Base.new.render(:inline => "<%= flatten('Foo\\nBar') %>") - rescue NoMethodError, Haml::Util.av_template_class(:Error) - proper_behavior = true - end - assert(proper_behavior) - - begin - ActionView::Base.new.render(:inline => "<%= concat('foo') %>") - rescue ArgumentError, NameError - proper_behavior = true - end - assert(proper_behavior) - end - - def test_action_view_included - assert(Haml::Helpers.action_view?) - end - - def test_form_tag - # This is usually provided by ActionController::Base. - def @base.protect_against_forgery?; false; end - result = render("- form_tag 'foo' do\n %p bar\n %strong baz", :action_view) - should_be = "
    \n

    bar

    \n baz\n
    \n" - assert_equal(should_be, result) - end - - def test_text_area - assert_equal(%(\n), - render('= text_area_tag "body", "Foo\nBar\n Baz\n Boom"', :action_view)) - - assert_equal(%(\n), - render('= text_area :post, :body', :action_view)) - - assert_equal(%(
    Foo bar
       baz
    \n), - render('= content_tag "pre", "Foo bar\n baz"', :action_view)) - end - - def test_capture_haml - assert_equal("\"

    13

    \\n\"\n", render("- foo = capture_haml(13) do |a|\n %p= a\n= foo.dump")) - end - - def test_content_tag_block - assert_equal(<

    bar

    -bar -
    -HTML -- content_tag :div do - %p bar - %strong bar -HAML - end - - def test_haml_tag_attribute_html_escaping - assert_equal("

    baz

    \n", render("%p{:id => 'foo&bar'} baz", :escape_html => true)) - end - - def test_haml_tag_autoclosed_tags_are_closed - assert_equal("
    \n", render("- haml_tag :br, :class => 'foo'")) - end - - def test_haml_tag_non_autoclosed_tags_arent_closed - assert_equal("

    \n", render("- haml_tag :p")) - end - - def test_haml_tag_renders_text_on_a_single_line - assert_equal("

    #{'a' * 100}

    \n", render("- haml_tag :p, 'a' * 100")) - end - - def test_haml_tag_raises_error_for_multiple_content - assert_raise(Haml::Error) { render("- haml_tag :p, 'foo' do\n bar") } - end - - def test_haml_tag_flags - assert_equal("

    \n", render("- haml_tag :p, :/")) - assert_equal("

    kumquat

    \n", render("- haml_tag :p, :< do\n kumquat")) - - assert_raise(Haml::Error) { render("- haml_tag :p, 'foo', :/") } - assert_raise(Haml::Error) { render("- haml_tag :p, :/ do\n foo") } - end - - def test_haml_tag_error_return - assert_raise(Haml::Error) { render("= haml_tag :p") } - end - - def test_is_haml - assert(!ActionView::Base.new.is_haml?) - assert_equal("true\n", render("= is_haml?")) - assert_equal("true\n", render("= is_haml?", :action_view)) - assert_equal("false", @base.render(:inline => '<%= is_haml? %>')) - assert_equal("false\n", render("= render :inline => '<%= is_haml? %>'", :action_view)) - end - - def test_page_class - controller = Struct.new(:controller_name, :action_name).new('troller', 'tion') - scope = Struct.new(:controller).new(controller) - result = render("%div{:class => page_class} MyDiv", :scope_object => scope) - expected = "
    MyDiv
    \n" - assert_equal expected, result - end - - def test_indented_capture - assert_equal(" \n Foo\n ", @base.render(:inline => " <% res = capture do %>\n Foo\n <% end %><%= res %>")) - end - - def test_capture_deals_properly_with_collections - Haml::Helpers.module_eval do - def trc(collection, &block) - collection.each do |record| - haml_concat capture_haml(record, &block) - end - end - end - - assert_equal("1\n\n2\n\n3\n\n", render("- trc([1, 2, 3]) do |i|\n = i.inspect")) - end - - def test_find_and_preserve_with_block - assert_equal("
    Foo
    Bar
    \nFoo\nBar\n", - render("= find_and_preserve do\n %pre\n Foo\n Bar\n Foo\n Bar")) - end - - def test_find_and_preserve_with_block_and_tags - assert_equal("
    Foo\nBar
    \nFoo\nBar\n", - render("= find_and_preserve([]) do\n %pre\n Foo\n Bar\n Foo\n Bar")) - end - - def test_preserve_with_block - assert_equal("
    Foo
    Bar
    Foo Bar\n", - render("= preserve do\n %pre\n Foo\n Bar\n Foo\n Bar")) - end - - def test_init_haml_helpers - context = Object.new - class << context - include Haml::Helpers - end - context.init_haml_helpers - - result = context.capture_haml do - context.haml_tag :p, :attr => "val" do - context.haml_concat "Blah" - end - end - - assert_equal("

    \n Blah\n

    \n", result) - end - - def test_non_haml - assert_equal("false\n", render("= non_haml { is_haml? }")) - end - - def test_content_tag_nested - assert_equal "
    something
    ", render("= nested_tag", :action_view).strip - end - - def test_error_return - assert_raise(Haml::Error, < e - assert_equal 2, e.backtrace[0].scan(/:(\d+)/).first.first.to_i - end - - def test_error_return_line_in_helper - render("- something_that_uses_haml_concat") - assert false, "Expected Haml::Error" - rescue Haml::Error => e - assert_equal 13, e.backtrace[0].scan(/:(\d+)/).first.first.to_i - end - - class ActsLikeTag - # We want to be able to have people include monkeypatched ActionView helpers - # without redefining is_haml?. - # This is accomplished via Object#is_haml?, and this is a test for it. - include ActionView::Helpers::TagHelper - def to_s - content_tag :p, 'some tag content' - end - end - - def test_random_class_includes_tag_helper - assert_equal "

    some tag content

    ", ActsLikeTag.new.to_s - end - - def test_capture_with_nuke_outer - assert_equal "
    \n*
    hi there!
    \n", render(< hi there! -HAML - - assert_equal "
    \n*
    hi there!
    \n", render(< hi there! -HAML - end -end - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/html2haml_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/html2haml_test.rb deleted file mode 100644 index 6d4afb71..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/html2haml_test.rb +++ /dev/null @@ -1,152 +0,0 @@ -#!/usr/bin/env ruby -require File.dirname(__FILE__) + '/../test_helper' -require 'haml/html' - -class Html2HamlTest < Test::Unit::TestCase - - def test_empty_render_should_remain_empty - assert_equal '', render('') - end - - def test_doctype - assert_equal '!!!', render("") - assert_equal '!!! 1.1', render('') - assert_equal '!!! Strict', render('') - assert_equal '!!! Frameset', render('') - assert_equal '!!! Mobile 1.2', render('') - assert_equal '!!! Basic 1.1', render('') - assert_equal '!!!', render('') - assert_equal '!!! Strict', render('') - assert_equal '!!! Frameset', render('') - assert_equal '!!!', render('') - end - - def test_id_and_class_should_be_removed_from_hash - assert_equal '%span#foo.bar', render(' ') - end - - def test_no_tag_name_for_div_if_class_or_id_is_present - assert_equal '#foo', render('
    ') - assert_equal '.foo', render('
    ') - end - - def test_multiple_class_names - assert_equal '.foo.bar.baz', render('
    ') - end - - def test_should_have_pretty_attributes - assert_equal_attributes('%input{ :type => "text", :name => "login" }', - render('')) - assert_equal_attributes('%meta{ "http-equiv" => "Content-Type", :content => "text/html" }', - render('')) - end - - def test_sqml_comment - assert_equal "/\n IE sucks", render('') - end - - def test_interpolation - assert_equal('Foo \#{bar} baz', render('Foo #{bar} baz')) - end - - def test_interpolation_in_attrs - assert_equal('%p{ :foo => "\#{bar} baz" }', render('

    ')) - end - - def test_rhtml - assert_equal '- foo = bar', render_rhtml('<% foo = bar %>') - assert_equal '- foo = bar', render_rhtml('<% foo = bar -%>') - assert_equal '= h @item.title', render_rhtml('<%=h @item.title %>') - assert_equal '= h @item.title', render_rhtml('<%=h @item.title -%>') - end - - def test_rhtml_with_html_special_chars - assert_equal '= 3 < 5 ? "OK" : "Your computer is b0rken"', - render_rhtml(%Q{<%= 3 < 5 ? "OK" : "Your computer is b0rken" %>}) - end - - def test_rhtml_in_class_attribute - assert_equal "%div{ :class => dyna_class }\n I have a dynamic attribute", - render_rhtml(%Q{
    I have a dynamic attribute
    }) - end - - def test_rhtml_in_id_attribute - assert_equal "%div{ :id => dyna_id }\n I have a dynamic attribute", - render_rhtml(%Q{
    I have a dynamic attribute
    }) - end - - def test_rhtml_in_attribute_results_in_string_interpolation - assert_equal %(%div{ :id => "item_\#{i}" }\n Ruby string interpolation FTW), - render_rhtml(%Q{
    Ruby string interpolation FTW
    }) - end - - def test_rhtml_in_attribute_with_trailing_content - assert_equal %(%div{ :class => "\#{12}!" }\n Bang!), - render_rhtml(%Q{
    Bang!
    }) - end - - def test_rhtml_in_html_escaped_attribute - assert_equal %(%div{ :class => "foo" }\n Bang!), - render_rhtml(%Q{
    ">Bang!
    }) - end - - def test_rhtml_in_attribute_to_multiple_interpolations - assert_equal %(%div{ :class => "\#{12} + \#{13}" }\n Math is super), - render_rhtml(%Q{
    Math is super
    }) - end - - def test_whitespace_eating_erb_tags - assert_equal %(- form_for), - render_rhtml(%Q{<%- form_for -%>}) - end - - def test_cdata - assert_equal(< -
    flop
    - -HAML -

    -

    flop
    - -]]>

    -HTML - end - - def test_interpolation_in_rhtml - assert_equal('= "Foo #{bar} baz"', render_rhtml('<%= "Foo #{bar} baz" %>')) - end - - def test_interpolation_in_rhtml_attrs - assert_equal('%p{ :foo => "#{bar} baz" }', - render_rhtml('

    ">

    ')) - end - - # Regression Tests - - def test_xhtml_strict_doctype - assert_equal('!!! Strict', render(< -HTML - end - - protected - - def render(text, options = {}) - Haml::HTML.new(text, options).render.rstrip - end - - def render_rhtml(text) - render(text, :rhtml => true) - end - - def assert_equal_attributes(expected, result) - expected_attr, result_attr = [expected, result].map { |s| s.gsub!(/\{ (.+) \}/, ''); $1.split(', ').sort } - assert_equal expected_attr, result_attr - assert_equal expected, result - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/markaby/standard.mab b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/markaby/standard.mab deleted file mode 100644 index aff86416..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/markaby/standard.mab +++ /dev/null @@ -1,52 +0,0 @@ -self << '' -html(:xmlns=>'http://www.w3.org/1999/xhtml', 'xml:lang'=>'en-US') do - head do - title "Hampton Catlin Is Totally Awesome" - meta("http-equiv" => "Content-Type", :content => "text/html; charset=utf-8") - end - body do - # You're In my house now! - div :class => "header" do - self << %|Yes, ladies and gentileman. He is just that egotistical. - Fantastic! This should be multi-line output - The question is if this would translate! Ahah!| - self << 1 + 9 + 8 + 2 #numbers should work and this should be ignored - end - div(:id => "body") { self << "Quotes should be loved! Just like people!"} - 120.times do |number| - number - end - self << "Wow.|" - p do - self << "Holy cow " + - "multiline " + - "tags! " + - "A pipe (|) even!" - self << [1, 2, 3].collect { |n| "PipesIgnored|" } - self << [1, 2, 3].collect { |n| - n.to_s - }.join("|") - end - div(:class => "silent") do - foo = String.new - foo << "this" - foo << " shouldn't" - foo << " evaluate" - self << foo + " but now it should!" - # Woah crap a comment! - end - # That was a line that shouldn't close everything. - ul(:class => "really cool") do - ('a'..'f').each do |a| - li a - end - end - div((@should_eval = "with this text"), :id => "combo", :class => "of_divs_with_underscore") - [ 104, 101, 108, 108, 111 ].map do |byte| - byte.chr - end - div(:class => "footer") do - strong("This is a really long ruby quote. It should be loved and wrapped because its more than 50 characters. This value may change in the future and this test may look stupid. \nSo, I'm just making it *really* long. God, I hope this works", :class => "shout") - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/mocks/article.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/mocks/article.rb deleted file mode 100644 index 805f8cad..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/mocks/article.rb +++ /dev/null @@ -1,6 +0,0 @@ -class Article - attr_accessor :id, :title, :body - def initialize - @id, @title, @body = 1, 'Hello', 'World' - end -end \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/content_for_layout.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/content_for_layout.xhtml deleted file mode 100644 index 63bbd229..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/content_for_layout.xhtml +++ /dev/null @@ -1,12 +0,0 @@ - - - - -
    - Lorem ipsum dolor sit amet -
    -
    - Lorem ipsum dolor sit amet -
    - - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/eval_suppressed.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/eval_suppressed.xhtml deleted file mode 100644 index 0ad97d9b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/eval_suppressed.xhtml +++ /dev/null @@ -1,9 +0,0 @@ -

    -

    -

    Me!

    -
    -

    All

    -
    -

    This

    - Should render -
    diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/filters.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/filters.xhtml deleted file mode 100644 index 912224bd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/filters.xhtml +++ /dev/null @@ -1,62 +0,0 @@ - -TESTING HAHAHAHA! -

    - -

    -This - Is - Plain - Text - %strong right? - #{not interpolated} - \3 - \#{also not} - \\ -

    -

    This pre is pretty deeply
          nested.
       Does interpolation work?
    -    This one is, too.
    Nested, that is.
    
    -

    -
      - -
    • a
    • - -
    • b
    • - -
    • c
    • - -
    • d
    • - -
    • e
    • - -
    • f
    • - -
    • g
    • - -
    • h
    • - -
    • i
    • - -
    • j
    • - - - -
    -
    178
    -Text! -Hello, World! -How are you doing today? -<div class="foo"> - <p>I think &mdash; or do I?</p> -</div> diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/helpers.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/helpers.xhtml deleted file mode 100644 index ad8ad6d3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/helpers.xhtml +++ /dev/null @@ -1,93 +0,0 @@ -&&&&&&&&&&& -
    -

    Title

    -

    - Woah this is really crazy - I mean wow, - man. -

    -
    -
    -

    Title

    -

    - Woah this is really crazy - I mean wow, - man. -

    -
    -
    -

    Title

    -

    - Woah this is really crazy - I mean wow, - man. -

    -
    -

    foo

    -

    reeeeeeeeeeeeeeeeeeeeeeeeeeeeeeally loooooooooooooooooong

    -
    -
    -
    -

    Big!

    -

    Small

    - -
    -
    -

    foo

    -

    bar

    -
    -
    - (parentheses!) -
    -*Not really -click -here. -

    baz

    -

    boom

    -foo -

    -

    -

    -
    - -
    -

    - @foo = - value one -

    - Toplevel? false -

    - @foo = - value three -

    - -
    - Title: - - Body: - -
    -
    -
  • google
  • -

    - foo -

    - bar -
    - boom - baz - boom, again -

    - - - - - -
    - strong! - data - - more_data -
    -
    -
    diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/helpful.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/helpful.xhtml deleted file mode 100644 index 042291d3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/helpful.xhtml +++ /dev/null @@ -1,10 +0,0 @@ -
    -

    Hello

    -
    World
    -
    -
    id
    -
    class
    -
    id class
    -
    boo
    -
    moo
    -
    foo
    \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/just_stuff.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/just_stuff.xhtml deleted file mode 100644 index cbd641fe..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/just_stuff.xhtml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - -Boo! -Embedded? false! -Embedded? true! -Embedded? true! -Embedded? twice! true! -Embedded? one af"t"er another! -

    Embedded? false!

    -

    Embedded? true!

    -

    Embedded? true!

    -

    Embedded? twice! true!

    -

    Embedded? one af"t"er another!

    -stuff followed by whitespace -block with whitespace -

    - Escape - - character - %p foo - yee\ha -

    - - -

    class attribute should appear!

    -

    this attribute shouldn't appear

    - - - -testtest -
    - - -
    - - -
    - Nested content -
    -

    Blah

    -

    Blah

    -

    Blump

    -Woah inner quotes -

    -

    - - hello -

    - -
    - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/list.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/list.xhtml deleted file mode 100644 index 05d22018..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/list.xhtml +++ /dev/null @@ -1,12 +0,0 @@ -!Not a Doctype! -
      -
    • a
    • -
    • b
    • -
    • c
    • -
    • d
    • -
    • e
    • -
    • f
    • -
    • g
    • -
    • h
    • -
    • i
    • -
    diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/nuke_inner_whitespace.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/nuke_inner_whitespace.xhtml deleted file mode 100644 index 71d55d87..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/nuke_inner_whitespace.xhtml +++ /dev/null @@ -1,40 +0,0 @@ -

    - Foo -

    -

    - Foo -

    -

    - Foo - Bar -

    -

    - Foo - Bar -

    -

    - Foo - Bar -

    -

    - Foo - Bar -

    -

    -

    - Foo - Bar -
    -

    -

    -

    - Foo - Bar -
    -

    -

    - foo - - bar - -

    diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/nuke_outer_whitespace.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/nuke_outer_whitespace.xhtml deleted file mode 100644 index a31cde3a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/nuke_outer_whitespace.xhtml +++ /dev/null @@ -1,148 +0,0 @@ -

    -

    - Foo -

    -

    -

    -

    - Foo -

    -

    -

    -

    Foo

    -

    -

    -

    Foo

    -

    -

    -

    - Foo -

    -

    -

    -

    - Foo -

    -

    -

    -

    Foo

    -

    -

    -

    Foo

    -

    -

    -

    - Foo - Bar -

    -

    -

    -

    - Foo - Bar -

    -

    -

    -

    - Foo - Bar -

    -

    -

    -

    - Foo - Bar -

    -

    -

    -

    - foo - Foo - bar -

    -

    -

    -

    - foo - Foo - bar -

    -

    -

    -

    - fooFoobar -

    -

    -

    -

    - fooFoobar -

    -

    -

    -

    - foo - Foo - bar -

    -

    -

    -

    - foo - Foo - bar -

    -

    -

    -

    - fooFoobar -

    -

    -

    -

    - fooFoobar -

    -

    -

    -

    - foo - Foo - Bar - bar -

    -

    -

    -

    - foo - Foo - Bar - bar -

    -

    -

    -

    - foo - Foo - Bar - bar -

    -

    -

    -

    - foo - Foo - Bar - bar -

    -

    -

    -

    -

    -

    -

    -

    -

    -

    -

    -

    -

    -

    diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/original_engine.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/original_engine.xhtml deleted file mode 100644 index dd0e9f98..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/original_engine.xhtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - Stop. haml time -
    -

    This is a title!

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit

    -

    Cigarettes!

    -

    Man alive!

    -
      -
    • Slippers
    • -
    • Shoes
    • -
    • Bathrobe
    • -
    • Coffee
    • -
    -
    This is some text that's in a pre block!
    -      Let's see what happens when it's rendered! What about now, since we're on a new line?
    -
    - - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/partial_layout.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/partial_layout.xhtml deleted file mode 100644 index 53b96e3b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/partial_layout.xhtml +++ /dev/null @@ -1,5 +0,0 @@ -

    Partial layout used with for block:

    -
    -

    This is inside a partial layout

    -

    Some content within a layout

    -
    \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/partials.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/partials.xhtml deleted file mode 100644 index 12366ffa..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/partials.xhtml +++ /dev/null @@ -1,21 +0,0 @@ -

    - @foo = - value one -

    -

    - @foo = - value two -

    -

    - @foo = - value two -

    -Toplevel? false -

    - @foo = - value three -

    -

    - @foo = - value three -

    diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/render_layout.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/render_layout.xhtml deleted file mode 100644 index 9712bb5c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/render_layout.xhtml +++ /dev/null @@ -1,3 +0,0 @@ -Before -During -After diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/silent_script.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/silent_script.xhtml deleted file mode 100644 index 76e90e0b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/silent_script.xhtml +++ /dev/null @@ -1,74 +0,0 @@ -
    -

    I can count!

    - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 -

    I know my ABCs!

    -
      -
    • a
    • -
    • b
    • -
    • c
    • -
    • d
    • -
    • e
    • -
    • f
    • -
    • g
    • -
    • h
    • -
    • i
    • -
    • j
    • -
    • k
    • -
    • l
    • -
    • m
    • -
    • n
    • -
    • o
    • -
    • p
    • -
    • q
    • -
    • r
    • -
    • s
    • -
    • t
    • -
    • u
    • -
    • v
    • -
    • w
    • -
    • x
    • -
    • y
    • -
    • z
    • -
    -

    I can catch errors!

    - Oh no! "undefined method `silly' for String:Class" happened! -

    - "false" is: - false -

    - Even! - Odd! - Even! - Odd! - Even! -
    -
    - foobar -
    -0 -1 -2 -3 -4 -
    -

    boom

    -
    diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/standard.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/standard.xhtml deleted file mode 100644 index 849bdc6e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/standard.xhtml +++ /dev/null @@ -1,162 +0,0 @@ - - - - Hampton Catlin Is Totally Awesome - - - - -
    - Yes, ladies and gentileman. He is just that egotistical. - Fantastic! This should be multi-line output - The question is if this would translate! Ahah! - 20 -
    -
    Quotes should be loved! Just like people!
    - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - 36 - 37 - 38 - 39 - 40 - 41 - 42 - 43 - 44 - 45 - 46 - 47 - 48 - 49 - 50 - 51 - 52 - 53 - 54 - 55 - 56 - 57 - 58 - 59 - 60 - 61 - 62 - 63 - 64 - 65 - 66 - 67 - 68 - 69 - 70 - 71 - 72 - 73 - 74 - 75 - 76 - 77 - 78 - 79 - 80 - 81 - 82 - 83 - 84 - 85 - 86 - 87 - 88 - 89 - 90 - 91 - 92 - 93 - 94 - 95 - 96 - 97 - 98 - 99 - 100 - 101 - 102 - 103 - 104 - 105 - 106 - 107 - 108 - 109 - 110 - 111 - 112 - 113 - 114 - 115 - 116 - 117 - 118 - 119 - Wow.| -

    - Holy cow multiline tags! A pipe (|) even! - PipesIgnored|PipesIgnored|PipesIgnored| - 1|2|3 -

    -
    - this shouldn't evaluate but now it should! -
    -
      -
    • a
    • -
    • b
    • -
    • c
    • -
    • d
    • -
    • e
    • -
    • f
    • -
    -
    with this text
    - foo - - - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/tag_parsing.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/tag_parsing.xhtml deleted file mode 100644 index e8178aa1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/tag_parsing.xhtml +++ /dev/null @@ -1,23 +0,0 @@ -
    - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 -
    -
    -

    -
    a
    -
    b
    -
    c
    -
    d
    -
    e
    -
    f
    -
    g
    -
    diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/very_basic.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/very_basic.xhtml deleted file mode 100644 index 6a4cd257..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/very_basic.xhtml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/whitespace_handling.xhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/whitespace_handling.xhtml deleted file mode 100644 index 11d04873..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/results/whitespace_handling.xhtml +++ /dev/null @@ -1,89 +0,0 @@ -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    -
    - -
    - -
    -
    -
    - Foo bar -
    foo bar
    -
    foo
    bar
    -

    foo
    bar

    -

    - foo - bar -

    -
    -
    - 13 - - -
    -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    -
    - -
    - -
    -
    -
    - Foo bar -
    foo bar
    -
    foo
    bar
    -

    foo
    bar

    -

    - foo - bar -

    -
                                                     ___
                                                  ,o88888
                                               ,o8888888'
                         ,:o:o:oooo.        ,8O88Pd8888"
                     ,.::.::o:ooooOoOoO. ,oO8O8Pd888'"
                   ,.:.::o:ooOoOoOO8O8OOo.8OOPd8O8O"
                  , ..:.::o:ooOoOOOO8OOOOo.FdO8O8"
                 , ..:.::o:ooOoOO8O888O8O,COCOO"
                , . ..:.::o:ooOoOOOO8OOOOCOCO"
                 . ..:.::o:ooOoOoOO8O8OCCCC"o
                    . ..:.::o:ooooOoCoCCC"o:o
                    . ..:.::o:o:,cooooCo"oo:o:
                 `   . . ..:.:cocoooo"'o:o:::'
                 .`   . ..::ccccoc"'o:o:o:::'
                :.:.    ,c:cccc"':.:.:.:.:.'
              ..:.:"'`::::c:"'..:.:.:.:.:.'  http://www.chris.com/ASCII/
            ...:.'.:.::::"'    . . . . .'
           .. . ....:."' `   .  . . ''
         . . . ...."'
         .. . ."'     -hrr-
        .
    
    
                                                  It's a planet!
    %strong This shouldn't be bold!
    - This should! - -
    -
    - 13 -
    -
           __     ______        __               ______
    .----.|  |--.|__    |.----.|  |--..--------.|  __  |
    |  __||     ||__    ||  __||    < |        ||  __  |
    |____||__|__||______||____||__|__||__|__|__||______|
    -
    foo
    -bar
    diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/rhtml/_av_partial_1.rhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/rhtml/_av_partial_1.rhtml deleted file mode 100644 index 7507a0be..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/rhtml/_av_partial_1.rhtml +++ /dev/null @@ -1,12 +0,0 @@ -

    This is a pretty complicated partial

    -
    -

    It has several nested partials,

    -
      - <% 5.times do %> -
    • - Partial: - <% @nesting = 5 %> - <%= render :partial => 'haml/rhtml/av_partial_2' %> - <% end %> -
    -
    diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/rhtml/_av_partial_2.rhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/rhtml/_av_partial_2.rhtml deleted file mode 100644 index e884a348..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/rhtml/_av_partial_2.rhtml +++ /dev/null @@ -1,8 +0,0 @@ -<% @nesting -= 1 %> -
    -

    This is a crazy deep-nested partial.

    -

    Nesting level <%= @nesting %>

    - <% if @nesting > 0 %> - <%= render :partial => 'haml/rhtml/av_partial_2' %> - <% end %> -
    diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/rhtml/action_view.rhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/rhtml/action_view.rhtml deleted file mode 100644 index bcb0d416..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/rhtml/action_view.rhtml +++ /dev/null @@ -1,62 +0,0 @@ - - - - Hampton Catlin Is Totally Awesome - - - -

    - This is very much like the standard template, - except that it has some ActionView-specific stuff. - It's only used for benchmarking. -

    -
    - <%= render :partial => 'haml/rhtml/av_partial_1' %> -
    - -
    - Yes, ladies and gentileman. He is just that egotistical. - Fantastic! This should be multi-line output - The question is if this would translate! Ahah! - <%= 1 + 9 + 8 + 2 %> - <%# numbers should work and this should be ignored %> -
    - <% 120.times do |number| -%> - <%= number %> - <% end -%> -
    <%= " Quotes should be loved! Just like people!" %>
    - Wow. -

    - <%= "Holy cow " + - "multiline " + - "tags! " + - "A pipe (|) even!" %> - <%= [1, 2, 3].collect { |n| "PipesIgnored|" } %> - <%= [1, 2, 3].collect { |n| - n.to_s - }.join("|") %> -

    -
    - <% foo = String.new - foo << "this" - foo << " shouldn't" - foo << " evaluate" %> - <%= foo + "but now it should!" %> - <%# Woah crap a comment! %> -
    -
      - <% ('a'..'f').each do |a|%> -
    • <%= a %> - <% end %> -
      <%= @should_eval = "with this text" %>
      - <%= [ 104, 101, 108, 108, 111 ].map do |byte| - byte.chr - end %> - - - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/rhtml/standard.rhtml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/rhtml/standard.rhtml deleted file mode 100644 index 8f5d0972..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/rhtml/standard.rhtml +++ /dev/null @@ -1,54 +0,0 @@ - - - - Hampton Catlin Is Totally Awesome - - - - -
      - Yes, ladies and gentileman. He is just that egotistical. - Fantastic! This should be multi-line output - The question is if this would translate! Ahah! - <%= 1 + 9 + 8 + 2 %> - <%# numbers should work and this should be ignored %> -
      - <% 120.times do |number| -%> - <%= number %> - <% end -%> -
      <%= " Quotes should be loved! Just like people!" %>
      - Wow. -

      - <%= "Holy cow " + - "multiline " + - "tags! " + - "A pipe (|) even!" %> - <%= [1, 2, 3].collect { |n| "PipesIgnored|" }.join %> - <%= [1, 2, 3].collect { |n| - n.to_s - }.join("|") %> -

      -
      - <% foo = String.new - foo << "this" - foo << " shouldn't" - foo << " evaluate" %> - <%= foo + "but now it should!" %> - <%# Woah crap a comment! %> -
      -
        - <% ('a'..'f').each do |a|%> -
      • <%= a %>
      • - <% end %> -
        <%= @should_eval = "with this text" %>
        - <%= "foo".each_line do |line| - nil - end %> - - - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/spec/README.md b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/spec/README.md deleted file mode 100644 index 95740c51..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/spec/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# Haml Spec # - -Haml Spec provides a basic suite of tests for Haml interpreters. - -It is intented for developers who are creating or maintaining an implementation -of the [Haml](http://haml-lang.com) markup language. - -At the moment, there are test runners for the [original Haml](http://github.com/nex3/haml) -in Ruby, and for [Lua Haml](http://github.com/norman/lua-haml). Support for -other versions of Haml will be added if their developers/maintainers -are interested in using it. - -## The Tests ## - -The tests are kept in JSON format for portability across languages. Each test -is a JSON object with expected input, output, local variables and configuration -parameters (see below). The test suite only provides tests for features which -are portable, therefore no tests for script are provided, nor for external -filters such as :markdown or :textile. - -The one major exception to this are the tests for interpolation, which you may -need to modify with a regular expression to run under PHP or Perl, which -require a symbol before variable names. These tests are included despite being -less than 100% portable because interpolation is an important part of Haml and -can be tricky to implement. - -## Running the Tests ## - -### Ruby ### - -In order to make it as easy as possible for non-Ruby programmers to run the -Ruby Haml tests, the Ruby test runner uses test/unit, rather than something -fancier like Rspec. To run them you probably only need to install `haml`, and -possibly `ruby` if your platform doesn't come with it by default. If you're -using Ruby 1.8.x, you'll also need to install `json`: - - sudo gem install haml - # for Ruby 1.8.x; check using "ruby --version" if unsure - sudo gem install json - -Then, running the Ruby test suite is easy: - - ruby ruby_haml_test.rb - -### Lua ### - -The Lua test depends on [Telescope](http://telescope.luaforge.net/), -[jason4lua](http://json.luaforge.net/), and -[Lua Haml](http://github.com/norman/lua-haml). Install and -run `tsc lua_haml_spec.lua`. - -## Contributing ## - -### Getting it ### - -You can access the [Git repository](http://github.com/norman/haml-spec) at: - - git://github.com/norman/haml-spec.git - -Patches are *very* welcome, as are test runners for your Haml implementation. - -As long as any test you add run against Ruby Haml and are not redundant, I'll -be very happy to add them. - -### Test JSON format ### - - "test name" : { - "haml" : "haml input", - "html" : "expected html output", - "result" : "expected test result", - "locals" : "local vars", - "config" : "config params" - } - -* test name: This should be a *very* brief description of what's being tested. It can - be used by the test runners to name test methods, or to exclude certain tests from being - run. -* haml: The Haml code to be evaluated. Always required. -* html: The HTML output that should be generated. Required unless "result" is "error". -* result: Can be "pass" or "error". If it's absent, then "pass" is assumed. If it's "error", - then the goal of the test is to make sure that malformed Haml code generates an error. -* locals: An object containing local variables needed for the test. -* config: An object containing configuration parameters used to run the test. - The configuration parameters should be usable directly by Ruby's Haml with no - modification. If your implementation uses config parameters with different - names, you may need to process them to make them match your implementation. - If your implementation has options that do not exist in Ruby's Haml, then you - should add tests for this in your implementation's test rather than here. - -## License ## - - This project is released under the [WTFPL](http://sam.zoy.org/wtfpl/) in order - to be as usable as possible in any project, commercial or free. - -## Author ## - - [Norman Clarke](mailto:norman@njclarke.com) diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/spec/lua_haml_spec.lua b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/spec/lua_haml_spec.lua deleted file mode 100644 index 0998a1fe..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/spec/lua_haml_spec.lua +++ /dev/null @@ -1,30 +0,0 @@ -require 'luarocks.require' -require 'json' -require 'telescope' -require 'haml' - -local function get_tests(filename) - local self = debug.getinfo(1).short_src - if self:match("/") then return "./" .. self:gsub("[^/]*%.lua$", "/" .. filename) - elseif self:match("\\") then return self:gsub("[^\\]*%.lua$", "\\" .. filename) - else return filename - end -end - -local fh = assert(io.open(get_tests("tests-new.json"))) -local input = fh:read '*a' -fh:close() - -local contexts = json.decode(input) - -describe("LuaHaml", function() - for context, expectations in pairs(contexts) do - describe("When handling " .. context, function() - for name, exp in pairs(expectations) do - it(string.format("should correctly render %s", name), function() - assert_equal(haml.render(exp.haml, exp.config or {}, exp.locals or {}), exp.html) - end) - end - end) - end -end) diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/spec/ruby_haml_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/spec/ruby_haml_test.rb deleted file mode 100644 index 444ba2de..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/spec/ruby_haml_test.rb +++ /dev/null @@ -1,19 +0,0 @@ -require "test/unit" -require "json" -require "haml" - -class HamlTest < Test::Unit::TestCase - contexts = JSON.parse(File.read(File.dirname(__FILE__) + "/tests.json")) - contexts.each do |context| - context[1].each do |name, test| - class_eval(<<-EOTEST) - def test_#{name.gsub(/\s+|[^a-zA-Z0-9_]/, "_")} - locals = Hash[*(#{test}["locals"] || {}).collect {|k, v| [k.to_sym, v] }.flatten] - options = Hash[*(#{test}["config"] || {}).collect {|k, v| [k.to_sym, v.to_sym] }.flatten] - engine = Haml::Engine.new(#{test}["haml"], options) - assert_equal(engine.render(Object.new, locals).chomp, #{test}["html"]) - end - EOTEST - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/spec/tests.json b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/spec/tests.json deleted file mode 100644 index 4337ee1c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/spec/tests.json +++ /dev/null @@ -1,488 +0,0 @@ -{ - "headers" : { - - "an XHTML XML prolog" : { - "haml" : "!!! XML", - "html" : "" - }, - - "an XHTML default (transitional) doctype" : { - "haml" : "!!!", - "html" : "" - }, - - "an XHTML 1.1 doctype" : { - "haml" : "!!! 1.1", - "html" : "" - }, - - "an XHTML 1.2 mobile doctype" : { - "haml" : "!!! mobile", - "html" : "" - }, - - "an XHTML 1.1 basic doctype" : { - "haml" : "!!! basic", - "html" : "" - }, - - "an XHTML 1.0 frameset doctype" : { - "haml" : "!!! frameset", - "html" : "" - }, - - "an HTML 5 XML prolog (silent)" : { - "haml" : "!!! XML", - "html" : "", - "config" : { - "format" : "html5" - } - }, - - "an HTML 5 doctype" : { - "haml" : "!!!", - "html" : "", - "config" : { - "format" : "html5" - } - }, - - "an HTML 4 XML prolog (silent)" : { - "haml" : "!!! XML", - "html" : "", - "config" : { - "format" : "html4" - } - }, - - "an HTML 4 default (transitional) doctype" : { - "haml" : "!!!", - "html" : "", - "config" : { - "format" : "html4" - } - }, - - "an HTML 4 frameset doctype" : { - "haml" : "!!! frameset", - "html" : "", - "config" : { - "format" : "html4" - } - }, - - "an HTML 4 strict doctype" : { - "haml" : "!!! strict", - "html" : "", - "config" : { - "format" : "html4" - } - } - - }, - - "basic Haml tags and CSS": { - - "a simple Haml tag" : { - "haml" : "%p", - "html" : "

        " - }, - - "a self-closing tag (XHTML)" : { - "haml" : "%meta", - "html" : "" - }, - - "a self-closing tag (HTML4)" : { - "haml" : "%meta", - "html" : "", - "config" : { - "format" : "html4" - } - }, - - "a self-closing tag (HTML5)" : { - "haml" : "%meta", - "html" : "", - "config" : { - "format" : "html5" - } - }, - - "a tag with a CSS class" : { - "haml" : "%p.class1", - "html" : "

        " - }, - - "a tag with multiple CSS classes" : { - "haml" : "%p.class1.class2", - "html" : "

        " - }, - - "a tag with a CSS id" : { - "haml" : "%p#id1", - "html" : "

        " - }, - - "a tag with multiple CSS id's" : { - "haml" : "%p#id1#id2", - "html" : "

        " - }, - - "a tag with a class followed by an id" : { - "haml" : "%p.class1#id1", - "html" : "

        " - }, - - "a tag with an id followed by a class" : { - "haml" : "%p#id1.class1", - "html" : "

        " - }, - - "an implicit div with a CSS id" : { - "haml" : "#id1", - "html" : "
        " - }, - - "an implicit div with a CSS class" : { - "haml" : ".class1", - "html" : "
        " - } - - }, - - "tags with unusual HTML characters" : { - - "a tag with colons" : { - "haml" : "%ns:tag", - "html" : "" - }, - - "a tag with underscores" : { - "haml" : "%snake_case", - "html" : "" - }, - - "a tag with dashes" : { - "haml" : "%dashed-tag", - "html" : "" - }, - - "a tag with camelCase" : { - "haml" : "%camelCase", - "html" : "" - }, - - "a tag with PascalCase" : { - "haml" : "%PascalCase", - "html" : "" - } - }, - - "tags with unusual CSS identifiers" : { - - "an all-numeric class" : { - "haml" : ".123", - "html" : "
        " - }, - - "a class with underscores" : { - "haml" : ".__", - "html" : "
        " - }, - - "a class with dashes" : { - "haml" : ".--", - "html" : "
        " - } - - }, - - "tags with inline content" : { - - "a simple tag" : { - "haml" : "%p hello", - "html" : "

        hello

        " - }, - - "a tag with CSS" : { - "haml" : "%p.class1 hello", - "html" : "

        hello

        " - } - - }, - - "tags with nested content" : { - - "a simple tag" : { - "haml" : "%p\n hello", - "html" : "

        \n hello\n

        " - }, - - "a tag with CSS" : { - "haml" : "%p.class1\n hello", - "html" : "

        \n hello\n

        " - } - - }, - - "tags with HTML-style attributes": { - - "one attribute" : { - "haml" : "%p(a='b')", - "html" : "

        " - }, - - "multiple attributes" : { - "haml" : "%p(a='b' c='d')", - "html" : "

        " - }, - - "attributes separated with newlines" : { - "haml" : "%p(a='b'\n c='d')", - "html" : "

        " - }, - - "an interpolated attribute" : { - "haml" : "%p(a=\"#{var}\")", - "html" : "

        ", - "locals" : { - "var" : "value" - } - }, - - "'class' as an attribute" : { - "haml" : "%p(class='class1')", - "html" : "

        " - }, - - "a tag with a CSS class and 'class' as an attribute" : { - "haml" : "%p.class2(class='class1')", - "html" : "

        " - }, - - "a tag with 'id' as an attribute" : { - "haml" : "%p(id='1')", - "html" : "

        " - }, - - "a tag with a CSS id and 'id' as an attribute" : { - "haml" : "%p#id(id='1')", - "html" : "

        " - }, - - "a tag with a variable attribute" : { - "haml" : "%p(class=var)", - "html" : "

        ", - "locals" : { - "var" : "hello" - } - }, - - "a tag with a CSS class and 'class' as a variable attribute" : { - "haml" : ".hello(class=var)", - "html" : "
        ", - "locals" : { - "var" : "world" - } - }, - - "a tag multiple CSS classes (sorted correctly)" : { - "haml" : ".z(class=var)", - "html" : "
        ", - "locals" : { - "var" : "a" - } - } - - }, - - "tags with Ruby-style attributes": { - - "one attribute" : { - "haml" : "%p{:a => 'b'}", - "html" : "

        " - }, - - "attributes hash with whitespace" : { - "haml" : "%p{ :a => 'b' }", - "html" : "

        " - }, - - "an interpolated attribute" : { - "haml" : "%p{:a =>\"#{var}\"}", - "html" : "

        ", - "locals" : { - "var" : "value" - } - }, - - "multiple attributes" : { - "haml" : "%p{ :a => 'b', 'c' => 'd' }", - "html" : "

        " - }, - - "attributes separated with newlines" : { - "haml" : "%p{ :a => 'b',\n 'c' => 'd' }", - "html" : "

        " - }, - - "'class' as an attribute" : { - "haml" : "%p{:class => 'class1'}", - "html" : "

        " - }, - - "a tag with a CSS class and 'class' as an attribute" : { - "haml" : "%p.class2{:class => 'class1'}", - "html" : "

        " - }, - - "a tag with 'id' as an attribute" : { - "haml" : "%p{:id => '1'}", - "html" : "

        " - }, - - "a tag with a CSS id and 'id' as an attribute" : { - "haml" : "%p#id{:id => '1'}", - "html" : "

        " - }, - - "a tag with a CSS id and a numeric 'id' as an attribute" : { - "haml" : "%p#id{:id => 1}", - "html" : "

        " - }, - - "a tag with a variable attribute" : { - "haml" : "%p{:class => var}", - "html" : "

        ", - "locals" : { - "var" : "hello" - } - }, - - "a tag with a CSS class and 'class' as a variable attribute" : { - "haml" : ".hello{:class => var}", - "html" : "
        ", - "locals" : { - "var" : "world" - } - }, - - "a tag multiple CSS classes (sorted correctly)" : { - "haml" : ".z{:class => var}", - "html" : "
        ", - "locals" : { - "var" : "a" - } - }, - - "an interpolated attribute" : { - "haml" : "%p{:a =>\"#{var}\"}", - "html" : "

        ", - "locals" : { - "var" : "value" - } - } - - }, - - "silent comments" : { - - "an inline comment" : { - "haml" : "-# hello", - "html" : "" - }, - - "a nested comment" : { - "haml" : "-#\n hello", - "html" : "" - } - - }, - - "markup comments" : { - - "an inline comment" : { - "haml" : "/ comment", - "html" : "" - }, - - "a nested comment" : { - "haml" : "/\n comment\n comment2", - "html" : "" - } - }, - - "conditional comments": { - "a conditional comment" : { - "haml" : "/[if IE]\n %p a", - "html" : "" - } - }, - - "internal filters": { - - "content in an 'escaped' filter" : { - "haml" : ":escaped\n <&\">", - "html" : "<&">" - }, - - "content in a 'preserve' filter" : { - "haml" : ":preserve\n hello\n\n%p", - "html" : "hello \n

        " - }, - - "content in a 'plain' filter" : { - "haml" : ":plain\n hello\n\n%p", - "html" : "hello\n

        " - }, - - "content in a 'javascript' filter" : { - "haml" : ":javascript\n a();\n%p", - "html" : "\n

        " - } - - }, - - "interpolation": { - - "interpolation inside code" : { - "haml" : "%p= \"#{var}\"", - "html" : "

        value

        ", - "locals" : { - "var" : "value" - } - }, - - "interpolation inside inline content" : { - "haml" : "%p #{var}", - "html" : "

        value

        ", - "locals" : { - "var" : "value" - } - }, - - "no interpolation when escaped" : { - "haml" : "%p \\#{var}", - "html" : "

        #{var}

        " - }, - - "interpolation when the escape character is escaped" : { - "haml" : "%p \\\\#{var}", - "html" : "

        \\value

        ", - "locals" : { - "var" : "value" - } - }, - - "interpolation inside filtered content" : { - "haml" : ":plain\n #{var} interpolated: #{var}", - "html" : "value interpolated: value", - "locals" : { - "var" : "value" - } - } - - } - -} diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/template_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/template_test.rb deleted file mode 100644 index e813ee9b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/template_test.rb +++ /dev/null @@ -1,296 +0,0 @@ -#!/usr/bin/env ruby -require File.dirname(__FILE__) + '/../test_helper' -require 'haml/template' -require 'sass/plugin' -require File.dirname(__FILE__) + '/mocks/article' - -require 'action_pack/version' - -module Haml::Filters::Test - include Haml::Filters::Base - - def render(text) - "TESTING HAHAHAHA!" - end -end - -module Haml::Helpers - def test_partial(name, locals = {}) - Haml::Engine.new(File.read(File.join(TemplateTest::TEMPLATE_PATH, "_#{name}.haml"))).render(self, locals) - end -end - -class Egocentic - def method_missing(*args) - self - end -end - -class DummyController - attr_accessor :logger - def initialize - @logger = Egocentic.new - end - - def self.controller_path - '' - end - - def controller_path - '' - end -end - -class TemplateTest < Test::Unit::TestCase - TEMPLATE_PATH = File.join(File.dirname(__FILE__), "templates") - TEMPLATES = %w{ very_basic standard helpers - whitespace_handling original_engine list helpful - silent_script tag_parsing just_stuff partials - filters nuke_outer_whitespace nuke_inner_whitespace - render_layout } - # partial layouts were introduced in 2.0.0 - TEMPLATES << 'partial_layout' unless ActionPack::VERSION::MAJOR < 2 - - def setup - @base = create_base - - # filters template uses :sass - Sass::Plugin.options.update(:line_comments => true, :style => :compact) - end - - def create_base - vars = { 'article' => Article.new, 'foo' => 'value one' } - - unless Haml::Util.has?(:instance_method, ActionView::Base, :finder) - base = ActionView::Base.new(TEMPLATE_PATH, vars) - else - # Rails 2.1.0 - base = ActionView::Base.new([], vars) - base.finder.append_view_path(TEMPLATE_PATH) - end - - if Haml::Util.has?(:private_method, base, :evaluate_assigns) - base.send(:evaluate_assigns) - else - # Rails 2.2 - base.send(:_evaluate_assigns_and_ivars) - end - - # This is used by form_for. - # It's usually provided by ActionController::Base. - def base.protect_against_forgery?; false; end - - base.controller = DummyController.new - base - end - - def render(text, opts = {}) - return @base.render(:inline => text, :type => :haml) if opts == :action_view - Haml::Engine.new(text, opts).to_html(@base) - end - - def load_result(name) - @result = '' - File.new(File.dirname(__FILE__) + "/results/#{name}.xhtml").each_line { |l| @result += l } - @result - end - - def assert_renders_correctly(name, &render_method) - old_options = Haml::Template.options.dup - Haml::Template.options[:escape_html] = false - if ActionPack::VERSION::MAJOR < 2 || - (ActionPack::VERSION::MAJOR == 2 && ActionPack::VERSION::MINOR < 2) - render_method ||= proc { |name| @base.render(name) } - else - render_method ||= proc { |name| @base.render(:file => name) } - end - - load_result(name).split("\n").zip(render_method[name].split("\n")).each_with_index do |pair, line| - message = "template: #{name}\nline: #{line}" - assert_equal(pair.first, pair.last, message) - end - rescue Haml::Util.av_template_class(:Error) => e - if e.message =~ /Can't run [\w:]+ filter; required (one of|file) ((?:'\w+'(?: or )?)+)(, but none were found| not found)/ - puts "\nCouldn't require #{$2}; skipping a test." - else - raise e - end - ensure - Haml::Template.options = old_options - end - - def test_empty_render_should_remain_empty - assert_equal('', render('')) - end - - TEMPLATES.each do |template| - define_method "test_template_should_render_correctly [template: #{template}] " do - assert_renders_correctly template - end - end - - def test_templates_should_render_correctly_with_render_proc - assert_renders_correctly("standard") do |name| - engine = Haml::Engine.new(File.read(File.dirname(__FILE__) + "/templates/#{name}.haml")) - engine.render_proc(@base).call - end - end - - def test_templates_should_render_correctly_with_def_method - assert_renders_correctly("standard") do |name| - engine = Haml::Engine.new(File.read(File.dirname(__FILE__) + "/templates/#{name}.haml")) - engine.def_method(@base, "render_standard") - @base.render_standard - end - end - - if ActionPack::VERSION::MAJOR < 3 - # Rails 3.0.0 deprecates the use of yield with a layout - # for calls to render :file - def test_action_view_templates_render_correctly - proc = lambda do - @base.content_for(:layout) {'Lorem ipsum dolor sit amet'} - assert_renders_correctly 'content_for_layout' - end - - if @base.respond_to?(:with_output_buffer) - @base.with_output_buffer("", &proc) - else - proc.call - end - end - end - - def test_instance_variables_should_work_inside_templates - @base.instance_variable_set("@content_for_layout", 'something') - assert_equal("

        something

        ", render("%p= @content_for_layout").chomp) - - @base.instance_eval("@author = 'Hampton Catlin'") - assert_equal("
        Hampton Catlin
        ", render(".author= @author").chomp) - - @base.instance_eval("@author = 'Hampton'") - assert_equal("Hampton", render("= @author").chomp) - - @base.instance_eval("@author = 'Catlin'") - assert_equal("Catlin", render("= @author").chomp) - end - - def test_instance_variables_should_work_inside_attributes - @base.instance_eval("@author = 'hcatlin'") - assert_equal("

        foo

        ", render("%p{:class => @author} foo").chomp) - end - - def test_template_renders_should_eval - assert_equal("2\n", render("= 1+1")) - end - - def test_haml_options - old_options = Haml::Template.options.dup - Haml::Template.options[:suppress_eval] = true - old_base, @base = @base, create_base - assert_renders_correctly("eval_suppressed") - ensure - @base = old_base - Haml::Template.options = old_options - end - - def test_with_output_buffer_with_ugly - return unless Haml::Util.has?(:instance_method, ActionView::Base, :with_output_buffer) - assert_equal(< true)) -

        -foo -baz -

        -HTML -%p - foo - - with_output_buffer do - bar - = "foo".gsub(/./) do |s| - - "flup" - baz -HAML - end - - def test_exceptions_should_work_correctly - begin - render("- raise 'oops!'") - rescue Exception => e - assert_equal("oops!", e.message) - assert_match(/^\(haml\):1/, e.backtrace[0]) - else - assert false - end - - template = < e - assert_match(/^\(haml\):5/, e.backtrace[0]) - else - assert false - end - end - - ## XSS Protection Tests - - # In order to enable these, either test against Rails 3.0 - # or test against Rails 2.2.5+ with the rails_xss plugin - # (http://github.com/NZKoz/rails_xss) in test/plugins. - if Haml::Util.rails_xss_safe? - def test_escape_html_option_set - assert Haml::Template.options[:escape_html] - end - - def test_xss_protection - assert_equal("Foo & Bar\n", render('= "Foo & Bar"', :action_view)) - end - - def test_xss_protection_with_safe_strings - assert_equal("Foo & Bar\n", render('= "Foo & Bar".html_safe!', :action_view)) - end - - def test_xss_protection_with_bang - assert_equal("Foo & Bar\n", render('!= "Foo & Bar"', :action_view)) - end - - def test_xss_protection_in_interpolation - assert_equal("Foo & Bar\n", render('Foo #{"&"} Bar', :action_view)) - end - - def test_xss_protection_with_bang_in_interpolation - assert_equal("Foo & Bar\n", render('! Foo #{"&"} Bar', :action_view)) - end - - def test_xss_protection_with_safe_strings_in_interpolation - assert_equal("Foo & Bar\n", render('Foo #{"&".html_safe!} Bar', :action_view)) - end - - def test_xss_protection_with_mixed_strings_in_interpolation - assert_equal("Foo & Bar & Baz\n", render('Foo #{"&".html_safe!} Bar #{"&"} Baz', :action_view)) - end - - def test_rendered_string_is_html_safe - assert(render("Foo").html_safe?) - end - - def test_rendered_string_is_html_safe_with_action_view - assert(render("Foo", :action_view).html_safe?) - end - - def test_xss_html_escaping_with_non_strings - assert_equal("4\n", render("= html_escape(4)")) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_av_partial_1.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_av_partial_1.haml deleted file mode 100644 index 7f47f726..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_av_partial_1.haml +++ /dev/null @@ -1,9 +0,0 @@ -%h2 This is a pretty complicated partial -.partial - %p It has several nested partials, - %ul - - 5.times do - %li - %strong Partial: - - @nesting = 5 - = render :partial => 'haml/templates/av_partial_2' \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_av_partial_1_ugly.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_av_partial_1_ugly.haml deleted file mode 100644 index 73e0ca7a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_av_partial_1_ugly.haml +++ /dev/null @@ -1,9 +0,0 @@ -%h2 This is a pretty complicated partial -.partial - %p It has several nested partials, - %ul - - 5.times do - %li - %strong Partial: - - @nesting = 5 - = render :partial => 'haml/templates/av_partial_2_ugly' \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_av_partial_2.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_av_partial_2.haml deleted file mode 100644 index c8a313df..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_av_partial_2.haml +++ /dev/null @@ -1,5 +0,0 @@ -- @nesting -= 1 -.partial{:level => @nesting} - %h3 This is a crazy deep-nested partial. - %p== Nesting level #{@nesting} - = render :partial => 'haml/templates/av_partial_2' if @nesting > 0 \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_av_partial_2_ugly.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_av_partial_2_ugly.haml deleted file mode 100644 index 088a3c36..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_av_partial_2_ugly.haml +++ /dev/null @@ -1,5 +0,0 @@ -- @nesting -= 1 -.partial{:level => @nesting} - %h3 This is a crazy deep-nested partial. - %p== Nesting level #{@nesting} - = render :partial => 'haml/templates/av_partial_2_ugly' if @nesting > 0 \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_layout.erb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_layout.erb deleted file mode 100644 index 91c839de..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_layout.erb +++ /dev/null @@ -1,3 +0,0 @@ -Before -<%= yield -%> -After diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_layout_for_partial.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_layout_for_partial.haml deleted file mode 100644 index 7cf538bd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_layout_for_partial.haml +++ /dev/null @@ -1,3 +0,0 @@ -.partial-layout - %h2 This is inside a partial layout - = yield \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_partial.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_partial.haml deleted file mode 100644 index 756b54bc..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_partial.haml +++ /dev/null @@ -1,8 +0,0 @@ -%p - @foo = - = @foo -- @foo = 'value three' -== Toplevel? #{haml_buffer.toplevel?} -%p - @foo = - = @foo diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_text_area.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_text_area.haml deleted file mode 100644 index 896b9758..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/_text_area.haml +++ /dev/null @@ -1,3 +0,0 @@ -.text_area_test_area - ~ "" -= "" diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/action_view.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/action_view.haml deleted file mode 100644 index 5b9fa04f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/action_view.haml +++ /dev/null @@ -1,47 +0,0 @@ -!!! -%html{html_attrs} - %head - %title Hampton Catlin Is Totally Awesome - %meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"} - %body - %h1 - This is very much like the standard template, - except that it has some ActionView-specific stuff. - It's only used for benchmarking. - .crazy_partials= render :partial => 'haml/templates/av_partial_1' - / You're In my house now! - .header - Yes, ladies and gentileman. He is just that egotistical. - Fantastic! This should be multi-line output - The question is if this would translate! Ahah! - = 1 + 9 + 8 + 2 #numbers should work and this should be ignored - #body= " Quotes should be loved! Just like people!" - - 120.times do |number| - - number - Wow.| - %p - = "Holy cow " + | - "multiline " + | - "tags! " + | - "A pipe (|) even!" | - = [1, 2, 3].collect { |n| "PipesIgnored|" } - = [1, 2, 3].collect { |n| | - n.to_s | - }.join("|") | - %div.silent - - foo = String.new - - foo << "this" - - foo << " shouldn't" - - foo << " evaluate" - = foo + " but now it should!" - -# Woah crap a comment! - - -# That was a line that shouldn't close everything. - %ul.really.cool - - ('a'..'f').each do |a| - %li= a - #combo.of_divs_with_underscore= @should_eval = "with this text" - = [ 104, 101, 108, 108, 111 ].map do |byte| - - byte.chr - .footer - %strong.shout= "This is a really long ruby quote. It should be loved and wrapped because its more than 50 characters. This value may change in the future and this test may look stupid. \nSo, I'm just making it *really* long. God, I hope this works" diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/action_view_ugly.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/action_view_ugly.haml deleted file mode 100644 index 5f0551ed..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/action_view_ugly.haml +++ /dev/null @@ -1,47 +0,0 @@ -!!! -%html{html_attrs} - %head - %title Hampton Catlin Is Totally Awesome - %meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"} - %body - %h1 - This is very much like the standard template, - except that it has some ActionView-specific stuff. - It's only used for benchmarking. - .crazy_partials= render :partial => 'haml/templates/av_partial_1_ugly' - / You're In my house now! - .header - Yes, ladies and gentileman. He is just that egotistical. - Fantastic! This should be multi-line output - The question is if this would translate! Ahah! - = 1 + 9 + 8 + 2 #numbers should work and this should be ignored - #body= " Quotes should be loved! Just like people!" - - 120.times do |number| - - number - Wow.| - %p - = "Holy cow " + | - "multiline " + | - "tags! " + | - "A pipe (|) even!" | - = [1, 2, 3].collect { |n| "PipesIgnored|" } - = [1, 2, 3].collect { |n| | - n.to_s | - }.join("|") | - %div.silent - - foo = String.new - - foo << "this" - - foo << " shouldn't" - - foo << " evaluate" - = foo + " but now it should!" - -# Woah crap a comment! - - -# That was a line that shouldn't close everything. - %ul.really.cool - - ('a'..'f').each do |a| - %li= a - #combo.of_divs_with_underscore= @should_eval = "with this text" - = [ 104, 101, 108, 108, 111 ].map do |byte| - - byte.chr - .footer - %strong.shout= "This is a really long ruby quote. It should be loved and wrapped because its more than 50 characters. This value may change in the future and this test may look stupid. \nSo, I'm just making it *really* long. God, I hope this works" diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/breakage.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/breakage.haml deleted file mode 100644 index 57c17341..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/breakage.haml +++ /dev/null @@ -1,8 +0,0 @@ -%p - %h1 Hello! - = "lots of lines" - - raise "Oh no!" - %p - this is after the exception - %strong yes it is! -ho ho ho. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/content_for_layout.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/content_for_layout.haml deleted file mode 100644 index e9d7e6d6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/content_for_layout.haml +++ /dev/null @@ -1,8 +0,0 @@ -!!! -%html - %head - %body - #yieldy - = yield :layout - #nosym - = yield diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/eval_suppressed.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/eval_suppressed.haml deleted file mode 100644 index 1e3c0346..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/eval_suppressed.haml +++ /dev/null @@ -1,11 +0,0 @@ -= "not me!" -= "nor me!" -- haml_concat "not even me!" -%p= "NO!" -%p~ "UH-UH!" -%h1 Me! -#foo - %p#bar All - %br/ - %p.baz This - Should render diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/filters.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/filters.haml deleted file mode 100644 index dc5494d1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/filters.haml +++ /dev/null @@ -1,66 +0,0 @@ -%style - - width = 5 + 17 - :sass - p - :border - :style dotted - :width #{width}px - :color #ff00ff - h1 - :font-weight normal - -:test - This - Should - Not - Print - -%p - :javascript - function newline(str) { - return "\n" + str; - } - -:plain - This - Is - Plain - Text - %strong right? - \#{not interpolated} - \\#{1 + 2} - \\\#{also not} - \\ - -- last = "noitalo" -%p - %pre - :preserve - This pre is pretty deeply - nested. - Does #{"interp" + last.reverse} work? - :preserve - This one is, too. - Nested, that is. - -- num = 10 -%ul - :erb - <% num.times do |c| %> -
      • <%= (c+97).chr %>
      • - <% end %> - <% res = 178 %> - -.res= res - -= "Text!" - -- var = "Hello" -:ruby - printf "%s, World!\n", var - print "How are you doing today?\n" - -:escaped -
        -

        I think — or do I?

        -
        diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/helpers.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/helpers.haml deleted file mode 100644 index 07f78840..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/helpers.haml +++ /dev/null @@ -1,95 +0,0 @@ -= h("&&&&&&&&&&&") # This is an ActionView Helper... should load -- foo = capture do # This ActionView Helper is designed for ERB, but should work with haml - %div - %p.title Title - %p.text - Woah this is really crazy - I mean wow, - man. -- 3.times do - = foo -%p foo -- tab_up -%p reeeeeeeeeeeeeeeeeeeeeeeeeeeeeeally loooooooooooooooooong -- tab_down -.woah - #funky - = capture_haml do - %div - %h1 Big! - %p Small - / Invisible - = capture do - .dilly - %p foo - %h1 bar - = surround '(', ')' do - %strong parentheses! -= precede '*' do - %span.small Not really -click -= succeed '.' do - %a{:href=>"thing"} here -%p baz -- haml_buffer.tabulation = 10 -%p boom -- concat "foo\n" -- haml_buffer.tabulation = 0 --# --# ActionPack pre-2.0 has weird url_for issues here. -- if ActionPack::VERSION::MAJOR < 2 - :plain -

        -

        -

        -
        - -
        -

        - @foo = - value one -

        - Toplevel? false -

        - @foo = - value three -

        - -
        - Title: - - Body: - -
        -
        -- else - %p - = form_tag '' - %div - - form_tag '' do - %div= submit_tag 'save' - - @foo = 'value one' - = test_partial 'partial' - - form_for :article, @article, :url => '' do |f| - Title: - = f.text_field :title - Body: - = f.text_field :body -= list_of({:google => 'http://www.google.com'}) do |name, link| - %a{ :href => link }= name -%p - - haml_concat "foo" - %div - - haml_concat "bar" - - haml_concat "boom" - baz - - haml_concat "boom, again" -- haml_tag :table do - - haml_tag :tr do - - haml_tag :td, {:class => 'cell'} do - - haml_tag :strong, "strong!" - - haml_concat "data" - - haml_tag :td do - - haml_concat "more_data" -- haml_tag :hr -- haml_tag :div, '' diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/helpful.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/helpful.haml deleted file mode 100644 index 3e44a50d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/helpful.haml +++ /dev/null @@ -1,11 +0,0 @@ -%div[@article] - %h1= @article.title - %div= @article.body -#id[@article] id -.class[@article] class -#id.class[@article] id class -%div{:class => "article full"}[@article]= "boo" -%div{'class' => "article full"}[@article]= "moo" -%div.articleFull[@article]= "foo" -%span[@not_a_real_variable_and_will_be_nil] - Boo diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/just_stuff.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/just_stuff.haml deleted file mode 100644 index 29c4d578..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/just_stuff.haml +++ /dev/null @@ -1,83 +0,0 @@ -!!! XML -!!! XML ISO-8859-1 -!!! XML UtF-8 Foo bar -!!! -!!! 1.1 -!!! 1.1 Strict -!!! Strict foo bar -!!! FRAMESET -%strong{:apos => "Foo's bar!"} Boo! -== Embedded? false! -== Embedded? #{true}! -- embedded = true -== Embedded? #{embedded}! -== Embedded? #{"twice! #{true}"}! -== Embedded? #{"one"} af"t"er #{"another"}! -%p== Embedded? false! -%p== Embedded? #{true}! -- embedded = true -%p== Embedded? #{embedded}! -%p== Embedded? #{"twice! #{true}"}! -%p== Embedded? #{"one"} af"t"er #{"another"}! -= "stuff followed by whitespace" - -- if true - - %strong block with whitespace -%p - \Escape - \- character - \%p foo - \yee\ha -/ Short comment -/ - This is a block comment - cool, huh? - %strong there can even be sub-tags! - = "Or script!" --# Haml comment --# - Nested Haml comment - - raise 'dead' -%p{ :class => "" } class attribute should appear! -%p{ :gorbachev => nil } this attribute shouldn't appear -/[if lte IE6] conditional comment! -/[if gte IE7] - %p Block conditional comment - %div - %h1 Cool, eh? -/[if gte IE5.2] - Woah a period. -= "test" | - "test" | --# Hard tabs shouldn't throw errors. - -- case :foo -- when :bar - %br Blah -- when :foo - %br -- case :foo - - when :bar - %meta{ :foo => 'blah'} - - when :foo - %meta{ :foo => 'bar'} -%img -%hr -%link -%script Inline content -%br - Nested content -%p.foo{:class => true ? 'bar' : 'baz'}[@article] Blah -%p.foo{:class => false ? 'bar' : ''}[@article] Blah -%p.qux{:class => 'quux'}[@article] Blump -== #{"Woah inner quotes"} -%p.dynamic_quote{:quotes => "single '", :dyn => 1 + 2} -%p.dynamic_self_closing{:dyn => 1 + 2}/ -%body - :plain - hello - %div - - %img - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/list.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/list.haml deleted file mode 100644 index 40a80e64..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/list.haml +++ /dev/null @@ -1,12 +0,0 @@ -!Not a Doctype! -%ul - %li a - %li b - %li c - %li d - %li e - %li f - %li g - %li h - %li i - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/nuke_inner_whitespace.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/nuke_inner_whitespace.haml deleted file mode 100644 index 8eebd417..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/nuke_inner_whitespace.haml +++ /dev/null @@ -1,32 +0,0 @@ -%p - %q< Foo -%p - %q{:a => 1 + 1}< Foo -%p - %q<= "Foo\nBar" -%p - %q{:a => 1 + 1}<= "Foo\nBar" -%p - %q< - Foo - Bar -%p - %q{:a => 1 + 1}< - Foo - Bar -%p - %q< - %div - Foo - Bar -%p - %q{:a => 1 + 1}< - %div - Foo - Bar - --# Regression test -%p - %q<= "foo" - %q{:a => 1 + 1} - bar diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/nuke_outer_whitespace.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/nuke_outer_whitespace.haml deleted file mode 100644 index 1e2a7f5f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/nuke_outer_whitespace.haml +++ /dev/null @@ -1,144 +0,0 @@ -%p - %p - %q> - Foo -%p - %p - %q{:a => 1 + 1}> - Foo -%p - %p - %q> Foo -%p - %p - %q{:a => 1 + 1}> Foo -%p - %p - %q> - = "Foo" -%p - %p - %q{:a => 1 + 1}> - = "Foo" -%p - %p - %q>= "Foo" -%p - %p - %q{:a => 1 + 1}>= "Foo" -%p - %p - %q> - = "Foo\nBar" -%p - %p - %q{:a => 1 + 1}> - = "Foo\nBar" -%p - %p - %q>= "Foo\nBar" -%p - %p - %q{:a => 1 + 1}>= "Foo\nBar" -%p - %p - - tab_up - foo - %q> - Foo - bar - - tab_down -%p - %p - - tab_up - foo - %q{:a => 1 + 1}> - Foo - bar - - tab_down -%p - %p - - tab_up - foo - %q> Foo - bar - - tab_down -%p - %p - - tab_up - foo - %q{:a => 1 + 1}> Foo - bar - - tab_down -%p - %p - - tab_up - foo - %q> - = "Foo" - bar - - tab_down -%p - %p - - tab_up - foo - %q{:a => 1 + 1}> - = "Foo" - bar - - tab_down -%p - %p - - tab_up - foo - %q>= "Foo" - bar - - tab_down -%p - %p - - tab_up - foo - %q{:a => 1 + 1}>= "Foo" - bar - - tab_down -%p - %p - - tab_up - foo - %q> - = "Foo\nBar" - bar - - tab_down -%p - %p - - tab_up - foo - %q{:a => 1 + 1}> - = "Foo\nBar" - bar - - tab_down -%p - %p - - tab_up - foo - %q>= "Foo\nBar" - bar - - tab_down -%p - %p - - tab_up - foo - %q{:a => 1 + 1}>= "Foo\nBar" - bar - - tab_down -%p - %p - %q> -%p - %p - %q>/ -%p - %p - %q{:a => 1 + 1}> -%p - %p - %q{:a => 1 + 1}>/ diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/original_engine.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/original_engine.haml deleted file mode 100644 index df31a5aa..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/original_engine.haml +++ /dev/null @@ -1,17 +0,0 @@ -!!! -%html - %head - %title Stop. haml time - #content - %h1 This is a title! - %p Lorem ipsum dolor sit amet, consectetur adipisicing elit - %p{:class => 'foo'} Cigarettes! - %h2 Man alive! - %ul.things - %li Slippers - %li Shoes - %li Bathrobe - %li Coffee - %pre - This is some text that's in a pre block! - Let's see what happens when it's rendered! What about now, since we're on a new line? diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/partial_layout.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/partial_layout.haml deleted file mode 100644 index b6373b3f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/partial_layout.haml +++ /dev/null @@ -1,3 +0,0 @@ -%h1 Partial layout used with for block: -- render :layout => 'layout_for_partial.haml' do - %p Some content within a layout \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/partialize.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/partialize.haml deleted file mode 100644 index 327d90da..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/partialize.haml +++ /dev/null @@ -1 +0,0 @@ -= render :file => "#{name}.haml" diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/partials.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/partials.haml deleted file mode 100644 index d74f4b45..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/partials.haml +++ /dev/null @@ -1,12 +0,0 @@ -- @foo = 'value one' -%p - @foo = - = @foo -- @foo = 'value two' -%p - @foo = - = @foo -= test_partial "partial" -%p - @foo = - = @foo diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/render_layout.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/render_layout.haml deleted file mode 100644 index 549742b9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/render_layout.haml +++ /dev/null @@ -1,2 +0,0 @@ -= render :layout => 'layout' do - During diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/silent_script.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/silent_script.haml deleted file mode 100644 index 45199f0b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/silent_script.haml +++ /dev/null @@ -1,40 +0,0 @@ -%div - %h1 I can count! - - (1..20).each do |i| - = i - %h1 I know my ABCs! - %ul - - ('a'..'z').each do |i| - %li= i - %h1 I can catch errors! - - begin - - String.silly - - rescue NameError => e - = "Oh no! \"#{e}\" happened!" - %p - "false" is: - - if false - = "true" - - else - = "false" - - if true - - 5.times do |i| - - if i % 2 == 1 - Odd! - - else - Even! - - else - = "This can't happen!" -- 13 | -.foo - %strong foobar -- 5.times | - do | - |a| | - %strong= a -.test - - "foo | - bar | - baz" | - - %p boom diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/standard.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/standard.haml deleted file mode 100644 index 0126ac79..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/standard.haml +++ /dev/null @@ -1,42 +0,0 @@ -!!! -%html{:xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en-US", "lang" => "en-US"} - %head - %title Hampton Catlin Is Totally Awesome - %meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"} - %body - / You're In my house now! - .header - Yes, ladies and gentileman. He is just that egotistical. - Fantastic! This should be multi-line output - The question is if this would translate! Ahah! - = 1 + 9 + 8 + 2 #numbers should work and this should be ignored - #body= " Quotes should be loved! Just like people!" - - 120.times do |number| - = number - Wow.| - %p - = "Holy cow " + | - "multiline " + | - "tags! " + | - "A pipe (|) even!" | - = [1, 2, 3].collect { |n| "PipesIgnored|" }.join - = [1, 2, 3].collect { |n| | - n.to_s | - }.join("|") | - %div.silent - - foo = String.new - - foo << "this" - - foo << " shouldn't" - - foo << " evaluate" - = foo + " but now it should!" - -# Woah crap a comment! - - -# That was a line that shouldn't close everything. - %ul.really.cool - - ('a'..'f').each do |a| - %li= a - #combo.of_divs_with_underscore= @should_eval = "with this text" - = "foo".each_line do |line| - - nil - .footer - %strong.shout= "This is a really long ruby quote. It should be loved and wrapped because its more than 50 characters. This value may change in the future and this test may look stupid. \nSo, I'm just making it *really* long. God, I hope this works" diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/standard_ugly.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/standard_ugly.haml deleted file mode 100644 index 0126ac79..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/standard_ugly.haml +++ /dev/null @@ -1,42 +0,0 @@ -!!! -%html{:xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en-US", "lang" => "en-US"} - %head - %title Hampton Catlin Is Totally Awesome - %meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"} - %body - / You're In my house now! - .header - Yes, ladies and gentileman. He is just that egotistical. - Fantastic! This should be multi-line output - The question is if this would translate! Ahah! - = 1 + 9 + 8 + 2 #numbers should work and this should be ignored - #body= " Quotes should be loved! Just like people!" - - 120.times do |number| - = number - Wow.| - %p - = "Holy cow " + | - "multiline " + | - "tags! " + | - "A pipe (|) even!" | - = [1, 2, 3].collect { |n| "PipesIgnored|" }.join - = [1, 2, 3].collect { |n| | - n.to_s | - }.join("|") | - %div.silent - - foo = String.new - - foo << "this" - - foo << " shouldn't" - - foo << " evaluate" - = foo + " but now it should!" - -# Woah crap a comment! - - -# That was a line that shouldn't close everything. - %ul.really.cool - - ('a'..'f').each do |a| - %li= a - #combo.of_divs_with_underscore= @should_eval = "with this text" - = "foo".each_line do |line| - - nil - .footer - %strong.shout= "This is a really long ruby quote. It should be loved and wrapped because its more than 50 characters. This value may change in the future and this test may look stupid. \nSo, I'm just making it *really* long. God, I hope this works" diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/tag_parsing.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/tag_parsing.haml deleted file mode 100644 index f142ebbd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/tag_parsing.haml +++ /dev/null @@ -1,21 +0,0 @@ -%div.tags - %foo 1 - %FOO 2 - %fooBAR 3 - %fooBar 4 - %foo_bar 5 - %foo-bar 6 - %foo:bar 7 - %foo.bar 8 - %fooBAr_baz:boom_bar 9 - %foo13 10 - %foo2u 11 -%div.classes - %p.foo.bar#baz#boom - .fooBar a - .foo-bar b - .foo_bar c - .FOOBAR d - .foo16 e - .123 f - .foo2u g diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/very_basic.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/very_basic.haml deleted file mode 100644 index 93396b96..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/very_basic.haml +++ /dev/null @@ -1,4 +0,0 @@ -!!! -%html - %head - %body diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/whitespace_handling.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/whitespace_handling.haml deleted file mode 100644 index f459e75f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/templates/whitespace_handling.haml +++ /dev/null @@ -1,87 +0,0 @@ -#whitespace_test - = test_partial "text_area", :value => "Oneline" - = test_partial "text_area", :value => "Two\nlines" - ~ test_partial "text_area", :value => "Oneline" - ~ test_partial "text_area", :value => "Two\nlines" - #flattened~ test_partial "text_area", :value => "Two\nlines" -.hithere - ~ "Foo bar" - ~ "
        foo bar
        " - ~ "
        foo\nbar
        " - %p~ "
        foo\nbar
        " - %p~ "foo\nbar" -.foo - ~ 13 - ~ "".each_line do |l| - - haml_concat l.strip -#whitespace_test - = test_partial "text_area", :value => "Oneline" - = test_partial "text_area", :value => "Two\nlines" - = find_and_preserve test_partial("text_area", :value => "Oneline") - = find_and_preserve test_partial("text_area", :value => "Two\nlines") - #flattened= find_and_preserve test_partial("text_area", :value => "Two\nlines") -.hithere - = find_and_preserve("Foo bar") - = find_and_preserve("
        foo bar
        ") - = find_and_preserve("
        foo\nbar
        ") - %p= find_and_preserve("
        foo\nbar
        ") - %p= find_and_preserve("foo\nbar") - %pre - :preserve - ___ - ,o88888 - ,o8888888' - ,:o:o:oooo. ,8O88Pd8888" - ,.::.::o:ooooOoOoO. ,oO8O8Pd888'" - ,.:.::o:ooOoOoOO8O8OOo.8OOPd8O8O" - , ..:.::o:ooOoOOOO8OOOOo.FdO8O8" - , ..:.::o:ooOoOO8O888O8O,COCOO" - , . ..:.::o:ooOoOOOO8OOOOCOCO" - . ..:.::o:ooOoOoOO8O8OCCCC"o - . ..:.::o:ooooOoCoCCC"o:o - . ..:.::o:o:,cooooCo"oo:o: - ` . . ..:.:cocoooo"'o:o:::' - .` . ..::ccccoc"'o:o:o:::' - :.:. ,c:cccc"':.:.:.:.:.' - ..:.:"'`::::c:"'..:.:.:.:.:.' http://www.chris.com/ASCII/ - ...:.'.:.::::"' . . . . .' - .. . ....:."' ` . . . '' - . . . ...."' - .. . ."' -hrr- - . - - - It's a planet! - %strong This shouldn't be bold! - %strong This should! - %textarea - :preserve - ___ ___ ___ ___ - /\__\ /\ \ /\__\ /\__\ - /:/ / /::\ \ /::| | /:/ / - /:/__/ /:/\:\ \ /:|:| | /:/ / - /::\ \ ___ /::\~\:\ \ /:/|:|__|__ /:/ / - /:/\:\ /\__\ /:/\:\ \:\__\ /:/ |::::\__\ /:/__/ - \/__\:\/:/ / \/__\:\/:/ / \/__/~~/:/ / \:\ \ - \::/ / \::/ / /:/ / \:\ \ - /:/ / /:/ / /:/ / \:\ \ - /:/ / /:/ / /:/ / \:\__\ - \/__/ \/__/ \/__/ \/__/ - - Many - thanks - to - http://www.network-science.de/ascii/ - %strong indeed! -.foo - = find_and_preserve(13) -%pre - :preserve - __ ______ __ ______ - .----.| |--.|__ |.----.| |--..--------.| __ | - | __|| ||__ || __|| < | || __ | - |____||__|__||______||____||__|__||__|__|__||______| -%pre - :preserve - foo - bar diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/util_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/util_test.rb deleted file mode 100644 index 560c2343..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/util_test.rb +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env ruby -require File.dirname(__FILE__) + '/../test_helper' -require 'pathname' - -class UtilTest < Test::Unit::TestCase - include Haml::Util - - def test_scope - assert(File.exist?(scope("Rakefile"))) - end - - def test_to_hash - assert_equal({ - :foo => 1, - :bar => 2, - :baz => 3 - }, to_hash([[:foo, 1], [:bar, 2], [:baz, 3]])) - end - - def test_map_keys - assert_equal({ - "foo" => 1, - "bar" => 2, - "baz" => 3 - }, map_keys({:foo => 1, :bar => 2, :baz => 3}) {|k| k.to_s}) - end - - def test_map_vals - assert_equal({ - :foo => "1", - :bar => "2", - :baz => "3" - }, map_vals({:foo => 1, :bar => 2, :baz => 3}) {|k| k.to_s}) - end - - def test_map_hash - assert_equal({ - "foo" => "1", - "bar" => "2", - "baz" => "3" - }, map_hash({:foo => 1, :bar => 2, :baz => 3}) {|k, v| [k.to_s, v.to_s]}) - end - - def test_powerset - return unless Set[Set[]] == Set[Set[]] # There's a bug in Ruby 1.8.6 that breaks nested set equality - assert_equal([[].to_set].to_set, - powerset([])) - assert_equal([[].to_set, [1].to_set].to_set, - powerset([1])) - assert_equal([[].to_set, [1].to_set, [2].to_set, [1, 2].to_set].to_set, - powerset([1, 2])) - assert_equal([[].to_set, [1].to_set, [2].to_set, [3].to_set, - [1, 2].to_set, [2, 3].to_set, [1, 3].to_set, [1, 2, 3].to_set].to_set, - powerset([1, 2, 3])) - end - - def test_merge_adjacent_strings - assert_equal(["foo bar baz", :bang, "biz bop", 12], - merge_adjacent_strings(["foo ", "bar ", "baz", :bang, "biz", " bop", 12])) - end - - def test_silence_warnings - old_stderr, $stderr = $stderr, StringIO.new - warn "Out" - assert_equal("Out\n", $stderr.string) - silence_warnings {warn "In"} - assert_equal("Out\n", $stderr.string) - ensure - $stderr = old_stderr - end - - def test_has - assert(has?(:instance_method, String, :chomp!)) - assert(has?(:private_instance_method, Haml::Engine, :set_locals)) - end - - def test_enum_with_index - assert_equal(%w[foo0 bar1 baz2], - enum_with_index(%w[foo bar baz]).map {|s, i| "#{s}#{i}"}) - end - - def test_def_static_method - klass = Class.new - def_static_method(klass, :static_method, [:arg1, :arg2], - :sarg1, :sarg2, <and<% else %>but never<% end %> " << arg2 - - <% if sarg2 %> - s << "." - <% end %> -RUBY - c = klass.new - assert_equal("Always brush your teeth and comb your hair.", - c.send(static_method_name(:static_method, true, true), - "brush your teeth", "comb your hair")) - assert_equal("Always brush your teeth and comb your hair", - c.send(static_method_name(:static_method, true, false), - "brush your teeth", "comb your hair")) - assert_equal("Always brush your teeth but never play with fire.", - c.send(static_method_name(:static_method, false, true), - "brush your teeth", "play with fire")) - assert_equal("Always brush your teeth but never play with fire", - c.send(static_method_name(:static_method, false, false), - "brush your teeth", "play with fire")) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/linked_rails.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/linked_rails.rb deleted file mode 100644 index b9386c09..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/linked_rails.rb +++ /dev/null @@ -1,21 +0,0 @@ -# allows testing with edge Rails by creating a test/rails symlink -linked_rails = File.dirname(__FILE__) + '/rails' - -if File.exists?(linked_rails) && !$:.include?(linked_rails + '/activesupport/lib') - puts "[ using linked Rails ]" - $:.unshift linked_rails + '/activesupport/lib' - $:.unshift linked_rails + '/actionpack/lib' -end -require 'rubygems' -require 'action_controller' -require 'action_view' - -ActionController::Base.logger = Logger.new(nil) - -# Load plugins from test/plugins. -# This will only work with very basic plugins, -# since we don't want to load the entirety of Rails. -Dir[File.dirname(__FILE__) + '/plugins/*'].each do |plugin| - $: << plugin + '/lib' - Object.new.instance_eval(File.read(plugin + '/init.rb')) -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/css2sass_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/css2sass_test.rb deleted file mode 100644 index 4b46bcf9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/css2sass_test.rb +++ /dev/null @@ -1,251 +0,0 @@ -require 'test/unit' -require File.dirname(__FILE__) + '/../test_helper' -require 'sass/css' - -class CSS2SassTest < Test::Unit::TestCase - def test_basic - css = < true)) -h1 - :color red -SASS - end - - def test_nesting - assert_equal(< 'Expected expression, was end of text.', - "!a = 1 + 2 +" => 'Expected expression, was end of text.', - "!a = 1 + 2 + %" => 'Expected expression, was mod token.', - "!a = foo(\"bar\"" => 'Expected rparen token, was end of text.', - "!a = 1 }" => 'Unexpected end_interpolation token.', - "!a = 1 }foo\"" => 'Unexpected end_interpolation token.', - ":" => 'Invalid property: ":".', - ": a" => 'Invalid property: ": a".', - ":= a" => 'Invalid property: ":= a".', - "a\n :b" => < 'Invalid property: "b:" (no value).', - "a\n :b: c" => 'Invalid property: ":b: c".', - "a\n :b:c d" => 'Invalid property: ":b:c d".', - "a\n :b=c d" => 'Invalid property: ":b=c d".', - "a\n :b c;" => 'Invalid property: ":b c;" (no ";" required at end-of-line).', - "a\n b: c;" => 'Invalid property: "b: c;" (no ";" required at end-of-line).', - "a\n b : c" => 'Invalid property: "b : c".', - "a\n b=c: d" => 'Invalid property: "b=c: d".', - ":a b" => 'Properties aren\'t allowed at the root of a document.', - "a:" => 'Properties aren\'t allowed at the root of a document.', - ":a" => < 'Invalid variable: "!".', - "!a" => 'Invalid variable: "!a".', - "! a" => 'Invalid variable: "! a".', - "!a b" => 'Invalid variable: "!a b".', - "!a = 1b + 2c" => "Incompatible units: 'c' and 'b'.", - "!a = 1b < 2c" => "Incompatible units: 'c' and 'b'.", - "!a = 1b > 2c" => "Incompatible units: 'c' and 'b'.", - "!a = 1b <= 2c" => "Incompatible units: 'c' and 'b'.", - "!a = 1b >= 2c" => "Incompatible units: 'c' and 'b'.", - "a\n :b= 1b * 2c" => "2b*c isn't a valid CSS value.", - "a\n :b= 1b % 2c" => "Cannot modulo by a number with units: 2c.", - "!a = 2px + #ccc" => "Cannot add a number with units (2px) to a color (#cccccc).", - "!a = #ccc + 2px" => "Cannot add a number with units (2px) to a color (#cccccc).", - "& a\n :b c" => ["Base-level rules cannot contain the parent-selector-referencing character '&'.", 1], - "a\n :b\n c" => "Illegal nesting: Only properties may be nested beneath properties.", - "a,\n :b c" => ["Rules can\'t end in commas.", 1], - "a," => "Rules can\'t end in commas.", - "a,\n!b = 1" => ["Rules can\'t end in commas.", 1], - "!a = b\n :c d\n" => "Illegal nesting: Nothing may be nested beneath variable declarations.", - "@import foo.sass" => "File to import not found or unreadable: foo.sass.", - "@import templates/basic\n foo" => "Illegal nesting: Nothing may be nested beneath import directives.", - "foo\n @import templates/basic" => "Import directives may only be used at the root of a document.", - "foo\n @import #{File.dirname(__FILE__)}/templates/basic" => "Import directives may only be used at the root of a document.", - %Q{!foo = "bar" "baz" !} => %Q{Syntax error in '"bar" "baz" !' at character 20.}, - "=foo\n :color red\n.bar\n +bang" => "Undefined mixin 'bang'.", - ".bar\n =foo\n :color red\n" => ["Mixins may only be defined at the root of a document.", 2], - "=foo\n :color red\n.bar\n +foo\n :color red" => "Illegal nesting: Nothing may be nested beneath mixin directives.", - " a\n b: c" => ["Indenting at the beginning of the document is illegal.", 1], - " \n \n\t\n a\n b: c" => ["Indenting at the beginning of the document is illegal.", 4], - "a\n b: c\n b: c" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 3], - "a\n b: c\na\n b: c" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 4], - "a\n\t\tb: c\n\tb: c" => ["Inconsistent indentation: 1 tab was used for indentation, but the rest of the document was indented using 2 tabs.", 3], - "a\n b: c\n b: c" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 3], - "a\n b: c\n a\n d: e" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 4], - "a\n b: c\na\n d: e" => ["The line was indented 2 levels deeper than the previous line.", 4], - "a\n b: c\n a\n d: e" => ["The line was indented 3 levels deeper than the previous line.", 4], - "a\n \tb: c" => ["Indentation can't use both tabs and spaces.", 2], - "=a(" => 'Expected rparen token, was end of text.', - "=a(b)" => 'Expected rparen token, was ident token.', - "=a(,)" => "Expected rparen token, was comma token.", - "=a(!)" => "Syntax error in '(!)' at character 4.", - "=a(!foo bar)" => "Expected rparen token, was ident token.", - "=foo\n bar: baz\n+foo" => ["Properties aren't allowed at the root of a document.", 2], - "a-\#{!b\n c: d" => ["Expected end_interpolation token, was end of text.", 1], - "=a(!b = 1, !c)" => "Required argument !c must come before any optional arguments.", - "=a(!b = 1)\n :a= !b\ndiv\n +a(1,2)" => "Mixin a takes 1 argument but 2 were passed.", - "=a(!b)\n :a= !b\ndiv\n +a" => "Mixin a is missing parameter !b.", - "@else\n a\n b: c" => ["@else must come after @if.", 1], - "@if false\n@else foo" => "Invalid else directive '@else foo': expected 'if '.", - "@if false\n@else if " => "Invalid else directive '@else if': expected 'if '.", - "a\n !b = 12\nc\n d = !b" => 'Undefined variable: "!b".', - "=foo\n !b = 12\nc\n +foo\n d = !b" => 'Undefined variable: "!b".', - '@for !a from "foo" to 1' => '"foo" is not an integer.', - '@for !a from 1 to "2"' => '"2" is not an integer.', - '@for !a from 1 to "foo"' => '"foo" is not an integer.', - '@for !a from 1 to 1.232323' => '1.232 is not an integer.', - '@for !a from 1px to 3em' => "Incompatible units: 'em' and 'px'.", - '@if' => "Invalid if directive '@if': expected expression.", - '@while' => "Invalid while directive '@while': expected expression.", - '@debug' => "Invalid debug directive '@debug': expected expression.", - - # Regression tests - "a\n b:\n c\n d" => ["Illegal nesting: Only properties may be nested beneath properties.", 3], - "& foo\n bar: baz\n blat: bang" => ["Base-level rules cannot contain the parent-selector-referencing character '&'.", 1], - "a\n b: c\n& foo\n bar: baz\n blat: bang" => ["Base-level rules cannot contain the parent-selector-referencing character '&'.", 3], - } - - def teardown - clean_up_sassc - end - - def test_basic_render - renders_correctly "basic", { :style => :compact } - end - - def test_empty_render - assert_equal "", render("") - end - - def test_multiple_calls_to_render - sass = Sass::Engine.new("a\n b: c") - assert_equal sass.render, sass.render - end - - def test_alternate_styles - renders_correctly "expanded", { :style => :expanded } - renders_correctly "compact", { :style => :compact } - renders_correctly "nested", { :style => :nested } - renders_correctly "compressed", { :style => :compressed } - end - - def test_flexible_tabulation - assert_equal("p {\n a: b; }\n p q {\n c: d; }\n", - render("p\n a: b\n q\n c: d\n")) - assert_equal("p {\n a: b; }\n p q {\n c: d; }\n", - render("p\n\ta: b\n\tq\n\t\tc: d\n")) - end - - EXCEPTION_MAP.each do |key, value| - define_method("test_exception (#{key.inspect})") do - line = 10 - begin - silence_warnings {Sass::Engine.new(key, :filename => __FILE__, :line => line).render} - rescue Sass::SyntaxError => err - value = [value] unless value.is_a?(Array) - - assert_equal(value.first.rstrip, err.message, "Line: #{key}") - assert_equal(__FILE__, err.sass_filename) - assert_equal((value[1] || key.split("\n").length) + line - 1, err.sass_line, "Line: #{key}") - assert_match(/#{Regexp.escape(__FILE__)}:[0-9]+/, err.backtrace[0], "Line: #{key}") - else - assert(false, "Exception not raised for\n#{key}") - end - end - end - - def test_exception_line - to_render = < err - assert_equal(5, err.sass_line) - else - assert(false, "Exception not raised for '#{to_render}'!") - end - end - - def test_exception_location - to_render = < __FILE__, :line => (__LINE__-7)).render - rescue Sass::SyntaxError => err - assert_equal(__FILE__, err.sass_filename) - assert_equal((__LINE__-6), err.sass_line) - else - assert(false, "Exception not raised for '#{to_render}'!") - end - end - - def test_imported_exception - [nil, 2].each do |i| - begin - Sass::Engine.new("@import bork#{i}", :load_paths => [File.dirname(__FILE__) + '/templates/']).render - rescue Sass::SyntaxError => err - assert_equal(2, err.sass_line) - assert_match(/bork#{i}\.sass$/, err.sass_filename) - else - assert(false, "Exception not raised for imported template: bork#{i}") - end - end - end - - def test_css_import - assert_equal("@import url(./fonts.css) screen;\n", render("@import url(./fonts.css) screen")) - assert_equal("@import \"./fonts.css\" screen;\n", render("@import \"./fonts.css\" screen")) - end - - def test_sass_import - assert !File.exists?(sassc_path("importee")) - renders_correctly "import", { :style => :compact, :load_paths => [File.dirname(__FILE__) + "/templates"] } - assert File.exists?(sassc_path("importee")) - end - - def test_nonexistent_extensionless_import - assert_warning(< :compact, :cache => false, - :load_paths => [File.dirname(__FILE__) + "/templates"], - }) - assert !File.exists?(sassc_path("importee")) - end - - def test_units - renders_correctly "units" - end - - def test_default_function - assert_equal("foo {\n bar: url(foo.png); }\n", render(%Q{foo\n bar = url("foo.png")\n})); - assert_equal("foo {\n bar: url(); }\n", render("foo\n bar = url()\n")); - end - - def test_string_minus - assert_equal("foo {\n bar: baz-boom-bat; }\n", render(%Q{foo\n bar = "baz"-"boom"-"bat"})) - assert_equal("foo {\n bar: -baz-boom; }\n", render(%Q{foo\n bar = -"baz"-"boom"})) - end - - def test_string_div - assert_equal("foo {\n bar: baz/boom/bat; }\n", render(%Q{foo\n bar = "baz"/"boom"/"bat"})) - assert_equal("foo {\n bar: /baz/boom; }\n", render(%Q{foo\n bar = /"baz"/"boom"})) - end - - def test_basic_multiline_selector - assert_equal("#foo #bar,\n#baz #boom {\n foo: bar; }\n", - render("#foo #bar,\n#baz #boom\n :foo bar")) - assert_equal("#foo #bar,\n#foo #baz {\n foo: bar; }\n", - render("#foo\n #bar,\n #baz\n :foo bar")) - assert_equal("#foo,\n#bar {\n foo: bar; }\n #foo #baz,\n #bar #baz {\n foo: bar; }\n", - render("#foo,\n#bar\n :foo bar\n #baz\n :foo bar")) - assert_equal("#foo #bar, #baz #boom { foo: bar; }\n", - render("#foo #bar,\n#baz #boom\n :foo bar", :style => :compact)) - - assert_equal("#foo #bar,#baz #boom{foo:bar}\n", - render("#foo #bar,\n#baz #boom\n :foo bar", :style => :compressed)) - end - - def test_complex_multiline_selector - renders_correctly "multiline" - end - - def test_colon_only - begin - render("a\n b: c", :property_syntax => :old) - rescue Sass::SyntaxError => e - assert_equal("Illegal property syntax: can't use new syntax when :property_syntax => :old is set.", - e.message) - assert_equal(2, e.sass_line) - else - assert(false, "SyntaxError not raised for :property_syntax => :old") - end - - begin - render("a\n :b c", :property_syntax => :new) - assert_equal(2, e.sass_line) - rescue Sass::SyntaxError => e - assert_equal("Illegal property syntax: can't use old syntax when :property_syntax => :new is set.", - e.message) - else - assert(false, "SyntaxError not raised for :property_syntax => :new") - end - end - - def test_pseudo_elements - assert_equal(< :compact)) - assert_equal("@a {\n b: c;\n}\n", render("@a\n :b c", :style => :expanded)) - assert_equal("@a{b:c}\n", render("@a\n :b c", :style => :compressed)) - - assert_equal("@a {\n b: c;\n d: e; }\n", - render("@a\n :b c\n :d e")) - assert_equal("@a { b: c; d: e; }\n", - render("@a\n :b c\n :d e", :style => :compact)) - assert_equal("@a {\n b: c;\n d: e;\n}\n", - render("@a\n :b c\n :d e", :style => :expanded)) - assert_equal("@a{b:c;d:e}\n", - render("@a\n :b c\n :d e", :style => :compressed)) - - assert_equal("@a {\n #b {\n c: d; } }\n", - render("@a\n #b\n :c d")) - assert_equal("@a { #b { c: d; } }\n", - render("@a\n #b\n :c d", :style => :compact)) - assert_equal("@a {\n #b {\n c: d;\n }\n}\n", - render("@a\n #b\n :c d", :style => :expanded)) - assert_equal("@a{#b{c:d}}\n", - render("@a\n #b\n :c d", :style => :compressed)) - - assert_equal("@a {\n #b {\n a: b; }\n #b #c {\n d: e; } }\n", - render("@a\n #b\n :a b\n #c\n :d e")) - assert_equal("@a { #b { a: b; }\n #b #c { d: e; } }\n", - render("@a\n #b\n :a b\n #c\n :d e", :style => :compact)) - assert_equal("@a {\n #b {\n a: b;\n }\n #b #c {\n d: e;\n }\n}\n", - render("@a\n #b\n :a b\n #c\n :d e", :style => :expanded)) - assert_equal("@a{#b{a:b}#b #c{d:e}}\n", - render("@a\n #b\n :a b\n #c\n :d e", :style => :compressed)) - - assert_equal("@a {\n #foo,\n #bar {\n b: c; } }\n", - render("@a\n #foo, \n #bar\n :b c")) - assert_equal("@a { #foo, #bar { b: c; } }\n", - render("@a\n #foo, \n #bar\n :b c", :style => :compact)) - assert_equal("@a {\n #foo,\n #bar {\n b: c;\n }\n}\n", - render("@a\n #foo, \n #bar\n :b c", :style => :expanded)) - assert_equal("@a{#foo,#bar{b:c}}\n", - render("@a\n #foo, \n #bar\n :b c", :style => :compressed)) - - to_render = < :compact)) - - assert_equal("@a{b:c;#d{e:f}g:h}\n", render(to_render, :style => :compressed)) - end - - def test_line_annotations - assert_equal(< true, :style => :compact)) -/* line 2, test_line_annotations_inline.sass */ -foo bar { foo: bar; } -/* line 5, test_line_annotations_inline.sass */ -foo baz { blip: blop; } - -/* line 9, test_line_annotations_inline.sass */ -floodle { flop: blop; } - -/* line 18, test_line_annotations_inline.sass */ -bup { mix: on; } -/* line 15, test_line_annotations_inline.sass */ -bup mixin { moop: mup; } - -/* line 22, test_line_annotations_inline.sass */ -bip hop, skip hop { a: b; } -CSS -foo - bar - foo: bar - - baz - blip: blop - - -floodle - - flop: blop - -=mxn - mix: on - mixin - moop: mup - -bup - +mxn - -bip, skip - hop - a: b -SASS - end - - def test_line_annotations_with_filename - renders_correctly "line_numbers", :line_comments => true, :load_paths => [File.dirname(__FILE__) + "/templates"] - end - - def test_empty_first_line - assert_equal("#a {\n b: c; }\n", render("#a\n\n b: c")) - end - - def test_escaped_rule - assert_equal(":focus {\n a: b; }\n", render("\\:focus\n a: b")) - assert_equal("a {\n b: c; }\n a :focus {\n d: e; }\n", render("\\a\n b: c\n \\:focus\n d: e")) - end - - def test_cr_newline - assert_equal("foo {\n a: b;\n c: d;\n e: f; }\n", render("foo\r a: b\r\n c: d\n\r e: f")) - end - - def test_or_eq - assert_equal("foo {\n a: b; }\n", render(%Q{!foo = "b"\n!foo ||= "c"\nfoo\n a = !foo})) - assert_equal("foo {\n a: b; }\n", render(%Q{!foo ||= "b"\nfoo\n a = !foo})) - end - - def test_mixins - renders_correctly "mixins", { :style => :expanded } - end - - def test_mixins_dont_interfere_with_sibling_combinator - assert_equal("foo + bar {\n a: b; }\nfoo + baz {\n c: d; }\n", - render("foo\n +\n bar\n a: b\n baz\n c: d")) - end - - def test_mixin_args - assert_equal("blat {\n baz: hi; }\n", render(< nil)} -WARNING on line 1: -Selector "foo bar" doesn't have any properties and will not be rendered. -END - end - - def test_root_level_pseudo_class_with_new_properties - assert_equal(< :new)) -:focus { - outline: 0; } -CSS -:focus - outline: 0 -SASS - end - - def test_pseudo_class_with_new_properties - assert_equal(< :new)) -p :focus { - outline: 0; } -CSS -p - :focus - outline: 0 -SASS - end - - def test_nil_option - assert_equal(< nil)) -foo { - a: b; } -CSS -foo - a: b -SASS - end - - # Regression tests - - def test_parens_in_mixins - assert_equal(< :compressed)) -.box{border-style:solid} -RESULT -.box - :border - /*:color black - :style solid -SOURCE - end - - def test_compressed_comment_beneath_directive - assert_equal(< :compressed)) -@foo{a:b} -RESULT -@foo - a: b - /*b: c -SOURCE - end - - def test_comment_with_crazy_indentation - assert_equal(< e - assert_equal(message, e.message) - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_results/more1.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_results/more1.css deleted file mode 100644 index b0d1182f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_results/more1.css +++ /dev/null @@ -1,9 +0,0 @@ -body { font: Arial; background: blue; } - -#page { width: 700px; height: 100; } -#page #header { height: 300px; } -#page #header h1 { font-size: 50px; color: blue; } - -#content.user.show #container.top #column.left { width: 100px; } -#content.user.show #container.top #column.right { width: 600px; } -#content.user.show #container.bottom { background: brown; } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_results/more1_with_line_comments.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_results/more1_with_line_comments.css deleted file mode 100644 index f31dbca2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_results/more1_with_line_comments.css +++ /dev/null @@ -1,26 +0,0 @@ -/* line 3, ../more_templates/more1.sass */ -body { - font: Arial; - background: blue; } - -/* line 7, ../more_templates/more1.sass */ -#page { - width: 700px; - height: 100; } - /* line 10, ../more_templates/more1.sass */ - #page #header { - height: 300px; } - /* line 12, ../more_templates/more1.sass */ - #page #header h1 { - font-size: 50px; - color: blue; } - -/* line 18, ../more_templates/more1.sass */ -#content.user.show #container.top #column.left { - width: 100px; } -/* line 20, ../more_templates/more1.sass */ -#content.user.show #container.top #column.right { - width: 600px; } -/* line 22, ../more_templates/more1.sass */ -#content.user.show #container.bottom { - background: brown; } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_results/more_import.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_results/more_import.css deleted file mode 100644 index 97c4797e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_results/more_import.css +++ /dev/null @@ -1,29 +0,0 @@ -imported { otherconst: hello; myconst: goodbye; pre-mixin: here; } - -body { font: Arial; background: blue; } - -#page { width: 700px; height: 100; } -#page #header { height: 300px; } -#page #header h1 { font-size: 50px; color: blue; } - -#content.user.show #container.top #column.left { width: 100px; } -#content.user.show #container.top #column.right { width: 600px; } -#content.user.show #container.bottom { background: brown; } - -midrule { inthe: middle; } - -body { font: Arial; background: blue; } - -#page { width: 700px; height: 100; } -#page #header { height: 300px; } -#page #header h1 { font-size: 50px; color: blue; } - -#content.user.show #container.top #column.left { width: 100px; } -#content.user.show #container.top #column.right { width: 600px; } -#content.user.show #container.bottom { background: brown; } - -@import url(basic.css); -@import url(../results/complex.css); -#foo { background-color: #baf; } - -nonimported { myconst: hello; otherconst: goodbye; post-mixin: here; } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_templates/_more_partial.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_templates/_more_partial.sass deleted file mode 100644 index bef627d2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_templates/_more_partial.sass +++ /dev/null @@ -1,2 +0,0 @@ -#foo - :background-color #baf diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_templates/more1.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_templates/more1.sass deleted file mode 100644 index 71117bf5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_templates/more1.sass +++ /dev/null @@ -1,23 +0,0 @@ - - -body - :font Arial - :background blue - -#page - :width 700px - :height 100 - #header - :height 300px - h1 - :font-size 50px - :color blue - -#content.user.show - #container.top - #column.left - :width 100px - #column.right - :width 600px - #container.bottom - :background brown \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_templates/more_import.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_templates/more_import.sass deleted file mode 100644 index 95c2823f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/more_templates/more_import.sass +++ /dev/null @@ -1,11 +0,0 @@ -!preconst = "hello" - -=premixin - pre-mixin: here - -@import importee, basic, basic.css, ../results/complex.css, more_partial - -nonimported - :myconst = !preconst - :otherconst = !postconst - +postmixin diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/plugin_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/plugin_test.rb deleted file mode 100644 index c1553a8f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/plugin_test.rb +++ /dev/null @@ -1,232 +0,0 @@ -#!/usr/bin/env ruby -require File.dirname(__FILE__) + '/../test_helper' -require 'sass/plugin' -require 'fileutils' - -class SassPluginTest < Test::Unit::TestCase - @@templates = %w{ - complex script parent_ref import alt - subdir/subdir subdir/nested_subdir/nested_subdir - } - - def setup - FileUtils.mkdir tempfile_loc - FileUtils.mkdir tempfile_loc(nil,"more_") - set_plugin_opts - Sass::Plugin.update_stylesheets - end - - def teardown - clean_up_sassc - FileUtils.rm_r tempfile_loc - FileUtils.rm_r tempfile_loc(nil,"more_") - end - - @@templates.each do |name| - define_method("test_template_renders_correctly (#{name})") do - assert_renders_correctly(name) - end - end - - def test_no_update - File.delete(tempfile_loc('basic')) - assert Sass::Plugin.stylesheet_needs_update?('basic', template_loc, tempfile_loc) - Sass::Plugin.update_stylesheets - assert_stylesheet_updated 'basic' - end - - def test_update_needed_when_modified - sleep 1 - FileUtils.touch(template_loc('basic')) - assert Sass::Plugin.stylesheet_needs_update?('basic', template_loc, tempfile_loc) - Sass::Plugin.update_stylesheets - assert_stylesheet_updated 'basic' - end - - def test_update_needed_when_dependency_modified - sleep 1 - FileUtils.touch(template_loc('basic')) - assert Sass::Plugin.stylesheet_needs_update?('import', template_loc, tempfile_loc) - Sass::Plugin.update_stylesheets - assert_stylesheet_updated 'basic' - end - - def test_full_exception_handling - File.delete(tempfile_loc('bork')) - Sass::Plugin.update_stylesheets - File.open(tempfile_loc('bork')) do |file| - assert_equal("/*\nSass::SyntaxError: Undefined variable: \"!bork\".\non line 2 of #{template_loc('bork')}\n\n1: bork\n2: :bork= !bork", file.read.split("\n")[0...6].join("\n")) - end - File.delete(tempfile_loc('bork')) - end - - def test_nonfull_exception_handling - old_full_exception = Sass::Plugin.options[:full_exception] - Sass::Plugin.options[:full_exception] = false - - File.delete(tempfile_loc('bork')) - assert_raise(Sass::SyntaxError) {Sass::Plugin.update_stylesheets} - ensure - Sass::Plugin.options[:full_exception] = old_full_exception - end - - def test_two_template_directories - set_plugin_opts :template_location => { - template_loc => tempfile_loc, - template_loc(nil,'more_') => tempfile_loc(nil,'more_') - } - Sass::Plugin.update_stylesheets - ['more1', 'more_import'].each { |name| assert_renders_correctly(name, :prefix => 'more_') } - end - - def test_two_template_directories_with_line_annotations - set_plugin_opts :line_comments => true, - :style => :nested, - :template_location => { - template_loc => tempfile_loc, - template_loc(nil,'more_') => tempfile_loc(nil,'more_') - } - Sass::Plugin.update_stylesheets - assert_renders_correctly('more1_with_line_comments', 'more1', :prefix => 'more_') - end - - def test_merb_update - begin - require 'merb' - rescue LoadError - puts "\nmerb couldn't be loaded, skipping a test" - return - end - - require 'sass/plugin/merb' - if defined?(MerbHandler) - MerbHandler.send(:define_method, :process_without_sass) { |*args| } - else - Merb::Rack::Application.send(:define_method, :call_without_sass) { |*args| } - end - - set_plugin_opts - - File.delete(tempfile_loc('basic')) - assert Sass::Plugin.stylesheet_needs_update?('basic', template_loc, tempfile_loc) - - if defined?(MerbHandler) - MerbHandler.new('.').process nil, nil - else - Merb::Rack::Application.new.call(::Rack::MockRequest.env_for('/')) - end - - assert_stylesheet_updated 'basic' - end - - def test_doesnt_render_partials - assert !File.exists?(tempfile_loc('_partial')) - end - - ## Regression - - def test_cached_dependencies_update - FileUtils.mv(template_loc("basic"), template_loc("basic", "more_")) - set_plugin_opts :load_paths => [result_loc, template_loc(nil, "more_")] - - sleep 1 - FileUtils.touch(template_loc("basic", "more_")) - assert Sass::Plugin.stylesheet_needs_update?("import", template_loc, tempfile_loc) - Sass::Plugin.update_stylesheets - assert_renders_correctly("import") - ensure - FileUtils.mv(template_loc("basic", "more_"), template_loc("basic")) - end - - private - - def assert_renders_correctly(*arguments) - options = arguments.last.is_a?(Hash) ? arguments.pop : {} - prefix = options[:prefix] - result_name = arguments.shift - tempfile_name = arguments.shift || result_name - expected_lines = File.read(result_loc(result_name, prefix)).split("\n") - actual_lines = File.read(tempfile_loc(tempfile_name, prefix)).split("\n") - - if actual_lines.first == "/*" && expected_lines.first != "/*" - assert(false, actual_lines[0..actual_lines.enum_with_index.find {|l, i| l == "*/"}.last].join("\n")) - end - - expected_lines.zip(actual_lines).each_with_index do |pair, line| - message = "template: #{result_name}\nline: #{line + 1}" - assert_equal(pair.first, pair.last, message) - end - if expected_lines.size < actual_lines.size - assert(false, "#{actual_lines.size - expected_lines.size} Trailing lines found in #{tempfile_name}.css: #{actual_lines[expected_lines.size..-1].join('\n')}") - end - end - - def assert_stylesheet_updated(name) - assert !Sass::Plugin.stylesheet_needs_update?(name, template_loc, tempfile_loc) - - # Make sure it isn't an exception - expected_lines = File.read(result_loc(name)).split("\n") - actual_lines = File.read(tempfile_loc(name)).split("\n") - if actual_lines.first == "/*" && expected_lines.first != "/*" - assert(false, actual_lines[0..actual_lines.enum_with_index.find {|l, i| l == "*/"}.last].join("\n")) - end - end - - def template_loc(name = nil, prefix = nil) - if name - absolutize "#{prefix}templates/#{name}.sass" - else - absolutize "#{prefix}templates" - end - end - - def tempfile_loc(name = nil, prefix = nil) - if name - absolutize "#{prefix}tmp/#{name}.css" - else - absolutize "#{prefix}tmp" - end - end - - def result_loc(name = nil, prefix = nil) - if name - absolutize "#{prefix}results/#{name}.css" - else - absolutize "#{prefix}results" - end - end - - def absolutize(file) - "#{File.dirname(__FILE__)}/#{file}" - end - - def set_plugin_opts(overrides = {}) - Sass::Plugin.options = { - :template_location => template_loc, - :css_location => tempfile_loc, - :style => :compact, - :load_paths => [result_loc], - :always_update => true, - }.merge(overrides) - end - - def wait_a_tick - time = Time.now - loop {break if Time.now.sec != time.sec} - end -end - -module Sass::Plugin - class << self - public :stylesheet_needs_update? - end -end - -class Sass::Engine - alias_method :old_render, :render - - def render - raise "bork bork bork!" if @template[0] == "{bork now!}" - old_render - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/alt.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/alt.css deleted file mode 100644 index 8484343e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/alt.css +++ /dev/null @@ -1,4 +0,0 @@ -h1 { float: left; width: 274px; height: 75px; margin: 0; background-repeat: no-repeat; background-image: none; } -h1 a:hover, h1 a:visited { color: green; } -h1 b:hover { color: red; background-color: green; } -h1 const { nosp: 3; sp: 3; } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/basic.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/basic.css deleted file mode 100644 index b0d1182f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/basic.css +++ /dev/null @@ -1,9 +0,0 @@ -body { font: Arial; background: blue; } - -#page { width: 700px; height: 100; } -#page #header { height: 300px; } -#page #header h1 { font-size: 50px; color: blue; } - -#content.user.show #container.top #column.left { width: 100px; } -#content.user.show #container.top #column.right { width: 600px; } -#content.user.show #container.bottom { background: brown; } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/compact.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/compact.css deleted file mode 100644 index 6a4dcb41..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/compact.css +++ /dev/null @@ -1,5 +0,0 @@ -#main { width: 15em; color: #0000ff; } -#main p { border-style: dotted; /* Nested comment More nested stuff */ border-width: 2px; } -#main .cool { width: 100px; } - -#left { font-size: 2em; font-weight: bold; float: left; } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/complex.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/complex.css deleted file mode 100644 index 6a0fee6b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/complex.css +++ /dev/null @@ -1,87 +0,0 @@ -body { margin: 0; font: 0.85em "Lucida Grande", "Trebuchet MS", Verdana, sans-serif; color: #fff; background: url(/images/global_bg.gif); } - -#page { width: 900px; margin: 0 auto; background: #440008; border-top-width: 5px; border-top-style: solid; border-top-color: #ff8500; } - -#header { height: 75px; padding: 0; } -#header h1 { float: left; width: 274px; height: 75px; margin: 0; background-image: url(/images/global_logo.gif); /* Crazy nested comment */ background-repeat: no-repeat; text-indent: -9999px; } -#header .status { float: right; padding-top: .5em; padding-left: .5em; padding-right: .5em; padding-bottom: 0; } -#header .status p { float: left; margin-top: 0; margin-right: 0.5em; margin-bottom: 0; margin-left: 0; } -#header .status ul { float: left; margin: 0; padding: 0; } -#header .status li { list-style-type: none; display: inline; margin: 0 5px; } -#header .status a:link, #header .status a:visited { color: #ff8500; text-decoration: none; } -#header .status a:hover { text-decoration: underline; } -#header .search { float: right; clear: right; margin: 12px 0 0 0; } -#header .search form { margin: 0; } -#header .search input { margin: 0 3px 0 0; padding: 2px; border: none; } - -#menu { clear: both; text-align: right; height: 20px; border-bottom: 5px solid #006b95; background: #00a4e4; } -#menu .contests ul { margin: 0 5px 0 0; padding: 0; } -#menu .contests ul li { list-style-type: none; margin: 0 5px; padding: 5px 5px 0 5px; display: inline; font-size: 1.1em; color: #fff; background: #00a4e4; } -#menu .contests ul li / This rule isn't a comment! { red: green; } -#menu .contests a:link, #menu .contests a:visited { color: #fff; text-decoration: none; font-weight: bold; } -#menu .contests a:hover { text-decoration: underline; } - -#content { clear: both; } -#content .container { clear: both; } -#content .container .column { float: left; } -#content .container .column .right { float: right; } -#content a:link, #content a:visited { color: #93d700; text-decoration: none; } -#content a:hover { text-decoration: underline; } - -#content p, #content div { width: 40em; } -#content p li, #content p dt, #content p dd, #content div li, #content div dt, #content div dd { color: #ddffdd; background-color: #4792bb; } -#content .container.video .column.left { width: 200px; } -#content .container.video .column.left .box { margin-top: 10px; } -#content .container.video .column.left .box p { margin: 0 1em auto 1em; } -#content .container.video .column.left .box.participants img { float: left; margin: 0 1em auto 1em; border: 1px solid #6e000d; border-style: solid; } -#content .container.video .column.left .box.participants h2 { margin: 0 0 10px 0; padding: 0.5em; /* The background image is a gif! */ background: #6e000d url(/images/hdr_participant.gif) 2px 2px no-repeat; /* Okay check this out Multiline comments Wow dude I mean seriously, WOW */ text-indent: -9999px; border-top-width: 5px; border-top-style: solid; border-top-color: #a20013; border-right-width: 1px; border-right-style: dotted; } -#content .container.video .column.middle { width: 500px; } -#content .container.video .column.right { width: 200px; } -#content .container.video .column.right .box { margin-top: 0; } -#content .container.video .column.right .box p { margin: 0 1em auto 1em; } -#content .container.video .column p { margin-top: 0; } - -#content.contests .container.information .column.right .box { margin: 1em 0; } -#content.contests .container.information .column.right .box.videos .thumbnail img { width: 200px; height: 150px; margin-bottom: 5px; } -#content.contests .container.information .column.right .box.videos a:link, #content.contests .container.information .column.right .box.videos a:visited { color: #93d700; text-decoration: none; } -#content.contests .container.information .column.right .box.videos a:hover { text-decoration: underline; } -#content.contests .container.information .column.right .box.votes a { display: block; width: 200px; height: 60px; margin: 15px 0; background: url(/images/btn_votenow.gif) no-repeat; text-indent: -9999px; outline: none; border: none; } -#content.contests .container.information .column.right .box.votes h2 { margin: 52px 0 10px 0; padding: 0.5em; background: #6e000d url(/images/hdr_videostats.gif) 2px 2px no-repeat; text-indent: -9999px; border-top: 5px solid #a20013; } - -#content.contests .container.video .box.videos h2 { margin: 0; padding: 0.5em; background: #6e000d url(/images/hdr_newestclips.gif) 2px 2px no-repeat; text-indent: -9999px; border-top: 5px solid #a20013; } -#content.contests .container.video .box.videos table { width: 100; } -#content.contests .container.video .box.videos table td { padding: 1em; width: 25; vertical-align: top; } -#content.contests .container.video .box.videos table td p { margin: 0 0 5px 0; } -#content.contests .container.video .box.videos table td a:link, #content.contests .container.video .box.videos table td a:visited { color: #93d700; text-decoration: none; } -#content.contests .container.video .box.videos table td a:hover { text-decoration: underline; } -#content.contests .container.video .box.videos .thumbnail { float: left; } -#content.contests .container.video .box.videos .thumbnail img { width: 80px; height: 60px; margin: 0 10px 0 0; border: 1px solid #6e000d; } - -#content .container.comments .column { margin-top: 15px; } -#content .container.comments .column.left { width: 600px; } -#content .container.comments .column.left .box ol { margin: 0; padding: 0; } -#content .container.comments .column.left .box li { list-style-type: none; padding: 10px; margin: 0 0 1em 0; background: #6e000d; border-top: 5px solid #a20013; } -#content .container.comments .column.left .box li div { margin-bottom: 1em; } -#content .container.comments .column.left .box li ul { text-align: right; } -#content .container.comments .column.left .box li ul li { display: inline; border: none; padding: 0; } -#content .container.comments .column.right { width: 290px; padding-left: 10px; } -#content .container.comments .column.right h2 { margin: 0; padding: 0.5em; background: #6e000d url(/images/hdr_addcomment.gif) 2px 2px no-repeat; text-indent: -9999px; border-top: 5px solid #a20013; } -#content .container.comments .column.right .box textarea { width: 290px; height: 100px; border: none; } - -#footer { margin-top: 10px; padding: 1.2em 1.5em; background: #ff8500; } -#footer ul { margin: 0; padding: 0; list-style-type: none; } -#footer ul li { display: inline; margin: 0 0.5em; color: #440008; } -#footer ul.links { float: left; } -#footer ul.links a:link, #footer ul.links a:visited { color: #440008; text-decoration: none; } -#footer ul.links a:hover { text-decoration: underline; } -#footer ul.copyright { float: right; } - -.clear { clear: both; } - -.centered { text-align: center; } - -img { border: none; } - -button.short { width: 60px; height: 22px; padding: 0 0 2px 0; color: #fff; border: none; background: url(/images/btn_short.gif) no-repeat; } - -table { border-collapse: collapse; } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/compressed.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/compressed.css deleted file mode 100644 index c8190b3c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/compressed.css +++ /dev/null @@ -1 +0,0 @@ -#main{width:15em;color:#0000ff}#main p{border-style:dotted;border-width:2px}#main .cool{width:100px}#left{font-size:2em;font-weight:bold;float:left} diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/expanded.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/expanded.css deleted file mode 100644 index 05f91fa5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/expanded.css +++ /dev/null @@ -1,19 +0,0 @@ -#main { - width: 15em; - color: #0000ff; -} -#main p { - border-style: dotted; - /* Nested comment - * More nested stuff */ - border-width: 2px; -} -#main .cool { - width: 100px; -} - -#left { - font-size: 2em; - font-weight: bold; - float: left; -} diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/import.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/import.css deleted file mode 100644 index 97c4797e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/import.css +++ /dev/null @@ -1,29 +0,0 @@ -imported { otherconst: hello; myconst: goodbye; pre-mixin: here; } - -body { font: Arial; background: blue; } - -#page { width: 700px; height: 100; } -#page #header { height: 300px; } -#page #header h1 { font-size: 50px; color: blue; } - -#content.user.show #container.top #column.left { width: 100px; } -#content.user.show #container.top #column.right { width: 600px; } -#content.user.show #container.bottom { background: brown; } - -midrule { inthe: middle; } - -body { font: Arial; background: blue; } - -#page { width: 700px; height: 100; } -#page #header { height: 300px; } -#page #header h1 { font-size: 50px; color: blue; } - -#content.user.show #container.top #column.left { width: 100px; } -#content.user.show #container.top #column.right { width: 600px; } -#content.user.show #container.bottom { background: brown; } - -@import url(basic.css); -@import url(../results/complex.css); -#foo { background-color: #baf; } - -nonimported { myconst: hello; otherconst: goodbye; post-mixin: here; } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/line_numbers.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/line_numbers.css deleted file mode 100644 index 3c657f93..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/line_numbers.css +++ /dev/null @@ -1,49 +0,0 @@ -/* line 1, ../templates/line_numbers.sass */ -foo { - bar: baz; } - -/* line 6, ../templates/importee.sass */ -imported { - otherconst: 12; - myconst: goodbye; } - /* line 5, ../templates/line_numbers.sass */ - imported squggle { - blat: bang; } - -/* line 3, ../templates/basic.sass */ -body { - font: Arial; - background: blue; } - -/* line 7, ../templates/basic.sass */ -#page { - width: 700px; - height: 100; } - /* line 10, ../templates/basic.sass */ - #page #header { - height: 300px; } - /* line 12, ../templates/basic.sass */ - #page #header h1 { - font-size: 50px; - color: blue; } - -/* line 18, ../templates/basic.sass */ -#content.user.show #container.top #column.left { - width: 100px; } -/* line 20, ../templates/basic.sass */ -#content.user.show #container.top #column.right { - width: 600px; } -/* line 22, ../templates/basic.sass */ -#content.user.show #container.bottom { - background: brown; } - -/* line 13, ../templates/importee.sass */ -midrule { - inthe: middle; } - -/* line 12, ../templates/line_numbers.sass */ -umph { - foo: bar; } - /* line 18, ../templates/importee.sass */ - umph baz { - blat: bang; } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/mixins.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/mixins.css deleted file mode 100644 index 1d6f162b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/mixins.css +++ /dev/null @@ -1,95 +0,0 @@ -#main { - width: 15em; - color: #0000ff; -} -#main p { - border-top-width: 2px; - border-top-color: #ffcc00; - border-left-width: 1px; - border-left-color: #000; - -moz-border-radius: 10px; - border-style: dotted; - border-width: 2px; -} -#main .cool { - width: 100px; -} - -#left { - border-top-width: 2px; - border-top-color: #ffcc00; - border-left-width: 1px; - border-left-color: #000; - -moz-border-radius: 10px; - font-size: 2em; - font-weight: bold; - float: left; -} - -#right { - border-top-width: 2px; - border-top-color: #ffcc00; - border-left-width: 1px; - border-left-color: #000; - -moz-border-radius: 10px; - color: #f00; - font-size: 20px; - float: right; -} - -.bordered { - border-top-width: 2px; - border-top-color: #ffcc00; - border-left-width: 1px; - border-left-color: #000; - -moz-border-radius: 10px; -} - -.complex { - color: #f00; - font-size: 20px; - text-decoration: none; -} -.complex:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} -* html .complex { - height: 1px; - color: #f00; - font-size: 20px; -} - -.more-complex { - color: #f00; - font-size: 20px; - text-decoration: none; - display: inline; - -webkit-nonsense-top-right: 1px; - -webkit-nonsense-bottom-left: 1px; -} -.more-complex:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} -* html .more-complex { - height: 1px; - color: #f00; - font-size: 20px; -} -.more-complex a:hover { - text-decoration: underline; - color: #f00; - font-size: 20px; - border-top-width: 2px; - border-top-color: #ffcc00; - border-left-width: 1px; - border-left-color: #000; - -moz-border-radius: 10px; -} diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/multiline.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/multiline.css deleted file mode 100644 index 8fa95355..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/multiline.css +++ /dev/null @@ -1,24 +0,0 @@ -#main, -#header { - height: 50px; } - #main div, - #header div { - width: 100px; } - #main div a span, - #main div em span, - #header div a span, - #header div em span { - color: pink; } - -#one div.nested, -#one span.nested, -#one p.nested, -#two div.nested, -#two span.nested, -#two p.nested, -#three div.nested, -#three span.nested, -#three p.nested { - font-weight: bold; - border-color: red; - display: block; } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/nested.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/nested.css deleted file mode 100644 index 061e6c1d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/nested.css +++ /dev/null @@ -1,22 +0,0 @@ -#main { - width: 15em; - color: #0000ff; } - #main p { - border-style: dotted; - /* Nested comment - * More nested stuff */ - border-width: 2px; } - #main .cool { - width: 100px; } - -#left { - font-size: 2em; - font-weight: bold; - float: left; } - -#right .header { - border-style: solid; } -#right .body { - border-style: dotted; } -#right .footer { - border-style: dashed; } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/parent_ref.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/parent_ref.css deleted file mode 100644 index c502a232..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/parent_ref.css +++ /dev/null @@ -1,13 +0,0 @@ -a { color: #000; } -a:hover { color: #f00; } - -p, div { width: 100em; } -p foo, div foo { width: 10em; } -p:hover, p bar, div:hover, div bar { height: 20em; } - -#cool { border-style: solid; border-width: 2em; } -.ie7 #cool, .ie6 #cool { content: string(Totally not cool.); } -.firefox #cool { content: string(Quite cool.); } - -.wow, .snazzy { font-family: fantasy; } -.wow:hover, .wow:visited, .snazzy:hover, .snazzy:visited { font-weight: bold; } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/script.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/script.css deleted file mode 100644 index c7ff9fb7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/script.css +++ /dev/null @@ -1,16 +0,0 @@ -#main { content: Hello!; qstr: Quo"ted"!; hstr: Hyph-en!; width: 30em; background-color: #000; color: #ffffaa; short-color: #112233; named-color: olive; con: foo bar(9 hi there boom); con2: noquo quo; } -#main #sidebar { background-color: #00ff98; num-normal: 10; num-dec: 10.2; num-dec0: 99; num-neg: -10; esc: 10 +12; many: 6; order: 7; complex: #4c9db1hi16; } - -#plus { num-num: 7; num-num-un: 25em; num-num-un2: 23em; num-num-neg: 9.87; num-str: 100px; num-col: #b7b7b7; num-perc: 31%; str-str: hi there; str-str2: hi there; str-col: 14em solid #112233; str-num: times: 13; col-num: #ff7b9d; col-col: #5173ff; } - -#minus { num-num: 900; col-num: #f9f9f4; col-col: #000035; unary-num: -1; unary-const: 10; unary-paren: -11; unary-two: 12; unary-many: 12; unary-crazy: -15; } - -#times { num-num: 7; num-col: #7496b8; col-num: #092345; col-col: #243648; } - -#div { num-num: 3.333; num-num2: 3.333; col-num: #092345; col-col: #0b0d0f; comp: 1px; } - -#mod { num-num: 2; col-col: #0f0e05; col-num: #020001; } - -#const { escaped-quote: !foo; default: Hello! !important; } - -#regression { a: 4; } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/subdir/nested_subdir/nested_subdir.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/subdir/nested_subdir/nested_subdir.css deleted file mode 100644 index 7aadcfe6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/subdir/nested_subdir/nested_subdir.css +++ /dev/null @@ -1 +0,0 @@ -#pi { width: 314px; } \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/subdir/subdir.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/subdir/subdir.css deleted file mode 100644 index e4047289..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/subdir/subdir.css +++ /dev/null @@ -1,3 +0,0 @@ -#nested { relative: true; } - -#subdir { font-size: 20px; font-weight: bold; } \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/units.css b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/units.css deleted file mode 100644 index cb566d58..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/results/units.css +++ /dev/null @@ -1,11 +0,0 @@ -b { - foo: 5px; - bar: 24px; - baz: 66.667%; - many-units: 32em; - mm: 15mm; - pc: 2pc; - pt: -72pt; - inches: 2in; - more-inches: 3.5in; - mixed: 6px; } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/script_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/script_test.rb deleted file mode 100644 index 463a13f4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/script_test.rb +++ /dev/null @@ -1,267 +0,0 @@ -#!/usr/bin/env ruby -require File.dirname(__FILE__) + '/../test_helper' -require 'sass/engine' - -class SassScriptTest < Test::Unit::TestCase - include Sass::Script - - def test_color_checks_input - assert_raise(Sass::SyntaxError, "Color values must be between 0 and 255") {Color.new([1, 2, -1])} - assert_raise(Sass::SyntaxError, "Color values must be between 0 and 255") {Color.new([256, 2, 3])} - end - - def test_string_escapes - assert_equal '"', resolve("\"\\\"\"") - assert_equal "\\", resolve("\"\\\\\"") - assert_equal "\\02fa", resolve("\"\\02fa\"") - end - - def test_color_names - assert_equal "white", resolve("white") - assert_equal "white", resolve("#ffffff") - assert_equal "#fffffe", resolve("white - #000001") - end - - def test_implicit_strings - silence_warnings do - assert_equal Sass::Script::String.new("foo"), eval("foo") - assert_equal Sass::Script::String.new("foo bar"), eval("foo bar") - assert_equal Sass::Script::String.new("foo/bar"), eval("foo/bar") - end - end - - def test_interpolation - assert_equal "foo bar, baz bang", resolve('"foo #{"bar"}, #{"baz"} bang"') - assert_equal "foo bar baz bang", resolve('"foo #{"#{"ba" + "r"} baz"} bang"') - assert_equal 'foo #{bar baz} bang', resolve('"foo \#{#{"ba" + "r"} baz} bang"') - assert_equal 'foo #{baz bang', resolve('"foo #{"\#{" + "baz"} bang"') - end - - def test_rule_interpolation - assert_equal(< 2) - end - assert_equal "public_instance_methods()", resolve("public_instance_methods()") - end - - def test_hyphen_warning - a = Sass::Script::String.new("a") - b = Sass::Script::String.new("b") - assert_warning(< a, "b" => b))} -DEPRECATION WARNING: -On line 1, character 3 of 'test_hyphen_warning_inline.sass' -- will be allowed as part of variable names in version 2.4. -Please add whitespace to separate it from the previous token. -WARN - - assert_warning(< 2") - assert_equal "false", resolve("2 > 2") - assert_equal "true", resolve("3 > 2") - assert_equal "false", resolve("1 >= 2") - assert_equal "true", resolve("2 >= 2") - assert_equal "true", resolve("3 >= 2") - assert_equal "true", resolve("1 < 2") - assert_equal "false", resolve("2 < 2") - assert_equal "false", resolve("3 < 2") - assert_equal "true", resolve("1 <= 2") - assert_equal "true", resolve("2 <= 2") - assert_equal "false", resolve("3 <= 2") - end - - def test_equals - assert_equal("true", resolve('"foo" == !foo', {}, - env("foo" => Sass::Script::String.new("foo")))) - assert_equal "true", resolve("1 == 1.0") - assert_equal "true", resolve("false != true") - assert_equal "false", resolve("1em == 1px") - assert_equal "false", resolve("12 != 12") - end - - def test_operation_precedence - assert_equal "false true", resolve("true and false false or true") - assert_equal "true", resolve("false and true or true and true") - assert_equal "true", resolve("1 == 2 or 3 == 3") - assert_equal "true", resolve("1 < 2 == 3 >= 3") - assert_equal "true", resolve("1 + 3 > 4 - 2") - assert_equal "11", resolve("1 + 2 * 3 + 4") - end - - def test_functions - assert_equal "#80ff80", resolve("hsl(120, 100%, 75%)") - assert_equal "#81ff81", resolve("hsl(120, 100%, 75%) + #010001") - end - - def test_operator_unit_conversion - assert_equal "1.1cm", resolve("1cm + 1mm") - assert_equal "true", resolve("2mm < 1cm") - assert_equal "true", resolve("10mm == 1cm") - assert_equal "true", resolve("1 == 1cm") - assert_equal "true", resolve("1.1cm == 11mm") - end - - # Regression tests - - def test_interpolation_after_hash - assert_equal "#2", resolve('"##{1 + 1}"') - end - - private - - def resolve(str, opts = {}, environment = env) - munge_filename opts - eval(str, opts, environment).to_s - end - - def eval(str, opts = {}, environment = env) - munge_filename opts - Sass::Script.parse(str, opts[:line] || 1, - opts[:offset] || 0, opts[:filename]).perform(environment) - end - - def render(sass, options = {}) - munge_filename options - Sass::Engine.new(sass, options).render - end - - def env(hash = {}) - env = Sass::Environment.new - hash.each {|k, v| env.set_var(k, v)} - env - end - - def test_number_printing - assert_equal "1", eval("1") - assert_equal "1", eval("1.0") - assert_equal "1.121", eval("1.1214") - assert_equal "1.122", eval("1.1215") - assert_equal "Infinity", eval("1.0/0.0") - assert_equal "-Infinity", eval("-1.0/0.0") - assert_equal "NaN", eval("0.0/0.0") - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/_partial.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/_partial.sass deleted file mode 100644 index bef627d2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/_partial.sass +++ /dev/null @@ -1,2 +0,0 @@ -#foo - :background-color #baf diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/alt.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/alt.sass deleted file mode 100644 index f805e182..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/alt.sass +++ /dev/null @@ -1,16 +0,0 @@ -h1 - :float left - :width 274px - height: 75px - margin: 0 - background: - repeat: no-repeat - :image none - a:hover, a:visited - color: green - b:hover - color: red - :background-color green - const - nosp= 1 + 2 - sp = 1 + 2 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/basic.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/basic.sass deleted file mode 100644 index 71117bf5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/basic.sass +++ /dev/null @@ -1,23 +0,0 @@ - - -body - :font Arial - :background blue - -#page - :width 700px - :height 100 - #header - :height 300px - h1 - :font-size 50px - :color blue - -#content.user.show - #container.top - #column.left - :width 100px - #column.right - :width 600px - #container.bottom - :background brown \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/bork.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/bork.sass deleted file mode 100644 index b0d9abea..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/bork.sass +++ /dev/null @@ -1,2 +0,0 @@ -bork - :bork= !bork diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/bork2.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/bork2.sass deleted file mode 100644 index 462afb5a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/bork2.sass +++ /dev/null @@ -1,2 +0,0 @@ -bork - :bork: bork; diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/compact.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/compact.sass deleted file mode 100644 index e37f86e8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/compact.sass +++ /dev/null @@ -1,17 +0,0 @@ -#main - :width 15em - :color #0000ff - p - :border - :style dotted - /* Nested comment - More nested stuff - :width 2px - .cool - :width 100px - -#left - :font - :size 2em - :weight bold - :float left diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/complex.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/complex.sass deleted file mode 100644 index cf9d28bb..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/complex.sass +++ /dev/null @@ -1,307 +0,0 @@ -body - :margin 0 - :font 0.85em "Lucida Grande", "Trebuchet MS", Verdana, sans-serif - :color #fff - :background url(/images/global_bg.gif) - -#page - :width 900px - :margin 0 auto - :background #440008 - :border-top - :width 5px - :style solid - :color #ff8500 - -#header - :height 75px - :padding 0 - h1 - :float left - :width 274px - :height 75px - :margin 0 - :background - :image url(/images/global_logo.gif) - /* Crazy nested comment - :repeat no-repeat - :text-indent -9999px - .status - :float right - :padding - :top .5em - :left .5em - :right .5em - :bottom 0 - p - :float left - :margin - :top 0 - :right 0.5em - :bottom 0 - :left 0 - ul - :float left - :margin 0 - :padding 0 - li - :list-style-type none - :display inline - :margin 0 5px - a:link, a:visited - :color #ff8500 - :text-decoration none - a:hover - :text-decoration underline - .search - :float right - :clear right - :margin 12px 0 0 0 - form - :margin 0 - input - :margin 0 3px 0 0 - :padding 2px - :border none - -#menu - :clear both - :text-align right - :height 20px - :border-bottom 5px solid #006b95 - :background #00a4e4 - .contests - ul - :margin 0 5px 0 0 - :padding 0 - li - :list-style-type none - :margin 0 5px - :padding 5px 5px 0 5px - :display inline - :font-size 1.1em - // This comment is properly indented - :color #fff - :background #00a4e4 - / This rule isn't a comment! - :red green - a:link, a:visited - :color #fff - :text-decoration none - :font-weight bold - a:hover - :text-decoration underline - -//General content information -#content - :clear both - .container - :clear both - .column - :float left - .right - :float right - a:link, a:visited - :color #93d700 - :text-decoration none - a:hover - :text-decoration underline - -// A hard tab: - - -#content - p, div - :width 40em - li, dt, dd - :color #ddffdd - :background-color #4792bb - .container.video - .column.left - :width 200px - .box - :margin-top 10px - p - :margin 0 1em auto 1em - .box.participants - img - :float left - :margin 0 1em auto 1em - :border 1px solid #6e000d - :style solid - h2 - :margin 0 0 10px 0 - :padding 0.5em - /* The background image is a gif! - :background #6e000d url(/images/hdr_participant.gif) 2px 2px no-repeat - /* Okay check this out - Multiline comments - Wow dude - I mean seriously, WOW - :text-indent -9999px - // And also... - Multiline comments that don't output! - Snazzy, no? - :border - :top - :width 5px - :style solid - :color #a20013 - :right - :width 1px - :style dotted - .column.middle - :width 500px - .column.right - :width 200px - .box - :margin-top 0 - p - :margin 0 1em auto 1em - .column - p - :margin-top 0 - -#content.contests - .container.information - .column.right - .box - :margin 1em 0 - .box.videos - .thumbnail img - :width 200px - :height 150px - :margin-bottom 5px - a:link, a:visited - :color #93d700 - :text-decoration none - a:hover - :text-decoration underline - .box.votes - a - :display block - :width 200px - :height 60px - :margin 15px 0 - :background url(/images/btn_votenow.gif) no-repeat - :text-indent -9999px - :outline none - :border none - h2 - :margin 52px 0 10px 0 - :padding 0.5em - :background #6e000d url(/images/hdr_videostats.gif) 2px 2px no-repeat - :text-indent -9999px - :border-top 5px solid #a20013 - -#content.contests - .container.video - .box.videos - h2 - :margin 0 - :padding 0.5em - :background #6e000d url(/images/hdr_newestclips.gif) 2px 2px no-repeat - :text-indent -9999px - :border-top 5px solid #a20013 - table - :width 100 - td - :padding 1em - :width 25 - :vertical-align top - p - :margin 0 0 5px 0 - a:link, a:visited - :color #93d700 - :text-decoration none - a:hover - :text-decoration underline - .thumbnail - :float left - img - :width 80px - :height 60px - :margin 0 10px 0 0 - :border 1px solid #6e000d - -#content - .container.comments - .column - :margin-top 15px - .column.left - :width 600px - .box - ol - :margin 0 - :padding 0 - li - :list-style-type none - :padding 10px - :margin 0 0 1em 0 - :background #6e000d - :border-top 5px solid #a20013 - div - :margin-bottom 1em - ul - :text-align right - li - :display inline - :border none - :padding 0 - .column.right - :width 290px - :padding-left 10px - h2 - :margin 0 - :padding 0.5em - :background #6e000d url(/images/hdr_addcomment.gif) 2px 2px no-repeat - :text-indent -9999px - :border-top 5px solid #a20013 - .box - textarea - :width 290px - :height 100px - :border none - -#footer - :margin-top 10px - :padding 1.2em 1.5em - :background #ff8500 - ul - :margin 0 - :padding 0 - :list-style-type none - li - :display inline - :margin 0 0.5em - :color #440008 - ul.links - :float left - a:link, a:visited - :color #440008 - :text-decoration none - a:hover - :text-decoration underline - ul.copyright - :float right - - -.clear - :clear both - -.centered - :text-align center - -img - :border none - -button.short - :width 60px - :height 22px - :padding 0 0 2px 0 - :color #fff - :border none - :background url(/images/btn_short.gif) no-repeat - -table - :border-collapse collapse diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/compressed.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/compressed.sass deleted file mode 100644 index 675fea4b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/compressed.sass +++ /dev/null @@ -1,15 +0,0 @@ -#main - :width 15em - :color #0000ff - p - :border - :style dotted - :width 2px - .cool - :width 100px - -#left - :font - :size 2em - :weight bold - :float left diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/expanded.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/expanded.sass deleted file mode 100644 index e37f86e8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/expanded.sass +++ /dev/null @@ -1,17 +0,0 @@ -#main - :width 15em - :color #0000ff - p - :border - :style dotted - /* Nested comment - More nested stuff - :width 2px - .cool - :width 100px - -#left - :font - :size 2em - :weight bold - :float left diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/import.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/import.sass deleted file mode 100644 index 1c76dc62..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/import.sass +++ /dev/null @@ -1,11 +0,0 @@ -!preconst = "hello" - -=premixin - pre-mixin: here - -@import importee.sass, basic.sass, basic.css, ../results/complex.css, partial.sass - -nonimported - :myconst = !preconst - :otherconst = !postconst - +postmixin diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/importee.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/importee.sass deleted file mode 100644 index 246c22f5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/importee.sass +++ /dev/null @@ -1,19 +0,0 @@ -!postconst = "goodbye" - -=postmixin - post-mixin: here - -imported - :otherconst = !preconst - :myconst = !postconst - +premixin - -@import basic - -midrule - :inthe middle - -=crazymixin - foo: bar - baz - blat: bang diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/line_numbers.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/line_numbers.sass deleted file mode 100644 index c554d581..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/line_numbers.sass +++ /dev/null @@ -1,13 +0,0 @@ -foo - bar: baz - -=premixin - squggle - blat: bang - -!preconst = 12 - -@import importee - -umph - +crazymixin \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/mixins.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/mixins.sass deleted file mode 100644 index 86546f0f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/mixins.sass +++ /dev/null @@ -1,76 +0,0 @@ -!yellow = #fc0 - -=bordered - :border - :top - :width 2px - :color = !yellow - :left - :width 1px - :color #000 - -moz-border-radius: 10px - -=header-font - :color #f00 - :font - :size 20px - -=compound - +header-font - +bordered - -=complex - +header-font - text: - decoration: none - &:after - content: "." - display: block - height: 0 - clear: both - visibility: hidden - * html & - height: 1px - +header-font -=deep - a:hover - :text-decoration underline - +compound - - -#main - :width 15em - :color #0000ff - p - +bordered - :border - :style dotted - :width 2px - .cool - :width 100px - -#left - +bordered - :font - :size 2em - :weight bold - :float left - -#right - +bordered - +header-font - :float right - -.bordered - +bordered - -.complex - +complex - -.more-complex - +complex - +deep - display: inline - -webkit-nonsense: - top-right: 1px - bottom-left: 1px diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/multiline.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/multiline.sass deleted file mode 100644 index 83140e91..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/multiline.sass +++ /dev/null @@ -1,20 +0,0 @@ -#main, -#header - height: 50px - div - width: 100px - a, - em - span - color: pink - -#one, -#two, -#three - div.nested, - span.nested, - p.nested - :font - :weight bold - :border-color red - :display block \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/nested.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/nested.sass deleted file mode 100644 index a9ee4e01..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/nested.sass +++ /dev/null @@ -1,25 +0,0 @@ -#main - :width 15em - :color #0000ff - p - :border - :style dotted - /* Nested comment - More nested stuff - :width 2px - .cool - :width 100px - -#left - :font - :size 2em - :weight bold - :float left - -#right - .header - :border-style solid - .body - :border-style dotted - .footer - :border-style dashed diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/parent_ref.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/parent_ref.sass deleted file mode 100644 index 6b261d73..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/parent_ref.sass +++ /dev/null @@ -1,25 +0,0 @@ -a - :color #000 - &:hover - :color #f00 - -p, div - :width 100em - & foo - :width 10em - &:hover, bar - :height 20em - -#cool - :border - :style solid - :width 2em - .ie7 &, .ie6 & - :content string(Totally not cool.) - .firefox & - :content string(Quite cool.) - -.wow, .snazzy - :font-family fantasy - &:hover, &:visited - :font-weight bold diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/script.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/script.sass deleted file mode 100644 index 2d60e287..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/script.sass +++ /dev/null @@ -1,101 +0,0 @@ -!width = 10em + 20 -!color = #00ff98 -!main_text = #ffa -!num = 10 -!dec = 10.2 -!dec_0 = 99.0 -!neg = -10 -!esc= 10"+12" -!str= "Hello!" -!qstr= "Quo\"ted\"!" -!hstr= "Hyph-en!" -!concat = "#{5 + 4} hi there" -!percent= 11% -!complex = 1px/1em - -#main - :content = !str - :qstr = !qstr - :hstr = !hstr - :width = !width - :background-color #000 - :color= !main_text - :short-color= #123 - :named-color= olive - :con= "foo" bar (!concat "boom") - :con2= "noquo" "quo" - #sidebar - :background-color= !color - :num - :normal= !num - :dec= !dec - :dec0= !dec_0 - :neg= !neg - :esc= !esc - :many= 1 + 2 + 3 - :order= 1 + 2 * 3 - :complex= ((1 + 2) + 15)+#3a8b9f + ("hi"+(1 +1+ 2)* 4) - -#plus - :num - :num= 5+2 - :num-un= 10em + 15em - :num-un2= 10 + 13em - :num-neg= 10 + -.13 - :str= 100 * 1px - :col= 13 + #aaa - :perc = !percent + 20% - :str - :str= "hi" + "\ there" - :str2= "hi" + " there" - :col= "14em solid " + #123 - :num= "times: " + 13 - :col - :num= #f02 + 123.5 - :col= #12A + #405162 - -#minus - :num - :num= 912 - 12 - :col - :num= #fffffa - 5.2 - :col= #abcdef - #fedcba - :unary - :num= -1 - :const= -!neg - :paren= -(5 + 6) - :two= --12 - :many= --------12 - :crazy= -----(5 + ---!neg) - -#times - :num - :num= 2 * 3.5 - :col= 2 * #3a4b5c - :col - :num= #12468a * 0.5 - :col= #121212 * #020304 - -#div - :num - :num= 10 / 3.0 - :num2= 10 / 3 - :col - :num= #12468a / 2 - :col= #abcdef / #0f0f0f - :comp = !complex * 1em - -#mod - :num - :num= 17 % 3 - :col - :col= #5f6e7d % #10200a - :num= #aaabac % 3 - -#const - :escaped - :quote = "!foo" - :default = !str !important - -#regression - :a= (3 + 2) - 1 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/subdir/nested_subdir/_nested_partial.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/subdir/nested_subdir/_nested_partial.sass deleted file mode 100644 index 04008f60..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +++ /dev/null @@ -1,2 +0,0 @@ -#nested - :relative true diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/subdir/nested_subdir/nested_subdir.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/subdir/nested_subdir/nested_subdir.sass deleted file mode 100644 index aae9eebf..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +++ /dev/null @@ -1,3 +0,0 @@ -#pi - :width 314px - \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/subdir/subdir.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/subdir/subdir.sass deleted file mode 100644 index 8fff002d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/subdir/subdir.sass +++ /dev/null @@ -1,6 +0,0 @@ -@import nested_subdir/nested_partial.sass - -#subdir - :font - :size 20px - :weight bold diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/units.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/units.sass deleted file mode 100644 index 9404f951..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/sass/templates/units.sass +++ /dev/null @@ -1,11 +0,0 @@ -b - :foo= 0.5 * 10px - :bar= 10zzz * 12px / 5zzz - :baz= percentage(12.0px / 18px) - :many-units= 10.0zzz / 3yyy * 12px / 5zzz * 3yyy / 3px * 4em - :mm= 5mm + 1cm - :pc= 1pc + 12pt - :pt= 72pt - 2in - :inches= 1in + 2.54cm - :more-inches= 1in + ((72pt * 2in) + (36pt * 1in)) / 2.54cm - :mixed= (1 + (1em * 6px / 3in)) * 4in / 2em diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/test_helper.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/test_helper.rb deleted file mode 100644 index 3e88d74d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/test_helper.rb +++ /dev/null @@ -1,35 +0,0 @@ -lib_dir = File.dirname(__FILE__) + '/../lib' -require File.dirname(__FILE__) + '/linked_rails' - -require 'test/unit' -require 'fileutils' -$:.unshift lib_dir unless $:.include?(lib_dir) -require 'haml' -require 'sass' - -Sass::RAILS_LOADED = true unless defined?(Sass::RAILS_LOADED) - -class Test::Unit::TestCase - def munge_filename(opts) - return if opts.has_key?(:filename) - test_name = caller[1].gsub(/^.*`(?:\w+ )*(\w+)'.*$/, '\1') - opts[:filename] = "#{test_name}_inline.sass" - end - - def clean_up_sassc - path = File.dirname(__FILE__) + "/../.sass-cache" - FileUtils.rm_r(path) if File.exist?(path) - end - - def assert_warning(message) - the_real_stderr, $stderr = $stderr, StringIO.new - yield - assert_equal message.strip, $stderr.string.strip - ensure - $stderr = the_real_stderr - end - - def silence_warnings(&block) - Haml::Util.silence_warnings(&block) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/CHANGELOG b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/CHANGELOG deleted file mode 100644 index efb043db..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/CHANGELOG +++ /dev/null @@ -1,222 +0,0 @@ -= Change Log - -Below is a complete listing of changes for each revision of HighLine. - -== 1.5.1 - -* Fixed the long standing echo true bug. - (reported by Lauri Tuominen) -* Improved Windows API calls to support the redirection of STDIN. - (patch by Aaron Simmons) -* Updated gem specification to avoid a deprecated call. -* Made a minor documentation clarification about character mode support. -* Worked around some API changes in Ruby's standard library in Ruby 1.9. - (patch by Jake Benilov) - -== 1.5.0 - -* Fixed a bug that would prevent Readline from showing all completions. - (reported by Yaohan Chen) -* Added the ability to pass a block to HighLine#agree(). - (patch by Yaohan Chen) - -== 1.4.0 - -* Made the code grabbing terminal size a little more cross-platform by - adding support for Solaris. (patch by Ronald Braswell and Coey Minear) - -== 1.2.9 - -* Additional work on the backspacing issue. (patch by Jeremy Hinegardner) -* Fixed Readline prompt bug. (patch by Jeremy Hinegardner) - -== 1.2.8 - -* Fixed backspacing past the prompt and interrupting a prompt bugs. - (patch by Jeremy Hinegardner) - -== 1.2.7 - -* Fixed the stty indent bug. -* Fixed the echo backspace bug. -* Added HighLine::track_eof=() setting to work are threaded eof?() calls. - -== 1.2.6 - -Patch by Jeremy Hinegardner: - -* Added ColorScheme support. -* Added HighLine::Question.overwrite mode. -* Various documentation fixes. - -== 1.2.5 - -* Really fixed the bug I tried to fix in 1.2.4. - -== 1.2.4 - -* Fixed a crash causing bug when using menus, reported by Patrick Hof. - -== 1.2.3 - -* Treat Cygwin like a Posix OS, instead of a native Windows environment. - -== 1.2.2 - -* Minor documentation corrections. -* Applied Thomas Werschleiln's patch to fix termio buffering on Solaris. -* Applied Justin Bailey's patch to allow canceling paged output. -* Fixed a documentation bug in the description of character case settings. -* Added a notice about termios in HighLine::Question#echo. -* Finally working around the infamous "fast typing" bug - -== 1.2.1 - -* Applied Justin Bailey's fix for the page_print() infinite loop bug. -* Made a SystemExtensions module to expose OS level functionality other - libraries may want to access. -* Publicly exposed the get_character() method, per user requests. -* Added terminal_size(), output_cols(), and output_rows() methods. -* Added :auto setting for warp_at=() and page_at=(). - -== 1.2.0 - -* Improved RubyForge and gem spec project descriptions. -* Added basic examples to README. -* Added a VERSION constant. -* Added support for hidden menu commands. -* Added Object.or_ask() when using highline/import. - -== 1.0.4 - -* Moved the HighLine project to Subversion. -* HighLine's color escapes can now be disabled. -* Fixed EOF bug introduced in the last release. -* Updated HighLine web page. -* Moved to a forked development/stable version numbering. - -== 1.0.2 - -* Removed old and broken help tests. -* Fixed test case typo found by David A. Black. -* Added ERb escapes processing to lists, for coloring list items. Color escapes - do not add to list element size. -* HighLine now throws EOFError when input is exhausted. - -== 1.0.1 - -* Minor bug fix: Moved help initialization to before response building, so help - would show up in the default responses. - -== 1.0.0 - -* Fixed documentation typo pointed out by Gavin Kistner. -* Added gather = ... option to question for fetching entire Arrays or - Hashes filled with answers. You can set +gather+ to a count of answers to - collect, a String or Regexp matching the end of input, or a Hash where each - key can be used in a new question. -* Added File support to HighLine.ask(). You can specify a _directory_ and a - _glob_ pattern that combine into a list of file choices the user can select - from. You can choose to receive the user's answer as an open filehandle or as - a Pathname object. -* Added Readline support for history and editing. -* Added tab completion for menu and file selection selection (requires - Readline). -* Added an optional character limit for input. -* Added a complete help system to HighLine's shell menu creation tools. - -== 0.6.1 - -* Removed termios dependancy in gem, to fix Windows' install. - -== 0.6.0 - -* Implemented HighLine.choose() for menu handling. - * Provided shortcut choose(item1, item2, ...) for simple menus. - * Allowed Ruby code to be attached to each menu item, to create a complete - menu solution. - * Provided for total customization of the menu layout. - * Allowed for menu selection by index, name or both. - * Added a _shell_ mode to allow menu selection with additional details - following the name. -* Added a list() utility method that can be invoked just like color(). It can - layout Arrays for you in any output in the modes :columns_across, - :columns_down, :inline and :rows -* Added support for echo = "*" style settings. User code can now - choose the echo character this way. -* Modified HighLine to user the "termios" library for character input, if - available. Will return to old behavior (using "stty"), if "termios" cannot be - loaded. -* Improved "stty" state restoring code. -* Fixed "stty" code to handle interrupt signals. -* Improved the default auto-complete error message and exposed this message - through the +responses+ interface as :no_completion. - -== 0.5.0 - -* Implemented echo = false for HighLine::Question objects, primarily to - make fetching passwords trivial. -* Fixed an auto-complete bug that could cause a crash when the user gave an - answer that didn't complete to any valid choice. -* Implemented +case+ for HighLine::Question objects to provide character case - conversions on given answers. Can be set to :up, :down, or - :capitalize. -* Exposed @answer to the response system, to allow response that are - aware of incorrect input. -* Implemented +confirm+ for HighLine::Question objects to allow for verification - for sensitive user choices. If set to +true+, user will have to answer an - "Are you sure? " question. Can also be set to the question to confirm with - the user. - -== 0.4.0 - -* Added @wrap_at and @page_at settings and accessors to - HighLine, to control text flow. -* Implemented line wrapping with adjustable limit. -* Implemented paged printing with adjustable limit. - -== 0.3.0 - -* Added support for installing with setup.rb. -* All output is now treated as an ERb sequence, allowing Ruby code to be - embedded in output strings. -* Added support for ANSI color sequences in say(). (And everything else - by extension.) -* Added whitespace handling for answers. Can be set to :strip, - :chomp, :collapse, :strip_and_collapse, - :chomp_and_collapse, :remove, or :none. -* Exposed question details to ERb completion through @question, to allow for - intelligent responses. -* Simplified HighLine internals using @question. -* Added support for fetching single character input either with getc() or - HighLine's own cross-platform terminal input routine. -* Improved type conversion to handle user defined classes. - -== 0.2.0 - -* Added Unit Tests to cover an already fixed output bug in the future. -* Added Rakefile and setup test action (default). -* Renamed HighLine::Answer to HighLine::Question to better illustrate its role. -* Renamed fetch_line() to get_response() to better define its goal. -* Simplified explain_error in terms of the Question object. -* Renamed accept?() to in_range?() to better define purpose. -* Reworked valid?() into valid_answer?() to better fit Question object. -* Reworked @member into @in, to make it easier to remember and - switched implementation to include?(). -* Added range checks for @above and @below. -* Fixed the bug causing ask() to swallow NoMethodErrors. -* Rolled ask_on_error() into responses. -* Redirected imports to Kernel from Object. -* Added support for validate = lambda { ... }. -* Added default answer support. -* Fixed bug that caused ask() to die with an empty question. -* Added complete documentation. -* Improve the implemetation of agree() to be the intended "yes" or "no" only - question. -* Added Rake tasks for documentation and packaging. -* Moved project to RubyForge. - -== 0.1.0 - -* Initial release as the solution to - {Ruby Quiz #29}[http://www.rubyquiz.com/quiz29.html]. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/INSTALL b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/INSTALL deleted file mode 100644 index c22f0414..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/INSTALL +++ /dev/null @@ -1,35 +0,0 @@ -= Installing HighLine - -RubyGems is the preferred easy install method for HighLine. However, you can -install HighLine manually as described below. - -== Installing the Gem - -HighLine is intended to be installed via the -RubyGems[http://rubyforge.org/projects/rubygems/] system. To get the latest -version, simply enter the following into your command prompt: - - $ sudo gem install highline - -You must have RubyGems[http://rubyforge.org/projects/rubygems/] installed for -the above to work. - -== Installing Manually - -Download the latest version of HighLine from the -{RubyForge project page}[http://rubyforge.org/frs/?group_id=683]. Navigate to -the root project directory and enter: - - $ sudo ruby setup.rb - -== Using termios - -While not a requirement, HighLine will take advantage of the termios library if -installed (on Unix). This slightly improves HighLine's character reading -capabilities and thus is recommended for all Unix users. - -If using the HighLine gem, you should be able to add termios as easily as: - - $ sudo gem install termios - -For manual installs, consult the termios documentation. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/LICENSE b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/LICENSE deleted file mode 100644 index ff6f232c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -= License Terms - -Distributed under the user's choice of the {GPL Version 2}[http://www.gnu.org/licenses/old-licenses/gpl-2.0.html] (see COPYING for details) or the -{Ruby software license}[http://www.ruby-lang.org/en/LICENSE.txt] by -James Edward Gray II and Greg Brown. - -Please email James[mailto:james@grayproductions.net] with any questions. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/README b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/README deleted file mode 100644 index f28478bb..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/README +++ /dev/null @@ -1,63 +0,0 @@ -= Read Me - -by James Edward Gray II - -== Description - -Welcome to HighLine. - -HighLine was designed to ease the tedious tasks of doing console input and -output with low-level methods like gets() and puts(). HighLine provides a -robust system for requesting data from a user, without needing to code all the -error checking and validation rules and without needing to convert the typed -Strings into what your program really needs. Just tell HighLine what you're -after, and let it do all the work. - -== Documentation - -See HighLine and HighLine::Question for documentation. - -== Examples - -Basic usage: - - ask("Company? ") { |q| q.default = "none" } - -Validation: - - ask("Age? ", Integer) { |q| q.in = 0..105 } - ask("Name? (last, first) ") { |q| q.validate = /\A\w+, ?\w+\Z/ } - -Type conversion for answers: - - ask("Birthday? ", Date) - ask("Interests? (comma sep list) ", lambda { |str| str.split(/,\s*/) }) - -Reading passwords: - - ask("Enter your password: ") { |q| q.echo = false } - ask("Enter your password: ") { |q| q.echo = "x" } - -ERb based output (with HighLine's ANSI color tools): - - say("This should be <%= color('bold', BOLD) %>!") - -Menus: - - choose do |menu| - menu.prompt = "Please choose your favorite programming language? " - - menu.choice(:ruby) { say("Good choice!") } - menu.choices(:python, :perl) { say("Not from around here, are you?") } - end - -For more examples see the examples/ directory of this project. - -== Installing - -See the INSTALL file for instructions. - -== Questions and/or Comments - -Feel free to email {James Edward Gray II}[mailto:james@grayproductions.net] or -{Gregory Brown}[mailto:gregory.t.brown@gmail.com] with any questions. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/Rakefile deleted file mode 100644 index 5c74b161..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/Rakefile +++ /dev/null @@ -1,82 +0,0 @@ -require "rake/rdoctask" -require "rake/testtask" -require "rake/gempackagetask" - -require "rubygems" - -dir = File.dirname(__FILE__) -lib = File.join(dir, "lib", "highline.rb") -version = File.read(lib)[/^\s*VERSION\s*=\s*(['"])(\d\.\d\.\d)\1/, 2] - -task :default => [:test] - -Rake::TestTask.new do |test| - test.libs << "test" - test.test_files = [ "test/ts_all.rb" ] - test.verbose = true -end - -Rake::RDocTask.new do |rdoc| - rdoc.rdoc_files.include( "README", "INSTALL", - "TODO", "CHANGELOG", - "AUTHORS", "COPYING", - "LICENSE", "lib/" ) - rdoc.main = "README" - rdoc.rdoc_dir = "doc/html" - rdoc.title = "HighLine Documentation" -end - -desc "Upload current documentation to Rubyforge" -task :upload_docs => [:rdoc] do - sh "scp -r doc/html/* " + - "bbazzarrakk@rubyforge.org:/var/www/gforge-projects/highline/doc/" - sh "scp -r site/* " + - "bbazzarrakk@rubyforge.org:/var/www/gforge-projects/highline/" -end - -spec = Gem::Specification.new do |spec| - spec.name = "highline" - spec.version = version - spec.platform = Gem::Platform::RUBY - spec.summary = "HighLine is a high-level command-line IO library." - spec.files = Dir.glob("{examples,lib,test}/**/*.rb"). - delete_if { |item| item.include?("CVS") } + - ["Rakefile", "setup.rb"] - - spec.test_files = "test/ts_all.rb" - spec.has_rdoc = true - spec.extra_rdoc_files = %w{README INSTALL TODO CHANGELOG LICENSE} - spec.rdoc_options << '--title' << 'HighLine Documentation' << - '--main' << 'README' - - spec.require_path = 'lib' - - spec.author = "James Edward Gray II" - spec.email = "james@grayproductions.net" - spec.rubyforge_project = "highline" - spec.homepage = "http://highline.rubyforge.org" - spec.description = <!") - if i == 0 - say( "This should be " + - "<%= color('white on #{c}', :white, :on_#{c}) %>!") - else - say( "This should be " + - "<%= color( '#{colors[i - 1]} on #{c}', - :#{colors[i - 1]}, :on_#{c} ) %>!") - end -end - -# Using color with constants. -say("This should be <%= color('bold', BOLD) %>!") -say("This should be <%= color('underlined', UNDERLINE) %>!") - -# Using constants only. -say("This might even <%= BLINK %>blink<%= CLEAR %>!") - -# It even works with list wrapping. -erb_digits = %w{Zero One Two Three Four} + - ["<%= color('Five', :blue) %%>"] + - %w{Six Seven Eight Nine} -say("<%= list(#{erb_digits.inspect}, :columns_down, 3) %>") diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/asking_for_arrays.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/asking_for_arrays.rb deleted file mode 100644 index 6c62a0e4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/asking_for_arrays.rb +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/local/bin/ruby -w - -# asking_for_arrays.rb -# -# Created by James Edward Gray II on 2005-07-05. -# Copyright 2005 Gray Productions. All rights reserved. - -require "rubygems" -require "highline/import" -require "pp" - -grades = ask( "Enter test scores (or a blank line to quit):", - lambda { |ans| ans =~ /^-?\d+$/ ? Integer(ans) : ans} ) do |q| - q.gather = "" -end - -say("Grades:") -pp grades diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/basic_usage.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/basic_usage.rb deleted file mode 100644 index 60ecdc18..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/basic_usage.rb +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/local/bin/ruby -w - -# basic_usage.rb -# -# Created by James Edward Gray II on 2005-04-28. -# Copyright 2005 Gray Productions. All rights reserved. - -require "rubygems" -require "highline/import" -require "yaml" - -contacts = [ ] - -class NameClass - def self.parse( string ) - if string =~ /^\s*(\w+),\s*(\w+)\s*$/ - self.new($2, $1) - else - raise ArgumentError, "Invalid name format." - end - end - - def initialize(first, last) - @first, @last = first, last - end - - attr_reader :first, :last -end - -begin - entry = Hash.new - - # basic output - say("Enter a contact:") - - # basic input - entry[:name] = ask("Name? (last, first) ", NameClass) do |q| - q.validate = /\A\w+, ?\w+\Z/ - end - entry[:company] = ask("Company? ") { |q| q.default = "none" } - entry[:address] = ask("Address? ") - entry[:city] = ask("City? ") - entry[:state] = ask("State? ") do |q| - q.case = :up - q.validate = /\A[A-Z]{2}\Z/ - end - entry[:zip] = ask("Zip? ") do |q| - q.validate = /\A\d{5}(?:-?\d{4})?\Z/ - end - entry[:phone] = ask( "Phone? ", - lambda { |p| p.delete("^0-9"). - sub(/\A(\d{3})/, '(\1) '). - sub(/(\d{4})\Z/, '-\1') } ) do |q| - q.validate = lambda { |p| p.delete("^0-9").length == 10 } - q.responses[:not_valid] = "Enter a phone numer with area code." - end - entry[:age] = ask("Age? ", Integer) { |q| q.in = 0..105 } - entry[:birthday] = ask("Birthday? ", Date) - entry[:interests] = ask( "Interests? (comma separated list) ", - lambda { |str| str.split(/,\s*/) } ) - entry[:description] = ask("Enter a description for this contact.") do |q| - q.whitespace = :strip_and_collapse - end - - contacts << entry -# shortcut for yes and no questions -end while agree("Enter another contact? ", true) - -if agree("Save these contacts? ", true) - file_name = ask("Enter a file name: ") do |q| - q.validate = /\A\w+\Z/ - q.confirm = true - end - File.open("#{file_name}.yaml", "w") { |file| YAML.dump(contacts, file) } -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/color_scheme.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/color_scheme.rb deleted file mode 100644 index 6d1e0a76..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/color_scheme.rb +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env ruby -w - -# color_scheme.rb -# -# Created by Jeremy Hinegardner on 2007-01-24 -# Copyright 2007 Jeremy Hinegardner. All rights reserved - -require 'rubygems' -require 'highline/import' - -# Create a color scheme, naming color patterns with symbol names. -ft = HighLine::ColorScheme.new do |cs| - cs[:headline] = [ :bold, :yellow, :on_black ] - cs[:horizontal_line] = [ :bold, :white, :on_blue] - cs[:even_row] = [ :green ] - cs[:odd_row] = [ :magenta ] - end - -# Assign that color scheme to HighLine... -HighLine.color_scheme = ft - -# ...and use it. -say("<%= color('Headline', :headline) %>") -say("<%= color('-'*20, :horizontal_line) %>") - -# Setup a toggle for rows. -i = true -("A".."D").each do |row| - row_color = i ? :even_row : :odd_row - say("<%= color('#{row}', '#{row_color}') %>") - i = !i -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/limit.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/limit.rb deleted file mode 100644 index a3813e5d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/limit.rb +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env ruby -w - -# limit.rb -# -# Created by James Edward Gray II on 2008-11-12. -# Copyright 2008 Gray Productions. All rights reserved. - -require "rubygems" -require "highline/import" - -text = ask("Enter text (max 10 chars): ") { |q| q.limit = 10 } -puts "You entered: #{text}!" diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/menus.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/menus.rb deleted file mode 100644 index e31c11df..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/menus.rb +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/local/bin/ruby -w - -require "rubygems" -require "highline/import" - -# The old way, using ask() and say()... -choices = %w{ruby python perl} -say("This is the old way using ask() and say()...") -say("Please choose your favorite programming language:") -say(choices.map { |c| " #{c}\n" }.join) - -case ask("? ", choices) -when "ruby" - say("Good choice!") -else - say("Not from around here, are you?") -end - -# The new and improved choose()... -say("\nThis is the new mode (default)...") -choose do |menu| - menu.prompt = "Please choose your favorite programming language? " - - menu.choice :ruby do say("Good choice!") end - menu.choices(:python, :perl) do say("Not from around here, are you?") end -end - -say("\nThis is letter indexing...") -choose do |menu| - menu.index = :letter - menu.index_suffix = ") " - - menu.prompt = "Please choose your favorite programming language? " - - menu.choice :ruby do say("Good choice!") end - menu.choices(:python, :perl) do say("Not from around here, are you?") end -end - -say("\nThis is with a different layout...") -choose do |menu| - menu.layout = :one_line - - menu.header = "Languages" - menu.prompt = "Favorite? " - - menu.choice :ruby do say("Good choice!") end - menu.choices(:python, :perl) do say("Not from around here, are you?") end -end - -say("\nYou can even build shells...") -loop do - choose do |menu| - menu.layout = :menu_only - - menu.shell = true - - menu.choice(:load, "Load a file.") do |command, details| - say("Loading file with options: #{details}...") - end - menu.choice(:save, "Save a file.") do |command, details| - say("Saving file with options: #{details}...") - end - menu.choice(:quit, "Exit program.") { exit } - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/overwrite.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/overwrite.rb deleted file mode 100644 index 1ca2db52..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/overwrite.rb +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/local/bin/ruby -w - -# overwrite.rb -# -# Created by Jeremy Hinegardner on 2007-01-24 -# Copyright 2007 Jeremy Hinegardner. All rights reserved - -require 'rubygems' -require 'highline/import' - -prompt = "here is your password:" -ask( - "#{prompt} <%= color('mypassword', RED, BOLD) %> (Press Any Key to blank) " -) do |q| - q.overwrite = true - q.echo = false # overwrite works best when echo is false. - q.character = true # if this is set to :getc then overwrite does not work -end -say("<%= color('Look! blanked out!', GREEN) %>") diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/page_and_wrap.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/page_and_wrap.rb deleted file mode 100644 index 3209a4ab..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/examples/page_and_wrap.rb +++ /dev/null @@ -1,322 +0,0 @@ -#!/usr/local/bin/ruby -w - -# page_and_wrap.rb -# -# Created by James Edward Gray II on 2005-05-07. -# Copyright 2005 Gray Productions. All rights reserved. - -require "rubygems" -require "highline/import" - -$terminal.wrap_at = 80 -$terminal.page_at = 22 - -say(<@question is set before ask() is called, parameters are - # ignored and that object (must be a HighLine::Question) is used to drive - # the process instead. - # - # Raises EOFError if input is exhausted. - # - def ask( question, answer_type = String, &details ) # :yields: question - @question ||= Question.new(question, answer_type, &details) - - return gather if @question.gather - - # readline() needs to handle it's own output, but readline only supports - # full line reading. Therefore if @question.echo is anything but true, - # the prompt will not be issued. And we have to account for that now. - say(@question) unless (@question.readline and @question.echo == true) - begin - @answer = @question.answer_or_default(get_response) - unless @question.valid_answer?(@answer) - explain_error(:not_valid) - raise QuestionError - end - - @answer = @question.convert(@answer) - - if @question.in_range?(@answer) - if @question.confirm - # need to add a layer of scope to ask a question inside a - # question, without destroying instance data - context_change = self.class.new(@input, @output, @wrap_at, @page_at) - if @question.confirm == true - confirm_question = "Are you sure? " - else - # evaluate ERb under initial scope, so it will have - # access to @question and @answer - template = ERB.new(@question.confirm, nil, "%") - confirm_question = template.result(binding) - end - unless context_change.agree(confirm_question) - explain_error(nil) - raise QuestionError - end - end - - @answer - else - explain_error(:not_in_range) - raise QuestionError - end - rescue QuestionError - retry - rescue ArgumentError, NameError => error - raise if error.is_a?(NoMethodError) - if error.message =~ /ambiguous/ - # the assumption here is that OptionParser::Completion#complete - # (used for ambiguity resolution) throws exceptions containing - # the word 'ambiguous' whenever resolution fails - explain_error(:ambiguous_completion) - else - explain_error(:invalid_type) - end - retry - rescue Question::NoAutoCompleteMatch - explain_error(:no_completion) - retry - ensure - @question = nil # Reset Question object. - end - end - - # - # This method is HighLine's menu handler. For simple usage, you can just - # pass all the menu items you wish to display. At that point, choose() will - # build and display a menu, walk the user through selection, and return - # their choice amoung the provided items. You might use this in a case - # statement for quick and dirty menus. - # - # However, choose() is capable of much more. If provided, a block will be - # passed a HighLine::Menu object to configure. Using this method, you can - # customize all the details of menu handling from index display, to building - # a complete shell-like menuing system. See HighLine::Menu for all the - # methods it responds to. - # - # Raises EOFError if input is exhausted. - # - def choose( *items, &details ) - @menu = @question = Menu.new(&details) - @menu.choices(*items) unless items.empty? - - # Set _answer_type_ so we can double as the Question for ask(). - @menu.answer_type = if @menu.shell - lambda do |command| # shell-style selection - first_word = command.to_s.split.first || "" - - options = @menu.options - options.extend(OptionParser::Completion) - answer = options.complete(first_word) - - if answer.nil? - raise Question::NoAutoCompleteMatch - end - - [answer.last, command.sub(/^\s*#{first_word}\s*/, "")] - end - else - @menu.options # normal menu selection, by index or name - end - - # Provide hooks for ERb layouts. - @header = @menu.header - @prompt = @menu.prompt - - if @menu.shell - selected = ask("Ignored", @menu.answer_type) - @menu.select(self, *selected) - else - selected = ask("Ignored", @menu.answer_type) - @menu.select(self, selected) - end - end - - # - # This method provides easy access to ANSI color sequences, without the user - # needing to remember to CLEAR at the end of each sequence. Just pass the - # _string_ to color, followed by a list of _colors_ you would like it to be - # affected by. The _colors_ can be HighLine class constants, or symbols - # (:blue for BLUE, for example). A CLEAR will automatically be embedded to - # the end of the returned String. - # - # This method returns the original _string_ unchanged if HighLine::use_color? - # is +false+. - # - def color( string, *colors ) - return string unless self.class.use_color? - - colors.map! do |c| - if self.class.using_color_scheme? and self.class.color_scheme.include? c - self.class.color_scheme[c] - elsif c.is_a? Symbol - self.class.const_get(c.to_s.upcase) - else - c - end - end - "#{colors.flatten.join}#{string}#{CLEAR}" - end - - # - # This method is a utility for quickly and easily laying out lists. It can - # be accessed within ERb replacements of any text that will be sent to the - # user. - # - # The only required parameter is _items_, which should be the Array of items - # to list. A specified _mode_ controls how that list is formed and _option_ - # has different effects, depending on the _mode_. Recognized modes are: - # - # :columns_across:: _items_ will be placed in columns, flowing - # from left to right. If given, _option_ is the - # number of columns to be used. When absent, - # columns will be determined based on _wrap_at_ - # or a default of 80 characters. - # :columns_down:: Identical to :columns_across, save - # flow goes down. - # :inline:: All _items_ are placed on a single line. The - # last two _items_ are separated by _option_ or - # a default of " or ". All other _items_ are - # separated by ", ". - # :rows:: The default mode. Each of the _items_ is - # placed on it's own line. The _option_ - # parameter is ignored in this mode. - # - # Each member of the _items_ Array is passed through ERb and thus can contain - # their own expansions. Color escape expansions do not contribute to the - # final field width. - # - def list( items, mode = :rows, option = nil ) - items = items.to_ary.map do |item| - ERB.new(item, nil, "%").result(binding) - end - - case mode - when :inline - option = " or " if option.nil? - - case items.size - when 0 - "" - when 1 - items.first - when 2 - "#{items.first}#{option}#{items.last}" - else - items[0..-2].join(", ") + "#{option}#{items.last}" - end - when :columns_across, :columns_down - max_length = actual_length( - items.max { |a, b| actual_length(a) <=> actual_length(b) } - ) - - if option.nil? - limit = @wrap_at || 80 - option = (limit + 2) / (max_length + 2) - end - - items = items.map do |item| - pad = max_length + (item.length - actual_length(item)) - "%-#{pad}s" % item - end - row_count = (items.size / option.to_f).ceil - - if mode == :columns_across - rows = Array.new(row_count) { Array.new } - items.each_with_index do |item, index| - rows[index / option] << item - end - - rows.map { |row| row.join(" ") + "\n" }.join - else - columns = Array.new(option) { Array.new } - items.each_with_index do |item, index| - columns[index / row_count] << item - end - - list = "" - columns.first.size.times do |index| - list << columns.map { |column| column[index] }. - compact.join(" ") + "\n" - end - list - end - else - items.map { |i| "#{i}\n" }.join - end - end - - # - # The basic output method for HighLine objects. If the provided _statement_ - # ends with a space or tab character, a newline will not be appended (output - # will be flush()ed). All other cases are passed straight to Kernel.puts(). - # - # The _statement_ parameter is processed as an ERb template, supporting - # embedded Ruby code. The template is evaluated with a binding inside - # the HighLine instance, providing easy access to the ANSI color constants - # and the HighLine.color() method. - # - def say( statement ) - statement = statement.to_str - return unless statement.length > 0 - - template = ERB.new(statement, nil, "%") - statement = template.result(binding) - - statement = wrap(statement) unless @wrap_at.nil? - statement = page_print(statement) unless @page_at.nil? - - if statement[-1, 1] == " " or statement[-1, 1] == "\t" - @output.print(statement) - @output.flush - else - @output.puts(statement) - end - end - - # - # Set to an integer value to cause HighLine to wrap output lines at the - # indicated character limit. When +nil+, the default, no wrapping occurs. If - # set to :auto, HighLine will attempt to determing the columns - # available for the @output or use a sensible default. - # - def wrap_at=( setting ) - @wrap_at = setting == :auto ? output_cols : setting - end - - # - # Set to an integer value to cause HighLine to page output lines over the - # indicated line limit. When +nil+, the default, no paging occurs. If - # set to :auto, HighLine will attempt to determing the rows available - # for the @output or use a sensible default. - # - def page_at=( setting ) - @page_at = setting == :auto ? output_rows : setting - end - - # - # Returns the number of columns for the console, or a default it they cannot - # be determined. - # - def output_cols - return 80 unless @output.tty? - terminal_size.first - rescue - return 80 - end - - # - # Returns the number of rows for the console, or a default if they cannot be - # determined. - # - def output_rows - return 24 unless @output.tty? - terminal_size.last - rescue - return 24 - end - - private - - # - # A helper method for sending the output stream and error and repeat - # of the question. - # - def explain_error( error ) - say(@question.responses[error]) unless error.nil? - if @question.responses[:ask_on_error] == :question - say(@question) - elsif @question.responses[:ask_on_error] - say(@question.responses[:ask_on_error]) - end - end - - # - # Collects an Array/Hash full of answers as described in - # HighLine::Question.gather(). - # - # Raises EOFError if input is exhausted. - # - def gather( ) - @gather = @question.gather - @answers = [ ] - original_question = @question - - @question.gather = false - - case @gather - when Integer - @answers << ask(@question) - @gather -= 1 - - original_question.question = "" - until @gather.zero? - @question = original_question - @answers << ask(@question) - @gather -= 1 - end - when String, Regexp - @answers << ask(@question) - - original_question.question = "" - until (@gather.is_a?(String) and @answers.last.to_s == @gather) or - (@gather.is_a?(Regexp) and @answers.last.to_s =~ @gather) - @question = original_question - @answers << ask(@question) - end - - @answers.pop - when Hash - @answers = { } - @gather.keys.sort.each do |key| - @question = original_question - @key = key - @answers[key] = ask(@question) - end - end - - @answers - end - - # - # Read a line of input from the input stream and process whitespace as - # requested by the Question object. - # - # If Question's _readline_ property is set, that library will be used to - # fetch input. *WARNING*: This ignores the currently set input stream. - # - # Raises EOFError if input is exhausted. - # - def get_line( ) - if @question.readline - require "readline" # load only if needed - - # capture say()'s work in a String to feed to readline() - old_output = @output - @output = StringIO.new - say(@question) - question = @output.string - @output = old_output - - # prep auto-completion - Readline.completion_proc = lambda do |string| - @question.selection.grep(/\A#{Regexp.escape(string)}/) - end - - # work-around ugly readline() warnings - old_verbose = $VERBOSE - $VERBOSE = nil - answer = @question.change_case( - @question.remove_whitespace( - Readline.readline(question, true) ) ) - $VERBOSE = old_verbose - - answer - else - raise EOFError, "The input stream is exhausted." if @@track_eof and - @input.eof? - - @question.change_case(@question.remove_whitespace(@input.gets)) - end - end - - # - # Return a line or character of input, as requested for this question. - # Character input will be returned as a single character String, - # not an Integer. - # - # This question's _first_answer_ will be returned instead of input, if set. - # - # Raises EOFError if input is exhausted. - # - def get_response( ) - return @question.first_answer if @question.first_answer? - - if @question.character.nil? - if @question.echo == true and @question.limit.nil? - get_line - else - raw_no_echo_mode if stty = CHARACTER_MODE == "stty" - - line = "" - backspace_limit = 0 - begin - - while character = (stty ? @input.getbyte : get_character(@input)) - # honor backspace and delete - if character == 127 or character == 8 - line.slice!(-1, 1) - backspace_limit -= 1 - else - line << character.chr - backspace_limit = line.size - end - # looking for carriage return (decimal 13) or - # newline (decimal 10) in raw input - break if character == 13 or character == 10 or - (@question.limit and line.size == @question.limit) - if @question.echo != false - if character == 127 or character == 8 - # only backspace if we have characters on the line to - # eliminate, otherwise we'll tromp over the prompt - if backspace_limit >= 0 then - @output.print("\b#{ERASE_CHAR}") - else - # do nothing - end - else - if @question.echo == true - @output.print(character.chr) - else - @output.print(@question.echo) - end - end - @output.flush - end - end - ensure - restore_mode if stty - end - if @question.overwrite - @output.print("\r#{ERASE_LINE}") - @output.flush - else - say("\n") - end - - @question.change_case(@question.remove_whitespace(line)) - end - elsif @question.character == :getc - @question.change_case(@input.getbyte.chr) - else - response = get_character(@input).chr - if @question.overwrite - @output.print("\r#{ERASE_LINE}") - @output.flush - else - echo = if @question.echo == true - response - elsif @question.echo != false - @question.echo - else - "" - end - say("#{echo}\n") - end - @question.change_case(response) - end - end - - # - # Page print a series of at most _page_at_ lines for _output_. After each - # page is printed, HighLine will pause until the user presses enter/return - # then display the next page of data. - # - # Note that the final page of _output_ is *not* printed, but returned - # instead. This is to support any special handling for the final sequence. - # - def page_print( output ) - lines = output.scan(/[^\n]*\n?/) - while lines.size > @page_at - @output.puts lines.slice!(0...@page_at).join - @output.puts - # Return last line if user wants to abort paging - return (["...\n"] + lines.slice(-2,1)).join unless continue_paging? - end - return lines.join - end - - # - # Ask user if they wish to continue paging output. Allows them to type "q" to - # cancel the paging process. - # - def continue_paging? - command = HighLine.new(@input, @output).ask( - "-- press enter/return to continue or q to stop -- " - ) { |q| q.character = true } - command !~ /\A[qQ]\Z/ # Only continue paging if Q was not hit. - end - - # - # Wrap a sequence of _lines_ at _wrap_at_ characters per line. Existing - # newlines will not be affected by this process, but additional newlines - # may be added. - # - def wrap( text ) - wrapped = [ ] - text.each_line do |line| - while line =~ /([^\n]{#{@wrap_at + 1},})/ - search = $1.dup - replace = $1.dup - if index = replace.rindex(" ", @wrap_at) - replace[index, 1] = "\n" - replace.sub!(/\n[ \t]+/, "\n") - line.sub!(search, replace) - else - line[@wrap_at, 0] = "\n" - end - end - wrapped << line - end - return wrapped.join - end - - # - # Returns the length of the passed +string_with_escapes+, minus and color - # sequence escapes. - # - def actual_length( string_with_escapes ) - string_with_escapes.gsub(/\e\[\d{1,2}m/, "").length - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/color_scheme.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/color_scheme.rb deleted file mode 100644 index e7cbdf99..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/color_scheme.rb +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/local/bin/ruby -w - -# color_scheme.rb -# -# Created by Jeremy Hinegardner on 2007-01-24 -# Copyright 2007. All rights reserved -# -# This is Free Software. See LICENSE and COPYING for details - -require 'highline' - -class HighLine - # - # ColorScheme objects encapsulate a named set of colors to be used in the - # HighLine.colors() method call. For example, by applying a ColorScheme that - # has a :warning color then the following could be used: - # - # colors("This is a warning", :warning) - # - # A ColorScheme contains named sets of HighLine color constants. - # - # Example: Instantiating a color scheme, applying it to HighLine, - # and using it: - # - # ft = HighLine::ColorScheme.new do |cs| - # cs[:headline] = [ :bold, :yellow, :on_black ] - # cs[:horizontal_line] = [ :bold, :white ] - # cs[:even_row] = [ :green ] - # cs[:odd_row] = [ :magenta ] - # end - # - # HighLine.color_scheme = ft - # say("<%= color('Headline', :headline) %>") - # say("<%= color('-'*20, :horizontal_line) %>") - # i = true - # ("A".."D").each do |row| - # if i then - # say("<%= color('#{row}', :even_row ) %>") - # else - # say("<%= color('#{row}', :odd_row) %>") - # end - # i = !i - # end - # - # - class ColorScheme - # - # Create an instance of HighLine::ColorScheme. The customization can - # happen as a passed in Hash or via the yielded block. Key's are - # converted to :symbols and values are converted to HighLine - # constants. - # - def initialize( h = nil ) - @scheme = Hash.new - load_from_hash(h) unless h.nil? - yield self if block_given? - end - - # Load multiple colors from key/value pairs. - def load_from_hash( h ) - h.each_pair do |color_tag, constants| - self[color_tag] = constants - end - end - - # Does this color scheme include the given tag name? - def include?( color_tag ) - @scheme.keys.include?(to_symbol(color_tag)) - end - - # Allow the scheme to be accessed like a Hash. - def []( color_tag ) - @scheme[to_symbol(color_tag)] - end - - # Allow the scheme to be set like a Hash. - def []=( color_tag, constants ) - @scheme[to_symbol(color_tag)] = constants.map { |c| to_constant(c) } - end - - private - - # Return a normalized representation of a color name. - def to_symbol( t ) - t.to_s.downcase - end - - # Return a normalized representation of a color setting. - def to_constant( v ) - v = v.to_s if v.is_a?(Symbol) - if v.is_a?(String) then - HighLine.const_get(v.upcase) - else - v - end - end - end - - # A sample ColorScheme. - class SampleColorScheme < ColorScheme - # - # Builds the sample scheme with settings for :critical, - # :error, :warning, :notice, :info, - # :debug, :row_even, and :row_odd colors. - # - def initialize( h = nil ) - scheme = { - :critical => [ :yellow, :on_red ], - :error => [ :bold, :red ], - :warning => [ :bold, :yellow ], - :notice => [ :bold, :magenta ], - :info => [ :bold, :cyan ], - :debug => [ :bold, :green ], - :row_even => [ :cyan ], - :row_odd => [ :magenta ] - } - super(scheme) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/compatibility.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/compatibility.rb deleted file mode 100644 index ceaac255..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/compatibility.rb +++ /dev/null @@ -1,17 +0,0 @@ -unless STDIN.respond_to?(:getbyte) - class IO - alias_method :getbyte, :getc - end - - class StringIO - alias_method :getbyte, :getc - end -end - -unless "".respond_to?(:each_line) - - # Not a perfect translation, but sufficient for our needs. - class String - alias_method :each_line, :each - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/import.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/import.rb deleted file mode 100644 index 579a9734..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/import.rb +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/local/bin/ruby -w - -# import.rb -# -# Created by James Edward Gray II on 2005-04-26. -# Copyright 2005 Gray Productions. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -require "highline" -require "forwardable" - -$terminal = HighLine.new - -# -# require "highline/import" adds shortcut methods to Kernel, making -# agree(), ask(), choose() and say() globally available. This is handy for -# quick and dirty input and output. These methods use the HighLine object in -# the global variable $terminal, which is initialized to used -# $stdin and $stdout (you are free to change this). -# Otherwise, these methods are identical to their HighLine counterparts, see that -# class for detailed explanations. -# -module Kernel - extend Forwardable - def_delegators :$terminal, :agree, :ask, :choose, :say -end - -class Object - # - # Tries this object as a _first_answer_ for a HighLine::Question. See that - # attribute for details. - # - # *Warning*: This Object will be passed to String() before set. - # - def or_ask( *args, &details ) - ask(*args) do |question| - question.first_answer = String(self) unless nil? - - details.call(question) unless details.nil? - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/menu.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/menu.rb deleted file mode 100644 index ad992ac0..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/menu.rb +++ /dev/null @@ -1,395 +0,0 @@ -#!/usr/local/bin/ruby -w - -# menu.rb -# -# Created by Gregory Thomas Brown on 2005-05-10. -# Copyright 2005. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -require "highline/question" - -class HighLine - # - # Menu objects encapsulate all the details of a call to HighLine.choose(). - # Using the accessors and Menu.choice() and Menu.choices(), the block passed - # to HighLine.choose() can detail all aspects of menu display and control. - # - class Menu < Question - # - # Create an instance of HighLine::Menu. All customization is done - # through the passed block, which should call accessors and choice() and - # choices() as needed to define the Menu. Note that Menus are also - # Questions, so all that functionality is available to the block as - # well. - # - def initialize( ) - # - # Initialize Question objects with ignored values, we'll - # adjust ours as needed. - # - super("Ignored", [ ], &nil) # avoiding passing the block along - - @items = [ ] - @hidden_items = [ ] - @help = Hash.new("There's no help for that topic.") - - @index = :number - @index_suffix = ". " - @select_by = :index_or_name - @flow = :rows - @list_option = nil - @header = nil - @prompt = "? " - @layout = :list - @shell = false - @nil_on_handled = false - - # Override Questions responses, we'll set our own. - @responses = { } - # Context for action code. - @highline = nil - - yield self if block_given? - - init_help if @shell and not @help.empty? - update_responses # rebuild responses based on our settings - end - - # - # An _index_ to append to each menu item in display. See - # Menu.index=() for details. - # - attr_reader :index - # - # The String placed between an _index_ and a menu item. Defaults to - # ". ". Switches to " ", when _index_ is set to a String (like "-"). - # - attr_accessor :index_suffix - # - # The _select_by_ attribute controls how the user is allowed to pick a - # menu item. The available choices are: - # - # :index:: The user is allowed to type the numerical - # or alphetical index for their selection. - # :index_or_name:: Allows both methods from the - # :index option and the - # :name option. - # :name:: Menu items are selected by typing a portion - # of the item name that will be - # auto-completed. - # - attr_accessor :select_by - # - # This attribute is passed directly on as the mode to HighLine.list() by - # all the preset layouts. See that method for appropriate settings. - # - attr_accessor :flow - # - # This setting is passed on as the third parameter to HighLine.list() - # by all the preset layouts. See that method for details of its - # effects. Defaults to +nil+. - # - attr_accessor :list_option - # - # Used by all the preset layouts to display title and/or introductory - # information, when set. Defaults to +nil+. - # - attr_accessor :header - # - # Used by all the preset layouts to ask the actual question to fetch a - # menu selection from the user. Defaults to "? ". - # - attr_accessor :prompt - # - # An ERb _layout_ to use when displaying this Menu object. See - # Menu.layout=() for details. - # - attr_reader :layout - # - # When set to +true+, responses are allowed to be an entire line of - # input, including details beyond the command itself. Only the first - # "word" of input will be matched against the menu choices, but both the - # command selected and the rest of the line will be passed to provided - # action blocks. Defaults to +false+. - # - attr_accessor :shell - # - # When +true+, any selected item handled by provided action code, will - # return +nil+, instead of the results to the action code. This may - # prove handy when dealing with mixed menus where only the names of - # items without any code (and +nil+, of course) will be returned. - # Defaults to +false+. - # - attr_accessor :nil_on_handled - - # - # Adds _name_ to the list of available menu items. Menu items will be - # displayed in the order they are added. - # - # An optional _action_ can be associated with this name and if provided, - # it will be called if the item is selected. The result of the method - # will be returned, unless _nil_on_handled_ is set (when you would get - # +nil+ instead). In _shell_ mode, a provided block will be passed the - # command chosen and any details that followed the command. Otherwise, - # just the command is passed. The @highline variable is set to - # the current HighLine context before the action code is called and can - # thus be used for adding output and the like. - # - def choice( name, help = nil, &action ) - @items << [name, action] - - @help[name.to_s.downcase] = help unless help.nil? - end - - # - # A shortcut for multiple calls to the sister method choice(). Be - # warned: An _action_ set here will apply to *all* provided - # _names_. This is considered to be a feature, so you can easily - # hand-off interface processing to a different chunk of code. - # - def choices( *names, &action ) - names.each { |n| choice(n, &action) } - end - - # Identical to choice(), but the item will not be listed for the user. - def hidden( name, help = nil, &action ) - @hidden_items << [name, action] - - @help[name.to_s.downcase] = help unless help.nil? - end - - # - # Sets the indexing style for this Menu object. Indexes are appended to - # menu items, when displayed in list form. The available settings are: - # - # :number:: Menu items will be indexed numerically, starting - # with 1. This is the default method of indexing. - # :letter:: Items will be indexed alphabetically, starting - # with a. - # :none:: No index will be appended to menu items. - # any String:: Will be used as the literal _index_. - # - # Setting the _index_ to :none a literal String, also adjusts - # _index_suffix_ to a single space and _select_by_ to :none. - # Because of this, you should make a habit of setting the _index_ first. - # - def index=( style ) - @index = style - - # Default settings. - if @index == :none or @index.is_a?(String) - @index_suffix = " " - @select_by = :name - end - end - - # - # Initializes the help system by adding a :help choice, some - # action code, and the default help listing. - # - def init_help( ) - return if @items.include?(:help) - - topics = @help.keys.sort - help_help = @help.include?("help") ? @help["help"] : - "This command will display helpful messages about " + - "functionality, like this one. To see the help for " + - "a specific topic enter:\n\thelp [TOPIC]\nTry asking " + - "for help on any of the following:\n\n" + - "<%= list(#{topics.inspect}, :columns_across) %>" - choice(:help, help_help) do |command, topic| - topic.strip! - topic.downcase! - if topic.empty? - @highline.say(@help["help"]) - else - @highline.say("= #{topic}\n\n#{@help[topic]}") - end - end - end - - # - # Used to set help for arbitrary topics. Use the topic "help" - # to override the default message. - # - def help( topic, help ) - @help[topic] = help - end - - # - # Setting a _layout_ with this method also adjusts some other attributes - # of the Menu object, to ideal defaults for the chosen _layout_. To - # account for that, you probably want to set a _layout_ first in your - # configuration block, if needed. - # - # Accepted settings for _layout_ are: - # - # :list:: The default _layout_. The _header_ if set - # will appear at the top on its own line with - # a trailing colon. Then the list of menu - # items will follow. Finally, the _prompt_ - # will be used as the ask()-like question. - # :one_line:: A shorter _layout_ that fits on one line. - # The _header_ comes first followed by a - # colon and spaces, then the _prompt_ with menu - # items between trailing parenthesis. - # :menu_only:: Just the menu items, followed up by a likely - # short _prompt_. - # any ERb String:: Will be taken as the literal _layout_. This - # String can access @header, - # @menu and @prompt, but is - # otherwise evaluated in the typical HighLine - # context, to provide access to utilities like - # HighLine.list() primarily. - # - # If set to either :one_line, or :menu_only, _index_ - # will default to :none and _flow_ will default to - # :inline. - # - def layout=( new_layout ) - @layout = new_layout - - # Default settings. - case @layout - when :one_line, :menu_only - self.index = :none - @flow = :inline - end - end - - # - # This method returns all possible options for auto-completion, based - # on the settings of _index_ and _select_by_. - # - def options( ) - # add in any hidden menu commands - @items.concat(@hidden_items) - - by_index = if @index == :letter - l_index = "`" - @items.map { "#{l_index.succ!}" } - else - (1 .. @items.size).collect { |s| String(s) } - end - by_name = @items.collect { |c| c.first } - - case @select_by - when :index then - by_index - when :name - by_name - else - by_index + by_name - end - ensure - # make sure the hidden items are removed, before we return - @items.slice!(@items.size - @hidden_items.size, @hidden_items.size) - end - - # - # This method processes the auto-completed user selection, based on the - # rules for this Menu object. If an action was provided for the - # selection, it will be executed as described in Menu.choice(). - # - def select( highline_context, selection, details = nil ) - # add in any hidden menu commands - @items.concat(@hidden_items) - - # Find the selected action. - name, action = if selection =~ /^\d+$/ - @items[selection.to_i - 1] - else - l_index = "`" - index = @items.map { "#{l_index.succ!}" }.index(selection) - @items.find { |c| c.first == selection } or @items[index] - end - - # Run or return it. - if not @nil_on_handled and not action.nil? - @highline = highline_context - if @shell - action.call(name, details) - else - action.call(name) - end - elsif action.nil? - name - else - nil - end - ensure - # make sure the hidden items are removed, before we return - @items.slice!(@items.size - @hidden_items.size, @hidden_items.size) - end - - # - # Allows Menu objects to pass as Arrays, for use with HighLine.list(). - # This method returns all menu items to be displayed, complete with - # indexes. - # - def to_ary( ) - case @index - when :number - @items.map { |c| "#{@items.index(c) + 1}#{@index_suffix}#{c.first}" } - when :letter - l_index = "`" - @items.map { |c| "#{l_index.succ!}#{@index_suffix}#{c.first}" } - when :none - @items.map { |c| "#{c.first}" } - else - @items.map { |c| "#{index}#{@index_suffix}#{c.first}" } - end - end - - # - # Allows Menu to behave as a String, just like Question. Returns the - # _layout_ to be rendered, which is used by HighLine.say(). - # - def to_str( ) - case @layout - when :list - '<%= if @header.nil? then '' else "#{@header}:\n" end %>' + - "<%= list( @menu, #{@flow.inspect}, - #{@list_option.inspect} ) %>" + - "<%= @prompt %>" - when :one_line - '<%= if @header.nil? then '' else "#{@header}: " end %>' + - "<%= @prompt %>" + - "(<%= list( @menu, #{@flow.inspect}, - #{@list_option.inspect} ) %>)" + - "<%= @prompt[/\s*$/] %>" - when :menu_only - "<%= list( @menu, #{@flow.inspect}, - #{@list_option.inspect} ) %><%= @prompt %>" - else - @layout - end - end - - # - # This method will update the intelligent responses to account for - # Menu specific differences. This overrides the work done by - # Question.build_responses(). - # - def update_responses( ) - append_default unless default.nil? - @responses = { :ambiguous_completion => - "Ambiguous choice. " + - "Please choose one of #{options.inspect}.", - :ask_on_error => - "? ", - :invalid_type => - "You must enter a valid #{options}.", - :no_completion => - "You must choose one of " + - "#{options.inspect}.", - :not_in_range => - "Your answer isn't within the expected range " + - "(#{expected_range}).", - :not_valid => - "Your answer isn't valid (must match " + - "#{@validate.inspect})." }.merge(@responses) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/question.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/question.rb deleted file mode 100644 index b6cabcec..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/question.rb +++ /dev/null @@ -1,463 +0,0 @@ -#!/usr/local/bin/ruby -w - -# question.rb -# -# Created by James Edward Gray II on 2005-04-26. -# Copyright 2005 Gray Productions. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -require "optparse" -require "date" -require "pathname" - -class HighLine - # - # Question objects contain all the details of a single invocation of - # HighLine.ask(). The object is initialized by the parameters passed to - # HighLine.ask() and then queried to make sure each step of the input - # process is handled according to the users wishes. - # - class Question - # An internal HighLine error. User code does not need to trap this. - class NoAutoCompleteMatch < StandardError - # do nothing, just creating a unique error type - end - - # - # Create an instance of HighLine::Question. Expects a _question_ to ask - # (can be "") and an _answer_type_ to convert the answer to. - # The _answer_type_ parameter must be a type recongnized by - # Question.convert(). If given, a block is yeilded the new Question - # object to allow custom initializaion. - # - def initialize( question, answer_type ) - # initialize instance data - @question = question - @answer_type = answer_type - - @character = nil - @limit = nil - @echo = true - @readline = false - @whitespace = :strip - @case = nil - @default = nil - @validate = nil - @above = nil - @below = nil - @in = nil - @confirm = nil - @gather = false - @first_answer = nil - @directory = Pathname.new(File.expand_path(File.dirname($0))) - @glob = "*" - @responses = Hash.new - @overwrite = false - - # allow block to override settings - yield self if block_given? - - # finalize responses based on settings - build_responses - end - - # The ERb template of the question to be asked. - attr_accessor :question - # The type that will be used to convert this answer. - attr_accessor :answer_type - # - # Can be set to +true+ to use HighLine's cross-platform character reader - # instead of fetching an entire line of input. (Note: HighLine's - # character reader *ONLY* supports STDIN on Windows and Unix and may not - # work correctly if STDIN is redirected.) Can also be set to :getc - # to use that method on the input stream. - # - # *WARNING*: The _echo_ and _overwrite_ attributes for a question are - # ignored when using the :getc method. - # - attr_accessor :character - # - # Allows you to set a character limit for input. - # - # *WARNING*: This option forces a character by character read. - # - attr_accessor :limit - # - # Can be set to +true+ or +false+ to control whether or not input will - # be echoed back to the user. A setting of +true+ will cause echo to - # match input, but any other true value will be treated as to String to - # echo for each character typed. - # - # This requires HighLine's character reader. See the _character_ - # attribute for details. - # - # *Note*: When using HighLine to manage echo on Unix based systems, we - # recommend installing the termios gem. Without it, it's possible to type - # fast enough to have letters still show up (when reading character by - # character only). - # - attr_accessor :echo - # - # Use the Readline library to fetch input. This allows input editing as - # well as keeping a history. In addition, tab will auto-complete - # within an Array of choices or a file listing. - # - # *WARNING*: This option is incompatible with all of HighLine's - # character reading modes and it causes HighLine to ignore the - # specified _input_ stream. - # - attr_accessor :readline - # - # Used to control whitespace processing for the answer to this question. - # See HighLine::Question.remove_whitespace() for acceptable settings. - # - attr_accessor :whitespace - # - # Used to control character case processing for the answer to this question. - # See HighLine::Question.change_case() for acceptable settings. - # - attr_accessor :case - # Used to provide a default answer to this question. - attr_accessor :default - # - # If set to a Regexp, the answer must match (before type conversion). - # Can also be set to a Proc which will be called with the provided - # answer to validate with a +true+ or +false+ return. - # - attr_accessor :validate - # Used to control range checks for answer. - attr_accessor :above, :below - # If set, answer must pass an include?() check on this object. - attr_accessor :in - # - # Asks a yes or no confirmation question, to ensure a user knows what - # they have just agreed to. If set to +true+ the question will be, - # "Are you sure? " Any other true value for this attribute is assumed - # to be the question to ask. When +false+ or +nil+ (the default), - # answers are not confirmed. - # - attr_accessor :confirm - # - # When set, the user will be prompted for multiple answers which will - # be collected into an Array or Hash and returned as the final answer. - # - # You can set _gather_ to an Integer to have an Array of exactly that - # many answers collected, or a String/Regexp to match an end input which - # will not be returned in the Array. - # - # Optionally _gather_ can be set to a Hash. In this case, the question - # will be asked once for each key and the answers will be returned in a - # Hash, mapped by key. The @key variable is set before each - # question is evaluated, so you can use it in your question. - # - attr_accessor :gather - # - # When set to a non *nil* value, this will be tried as an answer to the - # question. If this answer passes validations, it will become the result - # without the user ever being prompted. Otherwise this value is discarded, - # and this Question is resolved as a normal call to HighLine.ask(). - # - attr_writer :first_answer - # - # The directory from which a user will be allowed to select files, when - # File or Pathname is specified as an _answer_type_. Initially set to - # Pathname.new(File.expand_path(File.dirname($0))). - # - attr_accessor :directory - # - # The glob pattern used to limit file selection when File or Pathname is - # specified as an _answer_type_. Initially set to "*". - # - attr_accessor :glob - # - # A Hash that stores the various responses used by HighLine to notify - # the user. The currently used responses and their purpose are as - # follows: - # - # :ambiguous_completion:: Used to notify the user of an - # ambiguous answer the auto-completion - # system cannot resolve. - # :ask_on_error:: This is the question that will be - # redisplayed to the user in the event - # of an error. Can be set to - # :question to repeat the - # original question. - # :invalid_type:: The error message shown when a type - # conversion fails. - # :no_completion:: Used to notify the user that their - # selection does not have a valid - # auto-completion match. - # :not_in_range:: Used to notify the user that a - # provided answer did not satisfy - # the range requirement tests. - # :not_valid:: The error message shown when - # validation checks fail. - # - attr_reader :responses - # - # When set to +true+ the question is asked, but output does not progress to - # the next line. The Cursor is moved back to the beginning of the question - # line and it is cleared so that all the contents of the line disappear from - # the screen. - # - attr_accessor :overwrite - - # - # Returns the provided _answer_string_ or the default answer for this - # Question if a default was set and the answer is empty. - # - def answer_or_default( answer_string ) - if answer_string.length == 0 and not @default.nil? - @default - else - answer_string - end - end - - # - # Called late in the initialization process to build intelligent - # responses based on the details of this Question object. - # - def build_responses( ) - ### WARNING: This code is quasi-duplicated in ### - ### Menu.update_responses(). Check there too when ### - ### making changes! ### - append_default unless default.nil? - @responses = { :ambiguous_completion => - "Ambiguous choice. " + - "Please choose one of #{@answer_type.inspect}.", - :ask_on_error => - "? ", - :invalid_type => - "You must enter a valid #{@answer_type}.", - :no_completion => - "You must choose one of " + - "#{@answer_type.inspect}.", - :not_in_range => - "Your answer isn't within the expected range " + - "(#{expected_range}).", - :not_valid => - "Your answer isn't valid (must match " + - "#{@validate.inspect})." }.merge(@responses) - ### WARNING: This code is quasi-duplicated in ### - ### Menu.update_responses(). Check there too when ### - ### making changes! ### - end - - # - # Returns the provided _answer_string_ after changing character case by - # the rules of this Question. Valid settings for whitespace are: - # - # +nil+:: Do not alter character case. - # (Default.) - # :up:: Calls upcase(). - # :upcase:: Calls upcase(). - # :down:: Calls downcase(). - # :downcase:: Calls downcase(). - # :capitalize:: Calls capitalize(). - # - # An unrecognized choice (like :none) is treated as +nil+. - # - def change_case( answer_string ) - if [:up, :upcase].include?(@case) - answer_string.upcase - elsif [:down, :downcase].include?(@case) - answer_string.downcase - elsif @case == :capitalize - answer_string.capitalize - else - answer_string - end - end - - # - # Transforms the given _answer_string_ into the expected type for this - # Question. Currently supported conversions are: - # - # [...]:: Answer must be a member of the passed Array. - # Auto-completion is used to expand partial - # answers. - # lambda {...}:: Answer is passed to lambda for conversion. - # Date:: Date.parse() is called with answer. - # DateTime:: DateTime.parse() is called with answer. - # File:: The entered file name is auto-completed in - # terms of _directory_ + _glob_, opened, and - # returned. - # Float:: Answer is converted with Kernel.Float(). - # Integer:: Answer is converted with Kernel.Integer(). - # +nil+:: Answer is left in String format. (Default.) - # Pathname:: Same as File, save that a Pathname object is - # returned. - # String:: Answer is converted with Kernel.String(). - # Regexp:: Answer is fed to Regexp.new(). - # Symbol:: The method to_sym() is called on answer and - # the result returned. - # any other Class:: The answer is passed on to - # Class.parse(). - # - # This method throws ArgumentError, if the conversion cannot be - # completed for any reason. - # - def convert( answer_string ) - if @answer_type.nil? - answer_string - elsif [Float, Integer, String].include?(@answer_type) - Kernel.send(@answer_type.to_s.to_sym, answer_string) - elsif @answer_type == Symbol - answer_string.to_sym - elsif @answer_type == Regexp - Regexp.new(answer_string) - elsif @answer_type.is_a?(Array) or [File, Pathname].include?(@answer_type) - # cheating, using OptionParser's Completion module - choices = selection - choices.extend(OptionParser::Completion) - answer = choices.complete(answer_string) - if answer.nil? - raise NoAutoCompleteMatch - end - if @answer_type.is_a?(Array) - answer.last - elsif @answer_type == File - File.open(File.join(@directory.to_s, answer.last)) - else - Pathname.new(File.join(@directory.to_s, answer.last)) - end - elsif [Date, DateTime].include?(@answer_type) or @answer_type.is_a?(Class) - @answer_type.parse(answer_string) - elsif @answer_type.is_a?(Proc) - @answer_type[answer_string] - end - end - - # Returns a english explination of the current range settings. - def expected_range( ) - expected = [ ] - - expected << "above #{@above}" unless @above.nil? - expected << "below #{@below}" unless @below.nil? - expected << "included in #{@in.inspect}" unless @in.nil? - - case expected.size - when 0 then "" - when 1 then expected.first - when 2 then expected.join(" and ") - else expected[0..-2].join(", ") + ", and #{expected.last}" - end - end - - # Returns _first_answer_, which will be unset following this call. - def first_answer( ) - @first_answer - ensure - @first_answer = nil - end - - # Returns true if _first_answer_ is set. - def first_answer?( ) - not @first_answer.nil? - end - - # - # Returns +true+ if the _answer_object_ is greater than the _above_ - # attribute, less than the _below_ attribute and included?()ed in the - # _in_ attribute. Otherwise, +false+ is returned. Any +nil+ attributes - # are not checked. - # - def in_range?( answer_object ) - (@above.nil? or answer_object > @above) and - (@below.nil? or answer_object < @below) and - (@in.nil? or @in.include?(answer_object)) - end - - # - # Returns the provided _answer_string_ after processing whitespace by - # the rules of this Question. Valid settings for whitespace are: - # - # +nil+:: Do not alter whitespace. - # :strip:: Calls strip(). (Default.) - # :chomp:: Calls chomp(). - # :collapse:: Collapses all whitspace runs to a - # single space. - # :strip_and_collapse:: Calls strip(), then collapses all - # whitspace runs to a single space. - # :chomp_and_collapse:: Calls chomp(), then collapses all - # whitspace runs to a single space. - # :remove:: Removes all whitespace. - # - # An unrecognized choice (like :none) is treated as +nil+. - # - # This process is skipped, for single character input. - # - def remove_whitespace( answer_string ) - if @whitespace.nil? - answer_string - elsif [:strip, :chomp].include?(@whitespace) - answer_string.send(@whitespace) - elsif @whitespace == :collapse - answer_string.gsub(/\s+/, " ") - elsif [:strip_and_collapse, :chomp_and_collapse].include?(@whitespace) - result = answer_string.send(@whitespace.to_s[/^[a-z]+/]) - result.gsub(/\s+/, " ") - elsif @whitespace == :remove - answer_string.gsub(/\s+/, "") - else - answer_string - end - end - - # - # Returns an Array of valid answers to this question. These answers are - # only known when _answer_type_ is set to an Array of choices, File, or - # Pathname. Any other time, this method will return an empty Array. - # - def selection( ) - if @answer_type.is_a?(Array) - @answer_type - elsif [File, Pathname].include?(@answer_type) - Dir[File.join(@directory.to_s, @glob)].map do |file| - File.basename(file) - end - else - [ ] - end - end - - # Stringifies the question to be asked. - def to_str( ) - @question - end - - # - # Returns +true+ if the provided _answer_string_ is accepted by the - # _validate_ attribute or +false+ if it's not. - # - # It's important to realize that an answer is validated after whitespace - # and case handling. - # - def valid_answer?( answer_string ) - @validate.nil? or - (@validate.is_a?(Regexp) and answer_string =~ @validate) or - (@validate.is_a?(Proc) and @validate[answer_string]) - end - - private - - # - # Adds the default choice to the end of question between |...|. - # Trailing whitespace is preserved so the function of HighLine.say() is - # not affected. - # - def append_default( ) - if @question =~ /([\t ]+)\Z/ - @question << "|#{@default}|#{$1}" - elsif @question == "" - @question << "|#{@default}| " - elsif @question[-1, 1] == "\n" - @question[-2, 0] = " |#{@default}|" - else - @question << " |#{@default}|" - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/system_extensions.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/system_extensions.rb deleted file mode 100644 index 60adbf0d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/lib/highline/system_extensions.rb +++ /dev/null @@ -1,193 +0,0 @@ -#!/usr/local/bin/ruby -w - -# system_extensions.rb -# -# Created by James Edward Gray II on 2006-06-14. -# Copyright 2006 Gray Productions. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -class HighLine - module SystemExtensions - module_function - - # - # This section builds character reading and terminal size functions - # to suit the proper platform we're running on. Be warned: Here be - # dragons! - # - begin - # Cygwin will look like Windows, but we want to treat it like a Posix OS: - raise LoadError, "Cygwin is a Posix OS." if RUBY_PLATFORM =~ /\bcygwin\b/i - - require "Win32API" # See if we're on Windows. - - CHARACTER_MODE = "Win32API" # For Debugging purposes only. - - # - # Windows savvy getc(). - # - # - def get_character( input = STDIN ) - @stdin_handle ||= GetStdHandle(STD_INPUT_HANDLE) - - begin - SetConsoleEcho(@stdin_handle, false) - input.getbyte - ensure - SetConsoleEcho(@stdin_handle, true) - end - end - - # A Windows savvy method to fetch the console columns, and rows. - def terminal_size - stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE) - - bufx, bufy, curx, cury, wattr, left, top, right, bottom, maxx, maxy = - GetConsoleScreenBufferInfo(stdout_handle) - return right - left + 1, bottom - top + 1 - end - - # windows savvy console echo toggler - def SetConsoleEcho( console_handle, on ) - mode = GetConsoleMode(console_handle) - - # toggle the console echo bit - if on - mode |= ENABLE_ECHO_INPUT - else - mode &= ~ENABLE_ECHO_INPUT - end - - ok = SetConsoleMode(console_handle, mode) - end - - # win32 console APIs - - STD_INPUT_HANDLE = -10 - STD_OUTPUT_HANDLE = -11 - STD_ERROR_HANDLE = -12 - - ENABLE_PROCESSED_INPUT = 0x0001 - ENABLE_LINE_INPUT = 0x0002 - ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002 - ENABLE_ECHO_INPUT = 0x0004 - ENABLE_WINDOW_INPUT = 0x0008 - ENABLE_MOUSE_INPUT = 0x0010 - ENABLE_INSERT_MODE = 0x0020 - ENABLE_QUICK_EDIT_MODE = 0x0040 - - @@apiGetStdHandle = nil - @@apiGetConsoleMode = nil - @@apiSetConsoleMode = nil - @@apiGetConsoleScreenBufferInfo = nil - - def GetStdHandle( handle_type ) - @@apiGetStdHandle ||= Win32API.new( "kernel32", "GetStdHandle", - ['L'], 'L' ) - - @@apiGetStdHandle.call( handle_type ) - end - - def GetConsoleMode( console_handle ) - @@apiGetConsoleMode ||= Win32API.new( "kernel32", "GetConsoleMode", - ['L', 'P'], 'I' ) - - mode = ' ' * 4 - @@apiGetConsoleMode.call(console_handle, mode) - mode.unpack('L')[0] - end - - def SetConsoleMode( console_handle, mode ) - @@apiSetConsoleMode ||= Win32API.new( "kernel32", "SetConsoleMode", - ['L', 'L'], 'I' ) - - @@apiSetConsoleMode.call(console_handle, mode) != 0 - end - - def GetConsoleScreenBufferInfo( console_handle ) - @@apiGetConsoleScreenBufferInfo ||= - Win32API.new( "kernel32", "GetConsoleScreenBufferInfo", - ['L', 'P'], 'L' ) - - format = 'SSSSSssssSS' - buf = ([0] * format.size).pack(format) - @@apiGetConsoleScreenBufferInfo.call(console_handle, buf) - buf.unpack(format) - end - - rescue LoadError # If we're not on Windows try... - begin - require "termios" # Unix, first choice. - - CHARACTER_MODE = "termios" # For Debugging purposes only. - - # - # Unix savvy getc(). (First choice.) - # - # *WARNING*: This method requires the "termios" library! - # - def get_character( input = STDIN ) - old_settings = Termios.getattr(input) - - new_settings = old_settings.dup - new_settings.c_lflag &= ~(Termios::ECHO | Termios::ICANON) - new_settings.c_cc[Termios::VMIN] = 1 - - begin - Termios.setattr(input, Termios::TCSANOW, new_settings) - input.getbyte - ensure - Termios.setattr(input, Termios::TCSANOW, old_settings) - end - end - rescue LoadError # If our first choice fails, default. - CHARACTER_MODE = "stty" # For Debugging purposes only. - - # - # Unix savvy getc(). (Second choice.) - # - # *WARNING*: This method requires the external "stty" program! - # - def get_character( input = STDIN ) - raw_no_echo_mode - - begin - input.getbyte - ensure - restore_mode - end - end - - # - # Switched the input mode to raw and disables echo. - # - # *WARNING*: This method requires the external "stty" program! - # - def raw_no_echo_mode - @state = `stty -g` - system "stty raw -echo cbreak isig" - end - - # - # Restores a previously saved input mode. - # - # *WARNING*: This method requires the external "stty" program! - # - def restore_mode - system "stty #{@state}" - end - end - - # A Unix savvy method to fetch the console columns, and rows. - def terminal_size - if /solaris/ =~ RUBY_PLATFORM and - `stty` =~ /\brows = (\d+).*\bcolumns = (\d+)/ - [$2, $1].map { |c| x.to_i } - else - `stty size`.split.map { |x| x.to_i }.reverse - end - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/setup.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/setup.rb deleted file mode 100644 index 0807023d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/setup.rb +++ /dev/null @@ -1,1360 +0,0 @@ -# -# setup.rb -# -# Copyright (c) 2000-2004 Minero Aoki -# -# This program is free software. -# You can distribute/modify this program under the terms of -# the GNU LGPL, Lesser General Public License version 2.1. -# - -unless Enumerable.method_defined?(:map) # Ruby 1.4.6 - module Enumerable - alias map collect - end -end - -unless File.respond_to?(:read) # Ruby 1.6 - def File.read(fname) - open(fname) {|f| - return f.read - } - end -end - -def File.binread(fname) - open(fname, 'rb') {|f| - return f.read - } -end - -# for corrupted windows stat(2) -def File.dir?(path) - File.directory?((path[-1,1] == '/') ? path : path + '/') -end - - -class SetupError < StandardError; end - -def setup_rb_error(msg) - raise SetupError, msg -end - -# -# Config -# - -if arg = ARGV.detect {|arg| /\A--rbconfig=/ =~ arg } - ARGV.delete(arg) - require arg.split(/=/, 2)[1] - $".push 'rbconfig.rb' -else - require 'rbconfig' -end - -def multipackage_install? - FileTest.directory?(File.dirname($0) + '/packages') -end - - -class ConfigItem - def initialize(name, template, default, desc) - @name = name.freeze - @template = template - @value = default - @default = default.dup.freeze - @description = desc - end - - attr_reader :name - attr_reader :description - - attr_accessor :default - alias help_default default - - def help_opt - "--#{@name}=#{@template}" - end - - def value - @value - end - - def eval(table) - @value.gsub(%r<\$([^/]+)>) { table[$1] } - end - - def set(val) - @value = check(val) - end - - private - - def check(val) - setup_rb_error "config: --#{name} requires argument" unless val - val - end -end - -class BoolItem < ConfigItem - def config_type - 'bool' - end - - def help_opt - "--#{@name}" - end - - private - - def check(val) - return 'yes' unless val - unless /\A(y(es)?|n(o)?|t(rue)?|f(alse))\z/i =~ val - setup_rb_error "config: --#{@name} accepts only yes/no for argument" - end - (/\Ay(es)?|\At(rue)/i =~ value) ? 'yes' : 'no' - end -end - -class PathItem < ConfigItem - def config_type - 'path' - end - - private - - def check(path) - setup_rb_error "config: --#{@name} requires argument" unless path - path[0,1] == '$' ? path : File.expand_path(path) - end -end - -class ProgramItem < ConfigItem - def config_type - 'program' - end -end - -class SelectItem < ConfigItem - def initialize(name, template, default, desc) - super - @ok = template.split('/') - end - - def config_type - 'select' - end - - private - - def check(val) - unless @ok.include?(val.strip) - setup_rb_error "config: use --#{@name}=#{@template} (#{val})" - end - val.strip - end -end - -class PackageSelectionItem < ConfigItem - def initialize(name, template, default, help_default, desc) - super name, template, default, desc - @help_default = help_default - end - - attr_reader :help_default - - def config_type - 'package' - end - - private - - def check(val) - unless File.dir?("packages/#{val}") - setup_rb_error "config: no such package: #{val}" - end - val - end -end - -class ConfigTable_class - - def initialize(items) - @items = items - @table = {} - items.each do |i| - @table[i.name] = i - end - ALIASES.each do |ali, name| - @table[ali] = @table[name] - end - end - - include Enumerable - - def each(&block) - @items.each(&block) - end - - def key?(name) - @table.key?(name) - end - - def lookup(name) - @table[name] or raise ArgumentError, "no such config item: #{name}" - end - - def add(item) - @items.push item - @table[item.name] = item - end - - def remove(name) - item = lookup(name) - @items.delete_if {|i| i.name == name } - @table.delete_if {|name, i| i.name == name } - item - end - - def new - dup() - end - - def savefile - '.config' - end - - def load - begin - t = dup() - File.foreach(savefile()) do |line| - k, v = *line.split(/=/, 2) - t[k] = v.strip - end - t - rescue Errno::ENOENT - setup_rb_error $!.message + "#{File.basename($0)} config first" - end - end - - def save - @items.each {|i| i.value } - File.open(savefile(), 'w') {|f| - @items.each do |i| - f.printf "%s=%s\n", i.name, i.value if i.value - end - } - end - - def [](key) - lookup(key).eval(self) - end - - def []=(key, val) - lookup(key).set val - end - -end - -c = ::Config::CONFIG - -rubypath = c['bindir'] + '/' + c['ruby_install_name'] - -major = c['MAJOR'].to_i -minor = c['MINOR'].to_i -teeny = c['TEENY'].to_i -version = "#{major}.#{minor}" - -# ruby ver. >= 1.4.4? -newpath_p = ((major >= 2) or - ((major == 1) and - ((minor >= 5) or - ((minor == 4) and (teeny >= 4))))) - -if c['rubylibdir'] - # V < 1.6.3 - _stdruby = c['rubylibdir'] - _siteruby = c['sitedir'] - _siterubyver = c['sitelibdir'] - _siterubyverarch = c['sitearchdir'] -elsif newpath_p - # 1.4.4 <= V <= 1.6.3 - _stdruby = "$prefix/lib/ruby/#{version}" - _siteruby = c['sitedir'] - _siterubyver = "$siteruby/#{version}" - _siterubyverarch = "$siterubyver/#{c['arch']}" -else - # V < 1.4.4 - _stdruby = "$prefix/lib/ruby/#{version}" - _siteruby = "$prefix/lib/ruby/#{version}/site_ruby" - _siterubyver = _siteruby - _siterubyverarch = "$siterubyver/#{c['arch']}" -end -libdir = '-* dummy libdir *-' -stdruby = '-* dummy rubylibdir *-' -siteruby = '-* dummy site_ruby *-' -siterubyver = '-* dummy site_ruby version *-' -parameterize = lambda {|path| - path.sub(/\A#{Regexp.quote(c['prefix'])}/, '$prefix')\ - .sub(/\A#{Regexp.quote(libdir)}/, '$libdir')\ - .sub(/\A#{Regexp.quote(stdruby)}/, '$stdruby')\ - .sub(/\A#{Regexp.quote(siteruby)}/, '$siteruby')\ - .sub(/\A#{Regexp.quote(siterubyver)}/, '$siterubyver') -} -libdir = parameterize.call(c['libdir']) -stdruby = parameterize.call(_stdruby) -siteruby = parameterize.call(_siteruby) -siterubyver = parameterize.call(_siterubyver) -siterubyverarch = parameterize.call(_siterubyverarch) - -if arg = c['configure_args'].split.detect {|arg| /--with-make-prog=/ =~ arg } - makeprog = arg.sub(/'/, '').split(/=/, 2)[1] -else - makeprog = 'make' -end - -common_conf = [ - PathItem.new('prefix', 'path', c['prefix'], - 'path prefix of target environment'), - PathItem.new('bindir', 'path', parameterize.call(c['bindir']), - 'the directory for commands'), - PathItem.new('libdir', 'path', libdir, - 'the directory for libraries'), - PathItem.new('datadir', 'path', parameterize.call(c['datadir']), - 'the directory for shared data'), - PathItem.new('mandir', 'path', parameterize.call(c['mandir']), - 'the directory for man pages'), - PathItem.new('sysconfdir', 'path', parameterize.call(c['sysconfdir']), - 'the directory for man pages'), - PathItem.new('stdruby', 'path', stdruby, - 'the directory for standard ruby libraries'), - PathItem.new('siteruby', 'path', siteruby, - 'the directory for version-independent aux ruby libraries'), - PathItem.new('siterubyver', 'path', siterubyver, - 'the directory for aux ruby libraries'), - PathItem.new('siterubyverarch', 'path', siterubyverarch, - 'the directory for aux ruby binaries'), - PathItem.new('rbdir', 'path', '$siterubyver', - 'the directory for ruby scripts'), - PathItem.new('sodir', 'path', '$siterubyverarch', - 'the directory for ruby extentions'), - PathItem.new('rubypath', 'path', rubypath, - 'the path to set to #! line'), - ProgramItem.new('rubyprog', 'name', rubypath, - 'the ruby program using for installation'), - ProgramItem.new('makeprog', 'name', makeprog, - 'the make program to compile ruby extentions'), - SelectItem.new('shebang', 'all/ruby/never', 'ruby', - 'shebang line (#!) editing mode'), - BoolItem.new('without-ext', 'yes/no', 'no', - 'does not compile/install ruby extentions') -] -class ConfigTable_class # open again - ALIASES = { - 'std-ruby' => 'stdruby', - 'site-ruby-common' => 'siteruby', # For backward compatibility - 'site-ruby' => 'siterubyver', # For backward compatibility - 'bin-dir' => 'bindir', - 'bin-dir' => 'bindir', - 'rb-dir' => 'rbdir', - 'so-dir' => 'sodir', - 'data-dir' => 'datadir', - 'ruby-path' => 'rubypath', - 'ruby-prog' => 'rubyprog', - 'ruby' => 'rubyprog', - 'make-prog' => 'makeprog', - 'make' => 'makeprog' - } -end -multipackage_conf = [ - PackageSelectionItem.new('with', 'name,name...', '', 'ALL', - 'package names that you want to install'), - PackageSelectionItem.new('without', 'name,name...', '', 'NONE', - 'package names that you do not want to install') -] -if multipackage_install? - ConfigTable = ConfigTable_class.new(common_conf + multipackage_conf) -else - ConfigTable = ConfigTable_class.new(common_conf) -end - - -module MetaConfigAPI - - def eval_file_ifexist(fname) - instance_eval File.read(fname), fname, 1 if File.file?(fname) - end - - def config_names - ConfigTable.map {|i| i.name } - end - - def config?(name) - ConfigTable.key?(name) - end - - def bool_config?(name) - ConfigTable.lookup(name).config_type == 'bool' - end - - def path_config?(name) - ConfigTable.lookup(name).config_type == 'path' - end - - def value_config?(name) - case ConfigTable.lookup(name).config_type - when 'bool', 'path' - true - else - false - end - end - - def add_config(item) - ConfigTable.add item - end - - def add_bool_config(name, default, desc) - ConfigTable.add BoolItem.new(name, 'yes/no', default ? 'yes' : 'no', desc) - end - - def add_path_config(name, default, desc) - ConfigTable.add PathItem.new(name, 'path', default, desc) - end - - def set_config_default(name, default) - ConfigTable.lookup(name).default = default - end - - def remove_config(name) - ConfigTable.remove(name) - end - -end - - -# -# File Operations -# - -module FileOperations - - def mkdir_p(dirname, prefix = nil) - dirname = prefix + File.expand_path(dirname) if prefix - $stderr.puts "mkdir -p #{dirname}" if verbose? - return if no_harm? - - # does not check '/'... it's too abnormal case - dirs = File.expand_path(dirname).split(%r<(?=/)>) - if /\A[a-z]:\z/i =~ dirs[0] - disk = dirs.shift - dirs[0] = disk + dirs[0] - end - dirs.each_index do |idx| - path = dirs[0..idx].join('') - Dir.mkdir path unless File.dir?(path) - end - end - - def rm_f(fname) - $stderr.puts "rm -f #{fname}" if verbose? - return if no_harm? - - if File.exist?(fname) or File.symlink?(fname) - File.chmod 0777, fname - File.unlink fname - end - end - - def rm_rf(dn) - $stderr.puts "rm -rf #{dn}" if verbose? - return if no_harm? - - Dir.chdir dn - Dir.foreach('.') do |fn| - next if fn == '.' - next if fn == '..' - if File.dir?(fn) - verbose_off { - rm_rf fn - } - else - verbose_off { - rm_f fn - } - end - end - Dir.chdir '..' - Dir.rmdir dn - end - - def move_file(src, dest) - File.unlink dest if File.exist?(dest) - begin - File.rename src, dest - rescue - File.open(dest, 'wb') {|f| f.write File.binread(src) } - File.chmod File.stat(src).mode, dest - File.unlink src - end - end - - def install(from, dest, mode, prefix = nil) - $stderr.puts "install #{from} #{dest}" if verbose? - return if no_harm? - - realdest = prefix ? prefix + File.expand_path(dest) : dest - realdest = File.join(realdest, File.basename(from)) if File.dir?(realdest) - str = File.binread(from) - if diff?(str, realdest) - verbose_off { - rm_f realdest if File.exist?(realdest) - } - File.open(realdest, 'wb') {|f| - f.write str - } - File.chmod mode, realdest - - File.open("#{objdir_root()}/InstalledFiles", 'a') {|f| - if prefix - f.puts realdest.sub(prefix, '') - else - f.puts realdest - end - } - end - end - - def diff?(new_content, path) - return true unless File.exist?(path) - new_content != File.binread(path) - end - - def command(str) - $stderr.puts str if verbose? - system str or raise RuntimeError, "'system #{str}' failed" - end - - def ruby(str) - command config('rubyprog') + ' ' + str - end - - def make(task = '') - command config('makeprog') + ' ' + task - end - - def extdir?(dir) - File.exist?(dir + '/MANIFEST') - end - - def all_files_in(dirname) - Dir.open(dirname) {|d| - return d.select {|ent| File.file?("#{dirname}/#{ent}") } - } - end - - REJECT_DIRS = %w( - CVS SCCS RCS CVS.adm .svn - ) - - def all_dirs_in(dirname) - Dir.open(dirname) {|d| - return d.select {|n| File.dir?("#{dirname}/#{n}") } - %w(. ..) - REJECT_DIRS - } - end - -end - - -# -# Main Installer -# - -module HookUtils - - def run_hook(name) - try_run_hook "#{curr_srcdir()}/#{name}" or - try_run_hook "#{curr_srcdir()}/#{name}.rb" - end - - def try_run_hook(fname) - return false unless File.file?(fname) - begin - instance_eval File.read(fname), fname, 1 - rescue - setup_rb_error "hook #{fname} failed:\n" + $!.message - end - true - end - -end - - -module HookScriptAPI - - def get_config(key) - @config[key] - end - - alias config get_config - - def set_config(key, val) - @config[key] = val - end - - # - # srcdir/objdir (works only in the package directory) - # - - #abstract srcdir_root - #abstract objdir_root - #abstract relpath - - def curr_srcdir - "#{srcdir_root()}/#{relpath()}" - end - - def curr_objdir - "#{objdir_root()}/#{relpath()}" - end - - def srcfile(path) - "#{curr_srcdir()}/#{path}" - end - - def srcexist?(path) - File.exist?(srcfile(path)) - end - - def srcdirectory?(path) - File.dir?(srcfile(path)) - end - - def srcfile?(path) - File.file? srcfile(path) - end - - def srcentries(path = '.') - Dir.open("#{curr_srcdir()}/#{path}") {|d| - return d.to_a - %w(. ..) - } - end - - def srcfiles(path = '.') - srcentries(path).select {|fname| - File.file?(File.join(curr_srcdir(), path, fname)) - } - end - - def srcdirectories(path = '.') - srcentries(path).select {|fname| - File.dir?(File.join(curr_srcdir(), path, fname)) - } - end - -end - - -class ToplevelInstaller - - Version = '3.3.1' - Copyright = 'Copyright (c) 2000-2004 Minero Aoki' - - TASKS = [ - [ 'all', 'do config, setup, then install' ], - [ 'config', 'saves your configurations' ], - [ 'show', 'shows current configuration' ], - [ 'setup', 'compiles ruby extentions and others' ], - [ 'install', 'installs files' ], - [ 'clean', "does `make clean' for each extention" ], - [ 'distclean',"does `make distclean' for each extention" ] - ] - - def ToplevelInstaller.invoke - instance().invoke - end - - @singleton = nil - - def ToplevelInstaller.instance - @singleton ||= new(File.dirname($0)) - @singleton - end - - include MetaConfigAPI - - def initialize(ardir_root) - @config = nil - @options = { 'verbose' => true } - @ardir = File.expand_path(ardir_root) - end - - def inspect - "#<#{self.class} #{__id__()}>" - end - - def invoke - run_metaconfigs - case task = parsearg_global() - when nil, 'all' - @config = load_config('config') - parsearg_config - init_installers - exec_config - exec_setup - exec_install - else - @config = load_config(task) - __send__ "parsearg_#{task}" - init_installers - __send__ "exec_#{task}" - end - end - - def run_metaconfigs - eval_file_ifexist "#{@ardir}/metaconfig" - end - - def load_config(task) - case task - when 'config' - ConfigTable.new - when 'clean', 'distclean' - if File.exist?(ConfigTable.savefile) - then ConfigTable.load - else ConfigTable.new - end - else - ConfigTable.load - end - end - - def init_installers - @installer = Installer.new(@config, @options, @ardir, File.expand_path('.')) - end - - # - # Hook Script API bases - # - - def srcdir_root - @ardir - end - - def objdir_root - '.' - end - - def relpath - '.' - end - - # - # Option Parsing - # - - def parsearg_global - valid_task = /\A(?:#{TASKS.map {|task,desc| task }.join '|'})\z/ - - while arg = ARGV.shift - case arg - when /\A\w+\z/ - setup_rb_error "invalid task: #{arg}" unless valid_task =~ arg - return arg - - when '-q', '--quiet' - @options['verbose'] = false - - when '--verbose' - @options['verbose'] = true - - when '-h', '--help' - print_usage $stdout - exit 0 - - when '-v', '--version' - puts "#{File.basename($0)} version #{Version}" - exit 0 - - when '--copyright' - puts Copyright - exit 0 - - else - setup_rb_error "unknown global option '#{arg}'" - end - end - - nil - end - - - def parsearg_no_options - unless ARGV.empty? - setup_rb_error "#{task}: unknown options: #{ARGV.join ' '}" - end - end - - alias parsearg_show parsearg_no_options - alias parsearg_setup parsearg_no_options - alias parsearg_clean parsearg_no_options - alias parsearg_distclean parsearg_no_options - - def parsearg_config - re = /\A--(#{ConfigTable.map {|i| i.name }.join('|')})(?:=(.*))?\z/ - @options['config-opt'] = [] - - while i = ARGV.shift - if /\A--?\z/ =~ i - @options['config-opt'] = ARGV.dup - break - end - m = re.match(i) or setup_rb_error "config: unknown option #{i}" - name, value = *m.to_a[1,2] - @config[name] = value - end - end - - def parsearg_install - @options['no-harm'] = false - @options['install-prefix'] = '' - while a = ARGV.shift - case a - when /\A--no-harm\z/ - @options['no-harm'] = true - when /\A--prefix=(.*)\z/ - path = $1 - path = File.expand_path(path) unless path[0,1] == '/' - @options['install-prefix'] = path - else - setup_rb_error "install: unknown option #{a}" - end - end - end - - def print_usage(out) - out.puts 'Typical Installation Procedure:' - out.puts " $ ruby #{File.basename $0} config" - out.puts " $ ruby #{File.basename $0} setup" - out.puts " # ruby #{File.basename $0} install (may require root privilege)" - out.puts - out.puts 'Detailed Usage:' - out.puts " ruby #{File.basename $0} " - out.puts " ruby #{File.basename $0} [] []" - - fmt = " %-24s %s\n" - out.puts - out.puts 'Global options:' - out.printf fmt, '-q,--quiet', 'suppress message outputs' - out.printf fmt, ' --verbose', 'output messages verbosely' - out.printf fmt, '-h,--help', 'print this message' - out.printf fmt, '-v,--version', 'print version and quit' - out.printf fmt, ' --copyright', 'print copyright and quit' - out.puts - out.puts 'Tasks:' - TASKS.each do |name, desc| - out.printf fmt, name, desc - end - - fmt = " %-24s %s [%s]\n" - out.puts - out.puts 'Options for CONFIG or ALL:' - ConfigTable.each do |item| - out.printf fmt, item.help_opt, item.description, item.help_default - end - out.printf fmt, '--rbconfig=path', 'rbconfig.rb to load',"running ruby's" - out.puts - out.puts 'Options for INSTALL:' - out.printf fmt, '--no-harm', 'only display what to do if given', 'off' - out.printf fmt, '--prefix=path', 'install path prefix', '$prefix' - out.puts - end - - # - # Task Handlers - # - - def exec_config - @installer.exec_config - @config.save # must be final - end - - def exec_setup - @installer.exec_setup - end - - def exec_install - @installer.exec_install - end - - def exec_show - ConfigTable.each do |i| - printf "%-20s %s\n", i.name, i.value - end - end - - def exec_clean - @installer.exec_clean - end - - def exec_distclean - @installer.exec_distclean - end - -end - - -class ToplevelInstallerMulti < ToplevelInstaller - - include HookUtils - include HookScriptAPI - include FileOperations - - def initialize(ardir) - super - @packages = all_dirs_in("#{@ardir}/packages") - raise 'no package exists' if @packages.empty? - end - - def run_metaconfigs - eval_file_ifexist "#{@ardir}/metaconfig" - @packages.each do |name| - eval_file_ifexist "#{@ardir}/packages/#{name}/metaconfig" - end - end - - def init_installers - @installers = {} - @packages.each do |pack| - @installers[pack] = Installer.new(@config, @options, - "#{@ardir}/packages/#{pack}", - "packages/#{pack}") - end - - with = extract_selection(config('with')) - without = extract_selection(config('without')) - @selected = @installers.keys.select {|name| - (with.empty? or with.include?(name)) \ - and not without.include?(name) - } - end - - def extract_selection(list) - a = list.split(/,/) - a.each do |name| - setup_rb_error "no such package: #{name}" unless @installers.key?(name) - end - a - end - - def print_usage(f) - super - f.puts 'Inluded packages:' - f.puts ' ' + @packages.sort.join(' ') - f.puts - end - - # - # multi-package metaconfig API - # - - attr_reader :packages - - def declare_packages(list) - raise 'package list is empty' if list.empty? - list.each do |name| - raise "directory packages/#{name} does not exist"\ - unless File.dir?("#{@ardir}/packages/#{name}") - end - @packages = list - end - - # - # Task Handlers - # - - def exec_config - run_hook 'pre-config' - each_selected_installers {|inst| inst.exec_config } - run_hook 'post-config' - @config.save # must be final - end - - def exec_setup - run_hook 'pre-setup' - each_selected_installers {|inst| inst.exec_setup } - run_hook 'post-setup' - end - - def exec_install - run_hook 'pre-install' - each_selected_installers {|inst| inst.exec_install } - run_hook 'post-install' - end - - def exec_clean - rm_f ConfigTable.savefile - run_hook 'pre-clean' - each_selected_installers {|inst| inst.exec_clean } - run_hook 'post-clean' - end - - def exec_distclean - rm_f ConfigTable.savefile - run_hook 'pre-distclean' - each_selected_installers {|inst| inst.exec_distclean } - run_hook 'post-distclean' - end - - # - # lib - # - - def each_selected_installers - Dir.mkdir 'packages' unless File.dir?('packages') - @selected.each do |pack| - $stderr.puts "Processing the package `#{pack}' ..." if @options['verbose'] - Dir.mkdir "packages/#{pack}" unless File.dir?("packages/#{pack}") - Dir.chdir "packages/#{pack}" - yield @installers[pack] - Dir.chdir '../..' - end - end - - def verbose? - @options['verbose'] - end - - def no_harm? - @options['no-harm'] - end - -end - - -class Installer - - FILETYPES = %w( bin lib ext data ) - - include HookScriptAPI - include HookUtils - include FileOperations - - def initialize(config, opt, srcroot, objroot) - @config = config - @options = opt - @srcdir = File.expand_path(srcroot) - @objdir = File.expand_path(objroot) - @currdir = '.' - end - - def inspect - "#<#{self.class} #{File.basename(@srcdir)}>" - end - - # - # Hook Script API base methods - # - - def srcdir_root - @srcdir - end - - def objdir_root - @objdir - end - - def relpath - @currdir - end - - # - # configs/options - # - - def no_harm? - @options['no-harm'] - end - - def verbose? - @options['verbose'] - end - - def verbose_off - begin - save, @options['verbose'] = @options['verbose'], false - yield - ensure - @options['verbose'] = save - end - end - - # - # TASK config - # - - def exec_config - exec_task_traverse 'config' - end - - def config_dir_bin(rel) - end - - def config_dir_lib(rel) - end - - def config_dir_ext(rel) - extconf if extdir?(curr_srcdir()) - end - - def extconf - opt = @options['config-opt'].join(' ') - command "#{config('rubyprog')} #{curr_srcdir()}/extconf.rb #{opt}" - end - - def config_dir_data(rel) - end - - # - # TASK setup - # - - def exec_setup - exec_task_traverse 'setup' - end - - def setup_dir_bin(rel) - all_files_in(curr_srcdir()).each do |fname| - adjust_shebang "#{curr_srcdir()}/#{fname}" - end - end - - def adjust_shebang(path) - return if no_harm? - tmpfile = File.basename(path) + '.tmp' - begin - File.open(path, 'rb') {|r| - first = r.gets - return unless File.basename(config('rubypath')) == 'ruby' - return unless File.basename(first.sub(/\A\#!/, '').split[0]) == 'ruby' - $stderr.puts "adjusting shebang: #{File.basename(path)}" if verbose? - File.open(tmpfile, 'wb') {|w| - w.print first.sub(/\A\#!\s*\S+/, '#! ' + config('rubypath')) - w.write r.read - } - move_file tmpfile, File.basename(path) - } - ensure - File.unlink tmpfile if File.exist?(tmpfile) - end - end - - def setup_dir_lib(rel) - end - - def setup_dir_ext(rel) - make if extdir?(curr_srcdir()) - end - - def setup_dir_data(rel) - end - - # - # TASK install - # - - def exec_install - rm_f 'InstalledFiles' - exec_task_traverse 'install' - end - - def install_dir_bin(rel) - install_files collect_filenames_auto(), "#{config('bindir')}/#{rel}", 0755 - end - - def install_dir_lib(rel) - install_files ruby_scripts(), "#{config('rbdir')}/#{rel}", 0644 - end - - def install_dir_ext(rel) - return unless extdir?(curr_srcdir()) - install_files ruby_extentions('.'), - "#{config('sodir')}/#{File.dirname(rel)}", - 0555 - end - - def install_dir_data(rel) - install_files collect_filenames_auto(), "#{config('datadir')}/#{rel}", 0644 - end - - def install_files(list, dest, mode) - mkdir_p dest, @options['install-prefix'] - list.each do |fname| - install fname, dest, mode, @options['install-prefix'] - end - end - - def ruby_scripts - collect_filenames_auto().select {|n| /\.rb\z/ =~ n } - end - - # picked up many entries from cvs-1.11.1/src/ignore.c - reject_patterns = %w( - core RCSLOG tags TAGS .make.state - .nse_depinfo #* .#* cvslog.* ,* .del-* *.olb - *~ *.old *.bak *.BAK *.orig *.rej _$* *$ - - *.org *.in .* - ) - mapping = { - '.' => '\.', - '$' => '\$', - '#' => '\#', - '*' => '.*' - } - REJECT_PATTERNS = Regexp.new('\A(?:' + - reject_patterns.map {|pat| - pat.gsub(/[\.\$\#\*]/) {|ch| mapping[ch] } - }.join('|') + - ')\z') - - def collect_filenames_auto - mapdir((existfiles() - hookfiles()).reject {|fname| - REJECT_PATTERNS =~ fname - }) - end - - def existfiles - all_files_in(curr_srcdir()) | all_files_in('.') - end - - def hookfiles - %w( pre-%s post-%s pre-%s.rb post-%s.rb ).map {|fmt| - %w( config setup install clean ).map {|t| sprintf(fmt, t) } - }.flatten - end - - def mapdir(filelist) - filelist.map {|fname| - if File.exist?(fname) # objdir - fname - else # srcdir - File.join(curr_srcdir(), fname) - end - } - end - - def ruby_extentions(dir) - Dir.open(dir) {|d| - ents = d.select {|fname| /\.#{::Config::CONFIG['DLEXT']}\z/ =~ fname } - if ents.empty? - setup_rb_error "no ruby extention exists: 'ruby #{$0} setup' first" - end - return ents - } - end - - # - # TASK clean - # - - def exec_clean - exec_task_traverse 'clean' - rm_f ConfigTable.savefile - rm_f 'InstalledFiles' - end - - def clean_dir_bin(rel) - end - - def clean_dir_lib(rel) - end - - def clean_dir_ext(rel) - return unless extdir?(curr_srcdir()) - make 'clean' if File.file?('Makefile') - end - - def clean_dir_data(rel) - end - - # - # TASK distclean - # - - def exec_distclean - exec_task_traverse 'distclean' - rm_f ConfigTable.savefile - rm_f 'InstalledFiles' - end - - def distclean_dir_bin(rel) - end - - def distclean_dir_lib(rel) - end - - def distclean_dir_ext(rel) - return unless extdir?(curr_srcdir()) - make 'distclean' if File.file?('Makefile') - end - - # - # lib - # - - def exec_task_traverse(task) - run_hook "pre-#{task}" - FILETYPES.each do |type| - if config('without-ext') == 'yes' and type == 'ext' - $stderr.puts 'skipping ext/* by user option' if verbose? - next - end - traverse task, type, "#{task}_dir_#{type}" - end - run_hook "post-#{task}" - end - - def traverse(task, rel, mid) - dive_into(rel) { - run_hook "pre-#{task}" - __send__ mid, rel.sub(%r[\A.*?(?:/|\z)], '') - all_dirs_in(curr_srcdir()).each do |d| - traverse task, "#{rel}/#{d}", mid - end - run_hook "post-#{task}" - } - end - - def dive_into(rel) - return unless File.dir?("#{@srcdir}/#{rel}") - - dir = File.basename(rel) - Dir.mkdir dir unless File.dir?(dir) - prevdir = Dir.pwd - Dir.chdir dir - $stderr.puts '---> ' + rel if verbose? - @currdir = rel - yield - Dir.chdir prevdir - $stderr.puts '<--- ' + rel if verbose? - @currdir = File.dirname(rel) - end - -end - - -if $0 == __FILE__ - begin - if multipackage_install? - ToplevelInstallerMulti.invoke - else - ToplevelInstaller.invoke - end - rescue SetupError - raise if $DEBUG - $stderr.puts $!.message - $stderr.puts "Try 'ruby #{$0} --help' for detailed usage." - exit 1 - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/tc_color_scheme.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/tc_color_scheme.rb deleted file mode 100644 index cb5cbd0e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/tc_color_scheme.rb +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/local/bin/ruby -w - -# tc_color_scheme.rb -# -# Created by Jeremy Hinegardner on 2007-01-24. -# Copyright 2007 Jeremy Hinegardner. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -require "test/unit" - -require "highline" -require "stringio" - -class TestColorScheme < Test::Unit::TestCase - def setup - @input = StringIO.new - @output = StringIO.new - @terminal = HighLine.new(@input, @output) - - @old_color_scheme = HighLine.color_scheme - end - - def teardown - HighLine.color_scheme = @old_color_scheme - end - - def test_using_color_scheme - assert_equal(false,HighLine.using_color_scheme?) - - HighLine.color_scheme = HighLine::ColorScheme.new - assert_equal(true,HighLine.using_color_scheme?) - end - - def test_scheme - HighLine.color_scheme = HighLine::SampleColorScheme.new - - @terminal.say("This should be <%= color('warning yellow', :warning) %>.") - assert_equal("This should be \e[1m\e[33mwarning yellow\e[0m.\n",@output.string) - @output.rewind - - @terminal.say("This should be <%= color('warning yellow', 'warning') %>.") - assert_equal("This should be \e[1m\e[33mwarning yellow\e[0m.\n",@output.string) - @output.rewind - - @terminal.say("This should be <%= color('warning yellow', 'WarNing') %>.") - assert_equal("This should be \e[1m\e[33mwarning yellow\e[0m.\n",@output.string) - @output.rewind - - # turn it back off, should raise an exception - HighLine.color_scheme = @old_color_scheme - assert_raises(NameError) { - @terminal.say("This should be <%= color('nothing at all', :error) %>.") - } - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/tc_highline.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/tc_highline.rb deleted file mode 100644 index ba4e1778..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/tc_highline.rb +++ /dev/null @@ -1,823 +0,0 @@ -#!/usr/local/bin/ruby -w - -# tc_highline.rb -# -# Created by James Edward Gray II on 2005-04-26. -# Copyright 2005 Gray Productions. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -require "test/unit" - -require "highline" -require "stringio" - -if HighLine::CHARACTER_MODE == "Win32API" - class HighLine - # Override Windows' character reading so it's not tied to STDIN. - def get_character( input = STDIN ) - input.getc - end - end -end - -class TestHighLine < Test::Unit::TestCase - def setup - @input = StringIO.new - @output = StringIO.new - @terminal = HighLine.new(@input, @output) - end - - def test_agree - @input << "y\nyes\nYES\nHell no!\nNo\n" - @input.rewind - - assert_equal(true, @terminal.agree("Yes or no? ")) - assert_equal(true, @terminal.agree("Yes or no? ")) - assert_equal(true, @terminal.agree("Yes or no? ")) - assert_equal(false, @terminal.agree("Yes or no? ")) - - @input.truncate(@input.rewind) - @input << "yellow" - @input.rewind - - assert_equal(true, @terminal.agree("Yes or no? ", :getc)) - end - - def test_agree_with_block - @input << "\n\n" - @input.rewind - - assert_equal(true, @terminal.agree("Yes or no? ") { |q| q.default = "y" }) - assert_equal(false, @terminal.agree("Yes or no? ") { |q| q.default = "n" }) - end - - def test_ask - name = "James Edward Gray II" - @input << name << "\n" - @input.rewind - - assert_equal(name, @terminal.ask("What is your name? ")) - - assert_raise(EOFError) { @terminal.ask("Any input left? ") } - end - - def test_bug_fixes - # auto-complete bug - @input << "ruby\nRuby\n" - @input.rewind - - languages = [:Perl, :Python, :Ruby] - answer = @terminal.ask( "What is your favorite programming language? ", - languages ) - assert_equal(languages.last, answer) - - @input.truncate(@input.rewind) - @input << "ruby\n" - @input.rewind - - answer = @terminal.ask( "What is your favorite programming language? ", - languages ) do |q| - q.case = :capitalize - end - assert_equal(languages.last, answer) - - # poor auto-complete error message - @input.truncate(@input.rewind) - @input << "lisp\nruby\n" - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask( "What is your favorite programming language? ", - languages ) do |q| - q.case = :capitalize - end - assert_equal(languages.last, answer) - assert_equal( "What is your favorite programming language? " + - "You must choose one of [:Perl, :Python, :Ruby].\n" + - "? ", @output.string ) - end - - def test_case_changes - @input << "jeg2\n" - @input.rewind - - answer = @terminal.ask("Enter your initials ") do |q| - q.case = :up - end - assert_equal("JEG2", answer) - - @input.truncate(@input.rewind) - @input << "cRaZY\n" - @input.rewind - - answer = @terminal.ask("Enter a search string: ") do |q| - q.case = :down - end - assert_equal("crazy", answer) - end - - def test_character_echo - @input << "password\r" - @input.rewind - - answer = @terminal.ask("Please enter your password: ") do |q| - q.echo = "*" - end - assert_equal("password", answer) - assert_equal("Please enter your password: ********\n", @output.string) - - @input.truncate(@input.rewind) - @input << "2" - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask( "Select an option (1, 2 or 3): ", - Integer ) do |q| - q.echo = "*" - q.character = true - end - assert_equal(2, answer) - assert_equal("Select an option (1, 2 or 3): *\n", @output.string) - end - - def test_backspace_does_not_enter_prompt - @input << "\b\b" - @input.rewind - answer = @terminal.ask("Please enter your password: ") do |q| - q.echo = "*" - end - assert_equal("", answer) - assert_equal("Please enter your password: \n",@output.string) - end - - def test_readline_on_non_echo_question_has_prompt - @input << "you can't see me" - @input.rewind - answer = @terminal.ask("Please enter some hidden text: ") do |q| - q.readline = true - q.echo = "*" - end - assert_equal("you can't see me", answer) - assert_equal("Please enter some hidden text: ****************\n",@output.string) - end - - def test_character_reading - # WARNING: This method does NOT cover Unix and Windows savvy testing! - @input << "12345" - @input.rewind - - answer = @terminal.ask("Enter a single digit: ", Integer) do |q| - q.character = :getc - end - assert_equal(1, answer) - end - - def test_color - @terminal.say("This should be <%= BLUE %>blue<%= CLEAR %>!") - assert_equal("This should be \e[34mblue\e[0m!\n", @output.string) - - @output.truncate(@output.rewind) - - @terminal.say( "This should be " + - "<%= BOLD + ON_WHITE %>bold on white<%= CLEAR %>!" ) - assert_equal( "This should be \e[1m\e[47mbold on white\e[0m!\n", - @output.string ) - - @output.truncate(@output.rewind) - - @terminal.say("This should be <%= color('cyan', CYAN) %>!") - assert_equal("This should be \e[36mcyan\e[0m!\n", @output.string) - - @output.truncate(@output.rewind) - - @terminal.say( "This should be " + - "<%= color('blinking on red', :blink, :on_red) %>!" ) - assert_equal( "This should be \e[5m\e[41mblinking on red\e[0m!\n", - @output.string ) - - @output.truncate(@output.rewind) - - # turn off color - old_setting = HighLine.use_color? - assert_nothing_raised(Exception) { HighLine.use_color = false } - @terminal.say("This should be <%= color('cyan', CYAN) %>!") - assert_equal("This should be cyan!\n", @output.string) - HighLine.use_color = old_setting - end - - def test_confirm - @input << "junk.txt\nno\nsave.txt\ny\n" - @input.rewind - - answer = @terminal.ask("Enter a filename: ") do |q| - q.confirm = "Are you sure you want to overwrite <%= @answer %>? " - q.responses[:ask_on_error] = :question - end - assert_equal("save.txt", answer) - assert_equal( "Enter a filename: " + - "Are you sure you want to overwrite junk.txt? " + - "Enter a filename: " + - "Are you sure you want to overwrite save.txt? ", - @output.string ) - - @input.truncate(@input.rewind) - @input << "junk.txt\nyes\nsave.txt\nn\n" - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask("Enter a filename: ") do |q| - q.confirm = "Are you sure you want to overwrite <%= @answer %>? " - end - assert_equal("junk.txt", answer) - assert_equal( "Enter a filename: " + - "Are you sure you want to overwrite junk.txt? ", - @output.string ) - end - - def test_defaults - @input << "\nNo Comment\n" - @input.rewind - - answer = @terminal.ask("Are you sexually active? ") do |q| - q.validate = /\Ay(?:es)?|no?|no comment\Z/i - end - assert_equal("No Comment", answer) - - @input.truncate(@input.rewind) - @input << "\nYes\n" - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask("Are you sexually active? ") do |q| - q.default = "No Comment" - q.validate = /\Ay(?:es)?|no?|no comment\Z/i - end - assert_equal("No Comment", answer) - assert_equal( "Are you sexually active? |No Comment| ", - @output.string ) - end - - def test_empty - @input << "\n" - @input.rewind - - answer = @terminal.ask("") do |q| - q.default = "yes" - q.validate = /\Ay(?:es)?|no?\Z/i - end - assert_equal("yes", answer) - end - - def test_erb - @terminal.say( "The integers from 1 to 10 are:\n" + - "% (1...10).each do |n|\n" + - "\t<%= n %>,\n" + - "% end\n" + - "\tand 10" ) - assert_equal( "The integers from 1 to 10 are:\n" + - "\t1,\n\t2,\n\t3,\n\t4,\n\t5,\n" + - "\t6,\n\t7,\n\t8,\n\t9,\n\tand 10\n", - @output.string ) - end - - def test_files - @input << "#{File.basename(__FILE__)[0, 5]}\n" - @input.rewind - - file = @terminal.ask("Select a file: ", File) do |q| - q.directory = File.expand_path(File.dirname(__FILE__)) - q.glob = "*.rb" - end - assert_instance_of(File, file) - assert_equal("#!/usr/local/bin/ruby -w\n", file.gets) - assert_equal("\n", file.gets) - assert_equal("# tc_highline.rb\n", file.gets) - file.close - - @input.rewind - - pathname = @terminal.ask("Select a file: ", Pathname) do |q| - q.directory = File.expand_path(File.dirname(__FILE__)) - q.glob = "*.rb" - end - assert_instance_of(Pathname, pathname) - assert_equal(File.size(__FILE__), pathname.size) - end - - def test_gather - @input << "James\nDana\nStorm\nGypsy\n\n" - @input.rewind - - answers = @terminal.ask("Enter four names:") do |q| - q.gather = 4 - end - assert_equal(%w{James Dana Storm Gypsy}, answers) - assert_equal("\n", @input.gets) - assert_equal("Enter four names:\n", @output.string) - - @input.rewind - - answers = @terminal.ask("Enter four names:") do |q| - q.gather = "" - end - assert_equal(%w{James Dana Storm Gypsy}, answers) - - @input.rewind - - answers = @terminal.ask("Enter four names:") do |q| - q.gather = /^\s*$/ - end - assert_equal(%w{James Dana Storm Gypsy}, answers) - - @input.truncate(@input.rewind) - @input << "29\n49\n30\n" - @input.rewind - @output.truncate(@output.rewind) - - answers = @terminal.ask("<%= @key %>: ", Integer) do |q| - q.gather = { "Age" => 0, "Wife's Age" => 0, "Father's Age" => 0} - end - assert_equal( { "Age" => 29, "Wife's Age" => 30, "Father's Age" => 49}, - answers ) - assert_equal("Age: Father's Age: Wife's Age: ", @output.string) - end - - def test_lists - digits = %w{Zero One Two Three Four Five Six Seven Eight Nine} - erb_digits = digits.dup - erb_digits[erb_digits.index("Five")] = "<%= color('Five', :blue) %%>" - - @terminal.say("<%= list(#{digits.inspect}) %>") - assert_equal(digits.map { |d| "#{d}\n" }.join, @output.string) - - @output.truncate(@output.rewind) - - @terminal.say("<%= list(#{digits.inspect}, :inline) %>") - assert_equal( digits[0..-2].join(", ") + " or #{digits.last}\n", - @output.string ) - - @output.truncate(@output.rewind) - - @terminal.say("<%= list(#{digits.inspect}, :inline, ' and ') %>") - assert_equal( digits[0..-2].join(", ") + " and #{digits.last}\n", - @output.string ) - - @output.truncate(@output.rewind) - - @terminal.say("<%= list(#{digits.inspect}, :columns_down, 3) %>") - assert_equal( "Zero Four Eight\n" + - "One Five Nine \n" + - "Two Six \n" + - "Three Seven\n", - @output.string ) - - @output.truncate(@output.rewind) - - @terminal.say("<%= list(#{erb_digits.inspect}, :columns_down, 3) %>") - assert_equal( "Zero Four Eight\n" + - "One \e[34mFive\e[0m Nine \n" + - "Two Six \n" + - "Three Seven\n", - @output.string ) - - colums_of_twenty = ["12345678901234567890"] * 5 - - @output.truncate(@output.rewind) - - @terminal.say("<%= list(#{colums_of_twenty.inspect}, :columns_down) %>") - assert_equal( "12345678901234567890 12345678901234567890 " + - "12345678901234567890\n" + - "12345678901234567890 12345678901234567890\n", - @output.string ) - - @output.truncate(@output.rewind) - - @terminal.say("<%= list(#{digits.inspect}, :columns_across, 3) %>") - assert_equal( "Zero One Two \n" + - "Three Four Five \n" + - "Six Seven Eight\n" + - "Nine \n", - @output.string ) - - colums_of_twenty.pop - - @output.truncate(@output.rewind) - - @terminal.say("<%= list( #{colums_of_twenty.inspect}, :columns_across ) %>") - assert_equal( "12345678901234567890 12345678901234567890 " + - "12345678901234567890\n" + - "12345678901234567890\n", - @output.string ) - end - - def test_mode - assert(%w[Win32API termios stty].include?(HighLine::CHARACTER_MODE)) - end - - class NameClass - def self.parse( string ) - if string =~ /^\s*(\w+),\s*(\w+)\s+(\w+)\s*$/ - self.new($2, $3, $1) - else - raise ArgumentError, "Invalid name format." - end - end - - def initialize(first, middle, last) - @first, @middle, @last = first, middle, last - end - - attr_reader :first, :middle, :last - end - - def test_my_class_conversion - @input << "Gray, James Edward\n" - @input.rewind - - answer = @terminal.ask("Your name? ", NameClass) do |q| - q.validate = lambda do |name| - names = name.split(/,\s*/) - return false unless names.size == 2 - return false if names.first =~ /\s/ - names.last.split.size == 2 - end - end - assert_instance_of(NameClass, answer) - assert_equal("Gray", answer.last) - assert_equal("James", answer.first) - assert_equal("Edward", answer.middle) - end - - def test_no_echo - @input << "password\r" - @input.rewind - - answer = @terminal.ask("Please enter your password: ") do |q| - q.echo = false - end - assert_equal("password", answer) - assert_equal("Please enter your password: \n", @output.string) - - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask("Pick a letter or number: ") do |q| - q.character = true - q.echo = false - end - assert_equal("p", answer) - assert_equal("a", @input.getc.chr) - assert_equal("Pick a letter or number: \n", @output.string) - end - - def test_paging - @terminal.page_at = 22 - - @input << "\n\n" - @input.rewind - - @terminal.say((1..50).map { |n| "This is line #{n}.\n"}.join) - assert_equal( (1..22).map { |n| "This is line #{n}.\n"}.join + - "\n-- press enter/return to continue or q to stop -- \n\n" + - (23..44).map { |n| "This is line #{n}.\n"}.join + - "\n-- press enter/return to continue or q to stop -- \n\n" + - (45..50).map { |n| "This is line #{n}.\n"}.join, - @output.string ) - end - - def test_range_requirements - @input << "112\n-541\n28\n" - @input.rewind - - answer = @terminal.ask("Tell me your age.", Integer) do |q| - q.in = 0..105 - end - assert_equal(28, answer) - assert_equal( "Tell me your age.\n" + - "Your answer isn't within the expected range " + - "(included in 0..105).\n" + - "? " + - "Your answer isn't within the expected range " + - "(included in 0..105).\n" + - "? ", @output.string ) - - @input.truncate(@input.rewind) - @input << "1\n-541\n28\n" - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask("Tell me your age.", Integer) do |q| - q.above = 3 - end - assert_equal(28, answer) - assert_equal( "Tell me your age.\n" + - "Your answer isn't within the expected range " + - "(above 3).\n" + - "? " + - "Your answer isn't within the expected range " + - "(above 3).\n" + - "? ", @output.string ) - - @input.truncate(@input.rewind) - @input << "1\n28\n-541\n" - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask("Lowest numer you can think of?", Integer) do |q| - q.below = 0 - end - assert_equal(-541, answer) - assert_equal( "Lowest numer you can think of?\n" + - "Your answer isn't within the expected range " + - "(below 0).\n" + - "? " + - "Your answer isn't within the expected range " + - "(below 0).\n" + - "? ", @output.string ) - - @input.truncate(@input.rewind) - @input << "1\n-541\n6\n" - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask("Enter a low even number: ", Integer) do |q| - q.above = 0 - q.below = 10 - q.in = [2, 4, 6, 8] - end - assert_equal(6, answer) - assert_equal( "Enter a low even number: " + - "Your answer isn't within the expected range " + - "(above 0, below 10, and included in [2, 4, 6, 8]).\n" + - "? " + - "Your answer isn't within the expected range " + - "(above 0, below 10, and included in [2, 4, 6, 8]).\n" + - "? ", @output.string ) - end - - def test_reask - number = 61676 - @input << "Junk!\n" << number << "\n" - @input.rewind - - answer = @terminal.ask("Favorite number? ", Integer) - assert_kind_of(Integer, number) - assert_instance_of(Fixnum, number) - assert_equal(number, answer) - assert_equal( "Favorite number? " + - "You must enter a valid Integer.\n" + - "? ", @output.string ) - - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask("Favorite number? ", Integer) do |q| - q.responses[:ask_on_error] = :question - q.responses[:invalid_type] = "Not a valid number!" - end - assert_kind_of(Integer, number) - assert_instance_of(Fixnum, number) - assert_equal(number, answer) - assert_equal( "Favorite number? " + - "Not a valid number!\n" + - "Favorite number? ", @output.string ) - - @input.truncate(@input.rewind) - @input << "gen\ngene\n" - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask("Select a mode: ", [:generate, :gentle]) - assert_instance_of(Symbol, answer) - assert_equal(:generate, answer) - assert_equal( "Select a mode: " + - "Ambiguous choice. " + - "Please choose one of [:generate, :gentle].\n" + - "? ", @output.string ) - end - - def test_response_embedding - @input << "112\n-541\n28\n" - @input.rewind - - answer = @terminal.ask("Tell me your age.", Integer) do |q| - q.in = 0..105 - q.responses[:not_in_range] = "Need a <%= @question.answer_type %>" + - " <%= @question.expected_range %>." - end - assert_equal(28, answer) - assert_equal( "Tell me your age.\n" + - "Need a Integer included in 0..105.\n" + - "? " + - "Need a Integer included in 0..105.\n" + - "? ", @output.string ) - end - - def test_say - @terminal.say("This will have a newline.") - assert_equal("This will have a newline.\n", @output.string) - - @output.truncate(@output.rewind) - - @terminal.say("This will also have one newline.\n") - assert_equal("This will also have one newline.\n", @output.string) - - @output.truncate(@output.rewind) - - @terminal.say("This will not have a newline. ") - assert_equal("This will not have a newline. ", @output.string) - end - - def test_type_conversion - number = 61676 - @input << number << "\n" - @input.rewind - - answer = @terminal.ask("Favorite number? ", Integer) - assert_kind_of(Integer, answer) - assert_instance_of(Fixnum, answer) - assert_equal(number, answer) - - @input.truncate(@input.rewind) - number = 1_000_000_000_000_000_000_000_000_000_000 - @input << number << "\n" - @input.rewind - - answer = @terminal.ask("Favorite number? ", Integer) - assert_kind_of(Integer, answer) - assert_instance_of(Bignum, answer) - assert_equal(number, answer) - - @input.truncate(@input.rewind) - number = 10.5002 - @input << number << "\n" - @input.rewind - - answer = @terminal.ask( "Favorite number? ", - lambda { |n| n.to_f.abs.round } ) - assert_kind_of(Integer, answer) - assert_instance_of(Fixnum, answer) - assert_equal(11, answer) - - @input.truncate(@input.rewind) - animal = :dog - @input << animal << "\n" - @input.rewind - - answer = @terminal.ask("Favorite animal? ", Symbol) - assert_instance_of(Symbol, answer) - assert_equal(animal, answer) - - @input.truncate(@input.rewind) - @input << "16th June 1976\n" - @input.rewind - - answer = @terminal.ask("Enter your birthday.", Date) - assert_instance_of(Date, answer) - assert_equal(16, answer.day) - assert_equal(6, answer.month) - assert_equal(1976, answer.year) - - @input.truncate(@input.rewind) - pattern = "^yes|no$" - @input << pattern << "\n" - @input.rewind - - answer = @terminal.ask("Give me a pattern to match with: ", Regexp) - assert_instance_of(Regexp, answer) - assert_equal(/#{pattern}/, answer) - - @input.truncate(@input.rewind) - @input << "gen\n" - @input.rewind - - answer = @terminal.ask("Select a mode: ", [:generate, :run]) - assert_instance_of(Symbol, answer) - assert_equal(:generate, answer) - end - - def test_validation - @input << "system 'rm -rf /'\n105\n0b101_001\n" - @input.rewind - - answer = @terminal.ask("Enter a binary number: ") do |q| - q.validate = /\A(?:0b)?[01_]+\Z/ - end - assert_equal("0b101_001", answer) - assert_equal( "Enter a binary number: " + - "Your answer isn't valid " + - "(must match /\\A(?:0b)?[01_]+\\Z/).\n" + - "? " + - "Your answer isn't valid " + - "(must match /\\A(?:0b)?[01_]+\\Z/).\n" + - "? ", @output.string ) - - @input.truncate(@input.rewind) - @input << "Gray II, James Edward\n" + - "Gray, Dana Ann Leslie\n" + - "Gray, James Edward\n" - @input.rewind - - answer = @terminal.ask("Your name? ") do |q| - q.validate = lambda do |name| - names = name.split(/,\s*/) - return false unless names.size == 2 - return false if names.first =~ /\s/ - names.last.split.size == 2 - end - end - assert_equal("Gray, James Edward", answer) - end - - def test_whitespace - @input << " A lot\tof \t space\t \there! \n" - @input.rewind - - answer = @terminal.ask("Enter a whitespace filled string: ") do |q| - q.whitespace = :chomp - end - assert_equal(" A lot\tof \t space\t \there! ", answer) - - @input.rewind - - answer = @terminal.ask("Enter a whitespace filled string: ") - assert_equal("A lot\tof \t space\t \there!", answer) - - @input.rewind - - answer = @terminal.ask("Enter a whitespace filled string: ") do |q| - q.whitespace = :strip_and_collapse - end - assert_equal("A lot of space here!", answer) - - @input.rewind - - answer = @terminal.ask("Enter a whitespace filled string: ") do |q| - q.whitespace = :remove - end - assert_equal("Alotofspacehere!", answer) - - @input.rewind - - answer = @terminal.ask("Enter a whitespace filled string: ") do |q| - q.whitespace = :none - end - assert_equal(" A lot\tof \t space\t \there! \n", answer) - end - - def test_wrap - @terminal.wrap_at = 80 - - @terminal.say("This is a very short line.") - assert_equal("This is a very short line.\n", @output.string) - - @output.truncate(@output.rewind) - - @terminal.say( "This is a long flowing paragraph meant to span " + - "several lines. This text should definitely be " + - "wrapped at the set limit, in the result. Your code " + - "does well with things like this.\n\n" + - " * This is a simple embedded list.\n" + - " * You're code should not mess with this...\n" + - " * Because it's already formatted correctly and " + - "does not\n" + - " exceed the limit!" ) - assert_equal( "This is a long flowing paragraph meant to span " + - "several lines. This text should\n" + - "definitely be wrapped at the set limit, in the " + - "result. Your code does well with\n" + - "things like this.\n\n" + - " * This is a simple embedded list.\n" + - " * You're code should not mess with this...\n" + - " * Because it's already formatted correctly and does " + - "not\n" + - " exceed the limit!\n", @output.string ) - - @output.truncate(@output.rewind) - - @terminal.say("-=" * 50) - assert_equal(("-=" * 40 + "\n") + ("-=" * 10 + "\n"), @output.string) - end - - def test_track_eof - assert_raise(EOFError) { @terminal.ask("Any input left? ") } - - # turn EOF tracking - old_setting = HighLine.track_eof? - assert_nothing_raised(Exception) { HighLine.track_eof = false } - begin - @terminal.ask("And now? ") # this will still blow up, nothing available - rescue - assert_not_equal(EOFError, $!.class) # but HighLine's safe guards are off - end - HighLine.track_eof = old_setting - end - - def test_version - assert_not_nil(HighLine::VERSION) - assert_instance_of(String, HighLine::VERSION) - assert(HighLine::VERSION.frozen?) - assert_match(/\A\d\.\d\.\d\Z/, HighLine::VERSION) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/tc_import.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/tc_import.rb deleted file mode 100644 index 005d5a92..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/tc_import.rb +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/local/bin/ruby -w - -# tc_import.rb -# -# Created by James Edward Gray II on 2005-04-26. -# Copyright 2005 Gray Productions. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -require "test/unit" - -require "highline/import" -require "stringio" - -class TestImport < Test::Unit::TestCase - def test_import - assert_respond_to(self, :agree) - assert_respond_to(self, :ask) - assert_respond_to(self, :choose) - assert_respond_to(self, :say) - end - - def test_or_ask - old_terminal = $terminal - - input = StringIO.new - output = StringIO.new - $terminal = HighLine.new(input, output) - - input << "10\n" - input.rewind - - assert_equal(10, nil.or_ask("How much? ", Integer)) - - input.rewind - - assert_equal(20, "20".or_ask("How much? ", Integer)) - assert_equal(20, 20.or_ask("How much? ", Integer)) - - assert_equal(10, 20.or_ask("How much? ", Integer) { |q| q.in = 1..10 }) - ensure - $terminal = old_terminal - end - - def test_redirection - old_terminal = $terminal - - $terminal = HighLine.new(nil, (output = StringIO.new)) - say("Testing...") - assert_equal("Testing...\n", output.string) - ensure - $terminal = old_terminal - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/tc_menu.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/tc_menu.rb deleted file mode 100644 index fee18714..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/tc_menu.rb +++ /dev/null @@ -1,429 +0,0 @@ -#!/usr/local/bin/ruby -w - -# tc_menu.rb -# -# Created by Gregory Thomas Brown on 2005-05-10. -# Copyright 2005. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -require "test/unit" - -require "highline" -require "stringio" - -class TestMenu < Test::Unit::TestCase - def setup - @input = StringIO.new - @output = StringIO.new - @terminal = HighLine.new(@input, @output) - end - - def test_choices - @input << "2\n" - @input.rewind - - output = @terminal.choose do |menu| - menu.choices("Sample1", "Sample2", "Sample3") - end - assert_equal("Sample2", output) - end - - def test_flow - @input << "Sample1\n" - @input.rewind - - @terminal.choose do |menu| - # Default: menu.flow = :rows - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("1. Sample1\n2. Sample2\n3. Sample3\n? ", @output.string) - - @output.truncate(@output.rewind) - @input.rewind - - @terminal.choose do |menu| - menu.flow = :columns_across - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("1. Sample1 2. Sample2 3. Sample3\n? ", @output.string) - - @output.truncate(@output.rewind) - @input.rewind - - @terminal.choose do |menu| - menu.flow = :inline - menu.index = :none - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("Sample1, Sample2 or Sample3? ", @output.string) - end - - def test_help - @input << "help\nhelp load\nhelp rules\nhelp missing\n" - @input.rewind - - 4.times do - @terminal.choose do |menu| - menu.shell = true - - menu.choice(:load, "Load a file.") - menu.choice(:save, "Save data in file.") - menu.choice(:quit, "Exit program.") - - menu.help("rules", "The rules of this system are as follows...") - end - end - assert_equal( "1. load\n2. save\n3. quit\n4. help\n? " + - "This command will display helpful messages about " + - "functionality, like this one. To see the help for a " + - "specific topic enter:\n" + - "\thelp [TOPIC]\n" + - "Try asking for help on any of the following:\n" + - "\nload quit rules save \n" + - "1. load\n2. save\n3. quit\n4. help\n? " + - "= load\n\n" + - "Load a file.\n" + - "1. load\n2. save\n3. quit\n4. help\n? " + - "= rules\n\n" + - "The rules of this system are as follows...\n" + - "1. load\n2. save\n3. quit\n4. help\n? " + - "= missing\n\n" + - "There's no help for that topic.\n", @output.string ) - end - - def test_index - @input << "Sample1\n" - @input.rewind - - @terminal.choose do |menu| - # Default: menu.index = :number - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("1. Sample1\n2. Sample2\n3. Sample3\n? ", @output.string) - - @output.truncate(@output.rewind) - @input.rewind - - @terminal.choose do |menu| - menu.index = :letter - menu.index_suffix = ") " - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("a) Sample1\nb) Sample2\nc) Sample3\n? ", @output.string) - - @output.truncate(@output.rewind) - @input.rewind - - @terminal.choose do |menu| - menu.index = :none - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("Sample1\nSample2\nSample3\n? ", @output.string) - - @output.truncate(@output.rewind) - @input.rewind - - @terminal.choose do |menu| - menu.index = "*" - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("* Sample1\n* Sample2\n* Sample3\n? ", @output.string) - end - - def test_layouts - @input << "save\n" - @input.rewind - - @terminal.choose(:load, :save, :quit) # Default: layout = :list - assert_equal("1. load\n2. save\n3. quit\n? ", @output.string) - - @input.rewind - @output.truncate(@output.rewind) - - @terminal.choose(:load, :save, :quit) do |menu| - menu.header = "File Menu" - end - assert_equal( "File Menu:\n" + - "1. load\n2. save\n3. quit\n? ", @output.string ) - - @input.rewind - @output.truncate(@output.rewind) - - @terminal.choose(:load, :save, :quit) do |menu| - menu.layout = :one_line - menu.header = "File Menu" - menu.prompt = "Operation? " - end - assert_equal( "File Menu: Operation? " + - "(load, save or quit) ", @output.string ) - - @input.rewind - @output.truncate(@output.rewind) - - @terminal.choose(:load, :save, :quit) do |menu| - menu.layout = :menu_only - end - assert_equal("load, save or quit? ", @output.string) - - @input.rewind - @output.truncate(@output.rewind) - - @terminal.choose(:load, :save, :quit) do |menu| - menu.layout = '<%= list(@menu) %>File Menu: ' - end - assert_equal("1. load\n2. save\n3. quit\nFile Menu: ", @output.string) - end - - def test_list_option - @input << "l\n" - @input.rewind - - @terminal.choose(:load, :save, :quit) do |menu| - menu.layout = :menu_only - menu.list_option = ", or " - end - assert_equal("load, save, or quit? ", @output.string) - end - - def test_nil_on_handled - @input << "3\n3\n2\n" - @input.rewind - - # Shows that by default proc results are returned. - output = @terminal.choose do |menu| - menu.choice "Sample1" do "output1" end - menu.choice "Sample2" do "output2" end - menu.choice "Sample3" do "output3" end - end - assert_equal("output3", output) - - # - # Shows that they can be replaced with +nil+ by setting - # _nil_on_handled to +true+. - # - output = @terminal.choose do |menu| - menu.nil_on_handled = true - menu.choice "Sample1" do "output1" end - menu.choice "Sample2" do "output2" end - menu.choice "Sample3" do "output3" end - end - assert_equal(nil, output) - - # Shows that a menu item without a proc will be returned no matter what. - output = @terminal.choose do |menu| - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("Sample2", output) - end - - def test_passed_command - @input << "q\n" - @input.rewind - - selected = nil - @terminal.choose do |menu| - menu.choices(:load, :save, :quit) { |command| selected = command } - end - assert_equal(:quit, selected) - end - - def test_question_options - @input << "save\n" - @input.rewind - - answer = @terminal.choose(:Load, :Save, :Quit) do |menu| - menu.case = :capitalize - end - assert_equal(:Save, answer) - - @input.rewind - - answer = @terminal.choose(:Load, :Save, :Quit) do |menu| - menu.case = :capitalize - menu.character = :getc - end - assert_equal(:Save, answer) - assert_equal(?a, @input.getc) - end - - def test_select_by - @input << "Sample1\n2\n" - @input.rewind - - selected = @terminal.choose do |menu| - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("Sample1", selected) - - @input.rewind - - selected = @terminal.choose do |menu| - menu.select_by = :index - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("Sample2", selected) - - @input.rewind - - selected = @terminal.choose do |menu| - menu.select_by = :name - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("Sample1", selected) - end - - def test_hidden - @input << "Hidden\n4\n" - @input.rewind - - selected = @terminal.choose do |menu| - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - menu.hidden "Hidden!" - end - assert_equal("Hidden!", selected) - assert_equal("1. Sample1\n2. Sample2\n3. Sample3\n? ", @output.string) - - @input.rewind - - selected = @terminal.choose do |menu| - menu.select_by = :index - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - menu.hidden "Hidden!" - end - assert_equal("Hidden!", selected) - - @input.rewind - - selected = @terminal.choose do |menu| - menu.select_by = :name - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - menu.hidden "Hidden!" - end - assert_equal("Hidden!", selected) - - @input.rewind - end - - def test_select_by_letter - @input << "b\n" - @input.rewind - - selected = @terminal.choose do |menu| - menu.index = :letter - menu.choice :save - menu.choice :load - menu.choice :quit - end - assert_equal(:load, selected) - end - - def test_shell - @input << "save --some-option my_file.txt\n" - @input.rewind - - selected = nil - options = nil - answer = @terminal.choose do |menu| - menu.choices(:load, :quit) - menu.choice(:save) do |command, details| - selected = command - options = details - - "Saved!" - end - menu.shell = true - end - assert_equal("Saved!", answer) - assert_equal(:save, selected) - assert_equal("--some-option my_file.txt", options) - end - - def test_simple_menu_shortcut - @input << "3\n" - @input.rewind - - selected = @terminal.choose(:save, :load, :quit) - assert_equal(:quit, selected) - end - - def test_symbols - @input << "3\n" - @input.rewind - - selected = @terminal.choose do |menu| - menu.choices(:save, :load, :quit) - end - assert_equal(:quit, selected) - end - - def test_paged_print_infinite_loop_bug - @terminal.page_at = 5 - # Will page twice, so start with two new lines - @input << "\n\n3\n" - @input.rewind - - # Sadly this goes into an infinite loop without the fix to page_print - selected = @terminal.choose(* 1..10) - assert_equal(selected, 3) - end - - - def test_cancel_paging - # Tests that paging can be cancelled halfway through - @terminal.page_at = 5 - # Will page twice, so stop after first page and make choice 3 - @input << "q\n3\n" - @input.rewind - - selected = @terminal.choose(* 1..10) - assert_equal(selected, 3) - - # Make sure paging message appeared - assert( @output.string.index('press enter/return to continue or q to stop'), - "Paging message did not appear." ) - - # Make sure it only appeared once - assert( @output.string !~ /q to stop.*q to stop/m, - "Paging message appeared more than once." ) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/ts_all.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/ts_all.rb deleted file mode 100644 index 735dccee..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/highline-1.5.1/test/ts_all.rb +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/local/bin/ruby -w - -# ts_all.rb -# -# Created by James Edward Gray II on 2005-04-26. -# Copyright 2005 Gray Productions. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -require "test/unit" - -require "tc_highline" -require "tc_import" -require "tc_menu" -require "tc_color_scheme" diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/http-access2.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/http-access2.rb deleted file mode 100644 index 43fd5d81..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/http-access2.rb +++ /dev/null @@ -1,53 +0,0 @@ -# HTTPAccess2 - HTTP accessing library. -# Copyright (C) 2000-2007 NAKAMURA, Hiroshi . - -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - -# http-access2.rb is based on http-access.rb in http-access/0.0.4. Some part -# of code in http-access.rb was recycled in http-access2.rb. Those part is -# copyrighted by Maehashi-san. - - -require 'httpclient' - - -module HTTPAccess2 - VERSION = ::HTTPClient::VERSION - RUBY_VERSION_STRING = ::HTTPClient::RUBY_VERSION_STRING - SSLEnabled = ::HTTPClient::SSLEnabled - SSPIEnabled = ::HTTPClient::SSPIEnabled - DEBUG_SSL = true - - Util = ::HTTPClient::Util - - class Client < ::HTTPClient - class RetryableResponse < StandardError - end - end - - SSLConfig = ::HTTPClient::SSLConfig - BasicAuth = ::HTTPClient::BasicAuth - DigestAuth = ::HTTPClient::DigestAuth - NegotiateAuth = ::HTTPClient::NegotiateAuth - AuthFilterBase = ::HTTPClient::AuthFilterBase - WWWAuth = ::HTTPClient::WWWAuth - ProxyAuth = ::HTTPClient::ProxyAuth - Site = ::HTTPClient::Site - Connection = ::HTTPClient::Connection - SessionManager = ::HTTPClient::SessionManager - SSLSocketWrap = ::HTTPClient::SSLSocketWrap - DebugSocket = ::HTTPClient::DebugSocket - - class Session < ::HTTPClient::Session - class Error < StandardError - end - class InvalidState < Error - end - class BadResponse < Error - end - class KeepAliveDisconnected < Error - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/http-access2/cookie.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/http-access2/cookie.rb deleted file mode 100644 index 56f78842..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/http-access2/cookie.rb +++ /dev/null @@ -1 +0,0 @@ -require 'httpclient/cookie' diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/http-access2/http.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/http-access2/http.rb deleted file mode 100644 index fc9b23c8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/http-access2/http.rb +++ /dev/null @@ -1 +0,0 @@ -require 'httpclient/http' diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient.rb deleted file mode 100644 index e83d1d01..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient.rb +++ /dev/null @@ -1,1020 +0,0 @@ -# HTTPClient - HTTP client library. -# Copyright (C) 2000-2009 NAKAMURA, Hiroshi . -# -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -require 'uri' -require 'stringio' -require 'digest/sha1' - -# Extra library -require 'httpclient/util' -require 'httpclient/ssl_config' -require 'httpclient/connection' -require 'httpclient/session' -require 'httpclient/http' -require 'httpclient/auth' -require 'httpclient/cookie' - - -# The HTTPClient class provides several methods for accessing Web resources -# via HTTP. -# -# HTTPClient instance is designed to be MT-safe. You can call a HTTPClient -# instance from several threads without synchronization after setting up an -# instance. -# -# clnt = HTTPClient.new -# clnt.set_cookie_store('/home/nahi/cookie.dat') -# urls.each do |url| -# Thread.new(url) do |u| -# p clnt.head(u).status -# end -# end -# -# == How to use -# -# At first, how to create your client. See initialize for more detail. -# -# 1. Create simple client. -# -# clnt = HTTPClient.new -# -# 2. Accessing resources through HTTP proxy. You can use environment -# variable 'http_proxy' or 'HTTP_PROXY' instead. -# -# clnt = HTTPClient.new('http://myproxy:8080') -# -# === How to retrieve web resources -# -# See get_content. -# -# 1. Get content of specified URL. It returns a String of whole result. -# -# puts clnt.get_content('http://dev.ctor.org/') -# -# 2. Get content as chunks of String. It yields chunks of String. -# -# clnt.get_content('http://dev.ctor.org/') do |chunk| -# puts chunk -# end -# -# === Invoking other HTTP methods -# -# See head, get, post, put, delete, options, propfind, proppatch and trace. -# It returns a HTTP::Message instance as a response. -# -# 1. Do HEAD request. -# -# res = clnt.head(uri) -# p res.header['Last-Modified'][0] -# -# 2. Do GET request with query. -# -# query = { 'keyword' => 'ruby', 'lang' => 'en' } -# res = clnt.get(uri, query) -# p res.status -# p res.contenttype -# p res.header['X-Custom'] -# puts res.content -# -# === How to POST -# -# See post. -# -# 1. Do POST a form data. -# -# body = { 'keyword' => 'ruby', 'lang' => 'en' } -# res = clnt.post(uri, body) -# -# 2. Do multipart file upload with POST. No need to set extra header by -# yourself from httpclient/2.1.4. -# -# File.open('/tmp/post_data') do |file| -# body = { 'upload' => file, 'user' => 'nahi' } -# res = clnt.post(uri, body) -# end -# -# === Accessing via SSL -# -# Ruby needs to be compiled with OpenSSL. -# -# 1. Get content of specified URL via SSL. -# Just pass an URL which starts with 'https://'. -# -# https_url = 'https://www.rsa.com' -# clnt.get_content(https_url) -# -# 2. Getting peer certificate from response. -# -# res = clnt.get(https_url) -# p res.peer_cert #=> returns OpenSSL::X509::Certificate -# -# 3. Configuring OpenSSL options. See HTTPClient::SSLConfig for more details. -# -# user_cert_file = 'cert.pem' -# user_key_file = 'privkey.pem' -# clnt.ssl_config.set_client_cert_file(user_cert_file, user_key_file) -# clnt.get_content(https_url) -# -# === Handling Cookies -# -# 1. Using volatile Cookies. Nothing to do. HTTPClient handles Cookies. -# -# clnt = HTTPClient.new -# clnt.get_content(url1) # receives Cookies. -# clnt.get_content(url2) # sends Cookies if needed. -# -# 2. Saving non volatile Cookies to a specified file. Need to set a file at -# first and invoke save method at last. -# -# clnt = HTTPClient.new -# clnt.set_cookie_store('/home/nahi/cookie.dat') -# clnt.get_content(url) -# ... -# clnt.save_cookie_store -# -# 3. Disabling Cookies. -# -# clnt = HTTPClient.new -# clnt.cookie_manager = nil -# -# === Configuring authentication credentials -# -# 1. Authentication with Web server. Supports BasicAuth, DigestAuth, and -# Negotiate/NTLM (requires ruby/ntlm module). -# -# clnt = HTTPClient.new -# domain = 'http://dev.ctor.org/http-access2/' -# user = 'user' -# password = 'user' -# clnt.set_auth(domain, user, password) -# p clnt.get_content('http://dev.ctor.org/http-access2/login').status -# -# 2. Authentication with Proxy server. Supports BasicAuth and NTLM -# (requires win32/sspi) -# -# clnt = HTTPClient.new(proxy) -# user = 'proxy' -# password = 'proxy' -# clnt.set_proxy_auth(user, password) -# p clnt.get_content(url) -# -# === Invoking HTTP methods with custom header -# -# Pass a Hash or an Array for extheader argument. -# -# extheader = { 'Accept' => '*/*' } -# clnt.get_content(uri, query, extheader) -# -# extheader = [['Accept', 'image/jpeg'], ['Accept', 'image/png']] -# clnt.get_content(uri, query, extheader) -# -# === Invoking HTTP methods asynchronously -# -# See head_async, get_async, post_async, put_async, delete_async, -# options_async, propfind_async, proppatch_async, and trace_async. -# It immediately returns a HTTPClient::Connection instance as a returning value. -# -# connection = clnt.post_async(url, body) -# print 'posting.' -# while true -# break if connection.finished? -# print '.' -# sleep 1 -# end -# puts '.' -# res = connection.pop -# p res.status -# p res.content.read # res.content is an IO for the res of async method. -# -# === Shortcut methods -# -# You can invoke get_content, get, etc. without creating HTTPClient instance. -# -# ruby -rhttpclient -e 'puts HTTPClient.get_content(ARGV.shift)' http://dev.ctor.org/ -# ruby -rhttpclient -e 'p HTTPClient.head(ARGV.shift).header["last-modified"]' http://dev.ctor.org/ -# -class HTTPClient - VERSION = '2.1.5' - RUBY_VERSION_STRING = "ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]" - /: (\S+) (\S+)/ =~ %q$Id: httpclient.rb 280 2009-06-02 15:44:28Z nahi $ - LIB_NAME = "(#{$1}/#{$2}, #{RUBY_VERSION_STRING})" - - include Util - - # Raised for indicating running environment configuration error for example - # accessing via SSL under the ruby which is not compiled with OpenSSL. - class ConfigurationError < StandardError - end - - # Raised for indicating HTTP response error. - class BadResponseError < RuntimeError - # HTTP::Message:: a response - attr_reader :res - - def initialize(msg, res = nil) # :nodoc: - super(msg) - @res = res - end - end - - # Raised for indicating a timeout error. - class TimeoutError < RuntimeError - end - - # Raised for indicating a connection timeout error. - # You can configure connection timeout via HTTPClient#connect_timeout=. - class ConnectTimeoutError < TimeoutError - end - - # Raised for indicating a request sending timeout error. - # You can configure request sending timeout via HTTPClient#send_timeout=. - class SendTimeoutError < TimeoutError - end - - # Raised for indicating a response receiving timeout error. - # You can configure response receiving timeout via - # HTTPClient#receive_timeout=. - class ReceiveTimeoutError < TimeoutError - end - - # Deprecated. just for backward compatibility - class Session - BadResponse = ::HTTPClient::BadResponseError - end - - class << self - %w(get_content post_content head get post put delete options propfind proppatch trace).each do |name| - eval <<-EOD - def #{name}(*arg, &block) - clnt = new - begin - clnt.#{name}(*arg, &block) - ensure - clnt.reset_all - end - end - EOD - end - - private - - def attr_proxy(symbol, assignable = false) - name = symbol.to_s - define_method(name) { - @session_manager.__send__(name) - } - if assignable - aname = name + '=' - define_method(aname) { |rhs| - reset_all - @session_manager.__send__(aname, rhs) - } - end - end - end - - # HTTPClient::SSLConfig:: SSL configurator. - attr_reader :ssl_config - # WebAgent::CookieManager:: Cookies configurator. - attr_accessor :cookie_manager - # An array of response HTTP message body String which is used for loop-back - # test. See test/* to see how to use it. If you want to do loop-back test - # of HTTP header, use test_loopback_http_response instead. - attr_reader :test_loopback_response - # An array of request filter which can trap HTTP request/response. - # See HTTPClient::WWWAuth to see how to use it. - attr_reader :request_filter - # HTTPClient::ProxyAuth:: Proxy authentication handler. - attr_reader :proxy_auth - # HTTPClient::WWWAuth:: WWW authentication handler. - attr_reader :www_auth - # How many times get_content and post_content follows HTTP redirect. - # 10 by default. - attr_accessor :follow_redirect_count - - # Set HTTP version as a String:: 'HTTP/1.0' or 'HTTP/1.1' - attr_proxy(:protocol_version, true) - # Connect timeout in sec. - attr_proxy(:connect_timeout, true) - # Request sending timeout in sec. - attr_proxy(:send_timeout, true) - # Response receiving timeout in sec. - attr_proxy(:receive_timeout, true) - # Negotiation retry count for authentication. 5 by default. - attr_proxy(:protocol_retry_count, true) - # if your ruby is older than 2005-09-06, do not set socket_sync = false to - # avoid an SSL socket blocking bug in openssl/buffering.rb. - attr_proxy(:socket_sync, true) - # User-Agent header in HTTP request. - attr_proxy(:agent_name, true) - # From header in HTTP request. - attr_proxy(:from, true) - # An array of response HTTP String (not a HTTP message body) which is used - # for loopback test. See test/* to see how to use it. - attr_proxy(:test_loopback_http_response) - - # Default extheader for PROPFIND request. - PROPFIND_DEFAULT_EXTHEADER = { 'Depth' => '0' } - - # Creates a HTTPClient instance which manages sessions, cookies, etc. - # - # HTTPClient.new takes 3 optional arguments for proxy url string, - # User-Agent String and From header String. User-Agent and From are embedded - # in HTTP request Header if given. No User-Agent and From header added - # without setting it explicitly. - # - # proxy = 'http://myproxy:8080' - # agent_name = 'MyAgent/0.1' - # from = 'from@example.com' - # HTTPClient.new(proxy, agent_name, from) - # - # You can use a keyword argument style Hash. Keys are :proxy, :agent_name - # and :from. - # - # HTTPClient.new(:agent_name = 'MyAgent/0.1') - def initialize(*args) - proxy, agent_name, from = keyword_argument(args, :proxy, :agent_name, :from) - @proxy = nil # assigned later. - @no_proxy = nil - @www_auth = WWWAuth.new - @proxy_auth = ProxyAuth.new - @request_filter = [@proxy_auth, @www_auth] - @debug_dev = nil - @redirect_uri_callback = method(:default_redirect_uri_callback) - @test_loopback_response = [] - @session_manager = SessionManager.new(self) - @session_manager.agent_name = agent_name - @session_manager.from = from - @session_manager.ssl_config = @ssl_config = SSLConfig.new(self) - @cookie_manager = WebAgent::CookieManager.new - @follow_redirect_count = 10 - load_environment - self.proxy = proxy if proxy - end - - # Returns debug device if exists. See debug_dev=. - def debug_dev - @debug_dev - end - - # Sets debug device. Once debug device is set, all HTTP requests and - # responses are dumped to given device. dev must respond to << for dump. - # - # Calling this method resets all existing sessions. - def debug_dev=(dev) - @debug_dev = dev - reset_all - @session_manager.debug_dev = dev - end - - # Returns URI object of HTTP proxy if exists. - def proxy - @proxy - end - - # Sets HTTP proxy used for HTTP connection. Given proxy can be an URI, - # a String or nil. You can set user/password for proxy authentication like - # HTTPClient#proxy = 'http://user:passwd@myproxy:8080' - # - # You can use environment variable 'http_proxy' or 'HTTP_PROXY' for it. - # You need to use 'cgi_http_proxy' or 'CGI_HTTP_PROXY' instead if you run - # HTTPClient from CGI environment from security reason. (HTTPClient checks - # 'REQUEST_METHOD' environment variable whether it's CGI or not) - # - # Calling this method resets all existing sessions. - def proxy=(proxy) - if proxy.nil? - @proxy = nil - @proxy_auth.reset_challenge - else - @proxy = urify(proxy) - if @proxy.scheme == nil or @proxy.scheme.downcase != 'http' or - @proxy.host == nil or @proxy.port == nil - raise ArgumentError.new("unsupported proxy #{proxy}") - end - @proxy_auth.reset_challenge - if @proxy.user || @proxy.password - @proxy_auth.set_auth(@proxy.user, @proxy.password) - end - end - reset_all - @session_manager.proxy = @proxy - @proxy - end - - # Returns NO_PROXY setting String if given. - def no_proxy - @no_proxy - end - - # Sets NO_PROXY setting String. no_proxy must be a comma separated String. - # Each entry must be 'host' or 'host:port' such as; - # HTTPClient#no_proxy = 'example.com,example.co.jp:443' - # - # 'localhost' is treated as a no_proxy site regardless of explicitly listed. - # HTTPClient checks given URI objects before accessing it. - # 'host' is tail string match. No IP-addr conversion. - # - # You can use environment variable 'no_proxy' or 'NO_PROXY' for it. - # - # Calling this method resets all existing sessions. - def no_proxy=(no_proxy) - @no_proxy = no_proxy - reset_all - end - - # Sets credential for Web server authentication. - # domain:: a String or an URI to specify where HTTPClient should use this - # credential. If you set uri to nil, HTTPClient uses this credential - # wherever a server requires it. - # user:: username String. - # passwd:: password String. - # - # You can set multiple credentials for each uri. - # - # clnt.set_auth('http://www.example.com/foo/', 'foo_user', 'passwd') - # clnt.set_auth('http://www.example.com/bar/', 'bar_user', 'passwd') - # - # Calling this method resets all existing sessions. - def set_auth(domain, user, passwd) - uri = urify(domain) - @www_auth.set_auth(uri, user, passwd) - reset_all - end - - # Deprecated. Use set_auth instead. - def set_basic_auth(domain, user, passwd) - uri = urify(domain) - @www_auth.basic_auth.set(uri, user, passwd) - reset_all - end - - # Sets credential for Proxy authentication. - # user:: username String. - # passwd:: password String. - # - # Calling this method resets all existing sessions. - def set_proxy_auth(user, passwd) - @proxy_auth.set_auth(user, passwd) - reset_all - end - - # Sets the filename where non-volatile Cookies be saved by calling - # save_cookie_store. - # This method tries to load and managing Cookies from the specified file. - # - # Calling this method resets all existing sessions. - def set_cookie_store(filename) - @cookie_manager.cookies_file = filename - @cookie_manager.load_cookies if filename - reset_all - end - - # Try to save Cookies to the file specified in set_cookie_store. Unexpected - # error will be raised if you don't call set_cookie_store first. - # (interface mismatch between WebAgent::CookieManager implementation) - def save_cookie_store - @cookie_manager.save_cookies - end - - # Sets callback proc when HTTP redirect status is returned for get_content - # and post_content. default_redirect_uri_callback is used by default. - # - # If you need strict implementation which does not allow relative URI - # redirection, set strict_redirect_uri_callback instead. - # - # clnt.redirect_uri_callback = clnt.method(:strict_redirect_uri_callback) - # - def redirect_uri_callback=(redirect_uri_callback) - @redirect_uri_callback = redirect_uri_callback - end - - # Retrieves a web resource. - # - # uri:: a String or an URI object which represents an URL of web resource. - # query:: a Hash or an Array of query part of URL. - # e.g. { "a" => "b" } => 'http://host/part?a=b'. - # Give an array to pass multiple value like - # [["a", "b"], ["a", "c"]] => 'http://host/part?a=b&a=c'. - # extheader:: a Hash or an Array of extra headers. e.g. - # { 'Accept' => '*/*' } or - # [['Accept', 'image/jpeg'], ['Accept', 'image/png']]. - # &block:: Give a block to get chunked message-body of response like - # get_content(uri) { |chunked_body| ... }. - # Size of each chunk may not be the same. - # - # get_content follows HTTP redirect status (see HTTP::Status.redirect?) - # internally and try to retrieve content from redirected URL. See - # redirect_uri_callback= how HTTP redirection is handled. - # - # If you need to get full HTTP response including HTTP status and headers, - # use get method. get returns HTTP::Message as a response and you need to - # follow HTTP redirect by yourself if you need. - def get_content(uri, query = nil, extheader = {}, &block) - follow_redirect(:get, uri, query, nil, extheader, &block).content - end - - # Posts a content. - # - # uri:: a String or an URI object which represents an URL of web resource. - # body:: a Hash or an Array of body part. - # e.g. { "a" => "b" } => 'a=b'. - # Give an array to pass multiple value like - # [["a", "b"], ["a", "c"]] => 'a=b&a=c'. - # When you pass a File as a value, it will be posted as a - # multipart/form-data. e.g. { 'upload' => file } - # extheader:: a Hash or an Array of extra headers. e.g. - # { 'Accept' => '*/*' } or - # [['Accept', 'image/jpeg'], ['Accept', 'image/png']]. - # &block:: Give a block to get chunked message-body of response like - # post_content(uri) { |chunked_body| ... }. - # Size of each chunk may not be the same. - # - # post_content follows HTTP redirect status (see HTTP::Status.redirect?) - # internally and try to post the content to redirected URL. See - # redirect_uri_callback= how HTTP redirection is handled. - # - # If you need to get full HTTP response including HTTP status and headers, - # use post method. - def post_content(uri, body = nil, extheader = {}, &block) - follow_redirect(:post, uri, nil, body, extheader, &block).content - end - - # A method for redirect uri callback. How to use: - # clnt.redirect_uri_callback = clnt.method(:strict_redirect_uri_callback) - # This callback does not allow relative redirect such as - # Location: ../foo/ - # in HTTP header. (raises BadResponseError instead) - def strict_redirect_uri_callback(uri, res) - newuri = URI.parse(res.header['location'][0]) - if https?(uri) && !https?(newuri) - raise BadResponseError.new("redirecting to non-https resource") - end - unless newuri.is_a?(URI::HTTP) - raise BadResponseError.new("unexpected location: #{newuri}", res) - end - puts "redirect to: #{newuri}" if $DEBUG - newuri - end - - # A default method for redirect uri callback. This method is used by - # HTTPClient instance by default. - # This callback allows relative redirect such as - # Location: ../foo/ - # in HTTP header. - def default_redirect_uri_callback(uri, res) - newuri = URI.parse(res.header['location'][0]) - if https?(uri) && !https?(newuri) - raise BadResponseError.new("redirecting to non-https resource") - end - unless newuri.is_a?(URI::HTTP) - newuri = uri + newuri - STDERR.puts("could be a relative URI in location header which is not recommended") - STDERR.puts("'The field value consists of a single absolute URI' in HTTP spec") - end - puts "redirect to: #{newuri}" if $DEBUG - newuri - end - - # Sends HEAD request to the specified URL. See request for arguments. - def head(uri, query = nil, extheader = {}) - request(:head, uri, query, nil, extheader) - end - - # Sends GET request to the specified URL. See request for arguments. - def get(uri, query = nil, extheader = {}, &block) - request(:get, uri, query, nil, extheader, &block) - end - - # Sends POST request to the specified URL. See request for arguments. - def post(uri, body = '', extheader = {}, &block) - request(:post, uri, nil, body, extheader, &block) - end - - # Sends PUT request to the specified URL. See request for arguments. - def put(uri, body = '', extheader = {}, &block) - request(:put, uri, nil, body, extheader, &block) - end - - # Sends DELETE request to the specified URL. See request for arguments. - def delete(uri, extheader = {}, &block) - request(:delete, uri, nil, nil, extheader, &block) - end - - # Sends OPTIONS request to the specified URL. See request for arguments. - def options(uri, extheader = {}, &block) - request(:options, uri, nil, nil, extheader, &block) - end - - # Sends PROPFIND request to the specified URL. See request for arguments. - def propfind(uri, extheader = PROPFIND_DEFAULT_EXTHEADER, &block) - request(:propfind, uri, nil, nil, extheader, &block) - end - - # Sends PROPPATCH request to the specified URL. See request for arguments. - def proppatch(uri, body = nil, extheader = {}, &block) - request(:proppatch, uri, nil, body, extheader, &block) - end - - # Sends TRACE request to the specified URL. See request for arguments. - def trace(uri, query = nil, body = nil, extheader = {}, &block) - request('TRACE', uri, query, body, extheader, &block) - end - - # Sends a request to the specified URL. - # - # method:: HTTP method to be sent. method.to_s.upcase is used. - # uri:: a String or an URI object which represents an URL of web resource. - # query:: a Hash or an Array of query part of URL. - # e.g. { "a" => "b" } => 'http://host/part?a=b' - # Give an array to pass multiple value like - # [["a", "b"], ["a", "c"]] => 'http://host/part?a=b&a=c' - # body:: a Hash or an Array of body part. - # e.g. { "a" => "b" } => 'a=b'. - # Give an array to pass multiple value like - # [["a", "b"], ["a", "c"]] => 'a=b&a=c'. - # When the given method is 'POST' and the given body contains a file - # as a value, it will be posted as a multipart/form-data. - # e.g. { 'upload' => file } - # See HTTP::Message.file? for actual condition of 'a file'. - # extheader:: a Hash or an Array of extra headers. e.g. - # { 'Accept' => '*/*' } or - # [['Accept', 'image/jpeg'], ['Accept', 'image/png']]. - # &block:: Give a block to get chunked message-body of response like - # get(uri) { |chunked_body| ... }. - # Size of each chunk may not be the same. - # - # You can also pass a String as a body. HTTPClient just sends a String as - # a HTTP request message body. - # - # When you pass an IO as a body, HTTPClient sends it as a HTTP request with - # chunked encoding (Transfer-Encoding: chunked in HTTP header). Bear in mind - # that some server application does not support chunked request. At least - # cgi.rb does not support it. - def request(method, uri, query = nil, body = nil, extheader = {}, &block) - uri = urify(uri) - if block - filtered_block = proc { |res, str| - block.call(str) - } - end - do_request(method, uri, query, body, extheader, &filtered_block) - end - - # Sends HEAD request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def head_async(uri, query = nil, extheader = {}) - request_async(:head, uri, query, nil, extheader) - end - - # Sends GET request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def get_async(uri, query = nil, extheader = {}) - request_async(:get, uri, query, nil, extheader) - end - - # Sends POST request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def post_async(uri, body = nil, extheader = {}) - request_async(:post, uri, nil, body, extheader) - end - - # Sends PUT request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def put_async(uri, body = nil, extheader = {}) - request_async(:put, uri, nil, body, extheader) - end - - # Sends DELETE request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def delete_async(uri, extheader = {}) - request_async(:delete, uri, nil, nil, extheader) - end - - # Sends OPTIONS request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def options_async(uri, extheader = {}) - request_async(:options, uri, nil, nil, extheader) - end - - # Sends PROPFIND request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def propfind_async(uri, extheader = PROPFIND_DEFAULT_EXTHEADER) - request_async(:propfind, uri, nil, nil, extheader) - end - - # Sends PROPPATCH request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def proppatch_async(uri, body = nil, extheader = {}) - request_async(:proppatch, uri, nil, body, extheader) - end - - # Sends TRACE request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def trace_async(uri, query = nil, body = nil, extheader = {}) - request_async(:trace, uri, query, body, extheader) - end - - # Sends a request in async style. request method creates new Thread for - # HTTP connection and returns a HTTPClient::Connection instance immediately. - # - # Arguments definition is the same as request. - def request_async(method, uri, query = nil, body = nil, extheader = {}) - uri = urify(uri) - do_request_async(method, uri, query, body, extheader) - end - - # Resets internal session for the given URL. Keep-alive connection for the - # site (host-port pair) is disconnected if exists. - def reset(uri) - uri = urify(uri) - @session_manager.reset(uri) - end - - # Resets all of internal sessions. Keep-alive connections are disconnected. - def reset_all - @session_manager.reset_all - end - -private - - class RetryableResponse < StandardError # :nodoc: - end - - class KeepAliveDisconnected < StandardError # :nodoc: - end - - def do_request(method, uri, query, body, extheader, &block) - conn = Connection.new - res = nil - if HTTP::Message.file?(body) - pos = body.pos rescue nil - end - retry_count = @session_manager.protocol_retry_count - proxy = no_proxy?(uri) ? nil : @proxy - while retry_count > 0 - body.pos = pos if pos - req = create_request(method, uri, query, body, extheader) - begin - protect_keep_alive_disconnected do - do_get_block(req, proxy, conn, &block) - end - res = conn.pop - break - rescue RetryableResponse - res = conn.pop - retry_count -= 1 - end - end - res - end - - def do_request_async(method, uri, query, body, extheader) - conn = Connection.new - t = Thread.new(conn) { |tconn| - if HTTP::Message.file?(body) - pos = body.pos rescue nil - end - retry_count = @session_manager.protocol_retry_count - proxy = no_proxy?(uri) ? nil : @proxy - while retry_count > 0 - body.pos = pos if pos - req = create_request(method, uri, query, body, extheader) - begin - protect_keep_alive_disconnected do - do_get_stream(req, proxy, tconn) - end - break - rescue RetryableResponse - retry_count -= 1 - end - end - } - conn.async_thread = t - conn - end - - def load_environment - # http_proxy - if getenv('REQUEST_METHOD') - # HTTP_PROXY conflicts with the environment variable usage in CGI where - # HTTP_* is used for HTTP header information. Unlike open-uri, we - # simply ignore http_proxy in CGI env and use cgi_http_proxy instead. - self.proxy = getenv('cgi_http_proxy') - else - self.proxy = getenv('http_proxy') - end - # no_proxy - self.no_proxy = getenv('no_proxy') - end - - def getenv(name) - ENV[name.downcase] || ENV[name.upcase] - end - - def follow_redirect(method, uri, query, body, extheader, &block) - uri = urify(uri) - if block - filtered_block = proc { |r, str| - block.call(str) if HTTP::Status.successful?(r.status) - } - end - if HTTP::Message.file?(body) - pos = body.pos rescue nil - end - retry_number = 0 - while retry_number < @follow_redirect_count - body.pos = pos if pos - res = do_request(method, uri, query, body, extheader, &filtered_block) - if HTTP::Status.successful?(res.status) - return res - elsif HTTP::Status.redirect?(res.status) - uri = urify(@redirect_uri_callback.call(uri, res)) - retry_number += 1 - else - raise BadResponseError.new("unexpected response: #{res.header.inspect}", res) - end - end - raise BadResponseError.new("retry count exceeded", res) - end - - def protect_keep_alive_disconnected - begin - yield - rescue KeepAliveDisconnected - yield - end - end - - def create_request(method, uri, query, body, extheader) - method = method.to_s.upcase - if extheader.is_a?(Hash) - extheader = extheader.to_a - else - extheader = extheader.dup - end - boundary = nil - if body - dummy, content_type = extheader.find { |key, value| - key.downcase == 'content-type' - } - if content_type - if /\Amultipart/ =~ content_type - if content_type =~ /boundary=(.+)\z/ - boundary = $1 - else - boundary = create_boundary - content_type = "#{content_type}; boundary=#{boundary}" - extheader = override_header(extheader, 'Content-Type', content_type) - end - end - elsif method == 'POST' - if file_in_form_data?(body) - boundary = create_boundary - content_type = "multipart/form-data; boundary=#{boundary}" - else - content_type = 'application/x-www-form-urlencoded' - end - extheader << ['Content-Type', content_type] - end - end - req = HTTP::Message.new_request(method, uri, query, body, boundary) - extheader.each do |key, value| - req.header.add(key, value) - end - if @cookie_manager && cookie = @cookie_manager.find(uri) - req.header.add('Cookie', cookie) - end - req - end - - def create_boundary - Digest::SHA1.hexdigest(Time.now.to_s) - end - - def file_in_form_data?(body) - HTTP::Message.multiparam_query?(body) && - body.any? { |k, v| HTTP::Message.file?(v) } - end - - def override_header(extheader, key, value) - result = [] - extheader.each do |k, v| - if k.downcase == key.downcase - result << [key, value] - else - result << [k, v] - end - end - result - end - - NO_PROXY_HOSTS = ['localhost'] - - def no_proxy?(uri) - if !@proxy or NO_PROXY_HOSTS.include?(uri.host) - return true - end - unless @no_proxy - return false - end - @no_proxy.scan(/([^:,]+)(?::(\d+))?/) do |host, port| - if /(\A|\.)#{Regexp.quote(host)}\z/i =~ uri.host && - (!port || uri.port == port.to_i) - return true - end - end - false - end - - def https?(uri) - uri.scheme.downcase == 'https' - end - - # !! CAUTION !! - # Method 'do_get*' runs under MT conditon. Be careful to change. - def do_get_block(req, proxy, conn, &block) - @request_filter.each do |filter| - filter.filter_request(req) - end - if str = @test_loopback_response.shift - dump_dummy_request_response(req.body.dump, str) if @debug_dev - conn.push(HTTP::Message.new_response(str)) - return - end - content = block ? nil : '' - res = HTTP::Message.new_response(content) - @debug_dev << "= Request\n\n" if @debug_dev - sess = @session_manager.query(req, proxy) - res.peer_cert = sess.ssl_peer_cert - @debug_dev << "\n\n= Response\n\n" if @debug_dev - do_get_header(req, res, sess) - conn.push(res) - sess.get_body do |part| - if block - block.call(res, part) - else - content << part - end - end - @session_manager.keep(sess) unless sess.closed? - commands = @request_filter.collect { |filter| - filter.filter_response(req, res) - } - if commands.find { |command| command == :retry } - raise RetryableResponse.new - end - end - - def do_get_stream(req, proxy, conn) - @request_filter.each do |filter| - filter.filter_request(req) - end - if str = @test_loopback_response.shift - dump_dummy_request_response(req.body.dump, str) if @debug_dev - conn.push(HTTP::Message.new_response(StringIO.new(str))) - return - end - piper, pipew = IO.pipe - res = HTTP::Message.new_response(piper) - @debug_dev << "= Request\n\n" if @debug_dev - sess = @session_manager.query(req, proxy) - res.peer_cert = sess.ssl_peer_cert - @debug_dev << "\n\n= Response\n\n" if @debug_dev - do_get_header(req, res, sess) - conn.push(res) - sess.get_body do |part| - pipew.syswrite(part) - end - pipew.close - @session_manager.keep(sess) unless sess.closed? - commands = @request_filter.collect { |filter| - filter.filter_response(req, res) - } - # ignore commands (not retryable in async mode) - end - - def do_get_header(req, res, sess) - res.version, res.status, res.reason, headers = sess.get_header - headers.each do |key, value| - res.header.add(key, value) - end - if @cookie_manager - res.header['set-cookie'].each do |cookie| - @cookie_manager.parse(cookie, req.header.request_uri) - end - end - end - - def dump_dummy_request_response(req, res) - @debug_dev << "= Dummy Request\n\n" - @debug_dev << req - @debug_dev << "\n\n= Dummy Response\n\n" - @debug_dev << res - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/auth.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/auth.rb deleted file mode 100644 index 571a16f7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/auth.rb +++ /dev/null @@ -1,522 +0,0 @@ -# HTTPClient - HTTP client library. -# Copyright (C) 2000-2009 NAKAMURA, Hiroshi . -# -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -require 'digest/md5' -require 'httpclient/session' - - -class HTTPClient - - begin - require 'net/ntlm' - NTLMEnabled = true - rescue LoadError - NTLMEnabled = false - end - - begin - require 'win32/sspi' - SSPIEnabled = true - rescue LoadError - SSPIEnabled = false - end - - - # Common abstract class for authentication filter. - # - # There are 2 authentication filters. - # WWWAuth:: Authentication filter for handling authentication negotiation - # between Web server. Parses 'WWW-Authentication' header in - # response and generates 'Authorization' header in request. - # ProxyAuth:: Authentication filter for handling authentication negotiation - # between Proxy server. Parses 'Proxy-Authentication' header in - # response and generates 'Proxy-Authorization' header in request. - class AuthFilterBase - private - - def parse_authentication_header(res, tag) - challenge = res.header[tag] - return nil unless challenge - challenge.collect { |c| parse_challenge_header(c) }.compact - end - - def parse_challenge_header(challenge) - scheme, param_str = challenge.scan(/\A(\S+)(?:\s+(.*))?\z/)[0] - return nil if scheme.nil? - return scheme, param_str - end - end - - - # Authentication filter for handling authentication negotiation between - # Web server. Parses 'WWW-Authentication' header in response and - # generates 'Authorization' header in request. - # - # Authentication filter is implemented using request filter of HTTPClient. - # It traps HTTP response header and maintains authentication state, and - # traps HTTP request header for inserting necessary authentication header. - # - # WWWAuth has sub filters (BasicAuth, DigestAuth, NegotiateAuth and - # SSPINegotiateAuth) and delegates some operations to it. - # NegotiateAuth requires 'ruby/ntlm' module. - # SSPINegotiateAuth requires 'win32/sspi' module. - class WWWAuth < AuthFilterBase - attr_reader :basic_auth - attr_reader :digest_auth - attr_reader :negotiate_auth - attr_reader :sspi_negotiate_auth - - # Creates new WWWAuth. - def initialize - @basic_auth = BasicAuth.new - @digest_auth = DigestAuth.new - @negotiate_auth = NegotiateAuth.new - @sspi_negotiate_auth = SSPINegotiateAuth.new - # sort authenticators by priority - @authenticator = [@negotiate_auth, @sspi_negotiate_auth, @digest_auth, @basic_auth] - end - - # Resets challenge state. See sub filters for more details. - def reset_challenge - @authenticator.each do |auth| - auth.reset_challenge - end - end - - # Set authentication credential. See sub filters for more details. - def set_auth(uri, user, passwd) - @authenticator.each do |auth| - auth.set(uri, user, passwd) - end - reset_challenge - end - - # Filter API implementation. Traps HTTP request and insert - # 'Authorization' header if needed. - def filter_request(req) - @authenticator.each do |auth| - if cred = auth.get(req) - req.header.set('Authorization', auth.scheme + " " + cred) - return - end - end - end - - # Filter API implementation. Traps HTTP response and parses - # 'WWW-Authenticate' header. - def filter_response(req, res) - command = nil - if res.status == HTTP::Status::UNAUTHORIZED - if challenge = parse_authentication_header(res, 'www-authenticate') - uri = req.header.request_uri - challenge.each do |scheme, param_str| - @authenticator.each do |auth| - if scheme.downcase == auth.scheme.downcase - challengeable = auth.challenge(uri, param_str) - command = :retry if challengeable - end - end - end - # ignore unknown authentication scheme - end - end - command - end - end - - - # Authentication filter for handling authentication negotiation between - # Proxy server. Parses 'Proxy-Authentication' header in response and - # generates 'Proxy-Authorization' header in request. - # - # Authentication filter is implemented using request filter of HTTPClient. - # It traps HTTP response header and maintains authentication state, and - # traps HTTP request header for inserting necessary authentication header. - # - # ProxyAuth has sub filters (BasicAuth, NegotiateAuth, and SSPINegotiateAuth) - # and delegates some operations to it. - # NegotiateAuth requires 'ruby/ntlm' module. - # SSPINegotiateAuth requires 'win32/sspi' module. - class ProxyAuth < AuthFilterBase - attr_reader :basic_auth - attr_reader :negotiate_auth - attr_reader :sspi_negotiate_auth - - # Creates new ProxyAuth. - def initialize - @basic_auth = BasicAuth.new - @negotiate_auth = NegotiateAuth.new - @sspi_negotiate_auth = SSPINegotiateAuth.new - # sort authenticators by priority - @authenticator = [@negotiate_auth, @sspi_negotiate_auth, @basic_auth] - end - - # Resets challenge state. See sub filters for more details. - def reset_challenge - @authenticator.each do |auth| - auth.reset_challenge - end - end - - # Set authentication credential. See sub filters for more details. - def set_auth(user, passwd) - @authenticator.each do |auth| - auth.set(nil, user, passwd) - end - reset_challenge - end - - # Filter API implementation. Traps HTTP request and insert - # 'Proxy-Authorization' header if needed. - def filter_request(req) - @authenticator.each do |auth| - if cred = auth.get(req) - req.header.set('Proxy-Authorization', auth.scheme + " " + cred) - return - end - end - end - - # Filter API implementation. Traps HTTP response and parses - # 'Proxy-Authenticate' header. - def filter_response(req, res) - command = nil - if res.status == HTTP::Status::PROXY_AUTHENTICATE_REQUIRED - if challenge = parse_authentication_header(res, 'proxy-authenticate') - uri = req.header.request_uri - challenge.each do |scheme, param_str| - @authenticator.each do |auth| - if scheme.downcase == auth.scheme.downcase - challengeable = auth.challenge(uri, param_str) - command = :retry if challengeable - end - end - end - # ignore unknown authentication scheme - end - end - command - end - end - - # Authentication filter for handling BasicAuth negotiation. - # Used in WWWAuth and ProxyAuth. - class BasicAuth - # Authentication scheme. - attr_reader :scheme - - # Creates new BasicAuth filter. - def initialize - @cred = nil - @auth = {} - @challengeable = {} - @scheme = "Basic" - end - - # Resets challenge state. Do not send '*Authorization' header until the - # server sends '*Authentication' again. - def reset_challenge - @challengeable.clear - end - - # Set authentication credential. - # uri == nil for generic purpose (allow to use user/password for any URL). - def set(uri, user, passwd) - if uri.nil? - @cred = ["#{user}:#{passwd}"].pack('m').tr("\n", '') - else - uri = Util.uri_dirname(uri) - @auth[uri] = ["#{user}:#{passwd}"].pack('m').tr("\n", '') - end - end - - # Response handler: returns credential. - # It sends cred only when a given uri is; - # * child page of challengeable(got *Authenticate before) uri and, - # * child page of defined credential - def get(req) - target_uri = req.header.request_uri - return nil unless @challengeable.find { |uri, ok| - Util.uri_part_of(target_uri, uri) and ok - } - return @cred if @cred - Util.hash_find_value(@auth) { |uri, cred| - Util.uri_part_of(target_uri, uri) - } - end - - # Challenge handler: remember URL for response. - def challenge(uri, param_str) - @challengeable[uri] = true - true - end - end - - - # Authentication filter for handling DigestAuth negotiation. - # Used in WWWAuth. - class DigestAuth - # Authentication scheme. - attr_reader :scheme - - # Creates new DigestAuth filter. - def initialize - @auth = {} - @challenge = {} - @nonce_count = 0 - @scheme = "Digest" - end - - # Resets challenge state. Do not send '*Authorization' header until the - # server sends '*Authentication' again. - def reset_challenge - @challenge.clear - end - - # Set authentication credential. - # uri == nil is ignored. - def set(uri, user, passwd) - if uri - uri = Util.uri_dirname(uri) - @auth[uri] = [user, passwd] - end - end - - # Response handler: returns credential. - # It sends cred only when a given uri is; - # * child page of challengeable(got *Authenticate before) uri and, - # * child page of defined credential - def get(req) - target_uri = req.header.request_uri - param = Util.hash_find_value(@challenge) { |uri, v| - Util.uri_part_of(target_uri, uri) - } - return nil unless param - user, passwd = Util.hash_find_value(@auth) { |uri, auth_data| - Util.uri_part_of(target_uri, uri) - } - return nil unless user - uri = req.header.request_uri - calc_cred(req.header.request_method, uri, user, passwd, param) - end - - # Challenge handler: remember URL and challenge token for response. - def challenge(uri, param_str) - @challenge[uri] = parse_challenge_param(param_str) - true - end - - private - - # this method is implemented by sromano and posted to - # http://tools.assembla.com/breakout/wiki/DigestForSoap - # Thanks! - # supported algorithm: MD5 only for now - def calc_cred(method, uri, user, passwd, param) - a_1 = "#{user}:#{param['realm']}:#{passwd}" - a_2 = "#{method}:#{uri.path}" - nonce = param['nonce'] - cnonce = generate_cnonce() - @nonce_count += 1 - message_digest = [] - message_digest << Digest::MD5.hexdigest(a_1) - message_digest << nonce - message_digest << ('%08x' % @nonce_count) - message_digest << cnonce - message_digest << param['qop'] - message_digest << Digest::MD5.hexdigest(a_2) - header = [] - header << "username=\"#{user}\"" - header << "realm=\"#{param['realm']}\"" - header << "nonce=\"#{nonce}\"" - header << "uri=\"#{uri.path}\"" - header << "cnonce=\"#{cnonce}\"" - header << "nc=#{'%08x' % @nonce_count}" - header << "qop=\"#{param['qop']}\"" - header << "response=\"#{Digest::MD5.hexdigest(message_digest.join(":"))}\"" - header << "algorithm=\"MD5\"" - header << "opaque=\"#{param['opaque']}\"" if param.key?('opaque') - header.join(", ") - end - - # cf. WEBrick::HTTPAuth::DigestAuth#generate_next_nonce(aTime) - def generate_cnonce - now = "%012d" % Time.now.to_i - pk = Digest::MD5.hexdigest([now, self.__id__, Process.pid, rand(65535)].join)[0, 32] - [now + ':' + pk].pack('m*').chop - end - - def parse_challenge_param(param_str) - param = {} - param_str.scan(/\s*([^\,]+(?:\\.[^\,]*)*)/).each do |str| - key, value = str[0].scan(/\A([^=]+)=(.*)\z/)[0] - if /\A"(.*)"\z/ =~ value - value = $1.gsub(/\\(.)/, '\1') - end - param[key] = value - end - param - end - end - - - # Authentication filter for handling Negotiate/NTLM negotiation. - # Used in WWWAuth and ProxyAuth. - # - # NegotiateAuth depends on 'ruby/ntlm' module. - class NegotiateAuth - # Authentication scheme. - attr_reader :scheme - # NTLM opt for ruby/ntlm. {:ntlmv2 => true} by default. - attr_reader :ntlm_opt - - # Creates new NegotiateAuth filter. - def initialize - @auth = {} - @auth_default = nil - @challenge = {} - @scheme = "Negotiate" - @ntlm_opt = { - :ntlmv2 => true - } - end - - # Resets challenge state. Do not send '*Authorization' header until the - # server sends '*Authentication' again. - def reset_challenge - @challenge.clear - end - - # Set authentication credential. - # uri == nil for generic purpose (allow to use user/password for any URL). - def set(uri, user, passwd) - if uri - uri = Util.uri_dirname(uri) - @auth[uri] = [user, passwd] - else - @auth_default = [user, passwd] - end - end - - # Response handler: returns credential. - # See ruby/ntlm for negotiation state transition. - def get(req) - return nil unless NTLMEnabled - target_uri = req.header.request_uri - domain_uri, param = @challenge.find { |uri, v| - Util.uri_part_of(target_uri, uri) - } - return nil unless param - user, passwd = Util.hash_find_value(@auth) { |uri, auth_data| - Util.uri_part_of(target_uri, uri) - } - unless user - user, passwd = @auth_default - end - return nil unless user - state = param[:state] - authphrase = param[:authphrase] - case state - when :init - t1 = Net::NTLM::Message::Type1.new - return t1.encode64 - when :response - t2 = Net::NTLM::Message.decode64(authphrase) - t3 = t2.response({:user => user, :password => passwd}, @ntlm_opt.dup) - @challenge.delete(domain_uri) - return t3.encode64 - end - nil - end - - # Challenge handler: remember URL and challenge token for response. - def challenge(uri, param_str) - return false unless NTLMEnabled - if param_str.nil? or @challenge[uri].nil? - c = @challenge[uri] = {} - c[:state] = :init - c[:authphrase] = "" - else - c = @challenge[uri] - c[:state] = :response - c[:authphrase] = param_str - end - true - end - end - - - # Authentication filter for handling Negotiate/NTLM negotiation. - # Used in ProxyAuth. - # - # SSPINegotiateAuth depends on 'win32/sspi' module. - class SSPINegotiateAuth - # Authentication scheme. - attr_reader :scheme - - # Creates new SSPINegotiateAuth filter. - def initialize - @challenge = {} - @scheme = "Negotiate" - end - - # Resets challenge state. Do not send '*Authorization' header until the - # server sends '*Authentication' again. - def reset_challenge - @challenge.clear - end - - # Set authentication credential. - # NOT SUPPORTED: username and necessary data is retrieved by win32/sspi. - # See win32/sspi for more details. - def set(uri, user, passwd) - # not supported - end - - # Response handler: returns credential. - # See win32/sspi for negotiation state transition. - def get(req) - return nil unless SSPIEnabled - target_uri = req.header.request_uri - domain_uri, param = @challenge.find { |uri, v| - Util.uri_part_of(target_uri, uri) - } - return nil unless param - state = param[:state] - authenticator = param[:authenticator] - authphrase = param[:authphrase] - case state - when :init - authenticator = param[:authenticator] = Win32::SSPI::NegotiateAuth.new - return authenticator.get_initial_token(@scheme) - when :response - @challenge.delete(domain_uri) - return authenticator.complete_authentication(authphrase) - end - nil - end - - # Challenge handler: remember URL and challenge token for response. - def challenge(uri, param_str) - return false unless SSPIEnabled - if param_str.nil? or @challenge[uri].nil? - c = @challenge[uri] = {} - c[:state] = :init - c[:authenticator] = nil - c[:authphrase] = "" - else - c = @challenge[uri] - c[:state] = :response - c[:authphrase] = param_str - end - true - end - end - - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/cacert.p7s b/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/cacert.p7s deleted file mode 100644 index 6a120d5f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/cacert.p7s +++ /dev/null @@ -1,1579 +0,0 @@ -MIME-Version: 1.0 -Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="----6E1446C08659E2DBCE5A94E3E5BD325D" - -This is an S/MIME signed message - -------6E1446C08659E2DBCE5A94E3E5BD325D ------BEGIN CERTIFICATE----- -MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw -MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML -QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD -VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA -A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul -CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n -tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl -dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch -PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC -+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O -BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl -MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk -ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB -IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X -7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz -43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY -eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl -pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA -WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs -IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 -MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux -FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h -bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v -dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt -H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 -uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX -mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX -a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN -E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 -WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD -VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 -Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU -cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx -IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN -AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH -YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC -Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX -c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a -mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1 -MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK -EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh -BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq -xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G -87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i -2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U -WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1 -0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G -A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr -pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL -ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm -aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv -hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm -hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X -dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3 -P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y -iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no -xqE= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP -bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2 -MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft -ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lk -hsmj76CGv2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym -1BW32J/X3HGrfpq/m44zDyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsW -OqMFf6Dch9Wc/HKpoH145LcxVR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb -2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQko -O3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAU -AK3Zo/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB -BQUAA4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF -Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAb -LjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTIdGcL+oir -oQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43gKd8hdIaC2y+C -MMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds -sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP -bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2 -MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft -ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC -206B89enfHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFci -KtZHgVdEglZTvYYUAQv8f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2 -JxhP7JsowtS013wMPgwr38oE18aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9 -BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7e -Xz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8B -PeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67 -Xnfn6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEq -Z8A9W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ -o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3 -+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124HhnAgMBAAGj -YzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3OpaaEg5+31IqEj -FNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE -AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmn -xPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2 -LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzccc -obGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8 -CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMe -IjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMA -DjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2F -AjgQ5ANh1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUX -Om/9riW99XJZZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPb -AZO1XB4Y3WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQl -Zvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw -RY8mkaKO/qk= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDpjCCAo6gAwIBAgIEAgAAvzANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJJ -RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MS8wLQYD -VQQDEyZCYWx0aW1vcmUgQ3liZXJUcnVzdCBDb2RlIFNpZ25pbmcgUm9vdDAeFw0w -MDA1MTcxNDAxMDBaFw0yNTA1MTcyMzU5MDBaMGcxCzAJBgNVBAYTAklFMRIwEAYD -VQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxLzAtBgNVBAMTJkJh -bHRpbW9yZSBDeWJlclRydXN0IENvZGUgU2lnbmluZyBSb290MIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyHGaGBKOetv5mvxBr9jy9AmOrT/+Zzc82skm -ULGxPsvoTnMA8rLc88VG+wnvGJbOp+CchF0gDnqgqjaL+ii2eC6z7OhH8wTwkCO0 -6q/lU7gF90ddK4bxp6TGOzW20g1SQdf0knXhogpQVoe+lwt7M4UQuSgY7jPqSBHX -W5FHdiLU7s9d56hOHJ2Wkd2cvXQJqHJhqrAhOvE9LANWCdLB3MO1x1Q3q+YmorJG -cXPKEYjuvOdk99ARGnNAWshJLA+375B/aIAEOAsbDzvU9aCzwo7hNLSAmW2edtSS -KUCxldI3pGcSf+Biu641xZk2gkS45ngYM2Fxk1stjZ94lYLrbQIDAQABo1owWDAT -BgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUyEE0XBUVBOVA8tGrmm8kknqH -QlowEgYDVR0TAQH/BAgwBgEB/wIBAzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcN -AQEFBQADggEBAFJ0qpVLIozHPZak/l36L7W86/AL6VY4HdFtDaG8aIvwxYClJDT9 -8pYYEYahNvU351RA1WQfw19wQmstOceeUgXO52py0o1yP0dQg6vHjSXJsOOnUxaV -pmpT6hidj3ipd3ca+bSXR1mIJyi1yuEu1z4Oog24IkQD49FjsEE6ofWkLfd2HgRU -mXgyQNcrfE26ppyweW4Hvozs7tc4aVvBDFZon/7r0eHIiPnyzX++hbREZwBQPvQm -A2Tqd33oXj4cN0fI1uqk8zY8l8I5cgWUGSXD1zdBD8Efh4r9qr7psWRX5NuSoc/h -Seg7H5ETWsOP2SVYSYBHD8YDrqzjv7fAqio= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ -RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD -VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX -DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y -ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy -VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr -mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr -IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK -mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu -XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy -dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye -jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 -BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 -DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 -9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx -jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 -Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz -ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS -R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xKTAnBgNVBAMTIENoYW1iZXJz -IG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEyMjk1MFoXDTM4MDcz -MTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBj -dXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIw -EAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEp -MCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW9 -28sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKAXuFixrYp4YFs8r/lfTJq -VKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorjh40G072Q -DuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR -5gN/ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfL -ZEFHcpOrUMPrCXZkNNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05a -Sd+pZgvMPMZ4fKecHePOjlO+Bd5gD2vlGts/4+EhySnB8esHnFIbAURRPHsl18Tl -UlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331lubKgdaX8ZSD6e2wsWsSaR6s -+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ0wlf2eOKNcx5 -Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj -ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAx -hduub+84Mxh2EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNV -HQ4EFgQU+SSsD7K1+HnA+mCIG8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1 -+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpN -YWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29t -L2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVy -ZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAt -IDIwMDiCCQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRV -HSAAMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20w -DQYJKoZIhvcNAQEFBQADggIBAJASryI1wqM58C7e6bXpeHxIvj99RZJe6dqxGfwW -PJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH3qLPaYRgM+gQDROpI9CF -5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbURWpGqOt1 -glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaH -FoI6M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2 -pSB7+R5KBWIBpih1YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MD -xvbxrN8y8NmBGuScvfaAFPDRLLmF9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QG -tjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcKzBIKinmwPQN/aUv0NCB9szTq -jktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvGnrDQWzilm1De -fhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg -OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZ -d0jQ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEn -MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL -ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMg -b2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAxNjEzNDNaFw0zNzA5MzAxNjEzNDRa -MH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZpcm1hIFNBIENJRiBB -ODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3JnMSIw -IAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0B -AQEFAAOCAQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtb -unXF/KGIJPov7coISjlUxFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0d -BmpAPrMMhe5cG3nCYsS4No41XQEMIwRHNaqbYE6gZj3LJgqcQKH0XZi/caulAGgq -7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jWDA+wWFjbw2Y3npuRVDM3 -0pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFVd9oKDMyX -roDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIG -A1UdEwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5j -aGFtYmVyc2lnbi5vcmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p -26EpW1eLTXYGduHRooowDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIA -BzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hhbWJlcnNpZ24ub3JnMCcGA1Ud -EgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYDVR0gBFEwTzBN -BgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz -aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEB -AAxBl8IahsAifJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZd -p0AJPaxJRUXcLo0waLIJuvvDL8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi -1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wNUPf6s+xCX6ndbcj0dc97wXImsQEc -XCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/nADydb47kMgkdTXg0 -eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1erfu -tGWaIZDgqtCYvDi1czyL+Nw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD -aGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMxNDBaFw0zODA3MzEx -MjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3Vy -cmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAG -A1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAl -BgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZI -hvcNAQEBBQADggIPADCCAgoCggIBAMDfVtPkOpt2RbQT2//BthmLN0EYlVJH6xed -KYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXfXjaOcNFccUMd2drvXNL7 -G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0ZJJ0YPP2 -zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4 -ddPB/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyG -HoiMvvKRhI9lNNgATH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2 -Id3UwD2ln58fQ1DJu7xsepeY7s2MH/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3V -yJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfeOx2YItaswTXbo6Al/3K1dh3e -beksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSFHTynyQbehP9r -6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh -wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsog -zCtLkykPAgMBAAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQW -BBS5CcqcHtvTbDprru1U8VuTBjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDpr -ru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UEBhMCRVUxQzBBBgNVBAcTOk1hZHJp -ZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJmaXJtYS5jb20vYWRk -cmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJmaXJt -YSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiC -CQDJzdPp1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCow -KAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZI -hvcNAQEFBQADggIBAICIf3DekijZBZRG/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZ -UohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6ReAJ3spED8IXDneRRXoz -X1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/sdZ7LoR/x -fxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVz -a2Mg9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yyd -Yhz2rXzdpjEetrHHfoUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMd -SqlapskD7+3056huirRXhOukP9DuqqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9O -AP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETrP3iZ8ntxPjzxmKfFGBI/5rso -M0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVqc5iJWzouE4ge -v8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z -09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTAeFw0wMjA2MTExMDQ2MzlaFw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6xwS7TT3zNJc4YPk/E -jG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdLkKWo -ePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GI -ULdtlkIJ89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapu -Ob7kky/ZR6By6/qmW6/KUz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUg -AKpoC6EahQGcxEZjgoi2IrHu/qpGWX7PNSzVttpd90gzFFS269lvzs2I1qsb2pY7 -HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA -uI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+GXYkHAQa -TOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTg -xSvgGrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1q -CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x -O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs -6GAqm4VKQPNriiTsBhYscw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM -MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D -ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU -cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 -WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg -Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw -IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH -UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM -TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU -BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM -kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x -AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV -HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y -sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL -I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 -J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY -VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI -03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb -MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow -GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj -YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL -MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE -BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM -GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua -BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe -3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 -YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR -rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm -ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU -oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF -MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v -QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t -b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF -AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q -GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz -Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 -G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi -l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 -smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc -MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj -IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB -IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE -RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl -U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290 -IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU -ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC -QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr -rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S -NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc -QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH -txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP -BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp -tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa -IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl -6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+ -xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU -Cm26OWMohpLzGITY+9HPBVZkVw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv -b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl -cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c -JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP -mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ -wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 -VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ -AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB -AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW -BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun -pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC -dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf -fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm -NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx -H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe -+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD -QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB -CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 -nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt -43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P -T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 -gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO -BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR -TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw -DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr -hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg -06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF -PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls -YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk -CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j -ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL -MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 -LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug -RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm -+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW -PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM -xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB -Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 -hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg -EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA -FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec -nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z -eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF -hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 -Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe -vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep -+OkuE6N36B9K ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML -RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 -IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0xOTEy -MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 -LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp -YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG -A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq -K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe -sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX -MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT -XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ -HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH -4QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGA -vtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJFrlwMB0G -CSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEA -WUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo -oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQ -h7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18 -f3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfN -B/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVy -vUxFnmG6v4SBkgPR0ml8xQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIE7TCCBFagAwIBAgIEOAOR7jANBgkqhkiG9w0BAQQFADCByTELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MUgwRgYDVQQLFD93d3cuZW50cnVzdC5u -ZXQvQ2xpZW50X0NBX0luZm8vQ1BTIGluY29ycC4gYnkgcmVmLiBsaW1pdHMgbGlh -Yi4xJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV -BAMTKkVudHJ1c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe -Fw05OTEwMTIxOTI0MzBaFw0xOTEwMTIxOTU0MzBaMIHJMQswCQYDVQQGEwJVUzEU -MBIGA1UEChMLRW50cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9D -bGllbnRfQ0FfSW5mby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjEl -MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMq -RW50cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0G -CSqGSIb3DQEBAQUAA4GLADCBhwKBgQDIOpleMRffrCdvkHvkGf9FozTC28GoT/Bo -6oT9n3V5z8GKUZSvx1cDR2SerYIbWtp/N3hHuzeYEpbOxhN979IMMFGpOZ5V+Pux -5zDeg7K6PvHViTs7hbqqdCz+PzFur5GVbgbUB01LLFZHGARS2g4Qk79jkJvh34zm -AqTmT173iwIBA6OCAeAwggHcMBEGCWCGSAGG+EIBAQQEAwIABzCCASIGA1UdHwSC -ARkwggEVMIHkoIHhoIHepIHbMIHYMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50 -cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9DbGllbnRfQ0FfSW5m -by9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjElMCMGA1UECxMcKGMp -IDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQg -Q2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCyg -KqAohiZodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NSTC9DbGllbnQxLmNybDArBgNV -HRAEJDAigA8xOTk5MTAxMjE5MjQzMFqBDzIwMTkxMDEyMTkyNDMwWjALBgNVHQ8E -BAMCAQYwHwYDVR0jBBgwFoAUxPucKXuXzUyW/O5bs8qZdIuV6kwwHQYDVR0OBBYE -FMT7nCl7l81MlvzuW7PKmXSLlepMMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA -BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEEBQADgYEAP66K8ddmAwWePvrqHEa7 -pFuPeJoSSJn59DXeDDYHAmsQOokUgZwxpnyyQbJq5wcBoUv5nyU7lsqZwz6hURzz -wy5E97BnRqqS5TvaHBkUODDV4qIxJS7x7EU47fgGWANzYrAQMY9Av2TgXD7FTx/a -EkP/TOYGJqibGapEPHayXOw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEgzCCA+ygAwIBAgIEOJ725DANBgkqhkiG9w0BAQQFADCBtDEUMBIGA1UEChML -RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9HQ0NBX0NQUyBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAyMDAw -IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENsaWVu -dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMDAyMDcxNjE2NDBaFw0yMDAy -MDcxNjQ2NDBaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 -LmVudHJ1c3QubmV0L0dDQ0FfQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp -YWIuKTElMCMGA1UECxMcKGMpIDIwMDAgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG -A1UEAxMqRW50cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCTdLS25MVL1qFof2LV7PdRV7Ny -Spj10InJrWPNTTVRaoTUrcloeW+46xHbh65cJFET8VQlhK8pK5/jgOLZy93GRUk0 -iJBeAZfv6lOm3fzB3ksqJeTpNfpVBQbliXrqpBFXO/x8PTbNZzVtpKklWb1m9fkn -5JVn1j+SgF7yNH0rhQIDAQABo4IBnjCCAZowEQYJYIZIAYb4QgEBBAQDAgAHMIHd -BgNVHR8EgdUwgdIwgc+ggcyggcmkgcYwgcMxFDASBgNVBAoTC0VudHJ1c3QubmV0 -MUAwPgYDVQQLFDd3d3cuZW50cnVzdC5uZXQvR0NDQV9DUFMgaW5jb3JwLiBieSBy -ZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMjAwMCBFbnRydXN0Lm5l -dCBMaW1pdGVkMTMwMQYDVQQDEypFbnRydXN0Lm5ldCBDbGllbnQgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMjAwMDAy -MDcxNjE2NDBagQ8yMDIwMDIwNzE2NDY0MFowCwYDVR0PBAQDAgEGMB8GA1UdIwQY -MBaAFISLdP3FjcD/J20gN0V8/i3OutN9MB0GA1UdDgQWBBSEi3T9xY3A/ydtIDdF -fP4tzrrTfTAMBgNVHRMEBTADAQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4w -AwIEkDANBgkqhkiG9w0BAQQFAAOBgQBObzWAO9GK9Q6nIMstZVXQkvTnhLUGJoMS -hAusO7JE7r3PQNsgDrpuFOow4DtifH+La3xKp9U1PL6oXOpLu5OOgGarDyn9TS2/ -GpsKkMWr2tGzhtQvJFJcem3G8v7lTRowjJDyutdKPkN+1MhQGof4T4HHdguEOnKd -zmVml64mXg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIElTCCA/6gAwIBAgIEOJsRPDANBgkqhkiG9w0BAQQFADCBujEUMBIGA1UEChML -RW50cnVzdC5uZXQxPzA9BgNVBAsUNnd3dy5lbnRydXN0Lm5ldC9TU0xfQ1BTIGlu -Y29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDIwMDAg -RW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJl -IFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMDAyMDQxNzIwMDBa -Fw0yMDAyMDQxNzUwMDBaMIG6MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDE/MD0GA1UE -CxQ2d3d3LmVudHJ1c3QubmV0L1NTTF9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p -dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMjAwMCBFbnRydXN0Lm5ldCBMaW1pdGVk -MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp -b24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHwV9OcfHO -8GCGD9JYf9Mzly0XonUwtZZkJi9ow0SrqHXmAGc0V55lxyKbc+bT3QgON1WqJUaB -bL3+qPZ1V1eMkGxKwz6LS0MKyRFWmponIpnPVZ5h2QLifLZ8OAfc439PmrkDQYC2 -dWcTC5/oVzbIXQA23mYU2m52H083jIITiQIDAQABo4IBpDCCAaAwEQYJYIZIAYb4 -QgEBBAQDAgAHMIHjBgNVHR8EgdswgdgwgdWggdKggc+kgcwwgckxFDASBgNVBAoT -C0VudHJ1c3QubmV0MT8wPQYDVQQLFDZ3d3cuZW50cnVzdC5uZXQvU1NMX0NQUyBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAyMDAw -IEVudHJ1c3QubmV0IExpbWl0ZWQxOjA4BgNVBAMTMUVudHJ1c3QubmV0IFNlY3Vy -ZSBTZXJ2ZXIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxDTALBgNVBAMTBENSTDEw -KwYDVR0QBCQwIoAPMjAwMDAyMDQxNzIwMDBagQ8yMDIwMDIwNDE3NTAwMFowCwYD -VR0PBAQDAgEGMB8GA1UdIwQYMBaAFMtswGvjuz7L/CKc/vuLkpyw8m4iMB0GA1Ud -DgQWBBTLbMBr47s+y/winP77i5KcsPJuIjAMBgNVHRMEBTADAQH/MB0GCSqGSIb2 -fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQQFAAOBgQBi24GRzsia -d0Iv7L0no1MPUBvqTpLwqa+poLpIYcvvyQbvH9X07t9WLebKahlzqlO+krNQAraF -JnJj2HVQYnUUt7NQGj/KEQALhUVpbbalrlHhStyCP2yMNLJ3a9kC9n8O6mUE8c1U -yrrJzOCE98g+EZfTYAkYvAX/bIkz8OwVDw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u -ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc -KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u -ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 -MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE -ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j -b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF -bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg -U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA -A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ -I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 -wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC -AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb -oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 -BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p -dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk -MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp -b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu -dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 -MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi -E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa -MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI -hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN -95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd -2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV -UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy -dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 -MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx -dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f -BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A -cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC -AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ -MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm -aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw -ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj -IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF -MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA -A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y -7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh -1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT -ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw -MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j -LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ -KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo -RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu -WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw -Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD -AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK -eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM -zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ -WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN -/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV -UzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2Vj -dXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0 -NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXggU2VjdXJlMSYwJAYD -VQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn2Z0G -vxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/ -BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0C -AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEX -MBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJl -IGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkw -NjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBq -y/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQF -MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA -A4GBAAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy -0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1 -E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT -ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw -MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj -dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l -c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC -UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc -58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ -o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH -MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr -aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA -A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA -Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv -8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT -MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i -YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg -R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 -9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq -fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv -iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU -1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ -bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW -MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA -ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l -uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn -Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS -tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF -PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un -hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV -5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw -MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT -aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ -jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp -xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp -1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG -snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ -U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 -9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B -AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz -yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE -38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP -AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad -DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME -HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G -A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp -Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 -MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG -A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL -v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 -eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq -tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd -C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa -zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB -mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH -V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n -bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG -3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs -J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO -291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS -ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd -AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 -TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh -MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE -YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 -MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo -ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg -MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN -ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA -PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w -wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi -EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY -avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ -YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE -sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h -/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 -IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD -ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy -OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P -TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ -HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER -dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf -ReYNnyicsbkqWletNw+vHX/bvZ8= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDtjCCAp6gAwIBAgICAbYwDQYJKoZIhvcNAQEFBQAwcDELMAkGA1UEBhMCVVMx -GDAWBgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1 -c3QgU29sdXRpb25zLCBJbmMuMR4wHAYDVQQDExVHVEUgQ3liZXJUcnVzdCBSb290 -IDUwHhcNOTgwODE0MTQ1MDAwWhcNMTMwODE0MjM1OTAwWjBwMQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU -cnVzdCBTb2x1dGlvbnMsIEluYy4xHjAcBgNVBAMTFUdURSBDeWJlclRydXN0IFJv -b3QgNTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALwSbj+KfHqXAewe -uzlaAvR4RKJIG457SVJ6uHtHs6+Um2+7lvoramVcuByUc76/iQoigO5X/IwFu3Cf -lzkE2qOHXKjlyq/AM5rVN1xLrOSA0KYjYPv9ci6UncfOwgQy73hgXe2thw9FZR48 -mgqavl0dmezn8tHGehfZrZtUln/EfGC/haoVNR1A2hG87FQhKC0joajwzy3N3fx+ -D17hZQdWywe00lboXjHMGGPEhtIthc+Tkqtt/mg5+95zvYb45EZ66p8My/QZ/mO8 -0Sx7iDM29uThnAxTgWAc2i6rlqkWiBNQmbK9Vd8VMH7o5Zj7cH5stQf8/Ea30O03 -ln4y/iECAwEAAaNaMFgwEgYDVR0TAQH/BAgwBgEB/wIBBTAOBgNVHQ8BAf8EBAMC -AQYwFwYDVR0gBBAwDjAMBgoqhkiG+GMBAgEDMBkGA1UdDgQSBBB2CkkhOEyf3vjE -ScdxcZGdMA0GCSqGSIb3DQEBBQUAA4IBAQBBOtQYW9q43iEc4Y4J5fFoNP/elvQH -9ac886xKsZv6kvqb7eYyIapKdsXcTzjl39WG5NXIdn2Y17HNj021kSNsi4rr6nzv -FJTExvAfSi0ycWMrY5EmAgm2gB3t4sy4f9uHY8jh0GwmsTUdQGYQG82VVBgzYewT -T9oT95mvPtDPjqZyorPDBZrJJ32SzH5SjbOrcG2eiZ9N6xp1wpiq1QIW1wyKvyXk -6y28mOlYOBl8uTf+2+KZCHMGx5eDan0QAS8yuRcFSmXmL86+XlOmgumaUwqEdC2D -ysiUFnZflGEo8IWnObvXi9moshMdVAk0JH0ggX1mfqKQdFwQxr3sqxvC ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD -VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv -bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv -b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU -cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds -b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH -iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS -r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 -04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r -GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 -3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P -lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDEl -MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMh -U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIz -MloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09N -IFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNlY3VyaXR5IENvbW11 -bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSE -RMqm4miO/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gO -zXppFodEtZDkBp2uoQSXWHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5 -bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4zZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDF -MxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4bepJz11sS6/vmsJWXMY1 -VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK9U2vP9eC -OKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G -CSqGSIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HW -tWS3irO4G8za+6xmiEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZ -q51ihPZRwSzJIxXYKLerJRO1RuGGAv8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDb -EJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnWmHyojf6GPgcWkuF75x3sM3Z+ -Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEWT1MKZPlO9L9O -VL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY -MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t -dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 -WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD -VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 -9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ -DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 -Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N -QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ -xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G -A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG -kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr -Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 -Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU -JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot -RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy -NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y -LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ -TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y -TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 -LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW -I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw -nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP -MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAx -MDQwNjEwNDkxM1oXDTIxMDQwNjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNV -BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMSBDQTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H887dF+2rDNbS82rDTG -29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9EJUk -oVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk -3w0LBUXl0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBL -qdReLjVQCfOAl/QMF6452F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIIN -nvmLVz5MxxftLItyM19yejhW1ebZrgUaHXVFsculJRwSVzb9IjcCAwEAAaMzMDEw -DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZTiFIwCwYDVR0PBAQDAgEG -MA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE928Jj2VuX -ZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0H -DjxVyhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VO -TzF2nBBhjrZTOqMRvq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2Uv -kVrCqIexVmiUefkl98HVrhq4uz2PqYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4w -zMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9ZIRlXvVWa ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP -MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAx -MDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNV -BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3/Ei9vX+ALTU74W+o -Z6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybTdXnt -5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s -3TmVToMGf+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2Ej -vOr7nQKV0ba5cTppCD8PtOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu -8nYybieDwnPz3BjotJPqdURrBGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEw -DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEG -MA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zil -zqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/ -3DEIcbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvD -FNr450kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6 -Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2 -ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl -MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp -U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw -NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE -ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp -ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 -DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf -8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN -+lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 -X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa -K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA -1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G -A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR -zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 -YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD -bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w -DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 -L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D -eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl -xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp -VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY -WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE -BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWdu -IFBsYXRpbnVtIENBIC0gRzIwHhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAw -WjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMSMwIQYDVQQD -ExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu669y -IIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2Htn -IuJpX+UFeNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+ -6ixuEFGSzH7VozPY1kneWCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5ob -jM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIoj5+saCB9bzuohTEJfwvH6GXp43gOCWcw -izSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/68++QHkwFix7qepF6w9fl -+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34TaNhxKFrY -zt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaP -pZjydomyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtF -KwH3HBqi7Ri6Cr2D+m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuW -ae5ogObnmLo2t/5u7Su9IPhlGdpVCX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMB -AAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O -BBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCvzAeHFUdvOMW0 -ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW -IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUA -A4ICAQAIhab1Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0 -uMoI3LQwnkAHFmtllXcBrqS3NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+ -FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4U99REJNi54Av4tHgvI42Rncz7Lj7 -jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8KV2LwUvJ4ooTHbG/ -u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl9x8D -YSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1 -puEa+S1BaYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXa -icYwu+uPyyIIoK6q8QNsOktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbG -DI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSYMdp08YSTcU1f+2BY0fvEwW2JorsgH51x -kcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAciIfNAChs0B0QTwoRqjt8Z -Wr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDITCCAoqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFBlcnNvbmFsIEJhc2lj -IENBMSgwJgYJKoZIhvcNAQkBFhlwZXJzb25hbC1iYXNpY0B0aGF3dGUuY29tMB4X -DTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgcsxCzAJBgNVBAYTAlpBMRUw -EwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UE -ChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2Vy -dmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQZXJzb25hbCBCYXNpYyBD -QTEoMCYGCSqGSIb3DQEJARYZcGVyc29uYWwtYmFzaWNAdGhhd3RlLmNvbTCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLyTU23AUE+CFeZIlDWmWr5vQvoPR+53 -dXLdjUmbllegeNTKP1GzaQuRdhciB5dqxFGTS+CN7zeVoQxN2jSQHReJl+A1OFdK -wPQIcOk8RHtQfmGakOMj04gRRif1CwcOu93RfyAKiLlWCy4cgNrx454p7xS9CkT7 -G1sY0b8jkyECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQF -AAOBgQAt4plrsD16iddZopQBHyvdEktTwq1/qqcAXJFAVyVKOKqEcLnZgA+le1z7 -c8a914phXAPjLSeoF+CEhULcXpvGt7Jtu3Sv5D/Lp7ew4F2+eIMllNLbgQ95B21P -9DkVWlIBe94y1k049hJcBlDfBVu9FEuh3ym6O0GN92NWod8isQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVt -YWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUu -Y29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgdExCzAJBgNVBAYT -AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEa -MBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBG -cmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhh -d3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1GnX1LCUZFtx6UfY -DFG26nKRsIRefS0Nj3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6WZBrCFG5E -rHzmj+hND3EfQDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVq -uzgkCGqYx7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zAN -BgkqhkiG9w0BAQQFAAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjP -MPuoSpaKH2JCI4wXD/S6ZJwXrEcp352YXtJsYHFcoqzceePnbgBHH7UNKOgCneSa -/RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK/qarigd1iwzdUYRr5PjRznei -gQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDKTCCApKgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBzzELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEjMCEGA1UEAxMaVGhhd3RlIFBlcnNvbmFsIFByZW1p -dW0gQ0ExKjAoBgkqhkiG9w0BCQEWG3BlcnNvbmFsLXByZW1pdW1AdGhhd3RlLmNv -bTAeFw05NjAxMDEwMDAwMDBaFw0yMDEyMzEyMzU5NTlaMIHPMQswCQYDVQQGEwJa -QTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAY -BgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9u -IFNlcnZpY2VzIERpdmlzaW9uMSMwIQYDVQQDExpUaGF3dGUgUGVyc29uYWwgUHJl -bWl1bSBDQTEqMCgGCSqGSIb3DQEJARYbcGVyc29uYWwtcHJlbWl1bUB0aGF3dGUu -Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJZtn4B0TPuYwu8KHvE0Vs -Bd/eJxZRNkERbGw77f4QfRKe5ZtCmv5gMcNmt3M6SK5O0DI3lIi1DbbZ8/JE2dWI -Et12TfIa/G8jHnrx2JhFTgcQ7xZC0EN1bUre4qrJMf8fAHB8Zs8QJQi6+u4A6UYD -ZicRFTuqW/KY3TZCstqIdQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqG -SIb3DQEBBAUAA4GBAGk2ifc0KjNyL2071CKyuG+axTZmDhs8obF1Wub9NdP4qPIH -b4Vnjt4rueIXsDqg8A6iAJrf8xQVbrvIhVqYgPn/vnQdPfP+MCXRNzRn+qVxeTBh -KXLA4CxM+1bkOqhv5TJZUtt1KFBZDPgLGeSs2a+WjS9Q2wfD6h+rM+D1KzGJ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy -dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t -MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB -MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG -A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl -cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv -bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE -VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ -ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR -uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG -9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI -hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM -pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm -MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx -MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT -DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 -dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl -cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 -DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD -gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 -yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX -L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj -EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG -7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e -QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ -qdq5snUb9kLy78fyGPmJvKP/iiMucEc= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV -BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 -Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYwMTEyMTQzODQzWhcNMjUxMjMxMjI1 -OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i -SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UEAxMc -VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jf -tMjWQ+nEdVl//OEd+DFwIxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKg -uNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2J -XjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQXa7pIXSSTYtZgo+U4+lK -8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7uSNQZu+99 -5OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1Ud -EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3 -kUrL84J6E1wIqzCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy -dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6 -Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz -JTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 -Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u -TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iS -GNn3Bzn1LL4GdXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprt -ZjluS5TmVfwLG4t3wVMTZonZKNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8 -au0WOB9/WIFaGusyiC2y8zl3gK9etmF1KdsjTYjKUCjLhdLTEKJZbtOTVAB6okaV -hgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kPJOzHdiEoZa5X6AeI -dUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfkvQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDtjCCAp6gAwIBAgIOBcAAAQACQdAGCk3OdRAwDQYJKoZIhvcNAQEFBQAwdjEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV -BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDQgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 -Q2VudGVyIENsYXNzIDQgQ0EgSUkwHhcNMDYwMzIzMTQxMDIzWhcNMjUxMjMxMjI1 -OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i -SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgNCBDQTElMCMGA1UEAxMc -VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgNCBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBALXNTJytrlG7fEjFDSmGehSt2VA9CXIgDRS2Y8b+WJ7gIV7z -jyIZ3E6RIM1viCmis8GsKnK6i1S4QF/yqvhDhsIwXMynXX/GCEnkDjkvjhjWkd0j -FnmA22xIHbzB3ygQY9GB493fL3l1oht48pQB5hBiecugfQLANIJ7x8CtHUzXapZ2 -W78mhEj9h/aECqqSB5lIPGG8ToVYx5ct/YFKocabEvVCUNFkPologiJw3fX64yhC -L04y87OjNopq1mJcrPoBbbTgci6VaLTxkwzGioLSHVPqfOA/QrcSWrjN2qUGZ8uh -d32llvCSHmcOHUJG5vnt+0dTf1cERh9GX8eu4I8CAwEAAaNCMEAwDwYDVR0TAQH/ -BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFB/quz4lGwa9pd1iBX7G -TFq/6A9DMA0GCSqGSIb3DQEBBQUAA4IBAQBYpCubTPfkpJKknGWYGWIi/HIy6QRd -xMRwLVpG3kxHiiW5ot3u6hKvSI3vK2fbO8w0mCr3CEf/Iq978fTr4jgCMxh1KBue -dmWsiANy8jhHHYz1nwqIUxAUu4DlDLNdjRfuHhkcho0UZ3iMksseIUn3f9MYv5x5 -+F0IebWqak2SNmy8eesOPXmK2PajVnBd3ttPedJ60pVchidlvqDTB4FAVd0Qy+BL -iILAkH0457+W4Ze6mqtCD9Of2J4VMxHL94J59bXAQVaS4d9VA61Iz9PyLrHHLVZM -ZHQqMc7cdalUR6SnQnIJ5+ECpkeyBM1CE+FhDOB4OiIgohxgQoaH96Xm ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV -BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1 -c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcNMDYwMzIyMTU1NDI4WhcNMjUxMjMx -MjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIg -R21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYwJAYD -VQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSR -JJZ4Hgmgm5qVSkr1YnwCqMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3T -fCZdzHd55yx4Oagmcw6iXSVphU9VDprvxrlE4Vc93x9UIuVvZaozhDrzznq+VZeu -jRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtwag+1m7Z3W0hZneTvWq3z -wZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9OgdwZu5GQ -fezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYD -VR0jBBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0G -CSqGSIb3DQEBBQUAA4IBAQAo0uCG1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X1 -7caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/CyvwbZ71q+s2IhtNerNXxTPqYn -8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3ghUJGooWMNjs -ydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT -ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/ -2TYcuiUaUj0a7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd -AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC -FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi -1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq -jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ -wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ -WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy -NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC -uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw -IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 -g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN -9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP -BSeOE6Fuwg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN -8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ -RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 -hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 -ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM -EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 -A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy -WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ -1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 -6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT -91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml -e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p -TpPDpFQUWw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB -kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw -IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG -EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD -VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu -dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN -BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6 -E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ -D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK -4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq -lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW -bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB -o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT -MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js -LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr -BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB -AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft -Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj -j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH -KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv -2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3 -mfnGV/TJVTl4uix5yaaIK/QI ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCB -rjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0BgNVBAMTLVVUTi1VU0VSRmlyc3Qt -Q2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05OTA3MDkxNzI4NTBa -Fw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAV -BgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5l -dHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UE -AxMtVVROLVVTRVJGaXJzdC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWls -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3B -YHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIxB8dOtINknS4p1aJkxIW9 -hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8om+rWV6l -L8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLm -SGHGTPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM -1tZUOt4KpLoDd7NlyP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws -6wIDAQABo4G5MIG2MAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud -DgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNVHR8EUTBPME2gS6BJhkdodHRw -Oi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGllbnRBdXRoZW50 -aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH -AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u -7mFVbwQ+zznexRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0 -xtcgBEXkzYABurorbs6q15L+5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQ -rfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarVNZ1yQAOJujEdxRBoUp7fooXFXAim -eOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZw7JHpsIyYdfHb0gk -USeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB -lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt -SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG -A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe -MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v -d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh -cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn -0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ -M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a -MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd -oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI -DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy -oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 -dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy -bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF -BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM -//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli -CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE -CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t -3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS -KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCB -lTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAbBgNVBAMTFFVUTi1VU0VSRmlyc3Qt -T2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAzNlowgZUxCzAJBgNV -BAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxHjAc -BgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3 -dy51c2VydHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCC -ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicP -HxzfOpuCaDDASmEd8S8O+r5596Uj71VRloTN2+O5bj4x2AogZ8f02b+U60cEPgLO -KqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQw5ujm9M89RKZd7G3CeBo -5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vulBe3/IW+ -pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehb -kkj7RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUC -AwEAAaOBrzCBrDALBgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E -FgQU2u1kdBScFDyr3ZmpvVsoTYs8ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDov -L2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmlyc3QtT2JqZWN0LmNybDApBgNV -HSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQwDQYJKoZIhvcN -AQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw -NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXB -mMiKVl0+7kNOPmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU -4U3GDZlDAQ0Slox4nb9QorFEqmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK5 -81OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCGhU3IfdeLA/5u1fedFqySLKAj5ZyR -Uh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy -NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY -dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 -WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS -v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v -UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu -IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC -W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICPTCCAaYCEQDNun9W8N/kvFT+IqyzcqpVMA0GCSqGSIb3DQEBAgUAMF8xCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xh -c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05 -NjAxMjkwMDAwMDBaFw0yODA4MDEyMzU5NTlaMF8xCzAJBgNVBAYTAlVTMRcwFQYD -VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJp -bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOB -jQAwgYkCgYEA5Rm/baNWYS2ZSHH2Z965jeu3noaACpEO+jglr0aIguVzqKCbJF0N -H8xlbgyw0FaEGIeaBpsQoXPftFg5a27B9hXVqKg/qhIGjTGsf7A01480Z4gJzRQR -4k5FVmkfeAKA2txHkSm7NsljXMXg1y2He6G3MrB7MLoqLzGq7qNn2tsCAwEAATAN -BgkqhkiG9w0BAQIFAAOBgQBMP7iLxmjf7kMzDl3ppssHhE16M/+SG/Q2rdiVIjZo -EWx8QszznC7EBz8UsA9P/5CSdvnivErpj82ggAr3xSnxgiJduLHdgSOjeyUVRjB5 -FvjqBUuUfx3CHMjjt/QQQDwTw18fU+hI5Ia0e6E1sHslurjTjqs/OJ0ANACY89Fx -lA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgdk4xWArzZbxpvUjZudVYK -VdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIqWpDBucSm -Fc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0J -h9ZrbWB85a7FkCMMXErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2ul -uIncrKTdcu1OofdPvAbT6shkdHvClUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68 -DzFc6PLZ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN2E1Lm0+afY8wR4 -nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/EbRrsC+MO -8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjV -ojYJrKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjb -PG7PoBMAGrgnoeS+Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP2 -6KbqxzcSXKMpHgLZ2x87tNcPVkeBFQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vr -n5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAq2aN17O6x5q25lXQBfGfMY1a -qtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/Ny9Sn2WCVhDr4 -wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3 -ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrs -pSCAaWihT37ha88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4 -E1Z5T21Q6huwtVexN2ZYI/PcD98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEC0b/EoXjaOR6+f/9YtFvgswDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAyIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQC2WoujDWojg4BrzzmH9CETMwZMJaLtVRKXxaeAufqDwSCg+i8VDXyh -YGt+eSz6Bg86rvYbb7HS/y8oUl+DfUvEerf4Zh+AVPy3wo5ZShRXRtGak75BkQO7 -FYCTXOvnzAhsPz6zSvz/S2wj1VCCJkQZjiPDceoZJEcEnnW/yKYAHwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBAIobK/o5wXTXXtgZZKJYSi034DNHD6zt96rbHuSLBlxg -J8pFUs4W7z8GZOeUaHxgMxURaa+dYo2jA1Rrpr7l7gUYYAS/QoD90KioHgE796Nc -r6Pc5iaAIzy4RHT3Cq5Ji2F4zCS/iIqnDupzGUH9TQPwiNHleI2lKk/2lw0Xd8rY ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0Ns -YXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH -MjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y -aXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAe -Fw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJVUzEX -MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGlj -IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMx -KGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s -eTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjM -HiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjw -DqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cC -AwEAATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9ji -nb3/7aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX -rXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnIn -jBJ7xUS0rg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVy -aVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24s -IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNp -Z24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJBgNV -BAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNp -Z24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIElu -Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24g -Q2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt -IEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArwoNwtUs22e5LeWU -J92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6tW8UvxDO -JxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUY -wZF7C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9o -koqQHgiBVrKtaaNS0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjN -qWm6o+sdDZykIKbBoMXRRkwXbdKsZj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/E -Srg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0JhU8wI1NQ0kdvekhktdmnLfe -xbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf0xwLRtxyID+u -7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU -sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RI -sH/7NiXaldDxJBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTP -cjnhsUPgKM+351psE2tJs//jGHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do -lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc -AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 -pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 -13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk -U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i -F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY -oJ2daZH9 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b -N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t -KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu -kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm -CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ -Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu -imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te -2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe -DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC -/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p -F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt -TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD -VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0 -MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVowXzELMAkGA1UEBhMCVVMxIDAeBgNV -BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2Vy -dmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUAA4GJ -ADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII -0haGN1XpsSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphI -uR2nKRoTLkoRWZweFdVJVCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZI -hvcNAQECBQADfgBl3X7hsuyw4jrg7HFGmhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3 -YQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2qUtN8iD3zV9/ZHuO3ABc -1/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICoTCCAgqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBizELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzAN -BgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAd -BgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwHhcNOTcwMTAxMDAwMDAwWhcN -MjAxMjMxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4g -Q2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsG -A1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1l -c3RhbXBpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANYrWHhhRYZT -6jR7UZztsOYuGA7+4F+oJ9O0yeB8WU4WDnNUYMF/9p8u6TqFJBU820cEY8OexJQa -Wt9MevPZQx08EHp5JduQ/vBR5zDWQQD9nyjfeb6Uu522FOMjhdepQeBMpHmwKxqL -8vg7ij5FrHGSALSQQZj7X+36ty6K+Ig3AgMBAAGjEzARMA8GA1UdEwEB/wQFMAMB -Af8wDQYJKoZIhvcNAQEEBQADgYEAZ9viwuaHPUCDhjc1fR/OmsMMZiCouqoEiYbC -9RAIDb/LogWK0E02PvTX72nGXuSwlG9KuefeW4i2e9vjJ+V2w/A1wcu1J5szedyQ -pgCed/r8zSeUQhac0xxo7L9c3eWpexAKMnRUEzGLhQOEkbdYATAUOK8oyvyxUBkZ -CayJSdM= ------END CERTIFICATE----- - -------6E1446C08659E2DBCE5A94E3E5BD325D -Content-Type: application/x-pkcs7-signature; name="smime.p7s" -Content-Transfer-Encoding: base64 -Content-Disposition: attachment; filename="smime.p7s" - -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 -V+ct53+Li7s= - -------6E1446C08659E2DBCE5A94E3E5BD325D-- - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/cacert_sha1.p7s b/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/cacert_sha1.p7s deleted file mode 100644 index 8aa65e4d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/cacert_sha1.p7s +++ /dev/null @@ -1,1579 +0,0 @@ -MIME-Version: 1.0 -Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="----16967DC47640EB3C0A89A6FE94592C26" - -This is an S/MIME signed message - -------16967DC47640EB3C0A89A6FE94592C26 ------BEGIN CERTIFICATE----- -MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw -MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML -QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD -VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA -A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul -CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n -tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl -dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch -PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC -+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O -BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl -MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk -ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB -IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X -7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz -43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY -eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl -pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA -WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs -IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 -MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux -FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h -bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v -dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt -H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 -uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX -mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX -a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN -E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 -WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD -VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 -Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU -cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx -IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN -AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH -YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC -Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX -c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a -mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1 -MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK -EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh -BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq -xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G -87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i -2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U -WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1 -0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G -A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr -pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL -ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm -aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv -hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm -hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X -dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3 -P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y -iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no -xqE= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP -bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2 -MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft -ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lk -hsmj76CGv2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym -1BW32J/X3HGrfpq/m44zDyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsW -OqMFf6Dch9Wc/HKpoH145LcxVR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb -2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQko -O3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAU -AK3Zo/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB -BQUAA4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF -Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAb -LjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTIdGcL+oir -oQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43gKd8hdIaC2y+C -MMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds -sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP -bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2 -MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft -ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC -206B89enfHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFci -KtZHgVdEglZTvYYUAQv8f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2 -JxhP7JsowtS013wMPgwr38oE18aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9 -BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7e -Xz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8B -PeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67 -Xnfn6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEq -Z8A9W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ -o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3 -+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124HhnAgMBAAGj -YzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3OpaaEg5+31IqEj -FNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE -AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmn -xPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2 -LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzccc -obGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8 -CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMe -IjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMA -DjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2F -AjgQ5ANh1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUX -Om/9riW99XJZZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPb -AZO1XB4Y3WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQl -Zvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw -RY8mkaKO/qk= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDpjCCAo6gAwIBAgIEAgAAvzANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJJ -RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MS8wLQYD -VQQDEyZCYWx0aW1vcmUgQ3liZXJUcnVzdCBDb2RlIFNpZ25pbmcgUm9vdDAeFw0w -MDA1MTcxNDAxMDBaFw0yNTA1MTcyMzU5MDBaMGcxCzAJBgNVBAYTAklFMRIwEAYD -VQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxLzAtBgNVBAMTJkJh -bHRpbW9yZSBDeWJlclRydXN0IENvZGUgU2lnbmluZyBSb290MIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyHGaGBKOetv5mvxBr9jy9AmOrT/+Zzc82skm -ULGxPsvoTnMA8rLc88VG+wnvGJbOp+CchF0gDnqgqjaL+ii2eC6z7OhH8wTwkCO0 -6q/lU7gF90ddK4bxp6TGOzW20g1SQdf0knXhogpQVoe+lwt7M4UQuSgY7jPqSBHX -W5FHdiLU7s9d56hOHJ2Wkd2cvXQJqHJhqrAhOvE9LANWCdLB3MO1x1Q3q+YmorJG -cXPKEYjuvOdk99ARGnNAWshJLA+375B/aIAEOAsbDzvU9aCzwo7hNLSAmW2edtSS -KUCxldI3pGcSf+Biu641xZk2gkS45ngYM2Fxk1stjZ94lYLrbQIDAQABo1owWDAT -BgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUyEE0XBUVBOVA8tGrmm8kknqH -QlowEgYDVR0TAQH/BAgwBgEB/wIBAzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcN -AQEFBQADggEBAFJ0qpVLIozHPZak/l36L7W86/AL6VY4HdFtDaG8aIvwxYClJDT9 -8pYYEYahNvU351RA1WQfw19wQmstOceeUgXO52py0o1yP0dQg6vHjSXJsOOnUxaV -pmpT6hidj3ipd3ca+bSXR1mIJyi1yuEu1z4Oog24IkQD49FjsEE6ofWkLfd2HgRU -mXgyQNcrfE26ppyweW4Hvozs7tc4aVvBDFZon/7r0eHIiPnyzX++hbREZwBQPvQm -A2Tqd33oXj4cN0fI1uqk8zY8l8I5cgWUGSXD1zdBD8Efh4r9qr7psWRX5NuSoc/h -Seg7H5ETWsOP2SVYSYBHD8YDrqzjv7fAqio= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ -RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD -VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX -DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y -ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy -VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr -mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr -IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK -mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu -XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy -dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye -jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 -BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 -DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 -9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx -jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 -Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz -ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS -R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xKTAnBgNVBAMTIENoYW1iZXJz -IG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEyMjk1MFoXDTM4MDcz -MTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBj -dXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIw -EAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEp -MCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW9 -28sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKAXuFixrYp4YFs8r/lfTJq -VKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorjh40G072Q -DuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR -5gN/ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfL -ZEFHcpOrUMPrCXZkNNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05a -Sd+pZgvMPMZ4fKecHePOjlO+Bd5gD2vlGts/4+EhySnB8esHnFIbAURRPHsl18Tl -UlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331lubKgdaX8ZSD6e2wsWsSaR6s -+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ0wlf2eOKNcx5 -Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj -ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAx -hduub+84Mxh2EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNV -HQ4EFgQU+SSsD7K1+HnA+mCIG8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1 -+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpN -YWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29t -L2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVy -ZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAt -IDIwMDiCCQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRV -HSAAMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20w -DQYJKoZIhvcNAQEFBQADggIBAJASryI1wqM58C7e6bXpeHxIvj99RZJe6dqxGfwW -PJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH3qLPaYRgM+gQDROpI9CF -5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbURWpGqOt1 -glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaH -FoI6M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2 -pSB7+R5KBWIBpih1YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MD -xvbxrN8y8NmBGuScvfaAFPDRLLmF9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QG -tjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcKzBIKinmwPQN/aUv0NCB9szTq -jktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvGnrDQWzilm1De -fhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg -OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZ -d0jQ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEn -MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL -ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMg -b2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAxNjEzNDNaFw0zNzA5MzAxNjEzNDRa -MH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZpcm1hIFNBIENJRiBB -ODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3JnMSIw -IAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0B -AQEFAAOCAQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtb -unXF/KGIJPov7coISjlUxFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0d -BmpAPrMMhe5cG3nCYsS4No41XQEMIwRHNaqbYE6gZj3LJgqcQKH0XZi/caulAGgq -7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jWDA+wWFjbw2Y3npuRVDM3 -0pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFVd9oKDMyX -roDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIG -A1UdEwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5j -aGFtYmVyc2lnbi5vcmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p -26EpW1eLTXYGduHRooowDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIA -BzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hhbWJlcnNpZ24ub3JnMCcGA1Ud -EgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYDVR0gBFEwTzBN -BgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz -aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEB -AAxBl8IahsAifJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZd -p0AJPaxJRUXcLo0waLIJuvvDL8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi -1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wNUPf6s+xCX6ndbcj0dc97wXImsQEc -XCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/nADydb47kMgkdTXg0 -eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1erfu -tGWaIZDgqtCYvDi1czyL+Nw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD -aGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMxNDBaFw0zODA3MzEx -MjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3Vy -cmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAG -A1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAl -BgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZI -hvcNAQEBBQADggIPADCCAgoCggIBAMDfVtPkOpt2RbQT2//BthmLN0EYlVJH6xed -KYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXfXjaOcNFccUMd2drvXNL7 -G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0ZJJ0YPP2 -zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4 -ddPB/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyG -HoiMvvKRhI9lNNgATH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2 -Id3UwD2ln58fQ1DJu7xsepeY7s2MH/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3V -yJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfeOx2YItaswTXbo6Al/3K1dh3e -beksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSFHTynyQbehP9r -6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh -wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsog -zCtLkykPAgMBAAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQW -BBS5CcqcHtvTbDprru1U8VuTBjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDpr -ru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UEBhMCRVUxQzBBBgNVBAcTOk1hZHJp -ZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJmaXJtYS5jb20vYWRk -cmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJmaXJt -YSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiC -CQDJzdPp1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCow -KAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZI -hvcNAQEFBQADggIBAICIf3DekijZBZRG/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZ -UohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6ReAJ3spED8IXDneRRXoz -X1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/sdZ7LoR/x -fxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVz -a2Mg9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yyd -Yhz2rXzdpjEetrHHfoUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMd -SqlapskD7+3056huirRXhOukP9DuqqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9O -AP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETrP3iZ8ntxPjzxmKfFGBI/5rso -M0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVqc5iJWzouE4ge -v8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z -09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTAeFw0wMjA2MTExMDQ2MzlaFw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6xwS7TT3zNJc4YPk/E -jG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdLkKWo -ePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GI -ULdtlkIJ89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapu -Ob7kky/ZR6By6/qmW6/KUz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUg -AKpoC6EahQGcxEZjgoi2IrHu/qpGWX7PNSzVttpd90gzFFS269lvzs2I1qsb2pY7 -HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA -uI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+GXYkHAQa -TOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTg -xSvgGrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1q -CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x -O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs -6GAqm4VKQPNriiTsBhYscw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM -MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D -ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU -cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 -WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg -Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw -IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH -UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM -TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU -BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM -kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x -AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV -HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y -sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL -I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 -J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY -VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI -03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb -MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow -GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj -YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL -MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE -BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM -GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua -BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe -3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 -YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR -rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm -ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU -oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF -MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v -QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t -b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF -AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q -GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz -Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 -G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi -l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 -smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc -MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj -IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB -IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE -RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl -U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290 -IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU -ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC -QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr -rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S -NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc -QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH -txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP -BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp -tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa -IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl -6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+ -xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU -Cm26OWMohpLzGITY+9HPBVZkVw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv -b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl -cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c -JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP -mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ -wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 -VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ -AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB -AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW -BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun -pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC -dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf -fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm -NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx -H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe -+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD -QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB -CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 -nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt -43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P -T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 -gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO -BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR -TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw -DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr -hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg -06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF -PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls -YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk -CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j -ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL -MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 -LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug -RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm -+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW -PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM -xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB -Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 -hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg -EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA -FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec -nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z -eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF -hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 -Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe -vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep -+OkuE6N36B9K ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML -RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 -IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0xOTEy -MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 -LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp -YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG -A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq -K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe -sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX -MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT -XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ -HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH -4QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGA -vtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJFrlwMB0G -CSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEA -WUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo -oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQ -h7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18 -f3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfN -B/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVy -vUxFnmG6v4SBkgPR0ml8xQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIE7TCCBFagAwIBAgIEOAOR7jANBgkqhkiG9w0BAQQFADCByTELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MUgwRgYDVQQLFD93d3cuZW50cnVzdC5u -ZXQvQ2xpZW50X0NBX0luZm8vQ1BTIGluY29ycC4gYnkgcmVmLiBsaW1pdHMgbGlh -Yi4xJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV -BAMTKkVudHJ1c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe -Fw05OTEwMTIxOTI0MzBaFw0xOTEwMTIxOTU0MzBaMIHJMQswCQYDVQQGEwJVUzEU -MBIGA1UEChMLRW50cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9D -bGllbnRfQ0FfSW5mby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjEl -MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMq -RW50cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0G -CSqGSIb3DQEBAQUAA4GLADCBhwKBgQDIOpleMRffrCdvkHvkGf9FozTC28GoT/Bo -6oT9n3V5z8GKUZSvx1cDR2SerYIbWtp/N3hHuzeYEpbOxhN979IMMFGpOZ5V+Pux -5zDeg7K6PvHViTs7hbqqdCz+PzFur5GVbgbUB01LLFZHGARS2g4Qk79jkJvh34zm -AqTmT173iwIBA6OCAeAwggHcMBEGCWCGSAGG+EIBAQQEAwIABzCCASIGA1UdHwSC -ARkwggEVMIHkoIHhoIHepIHbMIHYMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50 -cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9DbGllbnRfQ0FfSW5m -by9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjElMCMGA1UECxMcKGMp -IDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQg -Q2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCyg -KqAohiZodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NSTC9DbGllbnQxLmNybDArBgNV -HRAEJDAigA8xOTk5MTAxMjE5MjQzMFqBDzIwMTkxMDEyMTkyNDMwWjALBgNVHQ8E -BAMCAQYwHwYDVR0jBBgwFoAUxPucKXuXzUyW/O5bs8qZdIuV6kwwHQYDVR0OBBYE -FMT7nCl7l81MlvzuW7PKmXSLlepMMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA -BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEEBQADgYEAP66K8ddmAwWePvrqHEa7 -pFuPeJoSSJn59DXeDDYHAmsQOokUgZwxpnyyQbJq5wcBoUv5nyU7lsqZwz6hURzz -wy5E97BnRqqS5TvaHBkUODDV4qIxJS7x7EU47fgGWANzYrAQMY9Av2TgXD7FTx/a -EkP/TOYGJqibGapEPHayXOw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEgzCCA+ygAwIBAgIEOJ725DANBgkqhkiG9w0BAQQFADCBtDEUMBIGA1UEChML -RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9HQ0NBX0NQUyBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAyMDAw -IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENsaWVu -dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMDAyMDcxNjE2NDBaFw0yMDAy -MDcxNjQ2NDBaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 -LmVudHJ1c3QubmV0L0dDQ0FfQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp -YWIuKTElMCMGA1UECxMcKGMpIDIwMDAgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG -A1UEAxMqRW50cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCTdLS25MVL1qFof2LV7PdRV7Ny -Spj10InJrWPNTTVRaoTUrcloeW+46xHbh65cJFET8VQlhK8pK5/jgOLZy93GRUk0 -iJBeAZfv6lOm3fzB3ksqJeTpNfpVBQbliXrqpBFXO/x8PTbNZzVtpKklWb1m9fkn -5JVn1j+SgF7yNH0rhQIDAQABo4IBnjCCAZowEQYJYIZIAYb4QgEBBAQDAgAHMIHd -BgNVHR8EgdUwgdIwgc+ggcyggcmkgcYwgcMxFDASBgNVBAoTC0VudHJ1c3QubmV0 -MUAwPgYDVQQLFDd3d3cuZW50cnVzdC5uZXQvR0NDQV9DUFMgaW5jb3JwLiBieSBy -ZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMjAwMCBFbnRydXN0Lm5l -dCBMaW1pdGVkMTMwMQYDVQQDEypFbnRydXN0Lm5ldCBDbGllbnQgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMjAwMDAy -MDcxNjE2NDBagQ8yMDIwMDIwNzE2NDY0MFowCwYDVR0PBAQDAgEGMB8GA1UdIwQY -MBaAFISLdP3FjcD/J20gN0V8/i3OutN9MB0GA1UdDgQWBBSEi3T9xY3A/ydtIDdF -fP4tzrrTfTAMBgNVHRMEBTADAQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4w -AwIEkDANBgkqhkiG9w0BAQQFAAOBgQBObzWAO9GK9Q6nIMstZVXQkvTnhLUGJoMS -hAusO7JE7r3PQNsgDrpuFOow4DtifH+La3xKp9U1PL6oXOpLu5OOgGarDyn9TS2/ -GpsKkMWr2tGzhtQvJFJcem3G8v7lTRowjJDyutdKPkN+1MhQGof4T4HHdguEOnKd -zmVml64mXg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIElTCCA/6gAwIBAgIEOJsRPDANBgkqhkiG9w0BAQQFADCBujEUMBIGA1UEChML -RW50cnVzdC5uZXQxPzA9BgNVBAsUNnd3dy5lbnRydXN0Lm5ldC9TU0xfQ1BTIGlu -Y29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDIwMDAg -RW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJl -IFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMDAyMDQxNzIwMDBa -Fw0yMDAyMDQxNzUwMDBaMIG6MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDE/MD0GA1UE -CxQ2d3d3LmVudHJ1c3QubmV0L1NTTF9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p -dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMjAwMCBFbnRydXN0Lm5ldCBMaW1pdGVk -MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp -b24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHwV9OcfHO -8GCGD9JYf9Mzly0XonUwtZZkJi9ow0SrqHXmAGc0V55lxyKbc+bT3QgON1WqJUaB -bL3+qPZ1V1eMkGxKwz6LS0MKyRFWmponIpnPVZ5h2QLifLZ8OAfc439PmrkDQYC2 -dWcTC5/oVzbIXQA23mYU2m52H083jIITiQIDAQABo4IBpDCCAaAwEQYJYIZIAYb4 -QgEBBAQDAgAHMIHjBgNVHR8EgdswgdgwgdWggdKggc+kgcwwgckxFDASBgNVBAoT -C0VudHJ1c3QubmV0MT8wPQYDVQQLFDZ3d3cuZW50cnVzdC5uZXQvU1NMX0NQUyBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAyMDAw -IEVudHJ1c3QubmV0IExpbWl0ZWQxOjA4BgNVBAMTMUVudHJ1c3QubmV0IFNlY3Vy -ZSBTZXJ2ZXIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxDTALBgNVBAMTBENSTDEw -KwYDVR0QBCQwIoAPMjAwMDAyMDQxNzIwMDBagQ8yMDIwMDIwNDE3NTAwMFowCwYD -VR0PBAQDAgEGMB8GA1UdIwQYMBaAFMtswGvjuz7L/CKc/vuLkpyw8m4iMB0GA1Ud -DgQWBBTLbMBr47s+y/winP77i5KcsPJuIjAMBgNVHRMEBTADAQH/MB0GCSqGSIb2 -fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQQFAAOBgQBi24GRzsia -d0Iv7L0no1MPUBvqTpLwqa+poLpIYcvvyQbvH9X07t9WLebKahlzqlO+krNQAraF -JnJj2HVQYnUUt7NQGj/KEQALhUVpbbalrlHhStyCP2yMNLJ3a9kC9n8O6mUE8c1U -yrrJzOCE98g+EZfTYAkYvAX/bIkz8OwVDw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u -ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc -KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u -ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 -MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE -ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j -b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF -bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg -U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA -A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ -I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 -wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC -AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb -oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 -BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p -dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk -MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp -b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu -dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 -MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi -E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa -MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI -hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN -95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd -2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV -UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy -dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 -MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx -dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f -BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A -cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC -AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ -MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm -aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw -ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj -IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF -MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA -A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y -7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh -1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT -ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw -MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j -LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ -KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo -RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu -WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw -Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD -AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK -eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM -zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ -WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN -/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV -UzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2Vj -dXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0 -NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXggU2VjdXJlMSYwJAYD -VQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn2Z0G -vxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/ -BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0C -AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEX -MBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJl -IGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkw -NjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBq -y/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQF -MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA -A4GBAAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy -0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1 -E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT -ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw -MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj -dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l -c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC -UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc -58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ -o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH -MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr -aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA -A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA -Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv -8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT -MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i -YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg -R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 -9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq -fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv -iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU -1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ -bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW -MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA -ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l -uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn -Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS -tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF -PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un -hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV -5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw -MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT -aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ -jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp -xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp -1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG -snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ -U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 -9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B -AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz -yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE -38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP -AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad -DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME -HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G -A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp -Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 -MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG -A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL -v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 -eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq -tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd -C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa -zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB -mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH -V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n -bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG -3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs -J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO -291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS -ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd -AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 -TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh -MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE -YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 -MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo -ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg -MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN -ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA -PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w -wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi -EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY -avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ -YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE -sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h -/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 -IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD -ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy -OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P -TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ -HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER -dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf -ReYNnyicsbkqWletNw+vHX/bvZ8= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDtjCCAp6gAwIBAgICAbYwDQYJKoZIhvcNAQEFBQAwcDELMAkGA1UEBhMCVVMx -GDAWBgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1 -c3QgU29sdXRpb25zLCBJbmMuMR4wHAYDVQQDExVHVEUgQ3liZXJUcnVzdCBSb290 -IDUwHhcNOTgwODE0MTQ1MDAwWhcNMTMwODE0MjM1OTAwWjBwMQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU -cnVzdCBTb2x1dGlvbnMsIEluYy4xHjAcBgNVBAMTFUdURSBDeWJlclRydXN0IFJv -b3QgNTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALwSbj+KfHqXAewe -uzlaAvR4RKJIG457SVJ6uHtHs6+Um2+7lvoramVcuByUc76/iQoigO5X/IwFu3Cf -lzkE2qOHXKjlyq/AM5rVN1xLrOSA0KYjYPv9ci6UncfOwgQy73hgXe2thw9FZR48 -mgqavl0dmezn8tHGehfZrZtUln/EfGC/haoVNR1A2hG87FQhKC0joajwzy3N3fx+ -D17hZQdWywe00lboXjHMGGPEhtIthc+Tkqtt/mg5+95zvYb45EZ66p8My/QZ/mO8 -0Sx7iDM29uThnAxTgWAc2i6rlqkWiBNQmbK9Vd8VMH7o5Zj7cH5stQf8/Ea30O03 -ln4y/iECAwEAAaNaMFgwEgYDVR0TAQH/BAgwBgEB/wIBBTAOBgNVHQ8BAf8EBAMC -AQYwFwYDVR0gBBAwDjAMBgoqhkiG+GMBAgEDMBkGA1UdDgQSBBB2CkkhOEyf3vjE -ScdxcZGdMA0GCSqGSIb3DQEBBQUAA4IBAQBBOtQYW9q43iEc4Y4J5fFoNP/elvQH -9ac886xKsZv6kvqb7eYyIapKdsXcTzjl39WG5NXIdn2Y17HNj021kSNsi4rr6nzv -FJTExvAfSi0ycWMrY5EmAgm2gB3t4sy4f9uHY8jh0GwmsTUdQGYQG82VVBgzYewT -T9oT95mvPtDPjqZyorPDBZrJJ32SzH5SjbOrcG2eiZ9N6xp1wpiq1QIW1wyKvyXk -6y28mOlYOBl8uTf+2+KZCHMGx5eDan0QAS8yuRcFSmXmL86+XlOmgumaUwqEdC2D -ysiUFnZflGEo8IWnObvXi9moshMdVAk0JH0ggX1mfqKQdFwQxr3sqxvC ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD -VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv -bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv -b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU -cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds -b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH -iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS -r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 -04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r -GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 -3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P -lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDEl -MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMh -U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIz -MloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09N -IFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNlY3VyaXR5IENvbW11 -bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSE -RMqm4miO/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gO -zXppFodEtZDkBp2uoQSXWHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5 -bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4zZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDF -MxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4bepJz11sS6/vmsJWXMY1 -VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK9U2vP9eC -OKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G -CSqGSIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HW -tWS3irO4G8za+6xmiEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZ -q51ihPZRwSzJIxXYKLerJRO1RuGGAv8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDb -EJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnWmHyojf6GPgcWkuF75x3sM3Z+ -Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEWT1MKZPlO9L9O -VL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY -MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t -dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 -WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD -VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 -9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ -DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 -Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N -QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ -xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G -A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG -kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr -Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 -Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU -JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot -RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy -NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y -LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ -TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y -TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 -LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW -I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw -nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP -MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAx -MDQwNjEwNDkxM1oXDTIxMDQwNjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNV -BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMSBDQTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H887dF+2rDNbS82rDTG -29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9EJUk -oVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk -3w0LBUXl0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBL -qdReLjVQCfOAl/QMF6452F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIIN -nvmLVz5MxxftLItyM19yejhW1ebZrgUaHXVFsculJRwSVzb9IjcCAwEAAaMzMDEw -DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZTiFIwCwYDVR0PBAQDAgEG -MA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE928Jj2VuX -ZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0H -DjxVyhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VO -TzF2nBBhjrZTOqMRvq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2Uv -kVrCqIexVmiUefkl98HVrhq4uz2PqYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4w -zMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9ZIRlXvVWa ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP -MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAx -MDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNV -BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3/Ei9vX+ALTU74W+o -Z6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybTdXnt -5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s -3TmVToMGf+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2Ej -vOr7nQKV0ba5cTppCD8PtOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu -8nYybieDwnPz3BjotJPqdURrBGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEw -DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEG -MA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zil -zqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/ -3DEIcbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvD -FNr450kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6 -Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2 -ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl -MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp -U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw -NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE -ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp -ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 -DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf -8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN -+lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 -X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa -K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA -1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G -A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR -zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 -YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD -bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w -DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 -L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D -eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl -xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp -VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY -WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE -BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWdu -IFBsYXRpbnVtIENBIC0gRzIwHhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAw -WjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMSMwIQYDVQQD -ExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu669y -IIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2Htn -IuJpX+UFeNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+ -6ixuEFGSzH7VozPY1kneWCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5ob -jM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIoj5+saCB9bzuohTEJfwvH6GXp43gOCWcw -izSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/68++QHkwFix7qepF6w9fl -+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34TaNhxKFrY -zt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaP -pZjydomyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtF -KwH3HBqi7Ri6Cr2D+m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuW -ae5ogObnmLo2t/5u7Su9IPhlGdpVCX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMB -AAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O -BBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCvzAeHFUdvOMW0 -ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW -IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUA -A4ICAQAIhab1Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0 -uMoI3LQwnkAHFmtllXcBrqS3NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+ -FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4U99REJNi54Av4tHgvI42Rncz7Lj7 -jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8KV2LwUvJ4ooTHbG/ -u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl9x8D -YSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1 -puEa+S1BaYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXa -icYwu+uPyyIIoK6q8QNsOktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbG -DI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSYMdp08YSTcU1f+2BY0fvEwW2JorsgH51x -kcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAciIfNAChs0B0QTwoRqjt8Z -Wr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UE -BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWdu -IFNpbHZlciBDQSAtIEcyMB4XDTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0Nlow -RzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMY -U3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A -MIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644N0Mv -Fz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7br -YT7QbNHm+/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieF -nbAVlDLaYQ1HTWBCrpJH6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH -6ATK72oxh9TAtvmUcXtnZLi2kUpCe2UuMGoM9ZDulebyzYLs2aFK7PayS+VFheZt -eJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5hqAaEuSh6XzjZG6k4sIN/ -c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5FZGkECwJ -MoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRH -HTBsROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTf -jNFusB3hB48IHpmccelM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb6 -5i/4z3GcRm25xBWNOHkDRUjvxF3XCO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOB -rDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU -F6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRBtjpbO8tFnb0c -wpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 -cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIB -AHPGgeAn0i0P4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShp -WJHckRE1qTodvBqlYJ7YH39FkWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9 -xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L3XWgwF15kIwb4FDm3jH+mHtwX6WQ -2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx/uNncqCxv1yL5PqZ -IseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFaDGi8 -aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2X -em1ZqSqPe97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQR -dAtq/gsD/KNVV4n+SsuuWxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/ -OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJDIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+ -hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ubDgEj8Z+7fNzcbBGXJbLy -tGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDITCCAoqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFBlcnNvbmFsIEJhc2lj -IENBMSgwJgYJKoZIhvcNAQkBFhlwZXJzb25hbC1iYXNpY0B0aGF3dGUuY29tMB4X -DTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgcsxCzAJBgNVBAYTAlpBMRUw -EwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UE -ChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2Vy -dmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQZXJzb25hbCBCYXNpYyBD -QTEoMCYGCSqGSIb3DQEJARYZcGVyc29uYWwtYmFzaWNAdGhhd3RlLmNvbTCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLyTU23AUE+CFeZIlDWmWr5vQvoPR+53 -dXLdjUmbllegeNTKP1GzaQuRdhciB5dqxFGTS+CN7zeVoQxN2jSQHReJl+A1OFdK -wPQIcOk8RHtQfmGakOMj04gRRif1CwcOu93RfyAKiLlWCy4cgNrx454p7xS9CkT7 -G1sY0b8jkyECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQF -AAOBgQAt4plrsD16iddZopQBHyvdEktTwq1/qqcAXJFAVyVKOKqEcLnZgA+le1z7 -c8a914phXAPjLSeoF+CEhULcXpvGt7Jtu3Sv5D/Lp7ew4F2+eIMllNLbgQ95B21P -9DkVWlIBe94y1k049hJcBlDfBVu9FEuh3ym6O0GN92NWod8isQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVt -YWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUu -Y29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgdExCzAJBgNVBAYT -AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEa -MBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBG -cmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhh -d3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1GnX1LCUZFtx6UfY -DFG26nKRsIRefS0Nj3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6WZBrCFG5E -rHzmj+hND3EfQDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVq -uzgkCGqYx7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zAN -BgkqhkiG9w0BAQQFAAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjP -MPuoSpaKH2JCI4wXD/S6ZJwXrEcp352YXtJsYHFcoqzceePnbgBHH7UNKOgCneSa -/RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK/qarigd1iwzdUYRr5PjRznei -gQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDKTCCApKgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBzzELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEjMCEGA1UEAxMaVGhhd3RlIFBlcnNvbmFsIFByZW1p -dW0gQ0ExKjAoBgkqhkiG9w0BCQEWG3BlcnNvbmFsLXByZW1pdW1AdGhhd3RlLmNv -bTAeFw05NjAxMDEwMDAwMDBaFw0yMDEyMzEyMzU5NTlaMIHPMQswCQYDVQQGEwJa -QTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAY -BgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9u -IFNlcnZpY2VzIERpdmlzaW9uMSMwIQYDVQQDExpUaGF3dGUgUGVyc29uYWwgUHJl -bWl1bSBDQTEqMCgGCSqGSIb3DQEJARYbcGVyc29uYWwtcHJlbWl1bUB0aGF3dGUu -Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJZtn4B0TPuYwu8KHvE0Vs -Bd/eJxZRNkERbGw77f4QfRKe5ZtCmv5gMcNmt3M6SK5O0DI3lIi1DbbZ8/JE2dWI -Et12TfIa/G8jHnrx2JhFTgcQ7xZC0EN1bUre4qrJMf8fAHB8Zs8QJQi6+u4A6UYD -ZicRFTuqW/KY3TZCstqIdQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqG -SIb3DQEBBAUAA4GBAGk2ifc0KjNyL2071CKyuG+axTZmDhs8obF1Wub9NdP4qPIH -b4Vnjt4rueIXsDqg8A6iAJrf8xQVbrvIhVqYgPn/vnQdPfP+MCXRNzRn+qVxeTBh -KXLA4CxM+1bkOqhv5TJZUtt1KFBZDPgLGeSs2a+WjS9Q2wfD6h+rM+D1KzGJ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy -dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t -MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB -MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG -A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl -cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv -bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE -VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ -ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR -uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG -9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI -hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM -pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm -MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx -MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT -DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 -dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl -cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 -DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD -gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 -yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX -L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj -EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG -7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e -QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ -qdq5snUb9kLy78fyGPmJvKP/iiMucEc= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV -BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 -Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYwMTEyMTQzODQzWhcNMjUxMjMxMjI1 -OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i -SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UEAxMc -VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jf -tMjWQ+nEdVl//OEd+DFwIxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKg -uNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2J -XjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQXa7pIXSSTYtZgo+U4+lK -8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7uSNQZu+99 -5OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1Ud -EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3 -kUrL84J6E1wIqzCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy -dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6 -Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz -JTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 -Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u -TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iS -GNn3Bzn1LL4GdXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprt -ZjluS5TmVfwLG4t3wVMTZonZKNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8 -au0WOB9/WIFaGusyiC2y8zl3gK9etmF1KdsjTYjKUCjLhdLTEKJZbtOTVAB6okaV -hgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kPJOzHdiEoZa5X6AeI -dUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfkvQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDtjCCAp6gAwIBAgIOBcAAAQACQdAGCk3OdRAwDQYJKoZIhvcNAQEFBQAwdjEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV -BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDQgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 -Q2VudGVyIENsYXNzIDQgQ0EgSUkwHhcNMDYwMzIzMTQxMDIzWhcNMjUxMjMxMjI1 -OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i -SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgNCBDQTElMCMGA1UEAxMc -VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgNCBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBALXNTJytrlG7fEjFDSmGehSt2VA9CXIgDRS2Y8b+WJ7gIV7z -jyIZ3E6RIM1viCmis8GsKnK6i1S4QF/yqvhDhsIwXMynXX/GCEnkDjkvjhjWkd0j -FnmA22xIHbzB3ygQY9GB493fL3l1oht48pQB5hBiecugfQLANIJ7x8CtHUzXapZ2 -W78mhEj9h/aECqqSB5lIPGG8ToVYx5ct/YFKocabEvVCUNFkPologiJw3fX64yhC -L04y87OjNopq1mJcrPoBbbTgci6VaLTxkwzGioLSHVPqfOA/QrcSWrjN2qUGZ8uh -d32llvCSHmcOHUJG5vnt+0dTf1cERh9GX8eu4I8CAwEAAaNCMEAwDwYDVR0TAQH/ -BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFB/quz4lGwa9pd1iBX7G -TFq/6A9DMA0GCSqGSIb3DQEBBQUAA4IBAQBYpCubTPfkpJKknGWYGWIi/HIy6QRd -xMRwLVpG3kxHiiW5ot3u6hKvSI3vK2fbO8w0mCr3CEf/Iq978fTr4jgCMxh1KBue -dmWsiANy8jhHHYz1nwqIUxAUu4DlDLNdjRfuHhkcho0UZ3iMksseIUn3f9MYv5x5 -+F0IebWqak2SNmy8eesOPXmK2PajVnBd3ttPedJ60pVchidlvqDTB4FAVd0Qy+BL -iILAkH0457+W4Ze6mqtCD9Of2J4VMxHL94J59bXAQVaS4d9VA61Iz9PyLrHHLVZM -ZHQqMc7cdalUR6SnQnIJ5+ECpkeyBM1CE+FhDOB4OiIgohxgQoaH96Xm ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV -BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1 -c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcNMDYwMzIyMTU1NDI4WhcNMjUxMjMx -MjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIg -R21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYwJAYD -VQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSR -JJZ4Hgmgm5qVSkr1YnwCqMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3T -fCZdzHd55yx4Oagmcw6iXSVphU9VDprvxrlE4Vc93x9UIuVvZaozhDrzznq+VZeu -jRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtwag+1m7Z3W0hZneTvWq3z -wZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9OgdwZu5GQ -fezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYD -VR0jBBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0G -CSqGSIb3DQEBBQUAA4IBAQAo0uCG1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X1 -7caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/CyvwbZ71q+s2IhtNerNXxTPqYn -8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3ghUJGooWMNjs -ydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT -ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/ -2TYcuiUaUj0a7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd -AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC -FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi -1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq -jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ -wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ -WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy -NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC -uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw -IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 -g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN -9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP -BSeOE6Fuwg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN -8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ -RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 -hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 -ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM -EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 -A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy -WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ -1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 -6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT -91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml -e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p -TpPDpFQUWw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB -kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw -IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG -EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD -VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu -dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN -BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6 -E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ -D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK -4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq -lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW -bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB -o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT -MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js -LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr -BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB -AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft -Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj -j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH -KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv -2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3 -mfnGV/TJVTl4uix5yaaIK/QI ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCB -rjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0BgNVBAMTLVVUTi1VU0VSRmlyc3Qt -Q2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05OTA3MDkxNzI4NTBa -Fw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAV -BgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5l -dHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UE -AxMtVVROLVVTRVJGaXJzdC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWls -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3B -YHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIxB8dOtINknS4p1aJkxIW9 -hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8om+rWV6l -L8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLm -SGHGTPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM -1tZUOt4KpLoDd7NlyP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws -6wIDAQABo4G5MIG2MAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud -DgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNVHR8EUTBPME2gS6BJhkdodHRw -Oi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGllbnRBdXRoZW50 -aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH -AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u -7mFVbwQ+zznexRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0 -xtcgBEXkzYABurorbs6q15L+5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQ -rfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarVNZ1yQAOJujEdxRBoUp7fooXFXAim -eOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZw7JHpsIyYdfHb0gk -USeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB -lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt -SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG -A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe -MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v -d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh -cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn -0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ -M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a -MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd -oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI -DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy -oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 -dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy -bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF -BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM -//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli -CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE -CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t -3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS -KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCB -lTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAbBgNVBAMTFFVUTi1VU0VSRmlyc3Qt -T2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAzNlowgZUxCzAJBgNV -BAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxHjAc -BgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3 -dy51c2VydHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCC -ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicP -HxzfOpuCaDDASmEd8S8O+r5596Uj71VRloTN2+O5bj4x2AogZ8f02b+U60cEPgLO -KqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQw5ujm9M89RKZd7G3CeBo -5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vulBe3/IW+ -pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehb -kkj7RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUC -AwEAAaOBrzCBrDALBgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E -FgQU2u1kdBScFDyr3ZmpvVsoTYs8ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDov -L2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmlyc3QtT2JqZWN0LmNybDApBgNV -HSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQwDQYJKoZIhvcN -AQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw -NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXB -mMiKVl0+7kNOPmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU -4U3GDZlDAQ0Slox4nb9QorFEqmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK5 -81OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCGhU3IfdeLA/5u1fedFqySLKAj5ZyR -Uh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy -NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY -dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 -WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS -v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v -UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu -IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC -W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICPTCCAaYCEQDNun9W8N/kvFT+IqyzcqpVMA0GCSqGSIb3DQEBAgUAMF8xCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xh -c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05 -NjAxMjkwMDAwMDBaFw0yODA4MDEyMzU5NTlaMF8xCzAJBgNVBAYTAlVTMRcwFQYD -VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJp -bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOB -jQAwgYkCgYEA5Rm/baNWYS2ZSHH2Z965jeu3noaACpEO+jglr0aIguVzqKCbJF0N -H8xlbgyw0FaEGIeaBpsQoXPftFg5a27B9hXVqKg/qhIGjTGsf7A01480Z4gJzRQR -4k5FVmkfeAKA2txHkSm7NsljXMXg1y2He6G3MrB7MLoqLzGq7qNn2tsCAwEAATAN -BgkqhkiG9w0BAQIFAAOBgQBMP7iLxmjf7kMzDl3ppssHhE16M/+SG/Q2rdiVIjZo -EWx8QszznC7EBz8UsA9P/5CSdvnivErpj82ggAr3xSnxgiJduLHdgSOjeyUVRjB5 -FvjqBUuUfx3CHMjjt/QQQDwTw18fU+hI5Ia0e6E1sHslurjTjqs/OJ0ANACY89Fx -lA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgdk4xWArzZbxpvUjZudVYK -VdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIqWpDBucSm -Fc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0J -h9ZrbWB85a7FkCMMXErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2ul -uIncrKTdcu1OofdPvAbT6shkdHvClUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68 -DzFc6PLZ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN2E1Lm0+afY8wR4 -nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/EbRrsC+MO -8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjV -ojYJrKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjb -PG7PoBMAGrgnoeS+Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP2 -6KbqxzcSXKMpHgLZ2x87tNcPVkeBFQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vr -n5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAq2aN17O6x5q25lXQBfGfMY1a -qtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/Ny9Sn2WCVhDr4 -wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3 -ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrs -pSCAaWihT37ha88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4 -E1Z5T21Q6huwtVexN2ZYI/PcD98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEC0b/EoXjaOR6+f/9YtFvgswDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAyIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQC2WoujDWojg4BrzzmH9CETMwZMJaLtVRKXxaeAufqDwSCg+i8VDXyh -YGt+eSz6Bg86rvYbb7HS/y8oUl+DfUvEerf4Zh+AVPy3wo5ZShRXRtGak75BkQO7 -FYCTXOvnzAhsPz6zSvz/S2wj1VCCJkQZjiPDceoZJEcEnnW/yKYAHwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBAIobK/o5wXTXXtgZZKJYSi034DNHD6zt96rbHuSLBlxg -J8pFUs4W7z8GZOeUaHxgMxURaa+dYo2jA1Rrpr7l7gUYYAS/QoD90KioHgE796Nc -r6Pc5iaAIzy4RHT3Cq5Ji2F4zCS/iIqnDupzGUH9TQPwiNHleI2lKk/2lw0Xd8rY ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0Ns -YXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH -MjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y -aXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAe -Fw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJVUzEX -MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGlj -IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMx -KGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s -eTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjM -HiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjw -DqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cC -AwEAATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9ji -nb3/7aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX -rXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnIn -jBJ7xUS0rg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVy -aVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24s -IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNp -Z24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJBgNV -BAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNp -Z24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIElu -Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24g -Q2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt -IEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArwoNwtUs22e5LeWU -J92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6tW8UvxDO -JxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUY -wZF7C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9o -koqQHgiBVrKtaaNS0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjN -qWm6o+sdDZykIKbBoMXRRkwXbdKsZj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/E -Srg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0JhU8wI1NQ0kdvekhktdmnLfe -xbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf0xwLRtxyID+u -7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU -sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RI -sH/7NiXaldDxJBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTP -cjnhsUPgKM+351psE2tJs//jGHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do -lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc -AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 -pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 -13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk -U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i -F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY -oJ2daZH9 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b -N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t -KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu -kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm -CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ -Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu -imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te -2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe -DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC -/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p -F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt -TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD -VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0 -MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVowXzELMAkGA1UEBhMCVVMxIDAeBgNV -BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2Vy -dmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUAA4GJ -ADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII -0haGN1XpsSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphI -uR2nKRoTLkoRWZweFdVJVCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZI -hvcNAQECBQADfgBl3X7hsuyw4jrg7HFGmhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3 -YQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2qUtN8iD3zV9/ZHuO3ABc -1/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICoTCCAgqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBizELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzAN -BgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAd -BgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwHhcNOTcwMTAxMDAwMDAwWhcN -MjAxMjMxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4g -Q2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsG -A1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1l -c3RhbXBpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANYrWHhhRYZT -6jR7UZztsOYuGA7+4F+oJ9O0yeB8WU4WDnNUYMF/9p8u6TqFJBU820cEY8OexJQa -Wt9MevPZQx08EHp5JduQ/vBR5zDWQQD9nyjfeb6Uu522FOMjhdepQeBMpHmwKxqL -8vg7ij5FrHGSALSQQZj7X+36ty6K+Ig3AgMBAAGjEzARMA8GA1UdEwEB/wQFMAMB -Af8wDQYJKoZIhvcNAQEEBQADgYEAZ9viwuaHPUCDhjc1fR/OmsMMZiCouqoEiYbC -9RAIDb/LogWK0E02PvTX72nGXuSwlG9KuefeW4i2e9vjJ+V2w/A1wcu1J5szedyQ -pgCed/r8zSeUQhac0xxo7L9c3eWpexAKMnRUEzGLhQOEkbdYATAUOK8oyvyxUBkZ -CayJSdM= ------END CERTIFICATE----- - -------16967DC47640EB3C0A89A6FE94592C26 -Content-Type: application/x-pkcs7-signature; name="smime.p7s" -Content-Transfer-Encoding: base64 -Content-Disposition: attachment; filename="smime.p7s" - -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 -YpE4U6BVZ0o= - -------16967DC47640EB3C0A89A6FE94592C26-- - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/connection.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/connection.rb deleted file mode 100644 index dc4052a8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/connection.rb +++ /dev/null @@ -1,84 +0,0 @@ -# HTTPClient - HTTP client library. -# Copyright (C) 2000-2009 NAKAMURA, Hiroshi . -# -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -class HTTPClient - - - # Represents a HTTP response to an asynchronous request. Async methods of - # HTTPClient such as get_async, post_async, etc. returns an instance of - # Connection. - # - # == How to use - # - # 1. Invoke HTTP method asynchronously and check if it's been finished - # periodically. - # - # connection = clnt.post_async(url, body) - # print 'posting.' - # while true - # break if connection.finished? - # print '.' - # sleep 1 - # end - # puts '.' - # res = connection.pop - # p res.status - # - # 2. Read the response as an IO. - # - # connection = clnt.get_async('http://dev.ctor.org/') - # io = connection.pop.content - # while str = io.read(40) - # p str - # end - class Connection - attr_accessor :async_thread - - def initialize(header_queue = [], body_queue = []) # :nodoc: - @headers = header_queue - @body = body_queue - @async_thread = nil - @queue = Queue.new - end - - # Checks if the asynchronous invocation has been finished or not. - def finished? - if !@async_thread - # Not in async mode. - true - elsif @async_thread.alive? - # Working... - false - else - # Async thread have been finished. - join - true - end - end - - # Retrieves a HTTP::Message instance of HTTP response. Do not invoke this - # method twice for now. The second invocation will be blocked. - def pop - @queue.pop - end - - def push(result) # :nodoc: - @queue.push(result) - end - - # Waits the completion of the asynchronous invocation. - def join - if @async_thread - @async_thread.join - end - nil - end - end - - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/cookie.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/cookie.rb deleted file mode 100644 index 4ba1279c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/cookie.rb +++ /dev/null @@ -1,562 +0,0 @@ -# cookie.rb is redistributed file which is originally included in Webagent -# version 0.6.2 by TAKAHASHI `Maki' Masayoshi. And it contains some bug fixes. -# You can download the entire package of Webagent from -# http://www.rubycolor.org/arc/. - - -# Cookie class -# -# I refered to w3m's source to make these classes. Some comments -# are quoted from it. I'm thanksful for author(s) of it. -# -# w3m homepage: http://ei5nazha.yz.yamagata-u.ac.jp/~aito/w3m/eng/ - -require 'uri' -require 'time' -require 'monitor' - -class WebAgent - - module CookieUtils - - def head_match?(str1, str2) - str1 == str2[0, str1.length] - end - - def tail_match?(str1, str2) - if str1.length > 0 - str1 == str2[-str1.length..-1].to_s - else - true - end - end - - def domain_match(host, domain) - domainname = domain.sub(/\.\z/, '').downcase - hostname = host.sub(/\.\z/, '').downcase - case domain - when /\d+\.\d+\.\d+\.\d+/ - return (hostname == domainname) - when '.' - return true - when /^\./ - # allows; host == rubyforge.org, domain == .rubyforge.org - return tail_match?(domainname, '.' + hostname) - else - return (hostname == domainname) - end - end - - def total_dot_num(string) - string.scan(/\./).length() - end - - end - - class Cookie - include CookieUtils - - attr_accessor :name, :value - attr_accessor :domain, :path - attr_accessor :expires ## for Netscape Cookie - attr_accessor :url - attr_writer :use, :secure, :discard, :domain_orig, :path_orig, :override - - USE = 1 - SECURE = 2 - DOMAIN = 4 - PATH = 8 - DISCARD = 16 - OVERRIDE = 32 - OVERRIDE_OK = 32 - - def initialize() - @name = @value = @domain = @path = nil - @expires = nil - @url = nil - @use = @secure = @discard = @domain_orig = @path_orig = @override = nil - end - - def discard? - @discard - end - - def use? - @use - end - - def secure? - @secure - end - - def domain_orig? - @domain_orig - end - - def path_orig? - @path_orig - end - - def override? - @override - end - - def flag - flg = 0 - flg += USE if @use - flg += SECURE if @secure - flg += DOMAIN if @domain_orig - flg += PATH if @path_orig - flg += DISCARD if @discard - flg += OVERRIDE if @override - flg - end - - def set_flag(flag) - flag = flag.to_i - @use = true if flag & USE > 0 - @secure = true if flag & SECURE > 0 - @domain_orig = true if flag & DOMAIN > 0 - @path_orig = true if flag & PATH > 0 - @discard = true if flag & DISCARD > 0 - @override = true if flag & OVERRIDE > 0 - end - - def match?(url) - domainname = url.host - if (!domainname || - !domain_match(domainname, @domain) || - (@path && !head_match?(@path, url.path)) || - (@secure && (url.scheme != 'https')) ) - return false - else - return true - end - end - - def join_quotedstr(array, sep) - ret = Array.new() - old_elem = nil - array.each{|elem| - if (elem.scan(/"/).length % 2) == 0 - if old_elem - old_elem << sep << elem - else - ret << elem - old_elem = nil - end - else - if old_elem - old_elem << sep << elem - ret << old_elem - old_elem = nil - else - old_elem = elem.dup - end - end - } - ret - end - - def parse(str, url) - @url = url - # TODO: should not depend on join_quotedstr. scan with escape like CSV. - cookie_elem = str.split(/;/) - cookie_elem = join_quotedstr(cookie_elem, ';') - cookie_elem -= [""] # del empty elements, a cookie might included ";;" - first_elem = cookie_elem.shift - if first_elem !~ /([^=]*)(\=(.*))?/ - return - ## raise ArgumentError 'invalid cookie value' - end - @name = $1.strip - @value = normalize_cookie_value($3) - cookie_elem.each{|pair| - key, value = pair.split(/=/, 2) ## value may nil - key.strip! - value = normalize_cookie_value(value) - case key.downcase - when 'domain' - @domain = value - when 'expires' - @expires = nil - begin - @expires = Time.parse(value).gmtime() if value - rescue ArgumentError - end - when 'path' - @path = value - when 'secure' - @secure = true ## value may nil, but must 'true'. - else - ## ignore - end - } - end - - def normalize_cookie_value(value) - if value - value = value.strip.sub(/\A"(.*)"\z/) { $1 } - value = nil if value.empty? - end - value - end - private :normalize_cookie_value - end - - class CookieManager - include CookieUtils - - ### errors - class Error < StandardError; end - class ErrorOverrideOK < Error; end - class SpecialError < Error; end - - attr_reader :cookies - attr_accessor :cookies_file - attr_accessor :accept_domains, :reject_domains - - # for conformance to http://wp.netscape.com/newsref/std/cookie_spec.html - attr_accessor :netscape_rule - SPECIAL_DOMAIN = [".com",".edu",".gov",".mil",".net",".org",".int"] - - def initialize(file=nil) - @cookies = Array.new() - @cookies.extend(MonitorMixin) - @cookies_file = file - @is_saved = true - @reject_domains = Array.new() - @accept_domains = Array.new() - @netscape_rule = false - end - - def cookies=(cookies) - @cookies = cookies - @cookies.extend(MonitorMixin) - end - - def save_all_cookies(force = nil, save_unused = true, save_discarded = true) - @cookies.synchronize do - check_expired_cookies() - if @is_saved and !force - return - end - File.open(@cookies_file, 'w') do |f| - @cookies.each do |cookie| - if (cookie.use? or save_unused) and - (!cookie.discard? or save_discarded) - f.print(cookie.url.to_s,"\t", - cookie.name,"\t", - cookie.value,"\t", - cookie.expires.to_i,"\t", - cookie.domain,"\t", - cookie.path,"\t", - cookie.flag,"\n") - end - end - end - end - @is_saved = true - end - - def save_cookies(force = nil) - save_all_cookies(force, false, false) - end - - def check_expired_cookies() - @cookies.reject!{|cookie| - is_expired = (cookie.expires && (cookie.expires < Time.now.gmtime)) - if is_expired && !cookie.discard? - @is_saved = false - end - is_expired - } - end - - def parse(str, url) - cookie = WebAgent::Cookie.new() - cookie.parse(str, url) - add(cookie) - end - - def make_cookie_str(cookie_list) - if cookie_list.empty? - return nil - end - - ret = '' - c = cookie_list.shift - ret += "#{c.name}=#{c.value}" - cookie_list.each{|cookie| - ret += "; #{cookie.name}=#{cookie.value}" - } - return ret - end - private :make_cookie_str - - - def find(url) - return nil if @cookies.empty? - - cookie_list = Array.new() - @cookies.each{|cookie| - is_expired = (cookie.expires && (cookie.expires < Time.now.gmtime)) - if cookie.use? && !is_expired && cookie.match?(url) - if cookie_list.select{|c1| c1.name == cookie.name}.empty? - cookie_list << cookie - end - end - } - return make_cookie_str(cookie_list) - end - - def find_cookie_info(domain, path, name) - @cookies.find{|c| - c.domain == domain && c.path == path && c.name == name - } - end - private :find_cookie_info - - # not tested well; used only netscape_rule = true. - def cookie_error(err, override) - if !err.kind_of?(ErrorOverrideOK) || !override - raise err - end - end - private :cookie_error - - def add(cookie) - url = cookie.url - name, value = cookie.name, cookie.value - expires, domain, path = - cookie.expires, cookie.domain, cookie.path - secure, domain_orig, path_orig = - cookie.secure?, cookie.domain_orig?, cookie.path_orig? - discard, override = - cookie.discard?, cookie.override? - - domainname = url.host - domain_orig, path_orig = domain, path - use_security = override - - if domain - - # [DRAFT 12] s. 4.2.2 (does not apply in the case that - # host name is the same as domain attribute for version 0 - # cookie) - # I think that this rule has almost the same effect as the - # tail match of [NETSCAPE]. - if domain !~ /^\./ && domainname != domain - domain = '.'+domain - end - - # [NETSCAPE] rule - if @netscape_rule - n = total_dot_num(domain) - if n < 2 - cookie_error(SpecialError.new(), override) - elsif n == 2 - ## [NETSCAPE] rule - ok = SPECIAL_DOMAIN.select{|sdomain| - sdomain == domain[-(sdomain.length)..-1] - } - if ok.empty? - cookie_error(SpecialError.new(), override) - end - end - end - - # this implementation does not check RFC2109 4.3.2 case 2; - # the portion of host not in domain does not contain a dot. - # according to nsCookieService.cpp in Firefox 3.0.4, Firefox 3.0.4 - # and IE does not check, too. - end - - path ||= url.path.sub(%r|/[^/]*|, '') - domain ||= domainname - @cookies.synchronize do - cookie = find_cookie_info(domain, path, name) - if !cookie - cookie = WebAgent::Cookie.new() - cookie.use = true - @cookies << cookie - end - check_expired_cookies() - end - - cookie.url = url - cookie.name = name - cookie.value = value - cookie.expires = expires - cookie.domain = domain - cookie.path = path - - ## for flag - cookie.secure = secure - cookie.domain_orig = domain_orig - cookie.path_orig = path_orig - if discard || cookie.expires == nil - cookie.discard = true - else - cookie.discard = false - @is_saved = false - end - end - - def load_cookies() - return if !File.readable?(@cookies_file) - @cookies.synchronize do - @cookies.clear - File.open(@cookies_file,'r'){|f| - while line = f.gets - cookie = WebAgent::Cookie.new() - @cookies << cookie - col = line.chomp.split(/\t/) - cookie.url = URI.parse(col[0]) - cookie.name = col[1] - cookie.value = col[2] - if col[3].empty? or col[3] == '0' - cookie.expires = nil - else - cookie.expires = Time.at(col[3].to_i).gmtime - end - cookie.domain = col[4] - cookie.path = col[5] - cookie.set_flag(col[6]) - end - } - end - end - - def check_cookie_accept_domain(domain) - unless domain - return false - end - @accept_domains.each{|dom| - if domain_match(domain, dom) - return true - end - } - @reject_domains.each{|dom| - if domain_match(domain, dom) - return false - end - } - return true - end - end -end - -__END__ - -=begin - -== WebAgent::CookieManager Class - -Load, save, parse and send cookies. - -=== Usage - - ## initialize - cm = WebAgent::CookieManager.new("/home/foo/bar/cookie") - - ## load cookie data - cm.load_cookies() - - ## parse cookie from string (maybe "Set-Cookie:" header) - cm.parse(str) - - ## send cookie data to url - f.write(cm.find(url)) - - ## save cookie to cookiefile - cm.save_cookies() - - -=== Class Methods - - -- CookieManager::new(file=nil) - - create new CookieManager. If a file is provided, - use it as cookies' file. - -=== Methods - - -- CookieManager#save_cookies(force = nil) - - save cookies' data into file. if argument is true, - save data although data is not modified. - - -- CookieManager#parse(str, url) - - parse string and store cookie (to parse HTTP response header). - - -- CookieManager#find(url) - - get cookies and make into string (to send as HTTP request header). - - -- CookieManager#add(cookie) - - add new cookie. - - -- CookieManager#load_cookies() - - load cookies' data from file. - - -== WebAgent::CookieUtils Module - - -- CookieUtils::head_match?(str1, str2) - -- CookieUtils::tail_match?(str1, str2) - -- CookieUtils::domain_match(host, domain) - -- CookieUtils::total_dot_num(str) - - -== WebAgent::Cookie Class - -=== Class Methods - - -- Cookie::new() - - create new cookie. - -=== Methods - - -- Cookie#match?(url) - - match cookie by url. if match, return true. otherwise, - return false. - - -- Cookie#name - -- Cookie#name=(name) - -- Cookie#value - -- Cookie#value=(value) - -- Cookie#domain - -- Cookie#domain=(domain) - -- Cookie#path - -- Cookie#path=(path) - -- Cookie#expires - -- Cookie#expires=(expires) - -- Cookie#url - -- Cookie#url=(url) - - accessor methods for cookie's items. - - -- Cookie#discard? - -- Cookie#discard=(discard) - -- Cookie#use? - -- Cookie#use=(use) - -- Cookie#secure? - -- Cookie#secure=(secure) - -- Cookie#domain_orig? - -- Cookie#domain_orig=(domain_orig) - -- Cookie#path_orig? - -- Cookie#path_orig=(path_orig) - -- Cookie#override? - -- Cookie#override=(override) - -- Cookie#flag - -- Cookie#set_flag(flag_num) - - accessor methods for flags. - -=end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/http.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/http.rb deleted file mode 100644 index 4b0d91cc..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/http.rb +++ /dev/null @@ -1,867 +0,0 @@ -# HTTPClient - HTTP client library. -# Copyright (C) 2000-2009 NAKAMURA, Hiroshi . -# -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -require 'time' - - -# A namespace module for HTTP Message definitions used by HTTPClient. -module HTTP - - - # Represents HTTP response status code. Defines constants for HTTP response - # and some conditional methods. - module Status - OK = 200 - CREATED = 201 - ACCEPTED = 202 - NON_AUTHORITATIVE_INFORMATION = 203 - NO_CONTENT = 204 - RESET_CONTENT = 205 - PARTIAL_CONTENT = 206 - MOVED_PERMANENTLY = 301 - FOUND = 302 - SEE_OTHER = 303 - TEMPORARY_REDIRECT = MOVED_TEMPORARILY = 307 - BAD_REQUEST = 400 - UNAUTHORIZED = 401 - PROXY_AUTHENTICATE_REQUIRED = 407 - INTERNAL = 500 - - # Status codes for successful HTTP response. - SUCCESSFUL_STATUS = [ - OK, CREATED, ACCEPTED, - NON_AUTHORITATIVE_INFORMATION, NO_CONTENT, - RESET_CONTENT, PARTIAL_CONTENT - ] - - # Status codes which is a redirect. - REDIRECT_STATUS = [ - MOVED_PERMANENTLY, FOUND, SEE_OTHER, - TEMPORARY_REDIRECT, MOVED_TEMPORARILY - ] - - # Returns true if the given status represents successful HTTP response. - # See also SUCCESSFUL_STATUS. - def self.successful?(status) - SUCCESSFUL_STATUS.include?(status) - end - - # Returns true if the given status is thought to be redirect. - # See also REDIRECT_STATUS. - def self.redirect?(status) - REDIRECT_STATUS.include?(status) - end - end - - - # Represents a HTTP message. A message is for a request or a response. - # - # Request message is generated from given parameters internally so users - # don't need to care about it. Response message is the instance that - # methods of HTTPClient returns so users need to know how to extract - # HTTP response data from Message. - # - # Some attributes are only for a request or a response, not both. - # - # == How to use HTTP response message - # - # 1. Gets response message body. - # - # res = clnt.get(url) - # p res.content #=> String - # - # 2. Gets response status code. - # - # res = clnt.get(url) - # p res.status #=> 200, 501, etc. (Integer) - # - # 3. Gets response header. - # - # res = clnt.get(url) - # res.header['set-cookie'].each do |value| - # p value - # end - # assert_equal(1, res.header['last-modified'].size) - # p res.header['last-modified'].first - # - class Message - - CRLF = "\r\n" - - # Represents HTTP message header. - class Headers - # HTTP version in a HTTP header. Float. - attr_accessor :http_version - # Size of body. nil when size is unknown (e.g. chunked response). - attr_reader :body_size - # Request/Response is chunked or not. - attr_accessor :chunked - - # Request only. Requested method. - attr_reader :request_method - # Request only. Requested URI. - attr_accessor :request_uri - # Request only. Requested query. - attr_accessor :request_query - # Request only. Requested via proxy or not. - attr_accessor :request_via_proxy - - # Response only. HTTP status - attr_reader :status_code - # Response only. HTTP status reason phrase. - attr_accessor :reason_phrase - - # Used for dumping response. - attr_accessor :body_type # :nodoc: - # Used for dumping response. - attr_accessor :body_charset # :nodoc: - # Used for dumping response. - attr_accessor :body_date # :nodoc: - - # HTTP response status code to reason phrase mapping definition. - STATUS_CODE_MAP = { - Status::OK => 'OK', - Status::CREATED => "Created", - Status::NON_AUTHORITATIVE_INFORMATION => "Non-Authoritative Information", - Status::NO_CONTENT => "No Content", - Status::RESET_CONTENT => "Reset Content", - Status::PARTIAL_CONTENT => "Partial Content", - Status::MOVED_PERMANENTLY => 'Moved Permanently', - Status::FOUND => 'Found', - Status::SEE_OTHER => 'See Other', - Status::TEMPORARY_REDIRECT => 'Temporary Redirect', - Status::MOVED_TEMPORARILY => 'Temporary Redirect', - Status::BAD_REQUEST => 'Bad Request', - Status::INTERNAL => 'Internal Server Error', - } - - # $KCODE to charset mapping definition. - CHARSET_MAP = { - 'NONE' => 'us-ascii', - 'EUC' => 'euc-jp', - 'SJIS' => 'shift_jis', - 'UTF8' => 'utf-8', - } - - # Creates a Message::Headers. Use init_request, init_response, or - # init_connect_request for acutual initialize. - def initialize - @http_version = 1.1 - @body_size = nil - @chunked = false - - @request_method = nil - @request_uri = nil - @request_query = nil - @request_via_proxy = nil - - @status_code = nil - @reason_phrase = nil - - @body_type = nil - @body_charset = nil - @body_date = nil - - @is_request = nil - @header_item = [] - @dumped = false - end - - # Initialize this instance as a CONNECT request. - def init_connect_request(uri) - @is_request = true - @request_method = 'CONNECT' - @request_uri = uri - @request_query = nil - @http_version = 1.0 - end - - # Placeholder URI object for nil uri. - NIL_URI = URI.parse('http://nil-uri-given/') - # Initialize this instance as a general request. - def init_request(method, uri, query = nil) - @is_request = true - @request_method = method - @request_uri = uri || NIL_URI - @request_query = query - @request_via_proxy = false - end - - # Initialize this instance as a response. - def init_response(status_code) - @is_request = false - self.status_code = status_code - end - - # Sets status code and reason phrase. - def status_code=(status_code) - @status_code = status_code - @reason_phrase = STATUS_CODE_MAP[@status_code] - end - - # Returns 'Content-Type' header value. - def contenttype - self['Content-Type'][0] - end - - # Sets 'Content-Type' header value. Overrides if already exists. - def contenttype=(contenttype) - delete('Content-Type') - self['Content-Type'] = contenttype - end - - # Sets byte size of message body. - # body_size == nil means that the body is_a? IO - def body_size=(body_size) - @body_size = body_size - end - - # Dumps message header part and returns a dumped String. - def dump - set_header - str = nil - if @is_request - str = request_line - else - str = response_status_line - end - str + @header_item.collect { |key, value| - "#{ key }: #{ value }#{ CRLF }" - }.join - end - - # Adds a header. Addition order is preserved. - def add(key, value) - if value.is_a?(Array) - value.each do |v| - @header_item.push([key, v]) - end - else - @header_item.push([key, value]) - end - end - - # Sets a header. - def set(key, value) - delete(key) - add(key, value) - end - - # Returns an Array of headers for the given key. Each element is a pair - # of key and value. It returns an single element Array even if the only - # one header exists. If nil key given, it returns all headers. - def get(key = nil) - if key.nil? - all - else - key = key.upcase - @header_item.find_all { |k, v| k.upcase == key } - end - end - - # Returns an Array of all headers. - def all - @header_item - end - - # Deletes headers of the given key. - def delete(key) - key = key.upcase - @header_item.delete_if { |k, v| k.upcase == key } - end - - # Adds a header. See set. - def []=(key, value) - set(key, value) - end - - # Returns an Array of header values for the given key. - def [](key) - get(key).collect { |item| item[1] } - end - - private - - def request_line - path = create_query_uri(@request_uri, @request_query) - if @request_via_proxy - path = "#{ @request_uri.scheme }://#{ @request_uri.host }:#{ @request_uri.port }#{ path }" - end - "#{ @request_method } #{ path } HTTP/#{ @http_version }#{ CRLF }" - end - - def response_status_line - if defined?(Apache) - "HTTP/#{ @http_version } #{ @status_code } #{ @reason_phrase }#{ CRLF }" - else - "Status: #{ @status_code } #{ @reason_phrase }#{ CRLF }" - end - end - - def set_header - if @is_request - set_request_header - else - set_response_header - end - end - - def set_request_header - return if @dumped - @dumped = true - keep_alive = Message.keep_alive_enabled?(@http_version) - if !keep_alive and @request_method != 'CONNECT' - set('Connection', 'close') - end - if @chunked - set('Transfer-Encoding', 'chunked') - elsif @body_size and (keep_alive or @body_size != 0) - set('Content-Length', @body_size.to_s) - end - if @http_version >= 1.1 - if @request_uri.port == @request_uri.default_port - # GFE/1.3 dislikes default port number (returns 404) - set('Host', "#{@request_uri.host}") - else - set('Host', "#{@request_uri.host}:#{@request_uri.port}") - end - end - end - - def set_response_header - return if @dumped - @dumped = true - if defined?(Apache) && self['Date'].empty? - set('Date', Time.now.httpdate) - end - keep_alive = Message.keep_alive_enabled?(@http_version) - if @chunked - set('Transfer-Encoding', 'chunked') - else - if keep_alive or @body_size != 0 - set('Content-Length', @body_size.to_s) - end - end - if @body_date - set('Last-Modified', @body_date.httpdate) - end - if self['Content-Type'].empty? - set('Content-Type', "#{ @body_type || 'text/html' }; charset=#{ charset_label(@body_charset || $KCODE) }") - end - end - - def charset_label(charset) - CHARSET_MAP[charset] || 'us-ascii' - end - - def create_query_uri(uri, query) - if @request_method == 'CONNECT' - return "#{uri.host}:#{uri.port}" - end - path = uri.path - path = '/' if path.nil? or path.empty? - query_str = nil - if uri.query - query_str = uri.query - end - if query - if query_str - query_str += "&#{Message.create_query_part_str(query)}" - else - query_str = Message.create_query_part_str(query) - end - end - if query_str - path += "?#{query_str}" - end - path - end - end - - - # Represents HTTP message body. - class Body - # Size of body. nil when size is unknown (e.g. chunked response). - attr_reader :size - # maxbytes of IO#read for streaming request. See DEFAULT_CHUNK_SIZE. - attr_accessor :chunk_size - - # Default value for chunk_size - DEFAULT_CHUNK_SIZE = 1024 * 16 - - # Creates a Message::Body. Use init_request or init_response - # for acutual initialize. - def initialize - @body = nil - @size = nil - @positions = nil - @chunk_size = nil - end - - # Initialize this instance as a request. - def init_request(body = nil, boundary = nil) - @boundary = boundary - @positions = {} - set_content(body, boundary) - @chunk_size = DEFAULT_CHUNK_SIZE - end - - # Initialize this instance as a response. - def init_response(body = nil) - @body = body - if @body.respond_to?(:size) - @size = @body.size - else - @size = nil - end - end - - # Dumps message body to given dev. - # dev needs to respond to <<. - # - # Message header must be given as the first argument for performance - # reason. (header is dumped to dev, too) - # If no dev (the second argument) given, this method returns a dumped - # String. - def dump(header = '', dev = '') - if @body.is_a?(Parts) - dev << header - buf = '' - @body.parts.each do |part| - if Message.file?(part) - reset_pos(part) - while !part.read(@chunk_size, buf).nil? - dev << buf - end - else - dev << part - end - end - elsif @body - dev << header + @body - else - dev << header - end - dev - end - - # Dumps message body with chunked encoding to given dev. - # dev needs to respond to <<. - # - # Message header must be given as the first argument for performance - # reason. (header is dumped to dev, too) - # If no dev (the second argument) given, this method returns a dumped - # String. - def dump_chunked(header = '', dev = '') - dev << header - if @body.is_a?(Parts) - @body.parts.each do |part| - if Message.file?(part) - reset_pos(part) - dump_chunks(part, dev) - else - dev << dump_chunk(part) - end - end - dev << (dump_last_chunk + CRLF) - elsif @body - reset_pos(@body) - dump_chunks(@body, dev) - dev << (dump_last_chunk + CRLF) - end - dev - end - - # Returns a message body itself. - def content - @body - end - - private - - def set_content(body, boundary = nil) - if body.respond_to?(:read) - # uses Transfer-Encoding: chunked. bear in mind that server may not - # support it. at least ruby's CGI doesn't. - @body = body - remember_pos(@body) - @size = nil - elsif boundary and Message.multiparam_query?(body) - @body = build_query_multipart_str(body, boundary) - @size = @body.size - else - @body = Message.create_query_part_str(body) - @size = @body.size - end - end - - def remember_pos(io) - # IO may not support it (ex. IO.pipe) - @positions[io] = io.pos rescue nil - end - - def reset_pos(io) - io.pos = @positions[io] if @positions.key?(io) - end - - def dump_chunks(io, dev) - buf = '' - while !io.read(@chunk_size, buf).nil? - dev << dump_chunk(buf) - end - end - - def dump_chunk(str) - dump_chunk_size(str.size) + (str + CRLF) - end - - def dump_last_chunk - dump_chunk_size(0) - end - - def dump_chunk_size(size) - sprintf("%x", size) + CRLF - end - - class Parts - attr_reader :size - - def initialize - @body = [] - @size = 0 - @as_stream = false - end - - def add(part) - if Message.file?(part) - @as_stream = true - @body << part - if part.respond_to?(:size) - if sz = part.size - @size += sz - else - @size = nil - end - elsif part.respond_to?(:lstat) - @size += part.lstat.size - else - # use chunked upload - @size = nil - end - elsif @body[-1].is_a?(String) - @body[-1] += part.to_s - @size += part.to_s.size if @size - else - @body << part.to_s - @size += part.to_s.size if @size - end - end - - def parts - if @as_stream - @body - else - [@body.join] - end - end - end - - def build_query_multipart_str(query, boundary) - parts = Parts.new - query.each do |attr, value| - value ||= '' - headers = ["--#{boundary}"] - if Message.file?(value) - remember_pos(value) - param_str = params_from_file(value).collect { |k, v| - "#{k}=\"#{v}\"" - }.join("; ") - if value.respond_to?(:mime_type) - content_type = value.mime_type - else - content_type = Message.mime_type(value.path) - end - headers << %{Content-Disposition: form-data; name="#{attr}"; #{param_str}} - headers << %{Content-Type: #{content_type}} - else - headers << %{Content-Disposition: form-data; name="#{attr}"} - end - parts.add(headers.join(CRLF) + CRLF + CRLF) - parts.add(value) - parts.add(CRLF) - end - parts.add("--#{boundary}--" + CRLF + CRLF) # empty epilogue - parts - end - - def params_from_file(value) - params = {} - params['filename'] = File.basename(value.path || '') - # Creation time is not available from File::Stat - if value.respond_to?(:mtime) - params['modification-date'] = value.mtime.rfc822 - end - if value.respond_to?(:atime) - params['read-date'] = value.atime.rfc822 - end - params - end - end - - - class << self - private :new - - # Creates a Message instance of 'CONNECT' request. - # 'CONNECT' request does not have Body. - # uri:: an URI that need to connect. Only uri.host and uri.port are used. - def new_connect_request(uri) - m = new - m.header.init_connect_request(uri) - m.header.body_size = nil - m - end - - # Creates a Message instance of general request. - # method:: HTTP method String. - # uri:: an URI object which represents an URL of web resource. - # query:: a Hash or an Array of query part of URL. - # e.g. { "a" => "b" } => 'http://host/part?a=b' - # Give an array to pass multiple value like - # [["a", "b"], ["a", "c"]] => 'http://host/part?a=b&a=c' - # body:: a Hash or an Array of body part. - # e.g. { "a" => "b" } => 'a=b'. - # Give an array to pass multiple value like - # [["a", "b"], ["a", "c"]] => 'a=b&a=c'. - # boundary:: When the boundary given, it is sent as - # a multipart/form-data using this boundary String. - def new_request(method, uri, query = nil, body = nil, boundary = nil) - m = new - m.header.init_request(method, uri, query) - m.body = Body.new - m.body.init_request(body || '', boundary) - if body - m.header.body_size = m.body.size - m.header.chunked = true if m.body.size.nil? - else - m.header.body_size = nil - end - m - end - - # Creates a Message instance of response. - # body:: a String or an IO of response message body. - def new_response(body) - m = new - m.header.init_response(Status::OK) - m.body = Body.new - m.body.init_response(body) - m.header.body_size = m.body.size || 0 - m - end - - @@mime_type_handler = nil - - # Sets MIME type handler. - # - # handler must respond to :call with a single argument :path and returns - # a MIME type String e.g. 'text/html'. - # When the handler returns nil or an empty String, - # 'application/octet-stream' is used. - # - # When you set nil to the handler, internal_mime_type is used instead. - # The handler is nil by default. - def mime_type_handler=(handler) - @@mime_type_handler = handler - end - - # Returns MIME type handler. - def mime_type_handler - @@mime_type_handler - end - - # For backward compatibility. - alias set_mime_type_func mime_type_handler= - alias get_mime_type_func mime_type_handler - - def mime_type(path) # :nodoc: - if @@mime_type_handler - res = @@mime_type_handler.call(path) - if !res || res.to_s == '' - return 'application/octet-stream' - else - return res - end - else - internal_mime_type(path) - end - end - - # Default MIME type handler. - # See mime_type_handler=. - def internal_mime_type(path) - case path - when /\.txt$/i - 'text/plain' - when /\.(htm|html)$/i - 'text/html' - when /\.doc$/i - 'application/msword' - when /\.png$/i - 'image/png' - when /\.gif$/i - 'image/gif' - when /\.(jpg|jpeg)$/i - 'image/jpeg' - else - 'application/octet-stream' - end - end - - # Returns true if the given HTTP version allows keep alive connection. - # version:: Float - def keep_alive_enabled?(version) - version >= 1.1 - end - - # Returns true if the given query (or body) has a multiple parameter. - def multiparam_query?(query) - query.is_a?(Array) or query.is_a?(Hash) - end - - # Returns true if the given object is a File. In HTTPClient, a file is; - # * must respond to :read for retrieving String chunks. - # * must respond to :path and returns a path for Content-Disposition. - # * must respond to :pos and :pos= to rewind for reading. - # Rewinding is only needed for following HTTP redirect. Some IO impl - # defines :pos= but raises an Exception for pos= such as StringIO - # but there's no problem as far as using it for non-following methods - # (get/post/etc.) - def file?(obj) - obj.respond_to?(:read) and obj.respond_to?(:path) and - obj.respond_to?(:pos) and obj.respond_to?(:pos=) - end - - def create_query_part_str(query) # :nodoc: - if multiparam_query?(query) - escape_query(query) - elsif query.respond_to?(:read) - query = query.read - else - query.to_s - end - end - - def escape_query(query) # :nodoc: - query.collect { |attr, value| - if value.respond_to?(:read) - value = value.read - end - escape(attr.to_s) << '=' << escape(value.to_s) - }.join('&') - end - - # from CGI.escape - def escape(str) # :nodoc: - str.gsub(/([^ a-zA-Z0-9_.-]+)/n) { - '%' + $1.unpack('H2' * $1.size).join('%').upcase - }.tr(' ', '+') - end - end - - - # HTTP::Message::Headers:: message header. - attr_accessor :header - - # HTTP::Message::Body:: message body. - attr_reader :body - - # OpenSSL::X509::Certificate:: response only. server certificate which is - # used for retrieving the response. - attr_accessor :peer_cert - - # Creates a Message. This method should be used internally. - # Use Message.new_connect_request, Message.new_request or - # Message.new_response instead. - def initialize # :nodoc: - @header = Headers.new - @body = @peer_cert = nil - end - - # Dumps message (header and body) to given dev. - # dev needs to respond to <<. - def dump(dev = '') - str = header.dump + CRLF - if header.chunked - dev = body.dump_chunked(str, dev) - elsif body - dev = body.dump(str, dev) - else - dev << str - end - dev - end - - # Sets a new body. header.body_size is updated with new body.size. - def body=(body) - @body = body - @header.body_size = @body.size if @header - end - - # Returns HTTP version in a HTTP header. Float. - def version - @header.http_version - end - - # Sets HTTP version in a HTTP header. Float. - def version=(version) - @header.http_version = version - end - - # Returns HTTP status code in response. Integer. - def status - @header.status_code - end - - alias code status - alias status_code status - - # Sets HTTP status code of response. Integer. - # Reason phrase is updated, too. - def status=(status) - @header.status_code = status - end - - # Returns HTTP status reason phrase in response. String. - def reason - @header.reason_phrase - end - - # Sets HTTP status reason phrase of response. String. - def reason=(reason) - @header.reason_phrase = reason - end - - # Sets 'Content-Type' header value. Overrides if already exists. - def contenttype - @header.contenttype - end - - # Returns 'Content-Type' header value. - def contenttype=(contenttype) - @header.contenttype = contenttype - end - - # Returns a content of message body. A String or an IO. - def content - @body.content - end - end - - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/session.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/session.rb deleted file mode 100644 index 5ac5cd60..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/session.rb +++ /dev/null @@ -1,863 +0,0 @@ -# HTTPClient - HTTP client library. -# Copyright (C) 2000-2009 NAKAMURA, Hiroshi . -# -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - -# httpclient/session.rb is based on http-access.rb in http-access/0.0.4. -# Some part of code in http-access.rb was recycled in httpclient.rb. -# Those part is copyrighted by Maehashi-san. - - -require 'socket' -require 'thread' -require 'stringio' - -require 'httpclient/timeout' -require 'httpclient/ssl_config' -require 'httpclient/http' - - -class HTTPClient - - - # Represents a Site: protocol scheme, host String and port Number. - class Site - # Protocol scheme. - attr_accessor :scheme - # Host String. - attr_reader :host - # Port number. - attr_reader :port - - # Creates a new Site based on the given URI. - def initialize(uri = nil) - if uri - @scheme = uri.scheme - @host = uri.host - @port = uri.port.to_i - else - @scheme = 'tcp' - @host = '0.0.0.0' - @port = 0 - end - end - - # Returns address String. - def addr - "#{@scheme}://#{@host}:#{@port.to_s}" - end - - # Returns true is scheme, host and port are '==' - def ==(rhs) - (@scheme == rhs.scheme) and (@host == rhs.host) and (@port == rhs.port) - end - - # Same as ==. - def eql?(rhs) - self == rhs - end - - def hash # :nodoc: - [@scheme, @host, @port].hash - end - - def to_s # :nodoc: - addr - end - - # Returns true if scheme, host and port of the given URI matches with this. - def match(uri) - (@scheme == uri.scheme) and (@host == uri.host) and (@port == uri.port.to_i) - end - - def inspect # :nodoc: - sprintf("#<%s:0x%x %s>", self.class.name, __id__, addr) - end - end - - - # Manages sessions for a HTTPClient instance. - class SessionManager - # Name of this client. Used for 'User-Agent' header in HTTP request. - attr_accessor :agent_name - # Owner of this client. Used for 'From' header in HTTP request. - attr_accessor :from - - # Requested protocol version - attr_accessor :protocol_version - # Chunk size for chunked request - attr_accessor :chunk_size - # Device for dumping log for debugging - attr_accessor :debug_dev - # Boolean value for Socket#sync - attr_accessor :socket_sync - - attr_accessor :connect_timeout - # Maximum retry count. 0 for infinite. - attr_accessor :connect_retry - attr_accessor :send_timeout - attr_accessor :receive_timeout - attr_accessor :read_block_size - attr_accessor :protocol_retry_count - - attr_accessor :ssl_config - - attr_reader :test_loopback_http_response - - def initialize(client) - @client = client - @proxy = client.proxy - - @agent_name = nil - @from = nil - - @protocol_version = nil - @debug_dev = client.debug_dev - @socket_sync = true - @chunk_size = 4096 - - @connect_timeout = 60 - @connect_retry = 1 - @send_timeout = 120 - @receive_timeout = 60 # For each read_block_size bytes - @read_block_size = 1024 * 16 # follows net/http change in 1.8.7 - @protocol_retry_count = 5 - - @ssl_config = nil - @test_loopback_http_response = [] - - @sess_pool = [] - @sess_pool_mutex = Mutex.new - end - - def proxy=(proxy) - if proxy.nil? - @proxy = nil - else - @proxy = Site.new(proxy) - end - end - - def query(req, via_proxy) - req.body.chunk_size = @chunk_size - sess = open(req.header.request_uri, via_proxy) - begin - sess.query(req) - rescue - sess.close - raise - end - sess - end - - def reset(uri) - site = Site.new(uri) - close(site) - end - - def reset_all - close_all - end - - def keep(sess) - add_cached_session(sess) - end - - private - - def open(uri, via_proxy = false) - sess = nil - if cached = get_cached_session(uri) - sess = cached - else - sess = Session.new(@client, Site.new(uri), @agent_name, @from) - sess.proxy = via_proxy ? @proxy : nil - sess.socket_sync = @socket_sync - sess.requested_version = @protocol_version if @protocol_version - sess.connect_timeout = @connect_timeout - sess.connect_retry = @connect_retry - sess.send_timeout = @send_timeout - sess.receive_timeout = @receive_timeout - sess.read_block_size = @read_block_size - sess.protocol_retry_count = @protocol_retry_count - sess.ssl_config = @ssl_config - sess.debug_dev = @debug_dev - sess.test_loopback_http_response = @test_loopback_http_response - end - sess - end - - def close_all - @sess_pool_mutex.synchronize do - @sess_pool.each do |sess| - sess.close - end - end - @sess_pool.clear - end - - def close(dest) - if cached = get_cached_session(dest) - cached.close - true - else - false - end - end - - def get_cached_session(uri) - cached = nil - @sess_pool_mutex.synchronize do - new_pool = [] - @sess_pool.each do |s| - if s.dest.match(uri) - cached = s - else - new_pool << s - end - end - @sess_pool = new_pool - end - cached - end - - def add_cached_session(sess) - @sess_pool_mutex.synchronize do - @sess_pool << sess - end - end - end - - - # Wraps up OpenSSL::SSL::SSLSocket and offers debugging features. - class SSLSocketWrap - def initialize(socket, context, debug_dev = nil) - unless SSLEnabled - raise ConfigurationError.new('Ruby/OpenSSL module is required') - end - @context = context - @socket = socket - @ssl_socket = create_openssl_socket(@socket) - @debug_dev = debug_dev - end - - def ssl_connect - @ssl_socket.connect - end - - def post_connection_check(host) - verify_mode = @context.verify_mode || OpenSSL::SSL::VERIFY_NONE - if verify_mode == OpenSSL::SSL::VERIFY_NONE - return - elsif @ssl_socket.peer_cert.nil? and - check_mask(verify_mode, OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT) - raise OpenSSL::SSL::SSLError.new('no peer cert') - end - hostname = host.host - if @ssl_socket.respond_to?(:post_connection_check) and RUBY_VERSION > "1.8.4" - @ssl_socket.post_connection_check(hostname) - else - @context.post_connection_check(@ssl_socket.peer_cert, hostname) - end - end - - def peer_cert - @ssl_socket.peer_cert - end - - def close - @ssl_socket.close - @socket.close - end - - def closed? - @socket.closed? - end - - def eof? - @ssl_socket.eof? - end - - def gets(*args) - str = @ssl_socket.gets(*args) - debug(str) - str - end - - def read(*args) - str = @ssl_socket.read(*args) - debug(str) - str - end - - def readpartial(*args) - str = @ssl_socket.readpartial(*args) - debug(str) - str - end - - def <<(str) - rv = @ssl_socket.write(str) - debug(str) - rv - end - - def flush - @ssl_socket.flush - end - - def sync - @ssl_socket.sync - end - - def sync=(sync) - @ssl_socket.sync = sync - end - - private - - def check_mask(value, mask) - value & mask == mask - end - - def create_openssl_socket(socket) - ssl_socket = nil - if OpenSSL::SSL.const_defined?("SSLContext") - ctx = OpenSSL::SSL::SSLContext.new - @context.set_context(ctx) - ssl_socket = OpenSSL::SSL::SSLSocket.new(socket, ctx) - else - ssl_socket = OpenSSL::SSL::SSLSocket.new(socket) - @context.set_context(ssl_socket) - end - ssl_socket - end - - def debug(str) - @debug_dev << str if @debug_dev && str - end - end - - - # Wraps up a Socket for method interception. - module SocketWrap - def initialize(socket, *args) - super(*args) - @socket = socket - end - - def close - @socket.close - end - - def closed? - @socket.closed? - end - - def eof? - @socket.eof? - end - - def gets(*args) - @socket.gets(*args) - end - - def read(*args) - @socket.read(*args) - end - - def readpartial(*args) - # StringIO doesn't support :readpartial - if @socket.respond_to?(:readpartial) - @socket.readpartial(*args) - else - @socket.read(*args) - end - end - - def <<(str) - @socket << str - end - - def flush - @socket.flush - end - - def sync - @socket.sync - end - - def sync=(sync) - @socket.sync = sync - end - end - - - # Module for intercepting Socket methods and dumps in/out to given debugging - # device. debug_dev must respond to <<. - module DebugSocket - extend SocketWrap - - def debug_dev=(debug_dev) - @debug_dev = debug_dev - end - - def close - super - debug("! CONNECTION CLOSED\n") - end - - def gets(*args) - str = super - debug(str) - str - end - - def read(*args) - str = super - debug(str) - str - end - - def readpartial(*args) - str = super - debug(str) - str - end - - def <<(str) - super - debug(str) - end - - private - - def debug(str) - @debug_dev << str if str && @debug_dev - end - end - - - # Dummy Socket for emulating loopback test. - class LoopBackSocket - include SocketWrap - - def initialize(host, port, response) - super(response.is_a?(StringIO) ? response : StringIO.new(response)) - @host = host - @port = port - end - - def <<(str) - # ignored - end - end - - - # Manages a HTTP session with a Site. - class Session - include HTTPClient::Timeout - - # Destination site - attr_reader :dest - # Proxy site - attr_accessor :proxy - # Boolean value for Socket#sync - attr_accessor :socket_sync - # Requested protocol version - attr_accessor :requested_version - # Device for dumping log for debugging - attr_accessor :debug_dev - - attr_accessor :connect_timeout - attr_accessor :connect_retry - attr_accessor :send_timeout - attr_accessor :receive_timeout - attr_accessor :read_block_size - attr_accessor :protocol_retry_count - - attr_accessor :ssl_config - attr_reader :ssl_peer_cert - attr_accessor :test_loopback_http_response - - def initialize(client, dest, agent_name, from) - @client = client - @dest = dest - @proxy = nil - @socket_sync = true - @requested_version = nil - - @debug_dev = nil - - @connect_timeout = nil - @connect_retry = 1 - @send_timeout = nil - @receive_timeout = nil - @read_block_size = nil - @protocol_retry_count = 5 - - @ssl_config = nil - @ssl_peer_cert = nil - - @test_loopback_http_response = nil - - @agent_name = agent_name - @from = from - @state = :INIT - - @requests = [] - - @status = nil - @reason = nil - @headers = [] - - @socket = nil - @readbuf = nil - end - - # Send a request to the server - def query(req) - connect if @state == :INIT - req.header.request_via_proxy = !@proxy.nil? - begin - timeout(@send_timeout, SendTimeoutError) do - set_header(req) - req.dump(@socket) - # flush the IO stream as IO::sync mode is false - @socket.flush unless @socket_sync - end - rescue Errno::ECONNABORTED, Errno::ECONNRESET, Errno::EPIPE - close - raise KeepAliveDisconnected.new - rescue HTTPClient::TimeoutError - close - raise - rescue - if SSLEnabled and $!.is_a?(OpenSSL::SSL::SSLError) - raise KeepAliveDisconnected.new - else - raise - end - end - - @state = :META if @state == :WAIT - @next_connection = nil - @requests.push(req) - end - - def close - if !@socket.nil? and !@socket.closed? - # @socket.flush may block when it the socket is already closed by - # foreign host and the client runs under MT-condition. - @socket.close - end - @state = :INIT - end - - def closed? - @state == :INIT - end - - def get_header - begin - if @state != :META - raise RuntimeError.new("get_status must be called at the beginning of a session") - end - read_header - rescue - close - raise - end - [@version, @status, @reason, @headers] - end - - def eof? - if !@content_length.nil? - @content_length == 0 - else - @socket.closed? or @socket.eof? - end - end - - def get_body(&block) - begin - read_header if @state == :META - return nil if @state != :DATA - if @chunked - read_body_chunked(&block) - elsif @content_length - read_body_length(&block) - else - read_body_rest(&block) - end - rescue - close - raise - end - if eof? - if @next_connection - @state = :WAIT - else - close - end - end - nil - end - - private - - def set_header(req) - if @requested_version - if /^(?:HTTP\/|)(\d+.\d+)$/ =~ @requested_version - req.version = $1.to_f - end - end - if @agent_name - req.header.set('User-Agent', "#{@agent_name} #{LIB_NAME}") - end - if @from - req.header.set('From', @from) - end - req.header.set('Date', Time.now.httpdate) - end - - # Connect to the server - def connect - site = @proxy || @dest - retry_number = 0 - begin - timeout(@connect_timeout, ConnectTimeoutError) do - @socket = create_socket(site) - if @dest.scheme == 'https' - if @socket.is_a?(LoopBackSocket) - connect_ssl_proxy(@socket, URI.parse(@dest.to_s)) if @proxy - else - @socket = create_ssl_socket(@socket) - connect_ssl_proxy(@socket, URI.parse(@dest.to_s)) if @proxy - @socket.ssl_connect - @socket.post_connection_check(@dest) - @ssl_peer_cert = @socket.peer_cert - end - end - # Use Ruby internal buffering instead of passing data immediately - # to the underlying layer - # => we need to to call explicitly flush on the socket - @socket.sync = @socket_sync - end - rescue RetryableResponse - retry_number += 1 - if retry_number < @protocol_retry_count - retry - end - raise BadResponseError.new("connect to the server failed with status #{@status} #{@reason}") - rescue TimeoutError - if @connect_retry == 0 - retry - else - retry_number += 1 - retry if retry_number < @connect_retry - end - close - raise - end - @state = :WAIT - end - - def create_socket(site) - socket = nil - begin - @debug_dev << "! CONNECT TO #{site.host}:#{site.port}\n" if @debug_dev - if str = @test_loopback_http_response.shift - socket = LoopBackSocket.new(site.host, site.port, str) - else - socket = TCPSocket.new(site.host, site.port) - end - if @debug_dev - @debug_dev << "! CONNECTION ESTABLISHED\n" - socket.extend(DebugSocket) - socket.debug_dev = @debug_dev - end - rescue SystemCallError => e - e.message << " (#{site})" - raise - rescue SocketError => e - e.message << " (#{site})" - raise - end - socket - end - - # wrap socket with OpenSSL. - def create_ssl_socket(raw_socket) - SSLSocketWrap.new(raw_socket, @ssl_config, @debug_dev) - end - - def connect_ssl_proxy(socket, uri) - req = HTTP::Message.new_connect_request(uri) - @client.request_filter.each do |filter| - filter.filter_request(req) - end - set_header(req) - req.dump(@socket) - @socket.flush unless @socket_sync - res = HTTP::Message.new_response('') - parse_header - res.version, res.status, res.reason = @version, @status, @reason - @headers.each do |key, value| - res.header.set(key, value) - end - commands = @client.request_filter.collect { |filter| - filter.filter_response(req, res) - } - if commands.find { |command| command == :retry } - raise RetryableResponse.new - end - unless @status == 200 - raise BadResponseError.new("connect to ssl proxy failed with status #{@status} #{@reason}", res) - end - end - - # Read status block. - def read_header - @content_length = nil - @chunked = false - @chunk_length = 0 - parse_header - - # Head of the request has been parsed. - @state = :DATA - req = @requests.shift - - if req.header.request_method == 'HEAD' - @content_length = 0 - if @next_connection - @state = :WAIT - else - close - end - end - @next_connection = false unless @content_length - end - - StatusParseRegexp = %r(\AHTTP/(\d+\.\d+)\s+(\d\d\d)\s*([^\r\n]+)?\r?\n\z) - def parse_header - timeout(@receive_timeout, ReceiveTimeoutError) do - begin - initial_line = @socket.gets("\n") - if initial_line.nil? - raise KeepAliveDisconnected.new - end - if StatusParseRegexp !~ initial_line - @version = '0.9' - @status = nil - @reason = nil - @next_connection = false - @content_length = nil - @readbuf = initial_line - break - end - @version, @status, @reason = $1, $2.to_i, $3 - @next_connection = HTTP::Message.keep_alive_enabled?(@version.to_f) - @headers = [] - while true - line = @socket.gets("\n") - unless line - raise BadResponseError.new('unexpected EOF') - end - line.chomp! - break if line.empty? - key, value = line.split(/\s*:\s*/, 2) - parse_keepalive_header(key, value) - @headers << [key, value] - end - end while (@version == '1.1' && @status == 100) - end - end - - def parse_keepalive_header(key, value) - key = key.downcase - if key == 'content-length' - @content_length = value.to_i - elsif key == 'transfer-encoding' and value.downcase == 'chunked' - @chunked = true - @chunk_length = 0 - @content_length = nil - elsif key == 'connection' or key == 'proxy-connection' - if value.downcase == 'keep-alive' - @next_connection = true - else - @next_connection = false - end - end - end - - def read_body_length(&block) - return nil if @content_length == 0 - buf = '' - while true - maxbytes = @read_block_size - maxbytes = @content_length if maxbytes > @content_length - timeout(@receive_timeout, ReceiveTimeoutError) do - begin - @socket.readpartial(maxbytes, buf) - rescue EOFError - buf = nil - end - end - if buf && buf.length > 0 - @content_length -= buf.length - yield buf - else - @content_length = 0 - end - return if @content_length == 0 - end - end - - RS = "\r\n" - def read_body_chunked(&block) - buf = '' - while true - len = @socket.gets(RS) - @chunk_length = len.hex - if @chunk_length == 0 - @content_length = 0 - @socket.gets(RS) - return - end - timeout(@receive_timeout, ReceiveTimeoutError) do - @socket.read(@chunk_length + 2, buf) - end - unless buf.empty? - yield buf.slice(0, @chunk_length) - end - end - end - - def read_body_rest - if @readbuf and @readbuf.length > 0 - yield @readbuf - @readbuf = nil - end - buf = '' - while true - timeout(@receive_timeout, ReceiveTimeoutError) do - begin - @socket.readpartial(@read_block_size, buf) - rescue EOFError - buf = nil - end - end - if buf && buf.length > 0 - yield buf - else - return - end - end - end - end - - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/ssl_config.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/ssl_config.rb deleted file mode 100644 index 2bda00ee..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/ssl_config.rb +++ /dev/null @@ -1,417 +0,0 @@ -# HTTPClient - HTTP client library. -# Copyright (C) 2000-2009 NAKAMURA, Hiroshi . -# -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -class HTTPClient - - begin - require 'openssl' - SSLEnabled = true - rescue LoadError - SSLEnabled = false - end - - # Represents SSL configuration for HTTPClient instance. - # The implementation depends on OpenSSL. - # - # == Trust Anchor Control - # - # SSLConfig loads 'httpclient/cacert.p7s' as a trust anchor - # (trusted certificate(s)) with set_trust_ca in initialization time. - # This means that HTTPClient instance trusts some CA certificates by default, - # like Web browsers. 'httpclient/cacert.p7s' is created by the author and - # included in released package. - # - # 'cacert.p7s' is automatically generated from JDK 1.6. - # - # You may want to change trust anchor by yourself. Call clear_cert_store - # then set_trust_ca for that purpose. - class SSLConfig - include OpenSSL if SSLEnabled - - # OpenSSL::X509::Certificate:: certificate for SSL client authenticateion. - # nil by default. (no client authenticateion) - attr_reader :client_cert - # OpenSSL::PKey::PKey:: private key for SSL client authentication. - # nil by default. (no client authenticateion) - attr_reader :client_key - - # A number which represents OpenSSL's verify mode. Default value is - # OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT. - attr_reader :verify_mode - # A number of verify depth. Certification path which length is longer than - # this depth is not allowed. - attr_reader :verify_depth - # A callback handler for custom certificate verification. nil by default. - # If the handler is set, handler.call is invoked just after general - # OpenSSL's verification. handler.call is invoked with 2 arguments, - # ok and ctx; ok is a result of general OpenSSL's verification. ctx is a - # OpenSSL::X509::StoreContext. - attr_reader :verify_callback - # SSL timeout in sec. nil by default. - attr_reader :timeout - # A number of OpenSSL's SSL options. Default value is - # OpenSSL::SSL::OP_ALL | OpenSSL::SSL::OP_NO_SSLv2 - attr_reader :options - # A String of OpenSSL's cipher configuration. Default value is - # ALL:!ADH:!LOW:!EXP:!MD5:+SSLv2:@STRENGTH - # See ciphers(1) man in OpenSSL for more detail. - attr_reader :ciphers - - # OpenSSL::X509::X509::Store used for verification. You can reset the - # store with clear_cert_store and set the new store with cert_store=. - attr_reader :cert_store # don't use if you don't know what it is. - - # For server side configuration. Ignore this. - attr_reader :client_ca # :nodoc: - - # Creates a SSLConfig. - def initialize(client) - return unless SSLEnabled - @client = client - @cert_store = X509::Store.new - @client_cert = @client_key = @client_ca = nil - @verify_mode = SSL::VERIFY_PEER | SSL::VERIFY_FAIL_IF_NO_PEER_CERT - @verify_depth = nil - @verify_callback = nil - @dest = nil - @timeout = nil - @options = defined?(SSL::OP_ALL) ? SSL::OP_ALL | SSL::OP_NO_SSLv2 : nil - @ciphers = "ALL:!ADH:!LOW:!EXP:!MD5:+SSLv2:@STRENGTH" - load_cacerts - end - - # Sets certificate (OpenSSL::X509::Certificate) for SSL client - # authentication. - # client_key and client_cert must be a pair. - # - # Calling this method resets all existing sessions. - def client_cert=(client_cert) - @client_cert = client_cert - change_notify - end - - # Sets private key (OpenSSL::PKey::PKey) for SSL client authentication. - # client_key and client_cert must be a pair. - # - # Calling this method resets all existing sessions. - def client_key=(client_key) - @client_key = client_key - change_notify - end - - # Sets certificate and private key for SSL client authentication. - # cert_file:: must be a filename of PEM/DER formatted file. - # key_file:: must be a filename of PEM/DER formatted file. Key must be an - # RSA key. If you want to use other PKey algorithm, - # use client_key=. - # - # Calling this method resets all existing sessions. - def set_client_cert_file(cert_file, key_file) - @client_cert = X509::Certificate.new(File.open(cert_file).read) - @client_key = PKey::RSA.new(File.open(key_file).read) - change_notify - end - - # Drops current certificate store (OpenSSL::X509::Store) for SSL and create - # new one for the next session. - # - # Calling this method resets all existing sessions. - def clear_cert_store - @cert_store = X509::Store.new - change_notify - end - - # Sets new certificate store (OpenSSL::X509::Store). - # don't use if you don't know what it is. - # - # Calling this method resets all existing sessions. - def cert_store=(cert_store) - @cert_store = cert_store - change_notify - end - - # Sets trust anchor certificate(s) for verification. - # trust_ca_file_or_hashed_dir:: a filename of a PEM/DER formatted - # OpenSSL::X509::Certificate or - # a 'c-rehash'eddirectory name which stores - # trusted certificate files. - # - # Calling this method resets all existing sessions. - def set_trust_ca(trust_ca_file_or_hashed_dir) - if FileTest.directory?(trust_ca_file_or_hashed_dir) - @cert_store.add_path(trust_ca_file_or_hashed_dir) - else - @cert_store.add_file(trust_ca_file_or_hashed_dir) - end - change_notify - end - - # Adds CRL for verification. - # crl:: a OpenSSL::X509::CRL or a filename of a PEM/DER formatted - # OpenSSL::X509::CRL. - # - # Calling this method resets all existing sessions. - def set_crl(crl) - unless crl.is_a?(X509::CRL) - crl = X509::CRL.new(File.open(crl).read) - end - @cert_store.add_crl(crl) - @cert_store.flags = X509::V_FLAG_CRL_CHECK | X509::V_FLAG_CRL_CHECK_ALL - change_notify - end - - # Sets verify mode of OpenSSL. New value must be a combination of - # constants OpenSSL::SSL::VERIFY_* - # - # Calling this method resets all existing sessions. - def verify_mode=(verify_mode) - @verify_mode = verify_mode - change_notify - end - - # Sets verify depth. New value must be a number. - # - # Calling this method resets all existing sessions. - def verify_depth=(verify_depth) - @verify_depth = verify_depth - change_notify - end - - # Sets callback handler for custom certificate verification. - # See verify_callback. - # - # Calling this method resets all existing sessions. - def verify_callback=(verify_callback) - @verify_callback = verify_callback - change_notify - end - - # Sets SSL timeout in sec. - # - # Calling this method resets all existing sessions. - def timeout=(timeout) - @timeout = timeout - change_notify - end - - # Sets SSL options. New value must be a combination of # constants - # OpenSSL::SSL::OP_* - # - # Calling this method resets all existing sessions. - def options=(options) - @options = options - change_notify - end - - # Sets cipher configuration. New value must be a String. - # - # Calling this method resets all existing sessions. - def ciphers=(ciphers) - @ciphers = ciphers - change_notify - end - - def client_ca=(client_ca) # :nodoc: - @client_ca = client_ca - change_notify - end - - # interfaces for SSLSocketWrap. - def set_context(ctx) # :nodoc: - # Verification: Use Store#verify_callback instead of SSLContext#verify*? - ctx.cert_store = @cert_store - ctx.verify_mode = @verify_mode - ctx.verify_depth = @verify_depth if @verify_depth - ctx.verify_callback = @verify_callback || method(:default_verify_callback) - # SSL config - ctx.cert = @client_cert - ctx.key = @client_key - ctx.client_ca = @client_ca - ctx.timeout = @timeout - ctx.options = @options - ctx.ciphers = @ciphers - end - - # post connection check proc for ruby < 1.8.5. - # this definition must match with the one in ext/openssl/lib/openssl/ssl.rb - def post_connection_check(peer_cert, hostname) # :nodoc: - check_common_name = true - cert = peer_cert - cert.extensions.each{|ext| - next if ext.oid != "subjectAltName" - ext.value.split(/,\s+/).each{|general_name| - if /\ADNS:(.*)/ =~ general_name - check_common_name = false - reg = Regexp.escape($1).gsub(/\\\*/, "[^.]+") - return true if /\A#{reg}\z/i =~ hostname - elsif /\AIP Address:(.*)/ =~ general_name - check_common_name = false - return true if $1 == hostname - end - } - } - if check_common_name - cert.subject.to_a.each{|oid, value| - if oid == "CN" - reg = Regexp.escape(value).gsub(/\\\*/, "[^.]+") - return true if /\A#{reg}\z/i =~ hostname - end - } - end - raise SSL::SSLError, "hostname was not match with the server certificate" - end - - # Default callback for verification: only dumps error. - def default_verify_callback(is_ok, ctx) - if $DEBUG - puts "#{ is_ok ? 'ok' : 'ng' }: #{ctx.current_cert.subject}" - end - if !is_ok - depth = ctx.error_depth - code = ctx.error - msg = ctx.error_string - STDERR.puts "at depth #{depth} - #{code}: #{msg}" - end - is_ok - end - - # Sample callback method: CAUTION: does not check CRL/ARL. - def sample_verify_callback(is_ok, ctx) - unless is_ok - depth = ctx.error_depth - code = ctx.error - msg = ctx.error_string - STDERR.puts "at depth #{depth} - #{code}: #{msg}" if $DEBUG - return false - end - - cert = ctx.current_cert - self_signed = false - ca = false - pathlen = nil - server_auth = true - self_signed = (cert.subject.cmp(cert.issuer) == 0) - - # Check extensions whatever its criticality is. (sample) - cert.extensions.each do |ex| - case ex.oid - when 'basicConstraints' - /CA:(TRUE|FALSE), pathlen:(\d+)/ =~ ex.value - ca = ($1 == 'TRUE') - pathlen = $2.to_i - when 'keyUsage' - usage = ex.value.split(/\s*,\s*/) - ca = usage.include?('Certificate Sign') - server_auth = usage.include?('Key Encipherment') - when 'extendedKeyUsage' - usage = ex.value.split(/\s*,\s*/) - server_auth = usage.include?('Netscape Server Gated Crypto') - when 'nsCertType' - usage = ex.value.split(/\s*,\s*/) - ca = usage.include?('SSL CA') - server_auth = usage.include?('SSL Server') - end - end - - if self_signed - STDERR.puts 'self signing CA' if $DEBUG - return true - elsif ca - STDERR.puts 'middle level CA' if $DEBUG - return true - elsif server_auth - STDERR.puts 'for server authentication' if $DEBUG - return true - end - - return false - end - - private - - def change_notify - @client.reset_all - end - - def load_cacerts - [ - [DIST_CERT, 'cacert.p7s'], - [DIST_CERT_SHA1, 'cacert_sha1.p7s'] - ].each do |cert_str, ca_file| - file = File.join(File.dirname(__FILE__), ca_file) - if File.exist?(file) - p7 = PKCS7.read_smime(File.open(file) { |f| f.read }) - selfcert = X509::Certificate.new(cert_str) - store = X509::Store.new - store.add_cert(selfcert) - if (p7.verify(nil, store, p7.data, 0)) - set_trust_ca(file) - return - end - end - end - STDERR.puts("cacerts loading failed") - end - - DIST_CERT =<<__DIST_CERT__ ------BEGIN CERTIFICATE----- -MIID/TCCAuWgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBLMQswCQYDVQQGEwJKUDER -MA8GA1UECgwIY3Rvci5vcmcxFDASBgNVBAsMC0RldmVsb3BtZW50MRMwEQYDVQQD -DApodHRwY2xpZW50MB4XDTA5MDUyMTEyMzkwNVoXDTM3MTIzMTIzNTk1OVowSzEL -MAkGA1UEBhMCSlAxETAPBgNVBAoMCGN0b3Iub3JnMRQwEgYDVQQLDAtEZXZlbG9w -bWVudDETMBEGA1UEAwwKaHR0cGNsaWVudDCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAM2PlkdTH97zvIHoPIMj87wnNvpqIQUD7L/hlysO0XBsmR/XZUeU -ZKB10JQqMXviWpTnU9KU6xGTx3EI4wfd2dpLwH/d4d7K4LngW1kY7kJlZeJhakno -GzQ40RSI9WkQ0R9KOE888f7OkTBafcL8UyWFVIMhQBw2d9iNl4Jc69QojayCDoSX -XbbEP0n8yi7HwIU3RFuX6DtMpOx4/1K7Z002ccOGJ3J9kHgeDQSQtF42cQYC7qj2 -67I/OQgnB7ycxTCP0E7bdXQg+zqsngrhaoNn/+I+CoO7nD4t4uQ+B4agALh4PPxs -bQD9MCL+VurNGLYv0HVd+ZlLblpddC9PLTsCAwEAAaOB6zCB6DAPBgNVHRMBAf8E -BTADAQH/MDEGCWCGSAGG+EIBDQQkFiJSdWJ5L09wZW5TU0wgR2VuZXJhdGVkIENl -cnRpZmljYXRlMB0GA1UdDgQWBBRAnB6XlMoOcm7HVAw+JWxY205PHTAOBgNVHQ8B -Af8EBAMCAQYwcwYDVR0jBGwwaoAUQJwel5TKDnJux1QMPiVsWNtOTx2hT6RNMEsx -CzAJBgNVBAYTAkpQMREwDwYDVQQKDAhjdG9yLm9yZzEUMBIGA1UECwwLRGV2ZWxv -cG1lbnQxEzARBgNVBAMMCmh0dHBjbGllbnSCAQEwDQYJKoZIhvcNAQENBQADggEB -ABVFepybD5XqsBnOn/oDHvK0xAPMF4Ap4Ht1yMQLObg8paVhANSdqIevPlCr/mPL -DRjcy+J1fCnE6lCfsfLdTgAjirqt8pm92NccxmJ8hTmMd3LWC1n+eYWaolqTCVRM -Bpe8UY9enyXrFoudHlr9epr18E6As6VrCSfpXFZkD9WHVSWpzkB3qATu5qcDCzCH -bI0755Mdm/1hKJCD4l69h3J3OhRIEUPJfHnPvM5wtiyC2dcE9itwE/wdVzBJeIBX -JQm+Qj+K8qXcRTzZZGIBjw2n46xJgW6YncNCHU/WWfNCYwdkngHS/aN8IbEjhCwf -viXFisVrDN/+pZZGMf67ZaY= ------END CERTIFICATE----- -__DIST_CERT__ - - DIST_CERT_SHA1 =<<__DIST_CERT__ ------BEGIN CERTIFICATE----- -MIID/TCCAuWgAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJKUDER -MA8GA1UECgwIY3Rvci5vcmcxFDASBgNVBAsMC0RldmVsb3BtZW50MRMwEQYDVQQD -DApodHRwY2xpZW50MB4XDTA5MDYyNTE0MjUzN1oXDTEwMTIzMTIzNTk1OVowSzEL -MAkGA1UEBhMCSlAxETAPBgNVBAoMCGN0b3Iub3JnMRQwEgYDVQQLDAtEZXZlbG9w -bWVudDETMBEGA1UEAwwKaHR0cGNsaWVudDCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAM2PlkdTH97zvIHoPIMj87wnNvpqIQUD7L/hlysO0XBsmR/XZUeU -ZKB10JQqMXviWpTnU9KU6xGTx3EI4wfd2dpLwH/d4d7K4LngW1kY7kJlZeJhakno -GzQ40RSI9WkQ0R9KOE888f7OkTBafcL8UyWFVIMhQBw2d9iNl4Jc69QojayCDoSX -XbbEP0n8yi7HwIU3RFuX6DtMpOx4/1K7Z002ccOGJ3J9kHgeDQSQtF42cQYC7qj2 -67I/OQgnB7ycxTCP0E7bdXQg+zqsngrhaoNn/+I+CoO7nD4t4uQ+B4agALh4PPxs -bQD9MCL+VurNGLYv0HVd+ZlLblpddC9PLTsCAwEAAaOB6zCB6DAPBgNVHRMBAf8E -BTADAQH/MDEGCWCGSAGG+EIBDQQkFiJSdWJ5L09wZW5TU0wgR2VuZXJhdGVkIENl -cnRpZmljYXRlMB0GA1UdDgQWBBRAnB6XlMoOcm7HVAw+JWxY205PHTAOBgNVHQ8B -Af8EBAMCAQYwcwYDVR0jBGwwaoAUQJwel5TKDnJux1QMPiVsWNtOTx2hT6RNMEsx -CzAJBgNVBAYTAkpQMREwDwYDVQQKDAhjdG9yLm9yZzEUMBIGA1UECwwLRGV2ZWxv -cG1lbnQxEzARBgNVBAMMCmh0dHBjbGllbnSCAQIwDQYJKoZIhvcNAQEFBQADggEB -AGKhgByl/ur6SBFFKJcISJONFRaxf2ji0l6ut9XO1H2BSOSRjUbsFDWdWZG+D24Q -JKKseSWPWAC5uHq00sBWkvmtip+duESPeDEdumdBhdiUUgGamW2Ew2y4yAdAVDeG -t1p2fs8SylQN6AMTG/+R+MGHxhvg+UELYLcvAjjcDW2VhDQaJ1eFEfcMW1zRtvvh -LJmVErouwFKyAjwhbF6sNxmToSnbO1ciWwIILMsOBNHMETCp+SzkRDIRWIkm6m+q -RwRyYoHysODGvnu8VXS1hGRr2GIxeBga7dAGa2VLE/iUQ0d4lEskYU+6C4ZLyAWF -O89dvLNRzpL10MaWCYVREks= ------END CERTIFICATE----- -__DIST_CERT__ - end - - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/timeout.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/timeout.rb deleted file mode 100644 index 3eb7e930..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/timeout.rb +++ /dev/null @@ -1,136 +0,0 @@ -# HTTPClient - HTTP client library. -# Copyright (C) 2000-2009 NAKAMURA, Hiroshi . -# -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -require 'timeout' -require 'thread' - - -class HTTPClient - - - # Replaces timeout.rb to avoid Thread creation and scheduling overhead. - # - # You should check another timeout replace in WEBrick. - # See lib/webrick/utils.rb in ruby/1.9. - # - # About this implementation: - # * Do not create Thread for each timeout() call. Just create 1 Thread for - # timeout scheduler. - # * Do not wakeup the scheduler thread so often. Let scheduler thread sleep - # until the nearest period. - class TimeoutScheduler - - # Represents timeout period. - class Period - attr_reader :thread, :time - - # Creates new Period. - def initialize(thread, time, ex) - @thread, @time, @ex = thread, time, ex - @lock = Mutex.new - end - - # Raises if thread exists and alive. - def raise(message) - @lock.synchronize do - if @thread and @thread.alive? - @thread.raise(@ex, message) - end - end - end - - # Cancel this Period. Mutex is needed to avoid too-late exception. - def cancel - @lock.synchronize do - @thread = nil - end - end - end - - # Creates new TimeoutScheduler. - def initialize - @pool = {} - @next = nil - @thread = start_timer_thread - end - - # Registers new timeout period. - def register(thread, sec, ex) - period = Period.new(thread, Time.now + sec, ex || ::Timeout::Error) - @pool[period] = true - if @next.nil? or period.time < @next - begin - @thread.wakeup - rescue ThreadError - # Thread may be dead by fork. - @thread = start_timer_thread - end - end - period - end - - # Cancels the given period. - def cancel(period) - @pool.delete(period) - period.cancel - end - - private - - def start_timer_thread - thread = Thread.new { - while true - if @pool.empty? - @next = nil - sleep - else - min, = @pool.min { |a, b| a[0].time <=> b[0].time } - @next = min.time - sec = @next - Time.now - if sec > 0 - sleep(sec) - end - end - now = Time.now - @pool.keys.each do |period| - if period.time < now - period.raise('execution expired') - cancel(period) - end - end - end - } - Thread.pass while thread.status != 'sleep' - thread - end - end - - class << self - # CAUTION: caller must aware of race condition. - def timeout_scheduler - @timeout_scheduler ||= TimeoutScheduler.new - end - end - timeout_scheduler # initialize at first time. - - module Timeout - def timeout(sec, ex = nil, &block) - return yield if sec == nil or sec.zero? - scheduler = nil - begin - scheduler = HTTPClient.timeout_scheduler - period = scheduler.register(Thread.current, sec, ex) - yield(sec) - ensure - scheduler.cancel(period) if scheduler and period - end - end - end - - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/util.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/util.rb deleted file mode 100644 index 4f13c6ec..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/httpclient/util.rb +++ /dev/null @@ -1,86 +0,0 @@ -# HTTPClient - HTTP client library. -# Copyright (C) 2000-2009 NAKAMURA, Hiroshi . -# -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -require 'uri' - - -class HTTPClient - - - # A module for common function. - module Util - # Keyword argument helper. - # args:: given arguments. - # *field:: a list of arguments to be extracted. - # - # You can extract 3 arguments (a, b, c) with: - # - # include Util - # def my_method(*args) - # a, b, c = keyword_argument(args, :a, :b, :c) - # ... - # end - # my_method(1, 2, 3) - # my_method(:b => 2, :a = 1) - # - # instead of; - # - # def my_method(a, b, c) - # ... - # end - # - def keyword_argument(args, *field) - if args.size == 1 and args[0].is_a?(Hash) - args[0].values_at(*field) - else - args - end - end - - # Gets an URI instance. - def urify(uri) - if uri.nil? - nil - elsif uri.is_a?(URI) - uri - else - URI.parse(uri.to_s) - end - end - - # Returns true if the given 2 URIs have a part_of relationship. - # * the same scheme - # * the same host String (no host resolution or IP-addr conversion) - # * the same port number - # * target URI's path starts with base URI's path. - def uri_part_of(uri, part) - ((uri.scheme == part.scheme) and - (uri.host == part.host) and - (uri.port == part.port) and - uri.path.upcase.index(part.path.upcase) == 0) - end - module_function :uri_part_of - - # Returns parent directory URI of the given URI. - def uri_dirname(uri) - uri = uri.clone - uri.path = uri.path.sub(/\/[^\/]*\z/, '/') - uri - end - module_function :uri_dirname - - # Finds a value of a Hash. - def hash_find_value(hash, &block) - v = hash.find(&block) - v ? v[1] : nil - end - module_function :hash_find_value - end - - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/tags b/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/tags deleted file mode 100644 index 6ca07f81..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/httpclient-2.1.5.2/lib/tags +++ /dev/null @@ -1,908 +0,0 @@ -::HTTP httpclient/http.rb /^module HTTP/ -::HTTP::Message httpclient/http.rb /^ class Message/ -::HTTP::Message#HTTP::Message.new httpclient/http.rb /^ def initialize/ -::HTTP::Message#body httpclient/http.rb /^ attr_reader :body/ -::HTTP::Message#body= httpclient/http.rb /^ def body=/ -::HTTP::Message#code httpclient/http.rb /^ alias code/ -::HTTP::Message#content httpclient/http.rb /^ def content/ -::HTTP::Message#contenttype httpclient/http.rb /^ def contenttype/ -::HTTP::Message#contenttype= httpclient/http.rb /^ def contenttype=/ -::HTTP::Message#dump httpclient/http.rb /^ def dump/ -::HTTP::Message#header httpclient/http.rb /^ attr_accessor :header/ -::HTTP::Message#peer_cert httpclient/http.rb /^ attr_accessor :peer_cert/ -::HTTP::Message#reason httpclient/http.rb /^ def reason/ -::HTTP::Message#reason= httpclient/http.rb /^ def reason=/ -::HTTP::Message#status httpclient/http.rb /^ def status/ -::HTTP::Message#status= httpclient/http.rb /^ def status=/ -::HTTP::Message#status_code httpclient/http.rb /^ alias status_code/ -::HTTP::Message#version httpclient/http.rb /^ def version/ -::HTTP::Message#version= httpclient/http.rb /^ def version=/ -::HTTP::Message.create_query_part_str httpclient/http.rb /^ def create_query_part_str/ -::HTTP::Message.escape httpclient/http.rb /^ def escape/ -::HTTP::Message.escape_query httpclient/http.rb /^ def escape_query/ -::HTTP::Message.file? httpclient/http.rb /^ def file?/ -::HTTP::Message.get_mime_type_func httpclient/http.rb /^ alias get_mime_type_func/ -::HTTP::Message.internal_mime_type httpclient/http.rb /^ def internal_mime_type/ -::HTTP::Message.keep_alive_enabled? httpclient/http.rb /^ def keep_alive_enabled?/ -::HTTP::Message.mime_type httpclient/http.rb /^ def mime_type/ -::HTTP::Message.mime_type_handler httpclient/http.rb /^ def mime_type_handler/ -::HTTP::Message.mime_type_handler= httpclient/http.rb /^ def mime_type_handler=/ -::HTTP::Message.multiparam_query? httpclient/http.rb /^ def multiparam_query?/ -::HTTP::Message.new_connect_request httpclient/http.rb /^ def new_connect_request/ -::HTTP::Message.new_request httpclient/http.rb /^ def new_request/ -::HTTP::Message.new_response httpclient/http.rb /^ def new_response/ -::HTTP::Message.set_mime_type_func httpclient/http.rb /^ alias set_mime_type_func/ -::HTTP::Message::Body httpclient/http.rb /^ class Body/ -::HTTP::Message::Body#HTTP::Message::Body.new httpclient/http.rb /^ def initialize/ -::HTTP::Message::Body#build_query_multipart_str httpclient/http.rb /^ def build_query_multipart_str/ -::HTTP::Message::Body#chunk_size httpclient/http.rb /^ attr_accessor :chunk_size/ -::HTTP::Message::Body#content httpclient/http.rb /^ def content/ -::HTTP::Message::Body#dump httpclient/http.rb /^ def dump/ -::HTTP::Message::Body#dump_chunk httpclient/http.rb /^ def dump_chunk/ -::HTTP::Message::Body#dump_chunk_size httpclient/http.rb /^ def dump_chunk_size/ -::HTTP::Message::Body#dump_chunked httpclient/http.rb /^ def dump_chunked/ -::HTTP::Message::Body#dump_chunks httpclient/http.rb /^ def dump_chunks/ -::HTTP::Message::Body#dump_last_chunk httpclient/http.rb /^ def dump_last_chunk/ -::HTTP::Message::Body#init_request httpclient/http.rb /^ def init_request/ -::HTTP::Message::Body#init_response httpclient/http.rb /^ def init_response/ -::HTTP::Message::Body#params_from_file httpclient/http.rb /^ def params_from_file/ -::HTTP::Message::Body#remember_pos httpclient/http.rb /^ def remember_pos/ -::HTTP::Message::Body#reset_pos httpclient/http.rb /^ def reset_pos/ -::HTTP::Message::Body#set_content httpclient/http.rb /^ def set_content/ -::HTTP::Message::Body#size httpclient/http.rb /^ attr_reader :size/ -::HTTP::Message::Body::Parts httpclient/http.rb /^ class Parts/ -::HTTP::Message::Body::Parts#HTTP::Message::Body::Parts.new httpclient/http.rb /^ def initialize/ -::HTTP::Message::Body::Parts#add httpclient/http.rb /^ def add/ -::HTTP::Message::Body::Parts#parts httpclient/http.rb /^ def parts/ -::HTTP::Message::Body::Parts#size httpclient/http.rb /^ attr_reader :size/ -::HTTP::Message::Headers httpclient/http.rb /^ class Headers/ -::HTTP::Message::Headers#HTTP::Message::Headers.new httpclient/http.rb /^ def initialize/ -::HTTP::Message::Headers#[] httpclient/http.rb /^ def []/ -::HTTP::Message::Headers#[]= httpclient/http.rb /^ def []=/ -::HTTP::Message::Headers#add httpclient/http.rb /^ def add/ -::HTTP::Message::Headers#all httpclient/http.rb /^ def all/ -::HTTP::Message::Headers#body_charset httpclient/http.rb /^ attr_accessor :body_charset # :nodoc:/ -::HTTP::Message::Headers#body_date httpclient/http.rb /^ attr_accessor :body_date # :nodoc:/ -::HTTP::Message::Headers#body_size httpclient/http.rb /^ attr_reader :body_size/ -::HTTP::Message::Headers#body_size= httpclient/http.rb /^ def body_size=/ -::HTTP::Message::Headers#body_type httpclient/http.rb /^ attr_accessor :body_type # :nodoc:/ -::HTTP::Message::Headers#charset_label httpclient/http.rb /^ def charset_label/ -::HTTP::Message::Headers#chunked httpclient/http.rb /^ attr_accessor :chunked/ -::HTTP::Message::Headers#contenttype httpclient/http.rb /^ def contenttype/ -::HTTP::Message::Headers#contenttype= httpclient/http.rb /^ def contenttype=/ -::HTTP::Message::Headers#create_query_uri httpclient/http.rb /^ def create_query_uri/ -::HTTP::Message::Headers#delete httpclient/http.rb /^ def delete/ -::HTTP::Message::Headers#dump httpclient/http.rb /^ def dump/ -::HTTP::Message::Headers#get httpclient/http.rb /^ def get/ -::HTTP::Message::Headers#http_version httpclient/http.rb /^ attr_accessor :http_version/ -::HTTP::Message::Headers#init_connect_request httpclient/http.rb /^ def init_connect_request/ -::HTTP::Message::Headers#init_request httpclient/http.rb /^ def init_request/ -::HTTP::Message::Headers#init_response httpclient/http.rb /^ def init_response/ -::HTTP::Message::Headers#reason_phrase httpclient/http.rb /^ attr_accessor :reason_phrase/ -::HTTP::Message::Headers#request_line httpclient/http.rb /^ def request_line/ -::HTTP::Message::Headers#request_method httpclient/http.rb /^ attr_reader :request_method/ -::HTTP::Message::Headers#request_query httpclient/http.rb /^ attr_accessor :request_query/ -::HTTP::Message::Headers#request_uri httpclient/http.rb /^ attr_accessor :request_uri/ -::HTTP::Message::Headers#request_via_proxy httpclient/http.rb /^ attr_accessor :request_via_proxy/ -::HTTP::Message::Headers#response_status_line httpclient/http.rb /^ def response_status_line/ -::HTTP::Message::Headers#set httpclient/http.rb /^ def set/ -::HTTP::Message::Headers#set_header httpclient/http.rb /^ def set_header/ -::HTTP::Message::Headers#set_request_header httpclient/http.rb /^ def set_request_header/ -::HTTP::Message::Headers#set_response_header httpclient/http.rb /^ def set_response_header/ -::HTTP::Message::Headers#status_code httpclient/http.rb /^ attr_reader :status_code/ -::HTTP::Message::Headers#status_code= httpclient/http.rb /^ def status_code=/ -::HTTP::Status httpclient/http.rb /^ module Status/ -::HTTP::Status.redirect? httpclient/http.rb /^ def self.redirect?/ -::HTTP::Status.successful? httpclient/http.rb /^ def self.successful?/ -::HTTPClient httpclient.rb /^class HTTPClient/ -::HTTPClient httpclient/auth.rb /^class HTTPClient/ -::HTTPClient httpclient/connection.rb /^class HTTPClient/ -::HTTPClient httpclient/session.rb /^class HTTPClient/ -::HTTPClient httpclient/ssl_config.rb /^class HTTPClient/ -::HTTPClient httpclient/timeout.rb /^class HTTPClient/ -::HTTPClient httpclient/util.rb /^class HTTPClient/ -::HTTPClient#HTTPClient.new httpclient.rb /^ def initialize/ -::HTTPClient#cookie_manager httpclient.rb /^ attr_accessor :cookie_manager/ -::HTTPClient#create_boundary httpclient.rb /^ def create_boundary/ -::HTTPClient#create_request httpclient.rb /^ def create_request/ -::HTTPClient#debug_dev httpclient.rb /^ def debug_dev/ -::HTTPClient#debug_dev= httpclient.rb /^ def debug_dev=/ -::HTTPClient#default_redirect_uri_callback httpclient.rb /^ def default_redirect_uri_callback/ -::HTTPClient#delete httpclient.rb /^ def delete/ -::HTTPClient#delete_async httpclient.rb /^ def delete_async/ -::HTTPClient#do_get_block httpclient.rb /^ def do_get_block/ -::HTTPClient#do_get_header httpclient.rb /^ def do_get_header/ -::HTTPClient#do_get_stream httpclient.rb /^ def do_get_stream/ -::HTTPClient#do_request httpclient.rb /^ def do_request/ -::HTTPClient#do_request_async httpclient.rb /^ def do_request_async/ -::HTTPClient#dump_dummy_request_response httpclient.rb /^ def dump_dummy_request_response/ -::HTTPClient#file_in_form_data? httpclient.rb /^ def file_in_form_data?/ -::HTTPClient#follow_redirect httpclient.rb /^ def follow_redirect/ -::HTTPClient#follow_redirect_count httpclient.rb /^ attr_accessor :follow_redirect_count/ -::HTTPClient#get httpclient.rb /^ def get/ -::HTTPClient#get_async httpclient.rb /^ def get_async/ -::HTTPClient#get_content httpclient.rb /^ def get_content/ -::HTTPClient#getenv httpclient.rb /^ def getenv/ -::HTTPClient#head httpclient.rb /^ def head/ -::HTTPClient#head_async httpclient.rb /^ def head_async/ -::HTTPClient#https? httpclient.rb /^ def https?/ -::HTTPClient#load_environment httpclient.rb /^ def load_environment/ -::HTTPClient#no_proxy httpclient.rb /^ def no_proxy/ -::HTTPClient#no_proxy= httpclient.rb /^ def no_proxy=/ -::HTTPClient#no_proxy? httpclient.rb /^ def no_proxy?/ -::HTTPClient#options httpclient.rb /^ def options/ -::HTTPClient#options_async httpclient.rb /^ def options_async/ -::HTTPClient#override_header httpclient.rb /^ def override_header/ -::HTTPClient#post httpclient.rb /^ def post/ -::HTTPClient#post_async httpclient.rb /^ def post_async/ -::HTTPClient#post_content httpclient.rb /^ def post_content/ -::HTTPClient#propfind httpclient.rb /^ def propfind/ -::HTTPClient#propfind_async httpclient.rb /^ def propfind_async/ -::HTTPClient#proppatch httpclient.rb /^ def proppatch/ -::HTTPClient#proppatch_async httpclient.rb /^ def proppatch_async/ -::HTTPClient#protect_keep_alive_disconnected httpclient.rb /^ def protect_keep_alive_disconnected/ -::HTTPClient#proxy httpclient.rb /^ def proxy/ -::HTTPClient#proxy= httpclient.rb /^ def proxy=/ -::HTTPClient#proxy_auth httpclient.rb /^ attr_reader :proxy_auth/ -::HTTPClient#put httpclient.rb /^ def put/ -::HTTPClient#put_async httpclient.rb /^ def put_async/ -::HTTPClient#redirect_uri_callback= httpclient.rb /^ def redirect_uri_callback=/ -::HTTPClient#request httpclient.rb /^ def request/ -::HTTPClient#request_async httpclient.rb /^ def request_async/ -::HTTPClient#request_filter httpclient.rb /^ attr_reader :request_filter/ -::HTTPClient#reset httpclient.rb /^ def reset/ -::HTTPClient#reset_all httpclient.rb /^ def reset_all/ -::HTTPClient#save_cookie_store httpclient.rb /^ def save_cookie_store/ -::HTTPClient#set_auth httpclient.rb /^ def set_auth/ -::HTTPClient#set_basic_auth httpclient.rb /^ def set_basic_auth/ -::HTTPClient#set_cookie_store httpclient.rb /^ def set_cookie_store/ -::HTTPClient#set_proxy_auth httpclient.rb /^ def set_proxy_auth/ -::HTTPClient#ssl_config httpclient.rb /^ attr_reader :ssl_config/ -::HTTPClient#strict_redirect_uri_callback httpclient.rb /^ def strict_redirect_uri_callback/ -::HTTPClient#test_loopback_response httpclient.rb /^ attr_reader :test_loopback_response/ -::HTTPClient#trace httpclient.rb /^ def trace/ -::HTTPClient#trace_async httpclient.rb /^ def trace_async/ -::HTTPClient#www_auth httpclient.rb /^ attr_reader :www_auth/ -::HTTPClient.attr_proxy httpclient.rb /^ def attr_proxy/ -::HTTPClient.timeout_scheduler httpclient/timeout.rb /^ def timeout_scheduler/ -::HTTPClient::AuthFilterBase httpclient/auth.rb /^ class AuthFilterBase/ -::HTTPClient::AuthFilterBase#parse_authentication_header httpclient/auth.rb /^ def parse_authentication_header/ -::HTTPClient::AuthFilterBase#parse_challenge_header httpclient/auth.rb /^ def parse_challenge_header/ -::HTTPClient::BadResponseError httpclient.rb /^ class BadResponseError/ -::HTTPClient::BadResponseError#HTTPClient::BadResponseError.new httpclient.rb /^ def initialize/ -::HTTPClient::BadResponseError#res httpclient.rb /^ attr_reader :res/ -::HTTPClient::BasicAuth httpclient/auth.rb /^ class BasicAuth/ -::HTTPClient::BasicAuth#HTTPClient::BasicAuth.new httpclient/auth.rb /^ def initialize/ -::HTTPClient::BasicAuth#challenge httpclient/auth.rb /^ def challenge/ -::HTTPClient::BasicAuth#get httpclient/auth.rb /^ def get/ -::HTTPClient::BasicAuth#reset_challenge httpclient/auth.rb /^ def reset_challenge/ -::HTTPClient::BasicAuth#scheme httpclient/auth.rb /^ attr_reader :scheme/ -::HTTPClient::BasicAuth#set httpclient/auth.rb /^ def set/ -::HTTPClient::ConfigurationError httpclient.rb /^ class ConfigurationError/ -::HTTPClient::ConnectTimeoutError httpclient.rb /^ class ConnectTimeoutError/ -::HTTPClient::Connection httpclient/connection.rb /^ class Connection/ -::HTTPClient::Connection#HTTPClient::Connection.new httpclient/connection.rb /^ def initialize/ -::HTTPClient::Connection#async_thread httpclient/connection.rb /^ attr_accessor :async_thread/ -::HTTPClient::Connection#finished? httpclient/connection.rb /^ def finished?/ -::HTTPClient::Connection#join httpclient/connection.rb /^ def join/ -::HTTPClient::Connection#pop httpclient/connection.rb /^ def pop/ -::HTTPClient::Connection#push httpclient/connection.rb /^ def push/ -::HTTPClient::DebugSocket httpclient/session.rb /^ module DebugSocket/ -::HTTPClient::DebugSocket#<< httpclient/session.rb /^ def < to make json/pure - work in environments that don't provide iconv. - * Applied patch by okkez_ in order to fix Ruby Bug #1768: - http://redmine.ruby-lang.org/issues/show/1768. - * Finally got around to avoid the rather paranoid escaping of ?/ characters - in the generator's output. The parsers aren't affected by this change. - Thanks to Rich Apodaca for the suggestion. -2009-06-29 (1.1.7) - * Security Fix for JSON::Pure::Parser. A specially designed string could - cause catastrophic backtracking in one of the parser's regular expressions - in earlier 1.1.x versions. JSON::Ext::Parser isn't affected by this issue. - Thanks to Bartosz Blimke for reporting this - problem. - * This release also uses a less strict ruby version requirement for the - creation of the mswin32 native gem. -2009-05-10 (1.1.6) - * No changes. І tested native linux gems in the last release and they don't - play well with different ruby versions other than the one the gem was built - with. This release is just to bump the version number in order to skip the - native gem on rubyforge. -2009-05-10 (1.1.5) - * Started to build gems with rake-compiler gem. - * Applied patch object/array class patch from Brian Candler - and fixes. -2009-04-01 (1.1.4) - * Fixed a bug in the creation of serialized generic rails objects reported by - Friedrich Graeter . - * Deleted tests/runner.rb, we're using testrb instead. - * Editor supports Infinity in numbers now. - * Made some changes in order to get the library to compile/run under Ruby - 1.9. - * Improved speed of the code path for the fast_generate method in the pure - variant. -2008-07-10 (1.1.3) - * Wesley Beary reported a bug in json/add/core's DateTime - handling: If the nominator and denominator of the offset were divisible by - each other Ruby's Rational#to_s returns them as an integer not a fraction - with '/'. This caused a ZeroDivisionError during parsing. - * Use Date#start and DateTime#start instead of sg method, while - remaining backwards compatible. - * Supports ragel >= 6.0 now. - * Corrected some tests. - * Some minor changes. -2007-11-27 (1.1.2) - * Remember default dir (last used directory) in editor. - * JSON::Editor.edit method added, the editor can now receive json texts from - the clipboard via C-v. - * Load json texts from an URL pasted via middle button press. - * Added :create_additions option to Parser. This makes it possible to disable - the creation of additions by force, in order to treat json texts as data - while having additions loaded. - * Jacob Maine reported, that JSON(:foo) outputs a JSON - object if the rails addition is enabled, which is wrong. It now outputs a - JSON string "foo" instead, like suggested by Jacob Maine. - * Discovered a bug in the Ruby Bugs Tracker on rubyforge, that was reported - by John Evans lgastako@gmail.com. He could produce a crash in the JSON - generator by returning something other than a String instance from a - to_json method. I now guard against this by doing a rather crude type - check, which raises an exception instead of crashing. -2007-07-06 (1.1.1) - * Yui NARUSE sent some patches to fix tests for Ruby - 1.9. I applied them and adapted some of them a bit to run both on 1.8 and - 1.9. - * Introduced a JSON.parse! method without depth checking for people who like - danger. - * Made generate and pretty_generate methods configurable by an options hash. - * Added :allow_nan option to parser and generator in order to handle NaN, - Infinity, and -Infinity correctly - if requested. Floats, which aren't numbers, - aren't valid JSON according to RFC4627, so by default an exception will be - raised if any of these symbols are encountered. Thanks to Andrea Censi - for his hint about this. - * Fixed some more tests for Ruby 1.9. - * Implemented dump/load interface of Marshal as suggested in ruby-core:11405 - by murphy . - * Implemented the max_nesting feature for generate methods, too. - * Added some implementations for ruby core's custom objects for - serialisation/deserialisation purposes. -2007-05-21 (1.1.0) - * Implemented max_nesting feature for parser to avoid stack overflows for - data from untrusted sources. If you trust the source, you can disable it - with the option max_nesting => false. - * Piers Cawley reported a bug, that not every - character can be escaped by ?\ as required by RFC4627. There's a - contradiction between David Crockford's JSON checker test vectors (in - tests/fixtures) and RFC4627, though. I decided to stick to the RFC, because - the JSON checker seems to be a bit older than the RFC. - * Extended license to Ruby License, which includes the GPL. - * Added keyboard shortcuts, and 'Open location' menu item to edit_json.rb. -2007-05-09 (1.0.4) - * Applied a patch from Yui NARUSE to make JSON compile - under Ruby 1.9. Thank you very much for mailing it to me! - * Made binary variants of JSON fail early, instead of falling back to the - pure version. This should avoid overshadowing of eventual problems while - loading of the binary. -2007-03-24 (1.0.3) - * Improved performance of pure variant a bit. - * The ext variant of this release supports the mswin32 platform. Ugh! -2007-03-24 (1.0.2) - * Ext Parser didn't parse 0e0 correctly into 0.0: Fixed! -2007-03-24 (1.0.1) - * Forgot some object files in the build dir. I really like that - not! -2007-03-24 (1.0.0) - * Added C implementations for the JSON generator and a ragel based JSON - parser in C. - * Much more tests, especially fixtures from json.org. - * Further improved conformance to RFC4627. -2007-02-09 (0.4.3) - * Conform more to RFC4627 for JSON: This means JSON strings - now always must contain exactly one object "{ ... }" or array "[ ... ]" in - order to be parsed without raising an exception. The definition of what - constitutes a whitespace is narrower in JSON than in Ruby ([ \t\r\n]), and - there are differences in floats and integers (no octals or hexadecimals) as - well. - * Added aliases generate and pretty_generate of unparse and pretty_unparse. - * Fixed a test case. - * Catch an Iconv::InvalidEncoding exception, that seems to occur on some Sun - boxes with SunOS 5.8, if iconv doesn't support utf16 conversions. This was - reported by Andrew R Jackson , thanks a bunch! -2006-08-25 (0.4.2) - * Fixed a bug in handling solidi (/-characters), that was reported by - Kevin Gilpin . -2006-02-06 (0.4.1) - * Fixed a bug related to escaping with backslashes. Thanks for the report go - to Florian Munz . -2005-09-23 (0.4.0) - * Initial Rubyforge Version diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/COPYING b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/COPYING deleted file mode 100644 index c3a2126d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/COPYING +++ /dev/null @@ -1,58 +0,0 @@ -Ruby is copyrighted free software by Yukihiro Matsumoto . -You can redistribute it and/or modify it under either the terms of the GPL -(see GPL file), or the conditions below: - - 1. You may make and give away verbatim copies of the source form of the - software without restriction, provided that you duplicate all of the - original copyright notices and associated disclaimers. - - 2. You may modify your copy of the software in any way, provided that - you do at least ONE of the following: - - a) place your modifications in the Public Domain or otherwise - make them Freely Available, such as by posting said - modifications to Usenet or an equivalent medium, or by allowing - the author to include your modifications in the software. - - b) use the modified software only within your corporation or - organization. - - c) rename any non-standard executables so the names do not conflict - with standard executables, which must also be provided. - - d) make other distribution arrangements with the author. - - 3. You may distribute the software in object code or executable - form, provided that you do at least ONE of the following: - - a) distribute the executables and library files of the software, - together with instructions (in the manual page or equivalent) - on where to get the original distribution. - - b) accompany the distribution with the machine-readable source of - the software. - - c) give non-standard executables non-standard names, with - instructions on where to get the original software distribution. - - d) make other distribution arrangements with the author. - - 4. You may modify and include the part of the software into any other - software (possibly commercial). But some files in the distribution - are not written by the author, so that they are not under this terms. - - They are gc.c(partly), utils.c(partly), regex.[ch], st.[ch] and some - files under the ./missing directory. See each file for the copying - condition. - - 5. The scripts and library files supplied as input to or produced as - output from the software do not automatically fall under the - copyright of the software, but belong to whomever generated them, - and may be sold commercially, and may be aggregated with this - software. - - 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE. - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/GPL b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/GPL deleted file mode 100644 index db2fc450..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/GPL +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/README b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/README deleted file mode 100644 index 2dd55e2d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/README +++ /dev/null @@ -1,360 +0,0 @@ -== json - JSON Implementation for Ruby - -=== Description - -This is a implementation of the JSON specification according to RFC 4627 -(http://www.ietf.org/rfc/rfc4627.txt). Starting from version 1.0.0 on there -will be two variants available: - -* A pure ruby variant, that relies on the iconv and the stringscan - extensions, which are both part of the ruby standard library. -* The quite a bit faster C extension variant, which is in parts implemented - in C and comes with its own unicode conversion functions and a parser - generated by the ragel state machine compiler - (http://www.cs.queensu.ca/~thurston/ragel). - -Both variants of the JSON generator escape all non-ASCII and control characters -with \uXXXX escape sequences, and support UTF-16 surrogate pairs in order to be -able to generate the whole range of unicode code points. This means that -generated JSON document is encoded as UTF-8 (because ASCII is a subset of -UTF-8) and at the same time avoids decoding problems for receiving endpoints, -that don't expect UTF-8 encoded texts. On the negative side this may lead to a -bit longer strings than necessarry. - -All strings, that are to be encoded as JSON strings, should be UTF-8 byte -sequences on the Ruby side. To encode raw binary strings, that aren't UTF-8 -encoded, please use the to_json_raw_object method of String (which produces -an object, that contains a byte array) and decode the result on the receiving -endpoint. - -The JSON parsers can parse UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, and UTF-32LE -JSON documents under Ruby 1.8. Under Ruby 1.9 they take advantage of Ruby's -M17n features and can parse all documents which have the correct -String#encoding set. If a document string has ASCII-8BIT as an encoding the -parser attempts to figure out which of the UTF encodings from above it is and -trys to parse it. - -=== Installation - -It's recommended to use the extension variant of JSON, because it's faster than -the pure ruby variant. If you cannot build it on your system, you can settle -for the latter. - -Just type into the command line as root: - - # rake install - -The above command will build the extensions and install them on your system. - - # rake install_pure - -or - - # ruby install.rb - -will just install the pure ruby implementation of JSON. - -If you use Rubygems you can type - - # gem install json - -instead, to install the newest JSON version. - -There is also a pure ruby json only variant of the gem, that can be installed -with: - - # gem install json_pure - -=== Compiling the extensions yourself - -If you want to build the extensions yourself you need rake: - - You can get it from rubyforge: - http://rubyforge.org/projects/rake - - or just type - - # gem install rake - - for the installation via rubygems. - -If you want to create the parser.c file from its parser.rl file or draw nice -graphviz images of the state machines, you need ragel from: http://www.cs.queensu.ca/~thurston/ragel - - -=== Usage - -To use JSON you can - require 'json' -to load the installed variant (either the extension 'json' or the pure -variant 'json_pure'). If you have installed the extension variant, you can -pick either the extension variant or the pure variant by typing - require 'json/ext' -or - require 'json/pure' - -Now you can parse a JSON document into a ruby data structure by calling - - JSON.parse(document) - -If you want to generate a JSON document from a ruby data structure call - JSON.generate(data) - -You can also use the pretty_generate method (which formats the output more -verbosely and nicely) or fast_generate (which doesn't do any of the security -checks generate performs, e. g. nesting deepness checks). - -To create a valid JSON document you have to make sure, that the output is -embedded in either a JSON array [] or a JSON object {}. The easiest way to do -this, is by putting your values in a Ruby Array or Hash instance. - -There are also the JSON and JSON[] methods which use parse on a String or -generate a JSON document from an array or hash: - - document = JSON 'test' => 23 # => "{\"test\":23}" - document = JSON['test'] => 23 # => "{\"test\":23}" - -and - - data = JSON '{"test":23}' # => {"test"=>23} - data = JSON['{"test":23}'] # => {"test"=>23} - -You can choose to load a set of common additions to ruby core's objects if -you - require 'json/add/core' - -After requiring this you can, e. g., serialise/deserialise Ruby ranges: - - JSON JSON(1..10) # => 1..10 - -To find out how to add JSON support to other or your own classes, read the -section "More Examples" below. - -To get the best compatibility to rails' JSON implementation, you can - require 'json/add/rails' - -Both of the additions attempt to require 'json' (like above) first, if it has -not been required yet. - -=== More Examples - -To create a JSON document from a ruby data structure, you can call -JSON.generate like that: - - json = JSON.generate [1, 2, {"a"=>3.141}, false, true, nil, 4..10] - # => "[1,2,{\"a\":3.141},false,true,null,\"4..10\"]" - -To get back a ruby data structure from a JSON document, you have to call -JSON.parse on it: - - JSON.parse json - # => [1, 2, {"a"=>3.141}, false, true, nil, "4..10"] - -Note, that the range from the original data structure is a simple -string now. The reason for this is, that JSON doesn't support ranges -or arbitrary classes. In this case the json library falls back to call -Object#to_json, which is the same as #to_s.to_json. - -It's possible to add JSON support serialization to arbitrary classes by -simply implementing a more specialized version of the #to_json method, that -should return a JSON object (a hash converted to JSON with #to_json) like -this (don't forget the *a for all the arguments): - - class Range - def to_json(*a) - { - 'json_class' => self.class.name, # = 'Range' - 'data' => [ first, last, exclude_end? ] - }.to_json(*a) - end - end - -The hash key 'json_class' is the class, that will be asked to deserialise the -JSON representation later. In this case it's 'Range', but any namespace of -the form 'A::B' or '::A::B' will do. All other keys are arbitrary and can be -used to store the necessary data to configure the object to be deserialised. - -If a the key 'json_class' is found in a JSON object, the JSON parser checks -if the given class responds to the json_create class method. If so, it is -called with the JSON object converted to a Ruby hash. So a range can -be deserialised by implementing Range.json_create like this: - - class Range - def self.json_create(o) - new(*o['data']) - end - end - -Now it possible to serialise/deserialise ranges as well: - - json = JSON.generate [1, 2, {"a"=>3.141}, false, true, nil, 4..10] - # => "[1,2,{\"a\":3.141},false,true,null,{\"json_class\":\"Range\",\"data\":[4,10,false]}]" - JSON.parse json - # => [1, 2, {"a"=>3.141}, false, true, nil, 4..10] - -JSON.generate always creates the shortest possible string representation of a -ruby data structure in one line. This is good for data storage or network -protocols, but not so good for humans to read. Fortunately there's also -JSON.pretty_generate (or JSON.pretty_generate) that creates a more readable -output: - - puts JSON.pretty_generate([1, 2, {"a"=>3.141}, false, true, nil, 4..10]) - [ - 1, - 2, - { - "a": 3.141 - }, - false, - true, - null, - { - "json_class": "Range", - "data": [ - 4, - 10, - false - ] - } - ] - -There are also the methods Kernel#j for generate, and Kernel#jj for -pretty_generate output to the console, that work analogous to Core Ruby's p and -the pp library's pp methods. - -The script tools/server.rb contains a small example if you want to test, how -receiving a JSON object from a webrick server in your browser with the -javasript prototype library (http://www.prototypejs.org) works. - -=== Speed Comparisons - -I have created some benchmark results (see the benchmarks/data-p4-3Ghz -subdir of the package) for the JSON-parser to estimate the speed up in the C -extension: - - Comparing times (call_time_mean): - 1 ParserBenchmarkExt#parser 900 repeats: - 553.922304770 ( real) -> 21.500x - 0.001805307 - 2 ParserBenchmarkYAML#parser 1000 repeats: - 224.513358139 ( real) -> 8.714x - 0.004454078 - 3 ParserBenchmarkPure#parser 1000 repeats: - 26.755020642 ( real) -> 1.038x - 0.037376163 - 4 ParserBenchmarkRails#parser 1000 repeats: - 25.763381731 ( real) -> 1.000x - 0.038814780 - calls/sec ( time) -> speed covers - secs/call - -In the table above 1 is JSON::Ext::Parser, 2 is YAML.load with YAML -compatbile JSON document, 3 is is JSON::Pure::Parser, and 4 is -ActiveSupport::JSON.decode. The ActiveSupport JSON-decoder converts the -input first to YAML and then uses the YAML-parser, the conversion seems to -slow it down so much that it is only as fast as the JSON::Pure::Parser! - -If you look at the benchmark data you can see that this is mostly caused by -the frequent high outliers - the median of the Rails-parser runs is still -overall smaller than the median of the JSON::Pure::Parser runs: - - Comparing times (call_time_median): - 1 ParserBenchmarkExt#parser 900 repeats: - 800.592479481 ( real) -> 26.936x - 0.001249075 - 2 ParserBenchmarkYAML#parser 1000 repeats: - 271.002390644 ( real) -> 9.118x - 0.003690004 - 3 ParserBenchmarkRails#parser 1000 repeats: - 30.227910865 ( real) -> 1.017x - 0.033082008 - 4 ParserBenchmarkPure#parser 1000 repeats: - 29.722384421 ( real) -> 1.000x - 0.033644676 - calls/sec ( time) -> speed covers - secs/call - -I have benchmarked the JSON-Generator as well. This generated a few more -values, because there are different modes that also influence the achieved -speed: - - Comparing times (call_time_mean): - 1 GeneratorBenchmarkExt#generator_fast 1000 repeats: - 547.354332608 ( real) -> 15.090x - 0.001826970 - 2 GeneratorBenchmarkExt#generator_safe 1000 repeats: - 443.968212317 ( real) -> 12.240x - 0.002252414 - 3 GeneratorBenchmarkExt#generator_pretty 900 repeats: - 375.104545883 ( real) -> 10.341x - 0.002665923 - 4 GeneratorBenchmarkPure#generator_fast 1000 repeats: - 49.978706968 ( real) -> 1.378x - 0.020008521 - 5 GeneratorBenchmarkRails#generator 1000 repeats: - 38.531868759 ( real) -> 1.062x - 0.025952543 - 6 GeneratorBenchmarkPure#generator_safe 1000 repeats: - 36.927649925 ( real) -> 1.018x 7 (>=3859) - 0.027079979 - 7 GeneratorBenchmarkPure#generator_pretty 1000 repeats: - 36.272134441 ( real) -> 1.000x 6 (>=3859) - 0.027569373 - calls/sec ( time) -> speed covers - secs/call - -In the table above 1-3 are JSON::Ext::Generator methods. 4, 6, and 7 are -JSON::Pure::Generator methods and 5 is the Rails JSON generator. It is now a -bit faster than the generator_safe and generator_pretty methods of the pure -variant but slower than the others. - -To achieve the fastest JSON document output, you can use the fast_generate -method. Beware, that this will disable the checking for circular Ruby data -structures, which may cause JSON to go into an infinite loop. - -Here are the median comparisons for completeness' sake: - - Comparing times (call_time_median): - 1 GeneratorBenchmarkExt#generator_fast 1000 repeats: - 708.258020939 ( real) -> 16.547x - 0.001411915 - 2 GeneratorBenchmarkExt#generator_safe 1000 repeats: - 569.105020353 ( real) -> 13.296x - 0.001757145 - 3 GeneratorBenchmarkExt#generator_pretty 900 repeats: - 482.825371244 ( real) -> 11.280x - 0.002071142 - 4 GeneratorBenchmarkPure#generator_fast 1000 repeats: - 62.717626652 ( real) -> 1.465x - 0.015944481 - 5 GeneratorBenchmarkRails#generator 1000 repeats: - 43.965681162 ( real) -> 1.027x - 0.022745013 - 6 GeneratorBenchmarkPure#generator_safe 1000 repeats: - 43.929073409 ( real) -> 1.026x 7 (>=3859) - 0.022763968 - 7 GeneratorBenchmarkPure#generator_pretty 1000 repeats: - 42.802514491 ( real) -> 1.000x 6 (>=3859) - 0.023363113 - calls/sec ( time) -> speed covers - secs/call - -=== Author - -Florian Frank - -=== License - -Ruby License, see the COPYING file included in the source distribution. The -Ruby License includes the GNU General Public License (GPL), Version 2, so see -the file GPL as well. - -=== Download - -The latest version of this library can be downloaded at - -* http://rubyforge.org/frs?group_id=953 - -Online Documentation should be located at - -* http://json.rubyforge.org diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/Rakefile deleted file mode 100644 index e2f950c5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/Rakefile +++ /dev/null @@ -1,287 +0,0 @@ -begin - require 'rake/gempackagetask' -rescue LoadError -end - -begin - require 'rake/extensiontask' -rescue LoadError - puts "WARNING: rake-compiler is not installed. You will not be able to build the json gem until you install it." -end - -require 'rake/clean' -CLOBBER.include Dir['benchmarks/data/*.{dat,log}'] - -require 'rbconfig' -include Config - -MAKE = ENV['MAKE'] || %w[gmake make].find { |c| system(c, '-v') } -PKG_NAME = 'json' -PKG_VERSION = File.read('VERSION').chomp -PKG_FILES = FileList["**/*"].exclude(/CVS|pkg|tmp|coverage|Makefile|\.nfs\./).exclude(/\.(so|bundle|o|#{CONFIG['DLEXT']})$/) -EXT_ROOT_DIR = 'ext/json/ext' -EXT_PARSER_DIR = "#{EXT_ROOT_DIR}/parser" -EXT_PARSER_DL = "#{EXT_ROOT_DIR}/parser.#{CONFIG['DLEXT']}" -EXT_PARSER_SRC = "#{EXT_PARSER_DIR}/parser.c" -PKG_FILES << EXT_PARSER_SRC -EXT_GENERATOR_DIR = "#{EXT_ROOT_DIR}/generator" -EXT_GENERATOR_DL = "#{EXT_ROOT_DIR}/generator.#{CONFIG['DLEXT']}" -EXT_GENERATOR_SRC = "#{EXT_GENERATOR_DIR}/generator.c" -RAGEL_CODEGEN = %w[rlcodegen rlgen-cd ragel].find { |c| system(c, '-v') } -RAGEL_DOTGEN = %w[rlgen-dot rlgen-cd ragel].find { |c| system(c, '-v') } -RAGEL_PATH = "#{EXT_PARSER_DIR}/parser.rl" -CLEAN.include FileList['diagrams/*.*'], 'doc', 'coverage', 'tmp', - FileList["ext/**/{Makefile,mkmf.log}"], - FileList["{ext,lib}/**/*.{so,bundle,#{CONFIG['DLEXT']},o,obj,pdb,lib,manifest,exp,def}"] - -def myruby(*args, &block) - @myruby ||= File.join(CONFIG['bindir'], CONFIG['ruby_install_name']) - options = (Hash === args.last) ? args.pop : {} - if args.length > 1 then - sh(*([@myruby] + args + [options]), &block) - else - sh("#{@myruby} #{args.first}", options, &block) - end -end - -desc "Installing library (pure)" -task :install_pure => :version do - myruby 'install.rb' -end - -task :install_ext_really do - sitearchdir = CONFIG["sitearchdir"] - cd 'ext' do - for file in Dir["json/ext/*.#{CONFIG['DLEXT']}"] - d = File.join(sitearchdir, file) - mkdir_p File.dirname(d) - install(file, d) - end - end -end - -desc "Installing library (extension)" -task :install_ext => [ :compile_ext, :install_pure, :install_ext_really ] - -desc "Installing library (extension)" -if RUBY_PLATFORM =~ /java/ - task :install => :install_pure -else - task :install => :install_ext -end - -desc "Compiling extension" -task :compile_ext => [ EXT_PARSER_DL, EXT_GENERATOR_DL ] - -file EXT_PARSER_DL => EXT_PARSER_SRC do - cd EXT_PARSER_DIR do - myruby 'extconf.rb' - sh MAKE - end - cp "#{EXT_PARSER_DIR}/parser.#{CONFIG['DLEXT']}", EXT_ROOT_DIR -end - -file EXT_GENERATOR_DL => EXT_GENERATOR_SRC do - cd EXT_GENERATOR_DIR do - myruby 'extconf.rb' - sh MAKE - end - cp "#{EXT_GENERATOR_DIR}/generator.#{CONFIG['DLEXT']}", EXT_ROOT_DIR -end - -desc "Generate parser with ragel" -task :ragel => EXT_PARSER_SRC - -task :ragel_clean do - rm_rf EXT_PARSER_SRC -end - -file EXT_PARSER_SRC => RAGEL_PATH do - cd EXT_PARSER_DIR do - if RAGEL_CODEGEN == 'ragel' - sh "ragel parser.rl -G2 -o parser.c" - else - sh "ragel -x parser.rl | #{RAGEL_CODEGEN} -G2" - end - end -end - -desc "Generate diagrams of ragel parser (ps)" -task :ragel_dot_ps do - root = 'diagrams' - specs = [] - File.new(RAGEL_PATH).grep(/^\s*machine\s*(\S+);\s*$/) { specs << $1 } - for s in specs - if RAGEL_DOTGEN == 'ragel' - sh "ragel #{RAGEL_PATH} -S#{s} -p -V | dot -Tps -o#{root}/#{s}.ps" - else - sh "ragel -x #{RAGEL_PATH} -S#{s} | #{RAGEL_DOTGEN} -p|dot -Tps -o#{root}/#{s}.ps" - end - end -end - -desc "Generate diagrams of ragel parser (png)" -task :ragel_dot_png do - root = 'diagrams' - specs = [] - File.new(RAGEL_PATH).grep(/^\s*machine\s*(\S+);\s*$/) { specs << $1 } - for s in specs - if RAGEL_DOTGEN == 'ragel' - sh "ragel #{RAGEL_PATH} -S#{s} -p -V | dot -Tpng -o#{root}/#{s}.png" - else - sh "ragel -x #{RAGEL_PATH} -S#{s} | #{RAGEL_DOTGEN} -p|dot -Tpng -o#{root}/#{s}.png" - end - end -end - -desc "Generate diagrams of ragel parser" -task :ragel_dot => [ :ragel_dot_png, :ragel_dot_ps ] - -desc "Testing library (pure ruby)" -task :test_pure => :clean do - ENV['JSON'] = 'pure' - ENV['RUBYOPT'] = "-Iext:lib #{ENV['RUBYOPT']}" - myruby "-S testrb #{Dir['./tests/*.rb'] * ' '}" -end - -desc "Testing library (extension)" -task :test_ext => :compile_ext do - ENV['JSON'] = 'ext' - ENV['RUBYOPT'] = "-Iext:lib #{ENV['RUBYOPT']}" - myruby "-S testrb #{Dir['./tests/*.rb'] * ' '}" -end - -desc "Testing library (pure ruby and extension)" -task :test => [ :test_pure, :test_ext ] - -desc "Benchmarking parser" -task :benchmark_parser do - ENV['RUBYOPT'] = "-Ilib:ext #{ENV['RUBYOPT']}" - myruby 'benchmarks/parser_benchmark.rb' -end - -desc "Benchmarking generator" -task :benchmark_generator do - ENV['RUBYOPT'] = "-Ilib:ext #{ENV['RUBYOPT']}" - myruby 'benchmarks/generator_benchmark.rb' -end - -desc "Benchmarking library" -task :benchmark => [ :benchmark_parser, :benchmark_generator ] - -desc "Create RDOC documentation" -task :doc => [ :version, EXT_PARSER_SRC ] do - sh "rdoc -o doc -m README README lib/json.rb #{FileList['lib/json/**/*.rb']} #{EXT_PARSER_SRC} #{EXT_GENERATOR_SRC}" -end - -if defined?(Gem) and defined?(Rake::GemPackageTask) and defined?(Rake::ExtensionTask) - spec_pure = Gem::Specification.new do |s| - s.name = 'json_pure' - s.version = PKG_VERSION - s.summary = "A JSON implementation in Ruby" - s.description = "This is a JSON implementation in pure Ruby." - - s.files = PKG_FILES - - s.require_path = 'lib' - - s.bindir = "bin" - s.executables = [ "edit_json.rb", "prettify_json.rb" ] - s.default_executable = "edit_json.rb" - - s.has_rdoc = true - s.extra_rdoc_files << 'README' - s.rdoc_options << - '--title' << 'JSON -- A JSON implemention' << '--main' << 'README' - s.test_files.concat Dir['tests/*.rb'] - - s.author = "Florian Frank" - s.email = "flori@ping.de" - s.homepage = "http://json.rubyforge.org" - s.rubyforge_project = "json" - end - - Rake::GemPackageTask.new(spec_pure) do |pkg| - pkg.need_tar = true - pkg.package_files = PKG_FILES - end - - spec_ext = Gem::Specification.new do |s| - s.name = 'json' - s.version = PKG_VERSION - s.summary = "A JSON implementation as a Ruby extension" - s.description = "This is a JSON implementation as a Ruby extension in C." - - s.files = PKG_FILES - - s.extensions = FileList['ext/**/extconf.rb'] - - s.require_path = EXT_ROOT_DIR - s.require_paths << 'ext' - s.require_paths << 'lib' - - s.bindir = "bin" - s.executables = [ "edit_json.rb", "prettify_json.rb" ] - s.default_executable = "edit_json.rb" - - s.has_rdoc = true - s.extra_rdoc_files << 'README' - s.rdoc_options << - '--title' << 'JSON -- A JSON implemention' << '--main' << 'README' - s.test_files.concat Dir['tests/*.rb'] - - s.author = "Florian Frank" - s.email = "flori@ping.de" - s.homepage = "http://json.rubyforge.org" - s.rubyforge_project = "json" - end - - Rake::GemPackageTask.new(spec_ext) do |pkg| - pkg.need_tar = true - pkg.package_files = PKG_FILES - end - - Rake::ExtensionTask.new do |ext| - ext.name = 'parser' - ext.gem_spec = spec_ext - ext.cross_compile = true - ext.cross_platform = 'i386-mswin32' - ext.ext_dir = 'ext/json/ext/parser' - ext.lib_dir = 'lib/json/ext' - end - - Rake::ExtensionTask.new do |ext| - ext.name = 'generator' - ext.gem_spec = spec_ext - ext.cross_compile = true - ext.cross_platform = 'i386-mswin32' - ext.ext_dir = 'ext/json/ext/generator' - ext.lib_dir = 'lib/json/ext' - end -end - -desc m = "Writing version information for #{PKG_VERSION}" -task :version do - puts m - File.open(File.join('lib', 'json', 'version.rb'), 'w') do |v| - v.puts < [ :clean, :version, :cross, :native, :gem ] do - sh "#$0 clean native gem" - sh "#$0 clean package" -end - -desc "Compile in the the source directory" -task :default => [ :version, :compile_ext ] diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/TODO b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/TODO deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/TODO +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/VERSION b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/VERSION deleted file mode 100644 index 26aaba0e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/VERSION +++ /dev/null @@ -1 +0,0 @@ -1.2.0 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log deleted file mode 100644 index f63d7ff1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log +++ /dev/null @@ -1,52 +0,0 @@ -========================== 2009-04-01T16:54:14 CEST =========================== - -Comparing times (call_time_mean): - 1 GeneratorBenchmarkExt#generator_fast 1000 repeats: - 547.354332608 ( real) -> 15.090x - 0.001826970 - 2 GeneratorBenchmarkExt#generator_safe 1000 repeats: - 443.968212317 ( real) -> 12.240x - 0.002252414 - 3 GeneratorBenchmarkExt#generator_pretty 900 repeats: - 375.104545883 ( real) -> 10.341x - 0.002665923 - 4 GeneratorBenchmarkPure#generator_fast 1000 repeats: - 49.978706968 ( real) -> 1.378x - 0.020008521 - 5 GeneratorBenchmarkRails#generator 1000 repeats: - 38.531868759 ( real) -> 1.062x - 0.025952543 - 6 GeneratorBenchmarkPure#generator_safe 1000 repeats: - 36.927649925 ( real) -> 1.018x 7 (>=3859) - 0.027079979 - 7 GeneratorBenchmarkPure#generator_pretty 1000 repeats: - 36.272134441 ( real) -> 1.000x 6 (>=3859) - 0.027569373 - calls/sec ( time) -> speed covers - secs/call - -Comparing times (call_time_median): - 1 GeneratorBenchmarkExt#generator_fast 1000 repeats: - 708.258020939 ( real) -> 16.547x - 0.001411915 - 2 GeneratorBenchmarkExt#generator_safe 1000 repeats: - 569.105020353 ( real) -> 13.296x - 0.001757145 - 3 GeneratorBenchmarkExt#generator_pretty 900 repeats: - 482.825371244 ( real) -> 11.280x - 0.002071142 - 4 GeneratorBenchmarkPure#generator_fast 1000 repeats: - 62.717626652 ( real) -> 1.465x - 0.015944481 - 5 GeneratorBenchmarkRails#generator 1000 repeats: - 43.965681162 ( real) -> 1.027x - 0.022745013 - 6 GeneratorBenchmarkPure#generator_safe 1000 repeats: - 43.929073409 ( real) -> 1.026x 7 (>=3859) - 0.022763968 - 7 GeneratorBenchmarkPure#generator_pretty 1000 repeats: - 42.802514491 ( real) -> 1.000x 6 (>=3859) - 0.023363113 - calls/sec ( time) -> speed covers - secs/call -=============================================================================== diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat deleted file mode 100644 index 4b1253c7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.00598106516199361 -3 -0.0112807270419403 -4 -0.0123696625707977 -5 -0.0156474123184087 -6 -0.0167058727326317 -7 -0.0174226257732614 -8 -0.0189193377912716 -9 -0.0214634645195233 -10 -0.0210243967687236 -11 -0.0184155266311585 -12 -0.0181108782382041 -13 -0.0176431070033873 -14 -0.0156578972028912 -15 -0.0177374502087085 -16 -0.0141455286987274 -17 -0.00795945141612284 -18 -0.0113514826844811 -19 -0.00973302086315654 -20 -0.00752544154967475 -21 -0.00910755332739381 -22 -0.0135251862007292 -23 -0.018973749693597 -24 -0.0204970425654037 -25 -0.0215794434931503 -26 -0.0208820323198205 -27 -0.0215343932179269 -28 -0.0197971427401652 -29 -0.0184170283596744 -30 -0.0175671796001255 -31 -0.0182236843115851 -32 -0.0197281221230859 -33 -0.0150052309130744 -34 -0.0149918485410557 -35 -0.0148118613887254 -36 -0.0167181900944588 -37 -0.0206983251289769 -38 -0.0210801801789031 -39 -0.0208844740744579 -40 -0.019184207940328 -41 -0.017212049362023 -42 -0.0120240041713764 -43 -0.0100234143586629 -44 -0.00665522354326635 -45 -0.0100620537646498 -46 -0.00769258313093049 -47 -0.0101574928855612 -48 -0.0159677916154784 -49 -0.0165646691066312 -50 -0.0130718375795871 -51 -0.0164703973814153 -52 -0.0175737709174274 -53 -0.0196185539680136 -54 -0.0206376650276647 -55 -0.0205816624943907 -56 -0.0182046841305021 -57 -0.0170847346598826 -58 -0.0173697791657325 -59 -0.0137208345061376 -60 -0.015172781992446 -61 -0.0115255106202091 -62 0.417092484407713 -63 0.504693995877898 -64 -0.00952721402961746 -65 -0.0131282852877526 -66 -0.0119948030163429 -67 -0.016073832621251 -68 -0.0161014355592232 -69 -0.0171579854383285 -70 -0.01991680519785 -71 -0.0201834782243293 -72 -0.0193410584396016 -73 -0.0171039752714963 -74 -0.0161429988491727 -75 -0.0132132704199617 -76 -0.0168078802690772 -77 -0.0158003286920553 -78 -0.00835714207351243 -79 -0.00762120905134282 -80 -0.0123153809247642 -81 -0.00899280191875777 -82 -0.0119224362468367 -83 -0.0119149552172981 -84 -0.0153878383194161 -85 -0.0180946307259483 -86 -0.0183903902356951 -87 -0.0192363155579457 -88 -0.0187515314979391 -89 -0.017863448747676 -90 -0.0164433211511183 -91 -0.0165939525554464 -92 -0.0165402045616707 -93 -0.0185978157278274 -94 -0.0142998133920208 -95 -0.0132850828003168 -96 -0.0138653751741504 -97 -0.015439338933265 -98 -0.020103623875719 -99 -0.0195401109212907 -100 -0.0201426108270252 -101 -0.0189159648139772 -102 -0.017741354411347 -103 -0.0123542006315354 -104 -0.00844298039184578 -105 -0.00684884437276309 -106 -0.00886668438174435 -107 -0.0112356781545771 -108 -0.00988387556228173 -109 -0.0132456696681112 -110 -0.0163390481544352 -111 -0.0139327158127501 -112 -0.0163794215654705 -113 -0.016828431108095 -114 -0.0170664831346389 -115 -0.0194839016196901 -116 -0.0196691116442597 -117 -0.0171523870407326 -118 -0.0162329780166863 -119 -0.015465269120626 -120 -0.0149628404982249 -121 -0.0131035423300313 -122 -0.0131195334166545 -123 -0.00981529237544382 -124 0.80187886471569 -125 0.0584684544905557 -126 -0.0102423491415993 -127 -0.0120909818906237 -128 -0.0108758895949621 -129 -0.014289679096502 -130 -0.0143039174642426 -131 -0.0156868282211593 -132 -0.0179722786147755 -133 -0.018466068371964 -134 -0.017079048029739 -135 -0.015065426013034 -136 -0.0138193891158787 -137 -0.0108007611003438 -138 -0.0135404983439662 -139 -0.0106058448707185 -140 -0.00496922876002826 -141 -0.00606791982549938 -142 -0.00898435609237426 -143 -0.00744828430883844 -144 -0.00954635887187427 -145 -0.0117471427501629 -146 -0.0167882985759187 -147 -0.0165458334875186 -148 -0.0185963339262843 -149 -0.0180476363378826 -150 -0.0184792287658906 -151 -0.0168571398090795 -152 -0.0156376237363163 -153 -0.0147405503105207 -154 -0.0155752570759927 -155 -0.0168091690226222 -156 -0.0121055609701471 -157 -0.0119152241705694 -158 -0.0119692018483073 -159 -0.0139405471343238 -160 -0.0182047564679262 -161 -0.0184815245671085 -162 -0.0183316150688267 -163 -0.016818527387266 -164 -0.0172998927309072 -165 -0.0124657171517376 -166 -0.0142205952112049 -167 -0.0114632791024164 -168 -0.011221691825434 -169 -0.00957685728179515 -170 -0.0118576208768814 -171 -0.0153568395493832 -172 -0.0151309123215381 -173 -0.0112872846794788 -174 -0.0147612619416181 -175 -0.0154278253183317 -176 -0.017303559049782 -177 -0.0182913411620323 -178 -0.0177712913609271 -179 -0.0155461026200739 -180 -0.0145007758787646 -181 -0.0144152256728993 -182 -0.0107727311780094 -183 -0.0119747664680712 -184 -0.00882273326524172 -185 0.298288232093739 -186 0.504424933837681 -187 -0.00805741122482888 -188 -0.00961890557289795 -189 -0.00944688808242372 -190 -0.0119139223572203 -191 -0.0124508210479303 -192 -0.0127383878728495 -193 -0.0140193628792942 -194 -0.0170021455698375 -195 -0.0164885587823976 -196 -0.0148914800888949 -197 -0.0140274704089252 -198 -0.0131444255262164 -199 -0.0142902568930679 -200 -0.0126395509953569 -201 -0.00514616330632373 -202 -0.00425889059218646 -203 -0.00870210148720889 -204 -0.00484025498847868 -205 -0.00794583465279226 -206 -0.0116098809300245 -207 -0.0102840248799257 -208 -0.0140847096783508 -209 -0.0161819274468977 -210 -0.0172520609046289 -211 -0.0165784733425168 -212 -0.0171152877835852 -213 -0.0173274798435417 -214 -0.0172101117258917 -215 -0.0170745436946526 -216 -0.0166392767496565 -217 -0.0113694394099134 -218 -0.0105561014609266 -219 -0.0105629655709691 -220 -0.0125843349808509 -221 -0.0169833235509721 -222 -0.0165970567333725 -223 -0.0169456130691041 -224 -0.0161440375799497 -225 -0.0149208783509213 -226 -0.0127041663317928 -227 -0.0111128965166982 -228 -0.0107029810231524 -229 -0.0101086923411873 -230 -0.0118221345845309 -231 -0.0102332052283776 -232 -0.0142577541114976 -233 -0.0140498538213083 -234 -0.010942704916447 -235 -0.0136212685457223 -236 -0.0138034339481212 -237 -0.0142845001756096 -238 -0.0165754738828122 -239 -0.0171898507581589 -240 -0.0146271352439982 -241 -0.0137790375298089 -242 -0.0133917511680577 -243 -0.0131288925890812 -244 -0.0109685827301647 -245 -0.0109244911317575 -246 -0.0080777880722406 -247 0.629508042863424 -248 0.116751190107802 -249 -0.00891172050628469 -250 -0.0107100331770611 -251 -0.00937995296389259 -252 -0.0124380337244143 -253 -0.0121281792844181 -254 -0.0135654919014245 -255 -0.0157362779934119 -256 -0.0164366578243166 -257 -0.0158700429675927 -258 -0.0136292281849102 -259 -0.0127546292697666 -260 -0.0122591657651713 -261 -0.0127690216839386 -262 -0.00988530296069743 -263 -0.00345655852423828 -264 -0.00433593866795492 -265 -0.00706082950577672 -266 -0.00451315885069749 -267 -0.00668518865876445 -268 -0.00988046989504585 -269 -0.0142752753866166 -270 -0.0139256221754419 -271 -0.0154989360192202 -272 -0.0151674600751258 -273 -0.0149460719819308 -274 -0.0149332807768296 -275 -0.0156711823892888 -276 -0.0155655062141426 -277 -0.0160655120365346 -278 -0.0148872833405304 -279 -0.00979872106668723 -280 -0.00908095518721164 -281 -0.00991496017614028 -282 -0.0116461289373857 -283 -0.0161876753215528 -284 -0.0160928457909713 -285 -0.0161826534411892 -286 -0.0144074994368989 -287 -0.0150828945998731 -288 -0.0112888375805587 -289 -0.01017522369822 -290 -0.00930009208093838 -291 -0.00867898201478243 -292 -0.00724704290881507 -293 -0.00975976377430877 -294 -0.0136277415192816 -295 -0.013064486102752 -296 -0.00951242385528366 -297 -0.0127976272170567 -298 -0.0136452137191805 -299 -0.0153115325990551 -300 -0.0163644585755829 -301 -0.0159743500315232 -302 -0.0137072967343182 -303 -0.0124465021916348 -304 -0.0124687214149045 -305 -0.00923829560254089 -306 -0.0116586507911887 -307 -0.0118002509969036 -308 0.176862227601212 -309 0.507428903450577 -310 -0.00730757087579498 -311 -0.00846216129742899 -312 -0.0086945045504047 -313 -0.011091656573089 -314 -0.0114036881984761 -315 -0.0114574795677765 -316 -0.0125072909586858 -317 -0.0147923369011883 -318 -0.0139629326786614 -319 -0.0118661842320723 -320 -0.0108640634604502 -321 -0.010582567791708 -322 -0.0114105551744683 -323 -0.0105534816285999 -324 -0.00543143567377151 -325 -0.00207879610778993 -326 -0.00616628496249775 -327 -0.00538988970591758 -328 -0.0031888414219768 -329 -0.00479592155107035 -330 -0.00797063379731725 -331 -0.011431205793035 -332 -0.0133294486936305 -333 -0.0147073192182352 -334 -0.014038242930232 -335 -0.0143451636631283 -336 -0.0140952574704935 -337 -0.0141886904764963 -338 -0.0136754388417917 -339 -0.0130591984480721 -340 -0.00725308466960931 -341 -0.00666308425269444 -342 -0.00687998553665841 -343 -0.00973374474504822 -344 -0.0145448202812331 -345 -0.0144458922456604 -346 -0.0146115187586966 -347 -0.0137964028516015 -348 -0.0124149959973093 -349 -0.0103171021174392 -350 -0.00982139573529766 -351 -0.0112899814813755 -352 -0.0106130941986117 -353 -0.0130952590767051 -354 -0.0147157103352019 -355 -0.0148442531106679 -356 -0.0143141102828524 -357 -0.0117602635999597 -358 -0.013769448570632 -359 -0.0143111324151261 -360 -0.0143034333755129 -361 -0.0145038145090546 -362 -0.0142515435786701 -363 -0.0119387033366702 -364 -0.0110049806968185 -365 -0.0105761121274039 -366 -0.0104785382739133 -367 -0.00944568136776289 -368 -0.0114291935775792 -369 -0.00879625572792011 -370 0.438761037882253 -371 0.179388282669024 -372 -0.00564395369291442 -373 -0.00796462420259203 -374 -0.00642615015965443 -375 -0.00989354521629732 -376 -0.00988574813192154 -377 -0.010723082658232 -378 -0.0127986854912136 -379 -0.0136055571418597 -380 -0.0128927066034855 -381 -0.0107658464618742 -382 -0.00995213975574464 -383 -0.00950294253792146 -384 -0.00955020479384878 -385 -0.00635693744222024 -386 -0.000110105629481581 -387 -0.00115234232053054 -388 -0.00429086433256201 -389 -0.00179503584405276 -390 -0.00481498545647159 -391 -0.00622514956456138 -392 -0.0109222820132791 -393 -0.0108955712556429 -394 -0.0123614076397208 -395 -0.0126411139244774 -396 -0.0124467915001655 -397 -0.0130137305814043 -398 -0.0128228771923896 -399 -0.0133955237199494 -400 -0.0133849955851085 -401 -0.0122588534660976 -402 -0.00605726179970702 -403 -0.00502476043379232 -404 -0.00560189961426453 -405 -0.0075065597345586 -406 -0.0127782782962923 -407 -0.0123644950908042 -408 -0.0124232734011331 -409 -0.0109783824772762 -410 -0.0115303718379531 -411 -0.00784267469552262 -412 -0.00849462201372912 -413 -0.00971386505469192 -414 -0.00917632724668119 -415 -0.0115816105603832 -416 -0.0132376761929919 -417 -0.0135661416672985 -418 -0.0131585974552153 -419 -0.009660405912689 -420 -0.013055251783936 -421 -0.0133821772767449 -422 -0.0130499023401334 -423 -0.0135178049026562 -424 -0.0131069725662085 -425 -0.0108380392131661 -426 -0.00969469507043081 -427 -0.00954426797454458 -428 -0.00662684836615926 -429 -0.00886476227407113 -430 -0.00950496793349554 -431 0.0516441983020747 -432 0.49322914953269 -433 -0.00439284173686481 -434 -0.00627870269436533 -435 -0.00627332941383523 -436 -0.0081288435528136 -437 -0.0083780008033963 -438 -0.00862522210775739 -439 -0.00957558038511007 -440 -0.0117456231732853 -441 -0.0115534470740916 -442 -0.00933816760400665 -443 -0.00879390501434828 -444 -0.00845807802179637 -445 -0.00898392178831317 -446 -0.00828222615510185 -447 -0.00430409141657551 -448 0.00156457708563651 -449 -0.00326984307949075 -450 -0.00317159959830949 -451 -0.000555487307447615 -452 -0.00364382690619819 -453 -0.0048566860611129 -454 -0.00894018408715954 -455 -0.0107486040996964 -456 -0.0116685949740421 -457 -0.0110016491468837 -458 -0.0115059582687225 -459 -0.0113472600167867 -460 -0.0116171812940172 -461 -0.0117282268858408 -462 -0.0117299783690078 -463 -0.010643752908432 -464 -0.00459501012645056 -465 -0.00453644637628407 -466 -0.0046306868795152 -467 -0.00635091362132938 -468 -0.0110723370950498 -469 -0.0112408403912337 -470 -0.0111324401483636 -471 -0.00982286064921767 -472 -0.00975128137366522 -473 -0.00628951348673262 -474 -0.00786220555305698 -475 -0.00721222723625666 -476 -0.0090992927480125 -477 -0.0111183444128793 -478 -0.0113067097038558 -479 -0.011160514456695 -480 -0.0112090771926765 -481 -0.00787638634175043 -482 -0.0112615847473125 -483 -0.011628136525895 -484 -0.011622337861315 -485 -0.0117577801145762 -486 -0.0116192296501852 -487 -0.0116776081404665 -488 -0.0111121010572735 -489 -0.0114339606683442 -490 -0.00850048144220754 -491 -0.00902076717194715 -492 -0.00658807969775991 -493 0.308280122150922 -494 0.179904382021428 -495 -0.00620246818692402 -496 -0.00732155340431931 -497 -0.00633028997310617 -498 -0.00733583870036483 -499 -0.00727032081926197 -500 -0.008010509906149 -501 -0.0104317034705988 -502 -0.0108056052586449 -503 -0.0101990692728759 -504 -0.00818461307326559 -505 -0.00749890086004878 -506 -0.00705010773652864 -507 -0.00756096305230179 -508 -0.00672526873673494 -509 0.00243080947177157 -510 0.00196312027219733 -511 -0.00235862710511876 -512 0.000701377712459682 -513 -0.00162314281016339 -514 -0.00353069628359856 -515 -0.00535592160011964 -516 -0.009629255720372 -517 -0.00984838119518035 -518 -0.0101309734254507 -519 -0.00965058701149376 -520 -0.00979426033632281 -521 -0.00938720368934997 -522 -0.00970041415352301 -523 -0.00945810455304286 -524 -0.00835333695491461 -525 -0.00280808168888623 -526 -0.0018804910475821 -527 -0.00249542031082639 -528 -0.00423360594570751 -529 -0.00881996119495001 -530 -0.00884482660493057 -531 -0.00893861689042032 -532 -0.00886923400254016 -533 -0.00998854214305494 -534 -0.00781482686410285 -535 -0.0048629430667884 -536 -0.00625148660128163 -537 -0.00591714866358709 -538 -0.00819957670878541 -539 -0.0104317069032842 -540 -0.0106270020619331 -541 -0.0104145097418402 -542 -0.00717985135988735 -543 -0.0101615859824435 -544 -0.0104518334037382 -545 -0.0100972729943529 -546 -0.0104524105955466 -547 -0.0103545229187737 -548 -0.0101624037567498 -549 -0.0100186657519469 -550 -0.0099303685542785 -551 -0.00989811608443676 -552 -0.00956029844279647 -553 -0.00987970559123677 -554 -0.00776430984790597 -555 0.433831953345655 -556 -0.00507447586044935 -557 -0.00562849792786146 -558 -0.00769600508140686 -559 -0.00901860581255264 -560 -0.00910092607595847 -561 -0.00887368633065391 -562 -0.00919143351659684 -563 -0.00919246832815283 -564 -0.008693156564635 -565 -0.00662529921447376 -566 -0.00607353164847735 -567 -0.00581991561933677 -568 -0.00632678279589719 -569 -0.00589706554542697 -570 -0.00209808022849792 -571 0.00411078303934323 -572 -0.000550094449704642 -573 -0.000635669377549439 -574 0.00207348794440178 -575 -0.000652521824982924 -576 -0.00515463244200143 -577 -0.00805160292500236 -578 -0.00758462894007334 -579 -0.00865860296291249 -580 -0.00829675359569146 -581 -0.0086341327011501 -582 -0.0083284907763213 -583 -0.00874191010292116 -584 -0.00870026046977296 -585 -0.00874342968783533 -586 -0.00782090704127864 -587 -0.00226753389792357 -588 -0.00233729750931911 -589 -0.00253165604475073 -590 -0.00420974711192665 -591 -0.00876258732479398 -592 -0.00860694373819948 -593 -0.00860741436892977 -594 -0.0083641380851702 -595 -0.00895178779353354 -596 -0.00556499426763376 -597 -0.00484682362918658 -598 -0.00431757566397834 -599 -0.00499416642389915 -600 -0.0069669589511167 -601 -0.00890645540721195 -602 -0.00886958918530451 -603 -0.00887658861258958 -604 -0.00581930809163898 -605 -0.00874979775103718 -606 -0.00880186470377256 -607 -0.0082818394785986 -608 -0.00853275083442652 -609 -0.00830191068093658 -610 -0.00821443778904117 -611 -0.00784238482387328 -612 -0.0079414174200303 -613 -0.00783383912859581 -614 -0.00787555505012593 -615 -0.00665499786835605 -616 0.176487627240953 -617 0.182522618275643 -618 -0.00369616845832028 -619 -0.00629001903058491 -620 -0.0075473564025736 -621 -0.00792057625851698 -622 -0.00782303511234032 -623 -0.00755843668657251 -624 -0.00792883379421707 -625 -0.00821060913555977 -626 -0.00741039814688092 -627 -0.00537210505585104 -628 -0.00495675282893683 -629 -0.00433218280972181 -630 -0.00535942261482297 -631 -0.00418008644241062 -632 0.00339696969399508 -633 0.00414508932380595 -634 -0.000193158774272635 -635 0.00259164894888744 -636 0.000223760303507433 -637 -0.00430196126108769 -638 -0.00456371747951704 -639 -0.00736903921601653 -640 -0.00712023652975677 -641 -0.0075278214202441 -642 -0.00720130207341965 -643 -0.00737872965783862 -644 -0.00699531188368127 -645 -0.00746073468584514 -646 -0.00732625819637498 -647 -0.00635877618822083 -648 -0.000793999038955055 -649 -8.0164531740219e-05 -650 -0.000446668232184141 -651 -0.00235908247044392 -652 -0.00713214115663551 -653 -0.00713237034121296 -654 -0.00694174474662415 -655 -0.00660829668781119 -656 -0.00716164439750203 -657 -0.00538381268641803 -658 -0.00345728430157964 -659 -0.0033493822325227 -660 -0.00308002139612534 -661 -0.00485508307526379 -662 -0.00689806029174172 -663 -0.00725543105565978 -664 -0.00698203515046677 -665 -0.0036867796009008 -666 -0.00651046025528584 -667 -0.0064253977689179 -668 -0.00603538702792052 -669 -0.00663542008142919 -670 -0.00686564183730989 -671 -0.007061940627829 -672 -0.00723724969313594 -673 -0.00690352936553413 -674 -0.00708800826417091 -675 -0.0068488351807369 -676 -0.00697588236069582 -677 -0.00489382754866038 -678 0.293679681878456 -679 -0.00217575247097526 -680 -0.00251980831108943 -681 -0.00469346437639234 -682 -0.00602274026620383 -683 -0.00613736008179977 -684 -0.00587828046880654 -685 -0.00631371498944638 -686 -0.00631120094430527 -687 -0.00664034373839927 -688 -0.0065666129986998 -689 -0.0067007590666881 -690 -0.00636748542215835 -691 -0.00656138473046679 -692 -0.00601000081275883 -693 -0.0026357408923799 -694 -0.000456498707602518 -695 -0.0016897260544663 -696 -0.00129952239659223 -697 0.00153196218519829 -698 0.000970496676276022 -699 -0.00251269063690647 -700 -0.00524088068527027 -701 -0.00518392957419252 -702 -0.00545009901887635 -703 -0.00523471171454499 -704 -0.00546688754012952 -705 -0.00514683356691874 -706 -0.00558347319397717 -707 -0.00550031695581813 -708 -0.00556266938963792 -709 -0.00450101319069993 -710 0.000877138356826208 -711 0.00114849594155746 -712 0.00116701578333245 -713 -0.000552903676364493 -714 -0.0051532107788052 -715 -0.00508271809802478 -716 -0.00497444873496618 -717 -0.00492017832252063 -718 -0.00541639497149525 -719 -0.00390291948630837 -720 -0.00239018748643075 -721 -0.00232508546653691 -722 -0.00238990898592966 -723 -0.00406012905361738 -724 -0.00582934957876193 -725 -0.00577054545061284 -726 -0.00588044486012239 -727 -0.00321173514726905 -728 -0.00576676030640332 -729 -0.00581363201901516 -730 -0.0056403530033928 -731 -0.00588225715878274 -732 -0.00580726160331349 -733 -0.00584418671281739 -734 -0.00551263103237493 -735 -0.00574673916997464 -736 -0.00550923727010732 -737 -0.00564351841421052 -738 -0.00461818807132501 -739 0.114369039955867 -740 0.113874088642992 -741 -0.00428093342498865 -742 -0.00466682336739501 -743 -0.00457646329947025 -744 -0.00489743453576601 -745 -0.00478667563624186 -746 -0.00478604895368296 -747 -0.00490784598204448 -748 -0.00514403999502352 -749 -0.00513630650904552 -750 -0.00518918499122095 -751 -0.00520548675089309 -752 -0.00507998628564919 -753 -0.00523911370578295 -754 -0.00411076499229555 -755 -0.000110526273692137 -756 -6.97046088930254e-05 -757 -0.000654613465091875 -758 0.00250880368745154 -759 0.00224241061455796 -760 -0.00127852637176592 -761 -0.00157811331971793 -762 -0.00436060574090802 -763 -0.00420211405494215 -764 -0.00448393259372739 -765 -0.00432404767220953 -766 -0.00453637743990225 -767 -0.0044808869432662 -768 -0.00464814288481283 -769 -0.00453419455157583 -770 -0.00369714822055501 -771 0.00151504237188244 -772 0.00179518632309489 -773 0.001877255156902 -774 -5.89581979368288e-06 -775 -0.00470919317381923 -776 -0.00458472486731563 -777 -0.00444898240381536 -778 -0.00416698542857512 -779 -0.00466136770411855 -780 -0.00300892846748779 -781 -0.00124674831643176 -782 -0.00133718137527554 -783 -0.00138860486323427 -784 -0.00288124092405525 -785 -0.00481691924321098 -786 -0.00486161642251353 -787 -0.00471484323647818 -788 -0.00221399725838215 -789 -0.00461120524247493 -790 -0.00490984409593776 -791 -0.00458164873735298 -792 -0.00500568265157337 -793 -0.00490456309124687 -794 -0.00492264602032272 -795 -0.00479512401393326 -796 -0.00461122828156398 -797 -0.00469058713813641 -798 -0.00454741240404029 -799 -0.00452098615172967 -800 -0.00315464001423668 -801 0.176647243851048 -802 -0.00310821457329599 -803 -0.00336871130300844 -804 -0.00334712545163953 -805 -0.00333048116128302 -806 -0.00340010988805163 -807 -0.00329002162318321 -808 -0.00389183721144577 -809 -0.003901676075626 -810 -0.00414870722240944 -811 -0.0042711605574371 -812 -0.00421188870174774 -813 -0.00414929847217633 -814 -0.00411313613833283 -815 -0.00371760367608498 -816 -0.000349935639289262 -817 0.00180273856524285 -818 0.000409396862338841 -819 0.000734497343308131 -820 0.00357982919909658 -821 0.00303969865706741 -822 -0.000471276008475531 -823 -0.00316577242759788 -824 -0.00325311026089004 -825 -0.00334640971609744 -826 -0.00347090142695205 -827 -0.00347282859499611 -828 -0.00359181895609804 -829 -0.00354380245119079 -830 -0.0035817065706009 -831 -0.00354789086207514 -832 -0.0033749175776577 -833 -0.000494214343391087 -834 -0.000251455009457498 -835 -1.57658927165261e-05 -836 -0.000109367762943036 -837 -0.00314845093040657 -838 -0.00309137992026045 -839 -0.00318781326315422 -840 -0.00286403779926594 -841 -0.00342399488914169 -842 -0.00153873408849432 -843 0.000122565876620567 -844 -1.39442056199256e-05 -845 -8.34506223344456e-06 -846 -0.00166426373161533 -847 -0.0033554053632988 -848 -0.00333776480910794 -849 -0.00310606886442986 -850 -0.00260312208985637 -851 -0.00283750216949298 -852 -0.00285757048464359 -853 -0.00279461193366553 -854 -0.00292497054991065 -855 -0.00301956311195488 -856 -0.00315103554002891 -857 -0.00317407494144514 -858 -0.00344006955591978 -859 -0.00328324564157648 -860 -0.00336672245209469 -861 -0.00320070783993313 -862 0.0571143000302908 -863 0.0581421535264736 -864 -0.0023646349129562 -865 -0.00248000937790515 -866 -0.00253895254011341 -867 -0.00263523871798653 -868 -0.00263848242276221 -869 -0.00242543818411627 -870 -0.00273912401905961 -871 -0.00279476040899776 -872 -0.00276176065666512 -873 -0.00287486997075063 -874 -0.00286611281167776 -875 -0.00273356872691796 -876 -0.00288780319152133 -877 -0.002745393856585 -878 -0.00110006883426424 -879 -0.00137915534327329 -880 -0.00167310911091998 -881 -0.00155747103077571 -882 -0.00146093482278994 -883 -0.00154136929877317 -884 -0.00153121465319545 -885 -0.00155953620814648 -886 -0.00144267681269488 -887 -0.00161412167459229 -888 -0.00163145566649099 -889 -0.00167029505161209 -890 -0.0016373144133233 -891 -0.00175124070416498 -892 -0.00167165052115149 -893 -0.00171108984754183 -894 0.00117838884322948 -895 0.00144758999216869 -896 0.00151805445737221 -897 0.00143935117483618 -898 -0.00186099280431895 -899 -0.00179654067064747 -900 -0.00179116042661383 -901 -0.00142755861186833 -902 -0.00186611279612203 -903 -0.000162622805446086 -904 0.00152056201372212 -905 0.0013706788122524 -906 0.00143726069429263 -907 -0.000252329857205533 -908 -0.00193352667375601 -909 -0.00209884306201327 -910 -0.00202064054439592 -911 -0.00173618259943807 -912 -0.00205445430329035 -913 -0.00214780602120254 -914 -0.00196595166631794 -915 -0.00219157283133128 -916 -0.00212894079242623 -917 -0.00207889032650752 -918 -0.00219841623335388 -919 -0.00205620493282394 -920 -0.00208349802201294 -921 -0.001893539445651 -922 -0.00194526313087232 -923 -0.00168643075330111 -924 0.0586998178531413 -925 -0.000911884922536993 -926 -0.00117572577102972 -927 -0.00129923545036716 -928 -0.00118465790078785 -929 -0.00132314491365947 -930 -0.00127160006680386 -931 -0.00138439529549555 -932 -0.00129787510221711 -933 -0.00144993779770551 -934 -0.001425792453437 -935 -0.0014496057960256 -936 -0.00119586479826629 -937 -0.000922564261699133 -938 -0.000922740892289067 -939 -0.000848528386538916 -940 0.00175174402948496 -941 0.000128892409261148 -942 -0.000419829894278227 -943 -0.000466898563936845 -944 -0.00047122376341752 -945 -0.000471416288654379 -946 -0.000513935965825421 -947 -0.000572116986488244 -948 -0.000449041074008682 -949 -0.000574563662818422 -950 -0.000610788790280961 -951 -0.000662270176313313 -952 -0.000642471283187866 -953 -0.000686357192098764 -954 -0.000680811112666425 -955 -0.000667897583364248 -956 0.00217250089025851 -957 0.00241500705227074 -958 0.00258713826301258 -959 0.0024109350186895 -960 -0.000776314155991479 -961 -0.00084983870235422 -962 -0.000772678557610008 -963 -0.000413064616358682 -964 -0.000839502130396645 -965 -0.000791381040363275 -966 -0.00077040262869677 -967 -0.000754568976269093 -968 -0.000450602414219829 -969 -0.000688212102427542 -970 -0.0007167932903372 -971 -0.000785852386158499 -972 -0.000722306234880277 -973 -0.000324661092143018 -974 -0.000653202791545457 -975 -0.000633458113878451 -976 -0.000607853671870952 -977 -0.000679470747639321 -978 -0.000681703637956587 -979 -0.000664738980547628 -980 -0.000722422330407423 -981 -0.000669373102929127 -982 -0.000718387488703849 -983 -0.000712032436105745 -984 -0.000590219813904669 -985 -0.000416669360601081 -986 0.000288888405178535 -987 0.000270024550156701 -988 0.000249840739788964 -989 0.000235694503184828 -990 0.000215798850441515 -991 0.00019492814388371 -992 0.000175357251222976 -993 0.000153462442160884 -994 0.000132677328666247 -995 0.000111945810591477 -996 9.04814593951449e-05 -997 7.02106833140884e-05 -998 5.0145189268859e-05 -999 3.05214189890438e-05 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat deleted file mode 100644 index 7df4c827..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.00156402587890625 0.0 0.0 0.0 1 -2 0.00149393081665039 0.0 0.0 0.0 2 -3 0.00144386291503906 0.0 0.0 0.0 3 -4 0.0014338493347168 0.00999999999999979 0.00999999999999979 0.0 4 -5 0.00144386291503906 0.0 0.0 0.0 5 -6 0.00141716003417969 0.0 0.0 0.0 6 -7 0.00143003463745117 0.0 0.0 0.0 7 -8 0.0014190673828125 0.0 0.0 0.0 8 -9 0.00141215324401855 0.0 0.0 0.0 9 -10 0.00143003463745117 0.0 0.0 0.0 10 -11 0.00141310691833496 0.0100000000000007 0.0100000000000002 0.0 11 -12 0.0014190673828125 0.0 0.0 0.0 12 -13 0.00155305862426758 0.0 0.0 0.0 13 -14 0.00142192840576172 0.0 0.0 0.0 14 -15 0.00141000747680664 0.0 0.0 0.0 15 -16 0.00142812728881836 0.0 0.0 0.0 16 -17 0.00143098831176758 0.0 0.0 0.0 17 -18 0.00151705741882324 0.00999999999999979 0.00999999999999979 0.0 18 -19 0.00141406059265137 0.0 0.0 0.0 19 -20 0.0014197826385498 0.0 0.0 0.0 20 -21 0.00142383575439453 0.0 0.0 0.0 21 -22 0.00141191482543945 0.0 0.0 0.0 22 -23 0.00156402587890625 0.0 0.0 0.0 23 -24 0.00142812728881836 0.00999999999999979 0.00999999999999979 0.0 24 -25 0.00139307975769043 0.0 0.0 0.0 25 -26 0.00141000747680664 0.0 0.0 0.0 26 -27 0.00255894660949707 0.0 0.0 0.0 27 -28 0.00261497497558594 0.0 0.0 0.0 28 -29 0.00254607200622559 0.00999999999999979 0.00999999999999979 0.0 29 -30 0.00245094299316406 0.0 0.0 0.0 30 -31 0.00142312049865723 0.0 0.0 0.0 31 -32 0.00141000747680664 0.0 0.0 0.0 32 -33 0.00139904022216797 0.0 0.0 0.0 33 -34 0.00141096115112305 0.0 0.0 0.0 34 -35 0.00139689445495605 0.0100000000000007 0.0100000000000007 0.0 35 -36 0.00140500068664551 0.0 0.0 0.0 36 -37 0.00140786170959473 0.0 0.0 0.0 37 -38 0.00144600868225098 0.0 0.0 0.0 38 -39 0.00139689445495605 0.0 0.0 0.0 39 -40 0.00140810012817383 0.0 0.0 0.0 40 -41 0.00141406059265137 0.0 0.0 0.0 41 -42 0.00140595436096191 0.00999999999999979 0.00999999999999979 0.0 42 -43 0.00140094757080078 0.0 0.0 0.0 43 -44 0.00138092041015625 0.0 0.0 0.0 44 -45 0.00151491165161133 0.0 0.0 0.0 45 -46 0.00203394889831543 0.0 0.0 0.0 46 -47 0.00142693519592285 0.0 0.0 0.0 47 -48 0.00138998031616211 0.00999999999999979 0.00999999999999979 0.0 48 -49 0.00144696235656738 0.0 0.0 0.0 49 -50 0.00140500068664551 0.0 0.0 0.0 50 -51 0.00138998031616211 0.0 0.0 0.0 51 -52 0.00141000747680664 0.0 0.0 0.0 52 -53 0.00139188766479492 0.0 0.0 0.0 53 -54 0.00142598152160645 0.0 0.0 0.0 54 -55 0.00141406059265137 0.00999999999999979 0.00999999999999979 0.0 55 -56 0.00139594078063965 0.0 0.0 0.0 56 -57 0.00139284133911133 0.0 0.0 0.0 57 -58 0.00141692161560059 0.0 0.0 0.0 58 -59 0.00140810012817383 0.0 0.0 0.0 59 -60 0.00141215324401855 0.0 0.0 0.0 60 -61 0.00145602226257324 0.0 0.0 0.0 61 -62 0.0231201648712158 0.0300000000000002 0.0300000000000002 0.0 62 -63 0.0014808177947998 0.0 0.0 0.0 63 -64 0.00142788887023926 0.0 0.0 0.0 64 -65 0.00147199630737305 0.0 0.0 0.0 65 -66 0.00143098831176758 0.0 0.0 0.0 66 -67 0.00142908096313477 0.0 0.0 0.0 67 -68 0.00142097473144531 0.00999999999999979 0.00999999999999979 0.0 68 -69 0.00142598152160645 0.0 0.0 0.0 69 -70 0.00142812728881836 0.0 0.0 0.0 70 -71 0.00140595436096191 0.0 0.0 0.0 71 -72 0.00142288208007812 0.0 0.0 0.0 72 -73 0.00140810012817383 0.0 0.0 0.0 73 -74 0.00141692161560059 0.0 0.0 0.0 74 -75 0.00140786170959473 0.0100000000000007 0.0100000000000007 0.0 75 -76 0.00142312049865723 0.0 0.0 0.0 76 -77 0.00140213966369629 0.0 0.0 0.0 77 -78 0.00140500068664551 0.0 0.0 0.0 78 -79 0.00141096115112305 0.0 0.0 0.0 79 -80 0.00141406059265137 0.0 0.0 0.0 80 -81 0.00141310691833496 0.0 0.0 0.0 81 -82 0.00140905380249023 0.00999999999999979 0.00999999999999979 0.0 82 -83 0.00140190124511719 0.0 0.0 0.0 83 -84 0.00140881538391113 0.0 0.0 0.0 84 -85 0.00141191482543945 0.0 0.0 0.0 85 -86 0.00141406059265137 0.0 0.0 0.0 86 -87 0.00142097473144531 0.0 0.0 0.0 87 -88 0.0013890266418457 0.0 0.0 0.0 88 -89 0.00141406059265137 0.00999999999999979 0.00999999999999979 0.0 89 -90 0.00139498710632324 0.0 0.0 0.0 90 -91 0.00141286849975586 0.0 0.0 0.0 91 -92 0.00141096115112305 0.0 0.0 0.0 92 -93 0.00140190124511719 0.0 0.0 0.0 93 -94 0.00141501426696777 0.0 0.0 0.0 94 -95 0.0013880729675293 0.0 0.0 0.0 95 -96 0.00140595436096191 0.00999999999999979 0.00999999999999979 0.0 96 -97 0.00140213966369629 0.0 0.0 0.0 97 -98 0.0014040470123291 0.0 0.0 0.0 98 -99 0.00140500068664551 0.0 0.0 0.0 99 -100 0.00141501426696777 0.0 0.0 0.0 100 -101 0.00141119956970215 0.0 0.0 0.0 101 -102 0.00139808654785156 0.0 0.0 0.0 102 -103 0.00141000747680664 0.0 0.0 0.0 103 -104 0.00137805938720703 0.0 0.0 0.0 104 -105 0.00139307975769043 0.0 0.0 0.0 105 -106 0.00139594078063965 0.0 0.0 0.0 106 -107 0.00138688087463379 0.0 0.0 0.0 107 -108 0.00140810012817383 0.0 0.0 0.0 108 -109 0.00140094757080078 0.00999999999999979 0.00999999999999979 0.0 109 -110 0.00139999389648438 0.0 0.0 0.0 110 -111 0.00139808654785156 0.0 0.0 0.0 111 -112 0.00141096115112305 0.0 0.0 0.0 112 -113 0.00139212608337402 0.0 0.0 0.0 113 -114 0.00142288208007812 0.0 0.0 0.0 114 -115 0.00139188766479492 0.0 0.0 0.0 115 -116 0.00140810012817383 0.00999999999999979 0.00999999999999979 0.0 116 -117 0.00147700309753418 0.0 0.0 0.0 117 -118 0.00140810012817383 0.0 0.0 0.0 118 -119 0.0014030933380127 0.0 0.0 0.0 119 -120 0.00142097473144531 0.0 0.0 0.0 120 -121 0.00140213966369629 0.0 0.0 0.0 121 -122 0.00139689445495605 0.0 0.0 0.0 122 -123 0.0233688354492188 0.0300000000000002 0.0300000000000002 0.0 123 -124 0.0014951229095459 0.0 0.0 0.0 124 -125 0.00143909454345703 0.0 0.0 0.0 125 -126 0.00145697593688965 0.0 0.0 0.0 126 -127 0.00147509574890137 0.0 0.0 0.0 127 -128 0.00142598152160645 0.0 0.0 0.0 128 -129 0.00143003463745117 0.00999999999999979 0.00999999999999979 0.0 129 -130 0.00141477584838867 0.0 0.0 0.0 130 -131 0.00142502784729004 0.0 0.0 0.0 131 -132 0.00140786170959473 0.0 0.0 0.0 132 -133 0.00141310691833496 0.0 0.0 0.0 133 -134 0.00141000747680664 0.0 0.0 0.0 134 -135 0.00141501426696777 0.00999999999999979 0.00999999999999979 0.0 135 -136 0.00141501426696777 0.0 0.0 0.0 136 -137 0.0014190673828125 0.0 0.0 0.0 137 -138 0.00140500068664551 0.0 0.0 0.0 138 -139 0.00140595436096191 0.0 0.0 0.0 139 -140 0.00143909454345703 0.0 0.0 0.0 140 -141 0.00140094757080078 0.0 0.0 0.0 141 -142 0.00142407417297363 0.0100000000000007 0.0100000000000007 0.0 142 -143 0.00141406059265137 0.0 0.0 0.0 143 -144 0.00142002105712891 0.0 0.0 0.0 144 -145 0.00140094757080078 0.0 0.0 0.0 145 -146 0.00140690803527832 0.0 0.0 0.0 146 -147 0.0014188289642334 0.0 0.0 0.0 147 -148 0.00142002105712891 0.0 0.0 0.0 148 -149 0.00139808654785156 0.00999999999999979 0.00999999999999979 0.0 149 -150 0.00139594078063965 0.0 0.0 0.0 150 -151 0.00140285491943359 0.0 0.0 0.0 151 -152 0.0013880729675293 0.0 0.0 0.0 152 -153 0.00139498710632324 0.0 0.0 0.0 153 -154 0.0014040470123291 0.0 0.0 0.0 154 -155 0.0014040470123291 0.0 0.0 0.0 155 -156 0.00140094757080078 0.00999999999999979 0.00999999999999979 0.0 156 -157 0.0014030933380127 0.0 0.0 0.0 157 -158 0.00138711929321289 0.0 0.0 0.0 158 -159 0.00139999389648438 0.0 0.0 0.0 159 -160 0.00140595436096191 0.0 0.0 0.0 160 -161 0.00139689445495605 0.0 0.0 0.0 161 -162 0.00141000747680664 0.0 0.0 0.0 162 -163 0.00140094757080078 0.00999999999999979 0.00999999999999979 0.0 163 -164 0.00140905380249023 0.0 0.0 0.0 164 -165 0.00251889228820801 0.0 0.0 0.0 165 -166 0.00264787673950195 0.0 0.0 0.0 166 -167 0.00169110298156738 0.0 0.0 0.0 167 -168 0.00159692764282227 0.00999999999999979 0.00999999999999979 0.0 168 -169 0.00142788887023926 0.0 0.0 0.0 169 -170 0.00155997276306152 0.0 0.0 0.0 170 -171 0.00141811370849609 0.0 0.0 0.0 171 -172 0.00139784812927246 0.0 0.0 0.0 172 -173 0.00142884254455566 0.0 0.0 0.0 173 -174 0.00139999389648438 0.0 0.0 0.0 174 -175 0.00139784812927246 0.0100000000000007 0.0100000000000007 0.0 175 -176 0.00139999389648438 0.0 0.0 0.0 176 -177 0.00145101547241211 0.0 0.0 0.0 177 -178 0.00141716003417969 0.0 0.0 0.0 178 -179 0.00143289566040039 0.0 0.0 0.0 179 -180 0.00141310691833496 0.0 0.0 0.0 180 -181 0.00141406059265137 0.0 0.0 0.0 181 -182 0.00141406059265137 0.0 0.0 0.0 182 -183 0.00141310691833496 0.0 0.0 0.0 183 -184 0.00140595436096191 0.0 0.0 0.0 184 -185 0.0231029987335205 0.0199999999999996 0.0199999999999996 0.0 185 -186 0.00171899795532227 0.0 0.0 0.0 186 -187 0.00143694877624512 0.0100000000000007 0.0100000000000007 0.0 187 -188 0.00144410133361816 0.0 0.0 0.0 188 -189 0.00142693519592285 0.0 0.0 0.0 189 -190 0.00143599510192871 0.0 0.0 0.0 190 -191 0.00142097473144531 0.0 0.0 0.0 191 -192 0.00142979621887207 0.0 0.0 0.0 192 -193 0.00142502784729004 0.0 0.0 0.0 193 -194 0.00142002105712891 0.00999999999999979 0.00999999999999979 0.0 194 -195 0.00142908096313477 0.0 0.0 0.0 195 -196 0.00141191482543945 0.0 0.0 0.0 196 -197 0.00141382217407227 0.0 0.0 0.0 197 -198 0.00141191482543945 0.0 0.0 0.0 198 -199 0.00143718719482422 0.0 0.0 0.0 199 -200 0.00141096115112305 0.0 0.0 0.0 200 -201 0.00142407417297363 0.00999999999999979 0.00999999999999979 0.0 201 -202 0.00146198272705078 0.0 0.0 0.0 202 -203 0.00143194198608398 0.0 0.0 0.0 203 -204 0.00138998031616211 0.0 0.0 0.0 204 -205 0.00140595436096191 0.0 0.0 0.0 205 -206 0.00142097473144531 0.0 0.0 0.0 206 -207 0.00141787528991699 0.00999999999999979 0.00999999999999979 0.0 207 -208 0.00145101547241211 0.0 0.0 0.0 208 -209 0.00143909454345703 0.0 0.0 0.0 209 -210 0.00141215324401855 0.0 0.0 0.0 210 -211 0.00140094757080078 0.0 0.0 0.0 211 -212 0.0014030933380127 0.0 0.0 0.0 212 -213 0.00140595436096191 0.0 0.0 0.0 213 -214 0.00143194198608398 0.0100000000000007 0.0100000000000007 0.0 214 -215 0.00139999389648438 0.0 0.0 0.0 215 -216 0.00140786170959473 0.0 0.0 0.0 216 -217 0.00141501426696777 0.0 0.0 0.0 217 -218 0.00139904022216797 0.0 0.0 0.0 218 -219 0.00141310691833496 0.0 0.0 0.0 219 -220 0.00140786170959473 0.0 0.0 0.0 220 -221 0.00146889686584473 0.00999999999999979 0.00999999999999979 0.0 221 -222 0.00139880180358887 0.0 0.0 0.0 222 -223 0.00141501426696777 0.0 0.0 0.0 223 -224 0.00139808654785156 0.0 0.0 0.0 224 -225 0.00140690803527832 0.0 0.0 0.0 225 -226 0.00140500068664551 0.0 0.0 0.0 226 -227 0.00139713287353516 0.0 0.0 0.0 227 -228 0.00139498710632324 0.00999999999999979 0.00999999999999979 0.0 228 -229 0.00141000747680664 0.0 0.0 0.0 229 -230 0.00139284133911133 0.0 0.0 0.0 230 -231 0.00140690803527832 0.0 0.0 0.0 231 -232 0.0014040470123291 0.0 0.0 0.0 232 -233 0.00137710571289062 0.0 0.0 0.0 233 -234 0.00140595436096191 0.0 0.0 0.0 234 -235 0.00137901306152344 0.0 0.0 0.0 235 -236 0.00143909454345703 0.00999999999999979 0.00999999999999979 0.0 236 -237 0.00138688087463379 0.0 0.0 0.0 237 -238 0.00141811370849609 0.0 0.0 0.0 238 -239 0.00141406059265137 0.0 0.0 0.0 239 -240 0.00139284133911133 0.0 0.0 0.0 240 -241 0.0014188289642334 0.0 0.0 0.0 241 -242 0.0013878345489502 0.0 0.0 0.0 242 -243 0.00142407417297363 0.0100000000000007 0.0100000000000007 0.0 243 -244 0.00141000747680664 0.0 0.0 0.0 244 -245 0.00146222114562988 0.0 0.0 0.0 245 -246 0.0225439071655273 0.0199999999999996 0.0199999999999996 0.0 246 -247 0.00150012969970703 0.0 0.0 0.0 247 -248 0.00144600868225098 0.0 0.0 0.0 248 -249 0.00144791603088379 0.0 0.0 0.0 249 -250 0.00143003463745117 0.0 0.0 0.0 250 -251 0.00143313407897949 0.0 0.0 0.0 251 -252 0.00141406059265137 0.0 0.0 0.0 252 -253 0.00143194198608398 0.0 0.0 0.0 253 -254 0.00141596794128418 0.0 0.0 0.0 254 -255 0.00141811370849609 0.0 0.0 0.0 255 -256 0.00142002105712891 0.0100000000000007 0.0100000000000007 0.0 256 -257 0.0014190673828125 0.0 0.0 0.0 257 -258 0.00141000747680664 0.0 0.0 0.0 258 -259 0.00142097473144531 0.0 0.0 0.0 259 -260 0.00142192840576172 0.0 0.0 0.0 260 -261 0.00141096115112305 0.0 0.0 0.0 261 -262 0.00141215324401855 0.0 0.0 0.0 262 -263 0.00141501426696777 0.00999999999999979 0.00999999999999979 0.0 263 -264 0.00141096115112305 0.0 0.0 0.0 264 -265 0.00140213966369629 0.0 0.0 0.0 265 -266 0.00142192840576172 0.0 0.0 0.0 266 -267 0.0014030933380127 0.0 0.0 0.0 267 -268 0.00141596794128418 0.0 0.0 0.0 268 -269 0.00141000747680664 0.0 0.0 0.0 269 -270 0.00141406059265137 0.00999999999999979 0.00999999999999979 0.0 270 -271 0.00140810012817383 0.0 0.0 0.0 271 -272 0.00141215324401855 0.0 0.0 0.0 272 -273 0.00139999389648438 0.0 0.0 0.0 273 -274 0.00139093399047852 0.0 0.0 0.0 274 -275 0.00149083137512207 0.0 0.0 0.0 275 -276 0.00139594078063965 0.0 0.0 0.0 276 -277 0.00141191482543945 0.00999999999999979 0.00999999999999979 0.0 277 -278 0.0013887882232666 0.0 0.0 0.0 278 -279 0.00141382217407227 0.0 0.0 0.0 279 -280 0.0014030933380127 0.0 0.0 0.0 280 -281 0.00141787528991699 0.0 0.0 0.0 281 -282 0.0014030933380127 0.0 0.0 0.0 282 -283 0.00140714645385742 0.0100000000000007 0.0100000000000007 0.0 283 -284 0.00139999389648438 0.0 0.0 0.0 284 -285 0.00139904022216797 0.0 0.0 0.0 285 -286 0.00141000747680664 0.0 0.0 0.0 286 -287 0.00139498710632324 0.0 0.0 0.0 287 -288 0.00140500068664551 0.0 0.0 0.0 288 -289 0.00140810012817383 0.0 0.0 0.0 289 -290 0.00141096115112305 0.00999999999999979 0.00999999999999979 0.0 290 -291 0.0014030933380127 0.0 0.0 0.0 291 -292 0.00141692161560059 0.0 0.0 0.0 292 -293 0.00140786170959473 0.0 0.0 0.0 293 -294 0.00140810012817383 0.0 0.0 0.0 294 -295 0.00141000747680664 0.0 0.0 0.0 295 -296 0.00139212608337402 0.0 0.0 0.0 296 -297 0.00141406059265137 0.0 0.0 0.0 297 -298 0.0013890266418457 0.00999999999999979 0.00999999999999979 0.0 298 -299 0.00141096115112305 0.0 0.0 0.0 299 -300 0.00139379501342773 0.0 0.0 0.0 300 -301 0.00141501426696777 0.0 0.0 0.0 301 -302 0.00139498710632324 0.0 0.0 0.0 302 -303 0.00139594078063965 0.0 0.0 0.0 303 -304 0.00140690803527832 0.0 0.0 0.0 304 -305 0.00188708305358887 0.00999999999999979 0.00999999999999979 0.0 305 -306 0.00266003608703613 0.0 0.0 0.0 306 -307 0.00257205963134766 0.0 0.0 0.0 307 -308 0.0239479541778564 0.0300000000000002 0.0300000000000002 0.0 308 -309 0.0016789436340332 0.0 0.0 0.0 309 -310 0.00142788887023926 0.0 0.0 0.0 310 -311 0.00144720077514648 0.0 0.0 0.0 311 -312 0.00142407417297363 0.0 0.0 0.0 312 -313 0.00144100189208984 0.0 0.0 0.0 313 -314 0.00140810012817383 0.0 0.0 0.0 314 -315 0.00142502784729004 0.00999999999999979 0.00999999999999979 0.0 315 -316 0.00141501426696777 0.0 0.0 0.0 316 -317 0.00142884254455566 0.0 0.0 0.0 317 -318 0.00140810012817383 0.0 0.0 0.0 318 -319 0.00141692161560059 0.0 0.0 0.0 319 -320 0.00141096115112305 0.0 0.0 0.0 320 -321 0.00143098831176758 0.0 0.0 0.0 321 -322 0.00141501426696777 0.00999999999999979 0.00999999999999979 0.0 322 -323 0.00141501426696777 0.0 0.0 0.0 323 -324 0.00140595436096191 0.0 0.0 0.0 324 -325 0.00141692161560059 0.0 0.0 0.0 325 -326 0.00150609016418457 0.0 0.0 0.0 326 -327 0.00142478942871094 0.0 0.0 0.0 327 -328 0.00141191482543945 0.0 0.0 0.0 328 -329 0.00140190124511719 0.0100000000000007 0.0100000000000007 0.0 329 -330 0.00142121315002441 0.0 0.0 0.0 330 -331 0.00140500068664551 0.0 0.0 0.0 331 -332 0.00142288208007812 0.0 0.0 0.0 332 -333 0.00139188766479492 0.0 0.0 0.0 333 -334 0.00141811370849609 0.0 0.0 0.0 334 -335 0.00139999389648438 0.0 0.0 0.0 335 -336 0.00138592720031738 0.00999999999999979 0.00999999999999979 0.0 336 -337 0.00139522552490234 0.0 0.0 0.0 337 -338 0.00139093399047852 0.0 0.0 0.0 338 -339 0.00140500068664551 0.0 0.0 0.0 339 -340 0.00138497352600098 0.0 0.0 0.0 340 -341 0.00139999389648438 0.0 0.0 0.0 341 -342 0.00139594078063965 0.0 0.0 0.0 342 -343 0.00139617919921875 0.00999999999999979 0.00999999999999979 0.0 343 -344 0.00139784812927246 0.0 0.0 0.0 344 -345 0.00139784812927246 0.0 0.0 0.0 345 -346 0.00141716003417969 0.0 0.0 0.0 346 -347 0.00139307975769043 0.0 0.0 0.0 347 -348 0.00141191482543945 0.0 0.0 0.0 348 -349 0.00139999389648438 0.0 0.0 0.0 349 -350 0.00140380859375 0.00999999999999979 0.00999999999999979 0.0 350 -351 0.00140500068664551 0.0 0.0 0.0 351 -352 0.00149989128112793 0.0 0.0 0.0 352 -353 0.00278902053833008 0.0 0.0 0.0 353 -354 0.00261592864990234 0.0 0.0 0.0 354 -355 0.00245213508605957 0.0100000000000007 0.0100000000000007 0.0 355 -356 0.00246095657348633 0.0 0.0 0.0 356 -357 0.00265288352966309 0.0 0.0 0.0 357 -358 0.00261092185974121 0.00999999999999979 0.00999999999999979 0.0 358 -359 0.00242495536804199 0.0 0.0 0.0 359 -360 0.00170683860778809 0.0 0.0 0.0 360 -361 0.00139093399047852 0.0 0.0 0.0 361 -362 0.00142908096313477 0.0 0.0 0.0 362 -363 0.00140976905822754 0.0 0.0 0.0 363 -364 0.00142288208007812 0.00999999999999979 0.00999999999999979 0.0 364 -365 0.00140380859375 0.0 0.0 0.0 365 -366 0.00140714645385742 0.0 0.0 0.0 366 -367 0.00139594078063965 0.0 0.0 0.0 367 -368 0.00140118598937988 0.0 0.0 0.0 368 -369 0.0262439250946045 0.0300000000000002 0.0200000000000005 0.01 369 -370 0.00150489807128906 0.00999999999999979 0.00999999999999979 0.0 370 -371 0.00143313407897949 0.0 0.0 0.0 371 -372 0.00153613090515137 0.0 0.0 0.0 372 -373 0.00143313407897949 0.0 0.0 0.0 373 -374 0.00144290924072266 0.0 0.0 0.0 374 -375 0.00142097473144531 0.0 0.0 0.0 375 -376 0.00142097473144531 0.0 0.0 0.0 376 -377 0.00140810012817383 0.00999999999999979 0.00999999999999979 0.0 377 -378 0.00140690803527832 0.0 0.0 0.0 378 -379 0.0014338493347168 0.0 0.0 0.0 379 -380 0.00142192840576172 0.0 0.0 0.0 380 -381 0.00142502784729004 0.0 0.0 0.0 381 -382 0.00140595436096191 0.0 0.0 0.0 382 -383 0.00141811370849609 0.0 0.0 0.0 383 -384 0.00143003463745117 0.00999999999999979 0.00999999999999979 0.0 384 -385 0.00141596794128418 0.0 0.0 0.0 385 -386 0.00140619277954102 0.0 0.0 0.0 386 -387 0.00142288208007812 0.0 0.0 0.0 387 -388 0.00142002105712891 0.0 0.0 0.0 388 -389 0.00141596794128418 0.0 0.0 0.0 389 -390 0.00142407417297363 0.0 0.0 0.0 390 -391 0.00138282775878906 0.0100000000000007 0.0100000000000007 0.0 391 -392 0.00141501426696777 0.0 0.0 0.0 392 -393 0.00139188766479492 0.0 0.0 0.0 393 -394 0.00141382217407227 0.0 0.0 0.0 394 -395 0.00140714645385742 0.0 0.0 0.0 395 -396 0.00141000747680664 0.0 0.0 0.0 396 -397 0.00139307975769043 0.0 0.0 0.0 397 -398 0.00139307975769043 0.00999999999999979 0.00999999999999979 0.0 398 -399 0.00141000747680664 0.0 0.0 0.0 399 -400 0.00138998031616211 0.0 0.0 0.0 400 -401 0.00140213966369629 0.0 0.0 0.0 401 -402 0.00139904022216797 0.0 0.0 0.0 402 -403 0.00141191482543945 0.0 0.0 0.0 403 -404 0.00139999389648438 0.0 0.0 0.0 404 -405 0.00139188766479492 0.00999999999999979 0.00999999999999979 0.0 405 -406 0.00142502784729004 0.0 0.0 0.0 406 -407 0.00139904022216797 0.0 0.0 0.0 407 -408 0.00157594680786133 0.0 0.0 0.0 408 -409 0.00140500068664551 0.0 0.0 0.0 409 -410 0.00139784812927246 0.0 0.0 0.0 410 -411 0.00139188766479492 0.0 0.0 0.0 411 -412 0.00141215324401855 0.00999999999999979 0.00999999999999979 0.0 412 -413 0.00137901306152344 0.0 0.0 0.0 413 -414 0.0014040470123291 0.0 0.0 0.0 414 -415 0.00138497352600098 0.0 0.0 0.0 415 -416 0.00140285491943359 0.0 0.0 0.0 416 -417 0.00147199630737305 0.0 0.0 0.0 417 -418 0.00141096115112305 0.0100000000000007 0.0100000000000007 0.0 418 -419 0.0013890266418457 0.0 0.0 0.0 419 -420 0.00139093399047852 0.0 0.0 0.0 420 -421 0.00139999389648438 0.0 0.0 0.0 421 -422 0.00141406059265137 0.0 0.0 0.0 422 -423 0.00142383575439453 0.0 0.0 0.0 423 -424 0.00139904022216797 0.0 0.0 0.0 424 -425 0.00141310691833496 0.00999999999999979 0.00999999999999979 0.0 425 -426 0.0013880729675293 0.0 0.0 0.0 426 -427 0.00140094757080078 0.0 0.0 0.0 427 -428 0.00140786170959473 0.0 0.0 0.0 428 -429 0.00139880180358887 0.0 0.0 0.0 429 -430 0.00140118598937988 0.0 0.0 0.0 430 -431 0.0276179313659668 0.0299999999999994 0.0299999999999994 0.0 431 -432 0.00144100189208984 0.0 0.0 0.0 432 -433 0.00150609016418457 0.0 0.0 0.0 433 -434 0.0014500617980957 0.0 0.0 0.0 434 -435 0.00144720077514648 0.0100000000000007 0.0100000000000007 0.0 435 -436 0.00142598152160645 0.0 0.0 0.0 436 -437 0.00144004821777344 0.0 0.0 0.0 437 -438 0.00141215324401855 0.0 0.0 0.0 438 -439 0.00140690803527832 0.0 0.0 0.0 439 -440 0.00140905380249023 0.0 0.0 0.0 440 -441 0.00141191482543945 0.0 0.0 0.0 441 -442 0.00141382217407227 0.00999999999999979 0.00999999999999979 0.0 442 -443 0.00141382217407227 0.0 0.0 0.0 443 -444 0.00142979621887207 0.0 0.0 0.0 444 -445 0.00140786170959473 0.0 0.0 0.0 445 -446 0.00141787528991699 0.0 0.0 0.0 446 -447 0.00142502784729004 0.0 0.0 0.0 447 -448 0.00141716003417969 0.00999999999999979 0.00999999999999979 0.0 448 -449 0.00141692161560059 0.0 0.0 0.0 449 -450 0.00142502784729004 0.0 0.0 0.0 450 -451 0.00140690803527832 0.0 0.0 0.0 451 -452 0.00139808654785156 0.0 0.0 0.0 452 -453 0.00140094757080078 0.0 0.0 0.0 453 -454 0.00141501426696777 0.0 0.0 0.0 454 -455 0.00142598152160645 0.00999999999999979 0.00999999999999979 0.0 455 -456 0.00140595436096191 0.0 0.0 0.0 456 -457 0.00141096115112305 0.0 0.0 0.0 457 -458 0.00138306617736816 0.0 0.0 0.0 458 -459 0.00140500068664551 0.0 0.0 0.0 459 -460 0.00141096115112305 0.0 0.0 0.0 460 -461 0.0013880729675293 0.0 0.0 0.0 461 -462 0.00140094757080078 0.0100000000000007 0.0100000000000007 0.0 462 -463 0.00139594078063965 0.0 0.0 0.0 463 -464 0.00141310691833496 0.0 0.0 0.0 464 -465 0.00138282775878906 0.0 0.0 0.0 465 -466 0.00141596794128418 0.0 0.0 0.0 466 -467 0.00141692161560059 0.0 0.0 0.0 467 -468 0.00142002105712891 0.0 0.0 0.0 468 -469 0.00139999389648438 0.00999999999999979 0.00999999999999979 0.0 469 -470 0.00137901306152344 0.0 0.0 0.0 470 -471 0.00140595436096191 0.0 0.0 0.0 471 -472 0.0013880729675293 0.0 0.0 0.0 472 -473 0.00141310691833496 0.0 0.0 0.0 473 -474 0.0014040470123291 0.0 0.0 0.0 474 -475 0.00141406059265137 0.0 0.0 0.0 475 -476 0.00139713287353516 0.00999999999999979 0.00999999999999979 0.0 476 -477 0.00139307975769043 0.0 0.0 0.0 477 -478 0.00140786170959473 0.0 0.0 0.0 478 -479 0.00139784812927246 0.0 0.0 0.0 479 -480 0.00139784812927246 0.0 0.0 0.0 480 -481 0.00139999389648438 0.0 0.0 0.0 481 -482 0.00140190124511719 0.0 0.0 0.0 482 -483 0.00139594078063965 0.00999999999999979 0.00999999999999979 0.0 483 -484 0.0014188289642334 0.0 0.0 0.0 484 -485 0.00140810012817383 0.0 0.0 0.0 485 -486 0.00141596794128418 0.0 0.0 0.0 486 -487 0.0014030933380127 0.0 0.0 0.0 487 -488 0.00141596794128418 0.0 0.0 0.0 488 -489 0.00141811370849609 0.0 0.0 0.0 489 -490 0.00140094757080078 0.0100000000000007 0.0100000000000007 0.0 490 -491 0.00142717361450195 0.0 0.0 0.0 491 -492 0.00140190124511719 0.0 0.0 0.0 492 -493 0.0237669944763184 0.0199999999999996 0.0199999999999996 0.0 493 -494 0.00249719619750977 0.0 0.0 0.0 494 -495 0.00208711624145508 0.0 0.0 0.0 495 -496 0.00229597091674805 0.00999999999999979 0.00999999999999979 0.0 496 -497 0.00143194198608398 0.0 0.0 0.0 497 -498 0.00144100189208984 0.0 0.0 0.0 498 -499 0.00142002105712891 0.0 0.0 0.0 499 -500 0.00144791603088379 0.0 0.0 0.0 500 -501 0.00140190124511719 0.0 0.0 0.0 501 -502 0.00142192840576172 0.0 0.0 0.0 502 -503 0.00142502784729004 0.0100000000000007 0.0100000000000007 0.0 503 -504 0.0014350414276123 0.0 0.0 0.0 504 -505 0.00141811370849609 0.0 0.0 0.0 505 -506 0.00141811370849609 0.0 0.0 0.0 506 -507 0.00141596794128418 0.0 0.0 0.0 507 -508 0.00141501426696777 0.0 0.0 0.0 508 -509 0.00140094757080078 0.0 0.0 0.0 509 -510 0.00142502784729004 0.00999999999999979 0.00999999999999979 0.0 510 -511 0.0014350414276123 0.0 0.0 0.0 511 -512 0.00139403343200684 0.0 0.0 0.0 512 -513 0.00142598152160645 0.0 0.0 0.0 513 -514 0.00142598152160645 0.0 0.0 0.0 514 -515 0.00181007385253906 0.0 0.0 0.0 515 -516 0.00142097473144531 0.0 0.0 0.0 516 -517 0.0014030933380127 0.00999999999999979 0.00999999999999979 0.0 517 -518 0.00141310691833496 0.0 0.0 0.0 518 -519 0.00140595436096191 0.0 0.0 0.0 519 -520 0.00139999389648438 0.0 0.0 0.0 520 -521 0.00140881538391113 0.0 0.0 0.0 521 -522 0.00139498710632324 0.0 0.0 0.0 522 -523 0.00141406059265137 0.0 0.0 0.0 523 -524 0.00139307975769043 0.00999999999999979 0.00999999999999979 0.0 524 -525 0.0014040470123291 0.0 0.0 0.0 525 -526 0.00141501426696777 0.0 0.0 0.0 526 -527 0.00141716003417969 0.0 0.0 0.0 527 -528 0.00141501426696777 0.0 0.0 0.0 528 -529 0.00147104263305664 0.0 0.0 0.0 529 -530 0.00141096115112305 0.0 0.0 0.0 530 -531 0.00140213966369629 0.0100000000000007 0.0100000000000007 0.0 531 -532 0.00141406059265137 0.0 0.0 0.0 532 -533 0.00139904022216797 0.0 0.0 0.0 533 -534 0.00139403343200684 0.0 0.0 0.0 534 -535 0.00139713287353516 0.0 0.0 0.0 535 -536 0.00140786170959473 0.0 0.0 0.0 536 -537 0.00139403343200684 0.0 0.0 0.0 537 -538 0.00140714645385742 0.00999999999999979 0.00999999999999979 0.0 538 -539 0.00139093399047852 0.0 0.0 0.0 539 -540 0.00140094757080078 0.0 0.0 0.0 540 -541 0.00138711929321289 0.0 0.0 0.0 541 -542 0.00140500068664551 0.0 0.0 0.0 542 -543 0.00141406059265137 0.0 0.0 0.0 543 -544 0.0014030933380127 0.0 0.0 0.0 544 -545 0.00138497352600098 0.00999999999999979 0.00999999999999979 0.0 545 -546 0.00148582458496094 0.0 0.0 0.0 546 -547 0.00141191482543945 0.0 0.0 0.0 547 -548 0.00141119956970215 0.0 0.0 0.0 548 -549 0.00140690803527832 0.0 0.0 0.0 549 -550 0.00140881538391113 0.0 0.0 0.0 550 -551 0.00141286849975586 0.00999999999999979 0.00999999999999979 0.0 551 -552 0.00141286849975586 0.0 0.0 0.0 552 -553 0.00139021873474121 0.0 0.0 0.0 553 -554 0.0234880447387695 0.0200000000000005 0.0200000000000005 0.0 554 -555 0.00147581100463867 0.0 0.0 0.0 555 -556 0.00144290924072266 0.0 0.0 0.0 556 -557 0.00200700759887695 0.00999999999999979 0.00999999999999979 0.0 557 -558 0.00271010398864746 0.0 0.0 0.0 558 -559 0.00263786315917969 0.0 0.0 0.0 559 -560 0.00255584716796875 0.0 0.0 0.0 560 -561 0.0022728443145752 0.00999999999999979 0.00999999999999979 0.0 561 -562 0.0014340877532959 0.0 0.0 0.0 562 -563 0.00143599510192871 0.0 0.0 0.0 563 -564 0.00140905380249023 0.0 0.0 0.0 564 -565 0.00140786170959473 0.0 0.0 0.0 565 -566 0.00142693519592285 0.0 0.0 0.0 566 -567 0.00141596794128418 0.00999999999999979 0.00999999999999979 0.0 567 -568 0.00147199630737305 0.0 0.0 0.0 568 -569 0.00142502784729004 0.0 0.0 0.0 569 -570 0.00143003463745117 0.0 0.0 0.0 570 -571 0.00140595436096191 0.0 0.0 0.0 571 -572 0.00144600868225098 0.0 0.0 0.0 572 -573 0.00141096115112305 0.0 0.0 0.0 573 -574 0.00142717361450195 0.0100000000000007 0.0100000000000007 0.0 574 -575 0.0025019645690918 0.0 0.0 0.0 575 -576 0.00191497802734375 0.0 0.0 0.0 576 -577 0.00141119956970215 0.0 0.0 0.0 577 -578 0.00140690803527832 0.0 0.0 0.0 578 -579 0.00141501426696777 0.00999999999999979 0.00999999999999979 0.0 579 -580 0.00141692161560059 0.0 0.0 0.0 580 -581 0.00139212608337402 0.0 0.0 0.0 581 -582 0.00140810012817383 0.0 0.0 0.0 582 -583 0.00139307975769043 0.0 0.0 0.0 583 -584 0.00139498710632324 0.0 0.0 0.0 584 -585 0.0014030933380127 0.0 0.0 0.0 585 -586 0.0014030933380127 0.00999999999999979 0.00999999999999979 0.0 586 -587 0.00141096115112305 0.0 0.0 0.0 587 -588 0.00140500068664551 0.0 0.0 0.0 588 -589 0.00144505500793457 0.0 0.0 0.0 589 -590 0.00141191482543945 0.0 0.0 0.0 590 -591 0.00140213966369629 0.0 0.0 0.0 591 -592 0.00139594078063965 0.0 0.0 0.0 592 -593 0.00141096115112305 0.00999999999999979 0.00999999999999979 0.0 593 -594 0.00139093399047852 0.0 0.0 0.0 594 -595 0.00148797035217285 0.0 0.0 0.0 595 -596 0.00139999389648438 0.0 0.0 0.0 596 -597 0.00139689445495605 0.0 0.0 0.0 597 -598 0.00140094757080078 0.0 0.0 0.0 598 -599 0.00140786170959473 0.0 0.0 0.0 599 -600 0.00140810012817383 0.0100000000000007 0.0100000000000007 0.0 600 -601 0.00140810012817383 0.0 0.0 0.0 601 -602 0.00140500068664551 0.0 0.0 0.0 602 -603 0.00139093399047852 0.0 0.0 0.0 603 -604 0.00142192840576172 0.0 0.0 0.0 604 -605 0.00138998031616211 0.0 0.0 0.0 605 -606 0.00140213966369629 0.0 0.0 0.0 606 -607 0.00140285491943359 0.00999999999999979 0.00999999999999979 0.0 607 -608 0.00141000747680664 0.0 0.0 0.0 608 -609 0.00140190124511719 0.0 0.0 0.0 609 -610 0.00142097473144531 0.0 0.0 0.0 610 -611 0.00139689445495605 0.0 0.0 0.0 611 -612 0.00147509574890137 0.0 0.0 0.0 612 -613 0.00141000747680664 0.0 0.0 0.0 613 -614 0.00140285491943359 0.00999999999999979 0.00999999999999979 0.0 614 -615 0.00142002105712891 0.0 0.0 0.0 615 -616 0.0232539176940918 0.0200000000000005 0.0200000000000005 0.0 616 -617 0.00145983695983887 0.0 0.0 0.0 617 -618 0.00142908096313477 0.0 0.0 0.0 618 -619 0.00143790245056152 0.00999999999999979 0.00999999999999979 0.0 619 -620 0.00141000747680664 0.0 0.0 0.0 620 -621 0.00141692161560059 0.0 0.0 0.0 621 -622 0.00142216682434082 0.0 0.0 0.0 622 -623 0.00140905380249023 0.0 0.0 0.0 623 -624 0.00142598152160645 0.0 0.0 0.0 624 -625 0.00141096115112305 0.0 0.0 0.0 625 -626 0.00142097473144531 0.00999999999999979 0.00999999999999979 0.0 626 -627 0.00149297714233398 0.0 0.0 0.0 627 -628 0.0014348030090332 0.0 0.0 0.0 628 -629 0.00148200988769531 0.0 0.0 0.0 629 -630 0.0014040470123291 0.0 0.0 0.0 630 -631 0.00141596794128418 0.0 0.0 0.0 631 -632 0.00142216682434082 0.0 0.0 0.0 632 -633 0.00139999389648438 0.00999999999999979 0.00999999999999979 0.0 633 -634 0.00142693519592285 0.0 0.0 0.0 634 -635 0.00141692161560059 0.0 0.0 0.0 635 -636 0.00141501426696777 0.0 0.0 0.0 636 -637 0.00140976905822754 0.0 0.0 0.0 637 -638 0.00140500068664551 0.0 0.0 0.0 638 -639 0.00141787528991699 0.0 0.0 0.0 639 -640 0.0013880729675293 0.0100000000000007 0.0100000000000007 0.0 640 -641 0.00142812728881836 0.0 0.0 0.0 641 -642 0.0014040470123291 0.0 0.0 0.0 642 -643 0.0013880729675293 0.0 0.0 0.0 643 -644 0.00140810012817383 0.0 0.0 0.0 644 -645 0.00142192840576172 0.0 0.0 0.0 645 -646 0.00140810012817383 0.0 0.0 0.0 646 -647 0.00140190124511719 0.00999999999999979 0.00999999999999979 0.0 647 -648 0.00148701667785645 0.0 0.0 0.0 648 -649 0.0014040470123291 0.0 0.0 0.0 649 -650 0.00140094757080078 0.0 0.0 0.0 650 -651 0.00139904022216797 0.0 0.0 0.0 651 -652 0.00141811370849609 0.0 0.0 0.0 652 -653 0.00139403343200684 0.0 0.0 0.0 653 -654 0.00141191482543945 0.00999999999999979 0.00999999999999979 0.0 654 -655 0.00140500068664551 0.0 0.0 0.0 655 -656 0.00141096115112305 0.0 0.0 0.0 656 -657 0.00185894966125488 0.0 0.0 0.0 657 -658 0.00141286849975586 0.0 0.0 0.0 658 -659 0.00149917602539062 0.0 0.0 0.0 659 -660 0.00140190124511719 0.0 0.0 0.0 660 -661 0.00139188766479492 0.00999999999999979 0.00999999999999979 0.0 661 -662 0.00138711929321289 0.0 0.0 0.0 662 -663 0.00139904022216797 0.0 0.0 0.0 663 -664 0.00141596794128418 0.0 0.0 0.0 664 -665 0.00139212608337402 0.0 0.0 0.0 665 -666 0.00141191482543945 0.0 0.0 0.0 666 -667 0.00139403343200684 0.0 0.0 0.0 667 -668 0.00140905380249023 0.0100000000000007 0.0100000000000007 0.0 668 -669 0.00139307975769043 0.0 0.0 0.0 669 -670 0.00139999389648438 0.0 0.0 0.0 670 -671 0.00142002105712891 0.0 0.0 0.0 671 -672 0.00139904022216797 0.0 0.0 0.0 672 -673 0.00142097473144531 0.0 0.0 0.0 673 -674 0.00140500068664551 0.0 0.0 0.0 674 -675 0.00139594078063965 0.00999999999999979 0.00999999999999979 0.0 675 -676 0.00139284133911133 0.0 0.0 0.0 676 -677 0.0242998600006104 0.0199999999999996 0.0199999999999996 0.0 677 -678 0.00148987770080566 0.0 0.0 0.0 678 -679 0.00144290924072266 0.0 0.0 0.0 679 -680 0.00143098831176758 0.0100000000000007 0.0100000000000007 0.0 680 -681 0.00144410133361816 0.0 0.0 0.0 681 -682 0.00142598152160645 0.0 0.0 0.0 682 -683 0.00140094757080078 0.0 0.0 0.0 683 -684 0.00146293640136719 0.0 0.0 0.0 684 -685 0.00141811370849609 0.0 0.0 0.0 685 -686 0.00143098831176758 0.0 0.0 0.0 686 -687 0.00144100189208984 0.00999999999999979 0.00999999999999979 0.0 687 -688 0.00143003463745117 0.0 0.0 0.0 688 -689 0.00141406059265137 0.0 0.0 0.0 689 -690 0.00143194198608398 0.0 0.0 0.0 690 -691 0.0014040470123291 0.0 0.0 0.0 691 -692 0.00141191482543945 0.0 0.0 0.0 692 -693 0.00259590148925781 0.00999999999999979 0.00999999999999979 0.0 693 -694 0.00263714790344238 0.0 0.0 0.0 694 -695 0.00258207321166992 0.0 0.0 0.0 695 -696 0.00255298614501953 0.0 0.0 0.0 696 -697 0.00179100036621094 0.00999999999999979 0.00999999999999979 0.0 697 -698 0.00142312049865723 0.0 0.0 0.0 698 -699 0.00141215324401855 0.0 0.0 0.0 699 -700 0.00140094757080078 0.0 0.0 0.0 700 -701 0.00138998031616211 0.0 0.0 0.0 701 -702 0.00139999389648438 0.0 0.0 0.0 702 -703 0.00142312049865723 0.0 0.0 0.0 703 -704 0.00142812728881836 0.00999999999999979 0.00999999999999979 0.0 704 -705 0.00140690803527832 0.0 0.0 0.0 705 -706 0.00139999389648438 0.0 0.0 0.0 706 -707 0.00140500068664551 0.0 0.0 0.0 707 -708 0.00139498710632324 0.0 0.0 0.0 708 -709 0.00139498710632324 0.0 0.0 0.0 709 -710 0.0014030933380127 0.0 0.0 0.0 710 -711 0.00138497352600098 0.0100000000000007 0.0100000000000007 0.0 711 -712 0.00139498710632324 0.0 0.0 0.0 712 -713 0.00139904022216797 0.0 0.0 0.0 713 -714 0.00141000747680664 0.0 0.0 0.0 714 -715 0.00140118598937988 0.0 0.0 0.0 715 -716 0.00141406059265137 0.0 0.0 0.0 716 -717 0.00140094757080078 0.0 0.0 0.0 717 -718 0.00141787528991699 0.00999999999999979 0.00999999999999979 0.0 718 -719 0.00140714645385742 0.0 0.0 0.0 719 -720 0.00142097473144531 0.0 0.0 0.0 720 -721 0.0013880729675293 0.0 0.0 0.0 721 -722 0.00140094757080078 0.0 0.0 0.0 722 -723 0.0014190673828125 0.0 0.0 0.0 723 -724 0.00139117240905762 0.0 0.0 0.0 724 -725 0.00139784812927246 0.00999999999999979 0.00999999999999979 0.0 725 -726 0.00163793563842773 0.0 0.0 0.0 726 -727 0.00141406059265137 0.0 0.0 0.0 727 -728 0.00140500068664551 0.0 0.0 0.0 728 -729 0.00141692161560059 0.0 0.0 0.0 729 -730 0.00141000747680664 0.0 0.0 0.0 730 -731 0.00139594078063965 0.00999999999999979 0.00999999999999979 0.0 731 -732 0.00140595436096191 0.0 0.0 0.0 732 -733 0.00140881538391113 0.0 0.0 0.0 733 -734 0.00140500068664551 0.0 0.0 0.0 734 -735 0.00139904022216797 0.0 0.0 0.0 735 -736 0.00141787528991699 0.0 0.0 0.0 736 -737 0.00141406059265137 0.0 0.0 0.0 737 -738 0.00141000747680664 0.0100000000000007 0.0100000000000007 0.0 738 -739 0.0232431888580322 0.0199999999999996 0.0199999999999996 0.0 739 -740 0.00145602226257324 0.0 0.0 0.0 740 -741 0.00145196914672852 0.0 0.0 0.0 741 -742 0.00142693519592285 0.0 0.0 0.0 742 -743 0.00143599510192871 0.0 0.0 0.0 743 -744 0.00144100189208984 0.00999999999999979 0.00999999999999979 0.0 744 -745 0.00146389007568359 0.0 0.0 0.0 745 -746 0.00143003463745117 0.0 0.0 0.0 746 -747 0.00141501426696777 0.0 0.0 0.0 747 -748 0.00139808654785156 0.0 0.0 0.0 748 -749 0.00142097473144531 0.0 0.0 0.0 749 -750 0.00140905380249023 0.0 0.0 0.0 750 -751 0.00150108337402344 0.0100000000000007 0.0100000000000007 0.0 751 -752 0.00140714645385742 0.0 0.0 0.0 752 -753 0.00142908096313477 0.0 0.0 0.0 753 -754 0.0014040470123291 0.0 0.0 0.0 754 -755 0.00141501426696777 0.0 0.0 0.0 755 -756 0.00140094757080078 0.0 0.0 0.0 756 -757 0.00141215324401855 0.00999999999999979 0.00999999999999979 0.0 757 -758 0.00141000747680664 0.0 0.0 0.0 758 -759 0.00140714645385742 0.0 0.0 0.0 759 -760 0.00141096115112305 0.0 0.0 0.0 760 -761 0.00140213966369629 0.0 0.0 0.0 761 -762 0.0014188289642334 0.0 0.0 0.0 762 -763 0.00138497352600098 0.0 0.0 0.0 763 -764 0.00142192840576172 0.00999999999999979 0.00999999999999979 0.0 764 -765 0.00140380859375 0.0 0.0 0.0 765 -766 0.00153803825378418 0.0 0.0 0.0 766 -767 0.0013880729675293 0.0 0.0 0.0 767 -768 0.00141191482543945 0.0 0.0 0.0 768 -769 0.00139689445495605 0.0 0.0 0.0 769 -770 0.00144219398498535 0.0 0.0 0.0 770 -771 0.00145888328552246 0.00999999999999979 0.00999999999999979 0.0 771 -772 0.00142621994018555 0.0 0.0 0.0 772 -773 0.00138998031616211 0.0 0.0 0.0 773 -774 0.00141286849975586 0.0 0.0 0.0 774 -775 0.00140190124511719 0.0 0.0 0.0 775 -776 0.00139498710632324 0.0 0.0 0.0 776 -777 0.00141191482543945 0.0 0.0 0.0 777 -778 0.00138211250305176 0.0100000000000007 0.0100000000000007 0.0 778 -779 0.00141000747680664 0.0 0.0 0.0 779 -780 0.00139093399047852 0.0 0.0 0.0 780 -781 0.00139188766479492 0.0 0.0 0.0 781 -782 0.00139904022216797 0.0 0.0 0.0 782 -783 0.0013880729675293 0.0 0.0 0.0 783 -784 0.00139880180358887 0.0 0.0 0.0 784 -785 0.00137805938720703 0.00999999999999979 0.00999999999999979 0.0 785 -786 0.00141191482543945 0.0 0.0 0.0 786 -787 0.00139498710632324 0.0 0.0 0.0 787 -788 0.00141286849975586 0.0 0.0 0.0 788 -789 0.00140285491943359 0.0 0.0 0.0 789 -790 0.00140213966369629 0.0 0.0 0.0 790 -791 0.00139808654785156 0.0 0.0 0.0 791 -792 0.00141000747680664 0.00999999999999979 0.00999999999999979 0.0 792 -793 0.00142383575439453 0.0 0.0 0.0 793 -794 0.0014040470123291 0.0 0.0 0.0 794 -795 0.00141215324401855 0.0 0.0 0.0 795 -796 0.00140690803527832 0.0 0.0 0.0 796 -797 0.00139689445495605 0.0 0.0 0.0 797 -798 0.00139403343200684 0.0 0.0 0.0 798 -799 0.00141096115112305 0.00999999999999979 0.00999999999999979 0.0 799 -800 0.0231518745422363 0.0200000000000005 0.0200000000000005 0.0 800 -801 0.00148391723632812 0.0 0.0 0.0 801 -802 0.00144004821777344 0.0 0.0 0.0 802 -803 0.00144600868225098 0.0 0.0 0.0 803 -804 0.00148105621337891 0.00999999999999979 0.00999999999999979 0.0 804 -805 0.0014500617980957 0.0 0.0 0.0 805 -806 0.00141406059265137 0.0 0.0 0.0 806 -807 0.00140595436096191 0.0 0.0 0.0 807 -808 0.00142502784729004 0.0 0.0 0.0 808 -809 0.00140285491943359 0.0 0.0 0.0 809 -810 0.00142288208007812 0.0 0.0 0.0 810 -811 0.0014030933380127 0.00999999999999979 0.00999999999999979 0.0 811 -812 0.00139999389648438 0.0 0.0 0.0 812 -813 0.00141000747680664 0.0 0.0 0.0 813 -814 0.00140881538391113 0.0 0.0 0.0 814 -815 0.00143098831176758 0.0 0.0 0.0 815 -816 0.00140094757080078 0.0 0.0 0.0 816 -817 0.00143003463745117 0.0 0.0 0.0 817 -818 0.00140500068664551 0.0100000000000007 0.0100000000000007 0.0 818 -819 0.00142002105712891 0.0 0.0 0.0 819 -820 0.00141096115112305 0.0 0.0 0.0 820 -821 0.00142502784729004 0.0 0.0 0.0 821 -822 0.00141096115112305 0.0 0.0 0.0 822 -823 0.00140619277954102 0.0 0.0 0.0 823 -824 0.00139093399047852 0.0 0.0 0.0 824 -825 0.00139999389648438 0.00999999999999979 0.00999999999999979 0.0 825 -826 0.00139999389648438 0.0 0.0 0.0 826 -827 0.00140190124511719 0.0 0.0 0.0 827 -828 0.0014030933380127 0.0 0.0 0.0 828 -829 0.00139808654785156 0.0 0.0 0.0 829 -830 0.00140786170959473 0.0 0.0 0.0 830 -831 0.00171494483947754 0.0 0.0 0.0 831 -832 0.00259613990783691 0.0 0.0 0.0 832 -833 0.00256896018981934 0.0 0.0 0.0 833 -834 0.00258994102478027 0.0 0.0 0.0 834 -835 0.00195598602294922 0.00999999999999979 0.00999999999999979 0.0 835 -836 0.00141477584838867 0.0 0.0 0.0 836 -837 0.0014030933380127 0.0 0.0 0.0 837 -838 0.00140500068664551 0.0 0.0 0.0 838 -839 0.00138711929321289 0.0 0.0 0.0 839 -840 0.00139904022216797 0.0 0.0 0.0 840 -841 0.00139403343200684 0.0 0.0 0.0 841 -842 0.00141215324401855 0.00999999999999979 0.00999999999999979 0.0 842 -843 0.0014498233795166 0.0 0.0 0.0 843 -844 0.00139594078063965 0.0 0.0 0.0 844 -845 0.00139307975769043 0.0 0.0 0.0 845 -846 0.0013890266418457 0.0 0.0 0.0 846 -847 0.00141000747680664 0.0 0.0 0.0 847 -848 0.00138711929321289 0.0 0.0 0.0 848 -849 0.00221610069274902 0.0100000000000007 0.0100000000000007 0.0 849 -850 0.00145506858825684 0.0 0.0 0.0 850 -851 0.00141501426696777 0.0 0.0 0.0 851 -852 0.00145888328552246 0.0 0.0 0.0 852 -853 0.00140500068664551 0.0 0.0 0.0 853 -854 0.00139904022216797 0.0 0.0 0.0 854 -855 0.00137901306152344 0.0 0.0 0.0 855 -856 0.00144314765930176 0.00999999999999979 0.00999999999999979 0.0 856 -857 0.00139904022216797 0.0 0.0 0.0 857 -858 0.00142312049865723 0.0 0.0 0.0 858 -859 0.00139689445495605 0.0 0.0 0.0 859 -860 0.00140786170959473 0.0 0.0 0.0 860 -861 0.00139713287353516 0.0 0.0 0.0 861 -862 0.0231709480285645 0.0300000000000002 0.0300000000000002 0.0 862 -863 0.00148701667785645 0.0 0.0 0.0 863 -864 0.00143599510192871 0.0 0.0 0.0 864 -865 0.00144219398498535 0.0 0.0 0.0 865 -866 0.00142002105712891 0.0 0.0 0.0 866 -867 0.0014500617980957 0.0 0.0 0.0 867 -868 0.00142502784729004 0.00999999999999979 0.00999999999999979 0.0 868 -869 0.00141692161560059 0.0 0.0 0.0 869 -870 0.00142192840576172 0.0 0.0 0.0 870 -871 0.00142192840576172 0.0 0.0 0.0 871 -872 0.00141191482543945 0.0 0.0 0.0 872 -873 0.00143194198608398 0.0 0.0 0.0 873 -874 0.00142288208007812 0.0 0.0 0.0 874 -875 0.00142884254455566 0.00999999999999979 0.00999999999999979 0.0 875 -876 0.00160384178161621 0.0 0.0 0.0 876 -877 0.00264906883239746 0.0 0.0 0.0 877 -878 0.00261187553405762 0.0 0.0 0.0 878 -879 0.00243496894836426 0.00999999999999979 0.00999999999999979 0.0 879 -880 0.00259900093078613 0.0 0.0 0.0 880 -881 0.0026240348815918 0.0 0.0 0.0 881 -882 0.00248599052429199 0.0 0.0 0.0 882 -883 0.0024101734161377 0.0100000000000007 0.0100000000000007 0.0 883 -884 0.00142192840576172 0.0 0.0 0.0 884 -885 0.0014488697052002 0.0 0.0 0.0 885 -886 0.00140285491943359 0.0 0.0 0.0 886 -887 0.00140213966369629 0.0 0.0 0.0 887 -888 0.00141406059265137 0.0 0.0 0.0 888 -889 0.00139999389648438 0.0 0.0 0.0 889 -890 0.00140690803527832 0.00999999999999979 0.00999999999999979 0.0 890 -891 0.00139093399047852 0.0 0.0 0.0 891 -892 0.00140500068664551 0.0 0.0 0.0 892 -893 0.00140690803527832 0.0 0.0 0.0 893 -894 0.00141000747680664 0.0 0.0 0.0 894 -895 0.00140810012817383 0.0 0.0 0.0 895 -896 0.00139403343200684 0.0 0.0 0.0 896 -897 0.00140810012817383 0.00999999999999979 0.00999999999999979 0.0 897 -898 0.00140810012817383 0.0 0.0 0.0 898 -899 0.00143003463745117 0.0 0.0 0.0 899 -900 0.00141811370849609 0.0 0.0 0.0 900 -901 0.00142002105712891 0.0 0.0 0.0 901 -902 0.00138211250305176 0.0 0.0 0.0 902 -903 0.00141096115112305 0.00999999999999979 0.00999999999999979 0.0 903 -904 0.00140595436096191 0.0 0.0 0.0 904 -905 0.00140690803527832 0.0 0.0 0.0 905 -906 0.00141501426696777 0.0 0.0 0.0 906 -907 0.00139594078063965 0.0 0.0 0.0 907 -908 0.00142002105712891 0.0 0.0 0.0 908 -909 0.00139808654785156 0.0 0.0 0.0 909 -910 0.00140905380249023 0.0100000000000007 0.0100000000000007 0.0 910 -911 0.0014040470123291 0.0 0.0 0.0 911 -912 0.00139808654785156 0.0 0.0 0.0 912 -913 0.00141000747680664 0.0 0.0 0.0 913 -914 0.00140619277954102 0.0 0.0 0.0 914 -915 0.0014040470123291 0.0 0.0 0.0 915 -916 0.0014040470123291 0.0 0.0 0.0 916 -917 0.00141310691833496 0.00999999999999979 0.00999999999999979 0.0 917 -918 0.00147795677185059 0.0 0.0 0.0 918 -919 0.00141000747680664 0.0 0.0 0.0 919 -920 0.00140786170959473 0.0 0.0 0.0 920 -921 0.00141000747680664 0.0 0.0 0.0 921 -922 0.00140786170959473 0.0 0.0 0.0 922 -923 0.0234408378601074 0.0300000000000002 0.0300000000000002 0.0 923 -924 0.00142312049865723 0.0 0.0 0.0 924 -925 0.00144505500793457 0.0 0.0 0.0 925 -926 0.00144791603088379 0.0 0.0 0.0 926 -927 0.00144004821777344 0.0 0.0 0.0 927 -928 0.00142192840576172 0.0 0.0 0.0 928 -929 0.00143814086914062 0.00999999999999979 0.00999999999999979 0.0 929 -930 0.00141406059265137 0.0 0.0 0.0 930 -931 0.00141501426696777 0.0 0.0 0.0 931 -932 0.00142312049865723 0.0 0.0 0.0 932 -933 0.00141215324401855 0.0 0.0 0.0 933 -934 0.00143003463745117 0.0 0.0 0.0 934 -935 0.0014188289642334 0.0 0.0 0.0 935 -936 0.00142192840576172 0.00999999999999979 0.00999999999999979 0.0 936 -937 0.00142598152160645 0.0 0.0 0.0 937 -938 0.00143218040466309 0.0 0.0 0.0 938 -939 0.00140094757080078 0.0 0.0 0.0 939 -940 0.00141811370849609 0.0 0.0 0.0 940 -941 0.00142598152160645 0.0 0.0 0.0 941 -942 0.00143694877624512 0.0 0.0 0.0 942 -943 0.00146985054016113 0.00999999999999979 0.00999999999999979 0.0 943 -944 0.00139403343200684 0.0 0.0 0.0 944 -945 0.00141096115112305 0.0 0.0 0.0 945 -946 0.00140595436096191 0.0 0.0 0.0 946 -947 0.00140213966369629 0.0 0.0 0.0 947 -948 0.00139594078063965 0.0 0.0 0.0 948 -949 0.00140190124511719 0.0 0.0 0.0 949 -950 0.00140213966369629 0.0100000000000007 0.0100000000000007 0.0 950 -951 0.0014040470123291 0.0 0.0 0.0 951 -952 0.00139999389648438 0.0 0.0 0.0 952 -953 0.00139904022216797 0.0 0.0 0.0 953 -954 0.00139617919921875 0.0 0.0 0.0 954 -955 0.00141000747680664 0.0 0.0 0.0 955 -956 0.00141716003417969 0.0 0.0 0.0 956 -957 0.00139594078063965 0.00999999999999979 0.00999999999999979 0.0 957 -958 0.00141096115112305 0.0 0.0 0.0 958 -959 0.00139999389648438 0.0 0.0 0.0 959 -960 0.00141787528991699 0.0 0.0 0.0 960 -961 0.00139808654785156 0.0 0.0 0.0 961 -962 0.0014030933380127 0.0 0.0 0.0 962 -963 0.00140810012817383 0.0 0.0 0.0 963 -964 0.00203394889831543 0.00999999999999979 0.00999999999999979 0.0 964 -965 0.00265693664550781 0.0 0.0 0.0 965 -966 0.00261211395263672 0.0 0.0 0.0 966 -967 0.00254082679748535 0.0 0.0 0.0 967 -968 0.00202393531799316 0.00999999999999979 0.00999999999999979 0.0 968 -969 0.00142693519592285 0.0 0.0 0.0 969 -970 0.00139784812927246 0.0 0.0 0.0 970 -971 0.00140213966369629 0.0 0.0 0.0 971 -972 0.00139594078063965 0.0 0.0 0.0 972 -973 0.00141501426696777 0.0 0.0 0.0 973 -974 0.0014030933380127 0.00999999999999979 0.00999999999999979 0.0 974 -975 0.00144290924072266 0.0 0.0 0.0 975 -976 0.00140500068664551 0.0 0.0 0.0 976 -977 0.00140690803527832 0.0 0.0 0.0 977 -978 0.00142502784729004 0.0 0.0 0.0 978 -979 0.00141000747680664 0.0 0.0 0.0 979 -980 0.00141501426696777 0.0 0.0 0.0 980 -981 0.00140118598937988 0.0100000000000007 0.0100000000000007 0.0 981 -982 0.00142693519592285 0.0 0.0 0.0 982 -983 0.00141310691833496 0.0 0.0 0.0 983 -984 0.00140690803527832 0.0 0.0 0.0 984 -985 0.0233311653137207 0.0199999999999996 0.0199999999999996 0.0 985 -986 0.00148701667785645 0.00999999999999979 0.00999999999999979 0.0 986 -987 0.00144100189208984 0.0 0.0 0.0 987 -988 0.00140595436096191 0.0 0.0 0.0 988 -989 0.00144505500793457 0.0 0.0 0.0 989 -990 0.00142598152160645 0.0 0.0 0.0 990 -991 0.0014491081237793 0.0 0.0 0.0 991 -992 0.00139904022216797 0.0 0.0 0.0 992 -993 0.00142788887023926 0.0100000000000007 0.0100000000000007 0.0 993 -994 0.00141382217407227 0.0 0.0 0.0 994 -995 0.00141119956970215 0.0 0.0 0.0 995 -996 0.00139999389648438 0.0 0.0 0.0 996 -997 0.00142192840576172 0.0 0.0 0.0 997 -998 0.0014197826385498 0.0 0.0 0.0 998 -999 0.00142288208007812 0.0 0.0 0.0 999 -1000 0.00141811370849609 0.00999999999999979 0.00999999999999979 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat deleted file mode 100644 index 238a8f3b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat +++ /dev/null @@ -1,900 +0,0 @@ -#lag autocorrelation -101 1.0 -102 0.00222153397099066 -103 -0.0143375943792822 -104 -0.0230145315894251 -105 -0.0272569948085685 -106 -0.0289478311233791 -107 -0.0239202547218024 -108 -0.0254569116577405 -109 -0.0204533758607008 -110 -0.0264699250769266 -111 -0.0247691307865804 -112 -0.0281656685433677 -113 -0.0282797510426555 -114 -0.0264980555156702 -115 -0.0264456484724888 -116 -0.027624326287035 -117 -0.0204913232518958 -118 -0.0136418899889287 -119 -0.0164287250050804 -120 -0.0160068899951543 -121 -0.0213508645203322 -122 -0.0261094503544549 -123 -0.0283361918761636 -124 -0.0221634425280319 -125 -0.0200377132134378 -126 -0.0158156288853482 -127 -0.0184937620769426 -128 -0.0167418191590156 -129 -0.0267897605444739 -130 -0.0277175604156327 -131 -0.0255031340290104 -132 -0.0259704766205717 -133 -0.026687135609607 -134 -0.0259098393314182 -135 -0.0257383295981194 -136 -0.0223218665246626 -137 -0.0237310896666623 -138 -0.0241241330086241 -139 -0.0289642979203642 -140 -0.0268317636147499 -141 -0.0245114013773254 -142 -0.0203659369554139 -143 0.0378050317430218 -144 0.426940829336361 -145 0.38796107377986 -146 0.0415547540823161 -147 -0.0195440376652659 -148 -0.0255053999646579 -149 -0.0275465915036962 -150 -0.0268562381835056 -151 -0.0234577846735018 -152 -0.0209532827400553 -153 -0.0189455488110332 -154 -0.02305883351641 -155 -0.0263771953757563 -156 -0.0280604279698784 -157 -0.0270717426772097 -158 -0.0246648903144108 -159 -0.0247175651482116 -160 -0.021051073568524 -161 -0.0163198388224076 -162 -0.0144235534240568 -163 -0.0136936717999382 -164 -0.01698846339106 -165 -0.0172619597265475 -166 -0.022224434827852 -167 -0.0219642323974638 -168 -0.0213243463149422 -169 -0.0192387869040187 -170 -0.0197178180625259 -171 -0.0247915784961403 -172 -0.0218270561892234 -173 -0.0262672996245232 -174 -0.024849965587679 -175 -0.0250252615288926 -176 -0.0251007165159392 -177 -0.0238806074688618 -178 -0.0238757651256144 -179 -0.0240426101294269 -180 -0.0234219466443065 -181 -0.0212602833600402 -182 -0.0229991714197526 -183 -0.0261227540349392 -184 -0.0221623986521011 -185 -0.0198657473347064 -186 0.036858247139314 -187 0.29256789370978 -188 0.217268577909927 -189 0.196770495691689 -190 0.094220865706204 -191 -0.0203791531848586 -192 -0.0242142425710697 -193 -0.0227327141359121 -194 -0.0219087131272295 -195 -0.0139180641371944 -196 -0.0165931483689415 -197 -0.0139691174427045 -198 -0.0250038332172815 -199 -0.0262538643545197 -200 -0.025280145240993 -201 -0.022716588551902 -202 -0.0229491126971064 -203 -0.020163745252957 -204 -0.0180649219211942 -205 -0.0174961232004392 -206 -0.0153752959032635 -207 -0.0151070882074296 -208 -0.0162636711403948 -209 -0.0213539658247787 -210 -0.0241878645706104 -211 -0.0233292145480391 -212 -0.0222792602366159 -213 -0.0200857928095336 -214 -0.0224102357962423 -215 -0.0200431331454358 -216 -0.0251386240282493 -217 -0.0217360075267156 -218 -0.0231247916814153 -219 -0.0236289558661022 -220 -0.022798275340034 -221 -0.022394916702971 -222 -0.0240641627722647 -223 -0.02767136777592 -224 -0.0188563255687053 -225 -0.0201523683449021 -226 -0.0196358949998781 -227 -0.0201572059848371 -228 -0.0180306969850485 -229 0.0330883208878215 -230 0.187053030884649 -231 0.180166992312632 -232 0.175193540635547 -233 0.0852511978178321 -234 0.0836036324945735 -235 -0.0180475894095978 -236 -0.0203965677916504 -237 -0.0234729155755235 -238 -0.0203967773857997 -239 -0.0168134546888542 -240 -0.0145823454491767 -241 -0.0182208080214287 -242 -0.0222702719218944 -243 -0.0245502962962475 -244 -0.0230701140380481 -245 -0.0205544743992634 -246 -0.0152766305199052 -247 -0.015660060910655 -248 -0.0182272831792615 -249 -0.0161416465628721 -250 -0.0138775731037607 -251 -0.0146059144127008 -252 -0.014851378459684 -253 -0.0174697076620558 -254 -0.020394504090619 -255 -0.020923051703186 -256 -0.0188690748415421 -257 -0.020691771573437 -258 -0.0180158099925264 -259 -0.025009300618942 -260 -0.0241656012183153 -261 -0.0201701986649696 -262 -0.0213418341591563 -263 -0.0212876158412719 -264 -0.0196613481631524 -265 -0.0224579972849258 -266 -0.0222709347842853 -267 -0.021839178151421 -268 -0.0181242059899927 -269 -0.0196595880691145 -270 -0.0176712734167537 -271 -0.0174037647691641 -272 0.0361609936559733 -273 0.136273065680629 -274 0.137142321378537 -275 0.119170985165791 -276 0.135128869617739 -277 0.0365729744317657 -278 0.0813532152332901 -279 -0.0164218823860774 -280 -0.0150012133117104 -281 -0.0180652264456629 -282 -0.0180223031364979 -283 -0.0146583895021702 -284 -0.0178385632762936 -285 -0.0183688063955637 -286 -0.0199104201945895 -287 -0.0209162045756424 -288 -0.0182424612671294 -289 -0.0102871995641823 -290 -0.0097194264103497 -291 -0.0166796622739482 -292 -0.0193090133043633 -293 -0.0109789304127889 -294 -0.0145511817849648 -295 -0.0159177263733151 -296 -0.0162297085566881 -297 -0.0160458825546633 -298 -0.0185277530735613 -299 -0.0201185134004853 -300 -0.0225767827149403 -301 -0.020600528590444 -302 -0.0178266254999198 -303 -0.0228272615104135 -304 -0.0188650304163709 -305 -0.0192512492130587 -306 -0.0198882781449453 -307 -0.018944580372254 -308 -0.0191976364453834 -309 -0.020380651922197 -310 -0.020008249388093 -311 -0.0199582696579672 -312 -0.016107489794778 -313 -0.0168857973840798 -314 -0.0159072805310197 -315 0.0337796643954297 -316 0.091400279956598 -317 0.128355772863555 -318 0.0811615095759163 -319 0.0770716694548368 -320 0.145070077843674 -321 -0.0188619341727165 -322 0.0799864438805513 -323 -0.0199478816959614 -324 -0.0210772723197886 -325 -0.0210646569907724 -326 -0.0200788443102393 -327 -0.0211662403279555 -328 -0.0167589827973132 -329 -0.0177459345163699 -330 -0.0176456584861234 -331 -0.0220878387663237 -332 -0.0138294678922046 -333 -0.00950860063270121 -334 -0.0127373100109087 -335 -0.0165386832541542 -336 -0.0182671925631197 -337 -0.0109720091878599 -338 -0.0142702474119185 -339 -0.0110379801788155 -340 -0.0154139924731546 -341 -0.0128889876019394 -342 -0.0173631353598641 -343 -0.0222795571128729 -344 -0.0201510823246637 -345 -0.014168231775332 -346 -0.0172988244822199 -347 -0.0166164172889096 -348 -0.0174591997875334 -349 -0.0178598488132696 -350 -0.0174148484681578 -351 -0.0181701494308226 -352 -0.0170602479756066 -353 -0.022860700637634 -354 -0.0186677124344551 -355 -0.0163631644839097 -356 -0.0150447805883455 -357 -0.0155934972805149 -358 0.0412705831487356 -359 0.0432271691160312 -360 0.134082054092421 -361 0.030429559359917 -362 0.128011199059957 -363 0.0290649669583617 -364 0.0977105919898357 -365 0.0268435678280154 -366 0.0353018054840323 -367 -0.0198055818066033 -368 -0.018378272291099 -369 -0.019916785016334 -370 -0.0205847247605069 -371 -0.0201224650176015 -372 -0.01627691948957 -373 -0.0153629187371632 -374 -0.0125002930105743 -375 -0.0160149273157025 -376 -0.0130459873232066 -377 -0.0117001449083753 -378 -0.0128253666323881 -379 -0.0149389076420028 -380 -0.0147672676170861 -381 -0.00941821935965455 -382 -0.00473688018446407 -383 -0.00808553215461901 -384 -0.0105108934303795 -385 -0.0155256488187373 -386 -0.0210836438529971 -387 -0.0194168403848756 -388 -0.0138959279148097 -389 -0.0167510111816621 -390 -0.0170725457918982 -391 -0.016150326422395 -392 -0.0187592561556726 -393 -0.0201368328637298 -394 -0.0171077907044443 -395 -0.0171103523390093 -396 -0.0182097163513887 -397 -0.0172423936894017 -398 -0.0146907180546899 -399 -0.0148205318166592 -400 -0.0144952560105946 -401 0.0391317015604062 -402 -0.00325045294442625 -403 0.135229844753472 -404 0.0339587870366385 -405 0.0833862815909146 -406 0.0775145154752597 -407 0.0288174710076017 -408 0.0542563755615635 -409 0.0810954683226646 -410 -0.017752492355491 -411 -0.0180579468812209 -412 -0.0189407872188061 -413 -0.0189713023163003 -414 -0.0189831714463216 -415 -0.0186956047569828 -416 -0.0188493030013216 -417 -0.0190954931073824 -418 -0.0189538951395989 -419 -0.0168159225101202 -420 -0.0149622277586486 -421 -0.0134585088118323 -422 -0.0107702264004257 -423 -0.0116881974906342 -424 -0.0135084097379996 -425 -0.0115600330212086 -426 -0.00385827806043179 -427 -0.00648046756427941 -428 -0.010678969741849 -429 -0.0174377994416611 -430 -0.0197415520446045 -431 -0.01387746808618 -432 -0.0142870555311067 -433 -0.0126167043533278 -434 -0.0145341368337345 -435 -0.0172588314742905 -436 -0.0192532464901077 -437 -0.0178888029842574 -438 -0.0149435002438141 -439 -0.0143499589296186 -440 -0.0113284320025856 -441 -0.0146907285452937 -442 -0.0118090676160861 -443 -0.0129550696231186 -444 -0.00943679479582223 -445 0.0410693940588715 -446 0.0981340063555525 -447 0.0301059977373294 -448 0.0798620238351765 -449 0.0399504241633469 -450 0.0799710609081107 -451 0.0375183260101038 -452 -0.0128846089593424 -453 0.093737068719454 -454 -0.0166488241943883 -455 -0.0171620322539306 -456 -0.0176681103949864 -457 -0.0177135709591161 -458 -0.0174025569142706 -459 -0.0176679666536122 -460 -0.0181412705139815 -461 -0.0178162340211567 -462 -0.0148661374954626 -463 -0.012878454938704 -464 -0.0136407519521233 -465 -0.0103957847636471 -466 -0.00908338367847883 -467 -0.0110136706236845 -468 -0.0121798225855914 -469 -0.00417292561751909 -470 -0.00307290764550916 -471 -0.00798497461616614 -472 -0.0111435895667381 -473 -0.0153727357774596 -474 -0.0130271532875312 -475 -0.0124190182516596 -476 -0.0084547082575317 -477 -0.00918576031696132 -478 -0.0162409259378339 -479 -0.018065492839516 -480 -0.0168355167430056 -481 -0.0140509731408616 -482 -0.0149035783683084 -483 -0.00931711982847588 -484 -0.014271656696945 -485 -0.0121711176661241 -486 -0.016804905268994 -487 -0.0104196286531009 -488 0.0383870537436679 -489 0.0552773935471216 -490 0.0345937652331171 -491 0.0813542198669446 -492 0.0363428500481453 -493 0.0402459628537269 -494 0.0880185317795738 -495 -0.0129023101613787 -496 0.0302552183198115 -497 0.0536535190947818 -498 -0.0156069516901892 -499 -0.0162156062091284 -500 -0.0162183722980474 -501 -0.0157747057135625 -502 -0.0166040466989765 -503 -0.0161608566990615 -504 -0.0167537182627031 -505 -0.0164722018431066 -506 -0.0143593770446019 -507 -0.012530817471516 -508 -0.0130107038316214 -509 -0.0127117424488491 -510 -0.0123582491090572 -511 -0.0143988077890034 -512 -0.0132043617399602 -513 -0.0121255066830081 -514 -0.00947286185269373 -515 -0.00465100530248661 -516 -0.0117788080303492 -517 -0.0130751296092514 -518 -0.0155036171011815 -519 -0.010643006695032 -520 -0.00739844298156769 -521 -0.0112412204699085 -522 -0.0161872155724303 -523 -0.0168989403333427 -524 -0.0153730958327368 -525 -0.0125043590711503 -526 -0.00940141758011818 -527 -0.00767975179438695 -528 -0.0109057442427293 -529 -0.0152170670171314 -530 -0.0148168636021302 -531 0.0536268084567977 -532 0.00159158256076242 -533 0.0395691988094227 -534 0.0851832556342331 -535 0.0404885336981451 -536 0.0359152408805565 -537 0.0400801815807958 -538 0.0426897422408288 -539 0.032487435819703 -540 0.0379746640301957 -541 -0.0114145850527779 -542 -0.0143266971158537 -543 -0.0144808626295274 -544 -0.0142835316361234 -545 -0.0144672980991767 -546 -0.0149347701157941 -547 -0.0147221461325212 -548 -0.0149340818843796 -549 -0.0149339646879691 -550 -0.0125515123976881 -551 -0.0106843909304337 -552 -0.0120477982033282 -553 -0.0107426813396423 -554 -0.0103781179386869 -555 -0.00980456885361171 -556 -0.0108064202489364 -557 -0.0121145826899896 -558 -0.00556810926546485 -559 -0.00930006259964903 -560 -0.00516953265688487 -561 -0.0103764487413688 -562 -0.0101531608339304 -563 -0.00918822426319678 -564 -0.0101644666934554 -565 -0.0112481176383032 -566 -0.0145127017542735 -567 -0.0147134045513878 -568 -0.0123144344086325 -569 -0.00570964879226978 -570 -0.0063187706922707 -571 -0.00374866158046794 -572 -0.013607724159013 -573 -0.0137804453374875 -574 -0.00939070104936453 -575 0.0423495547767671 -576 0.000209272987046017 -577 0.0880471222849516 -578 0.0385858128624645 -579 0.0396811891208319 -580 0.0353924058064461 -581 0.0495909051898724 -582 -0.0113155170664094 -583 0.0871168673380537 -584 -0.0115980451842322 -585 -0.0125526032386238 -586 -0.012561736194457 -587 -0.0122507426071209 -588 -0.0123064811043512 -589 -0.0121521641917975 -590 -0.0125333975284308 -591 -0.0130863343506295 -592 -0.0134314408515597 -593 -0.0107991754906669 -594 -0.00884398203252155 -595 -0.0100733336463772 -596 -0.00922955762602743 -597 -0.00949676131734901 -598 -0.0110224903229849 -599 -0.00991288650680148 -600 -0.00936825932623963 -601 -0.00980726528701717 -602 -0.00476664596953343 -603 -0.011430503413995 -604 -0.0113213354943102 -605 -0.0134064415109797 -606 -0.0126055847537459 -607 -0.0135083477615435 -608 -0.0113488370833923 -609 -0.0093156617098165 -610 -0.00976577466545605 -611 -0.0133363567698321 -612 -0.00759897085944556 -613 -0.00510037875494374 -614 -0.00408004384283288 -615 -0.00918160520147706 -616 -0.0108113236545845 -617 -0.0106231816617747 -618 -0.00758999243430865 -619 0.0435531551195662 -620 0.0520037268502813 -621 0.0439044539134388 -622 0.0386654726142954 -623 0.0394118644732992 -624 0.0449248987301056 -625 -0.00863719437291388 -626 0.0412392562292136 -627 0.0440129688249318 -628 -0.0101620925718705 -629 -0.0109600840877224 -630 -0.0112705053011257 -631 -0.0116301438053661 -632 -0.0113736455019991 -633 -0.0117661118641892 -634 -0.0113961495319145 -635 -0.0117740021837853 -636 -0.0117094958602983 -637 -0.00939366161371644 -638 -0.00755907350023703 -639 -0.00838658396126048 -640 -0.0074832135472603 -641 -0.00801205358318107 -642 -0.00624145194619799 -643 -0.0070240024426915 -644 -0.00834613473332137 -645 -0.00670243676363534 -646 -0.0106128186631781 -647 -0.0123852232161095 -648 -0.0124265826160123 -649 -0.0112567385689026 -650 -0.0126065730661914 -651 -0.0123854746644478 -652 -0.00987776546588025 -653 -0.00722003160503851 -654 -0.00380201074432189 -655 -0.00665072917336648 -656 -0.00528196776714817 -657 -0.00510807558151163 -658 -0.00811089821457131 -659 -0.00755766045240185 -660 -0.00919072675598614 -661 -0.00917820835177611 -662 0.0449751982709438 -663 0.00545567790804502 -664 0.047402752921981 -665 0.0446605853927159 -666 0.0383269966597984 -667 0.0485706532828867 -668 -0.00861899683875584 -669 0.036175649351787 -670 0.0495063574698606 -671 -0.00922596004976487 -672 -0.0101114415486753 -673 -0.00993735125464903 -674 -0.0100323503804273 -675 -0.0105460378506107 -676 -0.0101900492452311 -677 -0.0104909689537006 -678 -0.0106006916930028 -679 -0.0104312931865838 -680 -0.0103517278463301 -681 -0.00740828023970121 -682 -0.00544494861028685 -683 -0.00608611560648061 -684 -0.00534756025333046 -685 -0.0031542340646546 -686 -0.00508349746510613 -687 -0.00739762226897734 -688 -0.0053663959286737 -689 -0.00916557860646553 -690 -0.0110500156300869 -691 -0.00988205922376505 -692 -0.0109866472880073 -693 -0.0111866547046902 -694 -0.0111122786835176 -695 -0.0108203039490724 -696 -0.0102592902413053 -697 -0.0107873762797399 -698 -0.010503275107589 -699 -0.0107835661252666 -700 -0.00885386551992296 -701 -0.00913096053370505 -702 -0.006655207615153 -703 -0.00593455487034946 -704 -0.00427919054888438 -705 -0.007897096903017 -706 0.0490946252850488 -707 0.00815207966824887 -708 0.0473241399151052 -709 0.0451019841097689 -710 0.0479372536790981 -711 -0.00656127986315397 -712 0.0402549343925511 -713 0.0449105363109089 -714 -0.00775184190900309 -715 -0.00768054605133951 -716 -0.00839927750787529 -717 -0.00843853230017117 -718 -0.00790960738283612 -719 -0.0080103177775415 -720 -0.00742775541399996 -721 -0.00765629252098078 -722 -0.00799975093255115 -723 -0.00852792228057431 -724 -0.00869178550957608 -725 -0.00626674339877887 -726 -0.00412677151228354 -727 -0.0048446048963408 -728 -0.000902395625628718 -729 -0.000758143099110528 -730 -0.00408369870009201 -731 -0.00365498969615341 -732 -0.00766259847340275 -733 -0.00952428752243833 -734 -0.00944480113586648 -735 -0.00948862662694449 -736 -0.00966174451824508 -737 -0.00945600129424617 -738 -0.00943741727131444 -739 -0.00927951393185398 -740 -0.00928797610609347 -741 -0.0093286159789273 -742 -0.00765123775530771 -743 -0.00891136789083873 -744 -0.00940772724441718 -745 -0.00786456325355482 -746 -0.0047977712696699 -747 -0.00308223523552548 -748 0.000335699172084439 -749 -0.00143686229797692 -750 0.0513266950133769 -751 0.00563569816195414 -752 0.0477166719391144 -753 0.0538442014782216 -754 -0.0056982279416085 -755 0.0394329868140949 -756 0.0485711646307275 -757 -0.00685930745583302 -758 -0.0069941514632557 -759 -0.0066395137630499 -760 -0.00736962474522024 -761 -0.00752916655217279 -762 -0.00739785479449587 -763 -0.00756967688350672 -764 -0.00753735518588655 -765 -0.00780124181595982 -766 -0.0077216624864741 -767 -0.00784018338356136 -768 -0.00785468874319521 -769 -0.00421699574952483 -770 -0.00190288158223283 -771 -0.000206480072774308 -772 0.00141964253926074 -773 -4.28774976178744e-05 -774 -0.000986275524641414 -775 -0.00657709364993877 -776 -0.00833283088512488 -777 -0.00818951629006444 -778 -0.00836751926023713 -779 -0.00846989619881298 -780 -0.00820214471451413 -781 -0.00821893302874576 -782 -0.00796875201723603 -783 -0.00797370090373924 -784 -0.00777868495761638 -785 -0.00789699981214183 -786 -0.00815610674254451 -787 -0.00778049198735858 -788 -0.00818383133025141 -789 -0.00781336379026083 -790 -0.00682906252309473 -791 -0.00521347355977257 -792 -0.00500213245575373 -793 -0.00506883410260168 -794 0.0474518412366765 -795 0.00530982771618318 -796 0.0565700977023552 -797 -0.000392750407902867 -798 0.0453538486416986 -799 0.0476616389325516 -800 -0.00485863626421196 -801 -0.00525412195734806 -802 -0.00565503507026226 -803 -0.00551485423027977 -804 -0.00524396672704169 -805 -0.00590408701477556 -806 -0.00575508257342466 -807 -0.0058689006002845 -808 -0.00561694855307918 -809 -0.00612555234095552 -810 -0.00608574219510099 -811 -0.00564904015986621 -812 -0.00490660016533395 -813 -0.0046171197705464 -814 0.00177390652695689 -815 0.0035896881022546 -816 0.00161554733058578 -817 0.00437187124600963 -818 -0.000991588850557123 -819 -0.00478099352848916 -820 -0.00637007664471483 -821 -0.00627509734235782 -822 -0.00655857327658989 -823 -0.00656425755979379 -824 -0.00650927617188294 -825 -0.00650262457960547 -826 -0.00662413230967772 -827 -0.00657738252698944 -828 -0.00645476393708 -829 -0.00659463926044406 -830 -0.00649001643087145 -831 -0.00610360245952262 -832 -0.00578387897293013 -833 -0.00402985580826015 -834 -0.00406634314030596 -835 -0.00261501841642483 -836 -0.00301755910132054 -837 -0.00326543386600453 -838 0.0572941624786258 -839 0.00764310260634384 -840 0.00124989263445848 -841 0.0485617649608875 -842 0.0534245959427794 -843 -0.00365723487459394 -844 -0.00424930954244624 -845 -0.00447294923783986 -846 -0.0044749818394267 -847 -0.00464870339809727 -848 -0.00404145529364563 -849 -0.0047634223597755 -850 -0.00467301475043984 -851 -0.00482869667199491 -852 -0.00492239000387982 -853 -0.00463765006041817 -854 -0.0046895918656674 -855 -0.00469126659620766 -856 -0.00430815035273188 -857 -0.00128800088385523 -858 0.00267781615699824 -859 0.00356342242419808 -860 0.00436645666734667 -861 0.00184035931246651 -862 -0.000943211896465123 -863 -0.00341308542653818 -864 -0.00529528124001912 -865 -0.00542898683100493 -866 -0.00553749798487258 -867 -0.00551487806193758 -868 -0.00531561848433044 -869 -0.0053876668196608 -870 -0.00553192702900933 -871 -0.00563989142175504 -872 -0.00521799189299869 -873 -0.00553828490350608 -874 -0.00542860483166627 -875 -0.00537895256953826 -876 -0.00402015584547178 -877 -0.00377599406291178 -878 -0.00402869364355377 -879 -0.00251857216946617 -880 -0.00240522631583728 -881 -0.00231339313710883 -882 -0.00221867026914885 -883 0.0485842407165457 -884 0.00444090950886226 -885 0.052462247531025 -886 -0.00245866728272721 -887 -0.00219100298033388 -888 -0.00258850605081842 -889 -0.0027963562987193 -890 -0.00291992258910256 -891 -0.00299261604099267 -892 -0.00287127254000797 -893 -0.00289608069594768 -894 -0.00280812344627608 -895 -0.00270762901550325 -896 -0.00266975879125481 -897 -0.00220006592251856 -898 -0.00202466427043569 -899 0.0013412649013256 -900 0.00249450051103929 -901 0.00162230152238072 -902 0.00338232047570188 -903 -6.05925325718229e-05 -904 -0.00259194486873829 -905 -0.00291640344192111 -906 -0.00250008679719597 -907 -0.0028490159247303 -908 -0.00308392356343406 -909 -0.00315698199289235 -910 -0.00298811214364333 -911 -0.00314332876724667 -912 -0.0031949080511993 -913 -0.00322269110310181 -914 -0.00327914040255845 -915 -0.00328848900129892 -916 -0.00333752382027206 -917 -0.00309757512659634 -918 -0.00328479456404456 -919 -0.00212177476264958 -920 -0.00213301941637447 -921 -0.00216845672650316 -922 -0.00207541491244113 -923 -0.00207359226664921 -924 -0.000795789430015217 -925 -0.000779514662456165 -926 -0.000756465833443346 -927 0.0577265267706453 -928 0.00687785865649293 -929 -0.00083343873726207 -930 -0.00107719646114928 -931 -0.00108475651120658 -932 -0.00117127681410593 -933 -0.00122811644473185 -934 -0.00127607908277042 -935 -0.00131021310298656 -936 -0.0013179072335 -937 -0.00147237322207706 -938 -0.00138343425729852 -939 -0.00136475351227092 -940 -0.00143219923016344 -941 -0.00132045547517709 -942 -0.00124130927220743 -943 -0.00118457113968125 -944 -0.0011509753919375 -945 -0.000999222689811352 -946 -0.00117359451012239 -947 -0.00105429594479484 -948 -0.00122085082695325 -949 -0.00129578013904683 -950 -0.00102761415169174 -951 -0.00140096472953254 -952 -0.00139860939031699 -953 -0.00151498094704311 -954 -0.0014719650713445 -955 -0.00156023800835947 -956 -0.00160881766904741 -957 -0.00156225880303738 -958 -0.00163459726309757 -959 -0.00163126714870796 -960 -0.00165394472715442 -961 -5.20102850007659e-05 -962 -0.000181333021969587 -963 -0.000229410914437179 -964 -0.000271936329999531 -965 -0.000289225646672715 -966 -0.000264626695269327 -967 -0.000343743683778553 -968 0.00109579617257524 -969 0.00106253650901319 -970 0.00103053375796608 -971 0.000994475133650943 -972 0.00096219604797213 -973 0.000930291083643673 -974 0.00089629434032705 -975 0.000862706715224073 -976 0.000829567281721935 -977 0.000796368072697504 -978 0.000761767798271763 -979 0.000730769092014861 -980 0.000695768030599533 -981 0.000665093515571032 -982 0.000631804759496164 -983 0.000597688431802904 -984 0.000571043223397954 -985 0.00053621559120878 -986 0.0005056031461063 -987 0.000470414024698076 -988 0.000436113652307852 -989 0.000401280866025421 -990 0.000366892747802913 -991 0.000332558486017457 -992 0.00029776201514551 -993 0.000264088081422397 -994 0.000229570195953799 -995 0.000203049247782519 -996 0.000169032219339048 -997 0.000134474421245207 -998 0.000100377453607142 -999 6.59658062483004e-05 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat deleted file mode 100644 index 619ef984..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat +++ /dev/null @@ -1,901 +0,0 @@ -#scatter real total user system repeat -101 0.00208497047424316 0.0 0.0 0.0 101 -102 0.00208020210266113 0.0 0.0 0.0 102 -103 0.00206804275512695 0.0 0.0 0.0 103 -104 0.00207710266113281 0.0 0.0 0.0 104 -105 0.00206398963928223 0.00999999999999979 0.00999999999999979 0.0 105 -106 0.00206398963928223 0.0 0.0 0.0 106 -107 0.00208497047424316 0.0 0.0 0.0 107 -108 0.00206398963928223 0.0 0.0 0.0 108 -109 0.00207400321960449 0.0 0.0 0.0 109 -110 0.00206398963928223 0.0 0.0 0.0 110 -111 0.00205802917480469 0.0 0.0 0.0 111 -112 0.00207996368408203 0.0 0.0 0.0 112 -113 0.00207304954528809 0.0 0.0 0.0 113 -114 0.00206899642944336 0.00999999999999979 0.00999999999999979 0.0 114 -115 0.00207114219665527 0.0 0.0 0.0 115 -116 0.00212287902832031 0.0 0.0 0.0 116 -117 0.00205707550048828 0.0 0.0 0.0 117 -118 0.0020599365234375 0.0 0.0 0.0 118 -119 0.00206613540649414 0.0100000000000016 0.0100000000000016 0.0 119 -120 0.00205683708190918 0.0 0.0 0.0 120 -121 0.00205206871032715 0.0 0.0 0.0 121 -122 0.00204992294311523 0.0 0.0 0.0 122 -123 0.00208115577697754 0.0 0.0 0.0 123 -124 0.00205588340759277 0.00999999999999979 0.00999999999999979 0.0 124 -125 0.00207877159118652 0.0 0.0 0.0 125 -126 0.00207400321960449 0.0 0.0 0.0 126 -127 0.00206089019775391 0.0 0.0 0.0 127 -128 0.00205779075622559 0.00999999999999979 0.00999999999999979 0.0 128 -129 0.00205898284912109 0.0 0.0 0.0 129 -130 0.00206899642944336 0.0 0.0 0.0 130 -131 0.00204896926879883 0.0 0.0 0.0 131 -132 0.00209593772888184 0.0 0.0 0.0 132 -133 0.00208401679992676 0.00999999999999979 0.00999999999999979 0.0 133 -134 0.0276279449462891 0.0199999999999996 0.0199999999999996 0.0 134 -135 0.0021820068359375 0.00999999999999979 0.00999999999999979 0.0 135 -136 0.00213503837585449 0.0 0.0 0.0 136 -137 0.00211405754089355 0.0 0.0 0.0 137 -138 0.00212502479553223 0.0 0.0 0.0 138 -139 0.0020899772644043 0.0 0.0 0.0 139 -140 0.00207901000976562 0.00999999999999979 0.00999999999999979 0.0 140 -141 0.00206589698791504 0.0 0.0 0.0 141 -142 0.00207710266113281 0.0 0.0 0.0 142 -143 0.00205492973327637 0.0 0.0 0.0 143 -144 0.00208020210266113 0.0 0.0 0.0 144 -145 0.00206184387207031 0.00999999999999979 0.00999999999999979 0.0 145 -146 0.00208377838134766 0.0 0.0 0.0 146 -147 0.00206995010375977 0.0 0.0 0.0 147 -148 0.00206708908081055 0.0 0.0 0.0 148 -149 0.00207114219665527 0.0100000000000016 0.0100000000000016 0.0 149 -150 0.0020759105682373 0.0 0.0 0.0 150 -151 0.0021510124206543 0.0 0.0 0.0 151 -152 0.00207805633544922 0.0 0.0 0.0 152 -153 0.00206089019775391 0.0 0.0 0.0 153 -154 0.00206089019775391 0.00999999999999979 0.00999999999999979 0.0 154 -155 0.00207614898681641 0.0 0.0 0.0 155 -156 0.00205588340759277 0.0 0.0 0.0 156 -157 0.00206494331359863 0.0 0.0 0.0 157 -158 0.00280499458312988 0.00999999999999979 0.00999999999999979 0.0 158 -159 0.00453996658325195 0.0 0.0 0.0 159 -160 0.00369596481323242 0.0 0.0 0.0 160 -161 0.00410914421081543 0.00999999999999979 0.00999999999999979 0.0 161 -162 0.00381112098693848 0.0 0.0 0.0 162 -163 0.00235795974731445 0.0 0.0 0.0 163 -164 0.00209784507751465 0.0 0.0 0.0 164 -165 0.00204992294311523 0.00999999999999979 0.00999999999999979 0.0 165 -166 0.00204110145568848 0.0 0.0 0.0 166 -167 0.00205802917480469 0.0 0.0 0.0 167 -168 0.00205707550048828 0.0 0.0 0.0 168 -169 0.00208711624145508 0.0 0.0 0.0 169 -170 0.00208187103271484 0.00999999999999979 0.00999999999999979 0.0 170 -171 0.00205421447753906 0.0 0.0 0.0 171 -172 0.0020749568939209 0.0 0.0 0.0 172 -173 0.00210809707641602 0.0 0.0 0.0 173 -174 0.00206804275512695 0.00999999999999979 0.00999999999999979 0.0 174 -175 0.00205206871032715 0.0 0.0 0.0 175 -176 0.00207614898681641 0.0 0.0 0.0 176 -177 0.0020759105682373 0.0 0.0 0.0 177 -178 0.0242831707000732 0.0300000000000011 0.0300000000000011 0.0 178 -179 0.00222992897033691 0.0 0.0 0.0 179 -180 0.00214791297912598 0.0 0.0 0.0 180 -181 0.00211286544799805 0.0 0.0 0.0 181 -182 0.00209379196166992 0.0 0.0 0.0 182 -183 0.00209307670593262 0.0 0.0 0.0 183 -184 0.00218510627746582 0.0 0.0 0.0 184 -185 0.00206613540649414 0.0 0.0 0.0 185 -186 0.00207090377807617 0.0 0.0 0.0 186 -187 0.00206613540649414 0.00999999999999979 0.00999999999999979 0.0 187 -188 0.00206112861633301 0.0 0.0 0.0 188 -189 0.00206303596496582 0.0 0.0 0.0 189 -190 0.00205802917480469 0.0 0.0 0.0 190 -191 0.00206398963928223 0.0 0.0 0.0 191 -192 0.00210189819335938 0.00999999999999979 0.00999999999999979 0.0 192 -193 0.00206804275512695 0.0 0.0 0.0 193 -194 0.00206708908081055 0.0 0.0 0.0 194 -195 0.00206208229064941 0.0 0.0 0.0 195 -196 0.0020899772644043 0.0 0.0 0.0 196 -197 0.00205612182617188 0.00999999999999979 0.00999999999999979 0.0 197 -198 0.00205898284912109 0.0 0.0 0.0 198 -199 0.00208115577697754 0.0 0.0 0.0 199 -200 0.0020759105682373 0.0 0.0 0.0 200 -201 0.00205302238464355 0.00999999999999979 0.00999999999999979 0.0 201 -202 0.00206995010375977 0.0 0.0 0.0 202 -203 0.00206089019775391 0.0 0.0 0.0 203 -204 0.0020439624786377 0.0 0.0 0.0 204 -205 0.00207185745239258 0.0 0.0 0.0 205 -206 0.0020449161529541 0.00999999999999979 0.00999999999999979 0.0 206 -207 0.00223898887634277 0.0 0.0 0.0 207 -208 0.00205707550048828 0.0 0.0 0.0 208 -209 0.00206303596496582 0.0 0.0 0.0 209 -210 0.00205707550048828 0.0 0.0 0.0 210 -211 0.00204896926879883 0.0100000000000016 0.0100000000000016 0.0 211 -212 0.00204205513000488 0.0 0.0 0.0 212 -213 0.00211596488952637 0.0 0.0 0.0 213 -214 0.00206494331359863 0.0 0.0 0.0 214 -215 0.0020749568939209 0.0 0.0 0.0 215 -216 0.00206279754638672 0.00999999999999979 0.00999999999999979 0.0 216 -217 0.00206589698791504 0.0 0.0 0.0 217 -218 0.00207114219665527 0.0 0.0 0.0 218 -219 0.00208210945129395 0.0 0.0 0.0 219 -220 0.00207901000976562 0.00999999999999979 0.00999999999999979 0.0 220 -221 0.00207304954528809 0.0 0.0 0.0 221 -222 0.00209498405456543 0.0 0.0 0.0 222 -223 0.0286588668823242 0.0299999999999994 0.0299999999999994 0.0 223 -224 0.00219297409057617 0.0 0.0 0.0 224 -225 0.00214004516601562 0.0 0.0 0.0 225 -226 0.00212192535400391 0.00999999999999979 0.00999999999999979 0.0 226 -227 0.00208878517150879 0.0 0.0 0.0 227 -228 0.00208306312561035 0.0 0.0 0.0 228 -229 0.00206398963928223 0.0 0.0 0.0 229 -230 0.00207996368408203 0.0 0.0 0.0 230 -231 0.00206494331359863 0.00999999999999979 0.00999999999999979 0.0 231 -232 0.00206494331359863 0.0 0.0 0.0 232 -233 0.0020751953125 0.0 0.0 0.0 233 -234 0.00207805633544922 0.0 0.0 0.0 234 -235 0.00206494331359863 0.0 0.0 0.0 235 -236 0.00206398963928223 0.00999999999999979 0.00999999999999979 0.0 236 -237 0.0020749568939209 0.0 0.0 0.0 237 -238 0.00206494331359863 0.0 0.0 0.0 238 -239 0.00206494331359863 0.0 0.0 0.0 239 -240 0.00205492973327637 0.0 0.0 0.0 240 -241 0.00206518173217773 0.0100000000000016 0.0100000000000016 0.0 241 -242 0.00207686424255371 0.0 0.0 0.0 242 -243 0.00204920768737793 0.0 0.0 0.0 243 -244 0.00206398963928223 0.0 0.0 0.0 244 -245 0.00206184387207031 0.00999999999999979 0.00999999999999979 0.0 245 -246 0.00205397605895996 0.0 0.0 0.0 246 -247 0.00206804275512695 0.0 0.0 0.0 247 -248 0.00204014778137207 0.0 0.0 0.0 248 -249 0.00206995010375977 0.0 0.0 0.0 249 -250 0.00205802917480469 0.00999999999999979 0.00999999999999979 0.0 250 -251 0.00205612182617188 0.0 0.0 0.0 251 -252 0.0020439624786377 0.0 0.0 0.0 252 -253 0.00204610824584961 0.0 0.0 0.0 253 -254 0.00206518173217773 0.0 0.0 0.0 254 -255 0.00204300880432129 0.00999999999999979 0.00999999999999979 0.0 255 -256 0.00205802917480469 0.0 0.0 0.0 256 -257 0.0020759105682373 0.0 0.0 0.0 257 -258 0.00206303596496582 0.0 0.0 0.0 258 -259 0.00207281112670898 0.0 0.0 0.0 259 -260 0.00205898284912109 0.00999999999999979 0.00999999999999979 0.0 260 -261 0.00205898284912109 0.0 0.0 0.0 261 -262 0.00205683708190918 0.0 0.0 0.0 262 -263 0.00207901000976562 0.0 0.0 0.0 263 -264 0.00206780433654785 0.00999999999999979 0.00999999999999979 0.0 264 -265 0.00208497047424316 0.0 0.0 0.0 265 -266 0.00219416618347168 0.0 0.0 0.0 266 -267 0.024918794631958 0.0199999999999996 0.0199999999999996 0.0 267 -268 0.00214409828186035 0.0100000000000016 0.0100000000000016 0.0 268 -269 0.0021209716796875 0.0 0.0 0.0 269 -270 0.00211095809936523 0.0 0.0 0.0 270 -271 0.00207209587097168 0.0 0.0 0.0 271 -272 0.0020902156829834 0.00999999999999979 0.00999999999999979 0.0 272 -273 0.00208091735839844 0.0 0.0 0.0 273 -274 0.00206494331359863 0.0 0.0 0.0 274 -275 0.00207281112670898 0.0 0.0 0.0 275 -276 0.00205397605895996 0.0 0.0 0.0 276 -277 0.0020599365234375 0.00999999999999979 0.00999999999999979 0.0 277 -278 0.00206208229064941 0.0 0.0 0.0 278 -279 0.00205898284912109 0.0 0.0 0.0 279 -280 0.00207304954528809 0.0 0.0 0.0 280 -281 0.0020909309387207 0.0 0.0 0.0 281 -282 0.00206708908081055 0.00999999999999979 0.00999999999999979 0.0 282 -283 0.00206303596496582 0.0 0.0 0.0 283 -284 0.0020449161529541 0.0 0.0 0.0 284 -285 0.00206398963928223 0.0 0.0 0.0 285 -286 0.00204992294311523 0.0 0.0 0.0 286 -287 0.00205111503601074 0.00999999999999979 0.00999999999999979 0.0 287 -288 0.00205397605895996 0.0 0.0 0.0 288 -289 0.00206589698791504 0.0 0.0 0.0 289 -290 0.00206184387207031 0.0 0.0 0.0 290 -291 0.00207281112670898 0.00999999999999979 0.00999999999999979 0.0 291 -292 0.00205683708190918 0.0 0.0 0.0 292 -293 0.00205802917480469 0.0 0.0 0.0 293 -294 0.00206208229064941 0.0 0.0 0.0 294 -295 0.00205206871032715 0.0 0.0 0.0 295 -296 0.00206208229064941 0.00999999999999979 0.00999999999999979 0.0 296 -297 0.00205707550048828 0.0 0.0 0.0 297 -298 0.00207400321960449 0.0 0.0 0.0 298 -299 0.00205802917480469 0.0 0.0 0.0 299 -300 0.00205802917480469 0.0 0.0 0.0 300 -301 0.00207018852233887 0.00999999999999979 0.00999999999999979 0.0 301 -302 0.00206995010375977 0.0 0.0 0.0 302 -303 0.0021510124206543 0.0 0.0 0.0 303 -304 0.0020599365234375 0.0 0.0 0.0 304 -305 0.00206208229064941 0.0 0.0 0.0 305 -306 0.00221395492553711 0.0100000000000016 0.0100000000000016 0.0 306 -307 0.00210285186767578 0.0 0.0 0.0 307 -308 0.00223803520202637 0.0 0.0 0.0 308 -309 0.0020909309387207 0.0 0.0 0.0 309 -310 0.00207996368408203 0.00999999999999979 0.00999999999999979 0.0 310 -311 0.0255651473999023 0.0199999999999996 0.0199999999999996 0.0 311 -312 0.00424313545227051 0.00999999999999979 0.00999999999999979 0.0 312 -313 0.00345015525817871 0.0 0.0 0.0 313 -314 0.00213217735290527 0.0 0.0 0.0 314 -315 0.00210309028625488 0.0 0.0 0.0 315 -316 0.00207686424255371 0.00999999999999979 0.00999999999999979 0.0 316 -317 0.00207209587097168 0.0 0.0 0.0 317 -318 0.00213503837585449 0.0 0.0 0.0 318 -319 0.00294709205627441 0.0 0.0 0.0 319 -320 0.00207018852233887 0.00999999999999979 0.00999999999999979 0.0 320 -321 0.00208091735839844 0.0 0.0 0.0 321 -322 0.00208783149719238 0.0 0.0 0.0 322 -323 0.00208806991577148 0.0 0.0 0.0 323 -324 0.00208210945129395 0.0 0.0 0.0 324 -325 0.0020601749420166 0.00999999999999979 0.00999999999999979 0.0 325 -326 0.00206303596496582 0.0 0.0 0.0 326 -327 0.00205588340759277 0.0 0.0 0.0 327 -328 0.00206208229064941 0.0 0.0 0.0 328 -329 0.00205492973327637 0.0 0.0 0.0 329 -330 0.00205683708190918 0.00999999999999979 0.00999999999999979 0.0 330 -331 0.00205397605895996 0.0 0.0 0.0 331 -332 0.00206303596496582 0.0 0.0 0.0 332 -333 0.00205397605895996 0.0 0.0 0.0 333 -334 0.00205802917480469 0.0 0.0 0.0 334 -335 0.00204992294311523 0.0100000000000016 0.0100000000000016 0.0 335 -336 0.0020599365234375 0.0 0.0 0.0 336 -337 0.00216293334960938 0.0 0.0 0.0 337 -338 0.00204205513000488 0.0 0.0 0.0 338 -339 0.00208377838134766 0.00999999999999979 0.00999999999999979 0.0 339 -340 0.00212287902832031 0.0 0.0 0.0 340 -341 0.00205206871032715 0.0 0.0 0.0 341 -342 0.00207185745239258 0.0 0.0 0.0 342 -343 0.00206279754638672 0.0 0.0 0.0 343 -344 0.00204896926879883 0.00999999999999979 0.00999999999999979 0.0 344 -345 0.00205779075622559 0.0 0.0 0.0 345 -346 0.00207614898681641 0.0 0.0 0.0 346 -347 0.00204992294311523 0.0 0.0 0.0 347 -348 0.00206398963928223 0.0 0.0 0.0 348 -349 0.00206184387207031 0.00999999999999979 0.00999999999999979 0.0 349 -350 0.00206518173217773 0.0 0.0 0.0 350 -351 0.00207805633544922 0.0 0.0 0.0 351 -352 0.0020749568939209 0.0 0.0 0.0 352 -353 0.00208401679992676 0.0 0.0 0.0 353 -354 0.00214099884033203 0.00999999999999979 0.00999999999999979 0.0 354 -355 0.0242671966552734 0.0199999999999996 0.0199999999999996 0.0 355 -356 0.00216913223266602 0.0 0.0 0.0 356 -357 0.00213503837585449 0.00999999999999979 0.00999999999999979 0.0 357 -358 0.00212192535400391 0.0 0.0 0.0 358 -359 0.00210094451904297 0.0 0.0 0.0 359 -360 0.0020909309387207 0.0 0.0 0.0 360 -361 0.00209498405456543 0.0 0.0 0.0 361 -362 0.00208592414855957 0.0100000000000016 0.0100000000000016 0.0 362 -363 0.00206685066223145 0.0 0.0 0.0 363 -364 0.00205492973327637 0.0 0.0 0.0 364 -365 0.00207710266113281 0.0 0.0 0.0 365 -366 0.00207304954528809 0.0 0.0 0.0 366 -367 0.00205421447753906 0.0 0.0 0.0 367 -368 0.00206685066223145 0.0 0.0 0.0 368 -369 0.00206613540649414 0.0 0.0 0.0 369 -370 0.00255608558654785 0.0 0.0 0.0 370 -371 0.00206899642944336 0.00999999999999979 0.00999999999999979 0.0 371 -372 0.00216817855834961 0.0 0.0 0.0 372 -373 0.00214409828186035 0.0 0.0 0.0 373 -374 0.00205111503601074 0.0 0.0 0.0 374 -375 0.0020749568939209 0.0 0.0 0.0 375 -376 0.0020759105682373 0.00999999999999979 0.00999999999999979 0.0 376 -377 0.0020599365234375 0.0 0.0 0.0 377 -378 0.00207805633544922 0.0 0.0 0.0 378 -379 0.00205898284912109 0.0 0.0 0.0 379 -380 0.00205492973327637 0.0 0.0 0.0 380 -381 0.00205397605895996 0.00999999999999979 0.00999999999999979 0.0 381 -382 0.00205588340759277 0.0 0.0 0.0 382 -383 0.00204014778137207 0.0 0.0 0.0 383 -384 0.00204610824584961 0.0 0.0 0.0 384 -385 0.00206184387207031 0.0 0.0 0.0 385 -386 0.00203680992126465 0.00999999999999979 0.00999999999999979 0.0 386 -387 0.00206804275512695 0.0 0.0 0.0 387 -388 0.00205707550048828 0.0 0.0 0.0 388 -389 0.00206804275512695 0.0 0.0 0.0 389 -390 0.00206589698791504 0.00999999999999979 0.00999999999999979 0.0 390 -391 0.00206780433654785 0.0 0.0 0.0 391 -392 0.00206494331359863 0.0 0.0 0.0 392 -393 0.00206303596496582 0.0 0.0 0.0 393 -394 0.00204896926879883 0.0 0.0 0.0 394 -395 0.00207185745239258 0.00999999999999979 0.00999999999999979 0.0 395 -396 0.00207304954528809 0.0 0.0 0.0 396 -397 0.00208806991577148 0.0 0.0 0.0 397 -398 0.00208806991577148 0.0 0.0 0.0 398 -399 0.024277925491333 0.0300000000000011 0.0300000000000011 0.0 399 -400 0.00216102600097656 0.0 0.0 0.0 400 -401 0.00212621688842773 0.0 0.0 0.0 401 -402 0.00209689140319824 0.0 0.0 0.0 402 -403 0.00210285186767578 0.00999999999999979 0.00999999999999979 0.0 403 -404 0.00208210945129395 0.0 0.0 0.0 404 -405 0.00401806831359863 0.0 0.0 0.0 405 -406 0.00404691696166992 0.00999999999999979 0.00999999999999979 0.0 406 -407 0.00400710105895996 0.0 0.0 0.0 407 -408 0.00207805633544922 0.0 0.0 0.0 408 -409 0.00208497047424316 0.0 0.0 0.0 409 -410 0.0020751953125 0.00999999999999979 0.00999999999999979 0.0 410 -411 0.00208187103271484 0.0 0.0 0.0 411 -412 0.00213217735290527 0.0 0.0 0.0 412 -413 0.00207400321960449 0.0 0.0 0.0 413 -414 0.00206208229064941 0.0 0.0 0.0 414 -415 0.00206613540649414 0.00999999999999979 0.00999999999999979 0.0 415 -416 0.00204205513000488 0.0 0.0 0.0 416 -417 0.00208091735839844 0.0 0.0 0.0 417 -418 0.00227904319763184 0.0 0.0 0.0 418 -419 0.00206899642944336 0.00999999999999979 0.00999999999999979 0.0 419 -420 0.00207114219665527 0.0 0.0 0.0 420 -421 0.00207090377807617 0.0 0.0 0.0 421 -422 0.00204086303710938 0.0 0.0 0.0 422 -423 0.00205683708190918 0.0 0.0 0.0 423 -424 0.00205421447753906 0.00999999999999979 0.00999999999999979 0.0 424 -425 0.00205588340759277 0.0 0.0 0.0 425 -426 0.0020439624786377 0.0 0.0 0.0 426 -427 0.00203394889831543 0.0 0.0 0.0 427 -428 0.0020599365234375 0.0 0.0 0.0 428 -429 0.00205612182617188 0.0100000000000016 0.0100000000000016 0.0 429 -430 0.00206303596496582 0.0 0.0 0.0 430 -431 0.00206899642944336 0.0 0.0 0.0 431 -432 0.00206804275512695 0.0 0.0 0.0 432 -433 0.00212502479553223 0.0 0.0 0.0 433 -434 0.00207805633544922 0.00999999999999979 0.00999999999999979 0.0 434 -435 0.00205397605895996 0.0 0.0 0.0 435 -436 0.00214004516601562 0.0 0.0 0.0 436 -437 0.0020451545715332 0.0 0.0 0.0 437 -438 0.0020599365234375 0.00999999999999979 0.00999999999999979 0.0 438 -439 0.00207805633544922 0.0 0.0 0.0 439 -440 0.00207304954528809 0.0 0.0 0.0 440 -441 0.00207090377807617 0.0 0.0 0.0 441 -442 0.0238261222839355 0.0299999999999994 0.0299999999999994 0.0 442 -443 0.00229191780090332 0.0 0.0 0.0 443 -444 0.00225210189819336 0.0 0.0 0.0 444 -445 0.00214314460754395 0.0 0.0 0.0 445 -446 0.00211405754089355 0.0 0.0 0.0 446 -447 0.0021059513092041 0.00999999999999979 0.00999999999999979 0.0 447 -448 0.00212502479553223 0.0 0.0 0.0 448 -449 0.00215005874633789 0.0 0.0 0.0 449 -450 0.00206708908081055 0.0 0.0 0.0 450 -451 0.00206208229064941 0.00999999999999979 0.00999999999999979 0.0 451 -452 0.00206995010375977 0.0 0.0 0.0 452 -453 0.00207304954528809 0.0 0.0 0.0 453 -454 0.00208711624145508 0.0 0.0 0.0 454 -455 0.00207400321960449 0.0 0.0 0.0 455 -456 0.00205802917480469 0.0100000000000016 0.0100000000000016 0.0 456 -457 0.00207400321960449 0.0 0.0 0.0 457 -458 0.00209999084472656 0.0 0.0 0.0 458 -459 0.00374412536621094 0.0 0.0 0.0 459 -460 0.00207614898681641 0.0 0.0 0.0 460 -461 0.00207996368408203 0.00999999999999979 0.00999999999999979 0.0 461 -462 0.00205206871032715 0.0 0.0 0.0 462 -463 0.00207209587097168 0.0 0.0 0.0 463 -464 0.00206708908081055 0.0 0.0 0.0 464 -465 0.00206398963928223 0.0 0.0 0.0 465 -466 0.00205302238464355 0.00999999999999979 0.00999999999999979 0.0 466 -467 0.00206995010375977 0.0 0.0 0.0 467 -468 0.00209617614746094 0.0 0.0 0.0 468 -469 0.00206899642944336 0.0 0.0 0.0 469 -470 0.0020451545715332 0.0 0.0 0.0 470 -471 0.00206589698791504 0.00999999999999979 0.00999999999999979 0.0 471 -472 0.0020442008972168 0.0 0.0 0.0 472 -473 0.00206089019775391 0.0 0.0 0.0 473 -474 0.00205492973327637 0.0 0.0 0.0 474 -475 0.00206708908081055 0.0 0.0 0.0 475 -476 0.00205087661743164 0.00999999999999979 0.00999999999999979 0.0 476 -477 0.00206589698791504 0.0 0.0 0.0 477 -478 0.00207209587097168 0.0 0.0 0.0 478 -479 0.00204992294311523 0.0 0.0 0.0 479 -480 0.00207209587097168 0.00999999999999979 0.00999999999999979 0.0 480 -481 0.0020599365234375 0.0 0.0 0.0 481 -482 0.00206613540649414 0.0 0.0 0.0 482 -483 0.00205898284912109 0.0 0.0 0.0 483 -484 0.00209403038024902 0.0 0.0 0.0 484 -485 0.00207710266113281 0.00999999999999979 0.00999999999999979 0.0 485 -486 0.0239040851593018 0.0200000000000014 0.0200000000000014 0.0 486 -487 0.00222492218017578 0.0 0.0 0.0 487 -488 0.00213289260864258 0.0 0.0 0.0 488 -489 0.0021212100982666 0.00999999999999979 0.00999999999999979 0.0 489 -490 0.0021059513092041 0.0 0.0 0.0 490 -491 0.00208616256713867 0.0 0.0 0.0 491 -492 0.00208687782287598 0.0 0.0 0.0 492 -493 0.00207901000976562 0.0 0.0 0.0 493 -494 0.00206494331359863 0.00999999999999979 0.00999999999999979 0.0 494 -495 0.00204300880432129 0.0 0.0 0.0 495 -496 0.00206112861633301 0.0 0.0 0.0 496 -497 0.00206708908081055 0.0 0.0 0.0 497 -498 0.0030369758605957 0.00999999999999979 0.00999999999999979 0.0 498 -499 0.00405597686767578 0.0 0.0 0.0 499 -500 0.00401997566223145 0.0 0.0 0.0 500 -501 0.0026099681854248 0.00999999999999979 0.00999999999999979 0.0 501 -502 0.00206303596496582 0.0 0.0 0.0 502 -503 0.00206589698791504 0.0 0.0 0.0 503 -504 0.00206708908081055 0.0 0.0 0.0 504 -505 0.00212311744689941 0.00999999999999979 0.00999999999999979 0.0 505 -506 0.00225090980529785 0.0 0.0 0.0 506 -507 0.00206089019775391 0.0 0.0 0.0 507 -508 0.00205683708190918 0.0 0.0 0.0 508 -509 0.00205397605895996 0.0 0.0 0.0 509 -510 0.00206184387207031 0.00999999999999979 0.00999999999999979 0.0 510 -511 0.00205707550048828 0.0 0.0 0.0 511 -512 0.00204896926879883 0.0 0.0 0.0 512 -513 0.00204920768737793 0.0 0.0 0.0 513 -514 0.00206398963928223 0.0 0.0 0.0 514 -515 0.00204992294311523 0.00999999999999979 0.00999999999999979 0.0 515 -516 0.00204110145568848 0.0 0.0 0.0 516 -517 0.00205183029174805 0.0 0.0 0.0 517 -518 0.00206089019775391 0.0 0.0 0.0 518 -519 0.00207400321960449 0.00999999999999979 0.00999999999999979 0.0 519 -520 0.00206184387207031 0.0 0.0 0.0 520 -521 0.00205802917480469 0.0 0.0 0.0 521 -522 0.00205802917480469 0.0 0.0 0.0 522 -523 0.00206112861633301 0.0 0.0 0.0 523 -524 0.00215315818786621 0.0100000000000016 0.0100000000000016 0.0 524 -525 0.0020451545715332 0.0 0.0 0.0 525 -526 0.00207614898681641 0.0 0.0 0.0 526 -527 0.00208091735839844 0.0 0.0 0.0 527 -528 0.00208616256713867 0.0 0.0 0.0 528 -529 0.00211095809936523 0.00999999999999979 0.00999999999999979 0.0 529 -530 0.0298140048980713 0.0299999999999994 0.0299999999999994 0.0 530 -531 0.00220298767089844 0.0 0.0 0.0 531 -532 0.00216102600097656 0.0 0.0 0.0 532 -533 0.00211501121520996 0.0 0.0 0.0 533 -534 0.00208687782287598 0.00999999999999979 0.00999999999999979 0.0 534 -535 0.0021059513092041 0.0 0.0 0.0 535 -536 0.00210785865783691 0.0 0.0 0.0 536 -537 0.0020749568939209 0.0 0.0 0.0 537 -538 0.00207400321960449 0.0 0.0 0.0 538 -539 0.00206589698791504 0.00999999999999979 0.00999999999999979 0.0 539 -540 0.00211691856384277 0.0 0.0 0.0 540 -541 0.00208401679992676 0.0 0.0 0.0 541 -542 0.00206995010375977 0.0 0.0 0.0 542 -543 0.00206995010375977 0.0 0.0 0.0 543 -544 0.00207996368408203 0.00999999999999979 0.00999999999999979 0.0 544 -545 0.00206589698791504 0.0 0.0 0.0 545 -546 0.00207996368408203 0.0 0.0 0.0 546 -547 0.00207018852233887 0.0 0.0 0.0 547 -548 0.00206899642944336 0.0 0.0 0.0 548 -549 0.00207304954528809 0.0100000000000016 0.0100000000000016 0.0 549 -550 0.00206708908081055 0.0 0.0 0.0 550 -551 0.00209689140319824 0.0 0.0 0.0 551 -552 0.0020749568939209 0.0 0.0 0.0 552 -553 0.00207400321960449 0.00999999999999979 0.00999999999999979 0.0 553 -554 0.00207400321960449 0.0 0.0 0.0 554 -555 0.0020449161529541 0.0 0.0 0.0 555 -556 0.00207209587097168 0.0 0.0 0.0 556 -557 0.00205898284912109 0.0 0.0 0.0 557 -558 0.00214600563049316 0.00999999999999979 0.00999999999999979 0.0 558 -559 0.00205612182617188 0.0 0.0 0.0 559 -560 0.00207901000976562 0.0 0.0 0.0 560 -561 0.00205612182617188 0.0 0.0 0.0 561 -562 0.00205707550048828 0.0 0.0 0.0 562 -563 0.00205397605895996 0.00999999999999979 0.00999999999999979 0.0 563 -564 0.00207209587097168 0.0 0.0 0.0 564 -565 0.0020599365234375 0.0 0.0 0.0 565 -566 0.00208687782287598 0.0 0.0 0.0 566 -567 0.00206708908081055 0.00999999999999979 0.00999999999999979 0.0 567 -568 0.00205397605895996 0.0 0.0 0.0 568 -569 0.00206995010375977 0.0 0.0 0.0 569 -570 0.00204896926879883 0.0 0.0 0.0 570 -571 0.00208187103271484 0.0 0.0 0.0 571 -572 0.00207901000976562 0.00999999999999979 0.00999999999999979 0.0 572 -573 0.0231339931488037 0.0199999999999996 0.0199999999999996 0.0 573 -574 0.00312709808349609 0.0 0.0 0.0 574 -575 0.00215601921081543 0.0 0.0 0.0 575 -576 0.00213813781738281 0.0100000000000016 0.0100000000000016 0.0 576 -577 0.00209593772888184 0.0 0.0 0.0 577 -578 0.00209403038024902 0.0 0.0 0.0 578 -579 0.00207901000976562 0.0 0.0 0.0 579 -580 0.00208401679992676 0.0 0.0 0.0 580 -581 0.00207114219665527 0.0 0.0 0.0 581 -582 0.00207710266113281 0.0 0.0 0.0 582 -583 0.00206685066223145 0.0 0.0 0.0 583 -584 0.00206184387207031 0.0 0.0 0.0 584 -585 0.00205588340759277 0.00999999999999979 0.00999999999999979 0.0 585 -586 0.0020751953125 0.0 0.0 0.0 586 -587 0.00206303596496582 0.0 0.0 0.0 587 -588 0.00206303596496582 0.0 0.0 0.0 588 -589 0.00205612182617188 0.0 0.0 0.0 589 -590 0.00207281112670898 0.00999999999999979 0.00999999999999979 0.0 590 -591 0.00385499000549316 0.0 0.0 0.0 591 -592 0.00404191017150879 0.0 0.0 0.0 592 -593 0.00359702110290527 0.00999999999999979 0.00999999999999979 0.0 593 -594 0.0020909309387207 0.0 0.0 0.0 594 -595 0.00204992294311523 0.0 0.0 0.0 595 -596 0.0020909309387207 0.0 0.0 0.0 596 -597 0.0020749568939209 0.00999999999999979 0.00999999999999979 0.0 597 -598 0.00209784507751465 0.0 0.0 0.0 598 -599 0.00205683708190918 0.0 0.0 0.0 599 -600 0.00203394889831543 0.0 0.0 0.0 600 -601 0.00205302238464355 0.0 0.0 0.0 601 -602 0.00205016136169434 0.00999999999999979 0.00999999999999979 0.0 602 -603 0.0020599365234375 0.0 0.0 0.0 603 -604 0.00205111503601074 0.0 0.0 0.0 604 -605 0.00206780433654785 0.0 0.0 0.0 605 -606 0.00204992294311523 0.00999999999999979 0.00999999999999979 0.0 606 -607 0.00206804275512695 0.0 0.0 0.0 607 -608 0.0020439624786377 0.0 0.0 0.0 608 -609 0.00205683708190918 0.0 0.0 0.0 609 -610 0.00210785865783691 0.0 0.0 0.0 610 -611 0.00206685066223145 0.00999999999999979 0.00999999999999979 0.0 611 -612 0.00205206871032715 0.0 0.0 0.0 612 -613 0.00204706192016602 0.0 0.0 0.0 613 -614 0.00208616256713867 0.0 0.0 0.0 614 -615 0.00210213661193848 0.0 0.0 0.0 615 -616 0.0239150524139404 0.0300000000000011 0.0300000000000011 0.0 616 -617 0.00241804122924805 0.0 0.0 0.0 617 -618 0.00215888023376465 0.0 0.0 0.0 618 -619 0.00210809707641602 0.00999999999999979 0.00999999999999979 0.0 619 -620 0.00209403038024902 0.0 0.0 0.0 620 -621 0.00210905075073242 0.0 0.0 0.0 621 -622 0.00210404396057129 0.0 0.0 0.0 622 -623 0.00208401679992676 0.0 0.0 0.0 623 -624 0.00205111503601074 0.00999999999999979 0.00999999999999979 0.0 624 -625 0.00206303596496582 0.0 0.0 0.0 625 -626 0.0020599365234375 0.0 0.0 0.0 626 -627 0.00207400321960449 0.0 0.0 0.0 627 -628 0.0020759105682373 0.0 0.0 0.0 628 -629 0.00206995010375977 0.00999999999999979 0.00999999999999979 0.0 629 -630 0.0021660327911377 0.0 0.0 0.0 630 -631 0.00207710266113281 0.0 0.0 0.0 631 -632 0.00208401679992676 0.0 0.0 0.0 632 -633 0.00205492973327637 0.0 0.0 0.0 633 -634 0.00207018852233887 0.00999999999999979 0.00999999999999979 0.0 634 -635 0.00204586982727051 0.0 0.0 0.0 635 -636 0.00205898284912109 0.0 0.0 0.0 636 -637 0.0029301643371582 0.0 0.0 0.0 637 -638 0.00209999084472656 0.00999999999999979 0.00999999999999979 0.0 638 -639 0.00206685066223145 0.0 0.0 0.0 639 -640 0.00207400321960449 0.0 0.0 0.0 640 -641 0.00206184387207031 0.0 0.0 0.0 641 -642 0.00205183029174805 0.0 0.0 0.0 642 -643 0.0020592212677002 0.0100000000000016 0.0100000000000016 0.0 643 -644 0.00204300880432129 0.0 0.0 0.0 644 -645 0.00207090377807617 0.0 0.0 0.0 645 -646 0.00207710266113281 0.0 0.0 0.0 646 -647 0.00206089019775391 0.00999999999999979 0.00999999999999979 0.0 647 -648 0.00205516815185547 0.0 0.0 0.0 648 -649 0.0020599365234375 0.0 0.0 0.0 649 -650 0.00206398963928223 0.0 0.0 0.0 650 -651 0.00206279754638672 0.0 0.0 0.0 651 -652 0.00206804275512695 0.00999999999999979 0.00999999999999979 0.0 652 -653 0.00206804275512695 0.0 0.0 0.0 653 -654 0.00207209587097168 0.0 0.0 0.0 654 -655 0.00206518173217773 0.0 0.0 0.0 655 -656 0.00206589698791504 0.0 0.0 0.0 656 -657 0.00209808349609375 0.00999999999999979 0.00999999999999979 0.0 657 -658 0.00213718414306641 0.0 0.0 0.0 658 -659 0.00212907791137695 0.0 0.0 0.0 659 -660 0.0242199897766113 0.0199999999999996 0.0199999999999996 0.0 660 -661 0.00217413902282715 0.0 0.0 0.0 661 -662 0.00212502479553223 0.0 0.0 0.0 662 -663 0.0021059513092041 0.0 0.0 0.0 663 -664 0.0020909309387207 0.0 0.0 0.0 664 -665 0.00208711624145508 0.00999999999999979 0.00999999999999979 0.0 665 -666 0.00214982032775879 0.0 0.0 0.0 666 -667 0.00213503837585449 0.0 0.0 0.0 667 -668 0.00210404396057129 0.0 0.0 0.0 668 -669 0.00216293334960938 0.0 0.0 0.0 669 -670 0.00207996368408203 0.0100000000000016 0.0100000000000016 0.0 670 -671 0.00222396850585938 0.0 0.0 0.0 671 -672 0.00205898284912109 0.0 0.0 0.0 672 -673 0.00205397605895996 0.0 0.0 0.0 673 -674 0.00206708908081055 0.00999999999999979 0.00999999999999979 0.0 674 -675 0.00205898284912109 0.0 0.0 0.0 675 -676 0.00207400321960449 0.0 0.0 0.0 676 -677 0.0020599365234375 0.0 0.0 0.0 677 -678 0.00206208229064941 0.0 0.0 0.0 678 -679 0.00206589698791504 0.00999999999999979 0.00999999999999979 0.0 679 -680 0.00203895568847656 0.0 0.0 0.0 680 -681 0.00205302238464355 0.0 0.0 0.0 681 -682 0.00205397605895996 0.0 0.0 0.0 682 -683 0.0020599365234375 0.0 0.0 0.0 683 -684 0.00207614898681641 0.00999999999999979 0.00999999999999979 0.0 684 -685 0.00306200981140137 0.0 0.0 0.0 685 -686 0.00403904914855957 0.0 0.0 0.0 686 -687 0.00366306304931641 0.00999999999999979 0.00999999999999979 0.0 687 -688 0.00224184989929199 0.0 0.0 0.0 688 -689 0.00207114219665527 0.0 0.0 0.0 689 -690 0.00205707550048828 0.0 0.0 0.0 690 -691 0.00207996368408203 0.00999999999999979 0.00999999999999979 0.0 691 -692 0.00224709510803223 0.0 0.0 0.0 692 -693 0.00273489952087402 0.0 0.0 0.0 693 -694 0.00208401679992676 0.0 0.0 0.0 694 -695 0.00205206871032715 0.00999999999999979 0.00999999999999979 0.0 695 -696 0.00206899642944336 0.0 0.0 0.0 696 -697 0.00205492973327637 0.0 0.0 0.0 697 -698 0.00207281112670898 0.0 0.0 0.0 698 -699 0.00207114219665527 0.0 0.0 0.0 699 -700 0.00206804275512695 0.00999999999999979 0.00999999999999979 0.0 700 -701 0.00208711624145508 0.0 0.0 0.0 701 -702 0.0020899772644043 0.0 0.0 0.0 702 -703 0.0264170169830322 0.0300000000000011 0.0300000000000011 0.0 703 -704 0.00216817855834961 0.0 0.0 0.0 704 -705 0.00217700004577637 0.0 0.0 0.0 705 -706 0.00212311744689941 0.0 0.0 0.0 706 -707 0.0021059513092041 0.0 0.0 0.0 707 -708 0.00207686424255371 0.00999999999999979 0.00999999999999979 0.0 708 -709 0.00207686424255371 0.0 0.0 0.0 709 -710 0.00207209587097168 0.0 0.0 0.0 710 -711 0.00206804275512695 0.0 0.0 0.0 711 -712 0.00208497047424316 0.0 0.0 0.0 712 -713 0.00206303596496582 0.00999999999999979 0.00999999999999979 0.0 713 -714 0.00206899642944336 0.0 0.0 0.0 714 -715 0.00206398963928223 0.0 0.0 0.0 715 -716 0.00207996368408203 0.0 0.0 0.0 716 -717 0.00206804275512695 0.00999999999999979 0.00999999999999979 0.0 717 -718 0.00205397605895996 0.0 0.0 0.0 718 -719 0.00206899642944336 0.0 0.0 0.0 719 -720 0.00207686424255371 0.0 0.0 0.0 720 -721 0.00207400321960449 0.0 0.0 0.0 721 -722 0.00207614898681641 0.00999999999999979 0.00999999999999979 0.0 722 -723 0.00206184387207031 0.0 0.0 0.0 723 -724 0.00207996368408203 0.0 0.0 0.0 724 -725 0.00208902359008789 0.0 0.0 0.0 725 -726 0.00206303596496582 0.0 0.0 0.0 726 -727 0.00204992294311523 0.00999999999999979 0.00999999999999979 0.0 727 -728 0.00205898284912109 0.0 0.0 0.0 728 -729 0.00204992294311523 0.0 0.0 0.0 729 -730 0.00204205513000488 0.0 0.0 0.0 730 -731 0.00205898284912109 0.0 0.0 0.0 731 -732 0.00206422805786133 0.00999999999999979 0.00999999999999979 0.0 732 -733 0.00205898284912109 0.0 0.0 0.0 733 -734 0.00205111503601074 0.0 0.0 0.0 734 -735 0.00208902359008789 0.0 0.0 0.0 735 -736 0.00207805633544922 0.0100000000000016 0.0100000000000016 0.0 736 -737 0.00207400321960449 0.0 0.0 0.0 737 -738 0.00205492973327637 0.0 0.0 0.0 738 -739 0.0020751953125 0.0 0.0 0.0 739 -740 0.00207400321960449 0.0 0.0 0.0 740 -741 0.00206089019775391 0.00999999999999979 0.00999999999999979 0.0 741 -742 0.00254416465759277 0.0 0.0 0.0 742 -743 0.00206899642944336 0.0 0.0 0.0 743 -744 0.00208902359008789 0.0 0.0 0.0 744 -745 0.00208783149719238 0.0 0.0 0.0 745 -746 0.0239109992980957 0.0299999999999994 0.0299999999999994 0.0 746 -747 0.00231599807739258 0.0 0.0 0.0 747 -748 0.00217008590698242 0.0 0.0 0.0 748 -749 0.00211906433105469 0.0 0.0 0.0 749 -750 0.00209808349609375 0.00999999999999979 0.00999999999999979 0.0 750 -751 0.00207805633544922 0.0 0.0 0.0 751 -752 0.00208497047424316 0.0 0.0 0.0 752 -753 0.00206589698791504 0.0 0.0 0.0 753 -754 0.00207901000976562 0.00999999999999979 0.00999999999999979 0.0 754 -755 0.00206089019775391 0.0 0.0 0.0 755 -756 0.00207114219665527 0.0 0.0 0.0 756 -757 0.0020759105682373 0.0 0.0 0.0 757 -758 0.00206613540649414 0.0 0.0 0.0 758 -759 0.00204706192016602 0.00999999999999979 0.00999999999999979 0.0 759 -760 0.00205898284912109 0.0 0.0 0.0 760 -761 0.0020749568939209 0.0 0.0 0.0 761 -762 0.00206208229064941 0.0 0.0 0.0 762 -763 0.00206804275512695 0.0 0.0 0.0 763 -764 0.00213193893432617 0.0100000000000016 0.0100000000000016 0.0 764 -765 0.00206494331359863 0.0 0.0 0.0 765 -766 0.00205707550048828 0.0 0.0 0.0 766 -767 0.00206589698791504 0.0 0.0 0.0 767 -768 0.00207901000976562 0.00999999999999979 0.00999999999999979 0.0 768 -769 0.00204682350158691 0.0 0.0 0.0 769 -770 0.00206899642944336 0.0 0.0 0.0 770 -771 0.00208497047424316 0.0 0.0 0.0 771 -772 0.00206398963928223 0.0 0.0 0.0 772 -773 0.00205683708190918 0.00999999999999979 0.00999999999999979 0.0 773 -774 0.00205397605895996 0.0 0.0 0.0 774 -775 0.00206184387207031 0.0 0.0 0.0 775 -776 0.00205206871032715 0.0 0.0 0.0 776 -777 0.00205802917480469 0.0 0.0 0.0 777 -778 0.00281596183776855 0.00999999999999979 0.00999999999999979 0.0 778 -779 0.00403189659118652 0.0 0.0 0.0 779 -780 0.00367498397827148 0.0 0.0 0.0 780 -781 0.00383210182189941 0.00999999999999979 0.00999999999999979 0.0 781 -782 0.00206995010375977 0.0 0.0 0.0 782 -783 0.00206804275512695 0.0 0.0 0.0 783 -784 0.00208091735839844 0.00999999999999979 0.00999999999999979 0.0 784 -785 0.00210189819335938 0.0 0.0 0.0 785 -786 0.00206494331359863 0.0 0.0 0.0 786 -787 0.00209212303161621 0.0 0.0 0.0 787 -788 0.00208687782287598 0.0 0.0 0.0 788 -789 0.0249569416046143 0.0299999999999994 0.0299999999999994 0.0 789 -790 0.00217914581298828 0.0 0.0 0.0 790 -791 0.00213813781738281 0.0 0.0 0.0 791 -792 0.00213003158569336 0.0100000000000016 0.0100000000000016 0.0 792 -793 0.00212001800537109 0.0 0.0 0.0 793 -794 0.00209903717041016 0.0 0.0 0.0 794 -795 0.0021519660949707 0.0 0.0 0.0 795 -796 0.0020749568939209 0.0 0.0 0.0 796 -797 0.00205802917480469 0.00999999999999979 0.00999999999999979 0.0 797 -798 0.00208711624145508 0.0 0.0 0.0 798 -799 0.00205707550048828 0.0 0.0 0.0 799 -800 0.00207114219665527 0.0 0.0 0.0 800 -801 0.00207710266113281 0.0 0.0 0.0 801 -802 0.00207400321960449 0.00999999999999979 0.00999999999999979 0.0 802 -803 0.00207686424255371 0.0 0.0 0.0 803 -804 0.00207185745239258 0.0 0.0 0.0 804 -805 0.00206398963928223 0.0 0.0 0.0 805 -806 0.00205898284912109 0.0 0.0 0.0 806 -807 0.00205302238464355 0.00999999999999979 0.00999999999999979 0.0 807 -808 0.00205397605895996 0.0 0.0 0.0 808 -809 0.00205206871032715 0.0 0.0 0.0 809 -810 0.00205111503601074 0.0 0.0 0.0 810 -811 0.0020749568939209 0.00999999999999979 0.00999999999999979 0.0 811 -812 0.00206279754638672 0.0 0.0 0.0 812 -813 0.00205302238464355 0.0 0.0 0.0 813 -814 0.00204801559448242 0.0 0.0 0.0 814 -815 0.00205302238464355 0.0 0.0 0.0 815 -816 0.00206995010375977 0.00999999999999979 0.00999999999999979 0.0 816 -817 0.00208091735839844 0.0 0.0 0.0 817 -818 0.00214910507202148 0.0 0.0 0.0 818 -819 0.00205802917480469 0.0 0.0 0.0 819 -820 0.00217890739440918 0.0 0.0 0.0 820 -821 0.00206398963928223 0.00999999999999979 0.00999999999999979 0.0 821 -822 0.00204706192016602 0.0 0.0 0.0 822 -823 0.00205111503601074 0.0 0.0 0.0 823 -824 0.00206804275512695 0.0 0.0 0.0 824 -825 0.00206089019775391 0.00999999999999979 0.00999999999999979 0.0 825 -826 0.00207018852233887 0.0 0.0 0.0 826 -827 0.00208306312561035 0.0 0.0 0.0 827 -828 0.00205206871032715 0.0 0.0 0.0 828 -829 0.00206398963928223 0.0 0.0 0.0 829 -830 0.00209403038024902 0.0100000000000016 0.0100000000000016 0.0 830 -831 0.00208497047424316 0.0 0.0 0.0 831 -832 0.023939847946167 0.0199999999999996 0.0199999999999996 0.0 832 -833 0.00230288505554199 0.0 0.0 0.0 833 -834 0.0021669864654541 0.00999999999999979 0.00999999999999979 0.0 834 -835 0.00211286544799805 0.0 0.0 0.0 835 -836 0.0021059513092041 0.0 0.0 0.0 836 -837 0.00207304954528809 0.0 0.0 0.0 837 -838 0.0020749568939209 0.0 0.0 0.0 838 -839 0.00204682350158691 0.00999999999999979 0.00999999999999979 0.0 839 -840 0.00207400321960449 0.0 0.0 0.0 840 -841 0.0020592212677002 0.0 0.0 0.0 841 -842 0.00206589698791504 0.0 0.0 0.0 842 -843 0.00207114219665527 0.00999999999999979 0.00999999999999979 0.0 843 -844 0.00207304954528809 0.0 0.0 0.0 844 -845 0.00208091735839844 0.0 0.0 0.0 845 -846 0.00206303596496582 0.0 0.0 0.0 846 -847 0.00208115577697754 0.0 0.0 0.0 847 -848 0.00204992294311523 0.00999999999999979 0.00999999999999979 0.0 848 -849 0.00209403038024902 0.0 0.0 0.0 849 -850 0.00208497047424316 0.0 0.0 0.0 850 -851 0.00206804275512695 0.0 0.0 0.0 851 -852 0.00207209587097168 0.0 0.0 0.0 852 -853 0.0020599365234375 0.00999999999999979 0.00999999999999979 0.0 853 -854 0.0021519660949707 0.0 0.0 0.0 854 -855 0.00205707550048828 0.0 0.0 0.0 855 -856 0.00204801559448242 0.0 0.0 0.0 856 -857 0.00205111503601074 0.0100000000000016 0.0100000000000016 0.0 857 -858 0.00204992294311523 0.0 0.0 0.0 858 -859 0.00207304954528809 0.0 0.0 0.0 859 -860 0.00205898284912109 0.0 0.0 0.0 860 -861 0.00205802917480469 0.0 0.0 0.0 861 -862 0.00205397605895996 0.00999999999999979 0.00999999999999979 0.0 862 -863 0.00206089019775391 0.0 0.0 0.0 863 -864 0.00206780433654785 0.0 0.0 0.0 864 -865 0.00206708908081055 0.0 0.0 0.0 865 -866 0.00214815139770508 0.0 0.0 0.0 866 -867 0.00205397605895996 0.00999999999999979 0.00999999999999979 0.0 867 -868 0.00206112861633301 0.0 0.0 0.0 868 -869 0.00206589698791504 0.0 0.0 0.0 869 -870 0.00207686424255371 0.0 0.0 0.0 870 -871 0.00206613540649414 0.0 0.0 0.0 871 -872 0.00345492362976074 0.00999999999999979 0.00999999999999979 0.0 872 -873 0.00410318374633789 0.0 0.0 0.0 873 -874 0.00406002998352051 0.00999999999999979 0.00999999999999979 0.0 874 -875 0.0259261131286621 0.0199999999999996 0.0199999999999996 0.0 875 -876 0.00219607353210449 0.0 0.0 0.0 876 -877 0.00211405754089355 0.00999999999999979 0.00999999999999979 0.0 877 -878 0.00212407112121582 0.0 0.0 0.0 878 -879 0.00208306312561035 0.0 0.0 0.0 879 -880 0.00209808349609375 0.0 0.0 0.0 880 -881 0.00233793258666992 0.0 0.0 0.0 881 -882 0.00206804275512695 0.00999999999999979 0.00999999999999979 0.0 882 -883 0.0020759105682373 0.0 0.0 0.0 883 -884 0.00209188461303711 0.0 0.0 0.0 884 -885 0.00206899642944336 0.0 0.0 0.0 885 -886 0.00205397605895996 0.0100000000000016 0.0100000000000016 0.0 886 -887 0.00205588340759277 0.0 0.0 0.0 887 -888 0.00216484069824219 0.0 0.0 0.0 888 -889 0.00208091735839844 0.0 0.0 0.0 889 -890 0.0020751953125 0.0 0.0 0.0 890 -891 0.00336885452270508 0.00999999999999979 0.00999999999999979 0.0 891 -892 0.00415396690368652 0.0 0.0 0.0 892 -893 0.0037381649017334 0.00999999999999979 0.00999999999999979 0.0 893 -894 0.00412487983703613 0.0 0.0 0.0 894 -895 0.00375986099243164 0.0 0.0 0.0 895 -896 0.00278496742248535 0.00999999999999979 0.00999999999999979 0.0 896 -897 0.00209403038024902 0.0 0.0 0.0 897 -898 0.00205516815185547 0.0 0.0 0.0 898 -899 0.00205516815185547 0.0 0.0 0.0 899 -900 0.00203704833984375 0.0 0.0 0.0 900 -901 0.0020599365234375 0.00999999999999979 0.00999999999999979 0.0 901 -902 0.00205421447753906 0.0 0.0 0.0 902 -903 0.0020599365234375 0.0 0.0 0.0 903 -904 0.00206089019775391 0.0 0.0 0.0 904 -905 0.00207686424255371 0.00999999999999979 0.00999999999999979 0.0 905 -906 0.00207209587097168 0.0 0.0 0.0 906 -907 0.00205898284912109 0.0 0.0 0.0 907 -908 0.00206112861633301 0.0 0.0 0.0 908 -909 0.00209903717041016 0.0 0.0 0.0 909 -910 0.00206708908081055 0.00999999999999979 0.00999999999999979 0.0 910 -911 0.00206804275512695 0.0 0.0 0.0 911 -912 0.00206804275512695 0.0 0.0 0.0 912 -913 0.00207805633544922 0.0 0.0 0.0 913 -914 0.00206613540649414 0.0 0.0 0.0 914 -915 0.00205707550048828 0.00999999999999979 0.00999999999999979 0.0 915 -916 0.00208497047424316 0.0 0.0 0.0 916 -917 0.00207996368408203 0.0 0.0 0.0 917 -918 0.0248808860778809 0.0300000000000011 0.0300000000000011 0.0 918 -919 0.00217318534851074 0.0 0.0 0.0 919 -920 0.00228309631347656 0.0 0.0 0.0 920 -921 0.00214815139770508 0.0 0.0 0.0 921 -922 0.00209498405456543 0.0 0.0 0.0 922 -923 0.00209903717041016 0.00999999999999979 0.00999999999999979 0.0 923 -924 0.00206685066223145 0.0 0.0 0.0 924 -925 0.00208783149719238 0.0 0.0 0.0 925 -926 0.0020751953125 0.0 0.0 0.0 926 -927 0.0020599365234375 0.00999999999999979 0.00999999999999979 0.0 927 -928 0.00206398963928223 0.0 0.0 0.0 928 -929 0.00207400321960449 0.0 0.0 0.0 929 -930 0.00224184989929199 0.0 0.0 0.0 930 -931 0.00207209587097168 0.0 0.0 0.0 931 -932 0.00207114219665527 0.00999999999999979 0.00999999999999979 0.0 932 -933 0.00206995010375977 0.0 0.0 0.0 933 -934 0.00206613540649414 0.0 0.0 0.0 934 -935 0.00207114219665527 0.0 0.0 0.0 935 -936 0.00207901000976562 0.0 0.0 0.0 936 -937 0.00206494331359863 0.00999999999999979 0.00999999999999979 0.0 937 -938 0.0020751953125 0.0 0.0 0.0 938 -939 0.00211882591247559 0.0 0.0 0.0 939 -940 0.00212502479553223 0.0 0.0 0.0 940 -941 0.00206303596496582 0.0 0.0 0.0 941 -942 0.00205111503601074 0.00999999999999979 0.00999999999999979 0.0 942 -943 0.00204205513000488 0.0 0.0 0.0 943 -944 0.00206303596496582 0.0 0.0 0.0 944 -945 0.00205516815185547 0.0 0.0 0.0 945 -946 0.00206208229064941 0.0100000000000016 0.0100000000000016 0.0 946 -947 0.00205683708190918 0.0 0.0 0.0 947 -948 0.00204181671142578 0.0 0.0 0.0 948 -949 0.00206589698791504 0.0 0.0 0.0 949 -950 0.0020451545715332 0.0 0.0 0.0 950 -951 0.00209593772888184 0.00999999999999979 0.00999999999999979 0.0 951 -952 0.00205802917480469 0.0 0.0 0.0 952 -953 0.0020751953125 0.0 0.0 0.0 953 -954 0.00205492973327637 0.0 0.0 0.0 954 -955 0.00206303596496582 0.0 0.0 0.0 955 -956 0.00206112861633301 0.00999999999999979 0.00999999999999979 0.0 956 -957 0.00208592414855957 0.0 0.0 0.0 957 -958 0.00208497047424316 0.0 0.0 0.0 958 -959 0.00207114219665527 0.0 0.0 0.0 959 -960 0.0264370441436768 0.0299999999999994 0.0299999999999994 0.0 960 -961 0.00537300109863281 0.0 0.0 0.0 961 -962 0.00217485427856445 0.0 0.0 0.0 962 -963 0.00213003158569336 0.0 0.0 0.0 963 -964 0.00212383270263672 0.0 0.0 0.0 964 -965 0.0021059513092041 0.0 0.0 0.0 965 -966 0.0020909309387207 0.0 0.0 0.0 966 -967 0.00208091735839844 0.00999999999999979 0.00999999999999979 0.0 967 -968 0.00207018852233887 0.0 0.0 0.0 968 -969 0.00207185745239258 0.0 0.0 0.0 969 -970 0.00205111503601074 0.0 0.0 0.0 970 -971 0.00208306312561035 0.0 0.0 0.0 971 -972 0.00212502479553223 0.00999999999999979 0.00999999999999979 0.0 972 -973 0.00206995010375977 0.0 0.0 0.0 973 -974 0.0020749568939209 0.0 0.0 0.0 974 -975 0.0020749568939209 0.0 0.0 0.0 975 -976 0.00205898284912109 0.0 0.0 0.0 976 -977 0.00207304954528809 0.0100000000000016 0.0100000000000016 0.0 977 -978 0.00208806991577148 0.0 0.0 0.0 978 -979 0.00207090377807617 0.0 0.0 0.0 979 -980 0.00214314460754395 0.0 0.0 0.0 980 -981 0.00208497047424316 0.00999999999999979 0.00999999999999979 0.0 981 -982 0.00206112861633301 0.0 0.0 0.0 982 -983 0.00220704078674316 0.0 0.0 0.0 983 -984 0.00206184387207031 0.0 0.0 0.0 984 -985 0.00206589698791504 0.0 0.0 0.0 985 -986 0.00204014778137207 0.00999999999999979 0.00999999999999979 0.0 986 -987 0.00205302238464355 0.0 0.0 0.0 987 -988 0.00204801559448242 0.0 0.0 0.0 988 -989 0.0020439624786377 0.0 0.0 0.0 989 -990 0.00206494331359863 0.0 0.0 0.0 990 -991 0.00205516815185547 0.00999999999999979 0.00999999999999979 0.0 991 -992 0.0020599365234375 0.0 0.0 0.0 992 -993 0.00205802917480469 0.0 0.0 0.0 993 -994 0.0021820068359375 0.0 0.0 0.0 994 -995 0.00206708908081055 0.0 0.0 0.0 995 -996 0.00205802917480469 0.00999999999999979 0.00999999999999979 0.0 996 -997 0.00205183029174805 0.0 0.0 0.0 997 -998 0.00205588340759277 0.0 0.0 0.0 998 -999 0.00207781791687012 0.0 0.0 0.0 999 -1000 0.00205588340759277 0.0 0.0 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat deleted file mode 100644 index d7d94870..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.00528996763305527 -3 -0.0138044594871689 -4 -0.0208681851283985 -5 -0.0229957953064787 -6 -0.0234292596261009 -7 -0.0233334130282492 -8 -0.0241516165777752 -9 -0.0241644202341525 -10 -0.0231287425073633 -11 -0.0221175625393535 -12 -0.0186101437936229 -13 -0.0156353533961561 -14 -0.0188403159027361 -15 -0.0180504812480117 -16 -0.0217450273227108 -17 -0.0247063596763229 -18 -0.022001265884962 -19 -0.0178556473266542 -20 -0.0204164647356919 -21 -0.0182966079953989 -22 -0.0211862321337847 -23 -0.0194789850013599 -24 -0.0177742253841285 -25 -0.0092503749482194 -26 -0.00746819898929803 -27 -0.00487803332820888 -28 -0.00735913264216409 -29 -0.0094394794377043 -30 -0.0102366066065294 -31 -0.0111156180663134 -32 -0.0157818671782769 -33 -0.0168016431622766 -34 -0.0163332307175096 -35 -0.0175436530212509 -36 -0.0223712161905215 -37 -0.0219314894935517 -38 -0.0227830748204048 -39 -0.0193824105679253 -40 -0.0204213811978047 -41 -0.0174876805960081 -42 -0.0192426282967821 -43 -0.0191023286022659 -44 -0.024469189862908 -45 -0.0248594429598138 -46 -0.024075293188514 -47 -0.0231590035654209 -48 -0.0226253872291486 -49 -0.0224682138682447 -50 -0.0218129103220923 -51 -0.0192654328544414 -52 -0.0147320037081153 -53 0.272452233337269 -54 0.435015820040845 -55 0.200430320069216 -56 -0.017516322722285 -57 -0.0206134354119561 -58 -0.0216729701700104 -59 -0.0218336495632955 -60 -0.0220087456364863 -61 -0.0221961766164921 -62 -0.0220196148858699 -63 -0.0196199273707057 -64 -0.0175555144594074 -65 -0.0157115875281919 -66 -0.0178703168441715 -67 -0.020014167059419 -68 -0.0226085951821202 -69 -0.0214388900491651 -70 -0.0226874815779736 -71 -0.0209263363718717 -72 -0.0186668218529576 -73 -0.0190861172260196 -74 -0.0165844428487903 -75 -0.0183297192997319 -76 -0.0196886608427949 -77 -0.0172252505382256 -78 -0.0127282633379294 -79 -0.0118674197279215 -80 -0.00761080829361313 -81 -0.00745049886576533 -82 -0.00437801934505245 -83 -0.00530855529011354 -84 -0.00941286938636584 -85 -0.0107154791645881 -86 -0.015323870013456 -87 -0.012519266967711 -88 -0.0149736969801129 -89 -0.021651681277203 -90 -0.0230618749379273 -91 -0.0168683483705937 -92 -0.0192914563246245 -93 -0.0149596795587543 -94 -0.0156422337243361 -95 -0.0212673261015622 -96 -0.021939557403789 -97 -0.0201423837801739 -98 -0.0236606423193213 -99 -0.0214696557426392 -100 -0.0224265353446497 -101 -0.0214300874958868 -102 -0.0215321124434072 -103 -0.0196750526265947 -104 -0.0164815420539262 -105 0.153451795677057 -106 0.152304917983925 -107 0.269683604711283 -108 0.163866062031231 -109 0.0917700861184397 -110 -0.0154344686250538 -111 -0.0160009187714221 -112 -0.0181194294640359 -113 -0.0198996862071363 -114 -0.0210940088036923 -115 -0.0202294695724758 -116 -0.0201134577323488 -117 -0.0176142238854856 -118 -0.0179934480509661 -119 -0.0184941333999111 -120 -0.0209217833739569 -121 -0.0193706489699845 -122 -0.0212596356685163 -123 -0.0193402304952815 -124 -0.0168126115507807 -125 -0.0168285157052044 -126 -0.0178485073702407 -127 -0.0153236968353027 -128 -0.0172450763888923 -129 -0.0181958874426915 -130 -0.019599041433368 -131 -0.012097521583517 -132 -0.0144122698713183 -133 -0.0132513281935601 -134 -0.00875555666212923 -135 -0.00361627820509766 -136 -0.000259967785037514 -137 -0.00805847419201842 -138 -0.012649535174109 -139 -0.0145979054471083 -140 -0.0107561179136776 -141 -0.0136228025301689 -142 -0.0159619507661417 -143 -0.0191425909401178 -144 -0.0163101158814417 -145 -0.012129043859938 -146 -0.0151299875018323 -147 -0.0203386298647967 -148 -0.0209988316244983 -149 -0.0219068901698134 -150 -0.0224671072591489 -151 -0.0170418184704867 -152 -0.0201957214089058 -153 -0.0205846116271679 -154 -0.0199413534929481 -155 -0.0179691672443825 -156 -0.0150768539756268 -157 0.0995215742652554 -158 0.0981837663624077 -159 0.0931229461077249 -160 0.21175246910869 -161 0.105079528542058 -162 0.0913032756563397 -163 0.0339528356592639 -164 -0.0182805568898494 -165 -0.0193574268532822 -166 -0.019701338364763 -167 -0.0189643836934548 -168 -0.0188745629207454 -169 -0.0165737067851004 -170 -0.0158076140033874 -171 -0.0161004869746426 -172 -0.0195930716982896 -173 -0.0182623379689477 -174 -0.0200811074454518 -175 -0.0187342710910368 -176 -0.0166229225659487 -177 -0.0167237872378271 -178 -0.0201685104197428 -179 -0.0165324418353769 -180 -0.0129150606429465 -181 -0.0169169105724671 -182 -0.017078473759628 -183 -0.018127591763309 -184 -0.0112307423687399 -185 -0.0134591703948938 -186 -0.0122816446332828 -187 -0.0167129471183761 -188 -0.00633335732749837 -189 -0.00217094534395089 -190 -0.003176289001772 -191 -0.0057871656139901 -192 -0.0115873213117581 -193 -0.00896702930637471 -194 -0.0120418100687928 -195 -0.0123921707383441 -196 -0.0172084711453154 -197 -0.0152400714377606 -198 -0.0111285496578555 -199 -0.0142340919577057 -200 -0.0192937621671048 -201 -0.0197880163686053 -202 -0.020849567081396 -203 -0.0198406262700084 -204 -0.0194104738114594 -205 -0.0148131274163057 -206 -0.0192079248734278 -207 -0.0187094339560537 -208 -0.0190732730711229 -209 0.0361934269621865 -210 0.0870917883041551 -211 0.0444891209616575 -212 0.0955027397552937 -213 0.154654506121038 -214 0.102102013193298 -215 0.0494447139937405 -216 0.0904567636647291 -217 -0.0152749334062708 -218 -0.0146608967815647 -219 -0.0147668855748172 -220 -0.0156264119143688 -221 -0.0169494608304957 -222 -0.0174532100041555 -223 -0.0180837899501967 -224 -0.0182277488931129 -225 -0.0161001752368341 -226 -0.0184991832755056 -227 -0.016936119098065 -228 -0.0148320934940219 -229 -0.015273255697935 -230 -0.0182123818891898 -231 -0.0138871665097331 -232 -0.0127350570541541 -233 -0.011100664599431 -234 -0.0138609863092704 -235 -0.0175586417976635 -236 -0.0148120796895902 -237 -0.01123198970569 -238 -0.00918469713802285 -239 -0.0144957683440811 -240 -0.0150294602056943 -241 -0.00892087391044469 -242 -0.0074976007380235 -243 -0.00500305299854478 -244 -0.0041320746296184 -245 -0.00691667857012371 -246 -0.00750372968060234 -247 -0.0107390437617496 -248 -0.0107754591390794 -249 -0.0174172611999561 -250 -0.0074172610106474 -251 -0.0112726180927846 -252 -0.0128024469916435 -253 -0.0177232020585621 -254 -0.0182539224409683 -255 -0.0178084592664765 -256 -0.0179231847033095 -257 -0.0176658037985606 -258 -0.0130046634117232 -259 -0.0176477704146573 -260 -0.0172408298470646 -261 -0.0173835849314203 -262 0.0885923665459635 -263 0.0358142986092356 -264 0.0500197172082544 -265 0.0969438699174651 -266 0.0998188153355495 -267 0.100534469863311 -268 0.0434275152967989 -269 0.0463586746755651 -270 0.0357679483900484 -271 -0.0163390926804664 -272 -0.0166539709796274 -273 -0.0166872870497804 -274 -0.017774068427573 -275 -0.01744643501098 -276 -0.0170706050536218 -277 -0.0147966340538359 -278 -0.0178408200541161 -279 -0.0149580558209695 -280 -0.0131592631424661 -281 -0.0131550961874815 -282 -0.0170541425549732 -283 -0.0136965468472329 -284 -0.0127321644242889 -285 -0.013612710529614 -286 -0.0110213426857256 -287 -0.0173230618274653 -288 -0.0169456472401162 -289 -0.0137220306520902 -290 -0.00961119036236773 -291 -0.00803307600491271 -292 -0.0130753503992976 -293 -0.010061738788462 -294 -0.0128263508570457 -295 -0.00871944477256595 -296 -0.0110828266355735 -297 -0.00145913051022751 -298 -0.00503831545783849 -299 -0.00613255184823567 -300 -0.00317532255742617 -301 -0.0110344422659596 -302 -0.0133994629637518 -303 -0.00711499446473252 -304 -0.00989738058293298 -305 -0.011298222554831 -306 -0.0163568500491007 -307 -0.0172224634424476 -308 -0.016917507184404 -309 -0.0169070421736616 -310 -0.0163226499986189 -311 -0.016000223795697 -312 -0.0128559262318566 -313 -0.0163027746090817 -314 0.0367233579233198 -315 0.0342463768168967 -316 0.0392659770656562 -317 0.0503244855684373 -318 0.106836752186508 -319 0.0428611079691666 -320 0.0947673606581728 -321 0.0404266507177676 -322 0.0422539004134698 -323 0.046712070413077 -324 -0.01386005988438 -325 -0.0129602628678002 -326 -0.0128410216627282 -327 -0.013938492679744 -328 -0.0142137469756705 -329 -0.0135606375602427 -330 -0.0147616165618841 -331 -0.0152730174282578 -332 -0.0157757882742451 -333 -0.0159444484008054 -334 -0.0159291528868275 -335 -0.0125715321584254 -336 -0.0113945717528155 -337 -0.0126919884793404 -338 -0.0120634295155063 -339 -0.0132222456876789 -340 -0.0149011205134109 -341 -0.0112134307887339 -342 -0.00765611064427073 -343 -0.00812543527107914 -344 -0.0116729541542833 -345 -0.00968419876956315 -346 -0.0121532305148415 -347 -0.0128180241822045 -348 -0.0111731767567057 -349 -0.0110495088050017 -350 -0.00474012274853909 -351 -0.0037753856041303 -352 -0.00712557226243535 -353 -0.00254605671801213 -354 -0.00896555258188561 -355 -0.0111612047310962 -356 -0.00590533525415532 -357 -0.00840289962801529 -358 -0.0101831986911947 -359 -0.0147234273517197 -360 -0.0144572278847782 -361 -0.0153686584343928 -362 -0.0152089345642079 -363 -0.0151495230806089 -364 -0.0137849851202231 -365 -0.0104713526164238 -366 -0.0148077561021853 -367 0.0376152434167216 -368 0.0388904481596711 -369 0.0403627453868288 -370 0.0513758553433587 -371 0.107917898362666 -372 -0.00798200125691471 -373 0.093360263223118 -374 0.0414198673418266 -375 0.0393249984524126 -376 0.0385926575483875 -377 -0.0144476804559933 -378 -0.0139841878291661 -379 -0.0139656533470585 -380 -0.0141040067753594 -381 -0.014560155301369 -382 -0.0135420823152173 -383 -0.0145222675144676 -384 -0.014460155395546 -385 -0.0139959464489686 -386 -0.0138565068907983 -387 -0.0107326956886409 -388 -0.0110916304860035 -389 -0.0103687114713454 -390 -0.0109128112118145 -391 -0.0116952906973984 -392 -0.0135898535414944 -393 -0.0111540378855234 -394 -0.0103451114918221 -395 -0.00764288243223634 -396 -0.0111929653049535 -397 -0.00834039400762986 -398 -0.0122045257479647 -399 -0.00873973826972888 -400 -0.0110201500772717 -401 -0.00961579587076197 -402 -0.0131269667654366 -403 -0.00727683817981296 -404 -0.00189532678702501 -405 -0.0069679001311242 -406 -0.001107723493968 -407 -0.0032276027306313 -408 -0.00832965485216551 -409 -0.00619183401785534 -410 -0.00411170215472319 -411 -0.00737621873809235 -412 -0.0127249132834817 -413 -0.012360725256073 -414 -0.0139619534335789 -415 -0.0141106553759734 -416 -0.0133572727396227 -417 -0.0136325555164283 -418 -0.00934211074118071 -419 -0.0138978954665086 -420 0.0419144448041395 -421 0.0398516060966593 -422 0.0412341286880762 -423 0.0638570301312163 -424 0.0510869302001157 -425 0.0457777338184318 -426 0.0404413480661733 -427 0.03921924550858 -428 0.0407807393162245 -429 0.0390318225210268 -430 -0.0131869917758382 -431 -0.0131264891895899 -432 -0.0122572780353557 -433 -0.0113077056806523 -434 -0.00997101803890706 -435 -0.00912977714210345 -436 -0.0107250321456603 -437 -0.0114964596837888 -438 -0.0124446657069589 -439 -0.0132452844526251 -440 -0.0134871442198044 -441 -0.0134721722474661 -442 -0.0129760608103375 -443 -0.0135083529746117 -444 -0.00963739106708388 -445 -0.00960193173592791 -446 -0.00868490827989549 -447 -0.00562468586891634 -448 -0.00853085467733999 -449 -0.00565929471677666 -450 -0.011223863255388 -451 -0.00966138501976315 -452 -0.0090354154607024 -453 -0.00713189903764993 -454 -0.011915762088822 -455 -0.0119958054757221 -456 -0.00993992005512065 -457 -0.00969020982773293 -458 -0.00823692240018265 -459 -0.000762137019254547 -460 -0.0020574939054943 -461 -0.00301533448841631 -462 -0.0048914231194836 -463 -0.00351910868759082 -464 -0.00684827660431788 -465 -0.0116186865393049 -466 -0.011300766713872 -467 -0.0125877507082846 -468 -0.0122940688703853 -469 -0.0117006004743094 -470 -0.0120808872890787 -471 -0.0079558659705616 -472 -0.0121146783942612 -473 0.0430539568135278 -474 0.0413747171665245 -475 0.0523499660199948 -476 0.0583608476822571 -477 -0.00619124151362362 -478 0.100261603489863 -479 -0.0115737946916181 -480 0.0410488267232732 -481 0.0394584957178085 -482 0.0409791183648626 -483 -0.0114608582351028 -484 -0.0105762029046014 -485 -0.0107944072761537 -486 -0.0112852025771194 -487 -0.0117263968065824 -488 -0.0110523616082281 -489 -0.0119497692898177 -490 -0.0116197924803783 -491 -0.0118402671059512 -492 -0.011897810344265 -493 -0.0118894488668558 -494 -0.0119264743252911 -495 -0.0114690161171001 -496 -0.00731323308517564 -497 -0.00809920804780606 -498 -0.00742970488647833 -499 -0.00511857473147858 -500 -0.00847898987161735 -501 -0.00820255817878669 -502 -0.0114261236985163 -503 -0.0115203134210467 -504 -0.00860290050483073 -505 -0.00826598998994287 -506 -0.00724980855887389 -507 -0.0115572629089065 -508 -0.0102803597313671 -509 -0.00869596301166451 -510 -0.00845394207419729 -511 -0.0117046810178094 -512 -0.00179199508390725 -513 -0.00107544976391358 -514 3.80706993328397e-05 -515 -0.000596554636898724 -516 -0.00357817525748314 -517 -0.00275478226050938 -518 -0.00770597808246832 -519 -0.00966201636724091 -520 -0.0101235465897374 -521 -0.0101536171271843 -522 -0.011155833269644 -523 -0.0110476185961753 -524 -0.00669564292913809 -525 -0.0110511552401975 -526 0.0440369068608864 -527 0.0512502905452455 -528 0.0486364491522985 -529 -0.00947573738593063 -530 0.0556902385103537 -531 0.048793011831808 -532 0.0459173634094269 -533 -0.0106409633397968 -534 0.0407992456018877 -535 0.039174303444095 -536 -0.0108360842113073 -537 -0.0100788835149665 -538 -0.010254912645359 -539 -0.0100259263673741 -540 -0.00990611735032563 -541 -0.0094032789969041 -542 -0.00950843747839274 -543 -0.00845625372492551 -544 -0.00866941515320219 -545 -0.00846124322850009 -546 -0.00914497373023597 -547 -0.00993847480108134 -548 -0.0075404949330402 -549 -0.0105738813921492 -550 -0.00995220250924118 -551 -0.00737345302781976 -552 -0.00705109912188471 -553 -0.00701139365327054 -554 -0.0100844014809053 -555 -0.00967040948412226 -556 -0.00555743993134012 -557 -0.00567368083508669 -558 -0.00579497136824869 -559 -0.00863244150774459 -560 -0.00886461549077306 -561 -0.0071079244280313 -562 -0.00724638263714693 -563 -0.0106271670963377 -564 -0.011037491565844 -565 -0.00536963936657175 -566 -0.00611090090733861 -567 -0.0028887251775724 -568 -0.00191043898745117 -569 -0.00127008538342651 -570 -0.00355834410328823 -571 -0.00455486576193576 -572 -0.00787475936794373 -573 -0.00788070911313194 -574 -0.0095868651265576 -575 -0.00951475112345576 -576 -0.0093743009207885 -577 -0.00547534007201022 -578 -0.00937228540429001 -579 0.0550319460420979 -580 0.0480645516151382 -581 -0.00734599404058905 -582 0.0460830024666069 -583 0.0576848767980736 -584 -0.00479751472149516 -585 0.0476440575581396 -586 0.0440509543394544 -587 -0.0092326530313669 -588 0.0416175571960497 -589 -0.0085697744475703 -590 -0.00849597671001137 -591 -0.00868661526356155 -592 -0.00914985829952541 -593 -0.00899659236078795 -594 -0.00852948984142705 -595 -0.00914967236793954 -596 -0.00874291045968585 -597 -0.00901928709184545 -598 -0.00893752387862559 -599 -0.00891224538068911 -600 -0.00651845952670981 -601 -0.00883751161943683 -602 -0.0089038138028028 -603 -0.00557038586902196 -604 -0.00528015885880997 -605 -0.00549258943084052 -606 -0.00885043870546068 -607 -0.00888233763605627 -608 -0.00534145902438052 -609 -0.00549755365130086 -610 -0.00543696053556694 -611 -0.00822523019438649 -612 -0.00872078038906415 -613 -0.00768752566683437 -614 -0.00581778171379135 -615 -0.00582391899839174 -616 -0.00928453417405443 -617 -0.00967264668427969 -618 -0.00459002993915674 -619 -0.005950987566855 -620 -0.00566913223974097 -621 -0.00449639995945585 -622 0.000563029103117738 -623 -0.000478567451764753 -624 -0.00478545037303475 -625 -0.00138436078321331 -626 -0.00658049012770183 -627 -0.00727390808805458 -628 -0.00826948198171915 -629 -0.00802863304649895 -630 -0.00440359258641195 -631 -0.00781572985833776 -632 0.0467875647495199 -633 -0.0075634487605479 -634 0.0452825901031108 -635 0.047802503065829 -636 -0.00771441065516206 -637 0.0579827980967365 -638 -0.00344424350631554 -639 0.0474617155307238 -640 0.0443214745845027 -641 -0.00763674418359978 -642 -0.00783330048033026 -643 -0.00741506274953657 -644 -0.00766182032871294 -645 -0.00746333175586923 -646 -0.00774981281309243 -647 -0.00721405105565235 -648 -0.00748309956829258 -649 -0.00693846930808117 -650 -0.00687260605509018 -651 -0.00680305016519336 -652 -0.00392232393463165 -653 -0.00596409981793424 -654 -0.00637091532208361 -655 -0.0070021295658497 -656 -0.00745369558153276 -657 -0.00748127195784389 -658 -0.00764575146706985 -659 -0.00720638844475823 -660 -0.00404423858223977 -661 -0.00405994477085238 -662 -0.00403357383109679 -663 -0.00648614706767544 -664 -0.00685104080751668 -665 -0.0055280793955573 -666 -0.00315266716147567 -667 -0.00289308426512229 -668 -0.0072907609350431 -669 -0.00778772320057429 -670 -0.00488230712792173 -671 -0.00428235797819206 -672 -0.00192624881716949 -673 -0.00690255454554318 -674 -0.00713932385460058 -675 -0.00190412691550018 -676 -0.00393717929429579 -677 -0.00322818496016548 -678 -0.00243123536539799 -679 -0.00325588623994424 -680 -0.00538550295619236 -681 -0.00569794784977527 -682 -0.00289248819958694 -683 -0.00674738254274132 -684 -0.00654327601801023 -685 -0.00642602661328291 -686 0.0487750013526658 -687 0.047351094119514 -688 -0.00634438713740084 -689 0.0483969866326635 -690 -0.00631126189370909 -691 0.0575822184504765 -692 -0.00221791722280226 -693 0.0478438468160886 -694 -0.00601391341772256 -695 -0.0056575420242112 -696 -0.00594331685758806 -697 -0.00602482896673149 -698 -0.00605358459658212 -699 -0.00573917550488335 -700 -0.00612440997777024 -701 -0.00585399571222659 -702 -0.00621035443994097 -703 -0.00577194218906833 -704 -0.00613669297980652 -705 -0.00603898494035611 -706 -0.00619657263267714 -707 -0.00631266537086359 -708 -0.00624176954936451 -709 -0.006493542110829 -710 -0.00641811359085571 -711 -0.00580520415695734 -712 -0.00254464054715768 -713 -0.00229049693565925 -714 -0.00260111893418342 -715 -0.00527998866629625 -716 -0.00580492472038456 -717 -0.00465763013855649 -718 -0.00291794763769027 -719 -0.0026170818255646 -720 -0.00635539773199271 -721 -0.00671950951784405 -722 -0.00681695170475915 -723 -0.00342054050102763 -724 -0.00275560859414933 -725 -0.000438510861243582 -726 -0.00560480727876819 -727 -0.0041561152883926 -728 -0.00600365300527431 -729 -0.00265123271948093 -730 -0.00264290423293351 -731 -0.00282174940291308 -732 -0.00138157106781404 -733 -0.00215366901979637 -734 -0.00419250836135037 -735 -0.000767184920404968 -736 -0.00550222672199026 -737 -0.00539179599992564 -738 -0.00519932278664982 -739 0.0503886317719632 -740 -0.00520071436244274 -741 0.0475171927490064 -742 -0.0054330140398667 -743 0.047917953696494 -744 -0.00493698211328358 -745 0.0578078065249347 -746 -0.00102406638326662 -747 -0.00351464407443385 -748 -0.00471808955799036 -749 -0.00466085562121167 -750 -0.00504216853601972 -751 -0.00491478851728083 -752 -0.00511582115647942 -753 -0.00510690407002076 -754 -0.00467115492125063 -755 -0.00507292488280625 -756 -0.00469600377226158 -757 -0.00479060778969928 -758 -0.00466814567292629 -759 -0.00459391587926426 -760 -0.00459367283047094 -761 -0.00456390630082813 -762 -0.00455517712581946 -763 -0.00444580816383878 -764 -0.00414375346682848 -765 -0.00462598085672905 -766 -0.00499924843048424 -767 -0.00393636209693802 -768 -0.00456718162991524 -769 -0.00323237519329591 -770 -0.00148778939855011 -771 -0.00156596659778741 -772 -0.00512915993874979 -773 -0.00492227748379505 -774 -0.00510090567121982 -775 -0.00134085402411959 -776 -0.000327698557656855 -777 -8.39604799222434e-05 -778 -0.00353180377704261 -779 -0.000884661451432567 -780 -0.00538269466798041 -781 -0.00550165919535478 -782 -0.00474894345489591 -783 -0.00166595007800424 -784 -0.00164486517145988 -785 -0.0035315332501745 -786 -0.00381711953376717 -787 0.000511414240780713 -788 -0.00386876867596389 -789 -0.00388546637330086 -790 -0.00381782963314221 -791 -0.00381978862023741 -792 -0.00375421982535356 -793 0.0509990813856318 -794 -0.00381674314240938 -795 0.0477092429318382 -796 -0.00346493764501739 -797 0.0486187069130531 -798 -0.00339231221033292 -799 -0.00372220200580609 -800 -0.00287181937082116 -801 -0.00282120299186121 -802 -0.00303246455350132 -803 -0.00274260094361711 -804 -0.00310003295922211 -805 -0.00318965584106337 -806 -0.0031124174327327 -807 -0.00296156129101724 -808 -0.00261410724164222 -809 -0.00304904712449122 -810 -0.00281829350522029 -811 -0.00334413423907794 -812 -0.00324558699946082 -813 -0.00321794842161168 -814 -0.00321688033495476 -815 -0.00315375940221917 -816 -0.00336252254507409 -817 -0.00338748787969201 -818 -0.0034301958497396 -819 -0.00328180304356289 -820 -0.00258348401263859 -821 -0.00151860018638174 -822 0.000385489721472849 -823 0.000485212390458467 -824 -0.00320045213749609 -825 -0.00360387425612046 -826 -0.00368875452847038 -827 -0.000252971173092802 -828 0.000274558167106639 -829 0.000415225492461183 -830 -0.00244928117799424 -831 -0.00157932593327874 -832 -0.00367396988363851 -833 -0.00159554367802162 -834 -0.00368044170833197 -835 -0.00381051495784578 -836 -0.00324391585440044 -837 8.26736255865406e-05 -838 0.000153133563221676 -839 0.00199072719691019 -840 -0.00225648039461718 -841 -0.00274833553045294 -842 -0.0025524575347716 -843 -0.00266988934954553 -844 -0.00255016712114302 -845 -0.00249982952647676 -846 -0.00252451553899371 -847 0.0509521741597566 -848 -0.00203584084600686 -849 0.0482575025076935 -850 -0.00222502592695146 -851 -0.00243295457553993 -852 -0.00170644617880928 -853 -0.00187578228348824 -854 -0.00189936420623392 -855 -0.00181014970183154 -856 -0.0019587407113103 -857 -0.00203035618973669 -858 -0.00200647352201275 -859 -0.00193357132846691 -860 -0.00203929593752837 -861 -0.00206047244950508 -862 -0.00172974796194137 -863 -0.00222152628496213 -864 -0.00176469161067378 -865 -0.00214628615471073 -866 -0.00223274820098944 -867 -0.00192609654692526 -868 -0.00160052707734799 -869 -0.00117491475685682 -870 -0.00172104022111683 -871 -0.00197669922228011 -872 -0.00200394021725799 -873 -0.00221174196880852 -874 -0.00214414888155639 -875 -0.0022418657462635 -876 -0.00224815601970618 -877 -0.00217548907899938 -878 -0.00219023215478833 -879 0.00103657148517733 -880 0.00170021752346762 -881 0.00176856581251282 -882 -0.00119486637524174 -883 -0.000182189717262493 -884 -0.00231669994116794 -885 -0.00235562044940596 -886 -0.00240760288834928 -887 -0.000369271736430893 -888 -0.00246106212268728 -889 -0.00248445436295954 -890 -0.00240055220436233 -891 0.00124694319822849 -892 -0.00238841299541467 -893 -0.00120964260603448 -894 -0.00108173638550143 -895 -0.00126617766611188 -896 -0.00126735332683995 -897 -0.00132493094338301 -898 -0.00127297814761722 -899 -0.00107541591903143 -900 -0.00078859473755685 -901 0.0515056301543915 -902 -0.000768818460590909 -903 -0.00107659176705549 -904 -0.000363324073519261 -905 -0.000435897358878675 -906 -0.000440171834594805 -907 -0.000337150215603847 -908 -0.000521457828934685 -909 -0.000601509879478592 -910 -0.000562536656253432 -911 -0.000540431206158033 -912 -0.000585521045810499 -913 -0.000647443311740879 -914 -0.000652572655245648 -915 -0.000754504564741441 -916 -0.00026111034852018 -917 -0.000614503803880769 -918 -0.00028306248528981 -919 -0.00062103454712342 -920 -0.00080789702501966 -921 -0.000857347553194396 -922 -0.000973273096392423 -923 -0.00071891921707499 -924 -0.000852123727546584 -925 -0.000908061110978231 -926 -0.000897846447493529 -927 -0.00107192184892616 -928 -0.00103558075120389 -929 -0.000858383868863735 -930 -0.00100410240556484 -931 0.00217861450591949 -932 0.00284094109416015 -933 0.00290236058075264 -934 -4.67766974110993e-06 -935 -0.00115598145065964 -936 -0.00115889264986191 -937 -0.00120477520403814 -938 -0.0011160907820447 -939 -0.00122108572337335 -940 -0.00129438459340121 -941 -0.0012642472236683 -942 -0.00112755293175713 -943 0.00267094176933998 -944 -0.00127265229053917 -945 -0.00128120069665366 -946 -0.00125730796622217 -947 -0.000161188927728071 -948 -0.00018709473550969 -949 -0.000202988378879946 -950 -0.000298277929635308 -951 -0.000228270818099919 -952 -0.000234161898233589 -953 -0.00026231090883195 -954 -0.000188222581526064 -955 -3.12448503073219e-05 -956 0.000717016504105383 -957 0.000690863879115161 -958 0.000699560885968165 -959 0.000642085039518387 -960 0.000647697652791968 -961 0.000599074112689629 -962 0.000575154175297893 -963 0.000549298287923788 -964 0.000516895100767751 -965 0.000505782209635087 -966 0.000468256937777253 -967 0.000443201508212851 -968 0.000422857688527172 -969 0.000396172202507289 -970 0.000378968023322664 -971 0.000356781808907751 -972 0.000335281879557104 -973 0.000318039116828582 -974 0.00029453308441855 -975 0.000267951475057331 -976 0.000246035263474985 -977 0.000289581453389937 -978 0.000348007228990331 -979 0.00040460593179165 -980 0.000411143906352345 -981 0.000381827800477813 -982 0.000355749114743507 -983 0.000330472553418517 -984 0.000310675137741401 -985 0.000285966709056265 -986 0.000261731425090165 -987 0.000237012405074174 -988 0.000215826766435867 -989 0.000273446389041168 -990 0.000248883730962565 -991 0.000224615155659346 -992 0.000200129222402582 -993 0.000177275060030199 -994 0.00015277663830548 -995 0.000128527059295642 -996 0.000102904910816061 -997 8.05504321850845e-05 -998 5.85820006378074e-05 -999 3.63637004327478e-05 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat deleted file mode 100644 index 8844c14e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.00191903114318848 0.0 0.0 0.0 1 -2 0.00184082984924316 0.0 0.0 0.0 2 -3 0.00179791450500488 0.0 0.0 0.0 3 -4 0.00180506706237793 0.0100000000000016 0.0100000000000016 0.0 4 -5 0.00179386138916016 0.0 0.0 0.0 5 -6 0.00174307823181152 0.0 0.0 0.0 6 -7 0.00177001953125 0.0 0.0 0.0 7 -8 0.00175905227661133 0.0 0.0 0.0 8 -9 0.00177288055419922 0.00999999999999801 0.00999999999999801 0.0 9 -10 0.00176692008972168 0.0 0.0 0.0 10 -11 0.00176906585693359 0.0 0.0 0.0 11 -12 0.0017549991607666 0.0 0.0 0.0 12 -13 0.00345110893249512 0.0 0.0 0.0 13 -14 0.0018010139465332 0.0100000000000016 0.0100000000000016 0.0 14 -15 0.0017697811126709 0.0 0.0 0.0 15 -16 0.00174093246459961 0.0 0.0 0.0 16 -17 0.00175905227661133 0.0 0.0 0.0 17 -18 0.00176501274108887 0.0 0.0 0.0 18 -19 0.00176501274108887 0.0 0.0 0.0 19 -20 0.00175905227661133 0.00999999999999801 0.00999999999999801 0.0 20 -21 0.00173807144165039 0.0 0.0 0.0 21 -22 0.00222587585449219 0.0 0.0 0.0 22 -23 0.00347685813903809 0.0 0.0 0.0 23 -24 0.00342988967895508 0.0100000000000016 0.0100000000000016 0.0 24 -25 0.00312495231628418 0.0 0.0 0.0 25 -26 0.00174784660339355 0.0 0.0 0.0 26 -27 0.00174403190612793 0.0 0.0 0.0 27 -28 0.00174093246459961 0.0100000000000016 0.0100000000000016 0.0 28 -29 0.00173211097717285 0.0 0.0 0.0 29 -30 0.00176692008972168 0.0 0.0 0.0 30 -31 0.00176620483398438 0.0 0.0 0.0 31 -32 0.00179195404052734 0.0 0.0 0.0 32 -33 0.0017549991607666 0.0 0.0 0.0 33 -34 0.00172591209411621 0.0 0.0 0.0 34 -35 0.00174117088317871 0.0 0.0 0.0 35 -36 0.00173783302307129 0.0 0.0 0.0 36 -37 0.00174689292907715 0.0 0.0 0.0 37 -38 0.00173211097717285 0.0 0.0 0.0 38 -39 0.00174999237060547 0.0100000000000016 0.0100000000000016 0.0 39 -40 0.00176692008972168 0.0 0.0 0.0 40 -41 0.00172901153564453 0.0 0.0 0.0 41 -42 0.00174593925476074 0.0 0.0 0.0 42 -43 0.00175309181213379 0.0 0.0 0.0 43 -44 0.00175905227661133 0.0 0.0 0.0 44 -45 0.00176715850830078 0.00999999999999801 0.00999999999999801 0.0 45 -46 0.00174784660339355 0.0 0.0 0.0 46 -47 0.0017399787902832 0.0 0.0 0.0 47 -48 0.00174307823181152 0.0 0.0 0.0 48 -49 0.00180912017822266 0.0 0.0 0.0 49 -50 0.00175309181213379 0.0100000000000016 0.0100000000000016 0.0 50 -51 0.0017399787902832 0.0 0.0 0.0 51 -52 0.00176811218261719 0.0 0.0 0.0 52 -53 0.00176596641540527 0.0 0.0 0.0 53 -54 0.00189590454101562 0.0 0.0 0.0 54 -55 0.024507999420166 0.0299999999999976 0.0299999999999976 0.0 55 -56 0.00197005271911621 0.0 0.0 0.0 56 -57 0.00185298919677734 0.0 0.0 0.0 57 -58 0.00178289413452148 0.0 0.0 0.0 58 -59 0.00177383422851562 0.0 0.0 0.0 59 -60 0.00178122520446777 0.0100000000000016 0.0100000000000016 0.0 60 -61 0.00177597999572754 0.0 0.0 0.0 61 -62 0.00182914733886719 0.0 0.0 0.0 62 -63 0.00176692008972168 0.0 0.0 0.0 63 -64 0.00177502632141113 0.0 0.0 0.0 64 -65 0.00175118446350098 0.0100000000000016 0.0100000000000016 0.0 65 -66 0.00176286697387695 0.0 0.0 0.0 66 -67 0.00175809860229492 0.0 0.0 0.0 67 -68 0.00176095962524414 0.0 0.0 0.0 68 -69 0.0017540454864502 0.0 0.0 0.0 69 -70 0.00175094604492188 0.0 0.0 0.0 70 -71 0.00176000595092773 0.00999999999999801 0.00999999999999801 0.0 71 -72 0.00174784660339355 0.0 0.0 0.0 72 -73 0.00272703170776367 0.0 0.0 0.0 73 -74 0.00178098678588867 0.0 0.0 0.0 74 -75 0.0017540454864502 0.0 0.0 0.0 75 -76 0.00175595283508301 0.0100000000000016 0.0100000000000016 0.0 76 -77 0.00174784660339355 0.0 0.0 0.0 77 -78 0.00176095962524414 0.0 0.0 0.0 78 -79 0.00175094604492188 0.0 0.0 0.0 79 -80 0.00174617767333984 0.0 0.0 0.0 80 -81 0.00176286697387695 0.00999999999999801 0.00999999999999801 0.0 81 -82 0.00174784660339355 0.0 0.0 0.0 82 -83 0.0017402172088623 0.0 0.0 0.0 83 -84 0.00174093246459961 0.0 0.0 0.0 84 -85 0.00174880027770996 0.0 0.0 0.0 85 -86 0.00174283981323242 0.0 0.0 0.0 86 -87 0.0017549991607666 0.0100000000000016 0.0100000000000016 0.0 87 -88 0.00175690650939941 0.0 0.0 0.0 88 -89 0.0017390251159668 0.0 0.0 0.0 89 -90 0.0017399787902832 0.0 0.0 0.0 90 -91 0.00176286697387695 0.0 0.0 0.0 91 -92 0.00174093246459961 0.00999999999999801 0.00999999999999801 0.0 92 -93 0.00173306465148926 0.0 0.0 0.0 93 -94 0.00173091888427734 0.0 0.0 0.0 94 -95 0.00175118446350098 0.0 0.0 0.0 95 -96 0.00173187255859375 0.0 0.0 0.0 96 -97 0.00177407264709473 0.0 0.0 0.0 97 -98 0.00174498558044434 0.0100000000000016 0.0100000000000016 0.0 98 -99 0.00173783302307129 0.0 0.0 0.0 99 -100 0.00174283981323242 0.0 0.0 0.0 100 -101 0.0017549991607666 0.0 0.0 0.0 101 -102 0.00173020362854004 0.0 0.0 0.0 102 -103 0.00172805786132812 0.0 0.0 0.0 103 -104 0.00174784660339355 0.0 0.0 0.0 104 -105 0.00175786018371582 0.0 0.0 0.0 105 -106 0.00176501274108887 0.0 0.0 0.0 106 -107 0.00174784660339355 0.0 0.0 0.0 107 -108 0.00176095962524414 0.0 0.0 0.0 108 -109 0.0247871875762939 0.0299999999999976 0.0299999999999976 0.0 109 -110 0.0018157958984375 0.0 0.0 0.0 110 -111 0.00183296203613281 0.0 0.0 0.0 111 -112 0.00179004669189453 0.0 0.0 0.0 112 -113 0.00177502632141113 0.0100000000000016 0.0100000000000016 0.0 113 -114 0.00177502632141113 0.0 0.0 0.0 114 -115 0.00174498558044434 0.0 0.0 0.0 115 -116 0.00174808502197266 0.0 0.0 0.0 116 -117 0.00175595283508301 0.0 0.0 0.0 117 -118 0.00174808502197266 0.00999999999999801 0.00999999999999801 0.0 118 -119 0.00177216529846191 0.0 0.0 0.0 119 -120 0.0017540454864502 0.0 0.0 0.0 120 -121 0.00176286697387695 0.0 0.0 0.0 121 -122 0.00176787376403809 0.0 0.0 0.0 122 -123 0.00175905227661133 0.0 0.0 0.0 123 -124 0.0017549991607666 0.0100000000000016 0.0100000000000016 0.0 124 -125 0.00174403190612793 0.0 0.0 0.0 125 -126 0.00174903869628906 0.0 0.0 0.0 126 -127 0.00180387496948242 0.0 0.0 0.0 127 -128 0.00177502632141113 0.0 0.0 0.0 128 -129 0.00175595283508301 0.00999999999999801 0.00999999999999801 0.0 129 -130 0.00174903869628906 0.0 0.0 0.0 130 -131 0.00176501274108887 0.0 0.0 0.0 131 -132 0.00191903114318848 0.0 0.0 0.0 132 -133 0.0034480094909668 0.0 0.0 0.0 133 -134 0.00341916084289551 0.0100000000000016 0.0100000000000016 0.0 134 -135 0.00260114669799805 0.0 0.0 0.0 135 -136 0.00203084945678711 0.0 0.0 0.0 136 -137 0.00176596641540527 0.0 0.0 0.0 137 -138 0.00175189971923828 0.0100000000000016 0.0100000000000016 0.0 138 -139 0.00176119804382324 0.0 0.0 0.0 139 -140 0.00174784660339355 0.0 0.0 0.0 140 -141 0.00173783302307129 0.0 0.0 0.0 141 -142 0.00179481506347656 0.0 0.0 0.0 142 -143 0.00173401832580566 0.00999999999999801 0.00999999999999801 0.0 143 -144 0.00175189971923828 0.0 0.0 0.0 144 -145 0.00174188613891602 0.0 0.0 0.0 145 -146 0.0017549991607666 0.0 0.0 0.0 146 -147 0.00174808502197266 0.0 0.0 0.0 147 -148 0.00174498558044434 0.0 0.0 0.0 148 -149 0.00174307823181152 0.0100000000000016 0.0100000000000016 0.0 149 -150 0.00175595283508301 0.0 0.0 0.0 150 -151 0.0017549991607666 0.0 0.0 0.0 151 -152 0.00174403190612793 0.0 0.0 0.0 152 -153 0.00174808502197266 0.0 0.0 0.0 153 -154 0.00174403190612793 0.0 0.0 0.0 154 -155 0.00183796882629395 0.00999999999999801 0.00999999999999801 0.0 155 -156 0.00176095962524414 0.0 0.0 0.0 156 -157 0.0017399787902832 0.0 0.0 0.0 157 -158 0.00181007385253906 0.0 0.0 0.0 158 -159 0.00175905227661133 0.0 0.0 0.0 159 -160 0.00177717208862305 0.0100000000000016 0.0100000000000016 0.0 160 -161 0.00175380706787109 0.0 0.0 0.0 161 -162 0.00177097320556641 0.0 0.0 0.0 162 -163 0.0254480838775635 0.0199999999999996 0.0199999999999996 0.0 163 -164 0.00185108184814453 0.00999999999999801 0.00999999999999801 0.0 164 -165 0.00188708305358887 0.0 0.0 0.0 165 -166 0.00177788734436035 0.0 0.0 0.0 166 -167 0.00183510780334473 0.0 0.0 0.0 167 -168 0.00177812576293945 0.0 0.0 0.0 168 -169 0.00177502632141113 0.0100000000000016 0.0100000000000016 0.0 169 -170 0.00174593925476074 0.0 0.0 0.0 170 -171 0.00176692008972168 0.0 0.0 0.0 171 -172 0.00175786018371582 0.0 0.0 0.0 172 -173 0.00176501274108887 0.0 0.0 0.0 173 -174 0.0018000602722168 0.0100000000000016 0.0100000000000016 0.0 174 -175 0.00176095962524414 0.0 0.0 0.0 175 -176 0.00175714492797852 0.0 0.0 0.0 176 -177 0.00174999237060547 0.0 0.0 0.0 177 -178 0.00176191329956055 0.0 0.0 0.0 178 -179 0.00175786018371582 0.0 0.0 0.0 179 -180 0.00174117088317871 0.00999999999999801 0.00999999999999801 0.0 180 -181 0.00177001953125 0.0 0.0 0.0 181 -182 0.00176095962524414 0.0 0.0 0.0 182 -183 0.00174903869628906 0.0 0.0 0.0 183 -184 0.00174093246459961 0.0 0.0 0.0 184 -185 0.00174307823181152 0.0 0.0 0.0 185 -186 0.00175595283508301 0.0100000000000016 0.0100000000000016 0.0 186 -187 0.00175189971923828 0.0 0.0 0.0 187 -188 0.00173711776733398 0.0 0.0 0.0 188 -189 0.00221514701843262 0.0 0.0 0.0 189 -190 0.00177502632141113 0.0 0.0 0.0 190 -191 0.00176811218261719 0.00999999999999801 0.00999999999999801 0.0 191 -192 0.00185799598693848 0.0 0.0 0.0 192 -193 0.00174903869628906 0.0 0.0 0.0 193 -194 0.00174379348754883 0.0 0.0 0.0 194 -195 0.0017399787902832 0.0 0.0 0.0 195 -196 0.00173401832580566 0.0100000000000016 0.0100000000000016 0.0 196 -197 0.00172996520996094 0.0 0.0 0.0 197 -198 0.00173401832580566 0.0 0.0 0.0 198 -199 0.00182390213012695 0.0 0.0 0.0 199 -200 0.00174784660339355 0.0 0.0 0.0 200 -201 0.0017549991607666 0.0 0.0 0.0 201 -202 0.00174307823181152 0.00999999999999801 0.00999999999999801 0.0 202 -203 0.00172710418701172 0.0 0.0 0.0 203 -204 0.00174283981323242 0.0 0.0 0.0 204 -205 0.00174999237060547 0.0 0.0 0.0 205 -206 0.00174093246459961 0.0 0.0 0.0 206 -207 0.00173616409301758 0.0 0.0 0.0 207 -208 0.00174903869628906 0.0100000000000016 0.0100000000000016 0.0 208 -209 0.00177407264709473 0.0 0.0 0.0 209 -210 0.00176286697387695 0.0 0.0 0.0 210 -211 0.00174903869628906 0.0 0.0 0.0 211 -212 0.00173807144165039 0.0 0.0 0.0 212 -213 0.00173020362854004 0.0100000000000016 0.0100000000000016 0.0 213 -214 0.00177502632141113 0.0 0.0 0.0 214 -215 0.00175309181213379 0.0 0.0 0.0 215 -216 0.00175595283508301 0.0 0.0 0.0 216 -217 0.0257258415222168 0.0299999999999976 0.0299999999999976 0.0 217 -218 0.00183296203613281 0.0 0.0 0.0 218 -219 0.00183606147766113 0.0 0.0 0.0 219 -220 0.0017850399017334 0.0 0.0 0.0 220 -221 0.00177097320556641 0.0 0.0 0.0 221 -222 0.00177097320556641 0.0100000000000016 0.0100000000000016 0.0 222 -223 0.00174808502197266 0.0 0.0 0.0 223 -224 0.00177216529846191 0.0 0.0 0.0 224 -225 0.0017549991607666 0.0 0.0 0.0 225 -226 0.00176095962524414 0.0 0.0 0.0 226 -227 0.00178098678588867 0.00999999999999801 0.00999999999999801 0.0 227 -228 0.00174188613891602 0.0 0.0 0.0 228 -229 0.0017540454864502 0.0 0.0 0.0 229 -230 0.00176477432250977 0.0 0.0 0.0 230 -231 0.00176191329956055 0.0 0.0 0.0 231 -232 0.00174713134765625 0.0 0.0 0.0 232 -233 0.00176095962524414 0.0100000000000016 0.0100000000000016 0.0 233 -234 0.00174903869628906 0.0 0.0 0.0 234 -235 0.0017549991607666 0.0 0.0 0.0 235 -236 0.00177001953125 0.0 0.0 0.0 236 -237 0.00174093246459961 0.0 0.0 0.0 237 -238 0.00174379348754883 0.0 0.0 0.0 238 -239 0.0017390251159668 0.00999999999999801 0.00999999999999801 0.0 239 -240 0.00175213813781738 0.0 0.0 0.0 240 -241 0.00174117088317871 0.0 0.0 0.0 241 -242 0.00341701507568359 0.0 0.0 0.0 242 -243 0.00347495079040527 0.0100000000000016 0.0100000000000016 0.0 243 -244 0.00339508056640625 0.0 0.0 0.0 244 -245 0.00204801559448242 0.0 0.0 0.0 245 -246 0.00174903869628906 0.0 0.0 0.0 246 -247 0.00174903869628906 0.0100000000000016 0.0100000000000016 0.0 247 -248 0.00174283981323242 0.0 0.0 0.0 248 -249 0.00176382064819336 0.0 0.0 0.0 249 -250 0.00179600715637207 0.0 0.0 0.0 250 -251 0.00175380706787109 0.0 0.0 0.0 251 -252 0.00175976753234863 0.00999999999999801 0.00999999999999801 0.0 252 -253 0.00174188613891602 0.0 0.0 0.0 253 -254 0.00174808502197266 0.0 0.0 0.0 254 -255 0.00175690650939941 0.0 0.0 0.0 255 -256 0.00173091888427734 0.0 0.0 0.0 256 -257 0.00175213813781738 0.0 0.0 0.0 257 -258 0.00174498558044434 0.0100000000000016 0.0100000000000016 0.0 258 -259 0.00174999237060547 0.0 0.0 0.0 259 -260 0.00175094604492188 0.0 0.0 0.0 260 -261 0.00177097320556641 0.0 0.0 0.0 261 -262 0.00174283981323242 0.0 0.0 0.0 262 -263 0.00174999237060547 0.00999999999999801 0.00999999999999801 0.0 263 -264 0.00174713134765625 0.0 0.0 0.0 264 -265 0.00174212455749512 0.0 0.0 0.0 265 -266 0.00174498558044434 0.0 0.0 0.0 266 -267 0.00180602073669434 0.0 0.0 0.0 267 -268 0.00176906585693359 0.0 0.0 0.0 268 -269 0.00176382064819336 0.0100000000000016 0.0100000000000016 0.0 269 -270 0.0255179405212402 0.0199999999999996 0.0199999999999996 0.0 270 -271 0.00179314613342285 0.0 0.0 0.0 271 -272 0.00182604789733887 0.00999999999999801 0.00999999999999801 0.0 272 -273 0.00179910659790039 0.0 0.0 0.0 273 -274 0.00179505348205566 0.0 0.0 0.0 274 -275 0.00176811218261719 0.0 0.0 0.0 275 -276 0.00177192687988281 0.0 0.0 0.0 276 -277 0.00177478790283203 0.0 0.0 0.0 277 -278 0.00176596641540527 0.0100000000000016 0.0100000000000016 0.0 278 -279 0.0020899772644043 0.0 0.0 0.0 279 -280 0.00182890892028809 0.0 0.0 0.0 280 -281 0.00177597999572754 0.0 0.0 0.0 281 -282 0.0018761157989502 0.0 0.0 0.0 282 -283 0.00176405906677246 0.0100000000000016 0.0100000000000016 0.0 283 -284 0.00177693367004395 0.0 0.0 0.0 284 -285 0.00175094604492188 0.0 0.0 0.0 285 -286 0.00176000595092773 0.0 0.0 0.0 286 -287 0.00176095962524414 0.0 0.0 0.0 287 -288 0.00176715850830078 0.0 0.0 0.0 288 -289 0.0017549991607666 0.00999999999999801 0.00999999999999801 0.0 289 -290 0.00177216529846191 0.0 0.0 0.0 290 -291 0.00175881385803223 0.0 0.0 0.0 291 -292 0.00177502632141113 0.0 0.0 0.0 292 -293 0.00174999237060547 0.0 0.0 0.0 293 -294 0.00176000595092773 0.0100000000000016 0.0100000000000016 0.0 294 -295 0.00173807144165039 0.0 0.0 0.0 295 -296 0.00174999237060547 0.0 0.0 0.0 296 -297 0.00174212455749512 0.0 0.0 0.0 297 -298 0.0017549991607666 0.0 0.0 0.0 298 -299 0.00174713134765625 0.0 0.0 0.0 299 -300 0.00174784660339355 0.00999999999999801 0.00999999999999801 0.0 300 -301 0.00174403190612793 0.0 0.0 0.0 301 -302 0.00175905227661133 0.0 0.0 0.0 302 -303 0.00174713134765625 0.0 0.0 0.0 303 -304 0.00293898582458496 0.0 0.0 0.0 304 -305 0.00175619125366211 0.0100000000000016 0.0100000000000016 0.0 305 -306 0.00176787376403809 0.0 0.0 0.0 306 -307 0.00173401832580566 0.0 0.0 0.0 307 -308 0.00176095962524414 0.0 0.0 0.0 308 -309 0.00177383422851562 0.0 0.0 0.0 309 -310 0.00175189971923828 0.0 0.0 0.0 310 -311 0.00173211097717285 0.00999999999999801 0.00999999999999801 0.0 311 -312 0.00173211097717285 0.0 0.0 0.0 312 -313 0.00175786018371582 0.0 0.0 0.0 313 -314 0.0017549991607666 0.0 0.0 0.0 314 -315 0.00180292129516602 0.0 0.0 0.0 315 -316 0.00176787376403809 0.0100000000000016 0.0100000000000016 0.0 316 -317 0.00175714492797852 0.0 0.0 0.0 317 -318 0.00177097320556641 0.0 0.0 0.0 318 -319 0.00173711776733398 0.0 0.0 0.0 319 -320 0.00174307823181152 0.0 0.0 0.0 320 -321 0.00177502632141113 0.0 0.0 0.0 321 -322 0.00176501274108887 0.0100000000000016 0.0100000000000016 0.0 322 -323 0.00177407264709473 0.0 0.0 0.0 323 -324 0.0253810882568359 0.0199999999999996 0.0199999999999996 0.0 324 -325 0.00182509422302246 0.00999999999999801 0.00999999999999801 0.0 325 -326 0.00184917449951172 0.0 0.0 0.0 326 -327 0.0018160343170166 0.0 0.0 0.0 327 -328 0.00176692008972168 0.0 0.0 0.0 328 -329 0.00176501274108887 0.0 0.0 0.0 329 -330 0.00177097320556641 0.0 0.0 0.0 330 -331 0.00176906585693359 0.0100000000000016 0.0100000000000016 0.0 331 -332 0.00175690650939941 0.0 0.0 0.0 332 -333 0.00176906585693359 0.0 0.0 0.0 333 -334 0.00173497200012207 0.0 0.0 0.0 334 -335 0.00176095962524414 0.0 0.0 0.0 335 -336 0.00176286697387695 0.00999999999999801 0.00999999999999801 0.0 336 -337 0.00176382064819336 0.0 0.0 0.0 337 -338 0.00174379348754883 0.0 0.0 0.0 338 -339 0.00174808502197266 0.0 0.0 0.0 339 -340 0.00175595283508301 0.0 0.0 0.0 340 -341 0.0017540454864502 0.0 0.0 0.0 341 -342 0.00174903869628906 0.0100000000000016 0.0100000000000016 0.0 342 -343 0.00172686576843262 0.0 0.0 0.0 343 -344 0.00175786018371582 0.0 0.0 0.0 344 -345 0.00181317329406738 0.0 0.0 0.0 345 -346 0.00176692008972168 0.0 0.0 0.0 346 -347 0.00175213813781738 0.00999999999999801 0.00999999999999801 0.0 347 -348 0.00172591209411621 0.0 0.0 0.0 348 -349 0.00174093246459961 0.0 0.0 0.0 349 -350 0.00202202796936035 0.0 0.0 0.0 350 -351 0.00346088409423828 0.0 0.0 0.0 351 -352 0.00342106819152832 0.0100000000000016 0.0100000000000016 0.0 352 -353 0.0033118724822998 0.0 0.0 0.0 353 -354 0.00195193290710449 0.0 0.0 0.0 354 -355 0.00175690650939941 0.0100000000000016 0.0100000000000016 0.0 355 -356 0.00174379348754883 0.0 0.0 0.0 356 -357 0.00174283981323242 0.0 0.0 0.0 357 -358 0.00174880027770996 0.0 0.0 0.0 358 -359 0.00177788734436035 0.0 0.0 0.0 359 -360 0.00173401832580566 0.0 0.0 0.0 360 -361 0.00173687934875488 0.00999999999999801 0.00999999999999801 0.0 361 -362 0.00174403190612793 0.0 0.0 0.0 362 -363 0.00174999237060547 0.0 0.0 0.0 363 -364 0.00173592567443848 0.0 0.0 0.0 364 -365 0.00175094604492188 0.0 0.0 0.0 365 -366 0.00174188613891602 0.0 0.0 0.0 366 -367 0.00175118446350098 0.0100000000000016 0.0100000000000016 0.0 367 -368 0.00175595283508301 0.0 0.0 0.0 368 -369 0.00174403190612793 0.0 0.0 0.0 369 -370 0.0017387866973877 0.0 0.0 0.0 370 -371 0.00177192687988281 0.0 0.0 0.0 371 -372 0.00177907943725586 0.00999999999999801 0.00999999999999801 0.0 372 -373 0.00174903869628906 0.0 0.0 0.0 373 -374 0.00176215171813965 0.0 0.0 0.0 374 -375 0.0023951530456543 0.0 0.0 0.0 375 -376 0.00357913970947266 0.0100000000000016 0.0100000000000016 0.0 376 -377 0.0294489860534668 0.0199999999999996 0.0199999999999996 0.0 377 -378 0.00180578231811523 0.00999999999999801 0.00999999999999801 0.0 378 -379 0.00181698799133301 0.0 0.0 0.0 379 -380 0.00183391571044922 0.0 0.0 0.0 380 -381 0.00181293487548828 0.0 0.0 0.0 381 -382 0.00175809860229492 0.0 0.0 0.0 382 -383 0.00176405906677246 0.0100000000000016 0.0100000000000016 0.0 383 -384 0.00176000595092773 0.0 0.0 0.0 384 -385 0.00175809860229492 0.0 0.0 0.0 385 -386 0.00177288055419922 0.0 0.0 0.0 386 -387 0.00175285339355469 0.0 0.0 0.0 387 -388 0.00175595283508301 0.0 0.0 0.0 388 -389 0.00177502632141113 0.0100000000000016 0.0100000000000016 0.0 389 -390 0.00174903869628906 0.0 0.0 0.0 390 -391 0.00176215171813965 0.0 0.0 0.0 391 -392 0.00174903869628906 0.0 0.0 0.0 392 -393 0.00174307823181152 0.0 0.0 0.0 393 -394 0.00177812576293945 0.00999999999999801 0.00999999999999801 0.0 394 -395 0.00176596641540527 0.0 0.0 0.0 395 -396 0.00178003311157227 0.0 0.0 0.0 396 -397 0.0017390251159668 0.0 0.0 0.0 397 -398 0.00174999237060547 0.0 0.0 0.0 398 -399 0.00174307823181152 0.0 0.0 0.0 399 -400 0.00176191329956055 0.0100000000000016 0.0100000000000016 0.0 400 -401 0.0017549991607666 0.0 0.0 0.0 401 -402 0.00173592567443848 0.0 0.0 0.0 402 -403 0.00173401832580566 0.0 0.0 0.0 403 -404 0.00176095962524414 0.0 0.0 0.0 404 -405 0.00174689292907715 0.00999999999999801 0.00999999999999801 0.0 405 -406 0.00176000595092773 0.0 0.0 0.0 406 -407 0.00172615051269531 0.0 0.0 0.0 407 -408 0.00174188613891602 0.0 0.0 0.0 408 -409 0.00174283981323242 0.0 0.0 0.0 409 -410 0.0017540454864502 0.0 0.0 0.0 410 -411 0.00174403190612793 0.0100000000000016 0.0100000000000016 0.0 411 -412 0.00172901153564453 0.0 0.0 0.0 412 -413 0.00173282623291016 0.0 0.0 0.0 413 -414 0.00174880027770996 0.0 0.0 0.0 414 -415 0.0017549991607666 0.0 0.0 0.0 415 -416 0.00173091888427734 0.00999999999999801 0.00999999999999801 0.0 416 -417 0.00174999237060547 0.0 0.0 0.0 417 -418 0.00184798240661621 0.0 0.0 0.0 418 -419 0.00175118446350098 0.0 0.0 0.0 419 -420 0.00173497200012207 0.0 0.0 0.0 420 -421 0.00173807144165039 0.0 0.0 0.0 421 -422 0.00174903869628906 0.0100000000000016 0.0100000000000016 0.0 422 -423 0.00174093246459961 0.0 0.0 0.0 423 -424 0.00177288055419922 0.0 0.0 0.0 424 -425 0.00176000595092773 0.0 0.0 0.0 425 -426 0.00174880027770996 0.0 0.0 0.0 426 -427 0.00173187255859375 0.0 0.0 0.0 427 -428 0.00179195404052734 0.0100000000000016 0.0100000000000016 0.0 428 -429 0.00175309181213379 0.0 0.0 0.0 429 -430 0.0253579616546631 0.0199999999999996 0.0199999999999996 0.0 430 -431 0.0018010139465332 0.00999999999999801 0.00999999999999801 0.0 431 -432 0.00183796882629395 0.0 0.0 0.0 432 -433 0.00179314613342285 0.0 0.0 0.0 433 -434 0.00180387496948242 0.0 0.0 0.0 434 -435 0.00178289413452148 0.0 0.0 0.0 435 -436 0.00178003311157227 0.0100000000000016 0.0100000000000016 0.0 436 -437 0.00177001953125 0.0 0.0 0.0 437 -438 0.00175285339355469 0.0 0.0 0.0 438 -439 0.00176405906677246 0.0 0.0 0.0 439 -440 0.00176501274108887 0.0 0.0 0.0 440 -441 0.00173497200012207 0.0 0.0 0.0 441 -442 0.00176215171813965 0.00999999999999801 0.00999999999999801 0.0 442 -443 0.00176000595092773 0.0 0.0 0.0 443 -444 0.0017390251159668 0.0 0.0 0.0 444 -445 0.00175714492797852 0.0 0.0 0.0 445 -446 0.00178098678588867 0.0 0.0 0.0 446 -447 0.00176286697387695 0.0 0.0 0.0 447 -448 0.00175595283508301 0.0100000000000016 0.0100000000000016 0.0 448 -449 0.00177097320556641 0.0 0.0 0.0 449 -450 0.00175905227661133 0.0 0.0 0.0 450 -451 0.00175595283508301 0.0 0.0 0.0 451 -452 0.00177693367004395 0.0 0.0 0.0 452 -453 0.00174999237060547 0.00999999999999801 0.00999999999999801 0.0 453 -454 0.00175595283508301 0.0 0.0 0.0 454 -455 0.00176191329956055 0.0 0.0 0.0 455 -456 0.00175094604492188 0.0 0.0 0.0 456 -457 0.00329685211181641 0.0 0.0 0.0 457 -458 0.00347805023193359 0.0100000000000016 0.0100000000000016 0.0 458 -459 0.00338196754455566 0.0 0.0 0.0 459 -460 0.00222587585449219 0.0 0.0 0.0 460 -461 0.00174784660339355 0.0100000000000016 0.0100000000000016 0.0 461 -462 0.00176715850830078 0.0 0.0 0.0 462 -463 0.00176501274108887 0.0 0.0 0.0 463 -464 0.00172901153564453 0.0 0.0 0.0 464 -465 0.00177407264709473 0.0 0.0 0.0 465 -466 0.00175309181213379 0.0 0.0 0.0 466 -467 0.00176095962524414 0.00999999999999801 0.00999999999999801 0.0 467 -468 0.00174403190612793 0.0 0.0 0.0 468 -469 0.00172996520996094 0.0 0.0 0.0 469 -470 0.00175285339355469 0.0 0.0 0.0 470 -471 0.00176000595092773 0.0 0.0 0.0 471 -472 0.00176119804382324 0.0100000000000016 0.0100000000000016 0.0 472 -473 0.00173187255859375 0.0 0.0 0.0 473 -474 0.00172281265258789 0.0 0.0 0.0 474 -475 0.00175905227661133 0.0 0.0 0.0 475 -476 0.00175714492797852 0.0 0.0 0.0 476 -477 0.00174093246459961 0.0 0.0 0.0 477 -478 0.00176501274108887 0.00999999999999801 0.00999999999999801 0.0 478 -479 0.00173497200012207 0.0 0.0 0.0 479 -480 0.00174593925476074 0.0 0.0 0.0 480 -481 0.00177001953125 0.0 0.0 0.0 481 -482 0.00177097320556641 0.0 0.0 0.0 482 -483 0.0255038738250732 0.0300000000000011 0.0300000000000011 0.0 483 -484 0.00180983543395996 0.0 0.0 0.0 484 -485 0.00182580947875977 0.0 0.0 0.0 485 -486 0.00181293487548828 0.0 0.0 0.0 486 -487 0.00178980827331543 0.00999999999999801 0.00999999999999801 0.0 487 -488 0.00177001953125 0.0 0.0 0.0 488 -489 0.00174784660339355 0.0 0.0 0.0 489 -490 0.00177311897277832 0.0 0.0 0.0 490 -491 0.00178694725036621 0.0 0.0 0.0 491 -492 0.00176596641540527 0.0100000000000016 0.0100000000000016 0.0 492 -493 0.00175786018371582 0.0 0.0 0.0 493 -494 0.00176286697387695 0.0 0.0 0.0 494 -495 0.00174117088317871 0.0 0.0 0.0 495 -496 0.0017540454864502 0.0 0.0 0.0 496 -497 0.00176811218261719 0.0 0.0 0.0 497 -498 0.00176405906677246 0.0100000000000016 0.0100000000000016 0.0 498 -499 0.00175595283508301 0.0 0.0 0.0 499 -500 0.00183701515197754 0.0 0.0 0.0 500 -501 0.00176692008972168 0.0 0.0 0.0 501 -502 0.00178289413452148 0.0 0.0 0.0 502 -503 0.00176692008972168 0.00999999999999801 0.00999999999999801 0.0 503 -504 0.00175595283508301 0.0 0.0 0.0 504 -505 0.00173616409301758 0.0 0.0 0.0 505 -506 0.00208091735839844 0.0 0.0 0.0 506 -507 0.00292181968688965 0.0 0.0 0.0 507 -508 0.00174379348754883 0.0 0.0 0.0 508 -509 0.00174093246459961 0.0100000000000016 0.0100000000000016 0.0 509 -510 0.00175595283508301 0.0 0.0 0.0 510 -511 0.00174808502197266 0.0 0.0 0.0 511 -512 0.00172805786132812 0.0 0.0 0.0 512 -513 0.00174903869628906 0.0 0.0 0.0 513 -514 0.00177097320556641 0.00999999999999801 0.00999999999999801 0.0 514 -515 0.0017540454864502 0.0 0.0 0.0 515 -516 0.00173282623291016 0.0 0.0 0.0 516 -517 0.00174498558044434 0.0 0.0 0.0 517 -518 0.00174188613891602 0.0 0.0 0.0 518 -519 0.00176811218261719 0.0 0.0 0.0 519 -520 0.00173711776733398 0.0100000000000016 0.0100000000000016 0.0 520 -521 0.00175690650939941 0.0 0.0 0.0 521 -522 0.00173592567443848 0.0 0.0 0.0 522 -523 0.0017390251159668 0.0 0.0 0.0 523 -524 0.00174903869628906 0.0 0.0 0.0 524 -525 0.00175881385803223 0.00999999999999801 0.00999999999999801 0.0 525 -526 0.00173497200012207 0.0 0.0 0.0 526 -527 0.00173616409301758 0.0 0.0 0.0 527 -528 0.00175189971923828 0.0 0.0 0.0 528 -529 0.00174403190612793 0.0 0.0 0.0 529 -530 0.00174903869628906 0.0 0.0 0.0 530 -531 0.00175595283508301 0.0100000000000016 0.0100000000000016 0.0 531 -532 0.00174307823181152 0.0 0.0 0.0 532 -533 0.00174999237060547 0.0 0.0 0.0 533 -534 0.00178980827331543 0.0 0.0 0.0 534 -535 0.00175809860229492 0.0 0.0 0.0 535 -536 0.025597095489502 0.0300000000000011 0.0300000000000011 0.0 536 -537 0.00178790092468262 0.0 0.0 0.0 537 -538 0.00197505950927734 0.0 0.0 0.0 538 -539 0.00181388854980469 0.0 0.0 0.0 539 -540 0.00177693367004395 0.00999999999999801 0.00999999999999801 0.0 540 -541 0.00177311897277832 0.0 0.0 0.0 541 -542 0.00185203552246094 0.0 0.0 0.0 542 -543 0.00176501274108887 0.0 0.0 0.0 543 -544 0.00176501274108887 0.0 0.0 0.0 544 -545 0.00176405906677246 0.0100000000000016 0.0100000000000016 0.0 545 -546 0.00176405906677246 0.0 0.0 0.0 546 -547 0.00174093246459961 0.0 0.0 0.0 547 -548 0.00175905227661133 0.0 0.0 0.0 548 -549 0.00177407264709473 0.0 0.0 0.0 549 -550 0.00176215171813965 0.0 0.0 0.0 550 -551 0.00174903869628906 0.00999999999999801 0.00999999999999801 0.0 551 -552 0.00175595283508301 0.0 0.0 0.0 552 -553 0.00174593925476074 0.0 0.0 0.0 553 -554 0.00176787376403809 0.0 0.0 0.0 554 -555 0.00176000595092773 0.0 0.0 0.0 555 -556 0.00175380706787109 0.0100000000000016 0.0100000000000016 0.0 556 -557 0.00174593925476074 0.0 0.0 0.0 557 -558 0.00173807144165039 0.0 0.0 0.0 558 -559 0.00180602073669434 0.0 0.0 0.0 559 -560 0.00174808502197266 0.0 0.0 0.0 560 -561 0.00174093246459961 0.0 0.0 0.0 561 -562 0.00177311897277832 0.00999999999999801 0.00999999999999801 0.0 562 -563 0.00174212455749512 0.0 0.0 0.0 563 -564 0.00174498558044434 0.0 0.0 0.0 564 -565 0.00191402435302734 0.0 0.0 0.0 565 -566 0.00347208976745605 0.0100000000000016 0.0100000000000016 0.0 566 -567 0.00344085693359375 0.0 0.0 0.0 567 -568 0.00338578224182129 0.0 0.0 0.0 568 -569 0.00339102745056152 0.0100000000000016 0.0100000000000016 0.0 569 -570 0.00190401077270508 0.0 0.0 0.0 570 -571 0.00175905227661133 0.0 0.0 0.0 571 -572 0.00177097320556641 0.0 0.0 0.0 572 -573 0.00176215171813965 0.0 0.0 0.0 573 -574 0.0017249584197998 0.0 0.0 0.0 574 -575 0.00174903869628906 0.00999999999999801 0.00999999999999801 0.0 575 -576 0.00174593925476074 0.0 0.0 0.0 576 -577 0.0017399787902832 0.0 0.0 0.0 577 -578 0.00174498558044434 0.0 0.0 0.0 578 -579 0.00174689292907715 0.0 0.0 0.0 579 -580 0.00175118446350098 0.0100000000000016 0.0100000000000016 0.0 580 -581 0.00174307823181152 0.0 0.0 0.0 581 -582 0.00175380706787109 0.0 0.0 0.0 582 -583 0.00175690650939941 0.0 0.0 0.0 583 -584 0.00174403190612793 0.0 0.0 0.0 584 -585 0.00174903869628906 0.0 0.0 0.0 585 -586 0.00176000595092773 0.00999999999999801 0.00999999999999801 0.0 586 -587 0.00176596641540527 0.0 0.0 0.0 587 -588 0.00175595283508301 0.0 0.0 0.0 588 -589 0.0243070125579834 0.0199999999999996 0.0199999999999996 0.0 589 -590 0.00179505348205566 0.0100000000000016 0.0100000000000016 0.0 590 -591 0.00179696083068848 0.0 0.0 0.0 591 -592 0.0018000602722168 0.0 0.0 0.0 592 -593 0.00178909301757812 0.0 0.0 0.0 593 -594 0.00181698799133301 0.0 0.0 0.0 594 -595 0.00178003311157227 0.00999999999999801 0.00999999999999801 0.0 595 -596 0.00175619125366211 0.0 0.0 0.0 596 -597 0.0017540454864502 0.0 0.0 0.0 597 -598 0.00177407264709473 0.0 0.0 0.0 598 -599 0.00177502632141113 0.0 0.0 0.0 599 -600 0.00176692008972168 0.0 0.0 0.0 600 -601 0.00175690650939941 0.0100000000000016 0.0100000000000016 0.0 601 -602 0.00173401832580566 0.0 0.0 0.0 602 -603 0.00175213813781738 0.0 0.0 0.0 603 -604 0.00176692008972168 0.0 0.0 0.0 604 -605 0.00175189971923828 0.0 0.0 0.0 605 -606 0.00176692008972168 0.0100000000000016 0.0100000000000016 0.0 606 -607 0.00175595283508301 0.0 0.0 0.0 607 -608 0.00176811218261719 0.0 0.0 0.0 608 -609 0.00176787376403809 0.0 0.0 0.0 609 -610 0.00177121162414551 0.0 0.0 0.0 610 -611 0.00175094604492188 0.0 0.0 0.0 611 -612 0.00174713134765625 0.00999999999999801 0.00999999999999801 0.0 612 -613 0.00174403190612793 0.0 0.0 0.0 613 -614 0.00173211097717285 0.0 0.0 0.0 614 -615 0.0017859935760498 0.0 0.0 0.0 615 -616 0.00175309181213379 0.0 0.0 0.0 616 -617 0.00174784660339355 0.0 0.0 0.0 617 -618 0.00174903869628906 0.0 0.0 0.0 618 -619 0.00175714492797852 0.0 0.0 0.0 619 -620 0.0022280216217041 0.0 0.0 0.0 620 -621 0.00176501274108887 0.0 0.0 0.0 621 -622 0.00176191329956055 0.0 0.0 0.0 622 -623 0.00185799598693848 0.00999999999999801 0.00999999999999801 0.0 623 -624 0.00174689292907715 0.0 0.0 0.0 624 -625 0.00174689292907715 0.0 0.0 0.0 625 -626 0.0017249584197998 0.0 0.0 0.0 626 -627 0.00173401832580566 0.0 0.0 0.0 627 -628 0.00175118446350098 0.0100000000000016 0.0100000000000016 0.0 628 -629 0.00173401832580566 0.0 0.0 0.0 629 -630 0.00174593925476074 0.0 0.0 0.0 630 -631 0.00174593925476074 0.0 0.0 0.0 631 -632 0.00174689292907715 0.0 0.0 0.0 632 -633 0.00175905227661133 0.0 0.0 0.0 633 -634 0.00177001953125 0.00999999999999801 0.00999999999999801 0.0 634 -635 0.00174403190612793 0.0 0.0 0.0 635 -636 0.00185108184814453 0.0 0.0 0.0 636 -637 0.00174403190612793 0.0 0.0 0.0 637 -638 0.00175023078918457 0.0 0.0 0.0 638 -639 0.00177407264709473 0.0100000000000016 0.0100000000000016 0.0 639 -640 0.00174403190612793 0.0 0.0 0.0 640 -641 0.00175714492797852 0.0 0.0 0.0 641 -642 0.0244560241699219 0.0199999999999996 0.0199999999999996 0.0 642 -643 0.00182914733886719 0.0100000000000016 0.0100000000000016 0.0 643 -644 0.00178813934326172 0.0 0.0 0.0 644 -645 0.00177693367004395 0.0 0.0 0.0 645 -646 0.00177192687988281 0.0 0.0 0.0 646 -647 0.00177478790283203 0.0 0.0 0.0 647 -648 0.00176906585693359 0.0 0.0 0.0 648 -649 0.00176787376403809 0.00999999999999801 0.00999999999999801 0.0 649 -650 0.00174212455749512 0.0 0.0 0.0 650 -651 0.00175595283508301 0.0 0.0 0.0 651 -652 0.00176286697387695 0.0 0.0 0.0 652 -653 0.00176095962524414 0.0 0.0 0.0 653 -654 0.00177597999572754 0.0100000000000016 0.0100000000000016 0.0 654 -655 0.00177288055419922 0.0 0.0 0.0 655 -656 0.00175118446350098 0.0 0.0 0.0 656 -657 0.00175309181213379 0.0 0.0 0.0 657 -658 0.0017540454864502 0.0 0.0 0.0 658 -659 0.0017549991607666 0.0 0.0 0.0 659 -660 0.00176215171813965 0.00999999999999801 0.00999999999999801 0.0 660 -661 0.00176692008972168 0.0 0.0 0.0 661 -662 0.00175619125366211 0.0 0.0 0.0 662 -663 0.00177288055419922 0.0 0.0 0.0 663 -664 0.00176310539245605 0.0 0.0 0.0 664 -665 0.00175189971923828 0.0 0.0 0.0 665 -666 0.00175094604492188 0.0100000000000016 0.0100000000000016 0.0 666 -667 0.00175189971923828 0.0 0.0 0.0 667 -668 0.00175905227661133 0.0 0.0 0.0 668 -669 0.00175690650939941 0.0 0.0 0.0 669 -670 0.00174903869628906 0.0 0.0 0.0 670 -671 0.00176382064819336 0.00999999999999801 0.00999999999999801 0.0 671 -672 0.00174307823181152 0.0 0.0 0.0 672 -673 0.00174117088317871 0.0 0.0 0.0 673 -674 0.00176906585693359 0.0 0.0 0.0 674 -675 0.00325989723205566 0.0 0.0 0.0 675 -676 0.00345802307128906 0.0100000000000016 0.0100000000000016 0.0 676 -677 0.0026400089263916 0.0 0.0 0.0 677 -678 0.00176692008972168 0.0 0.0 0.0 678 -679 0.00268101692199707 0.0100000000000016 0.0100000000000016 0.0 679 -680 0.00180482864379883 0.0 0.0 0.0 680 -681 0.00174808502197266 0.0 0.0 0.0 681 -682 0.00174283981323242 0.0 0.0 0.0 682 -683 0.00176095962524414 0.0 0.0 0.0 683 -684 0.00176095962524414 0.0 0.0 0.0 684 -685 0.00175595283508301 0.00999999999999801 0.00999999999999801 0.0 685 -686 0.00175094604492188 0.0 0.0 0.0 686 -687 0.00176477432250977 0.0 0.0 0.0 687 -688 0.00176000595092773 0.0 0.0 0.0 688 -689 0.00176906585693359 0.0 0.0 0.0 689 -690 0.00177502632141113 0.0100000000000016 0.0100000000000016 0.0 690 -691 0.00174808502197266 0.0 0.0 0.0 691 -692 0.00178909301757812 0.0 0.0 0.0 692 -693 0.00177693367004395 0.0 0.0 0.0 693 -694 0.0252690315246582 0.0299999999999976 0.0299999999999976 0.0 694 -695 0.00181198120117188 0.0 0.0 0.0 695 -696 0.00185799598693848 0.0 0.0 0.0 696 -697 0.00180315971374512 0.0 0.0 0.0 697 -698 0.00178194046020508 0.0 0.0 0.0 698 -699 0.00178718566894531 0.0100000000000016 0.0100000000000016 0.0 699 -700 0.00174593925476074 0.0 0.0 0.0 700 -701 0.00177192687988281 0.0 0.0 0.0 701 -702 0.00177216529846191 0.0 0.0 0.0 702 -703 0.00174808502197266 0.0 0.0 0.0 703 -704 0.00176882743835449 0.0 0.0 0.0 704 -705 0.0017540454864502 0.00999999999999801 0.00999999999999801 0.0 705 -706 0.00174403190612793 0.0 0.0 0.0 706 -707 0.00177288055419922 0.0 0.0 0.0 707 -708 0.00177001953125 0.0 0.0 0.0 708 -709 0.00176310539245605 0.0 0.0 0.0 709 -710 0.00175690650939941 0.0 0.0 0.0 710 -711 0.00179791450500488 0.0100000000000016 0.0100000000000016 0.0 711 -712 0.00183296203613281 0.0 0.0 0.0 712 -713 0.00177001953125 0.0 0.0 0.0 713 -714 0.00175595283508301 0.0 0.0 0.0 714 -715 0.00175189971923828 0.0 0.0 0.0 715 -716 0.00174713134765625 0.0 0.0 0.0 716 -717 0.00175809860229492 0.0100000000000016 0.0100000000000016 0.0 717 -718 0.00182104110717773 0.0 0.0 0.0 718 -719 0.0017399787902832 0.0 0.0 0.0 719 -720 0.00173497200012207 0.0 0.0 0.0 720 -721 0.00173783302307129 0.0 0.0 0.0 721 -722 0.0017399787902832 0.00999999999999801 0.00999999999999801 0.0 722 -723 0.00175285339355469 0.0 0.0 0.0 723 -724 0.00173282623291016 0.0 0.0 0.0 724 -725 0.00175213813781738 0.0 0.0 0.0 725 -726 0.00174498558044434 0.0 0.0 0.0 726 -727 0.00174093246459961 0.0 0.0 0.0 727 -728 0.00177121162414551 0.0100000000000016 0.0100000000000016 0.0 728 -729 0.00174903869628906 0.0 0.0 0.0 729 -730 0.00175690650939941 0.0 0.0 0.0 730 -731 0.00173711776733398 0.0 0.0 0.0 731 -732 0.0017399787902832 0.0 0.0 0.0 732 -733 0.00176596641540527 0.00999999999999801 0.00999999999999801 0.0 733 -734 0.00175619125366211 0.0 0.0 0.0 734 -735 0.00173687934875488 0.0 0.0 0.0 735 -736 0.00176000595092773 0.0 0.0 0.0 736 -737 0.00175714492797852 0.0 0.0 0.0 737 -738 0.00174689292907715 0.0 0.0 0.0 738 -739 0.00174689292907715 0.0100000000000016 0.0100000000000016 0.0 739 -740 0.00175309181213379 0.0 0.0 0.0 740 -741 0.00175189971923828 0.0 0.0 0.0 741 -742 0.00175881385803223 0.0 0.0 0.0 742 -743 0.00175189971923828 0.0 0.0 0.0 743 -744 0.00178813934326172 0.00999999999999801 0.00999999999999801 0.0 744 -745 0.00172710418701172 0.0 0.0 0.0 745 -746 0.00175690650939941 0.0 0.0 0.0 746 -747 0.0253231525421143 0.0200000000000031 0.0200000000000031 0.0 747 -748 0.00182986259460449 0.00999999999999801 0.00999999999999801 0.0 748 -749 0.00179004669189453 0.0 0.0 0.0 749 -750 0.00179314613342285 0.0 0.0 0.0 750 -751 0.00178098678588867 0.0 0.0 0.0 751 -752 0.00178003311157227 0.0 0.0 0.0 752 -753 0.00176811218261719 0.0100000000000016 0.0100000000000016 0.0 753 -754 0.00174283981323242 0.0 0.0 0.0 754 -755 0.00176811218261719 0.0 0.0 0.0 755 -756 0.00175881385803223 0.0 0.0 0.0 756 -757 0.00174784660339355 0.0 0.0 0.0 757 -758 0.00175905227661133 0.0 0.0 0.0 758 -759 0.00177812576293945 0.00999999999999801 0.00999999999999801 0.0 759 -760 0.00174689292907715 0.0 0.0 0.0 760 -761 0.00183987617492676 0.0 0.0 0.0 761 -762 0.0017549991607666 0.0 0.0 0.0 762 -763 0.00175786018371582 0.0 0.0 0.0 763 -764 0.00175380706787109 0.0100000000000016 0.0100000000000016 0.0 764 -765 0.00176501274108887 0.0 0.0 0.0 765 -766 0.00175690650939941 0.0 0.0 0.0 766 -767 0.00174498558044434 0.0 0.0 0.0 767 -768 0.0017549991607666 0.0 0.0 0.0 768 -769 0.00175714492797852 0.0 0.0 0.0 769 -770 0.00176405906677246 0.00999999999999801 0.00999999999999801 0.0 770 -771 0.00174999237060547 0.0 0.0 0.0 771 -772 0.00174689292907715 0.0 0.0 0.0 772 -773 0.00174999237060547 0.0 0.0 0.0 773 -774 0.0017387866973877 0.0 0.0 0.0 774 -775 0.00175309181213379 0.0 0.0 0.0 775 -776 0.0017399787902832 0.0100000000000016 0.0100000000000016 0.0 776 -777 0.00179791450500488 0.0 0.0 0.0 777 -778 0.00174188613891602 0.0 0.0 0.0 778 -779 0.00172996520996094 0.0 0.0 0.0 779 -780 0.00173211097717285 0.0 0.0 0.0 780 -781 0.00176191329956055 0.00999999999999801 0.00999999999999801 0.0 781 -782 0.00174999237060547 0.0 0.0 0.0 782 -783 0.00173711776733398 0.0 0.0 0.0 783 -784 0.00174212455749512 0.0 0.0 0.0 784 -785 0.00317001342773438 0.0 0.0 0.0 785 -786 0.00347280502319336 0.0100000000000016 0.0100000000000016 0.0 786 -787 0.00329899787902832 0.0 0.0 0.0 787 -788 0.00238609313964844 0.0 0.0 0.0 788 -789 0.00221085548400879 0.0100000000000016 0.0100000000000016 0.0 789 -790 0.00175285339355469 0.0 0.0 0.0 790 -791 0.00175309181213379 0.0 0.0 0.0 791 -792 0.00172901153564453 0.0 0.0 0.0 792 -793 0.00179696083068848 0.0 0.0 0.0 793 -794 0.00175285339355469 0.0 0.0 0.0 794 -795 0.00173783302307129 0.00999999999999801 0.00999999999999801 0.0 795 -796 0.00177001953125 0.0 0.0 0.0 796 -797 0.00176811218261719 0.0 0.0 0.0 797 -798 0.00175595283508301 0.0 0.0 0.0 798 -799 0.0301520824432373 0.0300000000000011 0.0300000000000011 0.0 799 -800 0.00359296798706055 0.00999999999999801 0.00999999999999801 0.0 800 -801 0.00265407562255859 0.0 0.0 0.0 801 -802 0.00182509422302246 0.0 0.0 0.0 802 -803 0.00179409980773926 0.0 0.0 0.0 803 -804 0.00177407264709473 0.0 0.0 0.0 804 -805 0.00176787376403809 0.0100000000000016 0.0100000000000016 0.0 805 -806 0.00177907943725586 0.0 0.0 0.0 806 -807 0.00176310539245605 0.0 0.0 0.0 807 -808 0.00176811218261719 0.0 0.0 0.0 808 -809 0.00174808502197266 0.0 0.0 0.0 809 -810 0.00175714492797852 0.00999999999999801 0.00999999999999801 0.0 810 -811 0.00174784660339355 0.0 0.0 0.0 811 -812 0.00178885459899902 0.0 0.0 0.0 812 -813 0.00174999237060547 0.0 0.0 0.0 813 -814 0.00176811218261719 0.0 0.0 0.0 814 -815 0.00174999237060547 0.0 0.0 0.0 815 -816 0.00175595283508301 0.0100000000000016 0.0100000000000016 0.0 816 -817 0.00176000595092773 0.0 0.0 0.0 817 -818 0.00177288055419922 0.0 0.0 0.0 818 -819 0.00176095962524414 0.0 0.0 0.0 819 -820 0.0017390251159668 0.0 0.0 0.0 820 -821 0.00179696083068848 0.0 0.0 0.0 821 -822 0.00174283981323242 0.0100000000000016 0.0100000000000016 0.0 822 -823 0.00174713134765625 0.0 0.0 0.0 823 -824 0.00175189971923828 0.0 0.0 0.0 824 -825 0.00175094604492188 0.0 0.0 0.0 825 -826 0.00173616409301758 0.0 0.0 0.0 826 -827 0.00174093246459961 0.00999999999999801 0.00999999999999801 0.0 827 -828 0.00174617767333984 0.0 0.0 0.0 828 -829 0.00174188613891602 0.0 0.0 0.0 829 -830 0.00173592567443848 0.0 0.0 0.0 830 -831 0.0017240047454834 0.0 0.0 0.0 831 -832 0.00176095962524414 0.0 0.0 0.0 832 -833 0.00174713134765625 0.0100000000000016 0.0100000000000016 0.0 833 -834 0.00175094604492188 0.0 0.0 0.0 834 -835 0.00173807144165039 0.0 0.0 0.0 835 -836 0.00176715850830078 0.0 0.0 0.0 836 -837 0.00174093246459961 0.0 0.0 0.0 837 -838 0.00176000595092773 0.00999999999999801 0.00999999999999801 0.0 838 -839 0.00174498558044434 0.0 0.0 0.0 839 -840 0.00174689292907715 0.0 0.0 0.0 840 -841 0.00177502632141113 0.0 0.0 0.0 841 -842 0.00175309181213379 0.0 0.0 0.0 842 -843 0.00175213813781738 0.0 0.0 0.0 843 -844 0.00175905227661133 0.0100000000000016 0.0100000000000016 0.0 844 -845 0.0017249584197998 0.0 0.0 0.0 845 -846 0.00174999237060547 0.0 0.0 0.0 846 -847 0.00175309181213379 0.0 0.0 0.0 847 -848 0.00177311897277832 0.0 0.0 0.0 848 -849 0.00175309181213379 0.00999999999999801 0.00999999999999801 0.0 849 -850 0.00175595283508301 0.0 0.0 0.0 850 -851 0.0253610610961914 0.0200000000000031 0.0200000000000031 0.0 851 -852 0.0018308162689209 0.0 0.0 0.0 852 -853 0.00182509422302246 0.00999999999999801 0.00999999999999801 0.0 853 -854 0.00179100036621094 0.0 0.0 0.0 854 -855 0.0018000602722168 0.0 0.0 0.0 855 -856 0.00175809860229492 0.0 0.0 0.0 856 -857 0.00182390213012695 0.0 0.0 0.0 857 -858 0.00175285339355469 0.0100000000000016 0.0100000000000016 0.0 858 -859 0.00172996520996094 0.0 0.0 0.0 859 -860 0.00173521041870117 0.0 0.0 0.0 860 -861 0.00176787376403809 0.0 0.0 0.0 861 -862 0.00175380706787109 0.0 0.0 0.0 862 -863 0.00174999237060547 0.0 0.0 0.0 863 -864 0.00177502632141113 0.00999999999999801 0.00999999999999801 0.0 864 -865 0.0017549991607666 0.0 0.0 0.0 865 -866 0.00175905227661133 0.0 0.0 0.0 866 -867 0.00177693367004395 0.0 0.0 0.0 867 -868 0.00178217887878418 0.0 0.0 0.0 868 -869 0.00177478790283203 0.0100000000000016 0.0100000000000016 0.0 869 -870 0.00176405906677246 0.0 0.0 0.0 870 -871 0.00176191329956055 0.0 0.0 0.0 871 -872 0.00175213813781738 0.0 0.0 0.0 872 -873 0.00175690650939941 0.0 0.0 0.0 873 -874 0.00174093246459961 0.0 0.0 0.0 874 -875 0.0017399787902832 0.00999999999999801 0.00999999999999801 0.0 875 -876 0.00173616409301758 0.0 0.0 0.0 876 -877 0.00174808502197266 0.0 0.0 0.0 877 -878 0.0017390251159668 0.0 0.0 0.0 878 -879 0.00174403190612793 0.0 0.0 0.0 879 -880 0.00173091888427734 0.0 0.0 0.0 880 -881 0.00175786018371582 0.0100000000000016 0.0100000000000016 0.0 881 -882 0.00173306465148926 0.0 0.0 0.0 882 -883 0.0017399787902832 0.0 0.0 0.0 883 -884 0.00173783302307129 0.0 0.0 0.0 884 -885 0.00172281265258789 0.0 0.0 0.0 885 -886 0.00175690650939941 0.0 0.0 0.0 886 -887 0.00173497200012207 0.00999999999999801 0.00999999999999801 0.0 887 -888 0.00175094604492188 0.0 0.0 0.0 888 -889 0.00172090530395508 0.0 0.0 0.0 889 -890 0.00198698043823242 0.0 0.0 0.0 890 -891 0.00344991683959961 0.0100000000000016 0.0100000000000016 0.0 891 -892 0.00345301628112793 0.0 0.0 0.0 892 -893 0.00206422805786133 0.0 0.0 0.0 893 -894 0.00191783905029297 0.0 0.0 0.0 894 -895 0.00174188613891602 0.0 0.0 0.0 895 -896 0.00173401832580566 0.0100000000000016 0.0100000000000016 0.0 896 -897 0.00175094604492188 0.0 0.0 0.0 897 -898 0.00176310539245605 0.0 0.0 0.0 898 -899 0.00176095962524414 0.0 0.0 0.0 899 -900 0.00181198120117188 0.0 0.0 0.0 900 -901 0.00175094604492188 0.00999999999999801 0.00999999999999801 0.0 901 -902 0.00177597999572754 0.0 0.0 0.0 902 -903 0.0245981216430664 0.0199999999999996 0.0199999999999996 0.0 903 -904 0.00182318687438965 0.0 0.0 0.0 904 -905 0.00179600715637207 0.0100000000000016 0.0100000000000016 0.0 905 -906 0.00179409980773926 0.0 0.0 0.0 906 -907 0.00178408622741699 0.0 0.0 0.0 907 -908 0.00177407264709473 0.0 0.0 0.0 908 -909 0.00176501274108887 0.0 0.0 0.0 909 -910 0.00176596641540527 0.0 0.0 0.0 910 -911 0.00175595283508301 0.00999999999999801 0.00999999999999801 0.0 911 -912 0.00176596641540527 0.0 0.0 0.0 912 -913 0.00176501274108887 0.0 0.0 0.0 913 -914 0.00175809860229492 0.0 0.0 0.0 914 -915 0.00176405906677246 0.0 0.0 0.0 915 -916 0.00176191329956055 0.0100000000000016 0.0100000000000016 0.0 916 -917 0.00175619125366211 0.0 0.0 0.0 917 -918 0.00175690650939941 0.0 0.0 0.0 918 -919 0.00175189971923828 0.0 0.0 0.0 919 -920 0.0017540454864502 0.0 0.0 0.0 920 -921 0.0017540454864502 0.0 0.0 0.0 921 -922 0.00176119804382324 0.00999999999999801 0.00999999999999801 0.0 922 -923 0.00176095962524414 0.0 0.0 0.0 923 -924 0.00176215171813965 0.0 0.0 0.0 924 -925 0.00173592567443848 0.0 0.0 0.0 925 -926 0.00174307823181152 0.0 0.0 0.0 926 -927 0.00173401832580566 0.0100000000000016 0.0100000000000016 0.0 927 -928 0.00174999237060547 0.0 0.0 0.0 928 -929 0.0017399787902832 0.0 0.0 0.0 929 -930 0.0017399787902832 0.0 0.0 0.0 930 -931 0.00177502632141113 0.0 0.0 0.0 931 -932 0.00175309181213379 0.0 0.0 0.0 932 -933 0.00174713134765625 0.0100000000000016 0.0100000000000016 0.0 933 -934 0.00172519683837891 0.0 0.0 0.0 934 -935 0.00182008743286133 0.0 0.0 0.0 935 -936 0.00175094604492188 0.0 0.0 0.0 936 -937 0.00175213813781738 0.0 0.0 0.0 937 -938 0.0017549991607666 0.00999999999999801 0.00999999999999801 0.0 938 -939 0.00175881385803223 0.0 0.0 0.0 939 -940 0.00176215171813965 0.0 0.0 0.0 940 -941 0.00270485877990723 0.0 0.0 0.0 941 -942 0.00175213813781738 0.0 0.0 0.0 942 -943 0.0017399787902832 0.0100000000000016 0.0100000000000016 0.0 943 -944 0.00174307823181152 0.0 0.0 0.0 944 -945 0.00173497200012207 0.0 0.0 0.0 945 -946 0.00174999237060547 0.0 0.0 0.0 946 -947 0.00175690650939941 0.0 0.0 0.0 947 -948 0.00176095962524414 0.0 0.0 0.0 948 -949 0.00173807144165039 0.00999999999999801 0.00999999999999801 0.0 949 -950 0.00175690650939941 0.0 0.0 0.0 950 -951 0.0017390251159668 0.0 0.0 0.0 951 -952 0.00178313255310059 0.0 0.0 0.0 952 -953 0.00176692008972168 0.0 0.0 0.0 953 -954 0.00176501274108887 0.0 0.0 0.0 954 -955 0.0254151821136475 0.0199999999999996 0.0199999999999996 0.0 955 -956 0.0018460750579834 0.0 0.0 0.0 956 -957 0.00177717208862305 0.0 0.0 0.0 957 -958 0.00177192687988281 0.0100000000000016 0.0100000000000016 0.0 958 -959 0.00177407264709473 0.0 0.0 0.0 959 -960 0.00177311897277832 0.0 0.0 0.0 960 -961 0.00176906585693359 0.0 0.0 0.0 961 -962 0.00176501274108887 0.0 0.0 0.0 962 -963 0.00174212455749512 0.00999999999999801 0.00999999999999801 0.0 963 -964 0.00176310539245605 0.0 0.0 0.0 964 -965 0.00176095962524414 0.0 0.0 0.0 965 -966 0.00175905227661133 0.0 0.0 0.0 966 -967 0.00174999237060547 0.0 0.0 0.0 967 -968 0.00176811218261719 0.0 0.0 0.0 968 -969 0.00175189971923828 0.0100000000000016 0.0100000000000016 0.0 969 -970 0.00194287300109863 0.0 0.0 0.0 970 -971 0.0017540454864502 0.0 0.0 0.0 971 -972 0.0019228458404541 0.0 0.0 0.0 972 -973 0.00176405906677246 0.0 0.0 0.0 973 -974 0.0017549991607666 0.00999999999999801 0.00999999999999801 0.0 974 -975 0.00176310539245605 0.0 0.0 0.0 975 -976 0.00173807144165039 0.0 0.0 0.0 976 -977 0.00182604789733887 0.0 0.0 0.0 977 -978 0.0017399787902832 0.0 0.0 0.0 978 -979 0.0017540454864502 0.0 0.0 0.0 979 -980 0.0017697811126709 0.0100000000000016 0.0100000000000016 0.0 980 -981 0.0017390251159668 0.0 0.0 0.0 981 -982 0.00175285339355469 0.0 0.0 0.0 982 -983 0.00174880027770996 0.0 0.0 0.0 983 -984 0.00176095962524414 0.0 0.0 0.0 984 -985 0.00176501274108887 0.00999999999999801 0.00999999999999801 0.0 985 -986 0.00175094604492188 0.0 0.0 0.0 986 -987 0.0017390251159668 0.0 0.0 0.0 987 -988 0.00174808502197266 0.0 0.0 0.0 988 -989 0.0017540454864502 0.0 0.0 0.0 989 -990 0.00174307823181152 0.0 0.0 0.0 990 -991 0.00172710418701172 0.0100000000000016 0.0100000000000016 0.0 991 -992 0.00177597999572754 0.0 0.0 0.0 992 -993 0.00174903869628906 0.0 0.0 0.0 993 -994 0.0017402172088623 0.0 0.0 0.0 994 -995 0.00173187255859375 0.0 0.0 0.0 995 -996 0.00175690650939941 0.0 0.0 0.0 996 -997 0.00175213813781738 0.00999999999999801 0.00999999999999801 0.0 997 -998 0.0017549991607666 0.0 0.0 0.0 998 -999 0.00175094604492188 0.0 0.0 0.0 999 -1000 0.00175905227661133 0.0 0.0 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log deleted file mode 100644 index 47b0c7fa..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log +++ /dev/null @@ -1,261 +0,0 @@ -========================== 2009-04-01T16:53:42 CEST =========================== -Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux]. -Running 'GeneratorBenchmarkExt' for 1000 iterations/method (compare_time=real) -=============================================================================== - -This first run is only for warmup. -GeneratorBenchmarkExt#generator_fast: - real total user system -sum 1.818191528 1.840000000 1.830000000 0.010000000 -min 0.001368999 0.000000000 0.000000000 0.000000000 -std- -0.000870656 -0.002702580 -0.002705600 -0.000306228 -mean 0.001818192 0.001840000 0.001830000 0.000010000 -std+ 0.004507039 0.006382580 0.006365600 0.000326228 -max 0.026389122 0.030000000 0.030000000 0.010000000 -std 0.002688848 0.004542580 0.004535600 0.000316228 -std% 147.885830391 246.879359662 247.847020509 3162.277660168 -harm 0.001475231 nan nan nan -geo 0.001529059 0.000000000 0.000000000 0.000000000 -q1 0.001397133 0.000000000 0.000000000 0.000000000 -med 0.001406908 0.000000000 0.000000000 0.000000000 -q3 0.001425028 0.000000000 0.000000000 0.000000000 - 1000 549.99706 0.001818192 - calls calls/sec secs/call - - 0.02514 -| - 0.02264 -|* - 0.02013 -| - 0.01763 -| - 0.01513 -| - 0.01263 -| - 0.01013 -| - 0.00762 -| - 0.00512 -| - 0.00262 -|************************************************** - -Outliers detected with box plot algo (median=0.00141, iqr=0.00003, factor=3.00): -high=63 very_high=132 - -Ljung-Box statistics: q=15.00353 (alpha=0.05, df=50). -0.00000 < 0.95000 => No autocorrelation was detected. - -GeneratorBenchmarkExt#generator_fast: - real total user system -sum 1.826970100 1.830000000 1.820000000 0.010000000 -min 0.001377106 0.000000000 0.000000000 0.000000000 -std- -0.000992693 -0.002749527 -0.002708588 -0.000306228 -mean 0.001826970 0.001830000 0.001820000 0.000010000 -std+ 0.004646633 0.006409527 0.006348588 0.000326228 -max 0.027617931 0.030000000 0.030000000 0.010000000 -std 0.002819663 0.004579527 0.004528588 0.000316228 -std% 154.335471491 250.247404066 248.823509412 3162.277660168 -harm 0.001469225 nan nan nan -geo 0.001522946 0.000000000 0.000000000 0.000000000 -q1 0.001402140 0.000000000 0.000000000 0.000000000 -med 0.001411915 0.000000000 0.000000000 0.000000000 -q3 0.001425982 0.000000000 0.000000000 0.000000000 - 1000 547.35433 0.001826970 - calls calls/sec secs/call - - 0.02631 -| - 0.02368 -|* - 0.02106 -| - 0.01843 -| - 0.01581 -| - 0.01319 -| - 0.01056 -| - 0.00794 -| - 0.00531 -| - 0.00269 -|************************************************** - -Outliers detected with box plot algo (median=0.00141, iqr=0.00002, factor=3.00): -high=84 very_high=91 - -Ljung-Box statistics: q=13.47105 (alpha=0.05, df=50). -0.00000 < 0.95000 => No autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -------------------------------------------------------------------------------- - -This first run is only for warmup. -GeneratorBenchmarkExt#generator_pretty: - real total user system -sum 2.625656843 2.590000000 2.580000000 0.010000000 -min 0.002025127 0.000000000 0.000000000 0.000000000 -std- -0.000656844 -0.002684440 -0.002689855 -0.000306228 -mean 0.002625657 0.002590000 0.002580000 0.000010000 -std+ 0.005908158 0.007864440 0.007849855 0.000326228 -max 0.028638124 0.030000000 0.030000000 0.010000000 -std 0.003282501 0.005274440 0.005269855 0.000316228 -std% 125.016381076 203.646340853 204.257944451 3162.277660168 -harm 0.002154247 nan nan nan -geo 0.002239052 0.000000000 0.000000000 0.000000000 -q1 0.002051830 0.000000000 0.000000000 0.000000000 -med 0.002062082 0.000000000 0.000000000 0.000000000 -q3 0.002082050 0.000000000 0.000000000 0.000000000 - 1000 380.85708 0.002625657 - calls calls/sec secs/call - - 0.02731 -| - 0.02465 -|* - 0.02198 -| - 0.01932 -| - 0.01666 -| - 0.01400 -| - 0.01134 -| - 0.00868 -| - 0.00602 -| - 0.00336 -|************************************************** - -Outliers detected with box plot algo (median=0.00206, iqr=0.00003, factor=3.00): -high=98 very_high=107 - -Ljung-Box statistics: q=349.53704 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -GeneratorBenchmarkExt#generator_pretty: - real total user system -sum 2.399331093 2.360000000 2.360000000 0.000000000 -min 0.002033949 0.000000000 0.000000000 0.000000000 -std- -0.000767217 -0.002736080 -0.002736080 0.000000000 -mean 0.002665923 0.002622222 0.002622222 0.000000000 -std+ 0.006099064 0.007980525 0.007980525 0.000000000 -max 0.029814005 0.030000000 0.030000000 0.000000000 -std 0.003433140 0.005358303 0.005358303 0.000000000 -std% 128.778658745 204.342051806 204.342051806 nan -harm 0.002164550 nan nan nan -geo 0.002253865 0.000000000 0.000000000 0.000000000 -q1 0.002059937 0.000000000 0.000000000 0.000000000 -med 0.002071142 0.000000000 0.000000000 0.000000000 -q3 0.002090931 0.000000000 0.000000000 0.000000000 - 900 375.10455 0.002665923 - calls calls/sec secs/call - - 0.02843 -| - 0.02565 -|* - 0.02287 -| - 0.02009 -| - 0.01731 -| - 0.01453 -| - 0.01176 -| - 0.00898 -| - 0.00620 -| - 0.00342 -|************************************************** - -Outliers detected with box plot algo (median=0.00207, iqr=0.00003, factor=3.00): -high=89 very_high=86 - -Ljung-Box statistics: q=342.52637 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -Truncated initial 100 measurements: 1000 -> 900 (-10.00%). -------------------------------------------------------------------------------- - -This first run is only for warmup. -GeneratorBenchmarkExt#generator_safe: - real total user system -sum 2.218419790 2.210000000 2.210000000 0.000000000 -min 0.001708984 0.000000000 0.000000000 0.000000000 -std- -0.000607850 -0.002484458 -0.002484458 0.000000000 -mean 0.002218420 0.002210000 0.002210000 0.000000000 -std+ 0.005044690 0.006904458 0.006904458 0.000000000 -max 0.026993036 0.030000000 0.030000000 0.000000000 -std 0.002826270 0.004694458 0.004694458 0.000000000 -std% 127.400134370 212.418923782 212.418923782 nan -harm 0.001839661 nan nan nan -geo 0.001909029 0.000000000 0.000000000 0.000000000 -q1 0.001738071 0.000000000 0.000000000 0.000000000 -med 0.001749992 0.000000000 0.000000000 0.000000000 -q3 0.001769066 0.000000000 0.000000000 0.000000000 - 1000 450.77131 0.002218420 - calls calls/sec secs/call - - 0.02573 -| - 0.02320 -| - 0.02067 -| - 0.01814 -| - 0.01562 -| - 0.01309 -| - 0.01056 -| - 0.00803 -| - 0.00550 -| - 0.00297 -|************************************************** - -Outliers detected with box plot algo (median=0.00175, iqr=0.00003, factor=3.00): -high=58 very_high=129 - -Ljung-Box statistics: q=24.03262 (alpha=0.05, df=50). -0.00070 < 0.95000 => No autocorrelation was detected. - -GeneratorBenchmarkExt#generator_safe: - real total user system -sum 2.252413511 2.250000000 2.250000000 0.000000000 -min 0.001720905 0.000000000 0.000000000 0.000000000 -std- -0.000940042 -0.002634809 -0.002634809 0.000000000 -mean 0.002252414 0.002250000 0.002250000 0.000000000 -std+ 0.005444869 0.007134809 0.007134809 0.000000000 -max 0.030152082 0.030000000 0.030000000 0.000000000 -std 0.003192455 0.004884809 0.004884809 0.000000000 -std% 141.734856492 217.102633117 217.102633117 nan -harm 0.001827244 nan nan nan -geo 0.001895755 0.000000000 0.000000000 0.000000000 -q1 0.001747131 0.000000000 0.000000000 0.000000000 -med 0.001757145 0.000000000 0.000000000 0.000000000 -q3 0.001773119 0.000000000 0.000000000 0.000000000 - 1000 443.96821 0.002252414 - calls calls/sec secs/call - - 0.02873 -| - 0.02589 -|* - 0.02304 -| - 0.02020 -| - 0.01736 -| - 0.01451 -| - 0.01167 -| - 0.00883 -| - 0.00599 -| - 0.00314 -|************************************************** - -Outliers detected with box plot algo (median=0.00176, iqr=0.00003, factor=3.00): -high=92 very_high=86 - -Ljung-Box statistics: q=19.23732 (alpha=0.05, df=50). -0.00003 < 0.95000 => No autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -========================== 2009-04-01T16:54:07 CEST =========================== - -Comparing times (call_time_mean): - 1 GeneratorBenchmarkExt#generator_fast 1000 repeats: - 547.354332608 ( real) -> 1.459x - 0.001826970 - 2 GeneratorBenchmarkExt#generator_safe 1000 repeats: - 443.968212317 ( real) -> 1.184x - 0.002252414 - 3 GeneratorBenchmarkExt#generator_pretty 900 repeats: - 375.104545883 ( real) -> 1.000x - 0.002665923 - calls/sec ( time) -> speed covers - secs/call - -Comparing times (call_time_median): - 1 GeneratorBenchmarkExt#generator_fast 1000 repeats: - 708.258020939 ( real) -> 1.467x - 0.001411915 - 2 GeneratorBenchmarkExt#generator_safe 1000 repeats: - 569.105020353 ( real) -> 1.179x - 0.001757145 - 3 GeneratorBenchmarkExt#generator_pretty 900 repeats: - 482.825371244 ( real) -> 1.000x - 0.002071142 - calls/sec ( time) -> speed covers - secs/call -=============================================================================== -Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_fast.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat'. -Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_pretty.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat'. -Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_safe.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat'. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat deleted file mode 100644 index 39516bce..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.170725652741942 -3 -0.173770301666704 -4 -0.172897166156851 -5 -0.168221269286136 -6 -0.177979259169647 -7 0.175910550703494 -8 0.631061265876843 -9 -0.174719948437131 -10 -0.177293593621048 -11 -0.162698942321747 -12 -0.171029777522503 -13 -0.170296229667321 -14 0.528563135577363 -15 0.275831998572987 -16 -0.174813658667011 -17 -0.172093562954041 -18 -0.168544068156987 -19 -0.166590813818547 -20 -0.0638221070309873 -21 0.650522478992019 -22 0.0331509662336747 -23 -0.168760953941647 -24 -0.16341752594627 -25 -0.170818893187341 -26 -0.164732529292879 -27 0.162214061245849 -28 0.522886471249678 -29 -0.0702164490631389 -30 -0.170342702198113 -31 -0.161403416617991 -32 -0.166099481459981 -33 -0.11599356123736 -34 0.35515929301799 -35 0.320772083044373 -36 -0.117685112181583 -37 -0.169070189028916 -38 -0.159958239256153 -39 -0.159435335479438 -40 0.0319527022003592 -41 0.371475859420178 -42 0.175271663512744 -43 -0.138959890894007 -44 -0.163896984335847 -45 -0.169727435298396 -46 -0.13197665874304 -47 0.187359182943715 -48 0.291819477747683 -49 0.0816643898170594 -50 -0.150240775423654 -51 -0.150195661024305 -52 -0.165928012119222 -53 -0.0320978556096035 -54 0.221655302405546 -55 0.235675757438344 -56 0.0104091592019151 -57 -0.167146434535141 -58 -0.155117513175394 -59 -0.149297587622335 -60 0.0872938227826692 -61 0.203748825546551 -62 0.168550083168428 -63 -0.0396707902562578 -64 -0.158563031820387 -65 -0.159836689037633 -66 -0.0768666234623447 -67 0.148975157851596 -68 0.145123374753783 -69 0.133851392533958 -70 -0.0813691125651875 -71 -0.161000844437348 -72 -0.154719980109192 -73 0.0319631482416382 -74 0.130803526405489 -75 0.134803263091346 -76 0.0725284180216342 -77 -0.105199055037918 -78 -0.156074876537289 -79 -0.107946871185683 -80 0.0836764513383004 -81 0.114802110172454 -82 0.120184125868115 -83 0.0219557508902663 -84 -0.126340081403489 -85 -0.161799956489859 -86 -0.0125672540754974 -87 0.0971048482927368 -88 0.0787545812186751 -89 0.0948238873807684 -90 0.000719292583179628 -91 -0.14238726433046 -92 -0.123547942883664 -93 0.045691368088177 -94 0.0816329437452033 -95 0.0514248553628602 -96 0.079680652824934 -97 -0.0425865734879474 -98 -0.149657706603128 -99 -0.0482568721456359 -100 0.0598246932377812 -101 0.0730073630022969 -102 0.0493194581087269 -103 0.0614638905886062 -104 -0.0747784996077696 -105 -0.134762851026629 -106 0.0150375208487961 -107 0.0471753592749379 -108 0.0292261702954045 -109 0.0584126489508255 -110 0.0274065618881429 -111 -0.0923629805791867 -112 -0.0808051188610178 -113 0.0376068323578018 -114 0.0442243395389739 -115 0.0126091810820727 -116 0.0555017080552345 -117 -0.00777360178104387 -118 -0.0945093162279043 -119 -0.022038518955775 -120 0.0281685224822615 -121 0.0360696788220002 -122 0.00713767841566683 -123 0.0421452289712879 -124 -0.0237791430411877 -125 -0.0742603410791366 -126 0.00647409977150723 -127 0.023633020622411 -128 0.0112812718354579 -129 0.0206308476010651 -130 0.0255893471032846 -131 -0.0412520741546623 -132 -0.0335271150442982 -133 0.0103042519486441 -134 0.0216752613460992 -135 -0.0178133510217017 -136 0.0272498700028734 -137 0.016136487618036 -138 -0.0397127191558659 -139 0.000486023489007977 -140 0.00602879598312952 -141 0.0137117482424303 -142 -0.0239000113030396 -143 0.0256815555012877 -144 -0.00060378060179975 -145 -0.00976477458386044 -146 -0.00471952290156136 -147 0.00287226670988194 -148 -0.00739404113874663 -149 -0.00811924231656889 -150 0.0201609109752059 -151 0.00972768702895235 -152 0.000848772862832347 -153 -0.00315419376588145 -154 0.00325411212387319 -155 -0.0317897669469223 -156 0.00942578451848677 -157 -0.00114487370622857 -158 0.0316193613529631 -159 -0.0029035071383654 -160 -0.00961310004099253 -161 -0.00376402041194372 -162 -0.0304203576913082 -163 0.0040586071587507 -164 0.0181183011617105 -165 0.0289277830257262 -166 -0.00204748582187099 -167 -0.00833532939960483 -168 -0.0179545373314343 -169 -0.0281067596140224 -170 0.00621739022305282 -171 0.020061720611003 -172 0.0441951153685219 -173 -0.016767863675634 -174 -0.00891142478547904 -175 -0.034295757242845 -176 -0.016919846890981 -177 0.00444867679830856 -178 0.057088732705068 -179 0.01772144393744 -180 -0.0115305384915719 -181 -0.0214068916539082 -182 -0.0361142387382199 -183 -0.013268832313842 -184 0.010553526981677 -185 0.0641530212355029 -186 0.00531141736458679 -187 -0.0129434128279975 -188 -0.0288767748585849 -189 -0.0325395473006688 -190 -0.013236712565576 -191 0.0408115115996002 -192 0.0564202212852658 -193 -0.00419580869937261 -194 -0.0240043584548271 -195 -0.0410661026884763 -196 -0.0308430649531645 -197 -0.00193671234656414 -198 0.0574028584211738 -199 0.0464705207875104 -200 0.00131591241415564 -201 -0.0376248928893234 -202 -0.03907610654102 -203 -0.0270477565328025 -204 0.0208038841462715 -205 0.0713903559954449 -206 0.0172971300646441 -207 -0.0158722320069745 -208 -0.0368888763339713 -209 -0.0453718730430625 -210 -0.0217822862730174 -211 0.0539702430257461 -212 0.0523602401531812 -213 0.0209143114178913 -214 -0.0355801431609542 -215 -0.0377942204568278 -216 -0.0425711559012913 -217 -0.00707645512821953 -218 0.0728667936636181 -219 0.0361207184120543 -220 0.0128571335027956 -221 -0.0500603421741668 -222 -0.0391402365626237 -223 -0.0338696993621202 -224 0.0225822360602949 -225 0.0582954334884232 -226 0.0343772287798159 -227 0.000189606884889642 -228 -0.0526391089870516 -229 -0.0433107479511685 -230 -0.0222872074614468 -231 0.0506022312295133 -232 0.0475294709603697 -233 0.033409950599465 -234 -0.0396552908405006 -235 -0.0416731652109144 -236 -0.0376644416284466 -237 -0.0120295884760736 -238 0.0667676774080548 -239 0.0397241548411963 -240 0.0242686882994478 -241 -0.0511926472771689 -242 -0.0406717091383664 -243 -0.0294526606762824 -244 0.0122100601151817 -245 0.0582087173478016 -246 0.0279608706883549 -247 0.00958023333135808 -248 -0.0607734282446654 -249 -0.0326785608605117 -250 -0.0170207233666544 -251 0.0461938078567918 -252 0.0336445218462931 -253 0.0452208779230127 -254 -0.0303944318761255 -255 -0.0494219498376225 -256 -0.0318543144076625 -257 -0.00927701052965794 -258 0.0537742147750351 -259 0.0349392754231259 -260 0.0230828975637977 -261 -0.0377907249695523 -262 -0.0429055961196646 -263 -0.017728080300272 -264 0.000424042692478759 -265 0.0472551057914617 -266 0.0405778077745205 -267 -0.00156836352007451 -268 -0.0419460412931724 -269 -0.0345431630170736 -270 -0.0143420878981143 -271 0.0187023906658354 -272 0.0418900285241672 -273 0.0405074017275708 -274 -0.0190108947516174 -275 -0.0546041853190452 -276 -0.0171268537791246 -277 -0.0128446606789693 -278 0.0395381045567008 -279 0.0310776255240069 -280 0.0407363391562478 -281 -0.033091514570131 -282 -0.0503175108683564 -283 -0.022772349202314 -284 0.00530849685544454 -285 0.0324464330192744 -286 0.0465351961365909 -287 -0.00328476076139341 -288 -0.0300758395541426 -289 -0.0371777756744481 -290 -0.00431509980873169 -291 0.00608435003025785 -292 0.037638330575397 -293 0.0407716145244858 -294 -0.0176308532927816 -295 -0.0455722533058368 -296 -0.0254868606225217 -297 -0.00176448336443634 -298 0.015401834338667 -299 0.0470736363973921 -300 0.0286385461989055 -301 -0.02407787658874 -302 -0.0462179062100874 -303 -0.00954285257082467 -304 0.00223496307580496 -305 0.019441609399508 -306 0.0376394897901893 -307 0.0152437430866642 -308 -0.0312285316173427 -309 -0.0450095093247238 -310 0.00405494429487151 -311 -0.000906366188112425 -312 0.0342390932524035 -313 0.0351096044622525 -314 -0.0067200598875223 -315 -0.0344931951944617 -316 -0.0250051604191116 -317 -0.0079099140627721 -318 0.0136877534761663 -319 0.0470111495216969 -320 0.004066298860697 -321 -0.0106091011767897 -322 -0.035535335618417 -323 -0.00900628798721377 -324 -0.00437923810369414 -325 0.0183021198298254 -326 0.031707051659253 -327 0.0156128127338416 -328 -0.0272783407707802 -329 -0.036001647799748 -330 0.00528671926612521 -331 -0.000290217242915226 -332 0.0353019065669182 -333 0.00464723527656522 -334 0.00460168685380347 -335 -0.0215595994261557 -336 -0.0299493415452654 -337 -0.0034698093249361 -338 0.0165266322772037 -339 0.0315139059204056 -340 0.00362648192318334 -341 -0.00491801854061831 -342 -0.0231228284017189 -343 -0.0113129015126025 -344 -0.00300665710172655 -345 0.0130130997144332 -346 0.0223950145161189 -347 0.00202583064367953 -348 -0.0102668124711821 -349 -0.0253546874115718 -350 0.00644442693633731 -351 0.000780453480952724 -352 0.0284887918984724 -353 -0.00595281685205509 -354 0.0120132555793013 -355 -0.0181922031950026 -356 -0.0248881070928514 -357 -0.00242385809089605 -358 0.0194092079332272 -359 0.0144215071404531 -360 0.00612726395169545 -361 -0.00573485213524349 -362 -0.0117678537517965 -363 -0.0132866019915077 -364 -0.00168434348341747 -365 0.0210258042234829 -366 0.00299710982573773 -367 7.02933284912932e-05 -368 -0.00141527364094497 -369 -0.0174837658027455 -370 -0.00530972905386562 -371 0.00289284688712308 -372 0.0269088067868297 -373 -0.00857711045394559 -374 0.000634286012527533 -375 -0.00732827217084004 -376 -0.0129999392900683 -377 -0.00620543176764517 -378 0.0219005305671357 -379 0.00951579849769713 -380 -0.00156577259219444 -381 0.00334210346592974 -382 -0.0168913201522477 -383 -0.0140750807027531 -384 0.0026387459171992 -385 0.0167243976144324 -386 0.000401824368635554 -387 0.00494540377378665 -388 -0.0079650110757071 -389 -0.000153543070488744 -390 -0.0157596554184165 -391 0.00960203655959764 -392 0.0194333180320067 -393 -0.00698081626697105 -394 -0.00616259455878436 -395 -0.00885431917148208 -396 -0.000823472402578178 -397 -0.014306329807885 -398 0.0323044170275812 -399 -0.00116363767533424 -400 -0.00613094977576676 -401 0.00681272285172057 -402 -0.0120741370386856 -403 -0.00393525989936848 -404 0.00143625779594446 -405 0.0112941876899105 -406 0.00621416024416119 -407 -0.00715834709108978 -408 0.00349330341606058 -409 -0.0134328785266322 -410 -0.00983212957457947 -411 0.0170214269071715 -412 0.00768534801684557 -413 -0.00433253762066253 -414 0.00328760101068126 -415 -0.011902725027492 -416 0.0037433377806999 -417 -0.016429583975757 -418 0.0253614932452271 -419 0.00105507602999118 -420 -0.00501259523808327 -421 -0.0068805657075317 -422 -0.00611319813056072 -423 0.00133925647011242 -424 0.000593265112355031 -425 0.00636014210120566 -426 0.0100866038838847 -427 -0.0104562933845484 -428 -0.000506041760930212 -429 -0.003202190801565 -430 -0.00228403340255738 -431 0.00854908376124406 -432 0.00387003653786829 -433 -0.00478285696403202 -434 -0.00768626474153872 -435 0.00703888513154693 -436 -0.00944179389034701 -437 -0.001876043961929 -438 0.0164444486588937 -439 0.00420632904477211 -440 -0.0113129379390227 -441 -0.00359559614450257 -442 -0.00109952765661056 -443 0.0151360003108556 -444 -0.0154475593718288 -445 0.00602211025479499 -446 -0.000307234590538632 -447 0.0046588142745641 -448 -0.0126455787204799 -449 0.0111520432278555 -450 0.00974700164306953 -451 -0.0123611400743472 -452 0.0108946760123822 -453 -0.00120669950156729 -454 -0.0150988572259806 -455 0.00502353890121031 -456 0.00408149023215052 -457 0.00586521360666165 -458 -0.0102923932626118 -459 0.00382025608487933 -460 0.00255550573549941 -461 -0.00783828310549662 -462 0.00508824500063238 -463 0.0084446428666135 -464 -0.00872612495616409 -465 -0.0010875359595666 -466 0.00346175022973811 -467 -0.00495327642022978 -468 0.00325169084183052 -469 -0.00463312556182376 -470 0.0118854909647327 -471 -0.0171003407134582 -472 0.0123260637207544 -473 -0.00447510748083252 -474 -0.00707845418496072 -475 0.00755386113965643 -476 -0.00100076346057804 -477 0.00860719536195919 -478 -0.0136737162109966 -479 0.00711613796353955 -480 0.00622875998269613 -481 -0.0117802696216559 -482 0.00817288034030646 -483 -0.00010669129241017 -484 -0.00352870547469094 -485 -0.0041443261121201 -486 -0.000910571304832122 -487 0.00615718849758809 -488 0.00143910833275321 -489 -0.00107559220444337 -490 0.00356082962826646 -491 -0.00897791292059391 -492 0.00527546492556289 -493 0.00302276031439837 -494 -0.0139577905696164 -495 0.0153490659756607 -496 -0.00912850078466119 -497 0.000879808460620783 -498 0.000984936175184538 -499 0.0024123778693579 -500 0.00264304134465302 -501 -0.0020232636751576 -502 0.00551353717784557 -503 -0.00415080354514971 -504 -0.00545916667181435 -505 -0.00274028317951399 -506 0.00692379605051298 -507 0.00616679327772537 -508 -0.0103279571217553 -509 0.00599342336739776 -510 -0.00152316676140798 -511 -0.00167286162288039 -512 -0.00131993101685522 -513 0.0025282491153862 -514 -0.0017542373384818 -515 0.0105600742581342 -516 -0.0132267654750864 -517 0.00283731663919629 -518 -0.00266741199361332 -519 0.00157444027950648 -520 0.00420858755299597 -521 -0.00658258017129261 -522 0.00508600113202915 -523 -0.00598002733029911 -524 -0.000368464512649264 -525 0.00317302663744126 -526 0.00115765014094958 -527 0.00267985546857361 -528 -5.46265185716715e-05 -529 -0.0020009411803283 -530 0.00486700543717424 -531 -0.00895876165620023 -532 -0.00299164146372051 -533 0.00312859041046786 -534 0.00209406747343818 -535 0.00673942768658441 -536 -0.0080409196789959 -537 0.00240456617470404 -538 -0.00873512083231826 -539 0.0131577627923678 -540 -0.00665539290143677 -541 0.00346454545303284 -542 0.0035973446316873 -543 -0.00868085967804022 -544 -0.00333236624454644 -545 -0.000196442609818114 -546 0.00024806978901623 -547 0.00902390850008458 -548 0.00455805912058593 -549 -0.0021927440377309 -550 -0.00266277815142354 -551 -0.00688313353751191 -552 0.00853131376210095 -553 -0.00393842096864295 -554 -0.00523274211550968 -555 0.0169329221829408 -556 -0.0127945093367028 -557 -0.00072480763790979 -558 -0.00747843149724429 -559 0.0098746166146274 -560 -0.00240342067223121 -561 0.00696610332249864 -562 -0.00223635183687814 -563 -0.00541969587447053 -564 0.000337137313027405 -565 -0.00633065126280832 -566 0.00910870585819199 -567 -0.00455095051161683 -568 0.0151312578540391 -569 -0.0138690307629985 -570 0.00185264574846404 -571 -0.00664259858046173 -572 -0.00312306915210339 -573 0.0115985176835154 -574 -0.00759201236341693 -575 0.0123033300962974 -576 -0.0116628565174072 -577 0.00192424927530433 -578 -0.00508184861795511 -579 0.00510239186439487 -580 0.0086553620645795 -581 -0.00172738282515301 -582 -0.0021965366527628 -583 -0.00611685505872929 -584 -0.00193581230608064 -585 -0.00107517411193112 -586 0.00446964598329358 -587 -0.000130069247618965 -588 0.0106723190798826 -589 -0.00893242845988889 -590 -0.00281814645132135 -591 -0.00320913741145263 -592 0.00122039092287541 -593 0.0131068648072679 -594 -0.0156363425833423 -595 0.0163402377490577 -596 -0.0178296060018707 -597 0.00292057772226031 -598 0.0026057160047535 -599 -0.0056620372273394 -600 0.0221246161887441 -601 -0.0124193991673087 -602 0.0116954284234103 -603 -0.0182733365810819 -604 0.00268681939875375 -605 0.000740456981363333 -606 0.00452604181556726 -607 0.00480547630796285 -608 -0.00481203219844089 -609 -0.00358228345456814 -610 0.00284875874479068 -611 -0.00700099168490112 -612 0.00572849008389633 -613 0.0009937821532389 -614 0.00731073451366145 -615 0.00170654591193711 -616 -0.0139804622453969 -617 -0.00443468421233479 -618 0.00531823173567082 -619 -0.00198161915266415 -620 0.0150254959665873 -621 -0.00831801965928389 -622 0.00172646514060601 -623 -0.00862060723221882 -624 -0.00433533060780036 -625 0.00756501714009114 -626 -0.00135836313194754 -627 0.00932877978173298 -628 0.00124802151466854 -629 -0.00395113636252646 -630 -0.00485990513214748 -631 -0.00663176926963557 -632 -0.0010820412567438 -633 0.0133592195871343 -634 -0.00141240259407419 -635 0.00139234037081884 -636 -0.00360777343366459 -637 -0.0045878817789227 -638 -0.00220204565644013 -639 0.00147686629423844 -640 0.00543470252168979 -641 0.0105896351713388 -642 -0.00973902671101576 -643 -0.00668023801257986 -644 -0.00936843265363968 -645 0.0089634651091583 -646 3.84562452729655e-05 -647 0.00384580055961138 -648 0.0229816090537144 -649 -0.0184332961015907 -650 -0.00529759065480934 -651 -0.0066870495503683 -652 0.00225769689469144 -653 0.0102460370689819 -654 0.00338482338024052 -655 0.00379747442016746 -656 -0.00712302572663179 -657 -0.0114322113895202 -658 -0.00273386445516078 -659 0.00553489607050495 -660 0.00837690540674999 -661 0.00940739102513669 -662 -0.0053486413343748 -663 -0.00315193594161813 -664 -0.0105647918156018 -665 -0.00691297631409873 -666 0.0142090509210798 -667 -0.000975698964492755 -668 0.0132255885174397 -669 -0.00325960303321359 -670 -0.006651275593499 -671 -0.0192763045572716 -672 0.00410496738893783 -673 0.00865425824492816 -674 0.0074519049626705 -675 0.00640440261542484 -676 -0.00248884860489984 -677 -0.0175933146891799 -678 -0.00288003343042402 -679 0.00834623453163345 -680 -0.00449041088509132 -681 0.0232105507895105 -682 -0.00534719486763679 -683 -0.00392566304421506 -684 -0.0192148623617993 -685 -0.00286039387718507 -686 0.0169363828012178 -687 -0.00383913263684977 -688 0.0147166901415108 -689 -0.00527685630258491 -690 -0.00534763716897078 -691 -0.013028036623984 -692 0.00109856360189917 -693 0.00429859241906058 -694 0.0110770507839361 -695 0.00389958466319795 -696 -0.00500164744078786 -697 -0.00580430434909617 -698 -0.0175348619428549 -699 0.018367710926664 -700 -0.00285520470226993 -701 0.0191604505372293 -702 -0.00572139870349262 -703 -0.00245556604337348 -704 -0.0107607119705179 -705 -0.00773541821274989 -706 0.00425886688313039 -707 0.00803784819561882 -708 0.0116278126911605 -709 -0.00361748710592387 -710 -0.0039055675458961 -711 -0.0187689003370071 -712 0.00721078757871366 -713 -0.00118844249034332 -714 0.0125434153334007 -715 0.0101599061260829 -716 -0.00351197692479239 -717 -0.0123155660331183 -718 -0.0108643040658882 -719 0.00554949017948381 -720 0.00257600141246878 -721 0.00621936965849692 -722 0.0147249169696155 -723 -0.0117208865566673 -724 -0.0123019859554356 -725 -0.00803010597732602 -726 0.00658862562929511 -727 0.00614064100015319 -728 0.008551217239909 -729 0.0136644617518446 -730 -0.015679112924688 -731 -0.0164762866576538 -732 -0.00450956642363176 -733 0.00672813330266014 -734 0.0163514096475234 -735 0.00144257368405246 -736 0.00632093496019618 -737 -0.0144540308342644 -738 -0.0116512949908104 -739 -0.00303930205795109 -740 0.00684139171029531 -741 0.0157237606456902 -742 0.00173826522952491 -743 0.00162052201072558 -744 -0.0225327170375728 -745 -0.00244349662721446 -746 -0.00369988442043602 -747 0.020606075524278 -748 0.00234950019819143 -749 0.00933962911886964 -750 -0.00497392363419004 -751 -0.0191622234756475 -752 0.00152935854260608 -753 -0.00746413948201927 -754 0.0210618579576008 -755 0.00337450745565617 -756 0.0116901903545899 -757 -0.0211051168455275 -758 -0.0116996994412557 -759 -0.00384503529844727 -760 0.0106920319592258 -761 0.00606434563857974 -762 0.0109288893744588 -763 0.0065913741548423 -764 -0.024843059360248 -765 -0.00145794491644285 -766 -0.015899201893062 -767 0.0293737522747255 -768 0.000429876419139015 -769 0.0117737352022464 -770 -0.011804032635419 -771 -0.0160558691300165 -772 -0.00680765187518244 -773 0.00115856328840688 -774 0.016936256215249 -775 0.00599154100809263 -776 0.00618605288716798 -777 -0.0133717924580297 -778 -0.00856753018227533 -779 -0.0122498868461665 -780 0.0184368989458328 -781 0.00826995605347898 -782 -0.00370110797731906 -783 0.00766740753297887 -784 -0.0106558949199266 -785 -0.0145918234070912 -786 0.00262754124009611 -787 0.00732095805793885 -788 0.0141175867672096 -789 0.000917093953717164 -790 -0.00610693085809193 -791 -0.00263724165375204 -792 -0.0223403739509282 -793 0.0155086188394132 -794 -0.000414907985012158 -795 0.00818366497095633 -796 0.00390922245137539 -797 0.000518897249907908 -798 -0.0114231682864646 -799 -0.0131434185021701 -800 0.0106325516600345 -801 0.00726206049320438 -802 0.011973193565835 -803 -0.0117164916752715 -804 0.00837431504618953 -805 -0.0176484202352301 -806 -0.00242926974706211 -807 0.00617275793654123 -808 0.00157428575173083 -809 0.0140869636480763 -810 -0.00799595335938592 -811 -0.00145797624072917 -812 -0.0163218480242698 -813 0.0102032846601359 -814 0.00334029936869413 -815 0.00596774673469088 -816 -0.00191679139866682 -817 0.00111982507739117 -818 -0.00466131055412295 -819 -0.009977558947507 -820 0.0070518233255565 -821 -0.00235106334091928 -822 0.0135818413020524 -823 -0.0124536640788948 -824 0.00961249011142124 -825 -0.012067111031695 -826 0.000746163532116685 -827 -0.000618612461237987 -828 0.00932264378392892 -829 -0.00138865174580641 -830 -0.0026558878506514 -831 0.0039382752792092 -832 -0.00629021025673958 -833 -0.00703454327061739 -834 0.000852556936383089 -835 0.0170439482297759 -836 -0.0100201779805253 -837 0.00412500179406067 -838 -0.00228249593639731 -839 0.00340179323986006 -840 -0.0152704223182198 -841 0.0106042546349877 -842 0.00124240796525085 -843 0.000187170197715872 -844 -0.00396092509138278 -845 0.00476886425336974 -846 -0.00278502915166355 -847 -0.0105600821274784 -848 0.0187548308543433 -849 -0.0101103834519274 -850 0.00609860589988799 -851 -0.00970023587707483 -852 0.0175534712886796 -853 -0.0150157009573689 -854 0.000240696590543887 -855 0.00334623999363693 -856 0.000756223924502869 -857 -0.0019111813337376 -858 -0.000465320516901212 -859 0.0102121697808577 -860 -0.0119235594699214 -861 -0.000513039517075994 -862 7.13470533304221e-05 -863 0.00602093194270405 -864 -0.00562228912014448 -865 0.00897532104113402 -866 0.00135722877208738 -867 -0.0107137791823794 -868 0.000349804975704247 -869 0.00196275441326171 -870 -0.00207881051818241 -871 -0.00504133443326138 -872 0.01798662824207 -873 -0.00512468690960391 -874 -0.00936398567940176 -875 -0.00350357584735409 -876 0.00844402907196902 -877 -0.00535212289603013 -878 0.00359477004645202 -879 0.0100259050577573 -880 -0.00448613112164086 -881 -0.00772718523343422 -882 -0.00407471844508272 -883 0.00258842651253074 -884 -0.00497542569393132 -885 0.0140374940981116 -886 0.00485938827108293 -887 -0.00522635448674892 -888 -0.00995747147865195 -889 0.00286884969081893 -890 -0.00263726932721365 -891 0.00281869362544293 -892 0.00413911124089107 -893 0.00641299274583358 -894 -0.00461483322781905 -895 -0.00973466510643417 -896 -0.00244121423716433 -897 -0.00187439261201581 -898 0.0167254251905489 -899 -0.00323557017026858 -900 0.0070698910566062 -901 -0.00984192453152891 -902 -0.00745285112891651 -903 -0.00156488511331396 -904 0.00648910969501878 -905 0.00778960101933796 -906 -0.00110773006555918 -907 0.00797123926504478 -908 -0.0172915924405978 -909 -0.00567453921434972 -910 -0.00093198227439079 -911 0.017699519362806 -912 -0.000318037037700945 -913 -0.000901743764017103 -914 0.00248888283323065 -915 -0.0142481225576747 -916 -0.00627435836721236 -917 0.00855187280647071 -918 0.0105572049962355 -919 0.000583931991033486 -920 -4.30556267490633e-05 -921 -0.0045108941062306 -922 -0.0133739157611831 -923 -0.00313115415898723 -924 0.0189188436677887 -925 0.00153514138422627 -926 0.00103320993409772 -927 0.00112288481924235 -928 -0.00928188326624581 -929 -0.0129274841698096 -930 0.00498882941992066 -931 0.0128685052672079 -932 0.00095422558746866 -933 0.00287762148255505 -934 -0.00475028532754077 -935 -0.00822865912701703 -936 -0.00757218985298937 -937 0.0125664162380766 -938 0.00270238634995215 -939 0.00302457671529668 -940 0.00428294440890637 -941 -0.00899111620928394 -942 -0.0110893993806093 -943 0.00141333596146868 -944 0.00563271971888788 -945 0.00411002278120649 -946 0.00615934836425166 -947 -0.00174830591696001 -948 -0.00690959640532146 -949 -0.00762102396102174 -950 0.00236971536529725 -951 0.00460497853674718 -952 0.00598101123225428 -953 0.00706347780702416 -954 -0.0072207235025214 -955 -0.00731160125486541 -956 -0.00624993042258776 -957 0.00302766462338833 -958 0.00586320595091301 -959 0.00757297545746186 -960 0.000503174678108187 -961 -0.00664203641468952 -962 -0.00405954777539984 -963 -0.00594873760338403 -964 0.00307617052361439 -965 0.00775330844648307 -966 0.00843784117689838 -967 -0.00583155486504129 -968 -0.00522157454280821 -969 -0.00285538010476946 -970 -0.00558783047918071 -971 0.00390712343424286 -972 0.00929413763014091 -973 0.00249794635456826 -974 -0.00403614631431915 -975 -0.00252223207691292 -976 -0.00372319999128239 -977 -0.00468425218841592 -978 0.00588461196845991 -979 0.0101947594770192 -980 -0.00382374940790093 -981 -0.00256280880770612 -982 -0.00238724745188651 -983 -0.00254031623097892 -984 -0.00349304284255843 -985 0.00656620792235621 -986 0.0047392335299334 -987 -0.00245644332451687 -988 -0.000949186258308068 -989 -0.00204517319399663 -990 -0.00117348041470723 -991 -0.00165335740901138 -992 0.00532507797594932 -993 -0.00112887412444135 -994 -0.00102507341491478 -995 -0.000239825549954329 -996 -0.000229034611702856 -997 -0.00048382116878178 -998 -0.000558954253318938 -999 0.000343539178586105 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat deleted file mode 100644 index 9c717bb6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.0163400173187256 0.00999999999999091 0.00999999999999091 0.0 1 -2 0.0159189701080322 0.00999999999999091 0.00999999999999091 0.0 2 -3 0.0164740085601807 0.0200000000000102 0.0200000000000102 0.0 3 -4 0.0157279968261719 0.00999999999999091 0.00999999999999091 0.0 4 -5 0.0157220363616943 0.0200000000000102 0.0200000000000102 0.0 5 -6 0.0156500339508057 0.00999999999999091 0.00999999999999091 0.0 6 -7 0.0407540798187256 0.0499999999999829 0.0499999999999829 0.0 7 -8 0.0177309513092041 0.0100000000000193 0.0100000000000193 0.0 8 -9 0.0160109996795654 0.0199999999999818 0.0199999999999818 0.0 9 -10 0.0159001350402832 0.0100000000000193 0.0100000000000193 0.0 10 -11 0.0192539691925049 0.0199999999999818 0.0199999999999818 0.0 11 -12 0.0170741081237793 0.0200000000000102 0.0200000000000102 0.0 12 -13 0.0155148506164551 0.0200000000000102 0.0200000000000102 0.0 13 -14 0.0416128635406494 0.039999999999992 0.039999999999992 0.0 14 -15 0.0161120891571045 0.00999999999999091 0.00999999999999091 0.0 15 -16 0.0159459114074707 0.0200000000000102 0.0200000000000102 0.0 16 -17 0.0158929824829102 0.0200000000000102 0.0200000000000102 0.0 17 -18 0.0158240795135498 0.00999999999999091 0.00999999999999091 0.0 18 -19 0.0156450271606445 0.0199999999999818 0.0199999999999818 0.0 19 -20 0.0159389972686768 0.0100000000000193 0.0100000000000193 0.0 20 -21 0.0409190654754639 0.039999999999992 0.039999999999992 0.0 21 -22 0.0160489082336426 0.0200000000000102 0.0200000000000102 0.0 22 -23 0.0169320106506348 0.0199999999999818 0.0199999999999818 0.0 23 -24 0.0198559761047363 0.0200000000000102 0.0200000000000102 0.0 24 -25 0.0158309936523438 0.00999999999999091 0.00999999999999091 0.0 25 -26 0.0156970024108887 0.0200000000000102 0.0200000000000102 0.0 26 -27 0.0156750679016113 0.0200000000000102 0.0200000000000102 0.0 27 -28 0.0406918525695801 0.039999999999992 0.039999999999992 0.0 28 -29 0.0161190032958984 0.00999999999999091 0.00999999999999091 0.0 29 -30 0.0162358283996582 0.0200000000000102 0.0200000000000102 0.0 30 -31 0.0158340930938721 0.00999999999999091 0.00999999999999091 0.0 31 -32 0.0157299041748047 0.0200000000000102 0.0200000000000102 0.0 32 -33 0.0156428813934326 0.0199999999999818 0.0199999999999818 0.0 33 -34 0.0156571865081787 0.0100000000000193 0.0100000000000193 0.0 34 -35 0.0409109592437744 0.039999999999992 0.039999999999992 0.0 35 -36 0.0192060470581055 0.0200000000000102 0.0200000000000102 0.0 36 -37 0.0160908699035645 0.0199999999999818 0.0199999999999818 0.0 37 -38 0.0158319473266602 0.0100000000000193 0.0100000000000193 0.0 38 -39 0.0157558917999268 0.0199999999999818 0.0199999999999818 0.0 39 -40 0.0158040523529053 0.0200000000000102 0.0200000000000102 0.0 40 -41 0.0156400203704834 0.00999999999999091 0.00999999999999091 0.0 41 -42 0.0408070087432861 0.0400000000000205 0.0400000000000205 0.0 42 -43 0.0159420967102051 0.0199999999999818 0.0199999999999818 0.0 43 -44 0.0159668922424316 0.00999999999999091 0.00999999999999091 0.0 44 -45 0.0213000774383545 0.0300000000000011 0.0300000000000011 0.0 45 -46 0.0170960426330566 0.0100000000000193 0.0100000000000193 0.0 46 -47 0.0160157680511475 0.0199999999999818 0.0199999999999818 0.0 47 -48 0.0156497955322266 0.0100000000000193 0.0100000000000193 0.0 48 -49 0.0446329116821289 0.0499999999999829 0.0499999999999829 0.0 49 -50 0.016150951385498 0.0200000000000102 0.0200000000000102 0.0 50 -51 0.0159158706665039 0.00999999999999091 0.00999999999999091 0.0 51 -52 0.0157129764556885 0.0200000000000102 0.0200000000000102 0.0 52 -53 0.0165328979492188 0.00999999999999091 0.00999999999999091 0.0 53 -54 0.0156497955322266 0.0200000000000102 0.0200000000000102 0.0 54 -55 0.0156981945037842 0.0200000000000102 0.0200000000000102 0.0 55 -56 0.0412800312042236 0.039999999999992 0.039999999999992 0.0 56 -57 0.0159571170806885 0.00999999999999091 0.00999999999999091 0.0 57 -58 0.015887975692749 0.0200000000000102 0.0200000000000102 0.0 58 -59 0.0158159732818604 0.00999999999999091 0.00999999999999091 0.0 59 -60 0.0156238079071045 0.0200000000000102 0.0200000000000102 0.0 60 -61 0.0156691074371338 0.0199999999999818 0.0199999999999818 0.0 61 -62 0.0447931289672852 0.0400000000000205 0.0400000000000205 0.0 62 -63 0.0160729885101318 0.0199999999999818 0.0199999999999818 0.0 63 -64 0.016963005065918 0.0100000000000193 0.0100000000000193 0.0 64 -65 0.015869140625 0.0199999999999818 0.0199999999999818 0.0 65 -66 0.0158119201660156 0.0200000000000102 0.0200000000000102 0.0 66 -67 0.0156521797180176 0.00999999999999091 0.00999999999999091 0.0 67 -68 0.0156309604644775 0.0200000000000102 0.0200000000000102 0.0 68 -69 0.0406920909881592 0.039999999999992 0.039999999999992 0.0 69 -70 0.0161399841308594 0.00999999999999091 0.00999999999999091 0.0 70 -71 0.0160379409790039 0.0200000000000102 0.0200000000000102 0.0 71 -72 0.0158870220184326 0.0200000000000102 0.0200000000000102 0.0 72 -73 0.0157949924468994 0.00999999999999091 0.00999999999999091 0.0 73 -74 0.019942045211792 0.0200000000000102 0.0200000000000102 0.0 74 -75 0.0156691074371338 0.0199999999999818 0.0199999999999818 0.0 75 -76 0.0406370162963867 0.0400000000000205 0.0400000000000205 0.0 76 -77 0.0160510540008545 0.00999999999999091 0.00999999999999091 0.0 77 -78 0.0159440040588379 0.0200000000000102 0.0200000000000102 0.0 78 -79 0.0159609317779541 0.0199999999999818 0.0199999999999818 0.0 79 -80 0.0160808563232422 0.0100000000000193 0.0100000000000193 0.0 80 -81 0.0156311988830566 0.0199999999999818 0.0199999999999818 0.0 81 -82 0.0157270431518555 0.00999999999999091 0.00999999999999091 0.0 82 -83 0.041240930557251 0.0500000000000114 0.0500000000000114 0.0 83 -84 0.0165321826934814 0.00999999999999091 0.00999999999999091 0.0 84 -85 0.0159039497375488 0.0200000000000102 0.0200000000000102 0.0 85 -86 0.0183000564575195 0.0200000000000102 0.0200000000000102 0.0 86 -87 0.0168759822845459 0.00999999999999091 0.00999999999999091 0.0 87 -88 0.0156400203704834 0.0200000000000102 0.0200000000000102 0.0 88 -89 0.0156240463256836 0.00999999999999091 0.00999999999999091 0.0 89 -90 0.0415260791778564 0.0500000000000114 0.0500000000000114 0.0 90 -91 0.0159800052642822 0.00999999999999091 0.00999999999999091 0.0 91 -92 0.0159440040588379 0.0200000000000102 0.0200000000000102 0.0 92 -93 0.0158178806304932 0.00999999999999091 0.00999999999999091 0.0 93 -94 0.0157041549682617 0.0199999999999818 0.0199999999999818 0.0 94 -95 0.0200591087341309 0.0200000000000102 0.0200000000000102 0.0 95 -96 0.018794059753418 0.0200000000000102 0.0200000000000102 0.0 96 -97 0.0408840179443359 0.039999999999992 0.039999999999992 0.0 97 -98 0.0196928977966309 0.0200000000000102 0.0200000000000102 0.0 98 -99 0.016610860824585 0.0199999999999818 0.0199999999999818 0.0 99 -100 0.0157420635223389 0.0100000000000193 0.0100000000000193 0.0 100 -101 0.015739917755127 0.0199999999999818 0.0199999999999818 0.0 101 -102 0.015592098236084 0.0100000000000193 0.0100000000000193 0.0 102 -103 0.0156228542327881 0.0199999999999818 0.0199999999999818 0.0 103 -104 0.0417301654815674 0.0400000000000205 0.0400000000000205 0.0 104 -105 0.015916109085083 0.0199999999999818 0.0199999999999818 0.0 105 -106 0.0158488750457764 0.00999999999999091 0.00999999999999091 0.0 106 -107 0.015733003616333 0.0200000000000102 0.0200000000000102 0.0 107 -108 0.0156040191650391 0.00999999999999091 0.00999999999999091 0.0 108 -109 0.0155818462371826 0.0200000000000102 0.0200000000000102 0.0 109 -110 0.041733980178833 0.039999999999992 0.039999999999992 0.0 110 -111 0.0190949440002441 0.0200000000000102 0.0200000000000102 0.0 111 -112 0.0159502029418945 0.0200000000000102 0.0200000000000102 0.0 112 -113 0.015855073928833 0.00999999999999091 0.00999999999999091 0.0 113 -114 0.0161051750183105 0.0200000000000102 0.0200000000000102 0.0 114 -115 0.0168948173522949 0.0199999999999818 0.0199999999999818 0.0 115 -116 0.0157649517059326 0.0100000000000193 0.0100000000000193 0.0 116 -117 0.0404441356658936 0.039999999999992 0.039999999999992 0.0 117 -118 0.0158331394195557 0.0199999999999818 0.0199999999999818 0.0 118 -119 0.0158309936523438 0.0100000000000193 0.0100000000000193 0.0 119 -120 0.0155770778656006 0.0199999999999818 0.0199999999999818 0.0 120 -121 0.0154340267181396 0.0100000000000193 0.0100000000000193 0.0 121 -122 0.0155458450317383 0.0199999999999818 0.0199999999999818 0.0 122 -123 0.0156569480895996 0.0200000000000102 0.0200000000000102 0.0 123 -124 0.0447821617126465 0.0499999999999829 0.039999999999992 0.01 124 -125 0.0162930488586426 0.0200000000000102 0.0200000000000102 0.0 125 -126 0.0159821510314941 0.00999999999999091 0.00999999999999091 0.0 126 -127 0.0158350467681885 0.0200000000000102 0.0200000000000102 0.0 127 -128 0.0157771110534668 0.00999999999999091 0.00999999999999091 0.0 128 -129 0.0155949592590332 0.0200000000000102 0.0200000000000102 0.0 129 -130 0.015751838684082 0.0200000000000102 0.0200000000000102 0.0 130 -131 0.0409200191497803 0.039999999999992 0.039999999999992 0.0 131 -132 0.0159509181976318 0.00999999999999091 0.00999999999999091 0.0 132 -133 0.0159890651702881 0.0200000000000102 0.0200000000000102 0.0 133 -134 0.015902042388916 0.00999999999999091 0.00999999999999091 0.0 134 -135 0.0158298015594482 0.0200000000000102 0.0200000000000102 0.0 135 -136 0.0156691074371338 0.0199999999999818 0.0199999999999818 0.0 136 -137 0.0194599628448486 0.0200000000000102 0.0200000000000102 0.0 137 -138 0.0408408641815186 0.039999999999992 0.039999999999992 0.0 138 -139 0.0161910057067871 0.0100000000000193 0.0100000000000193 0.0 139 -140 0.0158939361572266 0.0199999999999818 0.0199999999999818 0.0 140 -141 0.0157690048217773 0.0100000000000193 0.0100000000000193 0.0 141 -142 0.0156970024108887 0.0199999999999818 0.0199999999999818 0.0 142 -143 0.015625 0.0200000000000102 0.0200000000000102 0.0 143 -144 0.0156629085540771 0.00999999999999091 0.00999999999999091 0.0 144 -145 0.0474429130554199 0.0500000000000114 0.0500000000000114 0.0 145 -146 0.0159988403320312 0.0199999999999818 0.0199999999999818 0.0 146 -147 0.0159039497375488 0.0100000000000193 0.0100000000000193 0.0 147 -148 0.0157449245452881 0.0199999999999818 0.0199999999999818 0.0 148 -149 0.0188858509063721 0.0200000000000102 0.0200000000000102 0.0 149 -150 0.0156919956207275 0.00999999999999091 0.00999999999999091 0.0 150 -151 0.0404269695281982 0.0400000000000205 0.0400000000000205 0.0 151 -152 0.0160980224609375 0.0199999999999818 0.0199999999999818 0.0 152 -153 0.0167350769042969 0.0200000000000102 0.0200000000000102 0.0 153 -154 0.0159759521484375 0.00999999999999091 0.00999999999999091 0.0 154 -155 0.0158588886260986 0.0200000000000102 0.0200000000000102 0.0 155 -156 0.01568603515625 0.00999999999999091 0.00999999999999091 0.0 156 -157 0.0156669616699219 0.0200000000000102 0.0200000000000102 0.0 157 -158 0.0405089855194092 0.039999999999992 0.039999999999992 0.0 158 -159 0.0160729885101318 0.0200000000000102 0.0200000000000102 0.0 159 -160 0.0159640312194824 0.00999999999999091 0.00999999999999091 0.0 160 -161 0.0188910961151123 0.0200000000000102 0.0200000000000102 0.0 161 -162 0.0166840553283691 0.0199999999999818 0.0199999999999818 0.0 162 -163 0.0156660079956055 0.0100000000000193 0.0100000000000193 0.0 163 -164 0.0156950950622559 0.0199999999999818 0.0199999999999818 0.0 164 -165 0.0416688919067383 0.0400000000000205 0.0400000000000205 0.0 165 -166 0.0159718990325928 0.0199999999999818 0.0199999999999818 0.0 166 -167 0.0159449577331543 0.0100000000000193 0.0100000000000193 0.0 167 -168 0.0157949924468994 0.0199999999999818 0.0199999999999818 0.0 168 -169 0.0157520771026611 0.00999999999999091 0.00999999999999091 0.0 169 -170 0.0157308578491211 0.0200000000000102 0.0200000000000102 0.0 170 -171 0.0156319141387939 0.0200000000000102 0.0200000000000102 0.0 171 -172 0.0406780242919922 0.039999999999992 0.039999999999992 0.0 172 -173 0.0182578563690186 0.00999999999999091 0.00999999999999091 0.0 173 -174 0.0166499614715576 0.0200000000000102 0.0200000000000102 0.0 174 -175 0.0157749652862549 0.0200000000000102 0.0200000000000102 0.0 175 -176 0.0156049728393555 0.00999999999999091 0.00999999999999091 0.0 176 -177 0.0155508518218994 0.0200000000000102 0.0200000000000102 0.0 177 -178 0.0155460834503174 0.00999999999999091 0.00999999999999091 0.0 178 -179 0.0410678386688232 0.0500000000000114 0.0500000000000114 0.0 179 -180 0.0161750316619873 0.00999999999999091 0.00999999999999091 0.0 180 -181 0.0159769058227539 0.0199999999999818 0.0199999999999818 0.0 181 -182 0.0157239437103271 0.0100000000000193 0.0100000000000193 0.0 182 -183 0.0155858993530273 0.0199999999999818 0.0199999999999818 0.0 183 -184 0.0157029628753662 0.0100000000000193 0.0100000000000193 0.0 184 -185 0.0406639575958252 0.0499999999999829 0.0499999999999829 0.0 185 -186 0.020313024520874 0.0200000000000102 0.0200000000000102 0.0 186 -187 0.0159680843353271 0.00999999999999091 0.00999999999999091 0.0 187 -188 0.0159218311309814 0.0200000000000102 0.0200000000000102 0.0 188 -189 0.0158710479736328 0.00999999999999091 0.00999999999999091 0.0 189 -190 0.0158529281616211 0.0200000000000102 0.0200000000000102 0.0 190 -191 0.0155730247497559 0.0200000000000102 0.0200000000000102 0.0 191 -192 0.0405440330505371 0.039999999999992 0.039999999999992 0.0 192 -193 0.0161638259887695 0.00999999999999091 0.00999999999999091 0.0 193 -194 0.0165688991546631 0.0200000000000102 0.0200000000000102 0.0 194 -195 0.0231571197509766 0.0199999999999818 0.0199999999999818 0.0 195 -196 0.0159261226654053 0.0200000000000102 0.0200000000000102 0.0 196 -197 0.015887975692749 0.00999999999999091 0.00999999999999091 0.0 197 -198 0.0156550407409668 0.0200000000000102 0.0200000000000102 0.0 198 -199 0.0435981750488281 0.039999999999992 0.039999999999992 0.0 199 -200 0.0159139633178711 0.0200000000000102 0.0200000000000102 0.0 200 -201 0.0158441066741943 0.00999999999999091 0.00999999999999091 0.0 201 -202 0.0157480239868164 0.0200000000000102 0.0200000000000102 0.0 202 -203 0.0163719654083252 0.0200000000000102 0.0200000000000102 0.0 203 -204 0.0156970024108887 0.00999999999999091 0.00999999999999091 0.0 204 -205 0.01556396484375 0.0200000000000102 0.0200000000000102 0.0 205 -206 0.0408110618591309 0.039999999999992 0.039999999999992 0.0 206 -207 0.0159599781036377 0.0199999999999818 0.0199999999999818 0.0 207 -208 0.0159690380096436 0.0100000000000193 0.0100000000000193 0.0 208 -209 0.0159268379211426 0.0199999999999818 0.0199999999999818 0.0 209 -210 0.0157289505004883 0.0100000000000193 0.0100000000000193 0.0 210 -211 0.0156691074371338 0.0199999999999818 0.0199999999999818 0.0 211 -212 0.0189340114593506 0.0200000000000102 0.0200000000000102 0.0 212 -213 0.0407509803771973 0.039999999999992 0.039999999999992 0.0 213 -214 0.0168440341949463 0.0200000000000102 0.0200000000000102 0.0 214 -215 0.0158839225769043 0.00999999999999091 0.00999999999999091 0.0 215 -216 0.0157129764556885 0.0200000000000102 0.0200000000000102 0.0 216 -217 0.0155618190765381 0.00999999999999091 0.00999999999999091 0.0 217 -218 0.0155580043792725 0.0200000000000102 0.0200000000000102 0.0 218 -219 0.0405669212341309 0.039999999999992 0.039999999999992 0.0 219 -220 0.0161259174346924 0.0200000000000102 0.0200000000000102 0.0 220 -221 0.0161309242248535 0.00999999999999091 0.00999999999999091 0.0 221 -222 0.0159680843353271 0.0200000000000102 0.0200000000000102 0.0 222 -223 0.0159029960632324 0.00999999999999091 0.00999999999999091 0.0 223 -224 0.0187640190124512 0.0200000000000102 0.0200000000000102 0.0 224 -225 0.0158958435058594 0.0199999999999818 0.0199999999999818 0.0 225 -226 0.0405712127685547 0.0400000000000205 0.0400000000000205 0.0 226 -227 0.0160939693450928 0.0199999999999818 0.0199999999999818 0.0 227 -228 0.0159199237823486 0.0100000000000193 0.0100000000000193 0.0 228 -229 0.0160150527954102 0.0199999999999818 0.0199999999999818 0.0 229 -230 0.0161042213439941 0.0100000000000193 0.0100000000000193 0.0 230 -231 0.0156550407409668 0.0199999999999818 0.0199999999999818 0.0 231 -232 0.0155539512634277 0.00999999999999091 0.00999999999999091 0.0 232 -233 0.0406229496002197 0.0500000000000114 0.0500000000000114 0.0 233 -234 0.0177409648895264 0.00999999999999091 0.00999999999999091 0.0 234 -235 0.0160009860992432 0.0200000000000102 0.0200000000000102 0.0 235 -236 0.0169141292572021 0.00999999999999091 0.00999999999999091 0.0 236 -237 0.0185301303863525 0.0200000000000102 0.0200000000000102 0.0 237 -238 0.0156500339508057 0.0200000000000102 0.0200000000000102 0.0 238 -239 0.0157279968261719 0.00999999999999091 0.00999999999999091 0.0 239 -240 0.041100025177002 0.0500000000000114 0.0500000000000114 0.0 240 -241 0.0159239768981934 0.00999999999999091 0.00999999999999091 0.0 241 -242 0.0158870220184326 0.0200000000000102 0.0200000000000102 0.0 242 -243 0.0157818794250488 0.00999999999999091 0.00999999999999091 0.0 243 -244 0.0156459808349609 0.0199999999999818 0.0199999999999818 0.0 244 -245 0.0205349922180176 0.0200000000000102 0.0200000000000102 0.0 245 -246 0.0176489353179932 0.0200000000000102 0.0200000000000102 0.0 246 -247 0.0406951904296875 0.039999999999992 0.039999999999992 0.0 247 -248 0.0161759853363037 0.00999999999999091 0.00999999999999091 0.0 248 -249 0.0186100006103516 0.0200000000000102 0.0200000000000102 0.0 249 -250 0.0158610343933105 0.0200000000000102 0.0200000000000102 0.0 250 -251 0.0157759189605713 0.00999999999999091 0.00999999999999091 0.0 251 -252 0.0157499313354492 0.0200000000000102 0.0200000000000102 0.0 252 -253 0.0412969589233398 0.039999999999992 0.039999999999992 0.0 253 -254 0.0160319805145264 0.0200000000000102 0.0200000000000102 0.0 254 -255 0.0159080028533936 0.00999999999999091 0.00999999999999091 0.0 255 -256 0.01580810546875 0.0199999999999818 0.0199999999999818 0.0 256 -257 0.0157821178436279 0.0200000000000102 0.0200000000000102 0.0 257 -258 0.015578031539917 0.00999999999999091 0.00999999999999091 0.0 258 -259 0.0155758857727051 0.0200000000000102 0.0200000000000102 0.0 259 -260 0.0406520366668701 0.039999999999992 0.039999999999992 0.0 260 -261 0.0193078517913818 0.0200000000000102 0.0200000000000102 0.0 261 -262 0.0160150527954102 0.00999999999999091 0.00999999999999091 0.0 262 -263 0.015920877456665 0.0200000000000102 0.0200000000000102 0.0 263 -264 0.0161728858947754 0.0200000000000102 0.0200000000000102 0.0 264 -265 0.0163869857788086 0.00999999999999091 0.00999999999999091 0.0 265 -266 0.0156819820404053 0.0200000000000102 0.0200000000000102 0.0 266 -267 0.0407660007476807 0.039999999999992 0.039999999999992 0.0 267 -268 0.015861988067627 0.00999999999999091 0.00999999999999091 0.0 268 -269 0.015887975692749 0.0200000000000102 0.0200000000000102 0.0 269 -270 0.0157639980316162 0.0199999999999818 0.0199999999999818 0.0 270 -271 0.0156021118164062 0.0100000000000193 0.0100000000000193 0.0 271 -272 0.0162060260772705 0.0199999999999818 0.0199999999999818 0.0 272 -273 0.0156650543212891 0.0100000000000193 0.0100000000000193 0.0 273 -274 0.0440959930419922 0.0499999999999829 0.0499999999999829 0.0 274 -275 0.0158300399780273 0.0100000000000193 0.0100000000000193 0.0 275 -276 0.0157949924468994 0.0199999999999818 0.0199999999999818 0.0 276 -277 0.0157911777496338 0.0200000000000102 0.0200000000000102 0.0 277 -278 0.0155570507049561 0.00999999999999091 0.00999999999999091 0.0 278 -279 0.0156610012054443 0.0200000000000102 0.0200000000000102 0.0 279 -280 0.015800952911377 0.00999999999999091 0.00999999999999091 0.0 280 -281 0.041050910949707 0.039999999999992 0.039999999999992 0.0 281 -282 0.0158300399780273 0.0200000000000102 0.0200000000000102 0.0 282 -283 0.0173659324645996 0.0200000000000102 0.0200000000000102 0.0 283 -284 0.0157661437988281 0.00999999999999091 0.00999999999999091 0.0 284 -285 0.0156910419464111 0.0200000000000102 0.0200000000000102 0.0 285 -286 0.0156378746032715 0.00999999999999091 0.00999999999999091 0.0 286 -287 0.0446128845214844 0.0500000000000114 0.0500000000000114 0.0 287 -288 0.0160419940948486 0.00999999999999091 0.00999999999999091 0.0 288 -289 0.0161609649658203 0.0200000000000102 0.0200000000000102 0.0 289 -290 0.0157930850982666 0.00999999999999091 0.00999999999999091 0.0 290 -291 0.0157232284545898 0.0200000000000102 0.0200000000000102 0.0 291 -292 0.0155608654022217 0.0199999999999818 0.0199999999999818 0.0 292 -293 0.0156910419464111 0.0100000000000193 0.0100000000000193 0.0 293 -294 0.0463647842407227 0.0499999999999829 0.0499999999999829 0.0 294 -295 0.0179910659790039 0.0200000000000102 0.0200000000000102 0.0 295 -296 0.0158979892730713 0.00999999999999091 0.00999999999999091 0.0 296 -297 0.0157630443572998 0.0200000000000102 0.0200000000000102 0.0 297 -298 0.0156371593475342 0.00999999999999091 0.00999999999999091 0.0 298 -299 0.0191469192504883 0.0200000000000102 0.0200000000000102 0.0 299 -300 0.0167911052703857 0.0199999999999818 0.0199999999999818 0.0 300 -301 0.0407388210296631 0.0400000000000205 0.0400000000000205 0.0 301 -302 0.0159130096435547 0.0199999999999818 0.0199999999999818 0.0 302 -303 0.0166409015655518 0.0100000000000193 0.0100000000000193 0.0 303 -304 0.0158700942993164 0.0199999999999818 0.0199999999999818 0.0 304 -305 0.0156099796295166 0.0200000000000102 0.0200000000000102 0.0 305 -306 0.0155818462371826 0.00999999999999091 0.00999999999999091 0.0 306 -307 0.0156898498535156 0.0200000000000102 0.0200000000000102 0.0 307 -308 0.0406138896942139 0.039999999999992 0.039999999999992 0.0 308 -309 0.0159690380096436 0.00999999999999091 0.00999999999999091 0.0 309 -310 0.0157949924468994 0.0200000000000102 0.0200000000000102 0.0 310 -311 0.0166599750518799 0.00999999999999091 0.00999999999999091 0.0 311 -312 0.0184519290924072 0.0200000000000102 0.0200000000000102 0.0 312 -313 0.0156970024108887 0.0200000000000102 0.0200000000000102 0.0 313 -314 0.0414550304412842 0.039999999999992 0.039999999999992 0.0 314 -315 0.0159659385681152 0.0200000000000102 0.0200000000000102 0.0 315 -316 0.015855073928833 0.00999999999999091 0.00999999999999091 0.0 316 -317 0.0157890319824219 0.0200000000000102 0.0200000000000102 0.0 317 -318 0.0157499313354492 0.00999999999999091 0.00999999999999091 0.0 318 -319 0.0157718658447266 0.0199999999999818 0.0199999999999818 0.0 319 -320 0.0155758857727051 0.0200000000000102 0.0200000000000102 0.0 320 -321 0.0406579971313477 0.039999999999992 0.039999999999992 0.0 321 -322 0.0160129070281982 0.0100000000000193 0.0100000000000193 0.0 322 -323 0.0166339874267578 0.0199999999999818 0.0199999999999818 0.0 323 -324 0.020615816116333 0.0200000000000102 0.0200000000000102 0.0 324 -325 0.016042947769165 0.0200000000000102 0.0200000000000102 0.0 325 -326 0.0157880783081055 0.00999999999999091 0.00999999999999091 0.0 326 -327 0.0156471729278564 0.0200000000000102 0.0200000000000102 0.0 327 -328 0.0406618118286133 0.039999999999992 0.039999999999992 0.0 328 -329 0.0161919593811035 0.00999999999999091 0.00999999999999091 0.0 329 -330 0.0158429145812988 0.0200000000000102 0.0200000000000102 0.0 330 -331 0.0157439708709717 0.0199999999999818 0.0199999999999818 0.0 331 -332 0.0156080722808838 0.0100000000000193 0.0100000000000193 0.0 332 -333 0.0156378746032715 0.0199999999999818 0.0199999999999818 0.0 333 -334 0.015779972076416 0.0100000000000193 0.0100000000000193 0.0 334 -335 0.0407891273498535 0.039999999999992 0.039999999999992 0.0 335 -336 0.0195779800415039 0.0200000000000102 0.0200000000000102 0.0 336 -337 0.0160758495330811 0.0199999999999818 0.0199999999999818 0.0 337 -338 0.0156791210174561 0.0200000000000102 0.0200000000000102 0.0 338 -339 0.015733003616333 0.00999999999999091 0.00999999999999091 0.0 339 -340 0.0158100128173828 0.0200000000000102 0.0200000000000102 0.0 340 -341 0.0405211448669434 0.039999999999992 0.039999999999992 0.0 341 -342 0.0158991813659668 0.0100000000000193 0.0100000000000193 0.0 342 -343 0.0157461166381836 0.0199999999999818 0.0199999999999818 0.0 343 -344 0.0166110992431641 0.0200000000000102 0.0200000000000102 0.0 344 -345 0.0219199657440186 0.0199999999999818 0.0199999999999818 0.0 345 -346 0.0155389308929443 0.0100000000000193 0.0100000000000193 0.0 346 -347 0.0156941413879395 0.0199999999999818 0.0199999999999818 0.0 347 -348 0.0439140796661377 0.0400000000000205 0.0400000000000205 0.0 348 -349 0.016746997833252 0.0199999999999818 0.0199999999999818 0.0 349 -350 0.0159060955047607 0.0200000000000102 0.0200000000000102 0.0 350 -351 0.0158212184906006 0.00999999999999091 0.00999999999999091 0.0 351 -352 0.0157208442687988 0.0200000000000102 0.0200000000000102 0.0 352 -353 0.0156140327453613 0.00999999999999091 0.00999999999999091 0.0 353 -354 0.0168178081512451 0.0200000000000102 0.0200000000000102 0.0 354 -355 0.0407528877258301 0.039999999999992 0.039999999999992 0.0 355 -356 0.0157878398895264 0.0200000000000102 0.0200000000000102 0.0 356 -357 0.0157828330993652 0.00999999999999091 0.00999999999999091 0.0 357 -358 0.0156841278076172 0.0200000000000102 0.0200000000000102 0.0 358 -359 0.0156099796295166 0.00999999999999091 0.00999999999999091 0.0 359 -360 0.015535831451416 0.0200000000000102 0.0200000000000102 0.0 360 -361 0.0171799659729004 0.0199999999999818 0.0199999999999818 0.0 361 -362 0.044562816619873 0.0400000000000205 0.0400000000000205 0.0 362 -363 0.0159769058227539 0.0199999999999818 0.0199999999999818 0.0 363 -364 0.0167310237884521 0.0100000000000193 0.0100000000000193 0.0 364 -365 0.0156519412994385 0.0199999999999818 0.0199999999999818 0.0 365 -366 0.015625 0.0200000000000102 0.0200000000000102 0.0 366 -367 0.0161309242248535 0.00999999999999091 0.00999999999999091 0.0 367 -368 0.0406661033630371 0.039999999999992 0.039999999999992 0.0 368 -369 0.016185998916626 0.0200000000000102 0.0200000000000102 0.0 369 -370 0.0159850120544434 0.00999999999999091 0.00999999999999091 0.0 370 -371 0.0159509181976318 0.0200000000000102 0.0200000000000102 0.0 371 -372 0.015861988067627 0.0200000000000102 0.0200000000000102 0.0 372 -373 0.0157780647277832 0.00999999999999091 0.00999999999999091 0.0 373 -374 0.019244909286499 0.0200000000000102 0.0200000000000102 0.0 374 -375 0.0423779487609863 0.039999999999992 0.039999999999992 0.0 375 -376 0.0160589218139648 0.0200000000000102 0.0200000000000102 0.0 376 -377 0.0159640312194824 0.0199999999999818 0.0199999999999818 0.0 377 -378 0.0158970355987549 0.0100000000000193 0.0100000000000193 0.0 378 -379 0.0158810615539551 0.0199999999999818 0.0199999999999818 0.0 379 -380 0.0159378051757812 0.0100000000000193 0.0100000000000193 0.0 380 -381 0.0156619548797607 0.0199999999999818 0.0199999999999818 0.0 381 -382 0.0407819747924805 0.039999999999992 0.039999999999992 0.0 382 -383 0.0159389972686768 0.0200000000000102 0.0200000000000102 0.0 383 -384 0.0160889625549316 0.00999999999999091 0.00999999999999091 0.0 384 -385 0.0158150196075439 0.0200000000000102 0.0200000000000102 0.0 385 -386 0.0164110660552979 0.0200000000000102 0.0200000000000102 0.0 386 -387 0.0180950164794922 0.00999999999999091 0.00999999999999091 0.0 387 -388 0.0157089233398438 0.0200000000000102 0.0200000000000102 0.0 388 -389 0.0411288738250732 0.039999999999992 0.039999999999992 0.0 389 -390 0.0159080028533936 0.0200000000000102 0.0200000000000102 0.0 390 -391 0.0158810615539551 0.00999999999999091 0.00999999999999091 0.0 391 -392 0.0157151222229004 0.0200000000000102 0.0200000000000102 0.0 392 -393 0.0156629085540771 0.00999999999999091 0.00999999999999091 0.0 393 -394 0.0157067775726318 0.0199999999999818 0.0199999999999818 0.0 394 -395 0.0479769706726074 0.0500000000000114 0.0500000000000114 0.0 395 -396 0.01609206199646 0.00999999999999091 0.00999999999999091 0.0 396 -397 0.0158951282501221 0.0200000000000102 0.0200000000000102 0.0 397 -398 0.0161418914794922 0.00999999999999091 0.00999999999999091 0.0 398 -399 0.0201709270477295 0.0200000000000102 0.0200000000000102 0.0 399 -400 0.0157439708709717 0.0100000000000193 0.0100000000000193 0.0 400 -401 0.0157320499420166 0.0199999999999818 0.0199999999999818 0.0 401 -402 0.0412960052490234 0.0400000000000205 0.0400000000000205 0.0 402 -403 0.0162639617919922 0.00999999999999091 0.00999999999999091 0.0 403 -404 0.0161092281341553 0.0200000000000102 0.0200000000000102 0.0 404 -405 0.0159099102020264 0.0199999999999818 0.0199999999999818 0.0 405 -406 0.0157670974731445 0.00999999999999091 0.00999999999999091 0.0 406 -407 0.0156850814819336 0.0200000000000102 0.0200000000000102 0.0 407 -408 0.0156769752502441 0.00999999999999091 0.00999999999999091 0.0 408 -409 0.0408320426940918 0.0400000000000205 0.0400000000000205 0.0 409 -410 0.0158789157867432 0.0199999999999818 0.0199999999999818 0.0 410 -411 0.0202319622039795 0.0200000000000102 0.0200000000000102 0.0 411 -412 0.0158510208129883 0.0200000000000102 0.0200000000000102 0.0 412 -413 0.0156679153442383 0.00999999999999091 0.00999999999999091 0.0 413 -414 0.0159661769866943 0.0200000000000102 0.0200000000000102 0.0 414 -415 0.0161230564117432 0.00999999999999091 0.00999999999999091 0.0 415 -416 0.0410380363464355 0.0500000000000114 0.0500000000000114 0.0 416 -417 0.0158960819244385 0.00999999999999091 0.00999999999999091 0.0 417 -418 0.0158650875091553 0.0199999999999818 0.0199999999999818 0.0 418 -419 0.0157840251922607 0.0100000000000193 0.0100000000000193 0.0 419 -420 0.0155539512634277 0.0199999999999818 0.0199999999999818 0.0 420 -421 0.0157678127288818 0.0100000000000193 0.0100000000000193 0.0 421 -422 0.0412240028381348 0.0499999999999829 0.0499999999999829 0.0 422 -423 0.0191640853881836 0.0100000000000193 0.0100000000000193 0.0 423 -424 0.0165059566497803 0.0199999999999818 0.0199999999999818 0.0 424 -425 0.0159070491790771 0.0200000000000102 0.0200000000000102 0.0 425 -426 0.0158569812774658 0.00999999999999091 0.00999999999999091 0.0 426 -427 0.0156240463256836 0.0200000000000102 0.0200000000000102 0.0 427 -428 0.0156888961791992 0.00999999999999091 0.00999999999999091 0.0 428 -429 0.0410318374633789 0.0500000000000114 0.0500000000000114 0.0 429 -430 0.0159420967102051 0.00999999999999091 0.00999999999999091 0.0 430 -431 0.0159289836883545 0.0200000000000102 0.0200000000000102 0.0 431 -432 0.0157718658447266 0.00999999999999091 0.00999999999999091 0.0 432 -433 0.0156440734863281 0.0200000000000102 0.0200000000000102 0.0 433 -434 0.0156459808349609 0.00999999999999091 0.00999999999999091 0.0 434 -435 0.0156629085540771 0.0200000000000102 0.0200000000000102 0.0 435 -436 0.043510913848877 0.039999999999992 0.039999999999992 0.0 436 -437 0.0160140991210938 0.0200000000000102 0.0200000000000102 0.0 437 -438 0.015984058380127 0.0199999999999818 0.0199999999999818 0.0 438 -439 0.0160889625549316 0.0100000000000193 0.0100000000000193 0.0 439 -440 0.0160849094390869 0.0199999999999818 0.0199999999999818 0.0 440 -441 0.015700101852417 0.0100000000000193 0.0100000000000193 0.0 441 -442 0.0157110691070557 0.0199999999999818 0.0199999999999818 0.0 442 -443 0.0212619304656982 0.0199999999999818 0.0199999999999818 0.0 443 -444 0.0226690769195557 0.0200000000000102 0.0200000000000102 0.0 444 -445 0.0157680511474609 0.0200000000000102 0.0200000000000102 0.0 445 -446 0.015690803527832 0.00999999999999091 0.00999999999999091 0.0 446 -447 0.015653133392334 0.0200000000000102 0.0200000000000102 0.0 447 -448 0.0156688690185547 0.0199999999999818 0.0199999999999818 0.0 448 -449 0.0439548492431641 0.0400000000000205 0.0400000000000205 0.0 449 -450 0.0160410404205322 0.0199999999999818 0.0199999999999818 0.0 450 -451 0.0159320831298828 0.0100000000000193 0.0100000000000193 0.0 451 -452 0.0157608985900879 0.0199999999999818 0.0199999999999818 0.0 452 -453 0.0166118144989014 0.0100000000000193 0.0100000000000193 0.0 453 -454 0.0155959129333496 0.0199999999999818 0.0199999999999818 0.0 454 -455 0.0157961845397949 0.0200000000000102 0.0200000000000102 0.0 455 -456 0.0407929420471191 0.039999999999992 0.039999999999992 0.0 456 -457 0.0160069465637207 0.00999999999999091 0.00999999999999091 0.0 457 -458 0.015955924987793 0.0200000000000102 0.0200000000000102 0.0 458 -459 0.015923023223877 0.0200000000000102 0.0200000000000102 0.0 459 -460 0.0157721042633057 0.00999999999999091 0.00999999999999091 0.0 460 -461 0.0170860290527344 0.0200000000000102 0.0200000000000102 0.0 461 -462 0.0182251930236816 0.0199999999999818 0.0199999999999818 0.0 462 -463 0.0413410663604736 0.0400000000000205 0.0400000000000205 0.0 463 -464 0.0165669918060303 0.00999999999999091 0.00999999999999091 0.0 464 -465 0.0159049034118652 0.0200000000000102 0.0200000000000102 0.0 465 -466 0.0158209800720215 0.0199999999999818 0.0199999999999818 0.0 466 -467 0.0156691074371338 0.0100000000000193 0.0100000000000193 0.0 467 -468 0.0155670642852783 0.0199999999999818 0.0199999999999818 0.0 468 -469 0.0407600402832031 0.039999999999992 0.039999999999992 0.0 469 -470 0.0160460472106934 0.0100000000000193 0.0100000000000193 0.0 470 -471 0.0159029960632324 0.0199999999999818 0.0199999999999818 0.0 471 -472 0.0159380435943604 0.0200000000000102 0.0200000000000102 0.0 472 -473 0.0165109634399414 0.00999999999999091 0.00999999999999091 0.0 473 -474 0.0189468860626221 0.0200000000000102 0.0200000000000102 0.0 474 -475 0.0156781673431396 0.0200000000000102 0.0200000000000102 0.0 475 -476 0.0406448841094971 0.039999999999992 0.039999999999992 0.0 476 -477 0.0160341262817383 0.00999999999999091 0.00999999999999091 0.0 477 -478 0.0160388946533203 0.0200000000000102 0.0200000000000102 0.0 478 -479 0.0163199901580811 0.0200000000000102 0.0200000000000102 0.0 479 -480 0.0158259868621826 0.00999999999999091 0.00999999999999091 0.0 480 -481 0.0156810283660889 0.0199999999999818 0.0199999999999818 0.0 481 -482 0.0157148838043213 0.0100000000000193 0.0100000000000193 0.0 482 -483 0.0412290096282959 0.039999999999992 0.039999999999992 0.0 483 -484 0.0160889625549316 0.0200000000000102 0.0200000000000102 0.0 484 -485 0.0160059928894043 0.0199999999999818 0.0199999999999818 0.0 485 -486 0.0181820392608643 0.0200000000000102 0.0200000000000102 0.0 486 -487 0.0166311264038086 0.00999999999999091 0.00999999999999091 0.0 487 -488 0.0156669616699219 0.0200000000000102 0.0200000000000102 0.0 488 -489 0.0157821178436279 0.00999999999999091 0.00999999999999091 0.0 489 -490 0.0410869121551514 0.0400000000000205 0.0400000000000205 0.0 490 -491 0.0159239768981934 0.0199999999999818 0.0199999999999818 0.0 491 -492 0.0158579349517822 0.0200000000000102 0.0200000000000102 0.0 492 -493 0.0157217979431152 0.00999999999999091 0.00999999999999091 0.0 493 -494 0.021359920501709 0.0200000000000102 0.0200000000000102 0.0 494 -495 0.0177481174468994 0.0199999999999818 0.0199999999999818 0.0 495 -496 0.0405080318450928 0.0400000000000205 0.0400000000000205 0.0 496 -497 0.0161361694335938 0.0199999999999818 0.0199999999999818 0.0 497 -498 0.0198690891265869 0.0200000000000102 0.0200000000000102 0.0 498 -499 0.0160260200500488 0.00999999999999091 0.00999999999999091 0.0 499 -500 0.0157639980316162 0.0200000000000102 0.0200000000000102 0.0 500 -501 0.0156447887420654 0.0200000000000102 0.0200000000000102 0.0 501 -502 0.0156769752502441 0.00999999999999091 0.00999999999999091 0.0 502 -503 0.0437228679656982 0.039999999999992 0.039999999999992 0.0 503 -504 0.0161030292510986 0.0200000000000102 0.0200000000000102 0.0 504 -505 0.016016960144043 0.0199999999999818 0.0199999999999818 0.0 505 -506 0.0158760547637939 0.0100000000000193 0.0100000000000193 0.0 506 -507 0.01578688621521 0.0199999999999818 0.0199999999999818 0.0 507 -508 0.0156271457672119 0.0100000000000193 0.0100000000000193 0.0 508 -509 0.0157058238983154 0.0199999999999818 0.0199999999999818 0.0 509 -510 0.0442900657653809 0.0400000000000205 0.0400000000000205 0.0 510 -511 0.017132043838501 0.0199999999999818 0.0199999999999818 0.0 511 -512 0.0159881114959717 0.0200000000000102 0.0200000000000102 0.0 512 -513 0.0160439014434814 0.00999999999999091 0.00999999999999091 0.0 513 -514 0.0164890289306641 0.0200000000000102 0.0200000000000102 0.0 514 -515 0.0156888961791992 0.0200000000000102 0.0200000000000102 0.0 515 -516 0.040363073348999 0.039999999999992 0.039999999999992 0.0 516 -517 0.0161979198455811 0.00999999999999091 0.00999999999999091 0.0 517 -518 0.0159780979156494 0.0200000000000102 0.0200000000000102 0.0 518 -519 0.0159690380096436 0.00999999999999091 0.00999999999999091 0.0 519 -520 0.015887975692749 0.0200000000000102 0.0200000000000102 0.0 520 -521 0.0156509876251221 0.0199999999999818 0.0199999999999818 0.0 521 -522 0.0156340599060059 0.0100000000000193 0.0100000000000193 0.0 522 -523 0.0451259613037109 0.0499999999999829 0.0499999999999829 0.0 523 -524 0.0159039497375488 0.0100000000000193 0.0100000000000193 0.0 524 -525 0.0158360004425049 0.0199999999999818 0.0199999999999818 0.0 525 -526 0.0157630443572998 0.0100000000000193 0.0100000000000193 0.0 526 -527 0.0156168937683105 0.0199999999999818 0.0199999999999818 0.0 527 -528 0.0156149864196777 0.0200000000000102 0.0200000000000102 0.0 528 -529 0.015984058380127 0.00999999999999091 0.00999999999999091 0.0 529 -530 0.040830135345459 0.039999999999992 0.039999999999992 0.0 530 -531 0.0160219669342041 0.0200000000000102 0.0200000000000102 0.0 531 -532 0.015923023223877 0.0200000000000102 0.0200000000000102 0.0 532 -533 0.0159180164337158 0.00999999999999091 0.00999999999999091 0.0 533 -534 0.0157890319824219 0.0200000000000102 0.0200000000000102 0.0 534 -535 0.0156989097595215 0.00999999999999091 0.00999999999999091 0.0 535 -536 0.043813943862915 0.0500000000000114 0.0500000000000114 0.0 536 -537 0.0161550045013428 0.00999999999999091 0.00999999999999091 0.0 537 -538 0.0161418914794922 0.0200000000000102 0.0200000000000102 0.0 538 -539 0.016010046005249 0.00999999999999091 0.00999999999999091 0.0 539 -540 0.015833854675293 0.0100000000000193 0.0100000000000193 0.0 540 -541 0.0156919956207275 0.0199999999999818 0.0199999999999818 0.0 541 -542 0.0156600475311279 0.0100000000000193 0.0100000000000193 0.0 542 -543 0.0471100807189941 0.0499999999999829 0.0499999999999829 0.0 543 -544 0.0160348415374756 0.0200000000000102 0.0200000000000102 0.0 544 -545 0.0160539150238037 0.00999999999999091 0.00999999999999091 0.0 545 -546 0.0158519744873047 0.0200000000000102 0.0200000000000102 0.0 546 -547 0.0158119201660156 0.00999999999999091 0.00999999999999091 0.0 547 -548 0.0178709030151367 0.0200000000000102 0.0200000000000102 0.0 548 -549 0.0169069766998291 0.0199999999999818 0.0199999999999818 0.0 549 -550 0.0407388210296631 0.0400000000000205 0.0400000000000205 0.0 550 -551 0.0159931182861328 0.0199999999999818 0.0199999999999818 0.0 551 -552 0.0167689323425293 0.0100000000000193 0.0100000000000193 0.0 552 -553 0.015841007232666 0.0199999999999818 0.0199999999999818 0.0 553 -554 0.0158300399780273 0.0100000000000193 0.0100000000000193 0.0 554 -555 0.0156581401824951 0.0199999999999818 0.0199999999999818 0.0 555 -556 0.0406780242919922 0.039999999999992 0.039999999999992 0.0 556 -557 0.0162060260772705 0.0200000000000102 0.0200000000000102 0.0 557 -558 0.0160999298095703 0.00999999999999091 0.00999999999999091 0.0 558 -559 0.0159580707550049 0.0200000000000102 0.0200000000000102 0.0 559 -560 0.0159261226654053 0.00999999999999091 0.00999999999999091 0.0 560 -561 0.0199720859527588 0.0200000000000102 0.0200000000000102 0.0 561 -562 0.0157170295715332 0.0200000000000102 0.0200000000000102 0.0 562 -563 0.041780948638916 0.039999999999992 0.039999999999992 0.0 563 -564 0.0160281658172607 0.0200000000000102 0.0200000000000102 0.0 564 -565 0.0160350799560547 0.00999999999999091 0.00999999999999091 0.0 565 -566 0.0158600807189941 0.0200000000000102 0.0200000000000102 0.0 566 -567 0.0157890319824219 0.0199999999999818 0.0199999999999818 0.0 567 -568 0.01568603515625 0.00999999999999091 0.00999999999999091 0.0 568 -569 0.0157349109649658 0.0200000000000102 0.0200000000000102 0.0 569 -570 0.0407240390777588 0.039999999999992 0.039999999999992 0.0 570 -571 0.0159690380096436 0.0100000000000193 0.0100000000000193 0.0 571 -572 0.0166740417480469 0.0199999999999818 0.0199999999999818 0.0 572 -573 0.0183789730072021 0.0200000000000102 0.0200000000000102 0.0 573 -574 0.0158569812774658 0.0200000000000102 0.0200000000000102 0.0 574 -575 0.0156340599060059 0.00999999999999091 0.00999999999999091 0.0 575 -576 0.0408451557159424 0.039999999999992 0.039999999999992 0.0 576 -577 0.0160448551177979 0.0200000000000102 0.0200000000000102 0.0 577 -578 0.0162789821624756 0.00999999999999091 0.00999999999999091 0.0 578 -579 0.0159311294555664 0.0200000000000102 0.0200000000000102 0.0 579 -580 0.0158848762512207 0.0199999999999818 0.0199999999999818 0.0 580 -581 0.0157999992370605 0.0100000000000193 0.0100000000000193 0.0 581 -582 0.0156741142272949 0.0199999999999818 0.0199999999999818 0.0 582 -583 0.0409140586853027 0.0400000000000205 0.0400000000000205 0.0 583 -584 0.0159211158752441 0.0199999999999818 0.0199999999999818 0.0 584 -585 0.0184950828552246 0.0100000000000193 0.0100000000000193 0.0 585 -586 0.0168490409851074 0.0199999999999818 0.0199999999999818 0.0 586 -587 0.0156459808349609 0.0200000000000102 0.0200000000000102 0.0 587 -588 0.0156338214874268 0.00999999999999091 0.00999999999999091 0.0 588 -589 0.0159139633178711 0.0200000000000102 0.0200000000000102 0.0 589 -590 0.0407509803771973 0.039999999999992 0.039999999999992 0.0 590 -591 0.0159850120544434 0.0100000000000193 0.0100000000000193 0.0 591 -592 0.0159389972686768 0.0199999999999818 0.0199999999999818 0.0 592 -593 0.0213720798492432 0.0200000000000102 0.0200000000000102 0.0 593 -594 0.0177850723266602 0.0199999999999818 0.0199999999999818 0.0 594 -595 0.0157310962677002 0.0200000000000102 0.0200000000000102 0.0 595 -596 0.0403420925140381 0.039999999999992 0.039999999999992 0.0 596 -597 0.0190529823303223 0.0200000000000102 0.0200000000000102 0.0 597 -598 0.0169448852539062 0.00999999999999091 0.00999999999999091 0.0 598 -599 0.0159680843353271 0.0200000000000102 0.0200000000000102 0.0 599 -600 0.0158801078796387 0.00999999999999091 0.00999999999999091 0.0 600 -601 0.0156979560852051 0.0200000000000102 0.0200000000000102 0.0 601 -602 0.0156271457672119 0.0200000000000102 0.0200000000000102 0.0 602 -603 0.0415568351745605 0.039999999999992 0.039999999999992 0.0 603 -604 0.0159718990325928 0.00999999999999091 0.00999999999999091 0.0 604 -605 0.0159180164337158 0.0200000000000102 0.0200000000000102 0.0 605 -606 0.0158648490905762 0.0199999999999818 0.0199999999999818 0.0 606 -607 0.0156810283660889 0.0100000000000193 0.0100000000000193 0.0 607 -608 0.0156228542327881 0.0199999999999818 0.0199999999999818 0.0 608 -609 0.0157201290130615 0.0100000000000193 0.0100000000000193 0.0 609 -610 0.0439960956573486 0.0499999999999829 0.0499999999999829 0.0 610 -611 0.0160610675811768 0.0100000000000193 0.0100000000000193 0.0 611 -612 0.0161979198455811 0.0199999999999818 0.0199999999999818 0.0 612 -613 0.0165619850158691 0.0200000000000102 0.0200000000000102 0.0 613 -614 0.0157890319824219 0.00999999999999091 0.00999999999999091 0.0 614 -615 0.0156469345092773 0.0200000000000102 0.0200000000000102 0.0 615 -616 0.0402541160583496 0.039999999999992 0.039999999999992 0.0 616 -617 0.0161638259887695 0.00999999999999091 0.00999999999999091 0.0 617 -618 0.0160119533538818 0.0200000000000102 0.0200000000000102 0.0 618 -619 0.0159289836883545 0.0200000000000102 0.0200000000000102 0.0 619 -620 0.0159239768981934 0.00999999999999091 0.00999999999999091 0.0 620 -621 0.0156819820404053 0.0200000000000102 0.0200000000000102 0.0 621 -622 0.0163209438323975 0.00999999999999091 0.00999999999999091 0.0 622 -623 0.0430841445922852 0.0500000000000114 0.0500000000000114 0.0 623 -624 0.0160331726074219 0.00999999999999091 0.00999999999999091 0.0 624 -625 0.0159151554107666 0.0200000000000102 0.0200000000000102 0.0 625 -626 0.0158572196960449 0.00999999999999091 0.00999999999999091 0.0 626 -627 0.0157380104064941 0.0100000000000193 0.0100000000000193 0.0 627 -628 0.015657901763916 0.0199999999999818 0.0199999999999818 0.0 628 -629 0.016016960144043 0.0100000000000193 0.0100000000000193 0.0 629 -630 0.0407459735870361 0.039999999999992 0.039999999999992 0.0 630 -631 0.0159480571746826 0.0199999999999818 0.0199999999999818 0.0 631 -632 0.0159869194030762 0.0200000000000102 0.0200000000000102 0.0 632 -633 0.0159099102020264 0.00999999999999091 0.00999999999999091 0.0 633 -634 0.0157899856567383 0.0200000000000102 0.0200000000000102 0.0 634 -635 0.0156879425048828 0.00999999999999091 0.00999999999999091 0.0 635 -636 0.0428619384765625 0.0500000000000114 0.0500000000000114 0.0 636 -637 0.0161869525909424 0.00999999999999091 0.00999999999999091 0.0 637 -638 0.0162138938903809 0.0200000000000102 0.0200000000000102 0.0 638 -639 0.0158801078796387 0.00999999999999091 0.00999999999999091 0.0 639 -640 0.0158560276031494 0.0200000000000102 0.0200000000000102 0.0 640 -641 0.0156440734863281 0.00999999999999091 0.00999999999999091 0.0 641 -642 0.0156350135803223 0.0200000000000102 0.0200000000000102 0.0 642 -643 0.047083854675293 0.0499999999999829 0.0499999999999829 0.0 643 -644 0.0159060955047607 0.0100000000000193 0.0100000000000193 0.0 644 -645 0.0158288478851318 0.0199999999999818 0.0199999999999818 0.0 645 -646 0.0157370567321777 0.0200000000000102 0.0200000000000102 0.0 646 -647 0.0155889987945557 0.00999999999999091 0.00999999999999091 0.0 647 -648 0.0187828540802002 0.0200000000000102 0.0200000000000102 0.0 648 -649 0.0158119201660156 0.0200000000000102 0.0200000000000102 0.0 649 -650 0.0408198833465576 0.039999999999992 0.039999999999992 0.0 650 -651 0.0160138607025146 0.00999999999999091 0.00999999999999091 0.0 651 -652 0.0169661045074463 0.0200000000000102 0.0200000000000102 0.0 652 -653 0.0158448219299316 0.0200000000000102 0.0200000000000102 0.0 653 -654 0.0157639980316162 0.00999999999999091 0.00999999999999091 0.0 654 -655 0.0156838893890381 0.0199999999999818 0.0199999999999818 0.0 655 -656 0.0403389930725098 0.0400000000000205 0.0400000000000205 0.0 656 -657 0.0161681175231934 0.00999999999999091 0.00999999999999091 0.0 657 -658 0.015963077545166 0.0200000000000102 0.0200000000000102 0.0 658 -659 0.0159058570861816 0.0199999999999818 0.0199999999999818 0.0 659 -660 0.0177428722381592 0.0100000000000193 0.0100000000000193 0.0 660 -661 0.0171470642089844 0.0199999999999818 0.0199999999999818 0.0 661 -662 0.015761137008667 0.0200000000000102 0.0200000000000102 0.0 662 -663 0.0421710014343262 0.039999999999992 0.039999999999992 0.0 663 -664 0.0159869194030762 0.0100000000000193 0.0100000000000193 0.0 664 -665 0.0158960819244385 0.0199999999999818 0.0199999999999818 0.0 665 -666 0.0158309936523438 0.0200000000000102 0.0200000000000102 0.0 666 -667 0.0156588554382324 0.00999999999999091 0.00999999999999091 0.0 667 -668 0.0155930519104004 0.0200000000000102 0.0200000000000102 0.0 668 -669 0.0157339572906494 0.00999999999999091 0.00999999999999091 0.0 669 -670 0.0408949851989746 0.039999999999992 0.039999999999992 0.0 670 -671 0.0166690349578857 0.0200000000000102 0.0200000000000102 0.0 671 -672 0.015967845916748 0.0200000000000102 0.0200000000000102 0.0 672 -673 0.0183408260345459 0.0199999999999818 0.0199999999999818 0.0 673 -674 0.0157818794250488 0.0100000000000193 0.0100000000000193 0.0 674 -675 0.0156641006469727 0.0199999999999818 0.0199999999999818 0.0 675 -676 0.0403289794921875 0.0400000000000205 0.0400000000000205 0.0 676 -677 0.0160641670227051 0.00999999999999091 0.00999999999999091 0.0 677 -678 0.0162630081176758 0.0200000000000102 0.0200000000000102 0.0 678 -679 0.0158939361572266 0.0199999999999818 0.0199999999999818 0.0 679 -680 0.0158121585845947 0.00999999999999091 0.00999999999999091 0.0 680 -681 0.0155899524688721 0.0200000000000102 0.0200000000000102 0.0 681 -682 0.0156369209289551 0.00999999999999091 0.00999999999999091 0.0 682 -683 0.0411529541015625 0.0400000000000205 0.0400000000000205 0.0 683 -684 0.0160119533538818 0.0199999999999818 0.0199999999999818 0.0 684 -685 0.0188088417053223 0.0200000000000102 0.0200000000000102 0.0 685 -686 0.0159080028533936 0.0200000000000102 0.0200000000000102 0.0 686 -687 0.0157148838043213 0.00999999999999091 0.00999999999999091 0.0 687 -688 0.0155959129333496 0.0200000000000102 0.0200000000000102 0.0 688 -689 0.0412189960479736 0.039999999999992 0.039999999999992 0.0 689 -690 0.015995979309082 0.00999999999999091 0.00999999999999091 0.0 690 -691 0.0159540176391602 0.0200000000000102 0.0200000000000102 0.0 691 -692 0.015949010848999 0.0199999999999818 0.0199999999999818 0.0 692 -693 0.0234458446502686 0.0200000000000102 0.0200000000000102 0.0 693 -694 0.0157320499420166 0.0200000000000102 0.0200000000000102 0.0 694 -695 0.0157339572906494 0.00999999999999091 0.00999999999999091 0.0 695 -696 0.0404260158538818 0.039999999999992 0.039999999999992 0.0 696 -697 0.0190789699554443 0.0200000000000102 0.0200000000000102 0.0 697 -698 0.0159289836883545 0.0200000000000102 0.0200000000000102 0.0 698 -699 0.0157830715179443 0.00999999999999091 0.00999999999999091 0.0 699 -700 0.0156319141387939 0.0200000000000102 0.0200000000000102 0.0 700 -701 0.01556396484375 0.00999999999999091 0.00999999999999091 0.0 701 -702 0.0156660079956055 0.0200000000000102 0.0200000000000102 0.0 702 -703 0.0413651466369629 0.039999999999992 0.039999999999992 0.0 703 -704 0.0159580707550049 0.0199999999999818 0.0199999999999818 0.0 704 -705 0.0158989429473877 0.0100000000000193 0.0100000000000193 0.0 705 -706 0.0158150196075439 0.0199999999999818 0.0199999999999818 0.0 706 -707 0.0156781673431396 0.0100000000000193 0.0100000000000193 0.0 707 -708 0.0156269073486328 0.0199999999999818 0.0199999999999818 0.0 708 -709 0.041424036026001 0.0400000000000205 0.0400000000000205 0.0 709 -710 0.0184199810028076 0.0199999999999818 0.0199999999999818 0.0 710 -711 0.0159978866577148 0.0200000000000102 0.0200000000000102 0.0 711 -712 0.0160419940948486 0.00999999999999091 0.00999999999999091 0.0 712 -713 0.016589879989624 0.0200000000000102 0.0200000000000102 0.0 713 -714 0.0156559944152832 0.0200000000000102 0.0200000000000102 0.0 714 -715 0.0157039165496826 0.00999999999999091 0.00999999999999091 0.0 715 -716 0.0408508777618408 0.039999999999992 0.039999999999992 0.0 716 -717 0.0159609317779541 0.0200000000000102 0.0200000000000102 0.0 717 -718 0.0159869194030762 0.00999999999999091 0.00999999999999091 0.0 718 -719 0.0159101486206055 0.0200000000000102 0.0200000000000102 0.0 719 -720 0.0156970024108887 0.0199999999999818 0.0199999999999818 0.0 720 -721 0.0155429840087891 0.0100000000000193 0.0100000000000193 0.0 721 -722 0.0163400173187256 0.0199999999999818 0.0199999999999818 0.0 722 -723 0.0429699420928955 0.0400000000000205 0.0400000000000205 0.0 723 -724 0.0160400867462158 0.0199999999999818 0.0199999999999818 0.0 724 -725 0.0159778594970703 0.0100000000000193 0.0100000000000193 0.0 725 -726 0.015826940536499 0.0199999999999818 0.0199999999999818 0.0 726 -727 0.0156888961791992 0.0100000000000193 0.0100000000000193 0.0 727 -728 0.0159649848937988 0.0199999999999818 0.0199999999999818 0.0 728 -729 0.0405631065368652 0.039999999999992 0.039999999999992 0.0 729 -730 0.0161111354827881 0.0200000000000102 0.0200000000000102 0.0 730 -731 0.0158760547637939 0.00999999999999091 0.00999999999999091 0.0 731 -732 0.0159549713134766 0.0200000000000102 0.0200000000000102 0.0 732 -733 0.0157599449157715 0.00999999999999091 0.00999999999999091 0.0 733 -734 0.0157549381256104 0.0200000000000102 0.0200000000000102 0.0 734 -735 0.0156841278076172 0.0200000000000102 0.0200000000000102 0.0 735 -736 0.0429198741912842 0.039999999999992 0.039999999999992 0.0 736 -737 0.0159552097320557 0.0200000000000102 0.0200000000000102 0.0 737 -738 0.016150951385498 0.00999999999999091 0.00999999999999091 0.0 738 -739 0.0157721042633057 0.0200000000000102 0.0200000000000102 0.0 739 -740 0.0156459808349609 0.00999999999999091 0.00999999999999091 0.0 740 -741 0.0156309604644775 0.0200000000000102 0.0200000000000102 0.0 741 -742 0.0458109378814697 0.039999999999992 0.039999999999992 0.0 742 -743 0.0170071125030518 0.0199999999999818 0.0199999999999818 0.0 743 -744 0.0160090923309326 0.0200000000000102 0.0200000000000102 0.0 744 -745 0.0158901214599609 0.00999999999999091 0.00999999999999091 0.0 745 -746 0.0158569812774658 0.0200000000000102 0.0200000000000102 0.0 746 -747 0.0156040191650391 0.0200000000000102 0.0200000000000102 0.0 747 -748 0.0188460350036621 0.00999999999999091 0.00999999999999091 0.0 748 -749 0.0407531261444092 0.0500000000000114 0.0500000000000114 0.0 749 -750 0.0160620212554932 0.00999999999999091 0.00999999999999091 0.0 750 -751 0.0160109996795654 0.0200000000000102 0.0200000000000102 0.0 751 -752 0.0167930126190186 0.00999999999999091 0.00999999999999091 0.0 752 -753 0.0158519744873047 0.0200000000000102 0.0200000000000102 0.0 753 -754 0.0157589912414551 0.0199999999999818 0.0199999999999818 0.0 754 -755 0.0156669616699219 0.00999999999999091 0.00999999999999091 0.0 755 -756 0.0408079624176025 0.0400000000000205 0.0400000000000205 0.0 756 -757 0.0160200595855713 0.0199999999999818 0.0199999999999818 0.0 757 -758 0.015981912612915 0.0100000000000193 0.0100000000000193 0.0 758 -759 0.0158510208129883 0.0199999999999818 0.0199999999999818 0.0 759 -760 0.0184319019317627 0.0200000000000102 0.0200000000000102 0.0 760 -761 0.0160219669342041 0.0200000000000102 0.0200000000000102 0.0 761 -762 0.0413029193878174 0.039999999999992 0.039999999999992 0.0 762 -763 0.0162460803985596 0.00999999999999091 0.00999999999999091 0.0 763 -764 0.0159189701080322 0.0200000000000102 0.0200000000000102 0.0 764 -765 0.0158321857452393 0.00999999999999091 0.00999999999999091 0.0 765 -766 0.0157649517059326 0.0200000000000102 0.0200000000000102 0.0 766 -767 0.0156459808349609 0.0199999999999818 0.0199999999999818 0.0 767 -768 0.0156371593475342 0.0100000000000193 0.0100000000000193 0.0 768 -769 0.042356014251709 0.039999999999992 0.039999999999992 0.0 769 -770 0.0159518718719482 0.0200000000000102 0.0200000000000102 0.0 770 -771 0.0165510177612305 0.0199999999999818 0.0199999999999818 0.0 771 -772 0.0166161060333252 0.0100000000000193 0.0100000000000193 0.0 772 -773 0.0192360877990723 0.0199999999999818 0.0199999999999818 0.0 773 -774 0.0156729221343994 0.0200000000000102 0.0200000000000102 0.0 774 -775 0.0404140949249268 0.039999999999992 0.039999999999992 0.0 775 -776 0.0159680843353271 0.0100000000000193 0.0100000000000193 0.0 776 -777 0.0160880088806152 0.0199999999999818 0.0199999999999818 0.0 777 -778 0.0158729553222656 0.0200000000000102 0.0200000000000102 0.0 778 -779 0.0157761573791504 0.00999999999999091 0.00999999999999091 0.0 779 -780 0.0156121253967285 0.0200000000000102 0.0200000000000102 0.0 780 -781 0.0156919956207275 0.00999999999999091 0.00999999999999091 0.0 781 -782 0.0405950546264648 0.039999999999992 0.039999999999992 0.0 782 -783 0.0157918930053711 0.0200000000000102 0.0200000000000102 0.0 783 -784 0.0157120227813721 0.0200000000000102 0.0200000000000102 0.0 784 -785 0.018751859664917 0.00999999999999091 0.00999999999999091 0.0 785 -786 0.0155041217803955 0.0200000000000102 0.0200000000000102 0.0 786 -787 0.0158028602600098 0.0199999999999818 0.0199999999999818 0.0 787 -788 0.0158569812774658 0.0100000000000193 0.0100000000000193 0.0 788 -789 0.0412540435791016 0.039999999999992 0.039999999999992 0.0 789 -790 0.0160260200500488 0.0200000000000102 0.0200000000000102 0.0 790 -791 0.0159499645233154 0.0199999999999818 0.0199999999999818 0.0 791 -792 0.019320011138916 0.00999999999999091 0.00999999999999091 0.0 792 -793 0.0201430320739746 0.0200000000000102 0.0200000000000102 0.0 793 -794 0.0157289505004883 0.0200000000000102 0.0200000000000102 0.0 794 -795 0.0402889251708984 0.039999999999992 0.039999999999992 0.0 795 -796 0.0161571502685547 0.0200000000000102 0.0200000000000102 0.0 796 -797 0.0203540325164795 0.0199999999999818 0.0199999999999818 0.0 797 -798 0.0160300731658936 0.0100000000000193 0.0100000000000193 0.0 798 -799 0.0157592296600342 0.0199999999999818 0.0199999999999818 0.0 799 -800 0.0156340599060059 0.0200000000000102 0.0200000000000102 0.0 800 -801 0.0156660079956055 0.00999999999999091 0.00999999999999091 0.0 801 -802 0.0413990020751953 0.0400000000000205 0.0400000000000205 0.0 802 -803 0.0160489082336426 0.0199999999999818 0.0199999999999818 0.0 803 -804 0.0158998966217041 0.00999999999999091 0.00999999999999091 0.0 804 -805 0.0157411098480225 0.0200000000000102 0.0200000000000102 0.0 805 -806 0.01564621925354 0.0200000000000102 0.0200000000000102 0.0 806 -807 0.0156128406524658 0.00999999999999091 0.00999999999999091 0.0 807 -808 0.0405199527740479 0.039999999999992 0.039999999999992 0.0 808 -809 0.0189261436462402 0.0200000000000102 0.0200000000000102 0.0 809 -810 0.0164599418640137 0.0200000000000102 0.0200000000000102 0.0 810 -811 0.0159981250762939 0.00999999999999091 0.00999999999999091 0.0 811 -812 0.0159931182861328 0.0200000000000102 0.0200000000000102 0.0 812 -813 0.0164968967437744 0.0199999999999818 0.0199999999999818 0.0 813 -814 0.0156979560852051 0.0100000000000193 0.0100000000000193 0.0 814 -815 0.0407021045684814 0.039999999999992 0.039999999999992 0.0 815 -816 0.0162220001220703 0.0199999999999818 0.0199999999999818 0.0 816 -817 0.0161950588226318 0.0200000000000102 0.0200000000000102 0.0 817 -818 0.016150951385498 0.00999999999999091 0.00999999999999091 0.0 818 -819 0.0162560939788818 0.0200000000000102 0.0200000000000102 0.0 819 -820 0.0156610012054443 0.00999999999999091 0.00999999999999091 0.0 820 -821 0.0164270401000977 0.0200000000000102 0.0200000000000102 0.0 821 -822 0.0451018810272217 0.0500000000000114 0.0500000000000114 0.0 822 -823 0.0159950256347656 0.00999999999999091 0.00999999999999091 0.0 823 -824 0.015963077545166 0.0200000000000102 0.0200000000000102 0.0 824 -825 0.0158100128173828 0.00999999999999091 0.00999999999999091 0.0 825 -826 0.0157589912414551 0.0200000000000102 0.0200000000000102 0.0 826 -827 0.0156979560852051 0.00999999999999091 0.00999999999999091 0.0 827 -828 0.0408341884613037 0.0499999999999829 0.0499999999999829 0.0 828 -829 0.0160629749298096 0.0100000000000193 0.0100000000000193 0.0 829 -830 0.015963077545166 0.0199999999999818 0.0199999999999818 0.0 830 -831 0.0164670944213867 0.0100000000000193 0.0100000000000193 0.0 831 -832 0.0157999992370605 0.0199999999999818 0.0199999999999818 0.0 832 -833 0.0158040523529053 0.0200000000000102 0.0200000000000102 0.0 833 -834 0.0157339572906494 0.00999999999999091 0.00999999999999091 0.0 834 -835 0.0431559085845947 0.0400000000000205 0.0400000000000205 0.0 835 -836 0.0160439014434814 0.00999999999999091 0.00999999999999091 0.0 836 -837 0.0160748958587646 0.0200000000000102 0.0200000000000102 0.0 837 -838 0.015887975692749 0.00999999999999091 0.00999999999999091 0.0 838 -839 0.0156698226928711 0.0200000000000102 0.0200000000000102 0.0 839 -840 0.01568603515625 0.00999999999999091 0.00999999999999091 0.0 840 -841 0.044741153717041 0.0500000000000114 0.0500000000000114 0.0 841 -842 0.018258810043335 0.0199999999999818 0.0199999999999818 0.0 842 -843 0.0159640312194824 0.0100000000000193 0.0100000000000193 0.0 843 -844 0.0158689022064209 0.0199999999999818 0.0199999999999818 0.0 844 -845 0.0158030986785889 0.0200000000000102 0.0200000000000102 0.0 845 -846 0.0156970024108887 0.00999999999999091 0.00999999999999091 0.0 846 -847 0.0167360305786133 0.0200000000000102 0.0200000000000102 0.0 847 -848 0.0449869632720947 0.039999999999992 0.039999999999992 0.0 848 -849 0.0159621238708496 0.0200000000000102 0.0200000000000102 0.0 849 -850 0.0158789157867432 0.0200000000000102 0.0200000000000102 0.0 850 -851 0.0166089534759521 0.00999999999999091 0.00999999999999091 0.0 851 -852 0.0156459808349609 0.0200000000000102 0.0200000000000102 0.0 852 -853 0.0158588886260986 0.00999999999999091 0.00999999999999091 0.0 853 -854 0.0406129360198975 0.039999999999992 0.039999999999992 0.0 854 -855 0.0159440040588379 0.0200000000000102 0.0200000000000102 0.0 855 -856 0.0158100128173828 0.0199999999999818 0.0199999999999818 0.0 856 -857 0.0157890319824219 0.0100000000000193 0.0100000000000193 0.0 857 -858 0.015923023223877 0.0199999999999818 0.0199999999999818 0.0 858 -859 0.0155861377716064 0.0100000000000193 0.0100000000000193 0.0 859 -860 0.0188548564910889 0.0199999999999818 0.0199999999999818 0.0 860 -861 0.0412931442260742 0.0400000000000205 0.0400000000000205 0.0 861 -862 0.0165369510650635 0.0199999999999818 0.0199999999999818 0.0 862 -863 0.0160419940948486 0.0200000000000102 0.0200000000000102 0.0 863 -864 0.0164439678192139 0.00999999999999091 0.00999999999999091 0.0 864 -865 0.0157101154327393 0.0200000000000102 0.0200000000000102 0.0 865 -866 0.0156807899475098 0.00999999999999091 0.00999999999999091 0.0 866 -867 0.0156638622283936 0.0200000000000102 0.0200000000000102 0.0 867 -868 0.040902853012085 0.039999999999992 0.039999999999992 0.0 868 -869 0.0159800052642822 0.0200000000000102 0.0200000000000102 0.0 869 -870 0.0166110992431641 0.00999999999999091 0.00999999999999091 0.0 870 -871 0.017413854598999 0.0200000000000102 0.0200000000000102 0.0 871 -872 0.0192930698394775 0.0199999999999818 0.0199999999999818 0.0 872 -873 0.0160510540008545 0.0100000000000193 0.0100000000000193 0.0 873 -874 0.0406858921051025 0.0499999999999829 0.0499999999999829 0.0 874 -875 0.0160770416259766 0.0100000000000193 0.0100000000000193 0.0 875 -876 0.0161919593811035 0.0199999999999818 0.0199999999999818 0.0 876 -877 0.015955924987793 0.0100000000000193 0.0100000000000193 0.0 877 -878 0.0158419609069824 0.0199999999999818 0.0199999999999818 0.0 878 -879 0.0157468318939209 0.0200000000000102 0.0200000000000102 0.0 879 -880 0.0157167911529541 0.00999999999999091 0.00999999999999091 0.0 880 -881 0.040755033493042 0.039999999999992 0.039999999999992 0.0 881 -882 0.0160150527954102 0.0200000000000102 0.0200000000000102 0.0 882 -883 0.0159170627593994 0.00999999999999091 0.00999999999999091 0.0 883 -884 0.0180459022521973 0.0200000000000102 0.0200000000000102 0.0 884 -885 0.01603102684021 0.0200000000000102 0.0200000000000102 0.0 885 -886 0.0156559944152832 0.00999999999999091 0.00999999999999091 0.0 886 -887 0.040722131729126 0.039999999999992 0.039999999999992 0.0 887 -888 0.0161468982696533 0.0200000000000102 0.0200000000000102 0.0 888 -889 0.0159561634063721 0.0200000000000102 0.0200000000000102 0.0 889 -890 0.0158951282501221 0.00999999999999091 0.00999999999999091 0.0 890 -891 0.0195560455322266 0.0199999999999818 0.0199999999999818 0.0 891 -892 0.0194118022918701 0.0200000000000102 0.0200000000000102 0.0 892 -893 0.0158801078796387 0.0200000000000102 0.0200000000000102 0.0 893 -894 0.0406708717346191 0.039999999999992 0.039999999999992 0.0 894 -895 0.0159239768981934 0.00999999999999091 0.00999999999999091 0.0 895 -896 0.0185558795928955 0.0200000000000102 0.0200000000000102 0.0 896 -897 0.0165250301361084 0.0200000000000102 0.0200000000000102 0.0 897 -898 0.0156872272491455 0.00999999999999091 0.00999999999999091 0.0 898 -899 0.0156629085540771 0.0200000000000102 0.0200000000000102 0.0 899 -900 0.0411269664764404 0.039999999999992 0.039999999999992 0.0 900 -901 0.0161049365997314 0.0200000000000102 0.0200000000000102 0.0 901 -902 0.0159130096435547 0.00999999999999091 0.00999999999999091 0.0 902 -903 0.0158100128173828 0.0199999999999818 0.0199999999999818 0.0 903 -904 0.0157549381256104 0.0200000000000102 0.0200000000000102 0.0 904 -905 0.0155808925628662 0.00999999999999091 0.00999999999999091 0.0 905 -906 0.0157089233398438 0.0200000000000102 0.0200000000000102 0.0 906 -907 0.040733814239502 0.039999999999992 0.039999999999992 0.0 907 -908 0.0157508850097656 0.0100000000000193 0.0100000000000193 0.0 908 -909 0.0190198421478271 0.0199999999999818 0.0199999999999818 0.0 909 -910 0.0157220363616943 0.0200000000000102 0.0200000000000102 0.0 910 -911 0.0156431198120117 0.00999999999999091 0.00999999999999091 0.0 911 -912 0.0163240432739258 0.0200000000000102 0.0200000000000102 0.0 912 -913 0.0405840873718262 0.039999999999992 0.039999999999992 0.0 913 -914 0.0158839225769043 0.0200000000000102 0.0200000000000102 0.0 914 -915 0.0158710479736328 0.00999999999999091 0.00999999999999091 0.0 915 -916 0.0157589912414551 0.0200000000000102 0.0200000000000102 0.0 916 -917 0.0157959461212158 0.00999999999999091 0.00999999999999091 0.0 917 -918 0.0156550407409668 0.0200000000000102 0.0200000000000102 0.0 918 -919 0.0157132148742676 0.0199999999999818 0.0199999999999818 0.0 919 -920 0.0412201881408691 0.0400000000000205 0.0400000000000205 0.0 920 -921 0.0189180374145508 0.0199999999999818 0.0199999999999818 0.0 921 -922 0.0160009860992432 0.0100000000000193 0.0100000000000193 0.0 922 -923 0.0156481266021729 0.0199999999999818 0.0199999999999818 0.0 923 -924 0.0155301094055176 0.0100000000000193 0.0100000000000193 0.0 924 -925 0.015531063079834 0.0199999999999818 0.0199999999999818 0.0 925 -926 0.0156428813934326 0.0200000000000102 0.0200000000000102 0.0 926 -927 0.0410211086273193 0.039999999999992 0.039999999999992 0.0 927 -928 0.0159690380096436 0.00999999999999091 0.00999999999999091 0.0 928 -929 0.0158920288085938 0.0200000000000102 0.0200000000000102 0.0 929 -930 0.0157539844512939 0.00999999999999091 0.00999999999999091 0.0 930 -931 0.0157601833343506 0.0200000000000102 0.0200000000000102 0.0 931 -932 0.0157170295715332 0.0200000000000102 0.0200000000000102 0.0 932 -933 0.041064977645874 0.039999999999992 0.039999999999992 0.0 933 -934 0.0186421871185303 0.0200000000000102 0.0200000000000102 0.0 934 -935 0.0160388946533203 0.00999999999999091 0.00999999999999091 0.0 935 -936 0.0158660411834717 0.0200000000000102 0.0200000000000102 0.0 936 -937 0.0163609981536865 0.00999999999999091 0.00999999999999091 0.0 937 -938 0.0156807899475098 0.0200000000000102 0.0200000000000102 0.0 938 -939 0.0157260894775391 0.0199999999999818 0.0199999999999818 0.0 939 -940 0.0416240692138672 0.039999999999992 0.039999999999992 0.0 940 -941 0.0218920707702637 0.0200000000000102 0.0200000000000102 0.0 941 -942 0.015984058380127 0.0200000000000102 0.0200000000000102 0.0 942 -943 0.0157361030578613 0.00999999999999091 0.00999999999999091 0.0 943 -944 0.015678882598877 0.0200000000000102 0.0200000000000102 0.0 944 -945 0.0157279968261719 0.00999999999999091 0.00999999999999091 0.0 945 -946 0.0436809062957764 0.0500000000000114 0.0500000000000114 0.0 946 -947 0.016185998916626 0.00999999999999091 0.00999999999999091 0.0 947 -948 0.0159549713134766 0.0200000000000102 0.0200000000000102 0.0 948 -949 0.015841007232666 0.00999999999999091 0.00999999999999091 0.0 949 -950 0.0157299041748047 0.0200000000000102 0.0200000000000102 0.0 950 -951 0.0167520046234131 0.0199999999999818 0.0199999999999818 0.0 951 -952 0.0157999992370605 0.0100000000000193 0.0100000000000193 0.0 952 -953 0.0407941341400146 0.039999999999992 0.039999999999992 0.0 953 -954 0.0159251689910889 0.0199999999999818 0.0199999999999818 0.0 954 -955 0.0158488750457764 0.0100000000000193 0.0100000000000193 0.0 955 -956 0.0157351493835449 0.0199999999999818 0.0199999999999818 0.0 956 -957 0.0157461166381836 0.0100000000000193 0.0100000000000193 0.0 957 -958 0.0157830715179443 0.00999999999999091 0.00999999999999091 0.0 958 -959 0.0440328121185303 0.0400000000000205 0.0400000000000205 0.0 959 -960 0.0163891315460205 0.0199999999999818 0.0199999999999818 0.0 960 -961 0.0172231197357178 0.0200000000000102 0.0200000000000102 0.0 961 -962 0.0159628391265869 0.00999999999999091 0.00999999999999091 0.0 962 -963 0.0158162117004395 0.0200000000000102 0.0200000000000102 0.0 963 -964 0.0156660079956055 0.0200000000000102 0.0200000000000102 0.0 964 -965 0.0156989097595215 0.00999999999999091 0.00999999999999091 0.0 965 -966 0.0409789085388184 0.039999999999992 0.039999999999992 0.0 966 -967 0.0159859657287598 0.0200000000000102 0.0200000000000102 0.0 967 -968 0.0158331394195557 0.00999999999999091 0.00999999999999091 0.0 968 -969 0.0157871246337891 0.0200000000000102 0.0200000000000102 0.0 969 -970 0.0163278579711914 0.0199999999999818 0.0199999999999818 0.0 970 -971 0.0156929492950439 0.0100000000000193 0.0100000000000193 0.0 971 -972 0.0429351329803467 0.039999999999992 0.039999999999992 0.0 972 -973 0.0161349773406982 0.0100000000000193 0.0100000000000193 0.0 973 -974 0.0159289836883545 0.0199999999999818 0.0199999999999818 0.0 974 -975 0.0159060955047607 0.0100000000000193 0.0100000000000193 0.0 975 -976 0.0160870552062988 0.0199999999999818 0.0199999999999818 0.0 976 -977 0.0157091617584229 0.0100000000000193 0.0100000000000193 0.0 977 -978 0.0156669616699219 0.00999999999999091 0.00999999999999091 0.0 978 -979 0.0407209396362305 0.039999999999992 0.039999999999992 0.0 979 -980 0.0159940719604492 0.0200000000000102 0.0200000000000102 0.0 980 -981 0.0158989429473877 0.00999999999999091 0.00999999999999091 0.0 981 -982 0.0158960819244385 0.0200000000000102 0.0200000000000102 0.0 982 -983 0.0157449245452881 0.0200000000000102 0.0200000000000102 0.0 983 -984 0.0183939933776855 0.00999999999999091 0.00999999999999091 0.0 984 -985 0.0408549308776855 0.039999999999992 0.039999999999992 0.0 985 -986 0.016895055770874 0.0200000000000102 0.0200000000000102 0.0 986 -987 0.0159039497375488 0.0200000000000102 0.0200000000000102 0.0 987 -988 0.0158200263977051 0.00999999999999091 0.00999999999999091 0.0 988 -989 0.0157120227813721 0.0200000000000102 0.0200000000000102 0.0 989 -990 0.0156378746032715 0.00999999999999091 0.00999999999999091 0.0 990 -991 0.0228080749511719 0.0300000000000011 0.0300000000000011 0.0 991 -992 0.0409870147705078 0.039999999999992 0.039999999999992 0.0 992 -993 0.0157871246337891 0.00999999999999091 0.00999999999999091 0.0 993 -994 0.0158090591430664 0.0200000000000102 0.0200000000000102 0.0 994 -995 0.0157351493835449 0.0200000000000102 0.0200000000000102 0.0 995 -996 0.0185980796813965 0.00999999999999091 0.00999999999999091 0.0 996 -997 0.0160398483276367 0.0100000000000193 0.0100000000000193 0.0 997 -998 0.0404281616210938 0.039999999999992 0.039999999999992 0.0 998 -999 0.0159862041473389 0.0200000000000102 0.0200000000000102 0.0 999 -1000 0.0166270732879639 0.00999999999999091 0.00999999999999091 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat deleted file mode 100644 index 465df200..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.157087197207005 -3 -0.179374358706398 -4 -0.172816500237501 -5 -0.172100634304929 -6 -0.18168246758723 -7 0.131584075287582 -8 0.679752237368679 -9 -0.163860297278845 -10 -0.170882707294366 -11 -0.166375603226363 -12 -0.174254444639597 -13 -0.173888868337232 -14 0.433940412821542 -15 0.373069309028039 -16 -0.171649802572127 -17 -0.169200630892492 -18 -0.166138159457362 -19 -0.1739364332791 -20 -0.127425006116119 -21 0.638263694934923 -22 0.12818251876092 -23 -0.175688598458062 -24 -0.170582005696374 -25 -0.165295475640757 -26 -0.177492415685482 -27 0.0465831397893705 -28 0.599451138773896 -29 -0.00135765066794861 -30 -0.177033357980592 -31 -0.16635596602023 -32 -0.166602977483835 -33 -0.178673562542768 -34 0.266392442433904 -35 0.432387768599705 -36 -0.0637700252002599 -37 -0.158118264958072 -38 -0.154561138423435 -39 -0.168429948675986 -40 -0.0994325786160257 -41 0.367997918823535 -42 0.290384046265292 -43 -0.11116281208171 -44 -0.175373024280893 -45 -0.160272110090895 -46 -0.164805593524448 -47 0.0550278238782237 -48 0.351023276202299 -49 0.189193346917991 -50 -0.138321616409331 -51 -0.174504050225761 -52 -0.161113173550488 -53 -0.152964238493074 -54 0.191038921821061 -55 0.288997249517505 -56 0.112554121399719 -57 -0.149706886466374 -58 -0.170685450581499 -59 -0.160759706621769 -60 -0.0696049681599959 -61 0.233811635314305 -62 0.22571473291272 -63 0.0469231721057327 -64 -0.157850957680934 -65 -0.16305911351091 -66 -0.156231122634058 -67 0.0491468744009525 -68 0.211267819802324 -69 0.187107177066929 -70 -0.0139870239184726 -71 -0.170483645145253 -72 -0.155686290284564 -73 -0.103000811390189 -74 0.138570030181668 -75 0.173843340323656 -76 0.143423232074103 -77 -0.0485241530965123 -78 -0.17395256767516 -79 -0.152395667614926 -80 -0.0364997518056447 -81 0.131378028895852 -82 0.157204475464315 -83 0.107865380703487 -84 -0.0772032951733248 -85 -0.168140171271818 -86 -0.144858575319744 -87 0.0510940822285813 -88 0.124231830951662 -89 0.116480579259527 -90 0.0733005231661278 -91 -0.103673077903456 -92 -0.163789078187485 -93 -0.0843697533408863 -94 0.0927359518979788 -95 0.0900559027837676 -96 0.104664222340361 -97 0.0382789156324802 -98 -0.128374408331222 -99 -0.15642261126302 -100 -0.00667308165088894 -101 0.0851277709144437 -102 0.0836018530451663 -103 0.0884188000954497 -104 0.00709279611310642 -105 -0.144660181300486 -106 -0.138143070220052 -107 0.0562816525685598 -108 0.0595077406929604 -109 0.0867173037785974 -110 0.0826832811453164 -111 -0.0160964251569884 -112 -0.155747087099804 -113 -0.0673832956811193 -114 0.0555412723389198 -115 0.0535188804439087 -116 0.0598230946420233 -117 0.0535276678974355 -118 -0.0458652924354906 -119 -0.153114302912901 -120 0.00982696548054891 -121 0.046672474075762 -122 0.0376959986943637 -123 0.0573772097995026 -124 0.0291609863119664 -125 -0.0720491385088587 -126 -0.119574247127328 -127 0.0398229760968292 -128 0.0368708833970769 -129 0.0378810523621832 -130 0.0440552599869543 -131 0.0168785446700554 -132 -0.100876176445281 -133 -0.0522667691021854 -134 0.036471105657028 -135 0.0215593152266718 -136 0.0332088835541183 -137 0.0406116641053865 -138 -0.000575792803151212 -139 -0.110182879489659 -140 0.0119148280486452 -141 0.0103606549224577 -142 0.0174203821210768 -143 0.0264660206850527 -144 0.0279556175958258 -145 -0.0101677743859891 -146 -0.0714378616054869 -147 0.0268904165103586 -148 0.0197546838971675 -149 0.0020125342918206 -150 0.0208048892753844 -151 0.0177433252225432 -152 -0.0412629401386729 -153 -0.0331295172833144 -154 0.0185158552578208 -155 0.0109488606569471 -156 0.00829546562841099 -157 0.0193950108790453 -158 0.00363009909349868 -159 -0.0424508741873948 -160 0.00483444603011959 -161 0.00251257763944739 -162 -0.0027291007330315 -163 0.00583978101322954 -164 0.0119526210929789 -165 0.00202945630944433 -166 -0.0133120914217794 -167 -0.0012297645717332 -168 0.00270288118433543 -169 -0.00541306317192281 -170 0.00344801669308451 -171 -7.06221686644991e-05 -172 -0.0128411948649165 -173 0.0258140753965777 -174 -0.00838152285590955 -175 0.00457554209144489 -176 -0.0212504244136124 -177 0.00405744330785776 -178 0.00109889713027893 -179 -0.00653340121943499 -180 0.0251074943438506 -181 0.00390303260107667 -182 -0.00701005779107689 -183 -0.0065141088117886 -184 -0.00279230972823837 -185 -0.00416383972424965 -186 0.0262707341683331 -187 0.00819057184579269 -188 -0.00340288166837825 -189 -0.0143930625406389 -190 -0.0253314001312743 -191 -0.00185836549539233 -192 0.00104764466063349 -193 0.0539677516048275 -194 -0.0100541189143094 -195 -0.00921746463253617 -196 -0.0149462313841975 -197 -0.0188238663657463 -198 -0.0175064441267539 -199 0.020760922122737 -200 0.0554307275152524 -201 -0.0148112905353319 -202 -0.0127466158713358 -203 -0.0243021923478065 -204 -0.0209159713475539 -205 -0.0114124320328544 -206 0.0397229436097326 -207 0.0456075315085741 -208 -0.0215007018820454 -209 -0.0144624346486559 -210 -0.0322330130568126 -211 -0.00825272885493334 -212 -0.0149224222346792 -213 0.0682032593962929 -214 0.0121011513942831 -215 -0.0169882789240117 -216 -0.0149704075424761 -217 -0.0387466974669077 -218 -0.00399663244288092 -219 0.017199112436661 -220 0.0760951670626158 -221 0.000771488467078772 -222 -0.0299297731350407 -223 -0.00961973831748005 -224 -0.0472117112712389 -225 -0.0172398450528946 -226 0.0399982487996819 -227 0.0668906972411487 -228 -0.0195152172068293 -229 -0.0118748121155119 -230 -0.0328125031882784 -231 -0.0308080129381723 -232 -0.0122390206650683 -233 0.0689451191829333 -234 0.029994234380722 -235 -0.0160522469025481 -236 -0.0138652708623251 -237 -0.0507286056559315 -238 -0.0108444844897431 -239 -0.000749122945858211 -240 0.0707991870940562 -241 0.0267001298657314 -242 -0.0303467049269583 -243 -0.0132703522046187 -244 -0.0519324123908225 -245 -0.020827887860283 -246 0.035011894574258 -247 0.071041404155295 -248 0.00264333590518284 -249 -0.0324109538103439 -250 -0.0173917664974712 -251 -0.0488496793294092 -252 -0.0141041170429656 -253 0.0508320887854303 -254 0.0750173132102245 -255 -0.0141435331710239 -256 -0.0149919228080718 -257 -0.0363809443035875 -258 -0.044180318575384 -259 0.0137303280992071 -260 0.0453890157170559 -261 0.0499450703384104 -262 -0.0214405609870375 -263 -0.0171265875233509 -264 -0.0483467081512779 -265 -0.0238039375745267 -266 0.0297704275693148 -267 0.0477795017107822 -268 0.0306806785398672 -269 -0.0241732516868213 -270 -0.0232177034439842 -271 -0.0561919945895127 -272 -0.0121383708530614 -273 0.0383380316167486 -274 0.0692068597048456 -275 -0.0037308740073283 -276 -0.0238823990824962 -277 -0.0233175869444128 -278 -0.0466628437090312 -279 0.00124369697752989 -280 0.033635887914297 -281 0.0595585462605596 -282 -0.00471883892563787 -283 -0.022010928895564 -284 -0.0396393069529268 -285 -0.047610976414541 -286 0.0330006232948636 -287 0.0280762592215935 -288 0.0546372734557523 -289 -0.0127989574716365 -290 -0.0191221337324256 -291 -0.0441318227203198 -292 -0.0234180780296535 -293 0.0323850514195515 -294 0.0485470915014664 -295 0.0233514564784711 -296 -0.014986868171212 -297 -0.0303748609767652 -298 -0.0492165541971281 -299 -0.000385604501460381 -300 0.0269531666988284 -301 0.0565609923395246 -302 0.00593180901393307 -303 -0.0139487837507826 -304 -0.0382587858091347 -305 -0.0491851369445174 -306 0.0160807177510981 -307 0.0361087651605283 -308 0.0389978157300904 -309 0.00502802264445259 -310 -0.0214508646037847 -311 -0.0382274859105765 -312 -0.0406626513624875 -313 0.0280699039368022 -314 0.0389617980418346 -315 0.0271371634582089 -316 0.00383396360577986 -317 -0.0368406522772554 -318 -0.0386138394670918 -319 -0.0144256141856596 -320 0.0269236337036347 -321 0.0378611438537414 -322 0.0209886410948846 -323 -0.000452113297036075 -324 -0.0449001716863398 -325 -0.0362164044779451 -326 -0.00595679435360415 -327 0.0506843309155259 -328 0.0326573572134026 -329 0.0107949518760053 -330 -0.00524263889747431 -331 -0.045061910257765 -332 -0.0336081125622954 -333 0.0142902742395516 -334 0.0327621408145429 -335 0.0232224714127171 -336 0.0111851134672308 -337 -0.0168616046652318 -338 -0.0421660588992697 -339 -0.0304729350756775 -340 0.0315110873281277 -341 0.0393883283265487 -342 0.00688623370858959 -343 0.0155748729948725 -344 -0.0396114220680361 -345 -0.036903793556725 -346 -0.0106964102495091 -347 0.0321472442987069 -348 0.0291161569873515 -349 0.0127286036167739 -350 0.0131191581487462 -351 -0.0510684340547118 -352 -0.037342914226626 -353 0.00800616948303765 -354 0.0353286314592821 -355 0.0224843093277485 -356 0.00483640438097458 -357 0.00270936967225743 -358 -0.050958398888098 -359 -0.03181357197987 -360 0.0263165400282428 -361 0.0337466198913848 -362 0.0138214636037434 -363 0.0161643781357266 -364 -0.0166975714811741 -365 -0.0379548808112395 -366 -0.0107191330666086 -367 0.0151768728627536 -368 0.0330707869037677 -369 0.00862332944835417 -370 0.0126881690782585 -371 -0.035143571537685 -372 -0.0379591383040581 -373 0.0034903385393575 -374 0.0262443107228041 -375 0.0239169076988401 -376 0.0117645257098411 -377 0.00667620811923268 -378 -0.0487466537790665 -379 -0.0248323076320059 -380 0.00853369884513661 -381 0.0254571493249656 -382 0.0158332997765884 -383 0.0152150967683835 -384 -0.00560022391839541 -385 -0.0468960628871472 -386 -0.0122137430122784 -387 0.0195354222281915 -388 0.0205785620197055 -389 0.00640951181213936 -390 0.0192254336021024 -391 -0.0213684050918215 -392 -0.0390677938838948 -393 -0.00851270390379209 -394 0.0198814929031009 -395 0.0221284736508306 -396 0.0144170779179485 -397 0.00761346746337475 -398 -0.0341642702201187 -399 -0.0182072192904153 -400 -0.000917427430821407 -401 0.0240923988301287 -402 0.0149702208233445 -403 0.0254338021686953 -404 -0.0114315718167618 -405 -0.0367784109383449 -406 -0.0203107293220967 -407 0.0207711450646343 -408 0.00769317821995912 -409 0.0155113277213562 -410 0.0188010420230405 -411 -0.00588271186449876 -412 -0.0453215571077292 -413 -0.0023477078738424 -414 0.0045635114773767 -415 0.0193832767222524 -416 0.0126157524584856 -417 0.0125919924992071 -418 -0.022128831828596 -419 -0.0316624813090816 -420 0.00848651912597777 -421 0.00365846968970242 -422 0.0167934861719605 -423 0.0258369213405359 -424 -0.0110386479254365 -425 -0.0221266194130739 -426 -0.0342359305340173 -427 0.0198173965590731 -428 0.0113340288154053 -429 0.0117321942610559 -430 0.0199069545235314 -431 -0.00972019619126481 -432 -0.0334368587948193 -433 -0.00818672582858474 -434 0.00847403279906724 -435 0.0151410616338098 -436 0.0210571960796968 -437 0.0106767873737501 -438 -0.013923260538601 -439 -0.0295951598444345 -440 -0.00213381404969862 -441 0.00202904020725609 -442 0.0229482306295094 -443 0.0184877779142267 -444 -0.00967213617656215 -445 -0.00921421284518073 -446 -0.0235983767065866 -447 -0.00275565709687977 -448 0.00850528936282641 -449 0.021653187958436 -450 0.0175868623090648 -451 -0.0158567287280081 -452 -0.0197244183098808 -453 -0.0181122740176874 -454 0.0114885559203587 -455 0.00821969307220109 -456 0.0172333504264287 -457 0.0166219780995992 -458 -0.0218887409079099 -459 -0.0166096810167506 -460 -0.0175255182955902 -461 0.0155549717347949 -462 0.0109524688624427 -463 0.0108083192821273 -464 0.0109544410525194 -465 -0.012075150479233 -466 -0.0316229939529222 -467 -0.00616925120907086 -468 0.0132996349281117 -469 0.0194985827103642 -470 0.0118786255995167 -471 -0.00394060339988717 -472 -0.0074504553199804 -473 -0.0216171208389261 -474 0.00601096062326295 -475 0.00225300714016349 -476 0.0328870249803732 -477 -0.00143854393918084 -478 -0.0125765646700796 -479 -0.00518610856295871 -480 -0.0286671364514193 -481 0.0114893086586308 -482 0.0101767599569462 -483 0.0215358355330199 -484 0.0100013983093797 -485 -0.0189420875106819 -486 -0.0170156842542937 -487 -0.0181219245592761 -488 0.0134350210494302 -489 0.0157200832610872 -490 0.00820671869127948 -491 0.00609605427848417 -492 -0.00964792789764855 -493 -0.0280629491471991 -494 -0.00119096663786943 -495 0.0059816978766158 -496 0.0319195128927636 -497 -0.00616844922211785 -498 -0.00300183927697173 -499 -0.00255830020653143 -500 -0.0326795727885289 -501 0.00737460740372866 -502 0.0101738406924715 -503 0.0166480802410528 -504 0.0101781028011199 -505 -0.0148697505539931 -506 -0.00932908806811421 -507 -0.0228291650465262 -508 0.016317603272819 -509 0.0251213315783841 -510 0.00429219423365217 -511 0.00509519846591672 -512 -0.0118288041004493 -513 -0.0182276341829169 -514 -0.0136524793951616 -515 0.0125652837072878 -516 0.0237831170063298 -517 0.000525824158270796 -518 0.000861207866418543 -519 -0.000309524320918211 -520 -0.0319611866775823 -521 0.00377002226899237 -522 0.00366677706502651 -523 0.0238709877277231 -524 -0.00194721509431841 -525 -0.00532831903040821 -526 -0.0035954903575234 -527 -0.0265125935766282 -528 0.00819935557807736 -529 0.0187116031801041 -530 0.00335323640794092 -531 0.0093979106751416 -532 -0.00717619909651022 -533 -0.0222889570534225 -534 -0.0159873555724934 -535 0.0155232558898349 -536 0.0188575547550394 -537 0.00257632001432395 -538 0.0109600141670179 -539 -0.0136168353942696 -540 -0.0286265327239912 -541 -0.00493532024944744 -542 0.0131483720919412 -543 0.0207593713409036 -544 0.00752548764010655 -545 0.0101794683902496 -546 -0.00944756530014968 -547 -0.0361193792524987 -548 0.00900784799603882 -549 0.00814620931366632 -550 0.0118963349468229 -551 0.00869181440821501 -552 0.00553664631914035 -553 -0.0235896662674149 -554 -0.0213031930671748 -555 0.0144191547013866 -556 0.00985740627307818 -557 0.0146461357237841 -558 -0.00329509825327045 -559 0.00861808586430692 -560 -0.0382908781734418 -561 -0.00810416928099721 -562 0.0152325822988648 -563 0.0108896546286742 -564 0.0197283233093635 -565 -0.00597279642964848 -566 0.00549346286324277 -567 -0.0441402987586487 -568 0.00442694223265451 -569 0.00895528979634627 -570 0.00314478664849838 -571 0.0275939863464633 -572 -0.000211275077900297 -573 -0.0157780481890476 -574 -0.0348847108726074 -575 0.0178433894654182 -576 0.00358880348184893 -577 0.00325401416563326 -578 0.0168304732698679 -579 0.00759458115231633 -580 -0.0249153562132231 -581 -0.0148180695954744 -582 0.0108144203245513 -583 0.0147457973792171 -584 0.00442055500088463 -585 0.0113147505801929 -586 0.00208502530934012 -587 -0.0369024921021571 -588 -0.00738632772951817 -589 0.00992698216785421 -590 0.00762460161308267 -591 0.0264602045744605 -592 0.00179884430710083 -593 -0.0065858667702633 -594 -0.0400946265552496 -595 0.00586629198250832 -596 0.00638016879591378 -597 -0.00334997345122169 -598 0.0378696957160481 -599 -0.00291662872883922 -600 -0.0150181756899771 -601 -0.0308267314085245 -602 0.00545487745877096 -603 0.0145056871276495 -604 -0.00111862002362357 -605 0.0274345659047568 -606 -0.00545886365985009 -607 -0.02134718500889 -608 -0.0168792261598091 -609 0.00235047714564286 -610 0.0115358557818356 -611 0.00892944549777402 -612 0.0175837325671957 -613 -0.00241533013968592 -614 -0.0397066859486968 -615 -0.000775410212127817 -616 0.010404414311518 -617 0.00622818135682105 -618 0.0256159561966313 -619 0.0100572818761881 -620 -0.00997184439752021 -621 -0.0370357127908402 -622 -0.009493683122773 -623 0.019991811173322 -624 0.00616915844764652 -625 0.0226334480172136 -626 -0.00170152998435823 -627 -0.00527269037631295 -628 -0.0310245966733844 -629 -0.00334664758487885 -630 0.0108099133488301 -631 0.0162472542900972 -632 0.0107638392138735 -633 -9.28636881484359e-05 -634 -0.0251735775995027 -635 -0.0175915903660944 -636 0.0064154965729608 -637 0.00918775959735482 -638 0.025607471670139 -639 0.00415316421623987 -640 -0.00555481869685676 -641 -0.0243730502242372 -642 -0.0236765581404991 -643 0.0132551374194837 -644 0.0159204978713982 -645 0.0182545204715289 -646 -0.00177344669143713 -647 -0.00410362457456551 -648 -0.0217821833150809 -649 -0.0187567646143839 -650 0.0108473001511633 -651 0.024234409213132 -652 0.0103373343092404 -653 0.0053494854974728 -654 -0.0116971189957597 -655 -0.025622749432742 -656 -0.00703489184924496 -657 0.0127306317732122 -658 0.0264660231555335 -659 0.00441275817266093 -660 -0.000498144331723384 -661 -0.0170193444138239 -662 -0.035755915518656 -663 0.0153452894744309 -664 0.0184392623502257 -665 0.0179210598556496 -666 0.00323237671435628 -667 -0.0143732162504404 -668 -0.0059072260888979 -669 -0.0424395347705013 -670 0.0182802454123028 -671 0.028027312899014 -672 0.0105955795585643 -673 0.00873541917286547 -674 -0.0180699323851307 -675 -0.0157035416270782 -676 -0.0243544633968205 -677 0.0122599065615016 -678 0.0293159679608981 -679 -0.0023542771968947 -680 0.0173160434772516 -681 -0.0192740489190438 -682 -0.0267558924656808 -683 -0.00512931356799544 -684 0.0160575949541419 -685 0.0188852073807438 -686 0.00138912191794047 -687 -0.00115067732885235 -688 -0.0058938945939148 -689 -0.0270293884074899 -690 0.000894104439656761 -691 0.0254384890333336 -692 0.0135759887351247 -693 0.00706307551413458 -694 -0.00983098745115802 -695 -0.0182029532724777 -696 -0.0188844337318011 -697 -0.000620495183408782 -698 0.031569666060583 -699 0.00247939842897875 -700 0.0175967326065924 -701 -0.0140127620939771 -702 -0.0204023919721389 -703 -0.0265270099155168 -704 0.0189279709581055 -705 0.0230696877886033 -706 0.00221980643869467 -707 0.00877474738492577 -708 -0.0162154001263846 -709 -0.0131109560281679 -710 -0.0175675796745332 -711 0.0223801164921319 -712 0.00577037578768595 -713 0.015016209026733 -714 0.000700464791035295 -715 -0.0265570398797467 -716 -0.00328487594267362 -717 -0.0125180962593854 -718 0.0282899511684865 -719 0.00190078369585563 -720 0.00988422939784888 -721 -0.00206231662877586 -722 -0.0260676646786268 -723 -0.00911966903113347 -724 -0.00349690376176947 -725 0.0311131205663657 -726 0.00982115201693743 -727 0.00380892869332063 -728 -0.0110636013291228 -729 -0.0147589149221332 -730 -0.0142665446241887 -731 0.0082820839740987 -732 0.0115944492459724 -733 0.0193205726321855 -734 -0.00599937049345255 -735 -0.0124413644991841 -736 -0.00567111710885452 -737 -0.0172490266022523 -738 0.0208711936714456 -739 0.0049112245490164 -740 0.0119338001717033 -741 -0.00382254745169823 -742 -0.0168037126507566 -743 -0.0106727427496242 -744 -0.0015896316832005 -745 0.00986670286392471 -746 0.0187708614601626 -747 0.00280713985351326 -748 -0.0103005824233574 -749 -0.00698856527705199 -750 -0.0148829004327279 -751 0.00737864042801781 -752 0.00378825958027056 -753 0.0169762573619787 -754 0.0022171253424174 -755 -0.00880275220702398 -756 -0.0113861610535219 -757 -0.00866954185078337 -758 -0.00102625777568937 -759 0.0153621406801242 -760 0.0175483371870747 -761 -0.0117316284519376 -762 0.00201727719536751 -763 -0.0135695524051989 -764 -0.00236628739393315 -765 -0.00558540481434592 -766 0.0269770620065138 -767 0.00572732432254425 -768 -0.0206632040359575 -769 0.00669734976955735 -770 -0.0177594319318436 -771 0.00610794003109065 -772 0.000941524893761258 -773 0.0184249836070844 -774 0.00603564044659765 -775 -0.0194800088175 -776 0.00211956864190904 -777 -0.010814553078384 -778 -0.00345880879440837 -779 0.00784989092108616 -780 0.0219931715670487 -781 -0.00850728907326284 -782 -0.00818020013943201 -783 -0.000161877820177968 -784 -0.00713626483576915 -785 -0.00189547729017052 -786 0.00606277375629014 -787 0.0175714822376805 -788 -0.0163318892122437 -789 0.00355096379727685 -790 -0.00561323769976105 -791 -0.00173115162828963 -792 0.00285124323851199 -793 0.00626988628820364 -794 0.00217746014515121 -795 -0.00760875508840939 -796 -0.000158305774946426 -797 0.000505966683014493 -798 -0.00693871262526605 -799 0.00898933345030533 -800 0.014710588776899 -801 -0.0127611881730304 -802 0.00195021147362958 -803 -0.00619101895130629 -804 0.0026189336260538 -805 -0.0119751993107655 -806 0.00863989985124942 -807 0.0162582664631878 -808 -0.00961705217558156 -809 -0.00291393696249613 -810 0.00183243185138599 -811 -0.00460631909363343 -812 -0.0119632672766042 -813 0.0208966630422238 -814 -0.00308347876710094 -815 -0.000388668719911606 -816 -0.00886871268574757 -817 0.0104410151238245 -818 -0.00971881568327177 -819 -0.00556079139249464 -820 0.0192762976108135 -821 -0.0107849691388102 -822 0.00749648811680043 -823 -0.0133743112470617 -824 0.0148954204098446 -825 -0.012870734248631 -826 0.00297854342027238 -827 0.00400991287076845 -828 -0.000776475806225986 -829 0.000157063854584776 -830 -0.00648190853333762 -831 0.00841895039070195 -832 -0.0106394491215173 -833 0.0131617346674597 -834 -0.0110557177073731 -835 0.0104656591658511 -836 -0.00271631743019652 -837 0.00120199415841236 -838 0.003706954798763 -839 -0.00947603640270401 -840 0.00137362489293886 -841 -0.00412100522419038 -842 0.00440555479849327 -843 -0.00101257629784826 -844 0.011630938869848 -845 -0.00348460872671806 -846 -0.00490788919767545 -847 -0.00767305606978742 -848 0.00641850027996645 -849 -0.0047270157313243 -850 0.006561877154592 -851 0.00346504126665878 -852 0.000325934762370315 -853 -0.00691243590442494 -854 -0.0122397831712401 -855 0.0155142896041314 -856 -0.00649940375329406 -857 0.0115764362511307 -858 -0.00166218348252304 -859 0.00329024056556213 -860 -0.0168163842675434 -861 -0.0018300046237477 -862 0.00782622924665259 -863 0.00184144237820109 -864 0.00564522536281571 -865 0.00166897889337862 -866 0.000762761808421144 -867 -0.0247108710871775 -868 0.0102945871423903 -869 0.00176524231160526 -870 0.0100435696701272 -871 -0.000881447853453438 -872 0.0077251769247763 -873 -0.00856838315554851 -874 -0.0147878775532851 -875 0.0032203221928359 -876 0.00271820057534821 -877 0.0150200342356852 -878 -0.00679910502968767 -879 0.00803734684491422 -880 -0.0129685352671973 -881 -0.00468207467932367 -882 -0.0040001560959317 -883 0.0127784032727213 -884 0.00689584536184243 -885 -0.00348378029753978 -886 0.00583835064957876 -887 -0.018431993579404 -888 -0.00543151914104362 -889 0.000930192838208099 -890 0.0189669669181415 -891 0.00197455166108111 -892 0.000291983829886991 -893 -0.00151890218051029 -894 -0.018758927675871 -895 -0.00427007831617855 -896 0.00873163971817387 -897 0.0116921446719301 -898 0.00493448763764004 -899 0.000812558628478896 -900 -0.00829685479660704 -901 -0.016774476024156 -902 -0.00284574091222063 -903 0.0166712115089998 -904 0.00393567866715527 -905 0.00970634578920477 -906 -0.0013135499413494 -907 -0.0151419078767085 -908 -0.014262642806324 -909 0.000679710286692927 -910 0.023632237447571 -911 -0.000293075867552849 -912 0.00963897961846078 -913 -0.00892745437111743 -914 -0.0141610280914154 -915 -0.0143929747783252 -916 0.0126331813801288 -917 0.0140072140155889 -918 0.0038464358463258 -919 0.00872792856356974 -920 -0.0142893223780218 -921 -0.0144626608008151 -922 -0.0106633311842541 -923 0.0182487172273735 -924 0.00789811928832441 -925 0.00674770411457765 -926 0.00151185223543001 -927 -0.0131662643971208 -928 -0.0130299725001482 -929 -0.000421100875615765 -930 0.0101012876932665 -931 0.0109771581904619 -932 0.00600630873622808 -933 -0.00610768057521272 -934 -0.0113069105169847 -935 -0.0108646539420972 -936 0.00681782689120027 -937 0.00453863835411057 -938 0.0128033807887734 -939 0.00558460964303299 -940 -0.0111413786231144 -941 -0.010741707945974 -942 -0.0073905294023225 -943 0.00509539616333849 -944 0.00789664081858827 -945 0.0156023411643847 -946 -0.00196863307695851 -947 -0.00929990689658537 -948 -0.0100501558671196 -949 -0.00713963769082725 -950 0.00529444925980778 -951 0.00907288818013118 -952 0.0159396165239691 -953 -0.0070169105795629 -954 -0.00871200515303164 -955 -0.00623272113762449 -956 -0.00859043676592199 -957 0.00750758667776515 -958 0.0114715494246097 -959 0.00783845600054901 -960 -0.00640762499905148 -961 -0.00791318713998704 -962 -0.00388200155080539 -963 -0.00821887932833072 -964 0.00969710527680486 -965 0.0132324446252105 -966 0.000588150241816455 -967 -0.00459312775024423 -968 -0.00661504524014442 -969 -0.00488536336284523 -970 -0.00665739535025808 -971 0.0119120087088002 -972 0.0129080825261635 -973 -0.00502738233144332 -974 -0.00424651006131981 -975 -0.00529584314204073 -976 -0.00401797749822628 -977 -0.00398629771407627 -978 0.0145696891837213 -979 0.00312400996929776 -980 -0.0024620797714283 -981 -0.0029972609662243 -982 -0.00374070711004024 -983 -0.00324300553128461 -984 -0.00266784725010517 -985 0.0142342444009173 -986 -0.00291146863667702 -987 -0.00123170535641386 -988 -0.00195500360676893 -989 -0.0018623417265137 -990 -0.0010940028343966 -991 -0.00012714389035354 -992 0.00601935720393536 -993 -0.00153575128302119 -994 -0.000790525971546018 -995 -0.000953092463346404 -996 -0.000631437937788914 -997 -5.86631399396442e-05 -998 0.000839644378016313 -999 -0.000137648586440022 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat deleted file mode 100644 index 12909169..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.0308499336242676 0.0300000000000011 0.0300000000000011 0.0 1 -2 0.027501106262207 0.0299999999999976 0.0299999999999976 0.0 2 -3 0.0248689651489258 0.0200000000000031 0.0200000000000031 0.0 3 -4 0.0230190753936768 0.0199999999999996 0.0199999999999996 0.0 4 -5 0.0231549739837646 0.0299999999999976 0.0299999999999976 0.0 5 -6 0.0229060649871826 0.0200000000000031 0.0200000000000031 0.0 6 -7 0.0479171276092529 0.0499999999999972 0.0499999999999972 0.0 7 -8 0.0237171649932861 0.0199999999999996 0.0199999999999996 0.0 8 -9 0.0234429836273193 0.0200000000000031 0.0200000000000031 0.0 9 -10 0.0232129096984863 0.0299999999999976 0.0299999999999976 0.0 10 -11 0.0243880748748779 0.0199999999999996 0.0199999999999996 0.0 11 -12 0.0262730121612549 0.0300000000000011 0.0300000000000011 0.0 12 -13 0.022907018661499 0.0199999999999996 0.0199999999999996 0.0 13 -14 0.0502560138702393 0.0500000000000007 0.0500000000000007 0.0 14 -15 0.0239529609680176 0.0199999999999996 0.0199999999999996 0.0 15 -16 0.0233089923858643 0.0300000000000011 0.0300000000000011 0.0 16 -17 0.0230889320373535 0.0199999999999996 0.0199999999999996 0.0 17 -18 0.0229461193084717 0.0199999999999996 0.0199999999999996 0.0 18 -19 0.0228281021118164 0.0300000000000011 0.0300000000000011 0.0 19 -20 0.0227499008178711 0.0199999999999996 0.0199999999999996 0.0 20 -21 0.0519850254058838 0.0500000000000007 0.0500000000000007 0.0 21 -22 0.0238831043243408 0.0299999999999976 0.0299999999999976 0.0 22 -23 0.0233030319213867 0.0199999999999996 0.0199999999999996 0.0 23 -24 0.0230920314788818 0.0200000000000031 0.0200000000000031 0.0 24 -25 0.0230100154876709 0.0199999999999996 0.0199999999999996 0.0 25 -26 0.0230438709259033 0.0199999999999996 0.0199999999999996 0.0 26 -27 0.0233631134033203 0.0199999999999996 0.0199999999999996 0.0 27 -28 0.0499250888824463 0.0500000000000007 0.0500000000000007 0.0 28 -29 0.0236561298370361 0.0300000000000011 0.0300000000000011 0.0 29 -30 0.0273551940917969 0.0199999999999996 0.0199999999999996 0.0 30 -31 0.0231010913848877 0.0300000000000011 0.0300000000000011 0.0 31 -32 0.0228641033172607 0.0199999999999996 0.0199999999999996 0.0 32 -33 0.0227639675140381 0.0199999999999996 0.0199999999999996 0.0 33 -34 0.0227780342102051 0.0199999999999996 0.0199999999999996 0.0 34 -35 0.0491790771484375 0.0500000000000007 0.0500000000000007 0.0 35 -36 0.0235280990600586 0.0300000000000011 0.0300000000000011 0.0 36 -37 0.0303738117218018 0.0299999999999976 0.0299999999999976 0.0 37 -38 0.0235600471496582 0.0199999999999996 0.0199999999999996 0.0 38 -39 0.0272340774536133 0.0300000000000011 0.0300000000000011 0.0 39 -40 0.0229921340942383 0.0199999999999996 0.0199999999999996 0.0 40 -41 0.0230140686035156 0.0199999999999996 0.0199999999999996 0.0 41 -42 0.0487380027770996 0.0500000000000007 0.0500000000000007 0.0 42 -43 0.0233781337738037 0.0300000000000011 0.0300000000000011 0.0 43 -44 0.0232539176940918 0.0199999999999996 0.0199999999999996 0.0 44 -45 0.0231471061706543 0.0199999999999996 0.0199999999999996 0.0 45 -46 0.0229659080505371 0.0300000000000011 0.0300000000000011 0.0 46 -47 0.0236260890960693 0.0199999999999996 0.0199999999999996 0.0 47 -48 0.0249731540679932 0.0299999999999976 0.0299999999999976 0.0 48 -49 0.0491600036621094 0.0400000000000027 0.0400000000000027 0.0 49 -50 0.0233979225158691 0.0299999999999976 0.0299999999999976 0.0 50 -51 0.0233068466186523 0.0200000000000031 0.0200000000000031 0.0 51 -52 0.0230197906494141 0.0199999999999996 0.0199999999999996 0.0 52 -53 0.023003101348877 0.0299999999999976 0.0299999999999976 0.0 53 -54 0.0229551792144775 0.0199999999999996 0.0199999999999996 0.0 54 -55 0.0227420330047607 0.0200000000000031 0.0200000000000031 0.0 55 -56 0.0490391254425049 0.0499999999999972 0.0499999999999972 0.0 56 -57 0.0280921459197998 0.0300000000000011 0.0300000000000011 0.0 57 -58 0.0237009525299072 0.0199999999999996 0.0199999999999996 0.0 58 -59 0.0233352184295654 0.0300000000000011 0.0300000000000011 0.0 59 -60 0.0229549407958984 0.0199999999999996 0.0199999999999996 0.0 60 -61 0.0229389667510986 0.0199999999999996 0.0199999999999996 0.0 61 -62 0.022536039352417 0.0300000000000011 0.0300000000000011 0.0 62 -63 0.0481998920440674 0.0399999999999991 0.0399999999999991 0.0 63 -64 0.0232841968536377 0.0300000000000011 0.0300000000000011 0.0 64 -65 0.0232529640197754 0.0199999999999996 0.0199999999999996 0.0 65 -66 0.026047945022583 0.0299999999999976 0.0299999999999976 0.0 66 -67 0.0240390300750732 0.0200000000000031 0.0200000000000031 0.0 67 -68 0.0229721069335938 0.0199999999999996 0.0199999999999996 0.0 68 -69 0.0479068756103516 0.0500000000000007 0.0500000000000007 0.0 69 -70 0.023643970489502 0.0199999999999996 0.0199999999999996 0.0 70 -71 0.0241210460662842 0.0199999999999996 0.0199999999999996 0.0 71 -72 0.0232229232788086 0.0199999999999996 0.0199999999999996 0.0 72 -73 0.0230081081390381 0.0300000000000011 0.0300000000000011 0.0 73 -74 0.0300300121307373 0.0300000000000011 0.0300000000000011 0.0 74 -75 0.0227279663085938 0.0199999999999996 0.0199999999999996 0.0 75 -76 0.0513601303100586 0.0500000000000007 0.0500000000000007 0.0 76 -77 0.0237360000610352 0.0199999999999996 0.0199999999999996 0.0 77 -78 0.0233068466186523 0.0300000000000011 0.0300000000000011 0.0 78 -79 0.0231139659881592 0.0199999999999996 0.0199999999999996 0.0 79 -80 0.0230059623718262 0.0199999999999996 0.0199999999999996 0.0 80 -81 0.022935152053833 0.0299999999999976 0.0299999999999976 0.0 81 -82 0.0229039192199707 0.0200000000000031 0.0200000000000031 0.0 82 -83 0.0487849712371826 0.0499999999999972 0.0499999999999972 0.0 83 -84 0.0268459320068359 0.0199999999999996 0.0199999999999996 0.0 84 -85 0.0233829021453857 0.0300000000000011 0.0300000000000011 0.0 85 -86 0.0231680870056152 0.0199999999999996 0.0199999999999996 0.0 86 -87 0.0230309963226318 0.0199999999999996 0.0199999999999996 0.0 87 -88 0.0234689712524414 0.0300000000000011 0.0300000000000011 0.0 88 -89 0.0231020450592041 0.0199999999999996 0.0199999999999996 0.0 89 -90 0.0486099720001221 0.0500000000000007 0.0500000000000007 0.0 90 -91 0.0234777927398682 0.0200000000000031 0.0200000000000031 0.0 91 -92 0.0232808589935303 0.029999999999994 0.029999999999994 0.0 92 -93 0.0230159759521484 0.0200000000000031 0.0200000000000031 0.0 93 -94 0.0258738994598389 0.0300000000000011 0.0300000000000011 0.0 94 -95 0.0232770442962646 0.019999999999996 0.019999999999996 0.0 95 -96 0.022737979888916 0.0200000000000031 0.0200000000000031 0.0 96 -97 0.0484600067138672 0.0499999999999972 0.0499999999999972 0.0 97 -98 0.023435115814209 0.0200000000000031 0.0200000000000031 0.0 98 -99 0.0234768390655518 0.0300000000000011 0.0300000000000011 0.0 99 -100 0.0230209827423096 0.019999999999996 0.019999999999996 0.0 100 -101 0.0230460166931152 0.0200000000000031 0.0200000000000031 0.0 101 -102 0.0232481956481934 0.0300000000000011 0.0300000000000011 0.0 102 -103 0.0264010429382324 0.019999999999996 0.019999999999996 0.0 103 -104 0.0486769676208496 0.0500000000000043 0.0500000000000043 0.0 104 -105 0.0233399868011475 0.019999999999996 0.019999999999996 0.0 105 -106 0.0231819152832031 0.0300000000000011 0.0300000000000011 0.0 106 -107 0.0230488777160645 0.0200000000000031 0.0200000000000031 0.0 107 -108 0.0238149166107178 0.019999999999996 0.019999999999996 0.0 108 -109 0.0230348110198975 0.0300000000000011 0.0300000000000011 0.0 109 -110 0.0254418849945068 0.0200000000000031 0.0200000000000031 0.0 110 -111 0.0559201240539551 0.0599999999999952 0.0599999999999952 0.0 111 -112 0.0237429141998291 0.0200000000000031 0.0200000000000031 0.0 112 -113 0.0230910778045654 0.0300000000000011 0.0300000000000011 0.0 113 -114 0.0230679512023926 0.019999999999996 0.019999999999996 0.0 114 -115 0.022960901260376 0.0200000000000031 0.0200000000000031 0.0 115 -116 0.0229921340942383 0.019999999999996 0.019999999999996 0.0 116 -117 0.0226120948791504 0.0300000000000011 0.0300000000000011 0.0 117 -118 0.0491540431976318 0.0500000000000043 0.0500000000000043 0.0 118 -119 0.0233540534973145 0.019999999999996 0.019999999999996 0.0 119 -120 0.023921012878418 0.0200000000000031 0.0200000000000031 0.0 120 -121 0.02628493309021 0.0300000000000011 0.0300000000000011 0.0 121 -122 0.0231039524078369 0.019999999999996 0.019999999999996 0.0 122 -123 0.0229899883270264 0.0300000000000011 0.0300000000000011 0.0 123 -124 0.0484068393707275 0.0399999999999991 0.0399999999999991 0.0 124 -125 0.0236389636993408 0.0300000000000011 0.0300000000000011 0.0 125 -126 0.0232870578765869 0.019999999999996 0.019999999999996 0.0 126 -127 0.0232260227203369 0.0200000000000031 0.0200000000000031 0.0 127 -128 0.0229640007019043 0.0300000000000011 0.0300000000000011 0.0 128 -129 0.02298903465271 0.019999999999996 0.019999999999996 0.0 129 -130 0.0251820087432861 0.0300000000000011 0.0300000000000011 0.0 130 -131 0.0493929386138916 0.0399999999999991 0.0399999999999991 0.0 131 -132 0.0237491130828857 0.019999999999996 0.019999999999996 0.0 132 -133 0.0233249664306641 0.0200000000000031 0.0200000000000031 0.0 133 -134 0.0232069492340088 0.0300000000000011 0.0300000000000011 0.0 134 -135 0.0229921340942383 0.019999999999996 0.019999999999996 0.0 135 -136 0.0232110023498535 0.0200000000000031 0.0200000000000031 0.0 136 -137 0.0227601528167725 0.019999999999996 0.019999999999996 0.0 137 -138 0.0484609603881836 0.0500000000000043 0.0500000000000043 0.0 138 -139 0.0269899368286133 0.0300000000000011 0.0300000000000011 0.0 139 -140 0.0233750343322754 0.019999999999996 0.019999999999996 0.0 140 -141 0.023090124130249 0.0300000000000011 0.0300000000000011 0.0 141 -142 0.0229980945587158 0.019999999999996 0.019999999999996 0.0 142 -143 0.0231709480285645 0.0200000000000031 0.0200000000000031 0.0 143 -144 0.0230460166931152 0.0300000000000011 0.0300000000000011 0.0 144 -145 0.0494990348815918 0.0499999999999972 0.0499999999999972 0.0 145 -146 0.0304419994354248 0.0300000000000011 0.0300000000000011 0.0 146 -147 0.0233581066131592 0.0200000000000031 0.0200000000000031 0.0 147 -148 0.0262119770050049 0.0300000000000011 0.0300000000000011 0.0 148 -149 0.0228428840637207 0.019999999999996 0.019999999999996 0.0 149 -150 0.0228331089019775 0.0200000000000031 0.0200000000000031 0.0 150 -151 0.0226950645446777 0.019999999999996 0.019999999999996 0.0 151 -152 0.0486769676208496 0.0500000000000043 0.0500000000000043 0.0 152 -153 0.0234050750732422 0.029999999999994 0.029999999999994 0.0 153 -154 0.0234100818634033 0.0200000000000031 0.0200000000000031 0.0 154 -155 0.023036003112793 0.0200000000000031 0.0200000000000031 0.0 155 -156 0.0237429141998291 0.029999999999994 0.029999999999994 0.0 156 -157 0.0230100154876709 0.0200000000000031 0.0200000000000031 0.0 157 -158 0.0260419845581055 0.0300000000000011 0.0300000000000011 0.0 158 -159 0.0487880706787109 0.0399999999999991 0.0399999999999991 0.0 159 -160 0.0236630439758301 0.0200000000000031 0.0200000000000031 0.0 160 -161 0.0232570171356201 0.019999999999996 0.019999999999996 0.0 161 -162 0.0230000019073486 0.0300000000000011 0.0300000000000011 0.0 162 -163 0.0229759216308594 0.0200000000000031 0.0200000000000031 0.0 163 -164 0.0229389667510986 0.019999999999996 0.019999999999996 0.0 164 -165 0.0226230621337891 0.0200000000000031 0.0200000000000031 0.0 165 -166 0.052177906036377 0.0600000000000023 0.0600000000000023 0.0 166 -167 0.0238969326019287 0.019999999999996 0.019999999999996 0.0 167 -168 0.0231490135192871 0.0200000000000031 0.0200000000000031 0.0 168 -169 0.0229499340057373 0.029999999999994 0.029999999999994 0.0 169 -170 0.0229768753051758 0.0200000000000031 0.0200000000000031 0.0 170 -171 0.0229849815368652 0.0200000000000031 0.0200000000000031 0.0 171 -172 0.0481510162353516 0.0499999999999972 0.0499999999999972 0.0 172 -173 0.0235779285430908 0.0200000000000031 0.0200000000000031 0.0 173 -174 0.0235681533813477 0.029999999999994 0.029999999999994 0.0 174 -175 0.0232248306274414 0.0200000000000031 0.0200000000000031 0.0 175 -176 0.0256550312042236 0.0300000000000011 0.0300000000000011 0.0 176 -177 0.023108959197998 0.019999999999996 0.019999999999996 0.0 177 -178 0.0228090286254883 0.0200000000000031 0.0200000000000031 0.0 178 -179 0.0490450859069824 0.0499999999999972 0.0499999999999972 0.0 179 -180 0.0244641304016113 0.0300000000000011 0.0300000000000011 0.0 180 -181 0.0233809947967529 0.0200000000000031 0.0200000000000031 0.0 181 -182 0.0231349468231201 0.019999999999996 0.019999999999996 0.0 182 -183 0.0308740139007568 0.0300000000000011 0.0300000000000011 0.0 183 -184 0.0236179828643799 0.0300000000000011 0.0300000000000011 0.0 184 -185 0.0272319316864014 0.0200000000000031 0.0200000000000031 0.0 185 -186 0.0488860607147217 0.0399999999999991 0.0399999999999991 0.0 186 -187 0.0235450267791748 0.0300000000000011 0.0300000000000011 0.0 187 -188 0.0232491493225098 0.019999999999996 0.019999999999996 0.0 188 -189 0.0231590270996094 0.0200000000000031 0.0200000000000031 0.0 189 -190 0.0231139659881592 0.0300000000000011 0.0300000000000011 0.0 190 -191 0.0231552124023438 0.019999999999996 0.019999999999996 0.0 191 -192 0.022982120513916 0.0200000000000031 0.0200000000000031 0.0 192 -193 0.0529110431671143 0.0600000000000023 0.0600000000000023 0.0 193 -194 0.0235891342163086 0.019999999999996 0.019999999999996 0.0 194 -195 0.0234260559082031 0.0200000000000031 0.0200000000000031 0.0 195 -196 0.0230891704559326 0.029999999999994 0.029999999999994 0.0 196 -197 0.0230920314788818 0.0200000000000031 0.0200000000000031 0.0 197 -198 0.0229229927062988 0.0200000000000031 0.0200000000000031 0.0 198 -199 0.0226840972900391 0.029999999999994 0.029999999999994 0.0 199 -200 0.048753023147583 0.0400000000000063 0.0400000000000063 0.0 200 -201 0.0234558582305908 0.029999999999994 0.029999999999994 0.0 201 -202 0.0232200622558594 0.0200000000000031 0.0200000000000031 0.0 202 -203 0.0268151760101318 0.0300000000000011 0.0300000000000011 0.0 203 -204 0.0231211185455322 0.019999999999996 0.019999999999996 0.0 204 -205 0.0231039524078369 0.0200000000000031 0.0200000000000031 0.0 205 -206 0.0227501392364502 0.0300000000000011 0.0300000000000011 0.0 206 -207 0.0488438606262207 0.0499999999999972 0.0499999999999972 0.0 207 -208 0.023730993270874 0.0200000000000031 0.0200000000000031 0.0 208 -209 0.0231349468231201 0.019999999999996 0.019999999999996 0.0 209 -210 0.0231950283050537 0.0300000000000011 0.0300000000000011 0.0 210 -211 0.0232861042022705 0.0200000000000031 0.0200000000000031 0.0 211 -212 0.0260870456695557 0.0300000000000011 0.0300000000000011 0.0 212 -213 0.0480821132659912 0.0399999999999991 0.0399999999999991 0.0 213 -214 0.0236039161682129 0.029999999999994 0.029999999999994 0.0 214 -215 0.0233402252197266 0.0200000000000031 0.0200000000000031 0.0 215 -216 0.0233190059661865 0.0200000000000031 0.0200000000000031 0.0 216 -217 0.0242919921875 0.029999999999994 0.029999999999994 0.0 217 -218 0.0228087902069092 0.0200000000000031 0.0200000000000031 0.0 218 -219 0.0274980068206787 0.0300000000000011 0.0300000000000011 0.0 219 -220 0.0521900653839111 0.0499999999999972 0.0499999999999972 0.0 220 -221 0.0259828567504883 0.0300000000000011 0.0300000000000011 0.0 221 -222 0.0233159065246582 0.0200000000000031 0.0200000000000031 0.0 222 -223 0.0232350826263428 0.019999999999996 0.019999999999996 0.0 223 -224 0.023000955581665 0.0300000000000011 0.0300000000000011 0.0 224 -225 0.0230231285095215 0.0200000000000031 0.0200000000000031 0.0 225 -226 0.022864818572998 0.019999999999996 0.019999999999996 0.0 226 -227 0.0486090183258057 0.0500000000000043 0.0500000000000043 0.0 227 -228 0.0247719287872314 0.029999999999994 0.029999999999994 0.0 228 -229 0.0233240127563477 0.0200000000000031 0.0200000000000031 0.0 229 -230 0.0263748168945312 0.0300000000000011 0.0300000000000011 0.0 230 -231 0.0231301784515381 0.019999999999996 0.019999999999996 0.0 231 -232 0.0229740142822266 0.0200000000000031 0.0200000000000031 0.0 232 -233 0.0233769416809082 0.0300000000000011 0.0300000000000011 0.0 233 -234 0.0495500564575195 0.0499999999999972 0.0499999999999972 0.0 234 -235 0.0234000682830811 0.0200000000000031 0.0200000000000031 0.0 235 -236 0.0231790542602539 0.019999999999996 0.019999999999996 0.0 236 -237 0.0230810642242432 0.0300000000000011 0.0300000000000011 0.0 237 -238 0.0229249000549316 0.0200000000000031 0.0200000000000031 0.0 238 -239 0.0257270336151123 0.019999999999996 0.019999999999996 0.0 239 -240 0.0246570110321045 0.0300000000000011 0.0300000000000011 0.0 240 -241 0.049109935760498 0.0499999999999972 0.0499999999999972 0.0 241 -242 0.0233631134033203 0.0200000000000031 0.0200000000000031 0.0 242 -243 0.0232560634613037 0.0300000000000011 0.0300000000000011 0.0 243 -244 0.0232639312744141 0.019999999999996 0.019999999999996 0.0 244 -245 0.0231678485870361 0.0200000000000031 0.0200000000000031 0.0 245 -246 0.0229339599609375 0.0200000000000031 0.0200000000000031 0.0 246 -247 0.0234620571136475 0.029999999999994 0.029999999999994 0.0 247 -248 0.0517890453338623 0.0500000000000043 0.0500000000000043 0.0 248 -249 0.0233941078186035 0.019999999999996 0.019999999999996 0.0 249 -250 0.0230710506439209 0.0300000000000011 0.0300000000000011 0.0 250 -251 0.0229940414428711 0.0200000000000031 0.0200000000000031 0.0 251 -252 0.0231740474700928 0.019999999999996 0.019999999999996 0.0 252 -253 0.0238161087036133 0.0300000000000011 0.0300000000000011 0.0 253 -254 0.0480771064758301 0.0399999999999991 0.0399999999999991 0.0 254 -255 0.0314779281616211 0.0399999999999991 0.0399999999999991 0.0 255 -256 0.0233800411224365 0.0200000000000031 0.0200000000000031 0.0 256 -257 0.0274808406829834 0.0300000000000011 0.0300000000000011 0.0 257 -258 0.0230331420898438 0.019999999999996 0.019999999999996 0.0 258 -259 0.0229949951171875 0.0200000000000031 0.0200000000000031 0.0 259 -260 0.0227811336517334 0.0300000000000011 0.0300000000000011 0.0 260 -261 0.048346996307373 0.0399999999999991 0.0399999999999991 0.0 261 -262 0.0237669944763184 0.0300000000000011 0.0300000000000011 0.0 262 -263 0.0234119892120361 0.019999999999996 0.019999999999996 0.0 263 -264 0.0230929851531982 0.0300000000000011 0.0300000000000011 0.0 264 -265 0.0237300395965576 0.0200000000000031 0.0200000000000031 0.0 265 -266 0.0250859260559082 0.019999999999996 0.019999999999996 0.0 266 -267 0.0239300727844238 0.0300000000000011 0.0300000000000011 0.0 267 -268 0.048508882522583 0.0499999999999972 0.0499999999999972 0.0 268 -269 0.0236718654632568 0.0200000000000031 0.0200000000000031 0.0 269 -270 0.0233798027038574 0.0200000000000031 0.0200000000000031 0.0 270 -271 0.0230140686035156 0.029999999999994 0.029999999999994 0.0 271 -272 0.023123025894165 0.0200000000000031 0.0200000000000031 0.0 272 -273 0.0230128765106201 0.0200000000000031 0.0200000000000031 0.0 273 -274 0.0230889320373535 0.029999999999994 0.029999999999994 0.0 274 -275 0.0541810989379883 0.0500000000000043 0.0500000000000043 0.0 275 -276 0.0234689712524414 0.019999999999996 0.019999999999996 0.0 276 -277 0.0232949256896973 0.0300000000000011 0.0300000000000011 0.0 277 -278 0.0229971408843994 0.0200000000000031 0.0200000000000031 0.0 278 -279 0.023047924041748 0.019999999999996 0.019999999999996 0.0 279 -280 0.0229649543762207 0.0300000000000011 0.0300000000000011 0.0 280 -281 0.0231289863586426 0.0200000000000031 0.0200000000000031 0.0 281 -282 0.0487880706787109 0.0499999999999972 0.0499999999999972 0.0 282 -283 0.0234870910644531 0.0200000000000031 0.0200000000000031 0.0 283 -284 0.0263619422912598 0.0300000000000011 0.0300000000000011 0.0 284 -285 0.0238580703735352 0.019999999999996 0.019999999999996 0.0 285 -286 0.0231029987335205 0.0300000000000011 0.0300000000000011 0.0 286 -287 0.0230438709259033 0.019999999999996 0.019999999999996 0.0 287 -288 0.0477249622344971 0.0500000000000043 0.0500000000000043 0.0 288 -289 0.024465799331665 0.019999999999996 0.019999999999996 0.0 289 -290 0.023345947265625 0.0200000000000031 0.0200000000000031 0.0 290 -291 0.0297031402587891 0.0300000000000011 0.0300000000000011 0.0 291 -292 0.0236890316009521 0.0300000000000011 0.0300000000000011 0.0 292 -293 0.0227231979370117 0.019999999999996 0.019999999999996 0.0 293 -294 0.0271649360656738 0.0300000000000011 0.0300000000000011 0.0 294 -295 0.0483009815216064 0.0499999999999972 0.0499999999999972 0.0 295 -296 0.0236551761627197 0.0200000000000031 0.0200000000000031 0.0 296 -297 0.0233678817749023 0.0200000000000031 0.0200000000000031 0.0 297 -298 0.0230870246887207 0.029999999999994 0.029999999999994 0.0 298 -299 0.0232620239257812 0.0200000000000031 0.0200000000000031 0.0 299 -300 0.0231177806854248 0.0200000000000031 0.0200000000000031 0.0 300 -301 0.0231750011444092 0.029999999999994 0.029999999999994 0.0 301 -302 0.0530638694763184 0.0500000000000043 0.0500000000000043 0.0 302 -303 0.0237231254577637 0.019999999999996 0.019999999999996 0.0 303 -304 0.0232911109924316 0.0300000000000011 0.0300000000000011 0.0 304 -305 0.0233948230743408 0.0200000000000031 0.0200000000000031 0.0 305 -306 0.0232441425323486 0.019999999999996 0.019999999999996 0.0 306 -307 0.0230438709259033 0.0300000000000011 0.0300000000000011 0.0 307 -308 0.0230541229248047 0.0200000000000031 0.0200000000000031 0.0 308 -309 0.0487320423126221 0.0499999999999972 0.0499999999999972 0.0 309 -310 0.0232770442962646 0.0200000000000031 0.0200000000000031 0.0 310 -311 0.0253291130065918 0.0300000000000011 0.0300000000000011 0.0 311 -312 0.0244429111480713 0.019999999999996 0.019999999999996 0.0 312 -313 0.0229580402374268 0.0200000000000031 0.0200000000000031 0.0 313 -314 0.0229830741882324 0.029999999999994 0.029999999999994 0.0 314 -315 0.022658109664917 0.0200000000000031 0.0200000000000031 0.0 315 -316 0.0462629795074463 0.0499999999999972 0.0499999999999972 0.0 316 -317 0.023582935333252 0.0200000000000031 0.0200000000000031 0.0 317 -318 0.0232110023498535 0.0200000000000031 0.0200000000000031 0.0 318 -319 0.0232689380645752 0.029999999999994 0.029999999999994 0.0 319 -320 0.0231220722198486 0.0200000000000031 0.0200000000000031 0.0 320 -321 0.0256280899047852 0.0300000000000011 0.0300000000000011 0.0 321 -322 0.0481250286102295 0.0399999999999991 0.0399999999999991 0.0 322 -323 0.0235259532928467 0.0300000000000011 0.0300000000000011 0.0 323 -324 0.0235180854797363 0.019999999999996 0.019999999999996 0.0 324 -325 0.0231471061706543 0.0200000000000031 0.0200000000000031 0.0 325 -326 0.0238540172576904 0.0300000000000011 0.0300000000000011 0.0 326 -327 0.02276611328125 0.019999999999996 0.019999999999996 0.0 327 -328 0.0304388999938965 0.0399999999999991 0.0300000000000011 0.01 328 -329 0.0523970127105713 0.0500000000000043 0.0500000000000043 0.0 329 -330 0.023996114730835 0.029999999999994 0.029999999999994 0.0 330 -331 0.0234379768371582 0.0200000000000031 0.0200000000000031 0.0 331 -332 0.0230920314788818 0.019999999999996 0.019999999999996 0.0 332 -333 0.02305006980896 0.0300000000000011 0.0300000000000011 0.0 333 -334 0.0229852199554443 0.0200000000000031 0.0200000000000031 0.0 334 -335 0.0228848457336426 0.019999999999996 0.019999999999996 0.0 335 -336 0.0461750030517578 0.0500000000000043 0.0500000000000043 0.0 336 -337 0.0242049694061279 0.019999999999996 0.019999999999996 0.0 337 -338 0.0232689380645752 0.0300000000000011 0.0300000000000011 0.0 338 -339 0.027277946472168 0.0200000000000031 0.0200000000000031 0.0 339 -340 0.0230321884155273 0.0300000000000011 0.0300000000000011 0.0 340 -341 0.0230269432067871 0.019999999999996 0.019999999999996 0.0 341 -342 0.0231468677520752 0.0200000000000031 0.0200000000000031 0.0 342 -343 0.0488090515136719 0.0499999999999972 0.0499999999999972 0.0 343 -344 0.0232529640197754 0.0300000000000011 0.0300000000000011 0.0 344 -345 0.0230770111083984 0.0200000000000031 0.0200000000000031 0.0 345 -346 0.0230259895324707 0.019999999999996 0.019999999999996 0.0 346 -347 0.0230309963226318 0.0200000000000031 0.0200000000000031 0.0 347 -348 0.026080846786499 0.0300000000000011 0.0300000000000011 0.0 348 -349 0.023392915725708 0.019999999999996 0.019999999999996 0.0 349 -350 0.0461099147796631 0.0499999999999972 0.0499999999999972 0.0 350 -351 0.0233287811279297 0.0200000000000031 0.0200000000000031 0.0 351 -352 0.023190975189209 0.0300000000000011 0.0300000000000011 0.0 352 -353 0.0231750011444092 0.019999999999996 0.019999999999996 0.0 353 -354 0.0230758190155029 0.0200000000000031 0.0200000000000031 0.0 354 -355 0.0229721069335938 0.0300000000000011 0.0300000000000011 0.0 355 -356 0.0483551025390625 0.0499999999999972 0.0499999999999972 0.0 356 -357 0.0269951820373535 0.0200000000000031 0.0200000000000031 0.0 357 -358 0.0235021114349365 0.0300000000000011 0.0300000000000011 0.0 358 -359 0.0231399536132812 0.019999999999996 0.019999999999996 0.0 359 -360 0.0230071544647217 0.0200000000000031 0.0200000000000031 0.0 360 -361 0.0228490829467773 0.019999999999996 0.019999999999996 0.0 361 -362 0.0229380130767822 0.0300000000000011 0.0300000000000011 0.0 362 -363 0.0501840114593506 0.0500000000000043 0.0500000000000043 0.0 363 -364 0.029426097869873 0.029999999999994 0.029999999999994 0.0 364 -365 0.023777961730957 0.0200000000000031 0.0200000000000031 0.0 365 -366 0.0276000499725342 0.0300000000000011 0.0300000000000011 0.0 366 -367 0.0230789184570312 0.019999999999996 0.019999999999996 0.0 367 -368 0.0233089923858643 0.0200000000000031 0.0200000000000031 0.0 368 -369 0.0229260921478271 0.0300000000000011 0.0300000000000011 0.0 369 -370 0.0456759929656982 0.0399999999999991 0.0399999999999991 0.0 370 -371 0.0234260559082031 0.0300000000000011 0.0300000000000011 0.0 371 -372 0.0235531330108643 0.019999999999996 0.019999999999996 0.0 372 -373 0.0229899883270264 0.0200000000000031 0.0200000000000031 0.0 373 -374 0.0239078998565674 0.0300000000000011 0.0300000000000011 0.0 374 -375 0.0229928493499756 0.019999999999996 0.019999999999996 0.0 375 -376 0.0269260406494141 0.0300000000000011 0.0300000000000011 0.0 376 -377 0.0490090847015381 0.0499999999999972 0.0499999999999972 0.0 377 -378 0.0235331058502197 0.0200000000000031 0.0200000000000031 0.0 378 -379 0.0232670307159424 0.0200000000000031 0.0200000000000031 0.0 379 -380 0.0229969024658203 0.029999999999994 0.029999999999994 0.0 380 -381 0.0230321884155273 0.0200000000000031 0.0200000000000031 0.0 381 -382 0.0229909420013428 0.0200000000000031 0.0200000000000031 0.0 382 -383 0.022780179977417 0.029999999999994 0.029999999999994 0.0 383 -384 0.0519418716430664 0.0500000000000043 0.0500000000000043 0.0 384 -385 0.0233969688415527 0.019999999999996 0.019999999999996 0.0 385 -386 0.0231471061706543 0.0200000000000031 0.0200000000000031 0.0 386 -387 0.0230250358581543 0.0300000000000011 0.0300000000000011 0.0 387 -388 0.0229988098144531 0.019999999999996 0.019999999999996 0.0 388 -389 0.0229358673095703 0.0200000000000031 0.0200000000000031 0.0 389 -390 0.0482490062713623 0.0499999999999972 0.0499999999999972 0.0 390 -391 0.0239629745483398 0.0200000000000031 0.0200000000000031 0.0 391 -392 0.0235099792480469 0.0300000000000011 0.0300000000000011 0.0 392 -393 0.0232250690460205 0.019999999999996 0.019999999999996 0.0 393 -394 0.0269668102264404 0.0300000000000011 0.0300000000000011 0.0 394 -395 0.0230469703674316 0.0200000000000031 0.0200000000000031 0.0 395 -396 0.0230209827423096 0.019999999999996 0.019999999999996 0.0 396 -397 0.0488598346710205 0.0500000000000043 0.0500000000000043 0.0 397 -398 0.0243711471557617 0.029999999999994 0.029999999999994 0.0 398 -399 0.023435115814209 0.0200000000000031 0.0200000000000031 0.0 399 -400 0.0307729244232178 0.0300000000000011 0.0300000000000011 0.0 400 -401 0.0231430530548096 0.0300000000000011 0.0300000000000011 0.0 401 -402 0.0228579044342041 0.019999999999996 0.019999999999996 0.0 402 -403 0.0268239974975586 0.0300000000000011 0.0300000000000011 0.0 403 -404 0.0487518310546875 0.0399999999999991 0.0399999999999991 0.0 404 -405 0.0233860015869141 0.0300000000000011 0.0300000000000011 0.0 405 -406 0.0233309268951416 0.0200000000000031 0.0200000000000031 0.0 406 -407 0.0230538845062256 0.019999999999996 0.019999999999996 0.0 407 -408 0.0232100486755371 0.0300000000000011 0.0300000000000011 0.0 408 -409 0.0231878757476807 0.0200000000000031 0.0200000000000031 0.0 409 -410 0.0229208469390869 0.019999999999996 0.019999999999996 0.0 410 -411 0.0527458190917969 0.0600000000000023 0.0600000000000023 0.0 411 -412 0.0235259532928467 0.019999999999996 0.019999999999996 0.0 412 -413 0.0231070518493652 0.0200000000000031 0.0200000000000031 0.0 413 -414 0.0231637954711914 0.0300000000000011 0.0300000000000011 0.0 414 -415 0.0231881141662598 0.019999999999996 0.019999999999996 0.0 415 -416 0.0229959487915039 0.0200000000000031 0.0200000000000031 0.0 416 -417 0.0480611324310303 0.0499999999999972 0.0499999999999972 0.0 417 -418 0.0235860347747803 0.0200000000000031 0.0200000000000031 0.0 418 -419 0.0235400199890137 0.0300000000000011 0.0300000000000011 0.0 419 -420 0.0231409072875977 0.019999999999996 0.019999999999996 0.0 420 -421 0.0267078876495361 0.0300000000000011 0.0300000000000011 0.0 421 -422 0.0230278968811035 0.0200000000000031 0.0200000000000031 0.0 422 -423 0.0228691101074219 0.019999999999996 0.019999999999996 0.0 423 -424 0.0483551025390625 0.0500000000000043 0.0500000000000043 0.0 424 -425 0.0237739086151123 0.029999999999994 0.029999999999994 0.0 425 -426 0.0233981609344482 0.0200000000000031 0.0200000000000031 0.0 426 -427 0.0230469703674316 0.0200000000000031 0.0200000000000031 0.0 427 -428 0.0233399868011475 0.029999999999994 0.029999999999994 0.0 428 -429 0.0231611728668213 0.0200000000000031 0.0200000000000031 0.0 429 -430 0.0267009735107422 0.0300000000000011 0.0300000000000011 0.0 430 -431 0.0472571849822998 0.0399999999999991 0.0399999999999991 0.0 431 -432 0.0234270095825195 0.0300000000000011 0.0300000000000011 0.0 432 -433 0.0233609676361084 0.019999999999996 0.019999999999996 0.0 433 -434 0.0230159759521484 0.0200000000000031 0.0200000000000031 0.0 434 -435 0.0242648124694824 0.0300000000000011 0.0300000000000011 0.0 435 -436 0.0230550765991211 0.019999999999996 0.019999999999996 0.0 436 -437 0.0298559665679932 0.0300000000000011 0.0300000000000011 0.0 437 -438 0.0506420135498047 0.0500000000000043 0.0500000000000043 0.0 438 -439 0.0245800018310547 0.029999999999994 0.029999999999994 0.0 439 -440 0.0232729911804199 0.0200000000000031 0.0200000000000031 0.0 440 -441 0.023047924041748 0.019999999999996 0.019999999999996 0.0 441 -442 0.0230588912963867 0.0300000000000011 0.0300000000000011 0.0 442 -443 0.0230181217193604 0.0200000000000031 0.0200000000000031 0.0 443 -444 0.0474259853363037 0.0499999999999972 0.0499999999999972 0.0 444 -445 0.0234999656677246 0.0200000000000031 0.0200000000000031 0.0 445 -446 0.0245218276977539 0.019999999999996 0.019999999999996 0.0 446 -447 0.0232257843017578 0.0300000000000011 0.0300000000000011 0.0 447 -448 0.0262331962585449 0.0200000000000031 0.0200000000000031 0.0 448 -449 0.0228760242462158 0.0300000000000011 0.0300000000000011 0.0 449 -450 0.0228469371795654 0.019999999999996 0.019999999999996 0.0 450 -451 0.0489568710327148 0.0500000000000043 0.0500000000000043 0.0 451 -452 0.0236458778381348 0.019999999999996 0.019999999999996 0.0 452 -453 0.0232670307159424 0.0300000000000011 0.0300000000000011 0.0 453 -454 0.0231130123138428 0.0200000000000031 0.0200000000000031 0.0 454 -455 0.0231020450592041 0.019999999999996 0.019999999999996 0.0 455 -456 0.0229918956756592 0.0300000000000011 0.0300000000000011 0.0 456 -457 0.0239298343658447 0.0200000000000031 0.0200000000000031 0.0 457 -458 0.0493390560150146 0.0499999999999972 0.0499999999999972 0.0 458 -459 0.0235741138458252 0.019999999999996 0.019999999999996 0.0 459 -460 0.0232348442077637 0.0300000000000011 0.0300000000000011 0.0 460 -461 0.023144006729126 0.0200000000000031 0.0200000000000031 0.0 461 -462 0.0232930183410645 0.019999999999996 0.019999999999996 0.0 462 -463 0.0231001377105713 0.0300000000000011 0.0300000000000011 0.0 463 -464 0.022939920425415 0.0200000000000031 0.0200000000000031 0.0 464 -465 0.0494201183319092 0.0499999999999972 0.0499999999999972 0.0 465 -466 0.0259408950805664 0.0200000000000031 0.0200000000000031 0.0 466 -467 0.0232219696044922 0.0300000000000011 0.0300000000000011 0.0 467 -468 0.0229430198669434 0.019999999999996 0.019999999999996 0.0 468 -469 0.0229699611663818 0.0200000000000031 0.0200000000000031 0.0 469 -470 0.023082971572876 0.0300000000000011 0.0300000000000011 0.0 470 -471 0.0460779666900635 0.0399999999999991 0.0399999999999991 0.0 471 -472 0.0259521007537842 0.0300000000000011 0.0300000000000011 0.0 472 -473 0.0284790992736816 0.029999999999994 0.029999999999994 0.0 473 -474 0.0231249332427979 0.0200000000000031 0.0200000000000031 0.0 474 -475 0.0256848335266113 0.0300000000000011 0.0300000000000011 0.0 475 -476 0.0245170593261719 0.019999999999996 0.019999999999996 0.0 476 -477 0.0228760242462158 0.0200000000000031 0.0200000000000031 0.0 477 -478 0.0482878684997559 0.0499999999999972 0.0499999999999972 0.0 478 -479 0.0235881805419922 0.0300000000000011 0.0300000000000011 0.0 479 -480 0.0232489109039307 0.0200000000000031 0.0200000000000031 0.0 480 -481 0.0233352184295654 0.019999999999996 0.019999999999996 0.0 481 -482 0.0229990482330322 0.0300000000000011 0.0300000000000011 0.0 482 -483 0.0238139629364014 0.0200000000000031 0.0200000000000031 0.0 483 -484 0.0229029655456543 0.019999999999996 0.019999999999996 0.0 484 -485 0.0516219139099121 0.0500000000000043 0.0500000000000043 0.0 485 -486 0.023360013961792 0.029999999999994 0.029999999999994 0.0 486 -487 0.0233120918273926 0.0200000000000031 0.0200000000000031 0.0 487 -488 0.0231151580810547 0.0200000000000031 0.0200000000000031 0.0 488 -489 0.0229690074920654 0.029999999999994 0.029999999999994 0.0 489 -490 0.0230300426483154 0.0200000000000031 0.0200000000000031 0.0 490 -491 0.0228698253631592 0.0200000000000031 0.0200000000000031 0.0 491 -492 0.0457451343536377 0.0499999999999972 0.0499999999999972 0.0 492 -493 0.0249300003051758 0.0200000000000031 0.0200000000000031 0.0 493 -494 0.0259578227996826 0.029999999999994 0.029999999999994 0.0 494 -495 0.0231161117553711 0.0200000000000031 0.0200000000000031 0.0 495 -496 0.0229859352111816 0.0300000000000011 0.0300000000000011 0.0 496 -497 0.0230338573455811 0.019999999999996 0.019999999999996 0.0 497 -498 0.0484039783477783 0.0500000000000043 0.0500000000000043 0.0 498 -499 0.0237560272216797 0.019999999999996 0.019999999999996 0.0 499 -500 0.0233612060546875 0.0200000000000031 0.0200000000000031 0.0 500 -501 0.0233550071716309 0.0300000000000011 0.0300000000000011 0.0 501 -502 0.0231049060821533 0.019999999999996 0.019999999999996 0.0 502 -503 0.026008129119873 0.0300000000000011 0.0300000000000011 0.0 503 -504 0.0228710174560547 0.0200000000000031 0.0200000000000031 0.0 504 -505 0.0483829975128174 0.0499999999999972 0.0499999999999972 0.0 505 -506 0.0237247943878174 0.0200000000000031 0.0200000000000031 0.0 506 -507 0.02410888671875 0.029999999999994 0.029999999999994 0.0 507 -508 0.0231809616088867 0.0200000000000031 0.0200000000000031 0.0 508 -509 0.0286002159118652 0.0300000000000011 0.0300000000000011 0.0 509 -510 0.0245559215545654 0.019999999999996 0.019999999999996 0.0 510 -511 0.0228598117828369 0.0300000000000011 0.0300000000000011 0.0 511 -512 0.0508739948272705 0.0500000000000043 0.0500000000000043 0.0 512 -513 0.0235428810119629 0.019999999999996 0.019999999999996 0.0 513 -514 0.0231621265411377 0.0200000000000031 0.0200000000000031 0.0 514 -515 0.0231170654296875 0.0300000000000011 0.0300000000000011 0.0 515 -516 0.023061990737915 0.019999999999996 0.019999999999996 0.0 516 -517 0.0231702327728271 0.0200000000000031 0.0200000000000031 0.0 517 -518 0.0230000019073486 0.0300000000000011 0.0300000000000011 0.0 518 -519 0.0464069843292236 0.0399999999999991 0.0399999999999991 0.0 519 -520 0.0233228206634521 0.0300000000000011 0.0300000000000011 0.0 520 -521 0.0263099670410156 0.019999999999996 0.019999999999996 0.0 521 -522 0.0230581760406494 0.0300000000000011 0.0300000000000011 0.0 522 -523 0.0230810642242432 0.019999999999996 0.019999999999996 0.0 523 -524 0.0231571197509766 0.0200000000000031 0.0200000000000031 0.0 524 -525 0.0479769706726074 0.0499999999999972 0.0499999999999972 0.0 525 -526 0.0237100124359131 0.0200000000000031 0.0200000000000031 0.0 526 -527 0.0232999324798584 0.0300000000000011 0.0300000000000011 0.0 527 -528 0.0232400894165039 0.019999999999996 0.019999999999996 0.0 528 -529 0.0229151248931885 0.0200000000000031 0.0200000000000031 0.0 529 -530 0.0261499881744385 0.0300000000000011 0.0300000000000011 0.0 530 -531 0.0231139659881592 0.019999999999996 0.019999999999996 0.0 531 -532 0.0486347675323486 0.0500000000000043 0.0500000000000043 0.0 532 -533 0.023561954498291 0.0300000000000011 0.0300000000000011 0.0 533 -534 0.0232679843902588 0.019999999999996 0.019999999999996 0.0 534 -535 0.023292064666748 0.0200000000000031 0.0200000000000031 0.0 535 -536 0.0231978893280029 0.0300000000000011 0.0300000000000011 0.0 536 -537 0.0229289531707764 0.019999999999996 0.019999999999996 0.0 537 -538 0.0231430530548096 0.0200000000000031 0.0200000000000031 0.0 538 -539 0.0520761013031006 0.0499999999999972 0.0499999999999972 0.0 539 -540 0.0233478546142578 0.0300000000000011 0.0300000000000011 0.0 540 -541 0.0231640338897705 0.019999999999996 0.019999999999996 0.0 541 -542 0.0230228900909424 0.0200000000000031 0.0200000000000031 0.0 542 -543 0.0231611728668213 0.0300000000000011 0.0300000000000011 0.0 543 -544 0.0238080024719238 0.019999999999996 0.019999999999996 0.0 544 -545 0.0228090286254883 0.0200000000000031 0.0200000000000031 0.0 545 -546 0.0527040958404541 0.0600000000000023 0.0600000000000023 0.0 546 -547 0.0233268737792969 0.019999999999996 0.019999999999996 0.0 547 -548 0.0268959999084473 0.0300000000000011 0.0300000000000011 0.0 548 -549 0.02323317527771 0.0200000000000031 0.0200000000000031 0.0 549 -550 0.0231490135192871 0.019999999999996 0.019999999999996 0.0 550 -551 0.0229969024658203 0.0300000000000011 0.0300000000000011 0.0 551 -552 0.0478971004486084 0.0399999999999991 0.0399999999999991 0.0 552 -553 0.0237979888916016 0.0300000000000011 0.0300000000000011 0.0 553 -554 0.0234241485595703 0.0200000000000031 0.0200000000000031 0.0 554 -555 0.023115873336792 0.019999999999996 0.019999999999996 0.0 555 -556 0.0237019062042236 0.0300000000000011 0.0300000000000011 0.0 556 -557 0.0229599475860596 0.0200000000000031 0.0200000000000031 0.0 557 -558 0.0263819694519043 0.029999999999994 0.029999999999994 0.0 558 -559 0.0488171577453613 0.0500000000000043 0.0500000000000043 0.0 559 -560 0.023486852645874 0.019999999999996 0.019999999999996 0.0 560 -561 0.0233681201934814 0.0200000000000031 0.0200000000000031 0.0 561 -562 0.0230288505554199 0.0300000000000011 0.0300000000000011 0.0 562 -563 0.022907018661499 0.019999999999996 0.019999999999996 0.0 563 -564 0.0227639675140381 0.0200000000000031 0.0200000000000031 0.0 564 -565 0.0228629112243652 0.019999999999996 0.019999999999996 0.0 565 -566 0.0502970218658447 0.0499999999999972 0.0499999999999972 0.0 566 -567 0.0234780311584473 0.0200000000000031 0.0200000000000031 0.0 567 -568 0.0246810913085938 0.019999999999996 0.019999999999996 0.0 568 -569 0.0233399868011475 0.0300000000000011 0.0300000000000011 0.0 569 -570 0.0233209133148193 0.0200000000000031 0.0200000000000031 0.0 570 -571 0.0233681201934814 0.019999999999996 0.019999999999996 0.0 571 -572 0.0485889911651611 0.0500000000000043 0.0500000000000043 0.0 572 -573 0.0244321823120117 0.029999999999994 0.029999999999994 0.0 573 -574 0.0241711139678955 0.0200000000000031 0.0200000000000031 0.0 574 -575 0.0249710083007812 0.0300000000000011 0.0300000000000011 0.0 575 -576 0.0267090797424316 0.019999999999996 0.019999999999996 0.0 576 -577 0.0232799053192139 0.0300000000000011 0.0300000000000011 0.0 577 -578 0.0231969356536865 0.0200000000000031 0.0200000000000031 0.0 578 -579 0.0491700172424316 0.0499999999999972 0.0499999999999972 0.0 579 -580 0.025277853012085 0.0200000000000031 0.0200000000000031 0.0 580 -581 0.0265741348266602 0.0300000000000011 0.0300000000000011 0.0 581 -582 0.0273458957672119 0.029999999999994 0.029999999999994 0.0 582 -583 0.0252799987792969 0.0200000000000031 0.0200000000000031 0.0 583 -584 0.0245480537414551 0.0300000000000011 0.0300000000000011 0.0 584 -585 0.0260021686553955 0.019999999999996 0.019999999999996 0.0 585 -586 0.0474262237548828 0.0500000000000043 0.0500000000000043 0.0 586 -587 0.0234909057617188 0.0300000000000011 0.0300000000000011 0.0 587 -588 0.023231029510498 0.019999999999996 0.019999999999996 0.0 588 -589 0.0231058597564697 0.0200000000000031 0.0200000000000031 0.0 589 -590 0.0234060287475586 0.0300000000000011 0.0300000000000011 0.0 590 -591 0.0230560302734375 0.019999999999996 0.019999999999996 0.0 591 -592 0.0236189365386963 0.0200000000000031 0.0200000000000031 0.0 592 -593 0.0531678199768066 0.0599999999999952 0.0599999999999952 0.0 593 -594 0.0234320163726807 0.0200000000000031 0.0200000000000031 0.0 594 -595 0.0234501361846924 0.019999999999996 0.019999999999996 0.0 595 -596 0.023097038269043 0.0300000000000011 0.0300000000000011 0.0 596 -597 0.0239620208740234 0.0200000000000031 0.0200000000000031 0.0 597 -598 0.023064136505127 0.019999999999996 0.019999999999996 0.0 598 -599 0.0469310283660889 0.0500000000000043 0.0500000000000043 0.0 599 -600 0.0238142013549805 0.019999999999996 0.019999999999996 0.0 600 -601 0.0232729911804199 0.0200000000000031 0.0200000000000031 0.0 601 -602 0.0264449119567871 0.0300000000000011 0.0300000000000011 0.0 602 -603 0.0250101089477539 0.0300000000000011 0.0300000000000011 0.0 603 -604 0.022953987121582 0.019999999999996 0.019999999999996 0.0 604 -605 0.0227360725402832 0.0200000000000031 0.0200000000000031 0.0 605 -606 0.0484528541564941 0.0499999999999972 0.0499999999999972 0.0 606 -607 0.0238401889801025 0.0200000000000031 0.0200000000000031 0.0 607 -608 0.023205041885376 0.0300000000000011 0.0300000000000011 0.0 608 -609 0.0230309963226318 0.019999999999996 0.019999999999996 0.0 609 -610 0.0233237743377686 0.0200000000000031 0.0200000000000031 0.0 610 -611 0.0229151248931885 0.0300000000000011 0.0300000000000011 0.0 611 -612 0.0266458988189697 0.019999999999996 0.019999999999996 0.0 612 -613 0.0459887981414795 0.0499999999999972 0.0499999999999972 0.0 613 -614 0.0233139991760254 0.0200000000000031 0.0200000000000031 0.0 614 -615 0.0232000350952148 0.0300000000000011 0.0300000000000011 0.0 615 -616 0.0238010883331299 0.019999999999996 0.019999999999996 0.0 616 -617 0.0231029987335205 0.0200000000000031 0.0200000000000031 0.0 617 -618 0.031013011932373 0.0300000000000011 0.0300000000000011 0.0 618 -619 0.0480711460113525 0.0499999999999972 0.0499999999999972 0.0 619 -620 0.0269320011138916 0.0300000000000011 0.0300000000000011 0.0 620 -621 0.0233550071716309 0.0200000000000031 0.0200000000000031 0.0 621 -622 0.0232939720153809 0.029999999999994 0.029999999999994 0.0 622 -623 0.0229189395904541 0.0200000000000031 0.0200000000000031 0.0 623 -624 0.022881031036377 0.0200000000000031 0.0200000000000031 0.0 624 -625 0.0228018760681152 0.029999999999994 0.029999999999994 0.0 625 -626 0.0487551689147949 0.0400000000000063 0.0400000000000063 0.0 626 -627 0.0234999656677246 0.029999999999994 0.029999999999994 0.0 627 -628 0.023996114730835 0.0200000000000031 0.0200000000000031 0.0 628 -629 0.0232369899749756 0.0300000000000011 0.0300000000000011 0.0 629 -630 0.0269510746002197 0.019999999999996 0.019999999999996 0.0 630 -631 0.024583101272583 0.0300000000000011 0.0300000000000011 0.0 631 -632 0.0230491161346436 0.0200000000000031 0.0200000000000031 0.0 632 -633 0.0473129749298096 0.0499999999999972 0.0499999999999972 0.0 633 -634 0.0233309268951416 0.0200000000000031 0.0200000000000031 0.0 634 -635 0.0232229232788086 0.019999999999996 0.019999999999996 0.0 635 -636 0.0229809284210205 0.0300000000000011 0.0300000000000011 0.0 636 -637 0.0231940746307373 0.0200000000000031 0.0200000000000031 0.0 637 -638 0.0231130123138428 0.019999999999996 0.019999999999996 0.0 638 -639 0.0522749423980713 0.0500000000000043 0.0500000000000043 0.0 639 -640 0.0235979557037354 0.029999999999994 0.029999999999994 0.0 640 -641 0.0233168601989746 0.0200000000000031 0.0200000000000031 0.0 641 -642 0.0231528282165527 0.0300000000000011 0.0300000000000011 0.0 642 -643 0.0232172012329102 0.019999999999996 0.019999999999996 0.0 643 -644 0.0227980613708496 0.0200000000000031 0.0200000000000031 0.0 644 -645 0.0227620601654053 0.0200000000000031 0.0200000000000031 0.0 645 -646 0.0490891933441162 0.0499999999999972 0.0499999999999972 0.0 646 -647 0.0240461826324463 0.0300000000000011 0.0300000000000011 0.0 647 -648 0.0267610549926758 0.019999999999996 0.019999999999996 0.0 648 -649 0.0232100486755371 0.0300000000000011 0.0300000000000011 0.0 649 -650 0.0230560302734375 0.0200000000000031 0.0200000000000031 0.0 650 -651 0.023500919342041 0.019999999999996 0.019999999999996 0.0 651 -652 0.0230460166931152 0.0300000000000011 0.0300000000000011 0.0 652 -653 0.0512759685516357 0.0500000000000043 0.0500000000000043 0.0 653 -654 0.0272390842437744 0.019999999999996 0.019999999999996 0.0 654 -655 0.0247349739074707 0.0300000000000011 0.0300000000000011 0.0 655 -656 0.0230178833007812 0.0200000000000031 0.0200000000000031 0.0 656 -657 0.0271899700164795 0.029999999999994 0.029999999999994 0.0 657 -658 0.0229711532592773 0.0200000000000031 0.0200000000000031 0.0 658 -659 0.0228548049926758 0.019999999999996 0.019999999999996 0.0 659 -660 0.0488860607147217 0.0500000000000043 0.0500000000000043 0.0 660 -661 0.0232799053192139 0.0300000000000011 0.0300000000000011 0.0 661 -662 0.0232510566711426 0.019999999999996 0.019999999999996 0.0 662 -663 0.0229790210723877 0.0200000000000031 0.0200000000000031 0.0 663 -664 0.0242810249328613 0.0300000000000011 0.0300000000000011 0.0 664 -665 0.0230100154876709 0.019999999999996 0.019999999999996 0.0 665 -666 0.0498199462890625 0.0500000000000043 0.0500000000000043 0.0 666 -667 0.0237331390380859 0.019999999999996 0.019999999999996 0.0 667 -668 0.0234551429748535 0.0300000000000011 0.0300000000000011 0.0 668 -669 0.0231800079345703 0.0200000000000031 0.0200000000000031 0.0 669 -670 0.0229709148406982 0.019999999999996 0.019999999999996 0.0 670 -671 0.023015022277832 0.0300000000000011 0.0300000000000011 0.0 671 -672 0.0230131149291992 0.0200000000000031 0.0200000000000031 0.0 672 -673 0.0487980842590332 0.0499999999999972 0.0499999999999972 0.0 673 -674 0.0240719318389893 0.0200000000000031 0.0200000000000031 0.0 674 -675 0.0269160270690918 0.029999999999994 0.029999999999994 0.0 675 -676 0.0230348110198975 0.0200000000000031 0.0200000000000031 0.0 676 -677 0.0227870941162109 0.0300000000000011 0.0300000000000011 0.0 677 -678 0.0228049755096436 0.019999999999996 0.019999999999996 0.0 678 -679 0.0226888656616211 0.0200000000000031 0.0200000000000031 0.0 679 -680 0.0477821826934814 0.0499999999999972 0.0499999999999972 0.0 680 -681 0.0232739448547363 0.0200000000000031 0.0200000000000031 0.0 681 -682 0.023953914642334 0.0300000000000011 0.0300000000000011 0.0 682 -683 0.0229859352111816 0.019999999999996 0.019999999999996 0.0 683 -684 0.0254220962524414 0.0200000000000031 0.0200000000000031 0.0 684 -685 0.0239348411560059 0.0300000000000011 0.0300000000000011 0.0 685 -686 0.0478279590606689 0.0499999999999972 0.0499999999999972 0.0 686 -687 0.023798942565918 0.0200000000000031 0.0200000000000031 0.0 687 -688 0.0233008861541748 0.019999999999996 0.019999999999996 0.0 688 -689 0.0240800380706787 0.0300000000000011 0.0300000000000011 0.0 689 -690 0.0304360389709473 0.0300000000000011 0.0300000000000011 0.0 690 -691 0.022982120513916 0.019999999999996 0.019999999999996 0.0 691 -692 0.0228438377380371 0.0200000000000031 0.0200000000000031 0.0 692 -693 0.0521981716156006 0.0600000000000023 0.0600000000000023 0.0 693 -694 0.0234532356262207 0.019999999999996 0.019999999999996 0.0 694 -695 0.0232119560241699 0.0200000000000031 0.0200000000000031 0.0 695 -696 0.0229840278625488 0.0300000000000011 0.0300000000000011 0.0 696 -697 0.0229799747467041 0.019999999999996 0.019999999999996 0.0 697 -698 0.0229427814483643 0.0200000000000031 0.0200000000000031 0.0 698 -699 0.0228908061981201 0.0300000000000011 0.0300000000000011 0.0 699 -700 0.0482070446014404 0.0399999999999991 0.0399999999999991 0.0 700 -701 0.023360013961792 0.0300000000000011 0.0300000000000011 0.0 701 -702 0.027055025100708 0.019999999999996 0.019999999999996 0.0 702 -703 0.0230090618133545 0.0300000000000011 0.0300000000000011 0.0 703 -704 0.02317214012146 0.019999999999996 0.019999999999996 0.0 704 -705 0.022986888885498 0.0200000000000031 0.0200000000000031 0.0 705 -706 0.0481140613555908 0.0499999999999972 0.0499999999999972 0.0 706 -707 0.0237739086151123 0.0300000000000011 0.0300000000000011 0.0 707 -708 0.0233809947967529 0.0200000000000031 0.0200000000000031 0.0 708 -709 0.0233211517333984 0.019999999999996 0.019999999999996 0.0 709 -710 0.0229690074920654 0.0300000000000011 0.0300000000000011 0.0 710 -711 0.0244121551513672 0.0200000000000031 0.0200000000000031 0.0 711 -712 0.0250389575958252 0.019999999999996 0.019999999999996 0.0 712 -713 0.0485482215881348 0.0399999999999991 0.0399999999999991 0.0 713 -714 0.0234758853912354 0.0300000000000011 0.0300000000000011 0.0 714 -715 0.023453950881958 0.019999999999996 0.019999999999996 0.0 715 -716 0.0230729579925537 0.0200000000000031 0.0200000000000031 0.0 716 -717 0.0230581760406494 0.0300000000000011 0.0300000000000011 0.0 717 -718 0.0230929851531982 0.019999999999996 0.019999999999996 0.0 718 -719 0.0229818820953369 0.0200000000000031 0.0200000000000031 0.0 719 -720 0.0512728691101074 0.0499999999999972 0.0499999999999972 0.0 720 -721 0.0234599113464355 0.0300000000000011 0.0300000000000011 0.0 721 -722 0.023129940032959 0.019999999999996 0.019999999999996 0.0 722 -723 0.0229649543762207 0.0200000000000031 0.0200000000000031 0.0 723 -724 0.0230588912963867 0.0300000000000011 0.0300000000000011 0.0 724 -725 0.0236339569091797 0.019999999999996 0.019999999999996 0.0 725 -726 0.0562300682067871 0.0600000000000023 0.0600000000000023 0.0 726 -727 0.0310180187225342 0.0300000000000011 0.0300000000000011 0.0 727 -728 0.0244710445404053 0.0200000000000031 0.0200000000000031 0.0 728 -729 0.0285270214080811 0.029999999999994 0.029999999999994 0.0 729 -730 0.0235979557037354 0.0300000000000011 0.0300000000000011 0.0 730 -731 0.0233108997344971 0.0200000000000031 0.0200000000000031 0.0 731 -732 0.0233650207519531 0.019999999999996 0.019999999999996 0.0 732 -733 0.0499210357666016 0.0500000000000043 0.0500000000000043 0.0 733 -734 0.0240199565887451 0.0300000000000011 0.0300000000000011 0.0 734 -735 0.0234189033508301 0.019999999999996 0.019999999999996 0.0 735 -736 0.0239479541778564 0.0200000000000031 0.0200000000000031 0.0 736 -737 0.0234498977661133 0.0300000000000011 0.0300000000000011 0.0 737 -738 0.027393102645874 0.019999999999996 0.019999999999996 0.0 738 -739 0.0233581066131592 0.0300000000000011 0.0300000000000011 0.0 739 -740 0.0494859218597412 0.0499999999999972 0.0499999999999972 0.0 740 -741 0.023939847946167 0.0200000000000031 0.0200000000000031 0.0 741 -742 0.0237078666687012 0.0300000000000011 0.0300000000000011 0.0 742 -743 0.023622989654541 0.019999999999996 0.019999999999996 0.0 743 -744 0.0235440731048584 0.0200000000000031 0.0200000000000031 0.0 744 -745 0.0236668586730957 0.0300000000000011 0.0300000000000011 0.0 745 -746 0.0538251399993896 0.0499999999999972 0.0499999999999972 0.0 746 -747 0.0246829986572266 0.0300000000000011 0.0300000000000011 0.0 747 -748 0.0239181518554688 0.019999999999996 0.019999999999996 0.0 748 -749 0.02370285987854 0.0200000000000031 0.0200000000000031 0.0 749 -750 0.0234520435333252 0.0300000000000011 0.0300000000000011 0.0 750 -751 0.0234749317169189 0.019999999999996 0.019999999999996 0.0 751 -752 0.0232760906219482 0.0200000000000031 0.0200000000000031 0.0 752 -753 0.050915002822876 0.0499999999999972 0.0499999999999972 0.0 753 -754 0.0237371921539307 0.0300000000000011 0.0300000000000011 0.0 754 -755 0.0239219665527344 0.0200000000000031 0.0200000000000031 0.0 755 -756 0.0273880958557129 0.0300000000000011 0.0300000000000011 0.0 756 -757 0.0232698917388916 0.019999999999996 0.019999999999996 0.0 757 -758 0.0235319137573242 0.0300000000000011 0.0300000000000011 0.0 758 -759 0.0232620239257812 0.0200000000000031 0.0200000000000031 0.0 759 -760 0.0498092174530029 0.0499999999999972 0.0499999999999972 0.0 760 -761 0.0315971374511719 0.0300000000000011 0.0300000000000011 0.0 761 -762 0.0236649513244629 0.019999999999996 0.019999999999996 0.0 762 -763 0.0233211517333984 0.0300000000000011 0.0300000000000011 0.0 763 -764 0.0230920314788818 0.0200000000000031 0.0200000000000031 0.0 764 -765 0.0270240306854248 0.0300000000000011 0.0300000000000011 0.0 765 -766 0.0479528903961182 0.0499999999999972 0.0499999999999972 0.0 766 -767 0.025413990020752 0.0200000000000031 0.0200000000000031 0.0 767 -768 0.0233969688415527 0.019999999999996 0.019999999999996 0.0 768 -769 0.0232100486755371 0.0300000000000011 0.0300000000000011 0.0 769 -770 0.0230209827423096 0.0200000000000031 0.0200000000000031 0.0 770 -771 0.0228300094604492 0.019999999999996 0.019999999999996 0.0 771 -772 0.0236411094665527 0.0300000000000011 0.0300000000000011 0.0 772 -773 0.0529980659484863 0.0499999999999972 0.0499999999999972 0.0 773 -774 0.0234870910644531 0.0200000000000031 0.0200000000000031 0.0 774 -775 0.0233190059661865 0.0300000000000011 0.0300000000000011 0.0 775 -776 0.0230171680450439 0.019999999999996 0.019999999999996 0.0 776 -777 0.0230998992919922 0.0200000000000031 0.0200000000000031 0.0 777 -778 0.0230000019073486 0.0300000000000011 0.0300000000000011 0.0 778 -779 0.0227389335632324 0.019999999999996 0.019999999999996 0.0 779 -780 0.0475330352783203 0.0500000000000043 0.0500000000000043 0.0 780 -781 0.0235450267791748 0.019999999999996 0.019999999999996 0.0 781 -782 0.024838924407959 0.0200000000000031 0.0200000000000031 0.0 782 -783 0.0251529216766357 0.0300000000000011 0.0300000000000011 0.0 783 -784 0.0230610370635986 0.019999999999996 0.019999999999996 0.0 784 -785 0.0230369567871094 0.0300000000000011 0.0300000000000011 0.0 785 -786 0.0483219623565674 0.0399999999999991 0.0399999999999991 0.0 786 -787 0.023716926574707 0.0300000000000011 0.0300000000000011 0.0 787 -788 0.0233070850372314 0.0200000000000031 0.0200000000000031 0.0 788 -789 0.0230929851531982 0.019999999999996 0.019999999999996 0.0 789 -790 0.0231740474700928 0.0300000000000011 0.0300000000000011 0.0 790 -791 0.0228431224822998 0.0200000000000031 0.0200000000000031 0.0 791 -792 0.0254631042480469 0.029999999999994 0.029999999999994 0.0 792 -793 0.0485448837280273 0.0399999999999991 0.0399999999999991 0.0 793 -794 0.0234110355377197 0.0300000000000011 0.0300000000000011 0.0 794 -795 0.023223876953125 0.0200000000000031 0.0200000000000031 0.0 795 -796 0.0238728523254395 0.0300000000000011 0.0300000000000011 0.0 796 -797 0.0251760482788086 0.019999999999996 0.019999999999996 0.0 797 -798 0.0276870727539062 0.0300000000000011 0.0300000000000011 0.0 798 -799 0.0227670669555664 0.0200000000000031 0.0200000000000031 0.0 799 -800 0.0514481067657471 0.0499999999999972 0.0499999999999972 0.0 800 -801 0.023374080657959 0.0300000000000011 0.0300000000000011 0.0 801 -802 0.0230941772460938 0.019999999999996 0.019999999999996 0.0 802 -803 0.0230350494384766 0.0200000000000031 0.0200000000000031 0.0 803 -804 0.0229940414428711 0.0300000000000011 0.0300000000000011 0.0 804 -805 0.0229909420013428 0.019999999999996 0.019999999999996 0.0 805 -806 0.0481908321380615 0.0500000000000043 0.0500000000000043 0.0 806 -807 0.0239169597625732 0.019999999999996 0.019999999999996 0.0 807 -808 0.0238561630249023 0.0200000000000031 0.0200000000000031 0.0 808 -809 0.0231790542602539 0.0300000000000011 0.0300000000000011 0.0 809 -810 0.0275747776031494 0.0300000000000011 0.0300000000000011 0.0 810 -811 0.0230591297149658 0.019999999999996 0.019999999999996 0.0 811 -812 0.0231878757476807 0.0200000000000031 0.0200000000000031 0.0 812 -813 0.048914909362793 0.0499999999999972 0.0499999999999972 0.0 813 -814 0.0234620571136475 0.0200000000000031 0.0200000000000031 0.0 814 -815 0.0232930183410645 0.0300000000000011 0.0300000000000011 0.0 815 -816 0.022986888885498 0.019999999999996 0.019999999999996 0.0 816 -817 0.0229377746582031 0.0200000000000031 0.0200000000000031 0.0 817 -818 0.0235490798950195 0.0300000000000011 0.0300000000000011 0.0 818 -819 0.0506079196929932 0.0499999999999972 0.0499999999999972 0.0 819 -820 0.023629903793335 0.019999999999996 0.019999999999996 0.0 820 -821 0.0234060287475586 0.0300000000000011 0.0300000000000011 0.0 821 -822 0.0231649875640869 0.0200000000000031 0.0200000000000031 0.0 822 -823 0.0232610702514648 0.019999999999996 0.019999999999996 0.0 823 -824 0.0246009826660156 0.0300000000000011 0.0300000000000011 0.0 824 -825 0.0229051113128662 0.0200000000000031 0.0200000000000031 0.0 825 -826 0.0487561225891113 0.0499999999999972 0.0499999999999972 0.0 826 -827 0.0235860347747803 0.0200000000000031 0.0200000000000031 0.0 827 -828 0.0275599956512451 0.0300000000000011 0.0300000000000011 0.0 828 -829 0.0231928825378418 0.019999999999996 0.019999999999996 0.0 829 -830 0.0227789878845215 0.0200000000000031 0.0200000000000031 0.0 830 -831 0.022838830947876 0.0300000000000011 0.0300000000000011 0.0 831 -832 0.0226640701293945 0.019999999999996 0.019999999999996 0.0 832 -833 0.0558691024780273 0.0600000000000023 0.0600000000000023 0.0 833 -834 0.0235500335693359 0.019999999999996 0.019999999999996 0.0 834 -835 0.0233221054077148 0.0200000000000031 0.0200000000000031 0.0 835 -836 0.0230560302734375 0.0300000000000011 0.0300000000000011 0.0 836 -837 0.026296854019165 0.019999999999996 0.019999999999996 0.0 837 -838 0.0231189727783203 0.0200000000000031 0.0200000000000031 0.0 838 -839 0.0479569435119629 0.0399999999999991 0.0399999999999991 0.0 839 -840 0.0236861705780029 0.0300000000000011 0.0300000000000011 0.0 840 -841 0.0233621597290039 0.0200000000000031 0.0200000000000031 0.0 841 -842 0.0233719348907471 0.019999999999996 0.019999999999996 0.0 842 -843 0.022942066192627 0.0300000000000011 0.0300000000000011 0.0 843 -844 0.0234341621398926 0.0200000000000031 0.0200000000000031 0.0 844 -845 0.0227351188659668 0.019999999999996 0.019999999999996 0.0 845 -846 0.0519671440124512 0.0500000000000043 0.0500000000000043 0.0 846 -847 0.0236749649047852 0.029999999999994 0.029999999999994 0.0 847 -848 0.0233500003814697 0.0200000000000031 0.0200000000000031 0.0 848 -849 0.0230710506439209 0.0300000000000011 0.0300000000000011 0.0 849 -850 0.0229990482330322 0.019999999999996 0.019999999999996 0.0 850 -851 0.0230109691619873 0.0200000000000031 0.0200000000000031 0.0 851 -852 0.0227420330047607 0.0200000000000031 0.0200000000000031 0.0 852 -853 0.0477049350738525 0.0499999999999972 0.0499999999999972 0.0 853 -854 0.0240600109100342 0.0300000000000011 0.0300000000000011 0.0 854 -855 0.026954174041748 0.019999999999996 0.019999999999996 0.0 855 -856 0.0229690074920654 0.0300000000000011 0.0300000000000011 0.0 856 -857 0.0230190753936768 0.0200000000000031 0.0200000000000031 0.0 857 -858 0.0229530334472656 0.019999999999996 0.019999999999996 0.0 858 -859 0.0483298301696777 0.0500000000000043 0.0500000000000043 0.0 859 -860 0.0237421989440918 0.019999999999996 0.019999999999996 0.0 860 -861 0.0233712196350098 0.0300000000000011 0.0300000000000011 0.0 861 -862 0.0233938694000244 0.0200000000000031 0.0200000000000031 0.0 862 -863 0.0228838920593262 0.019999999999996 0.019999999999996 0.0 863 -864 0.0237820148468018 0.0300000000000011 0.0300000000000011 0.0 864 -865 0.0258240699768066 0.0200000000000031 0.0200000000000031 0.0 865 -866 0.0487151145935059 0.0499999999999972 0.0499999999999972 0.0 866 -867 0.023514986038208 0.0300000000000011 0.0300000000000011 0.0 867 -868 0.023252010345459 0.019999999999996 0.019999999999996 0.0 868 -869 0.0243101119995117 0.0200000000000031 0.0200000000000031 0.0 869 -870 0.0295658111572266 0.0300000000000011 0.0300000000000011 0.0 870 -871 0.0230669975280762 0.0300000000000011 0.0300000000000011 0.0 871 -872 0.0470709800720215 0.0399999999999991 0.0399999999999991 0.0 872 -873 0.0276908874511719 0.0300000000000011 0.0300000000000011 0.0 873 -874 0.0235562324523926 0.029999999999994 0.029999999999994 0.0 874 -875 0.0232779979705811 0.0200000000000031 0.0200000000000031 0.0 875 -876 0.0230128765106201 0.0200000000000031 0.0200000000000031 0.0 876 -877 0.0227088928222656 0.019999999999996 0.019999999999996 0.0 877 -878 0.0227501392364502 0.0300000000000011 0.0300000000000011 0.0 878 -879 0.048612117767334 0.0499999999999972 0.0499999999999972 0.0 879 -880 0.0247840881347656 0.0200000000000031 0.0200000000000031 0.0 880 -881 0.0233609676361084 0.0200000000000031 0.0200000000000031 0.0 881 -882 0.0263519287109375 0.029999999999994 0.029999999999994 0.0 882 -883 0.0231118202209473 0.0200000000000031 0.0200000000000031 0.0 883 -884 0.0230841636657715 0.0300000000000011 0.0300000000000011 0.0 884 -885 0.022723913192749 0.019999999999996 0.019999999999996 0.0 885 -886 0.0473191738128662 0.0500000000000043 0.0500000000000043 0.0 886 -887 0.0233719348907471 0.019999999999996 0.019999999999996 0.0 887 -888 0.0231339931488037 0.0200000000000031 0.0200000000000031 0.0 888 -889 0.0230438709259033 0.0300000000000011 0.0300000000000011 0.0 889 -890 0.0230700969696045 0.019999999999996 0.019999999999996 0.0 890 -891 0.0235311985015869 0.0200000000000031 0.0200000000000031 0.0 891 -892 0.0513098239898682 0.0499999999999972 0.0499999999999972 0.0 892 -893 0.0237538814544678 0.0300000000000011 0.0300000000000011 0.0 893 -894 0.0234150886535645 0.0200000000000031 0.0200000000000031 0.0 894 -895 0.0234220027923584 0.029999999999994 0.029999999999994 0.0 895 -896 0.0229578018188477 0.0200000000000031 0.0200000000000031 0.0 896 -897 0.0227642059326172 0.0200000000000031 0.0200000000000031 0.0 897 -898 0.0227861404418945 0.019999999999996 0.019999999999996 0.0 898 -899 0.0495121479034424 0.0500000000000043 0.0500000000000043 0.0 899 -900 0.0261099338531494 0.029999999999994 0.029999999999994 0.0 900 -901 0.0232861042022705 0.0200000000000031 0.0200000000000031 0.0 901 -902 0.0230598449707031 0.0300000000000011 0.0300000000000011 0.0 902 -903 0.0229661464691162 0.019999999999996 0.019999999999996 0.0 903 -904 0.0229828357696533 0.0200000000000031 0.0200000000000031 0.0 904 -905 0.0227420330047607 0.0300000000000011 0.0300000000000011 0.0 905 -906 0.0554108619689941 0.0499999999999972 0.0499999999999972 0.0 906 -907 0.0234618186950684 0.0200000000000031 0.0200000000000031 0.0 907 -908 0.023097038269043 0.0300000000000011 0.0300000000000011 0.0 908 -909 0.0240907669067383 0.019999999999996 0.019999999999996 0.0 909 -910 0.0250539779663086 0.0300000000000011 0.0300000000000011 0.0 910 -911 0.0229489803314209 0.019999999999996 0.019999999999996 0.0 911 -912 0.0479700565338135 0.0500000000000043 0.0500000000000043 0.0 912 -913 0.023643970489502 0.019999999999996 0.019999999999996 0.0 913 -914 0.0235710144042969 0.0200000000000031 0.0200000000000031 0.0 914 -915 0.0231690406799316 0.0300000000000011 0.0300000000000011 0.0 915 -916 0.0229480266571045 0.019999999999996 0.019999999999996 0.0 916 -917 0.0235409736633301 0.0200000000000031 0.0200000000000031 0.0 917 -918 0.0229229927062988 0.0300000000000011 0.0300000000000011 0.0 918 -919 0.0514621734619141 0.0499999999999972 0.0499999999999972 0.0 919 -920 0.023529052734375 0.0200000000000031 0.0200000000000031 0.0 920 -921 0.0231509208679199 0.0300000000000011 0.0300000000000011 0.0 921 -922 0.0229501724243164 0.019999999999996 0.019999999999996 0.0 922 -923 0.0228419303894043 0.0200000000000031 0.0200000000000031 0.0 923 -924 0.0227689743041992 0.019999999999996 0.019999999999996 0.0 924 -925 0.047015905380249 0.0500000000000043 0.0500000000000043 0.0 925 -926 0.0242269039154053 0.0300000000000011 0.0300000000000011 0.0 926 -927 0.0240240097045898 0.019999999999996 0.019999999999996 0.0 927 -928 0.0257468223571777 0.0300000000000011 0.0300000000000011 0.0 928 -929 0.0229909420013428 0.019999999999996 0.019999999999996 0.0 929 -930 0.0228919982910156 0.0200000000000031 0.0200000000000031 0.0 930 -931 0.0228021144866943 0.0200000000000031 0.0200000000000031 0.0 931 -932 0.0487589836120605 0.0499999999999972 0.0499999999999972 0.0 932 -933 0.023705005645752 0.0300000000000011 0.0300000000000011 0.0 933 -934 0.0232529640197754 0.019999999999996 0.019999999999996 0.0 934 -935 0.0233039855957031 0.0200000000000031 0.0200000000000031 0.0 935 -936 0.0228619575500488 0.0300000000000011 0.0300000000000011 0.0 936 -937 0.0260879993438721 0.019999999999996 0.019999999999996 0.0 937 -938 0.022723913192749 0.0300000000000011 0.0300000000000011 0.0 938 -939 0.0474221706390381 0.0399999999999991 0.0399999999999991 0.0 939 -940 0.0233960151672363 0.0300000000000011 0.0300000000000011 0.0 940 -941 0.0239980220794678 0.0200000000000031 0.0200000000000031 0.0 941 -942 0.0292730331420898 0.0300000000000011 0.0300000000000011 0.0 942 -943 0.0237081050872803 0.019999999999996 0.019999999999996 0.0 943 -944 0.0230300426483154 0.0300000000000011 0.0300000000000011 0.0 944 -945 0.050105094909668 0.0499999999999972 0.0499999999999972 0.0 945 -946 0.0247271060943604 0.0200000000000031 0.0200000000000031 0.0 946 -947 0.0233941078186035 0.019999999999996 0.019999999999996 0.0 947 -948 0.0232498645782471 0.0300000000000011 0.0300000000000011 0.0 948 -949 0.0229218006134033 0.0200000000000031 0.0200000000000031 0.0 949 -950 0.0228300094604492 0.019999999999996 0.019999999999996 0.0 950 -951 0.023029088973999 0.0300000000000011 0.0300000000000011 0.0 951 -952 0.0492429733276367 0.0500000000000043 0.0500000000000043 0.0 952 -953 0.0234079360961914 0.019999999999996 0.019999999999996 0.0 953 -954 0.0232601165771484 0.0200000000000031 0.0200000000000031 0.0 954 -955 0.026918888092041 0.0300000000000011 0.0300000000000011 0.0 955 -956 0.0231409072875977 0.019999999999996 0.019999999999996 0.0 956 -957 0.0228209495544434 0.0300000000000011 0.0300000000000011 0.0 957 -958 0.0463271141052246 0.0399999999999991 0.0399999999999991 0.0 958 -959 0.0237219333648682 0.0300000000000011 0.0300000000000011 0.0 959 -960 0.0233180522918701 0.0200000000000031 0.0200000000000031 0.0 960 -961 0.0231690406799316 0.019999999999996 0.019999999999996 0.0 961 -962 0.0229840278625488 0.0300000000000011 0.0300000000000011 0.0 962 -963 0.0235729217529297 0.0200000000000031 0.0200000000000031 0.0 963 -964 0.0238869190216064 0.019999999999996 0.019999999999996 0.0 964 -965 0.0521998405456543 0.0600000000000023 0.0600000000000023 0.0 965 -966 0.0235168933868408 0.019999999999996 0.019999999999996 0.0 966 -967 0.0235238075256348 0.0200000000000031 0.0200000000000031 0.0 967 -968 0.0230309963226318 0.0300000000000011 0.0300000000000011 0.0 968 -969 0.0229330062866211 0.019999999999996 0.019999999999996 0.0 969 -970 0.0227758884429932 0.0200000000000031 0.0200000000000031 0.0 970 -971 0.0229518413543701 0.019999999999996 0.019999999999996 0.0 971 -972 0.0476210117340088 0.0500000000000043 0.0500000000000043 0.0 972 -973 0.0264060497283936 0.0300000000000011 0.0300000000000011 0.0 973 -974 0.023115873336792 0.019999999999996 0.019999999999996 0.0 974 -975 0.0229768753051758 0.0300000000000011 0.0300000000000011 0.0 975 -976 0.0229260921478271 0.0200000000000031 0.0200000000000031 0.0 976 -977 0.0229401588439941 0.019999999999996 0.019999999999996 0.0 977 -978 0.0558409690856934 0.0600000000000023 0.0600000000000023 0.0 978 -979 0.0236589908599854 0.019999999999996 0.019999999999996 0.0 979 -980 0.0233588218688965 0.0200000000000031 0.0200000000000031 0.0 980 -981 0.0231630802154541 0.0300000000000011 0.0300000000000011 0.0 981 -982 0.0260651111602783 0.019999999999996 0.019999999999996 0.0 982 -983 0.0229349136352539 0.0300000000000011 0.0300000000000011 0.0 983 -984 0.0229189395904541 0.0200000000000031 0.0200000000000031 0.0 984 -985 0.0485391616821289 0.0499999999999972 0.0499999999999972 0.0 985 -986 0.0233860015869141 0.0200000000000031 0.0200000000000031 0.0 986 -987 0.0233519077301025 0.0300000000000011 0.0300000000000011 0.0 987 -988 0.0228800773620605 0.019999999999996 0.019999999999996 0.0 988 -989 0.0234830379486084 0.0200000000000031 0.0200000000000031 0.0 989 -990 0.022752046585083 0.019999999999996 0.019999999999996 0.0 990 -991 0.0511069297790527 0.0600000000000023 0.0600000000000023 0.0 991 -992 0.0240139961242676 0.019999999999996 0.019999999999996 0.0 992 -993 0.0233669281005859 0.0200000000000031 0.0200000000000031 0.0 993 -994 0.0232489109039307 0.0300000000000011 0.0300000000000011 0.0 994 -995 0.0230247974395752 0.019999999999996 0.019999999999996 0.0 995 -996 0.023061990737915 0.0200000000000031 0.0200000000000031 0.0 996 -997 0.0229039192199707 0.0300000000000011 0.0300000000000011 0.0 997 -998 0.0489161014556885 0.0399999999999991 0.0399999999999991 0.0 998 -999 0.0239861011505127 0.0300000000000011 0.0300000000000011 0.0 999 -1000 0.0271100997924805 0.0300000000000011 0.0300000000000011 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat deleted file mode 100644 index 28b79301..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.168711551610797 -3 -0.185075424775395 -4 -0.186405168470362 -5 -0.192236450287278 -6 -0.173995040669983 -7 0.497673430722803 -8 0.29654339644635 -9 -0.172542664486347 -10 -0.185316639646188 -11 -0.182116040823686 -12 -0.185415710620437 -13 0.0523528472158225 -14 0.71970177208368 -15 -0.151810164721185 -16 -0.187290279760093 -17 -0.182362754850871 -18 -0.182718737242755 -19 -0.129108594864474 -20 0.622082118720718 -21 0.130782387755957 -22 -0.170447345640965 -23 -0.196652105821247 -24 -0.173569338036787 -25 -0.182188355492763 -26 0.265071206382968 -27 0.484886522656777 -28 -0.140444543213911 -29 -0.174312335218403 -30 -0.183335022511814 -31 -0.179674296765045 -32 0.0232199842046602 -33 0.496114733715927 -34 0.0822638752997461 -35 -0.171572446908724 -36 -0.192551986206074 -37 -0.162051421499677 -38 -0.0895919384941433 -39 0.335786620502553 -40 0.327644243263212 -41 -0.129948612855453 -42 -0.184370502365683 -43 -0.177204007654948 -44 -0.162157037082618 -45 0.17271845923701 -46 0.351796103861273 -47 0.0642274162111852 -48 -0.170959443773073 -49 -0.190856323754992 -50 -0.163714827336534 -51 0.0228314931445091 -52 0.26381977073053 -53 0.247803374234943 -54 -0.117037193906021 -55 -0.183830227189461 -56 -0.164640226854526 -57 -0.079276117022691 -58 0.20723348437059 -59 0.239706931399691 -60 0.0489172113214087 -61 -0.172021951272623 -62 -0.182860808512729 -63 -0.127358224108573 -64 0.107845579472678 -65 0.188933656016848 -66 0.194757142044723 -67 -0.112205833758773 -68 -0.179001063269936 -69 -0.16311828493705 -70 0.0324344108778214 -71 0.15051955620332 -72 0.163810160363991 -73 0.0519448596312306 -74 -0.163602345245488 -75 -0.158418891887294 -76 -0.0560272711908581 -77 0.13272666880305 -78 0.128776651967307 -79 0.137508369826638 -80 -0.106468759380143 -81 -0.175112389279141 -82 -0.110600151424024 -83 0.0829713181187441 -84 0.116400027198787 -85 0.108590070864495 -86 0.0380032448395754 -87 -0.15928371193835 -88 -0.16128905172696 -89 0.0331094309593576 -90 0.0781776964153065 -91 0.102945304233414 -92 0.10106965637548 -93 -0.0872290949923226 -94 -0.169705593008044 -95 -0.0419012011984929 -96 0.0915477326766184 -97 0.0704199456915236 -98 0.0728740009744583 -99 0.0218543030675779 -100 -0.151415427637779 -101 -0.0978287647318857 -102 0.0561931235819149 -103 0.0505423398983019 -104 0.0727678785780604 -105 0.0722492445655898 -106 -0.0862525883888437 -107 -0.137087142443964 -108 0.00615618677612293 -109 0.05394162080397 -110 0.0553896795215559 -111 0.055562843944084 -112 0.0276994577739776 -113 -0.137189947176271 -114 -0.0377239416628224 -115 0.0514504295405741 -116 0.0313293831130493 -117 0.0301709278444951 -118 0.0568085567458709 -119 -0.0804133515562644 -120 -0.0795840579043476 -121 0.0330117984081293 -122 0.0164579873951377 -123 0.0433446545769141 -124 0.0255953757755855 -125 0.00173682042832781 -126 -0.103165860768009 -127 0.00232696284173702 -128 0.0312423522135313 -129 0.0149616490484137 -130 0.0184417493516088 -131 0.0447441958949695 -132 -0.0641393958061555 -133 -0.0383352332350825 -134 0.0245347192219029 -135 0.00652236926605711 -136 0.0171622535457413 -137 0.009279213035149 -138 0.00278884493235273 -139 -0.0536703342115355 -140 0.0241669190880944 -141 -0.00326726756980508 -142 0.0162345932059117 -143 -0.0128230828071517 -144 0.0286239253928854 -145 -0.0327123591597955 -146 -0.00540598964166124 -147 -0.000332512936572612 -148 0.0148948411721159 -149 0.0166966907990605 -150 -0.00567074642628022 -151 0.0228823388615856 -152 -0.0308965208330592 -153 0.0180444981742879 -154 -0.0206921039064052 -155 0.00595894351847688 -156 -0.0208220594875718 -157 0.0310092938713835 -158 0.00078836634941453 -159 0.0106191475130608 -160 -0.0238938431356785 -161 -0.00188312143245682 -162 -0.0172204115325742 -163 -0.0112282005708165 -164 0.045034914010554 -165 0.00699215558040877 -166 -0.00331533192179088 -167 -0.0190245860603562 -168 -0.00800260302384398 -169 -0.0268417229599795 -170 0.0337926174874967 -171 0.0299901254990817 -172 0.00546001840883143 -173 -0.0331114785270307 -174 -0.0100509196512551 -175 -0.0360797776791535 -176 0.00148731167321117 -177 0.0706998590798648 -178 0.0165067725132839 -179 -0.0253495351545265 -180 -0.0357212534091994 -181 -0.0113101599791917 -182 -0.0363761390533369 -183 0.0469745163800697 -184 0.0610771540099002 -185 0.00552862518083574 -186 -0.0369332414763318 -187 -0.0111795223609534 -188 -0.0432626099842255 -189 0.00749428956560664 -190 0.087771964947633 -191 0.00185581109295404 -192 -0.0313699827844243 -193 -0.0255394152605449 -194 -0.0313242476969615 -195 -0.0215433414073359 -196 0.0618252922061284 -197 0.0646027183854095 -198 -0.0273965032147501 -199 -0.0496517862033294 -200 -0.018433346375674 -201 -0.0411702579107107 -202 0.0253673387035334 -203 0.104691703014017 -204 -0.00185448989075414 -205 -0.0446682471573042 -206 -0.0238238321649752 -207 -0.0467619043304021 -208 -0.00360887459827125 -209 0.0793757654561071 -210 0.0429129421022387 -211 -0.0276583402343142 -212 -0.0541678923378372 -213 -0.0179592917752469 -214 -0.0355547481831798 -215 0.0461320988573292 -216 0.0913448308641226 -217 -0.01834847095298 -218 -0.0468350861575364 -219 -0.0339767892231334 -220 -0.0440298850183693 -221 0.0223578500867496 -222 0.0933434497060592 -223 0.0463337814726783 -224 -0.0425574347432942 -225 -0.0466890286886253 -226 -0.0399961538339586 -227 -0.0182587945265267 -228 0.0632222098042003 -229 0.0694906023247877 -230 -0.0142049617016301 -231 -0.0455291466080565 -232 -0.0361070791379545 -233 -0.0452564134883136 -234 0.0510580833723044 -235 0.0480780453494914 -236 0.0446139327527731 -237 -0.0522801405363582 -238 -0.0378004800445766 -239 -0.0470589177024096 -240 0.0108569075440268 -241 0.066938577476477 -242 0.0581800021039197 -243 -0.0194507150560373 -244 -0.0543671997964238 -245 -0.0401308556434312 -246 -0.0256000479147573 -247 0.0620205622045612 -248 0.030523271212025 -249 0.038296942239191 -250 -0.0449036287763184 -251 -0.0420966487827338 -252 -0.0465461175034265 -253 0.0377597573585246 -254 0.0350560493012657 -255 0.056093186329707 -256 -0.0275815952046349 -257 -0.04750423935097 -258 -0.0432832585148503 -259 0.0125157284398116 -260 0.064931228957816 -261 0.019604040715554 -262 0.0373596111888757 -263 -0.0636676558497218 -264 -0.0375272240403982 -265 -0.0361149121701811 -266 0.0465388746567212 -267 0.036241311622391 -268 0.0487539350868976 -269 -0.0287234748216925 -270 -0.0539239644524711 -271 -0.0436583063696183 -272 0.0205146377795573 -273 0.040230997344665 -274 0.0315213860739265 -275 0.0228897348670507 -276 -0.0572183200160057 -277 -0.0431270221897599 -278 -0.00833297422506617 -279 0.0473219005528863 -280 0.0251629586411652 -281 0.038915273454895 -282 -0.0354353137808485 -283 -0.0508161370460544 -284 -0.036047127999377 -285 0.0337334539194076 -286 0.0275614274110637 -287 0.0440004318004696 -288 0.00961414206729694 -289 -0.0613316463073689 -290 -0.0452152575735171 -291 0.00249641925695087 -292 0.0493185930315809 -293 0.011444255885649 -294 0.0316360674883416 -295 -0.0319106139816597 -296 -0.0295989018040149 -297 -0.0190441524352952 -298 0.0282870892585827 -299 0.0265353254552707 -300 0.032273319444618 -301 -0.000468750771499013 -302 -0.0611876583947586 -303 -0.0309474581592694 -304 0.0186631754625234 -305 0.0371821091242854 -306 0.0145022818476083 -307 0.0232617470286048 -308 -0.0395688677229205 -309 -0.0476060515379838 -310 -0.00769044117333217 -311 0.0353693458390462 -312 0.0240002604802843 -313 0.0245536637430618 -314 -0.004415413915098 -315 -0.0528044137604404 -316 -0.0234265814208568 -317 0.022470064568286 -318 0.028915521370024 -319 0.0211638004156281 -320 0.0054168896988135 -321 -0.042590350753945 -322 -0.0284283118181943 -323 -0.00664062749496557 -324 0.0411480242046925 -325 0.0128417754264411 -326 0.0305223344547661 -327 -0.0236579754952802 -328 -0.0540845927671526 -329 -0.015455893522093 -330 0.025833520023463 -331 0.0278005598102001 -332 0.023042186646012 -333 0.0188728568852482 -334 -0.0493662121878053 -335 -0.0261050936436941 -336 0.0147707465979224 -337 0.0180860444200187 -338 0.0126826785496685 -339 0.0298891954148176 -340 -0.0284892193567594 -341 -0.0442930583208295 -342 -0.00465824613683129 -343 0.0264974198001827 -344 0.0160287131470608 -345 0.0245897525651692 -346 -0.00575496663872669 -347 -0.0478041333821144 -348 -0.0171938958596392 -349 0.0121633028274292 -350 0.0339339464445481 -351 -0.00053023814088501 -352 0.0326742285343647 -353 -0.0341060707006212 -354 -0.039748874098284 -355 -8.49024655445998e-06 -356 0.0279658431303204 -357 0.00720050291043204 -358 0.0259853074034904 -359 -0.00689945021869653 -360 -0.0564417535195406 -361 0.00615675252612387 -362 0.012211786338546 -363 0.0210382695674554 -364 0.00854911585033297 -365 0.00730196086776967 -366 -0.0376558839307909 -367 -0.0205399505507927 -368 0.00730027899569551 -369 0.032246213402309 -370 0.0091169179182096 -371 0.0250196684542896 -372 -0.0111591997251681 -373 -0.0422136335522998 -374 -0.0128579601772781 -375 0.028053399466731 -376 0.00354103697855516 -377 0.0279174938103032 -378 -0.00904722473650234 -379 -0.028946301515676 -380 -0.0139786293136349 -381 0.00545851365358498 -382 0.0190227282430585 -383 -0.000179476269715586 -384 0.0207231566698558 -385 -0.0170447136957343 -386 -0.0310486179199879 -387 0.00187196784210256 -388 0.0224041083616037 -389 9.55672559842024e-06 -390 0.028063228403911 -391 -0.00629505686670561 -392 -0.0353987330853413 -393 -0.0136692381584725 -394 0.0175671180486305 -395 0.0138013069088845 -396 -0.00620615793014542 -397 0.0246579116616293 -398 -0.0183401258366494 -399 -0.032731274379925 -400 0.0140881514888206 -401 0.00766293328904026 -402 -0.00602692518274087 -403 0.0260538721783923 -404 -0.00584187577452444 -405 -0.0272022140360092 -406 -0.00245620949388524 -407 0.0238765788649767 -408 0.00803221790371331 -409 0.00486019379696553 -410 0.0128952371994524 -411 -0.0296483100976332 -412 -0.0169390703239796 -413 0.0100660026536031 -414 0.0116526840405598 -415 -0.00552490658166841 -416 0.0277013713253159 -417 -0.01262493213524 -418 -0.0279080581956591 -419 -0.00184485071740047 -420 0.0083680688534008 -421 0.00626000399151215 -422 0.0179881429190266 -423 -0.00447721272724791 -424 -0.0184829817994694 -425 -0.0111404841683833 -426 0.0129221736981228 -427 0.0117611123486844 -428 -0.00973900750863823 -429 0.0225145858300765 -430 -0.0109220115294983 -431 -0.0295910058303649 -432 0.00368789876917004 -433 0.00930110386233805 -434 0.00564395086046309 -435 0.0212026111611703 -436 -0.0130378739710715 -437 -0.0151643278007831 -438 -0.0180440351274524 -439 0.0151595776800046 -440 0.00929213226473587 -441 0.0003415659091603 -442 0.0139565319476247 -443 -0.00910162712841926 -444 -0.0047413122985865 -445 -0.00499428051231756 -446 0.0128999469215125 -447 -0.00928272901740709 -448 0.0272064223470049 -449 -0.0183788344655416 -450 -0.0118496040154817 -451 -0.0107494202754318 -452 0.0182399903606553 -453 0.00622660737187097 -454 0.00745915020514592 -455 -0.00127190501056035 -456 -0.0166547143603286 -457 -0.0103667163700212 -458 0.00400520855528189 -459 0.0147115427131264 -460 -0.0160615357972689 -461 0.0246609774312651 -462 -0.0029333920472466 -463 -0.0181346871754782 -464 -0.00953567256874797 -465 0.021178583971421 -466 -0.012606366153552 -467 0.0272533088449177 -468 -0.0210280900703455 -469 -0.00280319780800235 -470 -0.0170463672712959 -471 0.0183373667562639 -472 0.0107583671313877 -473 -0.0078936794893897 -474 0.00778649649424241 -475 -0.0155345265869157 -476 -0.00613257574212038 -477 -0.00504286887531768 -478 0.0210772277332088 -479 -0.0128524940267954 -480 0.0341276652831629 -481 -0.0170650621790446 -482 -0.00345617548803839 -483 -0.0129517082898899 -484 0.0173373606064477 -485 -0.00523973359223807 -486 0.00844247199289556 -487 -0.000388501685715539 -488 -0.00941832803307521 -489 -0.00657732323629541 -490 0.00367271132008509 -491 0.0104986289066865 -492 -0.012121254212176 -493 0.0144869605589711 -494 -0.00864941651177608 -495 -0.01112718777137 -496 -0.00334819620816524 -497 0.0185220421918073 -498 -0.00800250333583432 -499 0.0161430412671399 -500 -0.00811904696073173 -501 -0.0131958246871404 -502 0.00283288244567032 -503 0.00400534218369864 -504 0.00517285959530552 -505 -0.0113016945649371 -506 0.0133257896160407 -507 -0.0100249708015443 -508 -0.00256099015771646 -509 0.000136766223360138 -510 0.00855194730142931 -511 -0.00531138706017324 -512 0.00204161899934194 -513 -0.00420598958751402 -514 -0.00547421378316814 -515 -0.00769199850530263 -516 0.0216892032285094 -517 0.00908736119849349 -518 -0.00700354150287694 -519 0.00385030902693081 -520 -0.0123494297246387 -521 0.000934704276073887 -522 0.00705709592844499 -523 -0.00114787001008378 -524 -0.00210811799844287 -525 0.00379518996660863 -526 -0.00476039992301502 -527 0.00251331815987456 -528 -0.00826728020183847 -529 0.00902402695322199 -530 0.000870562551920878 -531 -0.00348481579363119 -532 -0.00125547085943994 -533 -0.00457730270844353 -534 0.000670589363068931 -535 0.00203788465196431 -536 0.00608567369144255 -537 2.19715778381094e-05 -538 -0.0039030628395208 -539 0.00512758275114747 -540 -0.0144646664397469 -541 0.0094686570477374 -542 0.00274671581906305 -543 -0.00678173613063177 -544 -0.00229002671014199 -545 0.00592727900087354 -546 -0.00816015486873931 -547 0.00907388451433627 -548 0.0018377578149579 -549 -0.0127399753897002 -550 0.0103068975915084 -551 -0.0106787121790095 -552 0.00570246495524106 -553 -0.00038055365375568 -554 0.0105773030205816 -555 0.00595131841957403 -556 -0.00509875005695669 -557 -0.00822359585740647 -558 0.00452689845139232 -559 -0.00293270803490497 -560 0.00105079194795726 -561 0.0109353635798441 -562 -0.0197506449586046 -563 0.0218239959802497 -564 -0.0146510772378776 -565 -0.0031545366575823 -566 0.00360976923040136 -567 0.00133537648121434 -568 -0.00289782413008785 -569 0.00758892970442103 -570 -0.0141005351769624 -571 0.00987824122870196 -572 -0.00255558849302304 -573 0.000744149940492195 -574 0.0106602498970704 -575 -0.0142431009887286 -576 0.00996314897224239 -577 -0.0104990007985002 -578 0.00109353754269881 -579 -0.00275371958433224 -580 0.0113885636424959 -581 -0.0150512253599863 -582 0.022337619882076 -583 -0.0216778389670573 -584 0.00863828810448533 -585 -0.00918952923772199 -586 0.00354541072669278 -587 0.00186796377320277 -588 -0.00419542916327283 -589 0.00975603734830963 -590 -0.00452668353073013 -591 0.00310061328497863 -592 0.00522892318692988 -593 0.000452603861773268 -594 -0.00392697607921247 -595 0.00863249154941176 -596 -0.00832078201242865 -597 -0.00394497658086084 -598 -0.00605451952414724 -599 0.0162191796757364 -600 -0.0110909733185336 -601 0.00720572232121751 -602 0.00218507796543462 -603 -0.00965401693454912 -604 -0.0108892449738329 -605 0.0182573291106095 -606 -0.0101848710757151 -607 0.00753912620319138 -608 0.00552590397878413 -609 -0.00699240285933447 -610 -0.00592445874426432 -611 0.00181675318258215 -612 0.00596213285085161 -613 -0.00175858286015883 -614 0.00407450191848153 -615 -0.00135060667016455 -616 -0.0132703466359575 -617 0.00119500154487564 -618 0.0104207042421722 -619 -0.0101546955527216 -620 0.0151923635732439 -621 -0.00273197735893913 -622 -0.00716289238336821 -623 -0.0171181101464724 -624 0.0167209884450157 -625 -0.00638456270553197 -626 0.0115244846746483 -627 0.00412387285497462 -628 0.00522037750437085 -629 -0.0207335154052575 -630 0.0107397344182975 -631 0.000446658250956307 -632 -0.00502788594559083 -633 0.0186557262987464 -634 -0.00802823332161929 -635 -0.0113496131760766 -636 -0.00301246620601798 -637 0.00960017707242071 -638 -0.0101983443096708 -639 0.0185874661412788 -640 -0.00796700063418294 -641 0.000800373366255129 -642 -0.0142259171933031 -643 0.00675256815377976 -644 -0.00261054615159158 -645 0.00391449782418117 -646 0.0139874531474154 -647 0.00530840019489214 -648 -0.0271260591182079 -649 0.00229999324419244 -650 0.0012589433396212 -651 0.000592814947107167 -652 0.0201903818074188 -653 -0.0109069610093694 -654 0.000612907033154517 -655 -0.0168429348765485 -656 0.00867757131382127 -657 -0.00734945498589961 -658 0.0116794460570149 -659 0.00508627131689495 -660 0.00338584069635359 -661 -0.0248824043490218 -662 0.00165251679722703 -663 0.00150493225276704 -664 0.0136218056659362 -665 0.0185790451050334 -666 -0.00254472668221909 -667 -0.012289308557362 -668 -0.0144954370766794 -669 0.00122172858017179 -670 0.0025962904924925 -671 0.0163382999614507 -672 0.00111261978891954 -673 0.0032877612305335 -674 -0.0260369810192395 -675 0.00159666131197362 -676 -0.00532940173394529 -677 0.0172320321775677 -678 0.00869668235164475 -679 0.00291575973127735 -680 -0.015462218778181 -681 -0.0118608792720508 -682 -0.00220903962177873 -683 0.0120179152403506 -684 0.0136302482537954 -685 0.00904529400779457 -686 -0.00689602667015569 -687 -0.0285633522016709 -688 -0.00218285494634568 -689 0.00546702558234338 -690 0.0209141673516685 -691 0.00370465573465944 -692 0.00302297586155796 -693 -0.016485314433266 -694 -0.0140010121985048 -695 -0.00666402217308437 -696 0.0185309777178555 -697 0.00524546360988583 -698 0.0136885255750835 -699 -0.0104440356403008 -700 -0.0241256457948681 -701 -0.000785820295910417 -702 0.0158790422192167 -703 0.0148074455993449 -704 0.0148524900638902 -705 -0.0115456319714617 -706 -0.0170567215815039 -707 -0.0158838823574548 -708 0.00366739139639638 -709 0.0229702948653725 -710 0.00020925945941642 -711 0.016393506286626 -712 -0.0146752015343459 -713 -0.0266439752231523 -714 -0.0106049447476659 -715 0.0200857710496951 -716 0.0159019417251445 -717 0.014477526739592 -718 -0.0114112270538866 -719 -0.0170568864212781 -720 -0.0198060133943224 -721 0.0141195633193631 -722 0.0169697876976791 -723 0.0111601506150928 -724 0.000736029778776562 -725 -0.0138823704910304 -726 -0.0297759947577568 -727 0.000877318422704956 -728 0.0245870344818203 -729 0.00991534185785315 -730 0.0167371008710776 -731 -0.01846756355292 -732 -0.0143120279886695 -733 -0.0275565546549941 -734 0.0192359115781678 -735 0.0161720734394042 -736 0.0126768844333159 -737 0.00181190220867761 -738 -0.0108467971335452 -739 -0.0304794501225128 -740 0.00782220949913542 -741 0.0209517859747924 -742 0.0159210578956611 -743 0.00507627421897103 -744 -0.0185977878326676 -745 -0.0172160801840428 -746 -0.0154503291175863 -747 0.0240468087097962 -748 0.00881259580601295 -749 0.0159692498562702 -750 -0.00910054705411617 -751 -0.0182022490122094 -752 -0.0240881360450285 -753 0.0120777690684819 -754 0.018009925362029 -755 0.0180902063329173 -756 0.000256136047852365 -757 -0.013362593701584 -758 -0.0228122214255098 -759 -0.00694060235600491 -760 0.0215395702278941 -761 0.0146271311142691 -762 0.0042224855013385 -763 -0.00912079764567066 -764 -0.0192977028904618 -765 -0.0141955473974918 -766 0.0183439845354601 -767 0.00930105732395573 -768 0.0184551584403917 -769 -0.00463309866829429 -770 -0.0226061978674481 -771 -0.0126560635461022 -772 -0.00415731908001533 -773 0.0187754008269273 -774 0.0180023436241415 -775 0.00200677790387502 -776 -0.00390091363657905 -777 -0.0259097935663753 -778 -0.00352849460582893 -779 0.0114869717500844 -780 0.0181590467496427 -781 0.00541354714803118 -782 -0.00341446349188591 -783 -0.0224873784300854 -784 -0.00419373295829652 -785 0.00151844686046239 -786 0.0113650109976602 -787 0.0158002722634896 -788 -0.00669123138348563 -789 -0.00944030297158121 -790 -0.0128471454926811 -791 -0.00195425126313221 -792 0.0074970279200069 -793 0.0181288263041054 -794 0.00373580246921938 -795 -0.00738898492727174 -796 -0.0131007631291169 -797 -0.000982016348095141 -798 -0.0077218774351863 -799 0.0213289345403391 -800 0.00354948225668615 -801 -0.00464603451943496 -802 -0.0112940265794087 -803 -0.00402400060757488 -804 0.00328202388625696 -805 -0.00289756468799923 -806 0.0217143167615233 -807 -0.00723480130387542 -808 -0.0106385305584251 -809 -0.000880622168562012 -810 0.00236278291649433 -811 -0.0102116844250211 -812 0.0231430095296313 -813 0.000498636796683443 -814 -0.00822238911567211 -815 -0.000690473274202945 -816 -0.0041688749017029 -817 -0.00252158403219581 -818 0.00607821741975229 -819 0.00777977338604755 -820 -0.00207050788971321 -821 -0.0140240864712808 -822 0.00947155215423528 -823 -0.00138467437610252 -824 -0.00770142306481203 -825 0.0154602942265093 -826 -0.00445857492028323 -827 -0.0101772151931684 -828 0.0100179562755017 -829 -0.00101796933766295 -830 -0.0119434679802116 -831 0.0102774737624907 -832 0.00478068349303803 -833 -0.00664556216054719 -834 -0.00197743246531773 -835 0.00543784524388563 -836 -0.0052886241893568 -837 0.0026439850351734 -838 0.0030919842085538 -839 -0.00804500518577692 -840 -0.0010416922039517 -841 0.0108884645351451 -842 -0.00566073610826143 -843 -0.00188898403884589 -844 -0.000623624431978478 -845 0.00428626298895372 -846 -0.0114117004140406 -847 0.0070058534073635 -848 0.01316321553763 -849 -0.0134743452627623 -850 0.00646873802741608 -851 -0.000711439355883821 -852 -0.0120290310079327 -853 0.00776340536975608 -854 0.0121426740397341 -855 -0.0112997696592519 -856 0.00101867582065373 -857 -0.00437667036049063 -858 0.000320275817054275 -859 -0.000142126707409615 -860 0.00721775365468403 -861 0.00498981583349973 -862 -0.00501663994971829 -863 -0.00749187478362105 -864 -0.00349429603220739 -865 0.00096737598977786 -866 0.00699694065608912 -867 0.00691803448626803 -868 -0.000449901074230268 -869 -0.00445988048738086 -870 -0.00905628623058306 -871 -0.00235661129997502 -872 0.00676090763319871 -873 0.00895030192113989 -874 4.49454384220283e-05 -875 -0.00263532947240222 -876 -0.010297542142376 -877 -0.010415543599356 -878 0.0128496698052284 -879 0.00696638356949457 -880 0.00214959987087146 -881 0.00604766744508239 -882 -0.0149547634792813 -883 -0.0133886474253249 -884 0.00661648124666426 -885 0.010135062194657 -886 0.0058559958108212 -887 0.00957431092209329 -888 -0.0090398903790597 -889 -0.0199467380548428 -890 -0.000587629934548291 -891 0.0110510611921795 -892 0.0128725674330994 -893 -0.00402188300253153 -894 0.00737831485228642 -895 -0.0184423803339027 -896 -0.0110288361296573 -897 0.00890220929064295 -898 0.0094403783725091 -899 -0.000809138837552774 -900 0.0116542051582576 -901 -0.0107875510009573 -902 -0.0180296809250011 -903 0.00306299530457164 -904 0.0106046718313357 -905 0.0100756629359416 -906 0.00402229149764495 -907 -0.00423755437734391 -908 -0.0147679502849595 -909 -0.00876645613183849 -910 0.00937383395424556 -911 0.00762135328148195 -912 0.00589312291049009 -913 0.00527632712012485 -914 -0.0150771941451772 -915 -0.0126209222242841 -916 0.00209594315460717 -917 0.0150533771997464 -918 -0.000323609234544641 -919 0.00910288654678051 -920 -0.00768699605697063 -921 -0.0131267840299683 -922 -0.00394519352651183 -923 0.0112577773951416 -924 0.00193303552341244 -925 0.0155473373100893 -926 -0.0059851304642569 -927 -0.0127129091731764 -928 -0.010012705310311 -929 0.00314209573634191 -930 0.0111473003309339 -931 0.00788913702307995 -932 0.00305911972139761 -933 -0.00846335727494071 -934 -0.0122811720479955 -935 -0.0061049349645249 -936 0.00712178796175147 -937 0.0109366030876719 -938 0.010847685977904 -939 -0.00884829082408408 -940 -0.00833721747749976 -941 -0.0119098033912994 -942 0.00740468154428091 -943 0.0055679748392607 -944 0.0108164694058525 -945 0.000125955287551805 -946 -0.00747241615545713 -947 -0.00869573388304389 -948 -0.00354302687064023 -949 0.00160999946217594 -950 0.0205396965281884 -951 -0.00211607394891862 -952 -0.00622739874288181 -953 -0.00653488891371642 -954 -0.00979554730684349 -955 0.000613100471788197 -956 0.0166711334404957 -957 0.00616769987888474 -958 -0.00491976982344559 -959 -0.00424317633763101 -960 -0.00827918671212606 -961 -0.00604128020653073 -962 0.00958577837280408 -963 0.0149354906693512 -964 -0.00421686394063702 -965 -0.00316215046844813 -966 -0.0064530371820805 -967 -0.00662231958613653 -968 0.00112156121486116 -969 0.0109421973075187 -970 0.00437305640139855 -971 -0.00455774256532607 -972 -0.00437412532272711 -973 -0.00518337545866395 -974 -0.00400100467146524 -975 0.0127573808612559 -976 0.00366553037525621 -977 -0.00238554249362654 -978 -0.00329057674587693 -979 -0.00396527990664183 -980 -0.00266571430247101 -981 0.00338581958247141 -982 0.00669480510272971 -983 -0.000520566185644882 -984 -0.00202730064400516 -985 -0.00225103555436894 -986 -0.00175391520986938 -987 -0.0030237079249996 -988 0.00556348089902938 -989 0.00016537124990895 -990 0.000366191847904269 -991 -0.000403568297995977 -992 -0.000980716337890804 -993 -0.00107150539540352 -994 -0.00116888364602599 -995 0.00111545140635789 -996 0.000974863549210892 -997 0.000888586420263992 -998 0.0007092258397136 -999 0.000470368356747198 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat deleted file mode 100644 index feedffb9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.023082971572876 0.019999999999996 0.019999999999996 0.0 1 -2 0.0226471424102783 0.0300000000000011 0.0300000000000011 0.0 2 -3 0.0225150585174561 0.0200000000000102 0.0200000000000102 0.0 3 -4 0.0226900577545166 0.019999999999996 0.019999999999996 0.0 4 -5 0.0225200653076172 0.019999999999996 0.019999999999996 0.0 5 -6 0.0237810611724854 0.0300000000000011 0.0300000000000011 0.0 6 -7 0.0472888946533203 0.0400000000000063 0.0400000000000063 0.0 7 -8 0.022852897644043 0.0300000000000011 0.0300000000000011 0.0 8 -9 0.0266950130462646 0.019999999999996 0.019999999999996 0.0 9 -10 0.0224850177764893 0.0300000000000011 0.0300000000000011 0.0 10 -11 0.0223457813262939 0.019999999999996 0.019999999999996 0.0 11 -12 0.0224599838256836 0.019999999999996 0.019999999999996 0.0 12 -13 0.0224049091339111 0.0200000000000102 0.0200000000000102 0.0 13 -14 0.0482068061828613 0.0499999999999972 0.0499999999999972 0.0 14 -15 0.0226612091064453 0.019999999999996 0.019999999999996 0.0 15 -16 0.0224330425262451 0.019999999999996 0.019999999999996 0.0 16 -17 0.0224549770355225 0.019999999999996 0.019999999999996 0.0 17 -18 0.0225000381469727 0.0200000000000102 0.0200000000000102 0.0 18 -19 0.0258901119232178 0.0300000000000011 0.0300000000000011 0.0 19 -20 0.0469810962677002 0.0499999999999972 0.0499999999999972 0.0 20 -21 0.0228328704833984 0.019999999999996 0.019999999999996 0.0 21 -22 0.0226919651031494 0.019999999999996 0.019999999999996 0.0 22 -23 0.022468090057373 0.0200000000000102 0.0200000000000102 0.0 23 -24 0.0230059623718262 0.0299999999999869 0.0299999999999869 0.0 24 -25 0.0221710205078125 0.0200000000000102 0.0200000000000102 0.0 25 -26 0.0221641063690186 0.019999999999996 0.019999999999996 0.0 26 -27 0.0475480556488037 0.0499999999999972 0.0499999999999972 0.0 27 -28 0.025291919708252 0.0200000000000102 0.0200000000000102 0.0 28 -29 0.0225188732147217 0.0299999999999869 0.0299999999999869 0.0 29 -30 0.0293300151824951 0.0300000000000011 0.0300000000000011 0.0 30 -31 0.0234100818634033 0.0200000000000102 0.0200000000000102 0.0 31 -32 0.0224781036376953 0.019999999999996 0.019999999999996 0.0 32 -33 0.0478579998016357 0.0499999999999972 0.0499999999999972 0.0 33 -34 0.0229699611663818 0.019999999999996 0.019999999999996 0.0 34 -35 0.0227549076080322 0.0300000000000011 0.0300000000000011 0.0 35 -36 0.0226318836212158 0.0200000000000102 0.0200000000000102 0.0 36 -37 0.0262620449066162 0.019999999999996 0.019999999999996 0.0 37 -38 0.0223979949951172 0.0300000000000011 0.0300000000000011 0.0 38 -39 0.0222330093383789 0.019999999999996 0.019999999999996 0.0 39 -40 0.0477039813995361 0.0499999999999972 0.0499999999999972 0.0 40 -41 0.0228910446166992 0.0200000000000102 0.0200000000000102 0.0 41 -42 0.0233700275421143 0.019999999999996 0.019999999999996 0.0 42 -43 0.0224530696868896 0.0300000000000011 0.0300000000000011 0.0 43 -44 0.0225670337677002 0.019999999999996 0.019999999999996 0.0 44 -45 0.0227048397064209 0.019999999999996 0.019999999999996 0.0 45 -46 0.0222969055175781 0.0200000000000102 0.0200000000000102 0.0 46 -47 0.050562858581543 0.0499999999999972 0.0499999999999972 0.0 47 -48 0.0228369235992432 0.0300000000000011 0.0300000000000011 0.0 48 -49 0.0225470066070557 0.019999999999996 0.019999999999996 0.0 49 -50 0.02256178855896 0.019999999999996 0.019999999999996 0.0 50 -51 0.0225701332092285 0.0300000000000011 0.0300000000000011 0.0 51 -52 0.0230269432067871 0.019999999999996 0.019999999999996 0.0 52 -53 0.0470359325408936 0.0500000000000114 0.0500000000000114 0.0 53 -54 0.0227799415588379 0.019999999999996 0.019999999999996 0.0 54 -55 0.0225660800933838 0.019999999999996 0.019999999999996 0.0 55 -56 0.025252103805542 0.0300000000000011 0.0300000000000011 0.0 56 -57 0.0222170352935791 0.019999999999996 0.019999999999996 0.0 57 -58 0.0221600532531738 0.0200000000000102 0.0200000000000102 0.0 58 -59 0.0222020149230957 0.019999999999996 0.019999999999996 0.0 59 -60 0.0476398468017578 0.0499999999999972 0.0499999999999972 0.0 60 -61 0.022913932800293 0.019999999999996 0.019999999999996 0.0 61 -62 0.0225539207458496 0.0300000000000011 0.0300000000000011 0.0 62 -63 0.0225050449371338 0.0200000000000102 0.0200000000000102 0.0 63 -64 0.022601842880249 0.019999999999996 0.019999999999996 0.0 64 -65 0.0236048698425293 0.0300000000000011 0.0300000000000011 0.0 65 -66 0.0489590167999268 0.039999999999992 0.039999999999992 0.0 66 -67 0.0297541618347168 0.0300000000000011 0.0300000000000011 0.0 67 -68 0.0229940414428711 0.0300000000000011 0.0300000000000011 0.0 68 -69 0.0228681564331055 0.0200000000000102 0.0200000000000102 0.0 69 -70 0.0228149890899658 0.019999999999996 0.019999999999996 0.0 70 -71 0.0225210189819336 0.0300000000000011 0.0300000000000011 0.0 71 -72 0.022305965423584 0.019999999999996 0.019999999999996 0.0 72 -73 0.0474321842193604 0.0499999999999972 0.0499999999999972 0.0 73 -74 0.0265100002288818 0.0200000000000102 0.0200000000000102 0.0 74 -75 0.0226712226867676 0.019999999999996 0.019999999999996 0.0 75 -76 0.022493839263916 0.0300000000000011 0.0300000000000011 0.0 76 -77 0.0225288867950439 0.019999999999996 0.019999999999996 0.0 77 -78 0.0226340293884277 0.019999999999996 0.019999999999996 0.0 78 -79 0.0476889610290527 0.0499999999999972 0.0499999999999972 0.0 79 -80 0.0229480266571045 0.0200000000000102 0.0200000000000102 0.0 80 -81 0.0228819847106934 0.0300000000000011 0.0300000000000011 0.0 81 -82 0.0227799415588379 0.019999999999996 0.019999999999996 0.0 82 -83 0.0224130153656006 0.019999999999996 0.019999999999996 0.0 83 -84 0.0260109901428223 0.0300000000000011 0.0300000000000011 0.0 84 -85 0.0223500728607178 0.019999999999996 0.019999999999996 0.0 85 -86 0.0476620197296143 0.0500000000000114 0.0500000000000114 0.0 86 -87 0.022737979888916 0.019999999999996 0.019999999999996 0.0 87 -88 0.0233170986175537 0.019999999999996 0.019999999999996 0.0 88 -89 0.0224459171295166 0.0300000000000011 0.0300000000000011 0.0 89 -90 0.0226268768310547 0.019999999999996 0.019999999999996 0.0 90 -91 0.0225470066070557 0.0200000000000102 0.0200000000000102 0.0 91 -92 0.0492300987243652 0.0499999999999972 0.0499999999999972 0.0 92 -93 0.0236849784851074 0.019999999999996 0.019999999999996 0.0 93 -94 0.0227689743041992 0.0300000000000011 0.0300000000000011 0.0 94 -95 0.022672176361084 0.019999999999996 0.019999999999996 0.0 95 -96 0.022651195526123 0.0200000000000102 0.0200000000000102 0.0 96 -97 0.0225498676300049 0.0300000000000011 0.0300000000000011 0.0 97 -98 0.0222620964050293 0.019999999999996 0.019999999999996 0.0 98 -99 0.0475699901580811 0.0499999999999972 0.0499999999999972 0.0 99 -100 0.0227551460266113 0.019999999999996 0.019999999999996 0.0 100 -101 0.0227038860321045 0.0200000000000102 0.0200000000000102 0.0 101 -102 0.0256071090698242 0.0300000000000011 0.0300000000000011 0.0 102 -103 0.0226211547851562 0.019999999999996 0.019999999999996 0.0 103 -104 0.0256171226501465 0.0300000000000011 0.0300000000000011 0.0 104 -105 0.051800012588501 0.0499999999999972 0.0499999999999972 0.0 105 -106 0.023643970489502 0.019999999999996 0.019999999999996 0.0 106 -107 0.0227420330047607 0.019999999999996 0.019999999999996 0.0 107 -108 0.0226438045501709 0.0300000000000011 0.0300000000000011 0.0 108 -109 0.022442102432251 0.0200000000000102 0.0200000000000102 0.0 109 -110 0.0223290920257568 0.019999999999996 0.019999999999996 0.0 110 -111 0.0222249031066895 0.019999999999996 0.019999999999996 0.0 111 -112 0.0505638122558594 0.0499999999999972 0.0499999999999972 0.0 112 -113 0.0227949619293213 0.0300000000000011 0.0300000000000011 0.0 113 -114 0.0227949619293213 0.0200000000000102 0.0200000000000102 0.0 114 -115 0.0225298404693604 0.019999999999996 0.019999999999996 0.0 115 -116 0.0225038528442383 0.019999999999996 0.019999999999996 0.0 116 -117 0.0231928825378418 0.0300000000000011 0.0300000000000011 0.0 117 -118 0.0223879814147949 0.019999999999996 0.019999999999996 0.0 118 -119 0.0476298332214355 0.0500000000000114 0.0500000000000114 0.0 119 -120 0.0247969627380371 0.019999999999996 0.019999999999996 0.0 120 -121 0.0240130424499512 0.0300000000000011 0.0300000000000011 0.0 121 -122 0.0225648880004883 0.019999999999996 0.019999999999996 0.0 122 -123 0.0225870609283447 0.019999999999996 0.019999999999996 0.0 123 -124 0.0225720405578613 0.0300000000000011 0.0300000000000011 0.0 124 -125 0.0477638244628906 0.0400000000000063 0.0400000000000063 0.0 125 -126 0.0232040882110596 0.0300000000000011 0.0300000000000011 0.0 126 -127 0.0227577686309814 0.019999999999996 0.019999999999996 0.0 127 -128 0.0225858688354492 0.019999999999996 0.019999999999996 0.0 128 -129 0.0224049091339111 0.0200000000000102 0.0200000000000102 0.0 129 -130 0.0251419544219971 0.0300000000000011 0.0300000000000011 0.0 130 -131 0.0224969387054443 0.019999999999996 0.019999999999996 0.0 131 -132 0.0474879741668701 0.0499999999999972 0.0499999999999972 0.0 132 -133 0.0228550434112549 0.019999999999996 0.019999999999996 0.0 133 -134 0.0226738452911377 0.0300000000000011 0.0300000000000011 0.0 134 -135 0.0226309299468994 0.019999999999996 0.019999999999996 0.0 135 -136 0.0224778652191162 0.0200000000000102 0.0200000000000102 0.0 136 -137 0.0225551128387451 0.019999999999996 0.019999999999996 0.0 137 -138 0.0470321178436279 0.0499999999999972 0.0499999999999972 0.0 138 -139 0.0260279178619385 0.0300000000000011 0.0300000000000011 0.0 139 -140 0.0227389335632324 0.019999999999996 0.019999999999996 0.0 140 -141 0.029339075088501 0.0300000000000011 0.0300000000000011 0.0 141 -142 0.0226800441741943 0.0200000000000102 0.0200000000000102 0.0 142 -143 0.0223538875579834 0.019999999999996 0.019999999999996 0.0 143 -144 0.0231339931488037 0.0300000000000011 0.0300000000000011 0.0 144 -145 0.0474388599395752 0.039999999999992 0.039999999999992 0.0 145 -146 0.0227169990539551 0.0300000000000011 0.0300000000000011 0.0 146 -147 0.0225269794464111 0.0200000000000102 0.0200000000000102 0.0 147 -148 0.0240280628204346 0.019999999999996 0.019999999999996 0.0 148 -149 0.0242280960083008 0.0300000000000011 0.0300000000000011 0.0 149 -150 0.0225520133972168 0.019999999999996 0.019999999999996 0.0 150 -151 0.0471599102020264 0.0499999999999972 0.0499999999999972 0.0 151 -152 0.0230400562286377 0.0200000000000102 0.0200000000000102 0.0 152 -153 0.0234670639038086 0.019999999999996 0.019999999999996 0.0 153 -154 0.0225429534912109 0.0300000000000011 0.0300000000000011 0.0 154 -155 0.0225739479064941 0.019999999999996 0.019999999999996 0.0 155 -156 0.0225040912628174 0.019999999999996 0.019999999999996 0.0 156 -157 0.0224270820617676 0.0200000000000102 0.0200000000000102 0.0 157 -158 0.050184965133667 0.0499999999999972 0.0499999999999972 0.0 158 -159 0.0228159427642822 0.0300000000000011 0.0300000000000011 0.0 159 -160 0.0225830078125 0.019999999999996 0.019999999999996 0.0 160 -161 0.0224440097808838 0.019999999999996 0.019999999999996 0.0 161 -162 0.0228800773620605 0.0200000000000102 0.0200000000000102 0.0 162 -163 0.0230019092559814 0.0299999999999869 0.0299999999999869 0.0 163 -164 0.0468800067901611 0.0400000000000063 0.0400000000000063 0.0 164 -165 0.0230178833007812 0.019999999999996 0.019999999999996 0.0 165 -166 0.0227179527282715 0.0300000000000011 0.0300000000000011 0.0 166 -167 0.0280098915100098 0.0200000000000102 0.0200000000000102 0.0 167 -168 0.0224480628967285 0.0299999999999869 0.0299999999999869 0.0 168 -169 0.0222821235656738 0.0200000000000102 0.0200000000000102 0.0 169 -170 0.0222339630126953 0.019999999999996 0.019999999999996 0.0 170 -171 0.0482370853424072 0.0499999999999972 0.0499999999999972 0.0 171 -172 0.0229589939117432 0.019999999999996 0.019999999999996 0.0 172 -173 0.0225811004638672 0.0200000000000102 0.0200000000000102 0.0 173 -174 0.0225679874420166 0.0300000000000011 0.0300000000000011 0.0 174 -175 0.0226399898529053 0.019999999999996 0.019999999999996 0.0 175 -176 0.0225110054016113 0.019999999999996 0.019999999999996 0.0 176 -177 0.0512759685516357 0.0599999999999881 0.0499999999999972 0.01 177 -178 0.0293910503387451 0.0300000000000011 0.0300000000000011 0.0 178 -179 0.0228638648986816 0.0200000000000102 0.0200000000000102 0.0 179 -180 0.0226418972015381 0.0300000000000011 0.0300000000000011 0.0 180 -181 0.0233349800109863 0.019999999999996 0.019999999999996 0.0 181 -182 0.0224719047546387 0.019999999999996 0.019999999999996 0.0 182 -183 0.0222139358520508 0.019999999999996 0.019999999999996 0.0 183 -184 0.0475149154663086 0.0500000000000114 0.0500000000000114 0.0 184 -185 0.0268290042877197 0.0300000000000011 0.0300000000000011 0.0 185 -186 0.0225980281829834 0.019999999999996 0.019999999999996 0.0 186 -187 0.0224361419677734 0.019999999999996 0.019999999999996 0.0 187 -188 0.0225210189819336 0.0300000000000011 0.0300000000000011 0.0 188 -189 0.022615909576416 0.019999999999996 0.019999999999996 0.0 189 -190 0.0477218627929688 0.0499999999999972 0.0499999999999972 0.0 190 -191 0.0229659080505371 0.0200000000000102 0.0200000000000102 0.0 191 -192 0.0230429172515869 0.019999999999996 0.019999999999996 0.0 192 -193 0.0226750373840332 0.0300000000000011 0.0300000000000011 0.0 193 -194 0.0224380493164062 0.019999999999996 0.019999999999996 0.0 194 -195 0.0255289077758789 0.0200000000000102 0.0200000000000102 0.0 195 -196 0.0223410129547119 0.0299999999999869 0.0299999999999869 0.0 196 -197 0.0477759838104248 0.0400000000000063 0.0400000000000063 0.0 197 -198 0.0227560997009277 0.0300000000000011 0.0300000000000011 0.0 198 -199 0.0232150554656982 0.019999999999996 0.019999999999996 0.0 199 -200 0.0224218368530273 0.019999999999996 0.019999999999996 0.0 200 -201 0.0226380825042725 0.0300000000000011 0.0300000000000011 0.0 201 -202 0.0225119590759277 0.0200000000000102 0.0200000000000102 0.0 202 -203 0.0471208095550537 0.0499999999999972 0.0499999999999972 0.0 203 -204 0.0271830558776855 0.019999999999996 0.019999999999996 0.0 204 -205 0.0227551460266113 0.0300000000000011 0.0300000000000011 0.0 205 -206 0.0225760936737061 0.019999999999996 0.019999999999996 0.0 206 -207 0.0225489139556885 0.0200000000000102 0.0200000000000102 0.0 207 -208 0.0224738121032715 0.019999999999996 0.019999999999996 0.0 208 -209 0.0224080085754395 0.019999999999996 0.019999999999996 0.0 209 -210 0.0474929809570312 0.0499999999999972 0.0499999999999972 0.0 210 -211 0.0227348804473877 0.0200000000000102 0.0200000000000102 0.0 211 -212 0.0227007865905762 0.0300000000000011 0.0300000000000011 0.0 212 -213 0.0257821083068848 0.019999999999996 0.019999999999996 0.0 213 -214 0.0230338573455811 0.0300000000000011 0.0300000000000011 0.0 214 -215 0.0283098220825195 0.019999999999996 0.019999999999996 0.0 215 -216 0.048043966293335 0.0499999999999972 0.0499999999999972 0.0 216 -217 0.0241200923919678 0.0300000000000011 0.0300000000000011 0.0 217 -218 0.0226061344146729 0.019999999999996 0.019999999999996 0.0 218 -219 0.0226290225982666 0.0200000000000102 0.0200000000000102 0.0 219 -220 0.0223400592803955 0.019999999999996 0.019999999999996 0.0 220 -221 0.0222020149230957 0.019999999999996 0.019999999999996 0.0 221 -222 0.0221819877624512 0.019999999999996 0.019999999999996 0.0 222 -223 0.0513238906860352 0.0499999999999972 0.0499999999999972 0.0 223 -224 0.0227959156036377 0.0200000000000102 0.0200000000000102 0.0 224 -225 0.02286696434021 0.0300000000000011 0.0300000000000011 0.0 225 -226 0.0226180553436279 0.019999999999996 0.019999999999996 0.0 226 -227 0.0225269794464111 0.019999999999996 0.019999999999996 0.0 227 -228 0.0236740112304688 0.0300000000000011 0.0300000000000011 0.0 228 -229 0.0473580360412598 0.0400000000000063 0.0400000000000063 0.0 229 -230 0.0230889320373535 0.0300000000000011 0.0300000000000011 0.0 230 -231 0.0243098735809326 0.019999999999996 0.019999999999996 0.0 231 -232 0.0242350101470947 0.019999999999996 0.019999999999996 0.0 232 -233 0.0224809646606445 0.0300000000000011 0.0300000000000011 0.0 233 -234 0.0225131511688232 0.019999999999996 0.019999999999996 0.0 234 -235 0.0222058296203613 0.0200000000000102 0.0200000000000102 0.0 235 -236 0.0484139919281006 0.0499999999999972 0.0499999999999972 0.0 236 -237 0.0229649543762207 0.019999999999996 0.019999999999996 0.0 237 -238 0.0226538181304932 0.0300000000000011 0.0300000000000011 0.0 238 -239 0.0224990844726562 0.019999999999996 0.019999999999996 0.0 239 -240 0.0224988460540771 0.0200000000000102 0.0200000000000102 0.0 240 -241 0.0252270698547363 0.0300000000000011 0.0300000000000011 0.0 241 -242 0.0471029281616211 0.039999999999992 0.039999999999992 0.0 242 -243 0.0229470729827881 0.0300000000000011 0.0300000000000011 0.0 243 -244 0.0228309631347656 0.019999999999996 0.019999999999996 0.0 244 -245 0.0227391719818115 0.0200000000000102 0.0200000000000102 0.0 245 -246 0.0233259201049805 0.0299999999999869 0.0299999999999869 0.0 246 -247 0.0224099159240723 0.0200000000000102 0.0200000000000102 0.0 247 -248 0.0227949619293213 0.019999999999996 0.019999999999996 0.0 248 -249 0.0480821132659912 0.0499999999999972 0.0499999999999972 0.0 249 -250 0.026867151260376 0.0300000000000011 0.0300000000000011 0.0 250 -251 0.0245769023895264 0.019999999999996 0.019999999999996 0.0 251 -252 0.0283010005950928 0.0300000000000011 0.0300000000000011 0.0 252 -253 0.0227351188659668 0.0200000000000102 0.0200000000000102 0.0 253 -254 0.0224411487579346 0.019999999999996 0.019999999999996 0.0 254 -255 0.0479519367218018 0.0499999999999972 0.0499999999999972 0.0 255 -256 0.0230560302734375 0.019999999999996 0.019999999999996 0.0 256 -257 0.0227730274200439 0.0300000000000011 0.0300000000000011 0.0 257 -258 0.022550106048584 0.0200000000000102 0.0200000000000102 0.0 258 -259 0.0257129669189453 0.0300000000000011 0.0300000000000011 0.0 259 -260 0.0255739688873291 0.019999999999996 0.019999999999996 0.0 260 -261 0.0222690105438232 0.019999999999996 0.019999999999996 0.0 261 -262 0.0475499629974365 0.0499999999999972 0.0499999999999972 0.0 262 -263 0.0229249000549316 0.0200000000000102 0.0200000000000102 0.0 263 -264 0.0233249664306641 0.0299999999999869 0.0299999999999869 0.0 264 -265 0.0224719047546387 0.0200000000000102 0.0200000000000102 0.0 265 -266 0.0227599143981934 0.019999999999996 0.019999999999996 0.0 266 -267 0.0225708484649658 0.019999999999996 0.019999999999996 0.0 267 -268 0.0508639812469482 0.0500000000000114 0.0500000000000114 0.0 268 -269 0.0232470035552979 0.0299999999999869 0.0299999999999869 0.0 269 -270 0.0228660106658936 0.0200000000000102 0.0200000000000102 0.0 270 -271 0.0226750373840332 0.019999999999996 0.019999999999996 0.0 271 -272 0.0224699974060059 0.0300000000000011 0.0300000000000011 0.0 272 -273 0.023015022277832 0.019999999999996 0.019999999999996 0.0 273 -274 0.0223150253295898 0.019999999999996 0.019999999999996 0.0 274 -275 0.0476338863372803 0.0500000000000114 0.0500000000000114 0.0 275 -276 0.0227279663085938 0.019999999999996 0.019999999999996 0.0 276 -277 0.022507905960083 0.019999999999996 0.019999999999996 0.0 277 -278 0.0251290798187256 0.0300000000000011 0.0300000000000011 0.0 278 -279 0.0224900245666504 0.019999999999996 0.019999999999996 0.0 279 -280 0.0226230621337891 0.0200000000000102 0.0200000000000102 0.0 280 -281 0.0479300022125244 0.0499999999999972 0.0499999999999972 0.0 281 -282 0.0231950283050537 0.019999999999996 0.019999999999996 0.0 282 -283 0.0243661403656006 0.0300000000000011 0.0300000000000011 0.0 283 -284 0.0225939750671387 0.019999999999996 0.019999999999996 0.0 284 -285 0.0224170684814453 0.0200000000000102 0.0200000000000102 0.0 285 -286 0.0223720073699951 0.019999999999996 0.019999999999996 0.0 286 -287 0.0249221324920654 0.0300000000000011 0.0300000000000011 0.0 287 -288 0.0556089878082275 0.0600000000000023 0.0600000000000023 0.0 288 -289 0.0228722095489502 0.019999999999996 0.019999999999996 0.0 289 -290 0.0225820541381836 0.019999999999996 0.019999999999996 0.0 290 -291 0.0232369899749756 0.0200000000000102 0.0200000000000102 0.0 291 -292 0.0225460529327393 0.0299999999999869 0.0299999999999869 0.0 292 -293 0.0225048065185547 0.0200000000000102 0.0200000000000102 0.0 293 -294 0.0471150875091553 0.0499999999999972 0.0499999999999972 0.0 294 -295 0.0229630470275879 0.019999999999996 0.019999999999996 0.0 295 -296 0.026698112487793 0.0300000000000011 0.0300000000000011 0.0 296 -297 0.0225720405578613 0.019999999999996 0.019999999999996 0.0 297 -298 0.0224101543426514 0.0200000000000102 0.0200000000000102 0.0 298 -299 0.0224401950836182 0.019999999999996 0.019999999999996 0.0 299 -300 0.0223391056060791 0.0300000000000011 0.0300000000000011 0.0 300 -301 0.0480380058288574 0.039999999999992 0.039999999999992 0.0 301 -302 0.0228781700134277 0.0300000000000011 0.0300000000000011 0.0 302 -303 0.0226998329162598 0.0200000000000102 0.0200000000000102 0.0 303 -304 0.0224788188934326 0.019999999999996 0.019999999999996 0.0 304 -305 0.0245270729064941 0.0300000000000011 0.0300000000000011 0.0 305 -306 0.0251939296722412 0.019999999999996 0.019999999999996 0.0 306 -307 0.0470340251922607 0.0499999999999972 0.0499999999999972 0.0 307 -308 0.0229289531707764 0.0200000000000102 0.0200000000000102 0.0 308 -309 0.0233960151672363 0.0300000000000011 0.0300000000000011 0.0 309 -310 0.0224819183349609 0.019999999999996 0.019999999999996 0.0 310 -311 0.0227260589599609 0.019999999999996 0.019999999999996 0.0 311 -312 0.0223228931427002 0.019999999999996 0.019999999999996 0.0 312 -313 0.0223159790039062 0.0300000000000011 0.0300000000000011 0.0 313 -314 0.0510008335113525 0.0500000000000114 0.0500000000000114 0.0 314 -315 0.022799015045166 0.019999999999996 0.019999999999996 0.0 315 -316 0.0225009918212891 0.019999999999996 0.019999999999996 0.0 316 -317 0.0224380493164062 0.0300000000000011 0.0300000000000011 0.0 317 -318 0.0225141048431396 0.019999999999996 0.019999999999996 0.0 318 -319 0.0224788188934326 0.0200000000000102 0.0200000000000102 0.0 319 -320 0.0472540855407715 0.0499999999999972 0.0499999999999972 0.0 320 -321 0.0229048728942871 0.019999999999996 0.019999999999996 0.0 321 -322 0.022752046585083 0.019999999999996 0.019999999999996 0.0 322 -323 0.0224988460540771 0.0300000000000011 0.0300000000000011 0.0 323 -324 0.026637077331543 0.0200000000000102 0.0200000000000102 0.0 324 -325 0.0254490375518799 0.0299999999999869 0.0299999999999869 0.0 325 -326 0.0267879962921143 0.0300000000000011 0.0300000000000011 0.0 326 -327 0.0475130081176758 0.0400000000000063 0.0400000000000063 0.0 327 -328 0.0235271453857422 0.0300000000000011 0.0300000000000011 0.0 328 -329 0.0225729942321777 0.019999999999996 0.019999999999996 0.0 329 -330 0.0224888324737549 0.019999999999996 0.019999999999996 0.0 330 -331 0.0224771499633789 0.0200000000000102 0.0200000000000102 0.0 331 -332 0.0225000381469727 0.0300000000000011 0.0300000000000011 0.0 332 -333 0.0503771305084229 0.0499999999999972 0.0499999999999972 0.0 333 -334 0.02280592918396 0.019999999999996 0.019999999999996 0.0 334 -335 0.0226900577545166 0.019999999999996 0.019999999999996 0.0 335 -336 0.0226840972900391 0.0300000000000011 0.0300000000000011 0.0 336 -337 0.0223648548126221 0.0200000000000102 0.0200000000000102 0.0 337 -338 0.0229740142822266 0.019999999999996 0.019999999999996 0.0 338 -339 0.0223648548126221 0.019999999999996 0.019999999999996 0.0 339 -340 0.047623872756958 0.0499999999999972 0.0499999999999972 0.0 340 -341 0.0227048397064209 0.0200000000000102 0.0200000000000102 0.0 341 -342 0.0267980098724365 0.0300000000000011 0.0300000000000011 0.0 342 -343 0.0225899219512939 0.019999999999996 0.019999999999996 0.0 343 -344 0.022446870803833 0.0300000000000011 0.0300000000000011 0.0 344 -345 0.0226569175720215 0.019999999999996 0.019999999999996 0.0 345 -346 0.0477259159088135 0.0499999999999972 0.0499999999999972 0.0 346 -347 0.0228300094604492 0.019999999999996 0.019999999999996 0.0 347 -348 0.0228700637817383 0.0200000000000102 0.0200000000000102 0.0 348 -349 0.0224990844726562 0.019999999999996 0.019999999999996 0.0 349 -350 0.0223531723022461 0.0300000000000011 0.0300000000000011 0.0 350 -351 0.0225429534912109 0.019999999999996 0.019999999999996 0.0 351 -352 0.0264379978179932 0.0300000000000011 0.0300000000000011 0.0 352 -353 0.04734206199646 0.0400000000000063 0.0400000000000063 0.0 353 -354 0.0228159427642822 0.0300000000000011 0.0300000000000011 0.0 354 -355 0.0224540233612061 0.019999999999996 0.019999999999996 0.0 355 -356 0.0227231979370117 0.019999999999996 0.019999999999996 0.0 356 -357 0.0225269794464111 0.019999999999996 0.019999999999996 0.0 357 -358 0.0225820541381836 0.0300000000000011 0.0300000000000011 0.0 358 -359 0.0475459098815918 0.0400000000000063 0.0400000000000063 0.0 359 -360 0.0234520435333252 0.0300000000000011 0.0300000000000011 0.0 360 -361 0.0246992111206055 0.019999999999996 0.019999999999996 0.0 361 -362 0.0294170379638672 0.0300000000000011 0.0300000000000011 0.0 362 -363 0.0224790573120117 0.019999999999996 0.019999999999996 0.0 363 -364 0.0222852230072021 0.0300000000000011 0.0300000000000011 0.0 364 -365 0.0477530956268311 0.0400000000000063 0.0400000000000063 0.0 365 -366 0.0229170322418213 0.0300000000000011 0.0300000000000011 0.0 366 -367 0.0227410793304443 0.019999999999996 0.019999999999996 0.0 367 -368 0.0225741863250732 0.019999999999996 0.019999999999996 0.0 368 -369 0.0224859714508057 0.0300000000000011 0.0300000000000011 0.0 369 -370 0.0270230770111084 0.0200000000000102 0.0200000000000102 0.0 370 -371 0.0225620269775391 0.0299999999999869 0.0299999999999869 0.0 371 -372 0.047544002532959 0.0400000000000063 0.0400000000000063 0.0 372 -373 0.0227890014648438 0.0300000000000011 0.0300000000000011 0.0 373 -374 0.0226559638977051 0.019999999999996 0.019999999999996 0.0 374 -375 0.0231430530548096 0.019999999999996 0.019999999999996 0.0 375 -376 0.0225589275360107 0.0200000000000102 0.0200000000000102 0.0 376 -377 0.0225508213043213 0.0300000000000011 0.0300000000000011 0.0 377 -378 0.0470719337463379 0.039999999999992 0.039999999999992 0.0 378 -379 0.0261499881744385 0.0300000000000011 0.0300000000000011 0.0 379 -380 0.0227980613708496 0.019999999999996 0.019999999999996 0.0 380 -381 0.0226030349731445 0.0300000000000011 0.0300000000000011 0.0 381 -382 0.022442102432251 0.0200000000000102 0.0200000000000102 0.0 382 -383 0.0225498676300049 0.019999999999996 0.019999999999996 0.0 383 -384 0.0228650569915771 0.019999999999996 0.019999999999996 0.0 384 -385 0.0473499298095703 0.0499999999999972 0.0499999999999972 0.0 385 -386 0.0227880477905273 0.0200000000000102 0.0200000000000102 0.0 386 -387 0.0225081443786621 0.0300000000000011 0.0300000000000011 0.0 387 -388 0.0234310626983643 0.019999999999996 0.019999999999996 0.0 388 -389 0.0260570049285889 0.0300000000000011 0.0300000000000011 0.0 389 -390 0.0224580764770508 0.019999999999996 0.019999999999996 0.0 390 -391 0.0471310615539551 0.0499999999999972 0.0499999999999972 0.0 391 -392 0.02298903465271 0.0200000000000102 0.0200000000000102 0.0 392 -393 0.022860050201416 0.019999999999996 0.019999999999996 0.0 393 -394 0.0225329399108887 0.019999999999996 0.019999999999996 0.0 394 -395 0.0224058628082275 0.0300000000000011 0.0300000000000011 0.0 395 -396 0.0223350524902344 0.019999999999996 0.019999999999996 0.0 396 -397 0.022367000579834 0.0200000000000102 0.0200000000000102 0.0 397 -398 0.055199146270752 0.0599999999999881 0.0599999999999881 0.0 398 -399 0.0272421836853027 0.0200000000000102 0.0200000000000102 0.0 399 -400 0.0226209163665771 0.0300000000000011 0.0300000000000011 0.0 400 -401 0.0224409103393555 0.019999999999996 0.019999999999996 0.0 401 -402 0.0233349800109863 0.019999999999996 0.019999999999996 0.0 402 -403 0.0224699974060059 0.0300000000000011 0.0300000000000011 0.0 403 -404 0.0471019744873047 0.0400000000000063 0.0400000000000063 0.0 404 -405 0.0228829383850098 0.0300000000000011 0.0300000000000011 0.0 405 -406 0.0244019031524658 0.019999999999996 0.019999999999996 0.0 406 -407 0.0267729759216309 0.0300000000000011 0.0300000000000011 0.0 407 -408 0.0224130153656006 0.019999999999996 0.019999999999996 0.0 408 -409 0.022313117980957 0.019999999999996 0.019999999999996 0.0 409 -410 0.0224151611328125 0.0200000000000102 0.0200000000000102 0.0 410 -411 0.0483131408691406 0.0499999999999972 0.0499999999999972 0.0 411 -412 0.0227799415588379 0.019999999999996 0.019999999999996 0.0 412 -413 0.0228002071380615 0.0300000000000011 0.0300000000000011 0.0 413 -414 0.0224690437316895 0.019999999999996 0.019999999999996 0.0 414 -415 0.0225539207458496 0.0200000000000102 0.0200000000000102 0.0 415 -416 0.0254161357879639 0.0300000000000011 0.0300000000000011 0.0 416 -417 0.0482659339904785 0.0499999999999972 0.0499999999999972 0.0 417 -418 0.0229690074920654 0.019999999999996 0.019999999999996 0.0 418 -419 0.0226681232452393 0.019999999999996 0.019999999999996 0.0 419 -420 0.0230739116668701 0.0200000000000102 0.0200000000000102 0.0 420 -421 0.0223119258880615 0.0299999999999869 0.0299999999999869 0.0 421 -422 0.0240011215209961 0.0200000000000102 0.0200000000000102 0.0 422 -423 0.0470819473266602 0.0499999999999972 0.0499999999999972 0.0 423 -424 0.0231809616088867 0.019999999999996 0.019999999999996 0.0 424 -425 0.027169942855835 0.0300000000000011 0.0300000000000011 0.0 425 -426 0.0226540565490723 0.019999999999996 0.019999999999996 0.0 426 -427 0.0227150917053223 0.0200000000000102 0.0200000000000102 0.0 427 -428 0.0225992202758789 0.0300000000000011 0.0300000000000011 0.0 428 -429 0.0225179195404053 0.019999999999996 0.019999999999996 0.0 429 -430 0.0476188659667969 0.0499999999999972 0.0499999999999972 0.0 430 -431 0.0228111743927002 0.019999999999996 0.019999999999996 0.0 431 -432 0.0226650238037109 0.0200000000000102 0.0200000000000102 0.0 432 -433 0.0224969387054443 0.019999999999996 0.019999999999996 0.0 433 -434 0.0223591327667236 0.0300000000000011 0.0300000000000011 0.0 434 -435 0.0267119407653809 0.019999999999996 0.019999999999996 0.0 435 -436 0.0539910793304443 0.0600000000000023 0.0600000000000023 0.0 436 -437 0.0230631828308105 0.019999999999996 0.019999999999996 0.0 437 -438 0.0237729549407959 0.0200000000000102 0.0200000000000102 0.0 438 -439 0.0227470397949219 0.0299999999999869 0.0299999999999869 0.0 439 -440 0.0226438045501709 0.0200000000000102 0.0200000000000102 0.0 440 -441 0.0225329399108887 0.019999999999996 0.019999999999996 0.0 441 -442 0.0225589275360107 0.019999999999996 0.019999999999996 0.0 442 -443 0.0517570972442627 0.0600000000000023 0.0600000000000023 0.0 443 -444 0.0228259563446045 0.019999999999996 0.019999999999996 0.0 444 -445 0.0225679874420166 0.0200000000000102 0.0200000000000102 0.0 445 -446 0.0226199626922607 0.019999999999996 0.019999999999996 0.0 446 -447 0.0224108695983887 0.0300000000000011 0.0300000000000011 0.0 447 -448 0.022813081741333 0.019999999999996 0.019999999999996 0.0 448 -449 0.048245906829834 0.0499999999999972 0.0499999999999972 0.0 449 -450 0.0229110717773438 0.0200000000000102 0.0200000000000102 0.0 450 -451 0.0228190422058105 0.019999999999996 0.019999999999996 0.0 451 -452 0.022475004196167 0.0300000000000011 0.0300000000000011 0.0 452 -453 0.0269429683685303 0.019999999999996 0.019999999999996 0.0 453 -454 0.0225560665130615 0.0300000000000011 0.0300000000000011 0.0 454 -455 0.0226960182189941 0.019999999999996 0.019999999999996 0.0 455 -456 0.0481019020080566 0.0500000000000114 0.0500000000000114 0.0 456 -457 0.0228400230407715 0.019999999999996 0.019999999999996 0.0 457 -458 0.0225000381469727 0.019999999999996 0.019999999999996 0.0 458 -459 0.0225820541381836 0.0300000000000011 0.0300000000000011 0.0 459 -460 0.022550106048584 0.019999999999996 0.019999999999996 0.0 460 -461 0.0224931240081787 0.0200000000000102 0.0200000000000102 0.0 461 -462 0.0505130290985107 0.0499999999999972 0.0499999999999972 0.0 462 -463 0.0229830741882324 0.019999999999996 0.019999999999996 0.0 463 -464 0.0227599143981934 0.0300000000000011 0.0300000000000011 0.0 464 -465 0.0224440097808838 0.019999999999996 0.019999999999996 0.0 465 -466 0.0224459171295166 0.0200000000000102 0.0200000000000102 0.0 466 -467 0.0230529308319092 0.0299999999999869 0.0299999999999869 0.0 467 -468 0.0472948551177979 0.0400000000000063 0.0400000000000063 0.0 468 -469 0.0229778289794922 0.0300000000000011 0.0300000000000011 0.0 469 -470 0.0227181911468506 0.019999999999996 0.019999999999996 0.0 470 -471 0.0253911018371582 0.0200000000000102 0.0200000000000102 0.0 471 -472 0.0295701026916504 0.0299999999999869 0.0299999999999869 0.0 472 -473 0.0240099430084229 0.0300000000000011 0.0300000000000011 0.0 473 -474 0.0225830078125 0.0200000000000102 0.0200000000000102 0.0 474 -475 0.0483601093292236 0.0499999999999972 0.0499999999999972 0.0 475 -476 0.0228290557861328 0.019999999999996 0.019999999999996 0.0 476 -477 0.0227599143981934 0.019999999999996 0.019999999999996 0.0 477 -478 0.0223991870880127 0.0300000000000011 0.0300000000000011 0.0 478 -479 0.0224149227142334 0.0200000000000102 0.0200000000000102 0.0 479 -480 0.0231549739837646 0.019999999999996 0.019999999999996 0.0 480 -481 0.0494570732116699 0.0499999999999972 0.0499999999999972 0.0 481 -482 0.0229361057281494 0.0300000000000011 0.0300000000000011 0.0 482 -483 0.0228068828582764 0.019999999999996 0.019999999999996 0.0 483 -484 0.0226590633392334 0.0200000000000102 0.0200000000000102 0.0 484 -485 0.0231790542602539 0.019999999999996 0.019999999999996 0.0 485 -486 0.0226171016693115 0.0300000000000011 0.0300000000000011 0.0 486 -487 0.0226919651031494 0.019999999999996 0.019999999999996 0.0 487 -488 0.0492510795593262 0.0499999999999972 0.0499999999999972 0.0 488 -489 0.0257031917572021 0.0200000000000102 0.0200000000000102 0.0 489 -490 0.0239601135253906 0.0299999999999869 0.0299999999999869 0.0 490 -491 0.0223851203918457 0.0200000000000102 0.0200000000000102 0.0 491 -492 0.0224499702453613 0.019999999999996 0.019999999999996 0.0 492 -493 0.0224368572235107 0.019999999999996 0.019999999999996 0.0 493 -494 0.0476479530334473 0.0499999999999972 0.0499999999999972 0.0 494 -495 0.022913932800293 0.0300000000000011 0.0300000000000011 0.0 495 -496 0.022791862487793 0.0200000000000102 0.0200000000000102 0.0 496 -497 0.0225038528442383 0.019999999999996 0.019999999999996 0.0 497 -498 0.0226709842681885 0.019999999999996 0.019999999999996 0.0 498 -499 0.0256888866424561 0.0300000000000011 0.0300000000000011 0.0 499 -500 0.0224859714508057 0.019999999999996 0.019999999999996 0.0 500 -501 0.0475161075592041 0.0500000000000114 0.0500000000000114 0.0 501 -502 0.0226891040802002 0.019999999999996 0.019999999999996 0.0 502 -503 0.0227141380310059 0.019999999999996 0.019999999999996 0.0 503 -504 0.0224587917327881 0.0300000000000011 0.0300000000000011 0.0 504 -505 0.0225260257720947 0.019999999999996 0.019999999999996 0.0 505 -506 0.0225589275360107 0.0200000000000102 0.0200000000000102 0.0 506 -507 0.0470049381256104 0.0499999999999972 0.0499999999999972 0.0 507 -508 0.0271100997924805 0.0300000000000011 0.0300000000000011 0.0 508 -509 0.0292420387268066 0.0300000000000011 0.0300000000000011 0.0 509 -510 0.0224711894989014 0.019999999999996 0.019999999999996 0.0 510 -511 0.0221920013427734 0.019999999999996 0.019999999999996 0.0 511 -512 0.0228841304779053 0.0200000000000102 0.0200000000000102 0.0 512 -513 0.0471491813659668 0.0499999999999972 0.0499999999999972 0.0 513 -514 0.0229198932647705 0.019999999999996 0.019999999999996 0.0 514 -515 0.0227129459381104 0.0300000000000011 0.0300000000000011 0.0 515 -516 0.0225949287414551 0.019999999999996 0.019999999999996 0.0 516 -517 0.0255181789398193 0.0200000000000102 0.0200000000000102 0.0 517 -518 0.0228209495544434 0.0299999999999869 0.0299999999999869 0.0 518 -519 0.0225160121917725 0.0200000000000102 0.0200000000000102 0.0 519 -520 0.0473577976226807 0.0499999999999972 0.0499999999999972 0.0 520 -521 0.0227980613708496 0.019999999999996 0.019999999999996 0.0 521 -522 0.0231969356536865 0.019999999999996 0.019999999999996 0.0 522 -523 0.0227179527282715 0.0300000000000011 0.0300000000000011 0.0 523 -524 0.0223970413208008 0.0200000000000102 0.0200000000000102 0.0 524 -525 0.0223920345306396 0.019999999999996 0.019999999999996 0.0 525 -526 0.0507230758666992 0.0499999999999972 0.0499999999999972 0.0 526 -527 0.0229480266571045 0.019999999999996 0.019999999999996 0.0 527 -528 0.0227980613708496 0.0300000000000011 0.0300000000000011 0.0 528 -529 0.0225141048431396 0.0200000000000102 0.0200000000000102 0.0 529 -530 0.0231029987335205 0.019999999999996 0.019999999999996 0.0 530 -531 0.0224690437316895 0.0300000000000011 0.0300000000000011 0.0 531 -532 0.0224161148071289 0.019999999999996 0.019999999999996 0.0 532 -533 0.0474939346313477 0.0499999999999972 0.0499999999999972 0.0 533 -534 0.0227530002593994 0.0200000000000102 0.0200000000000102 0.0 534 -535 0.02276611328125 0.019999999999996 0.019999999999996 0.0 535 -536 0.025050163269043 0.0300000000000011 0.0300000000000011 0.0 536 -537 0.0224800109863281 0.019999999999996 0.019999999999996 0.0 537 -538 0.0225398540496826 0.019999999999996 0.019999999999996 0.0 538 -539 0.047184944152832 0.0500000000000114 0.0500000000000114 0.0 539 -540 0.0230119228363037 0.019999999999996 0.019999999999996 0.0 540 -541 0.022691011428833 0.019999999999996 0.019999999999996 0.0 541 -542 0.0224730968475342 0.0300000000000011 0.0300000000000011 0.0 542 -543 0.0223429203033447 0.019999999999996 0.019999999999996 0.0 543 -544 0.0224099159240723 0.0200000000000102 0.0200000000000102 0.0 544 -545 0.0533881187438965 0.0499999999999972 0.0499999999999972 0.0 545 -546 0.0262870788574219 0.0300000000000011 0.0300000000000011 0.0 546 -547 0.0228250026702881 0.019999999999996 0.019999999999996 0.0 547 -548 0.0226221084594727 0.0300000000000011 0.0300000000000011 0.0 548 -549 0.0232529640197754 0.019999999999996 0.019999999999996 0.0 549 -550 0.0225918292999268 0.019999999999996 0.019999999999996 0.0 550 -551 0.0225841999053955 0.0300000000000011 0.0300000000000011 0.0 551 -552 0.047435998916626 0.0400000000000063 0.0400000000000063 0.0 552 -553 0.0227999687194824 0.0300000000000011 0.0300000000000011 0.0 553 -554 0.0258529186248779 0.019999999999996 0.019999999999996 0.0 554 -555 0.022432804107666 0.019999999999996 0.019999999999996 0.0 555 -556 0.0223519802093506 0.0300000000000011 0.0300000000000011 0.0 556 -557 0.0224819183349609 0.0200000000000102 0.0200000000000102 0.0 557 -558 0.0474679470062256 0.0499999999999972 0.0499999999999972 0.0 558 -559 0.0229389667510986 0.019999999999996 0.019999999999996 0.0 559 -560 0.0228800773620605 0.019999999999996 0.019999999999996 0.0 560 -561 0.0224850177764893 0.0200000000000102 0.0200000000000102 0.0 561 -562 0.0225398540496826 0.0300000000000011 0.0300000000000011 0.0 562 -563 0.0224540233612061 0.019999999999996 0.019999999999996 0.0 563 -564 0.025576114654541 0.0300000000000011 0.0300000000000011 0.0 564 -565 0.0475959777832031 0.039999999999992 0.039999999999992 0.0 565 -566 0.0227079391479492 0.0300000000000011 0.0300000000000011 0.0 566 -567 0.0230989456176758 0.0200000000000102 0.0200000000000102 0.0 567 -568 0.0224859714508057 0.019999999999996 0.019999999999996 0.0 568 -569 0.0224618911743164 0.019999999999996 0.019999999999996 0.0 569 -570 0.0225780010223389 0.0300000000000011 0.0300000000000011 0.0 570 -571 0.0471539497375488 0.0400000000000063 0.0400000000000063 0.0 571 -572 0.0252819061279297 0.0300000000000011 0.0300000000000011 0.0 572 -573 0.0236349105834961 0.019999999999996 0.019999999999996 0.0 573 -574 0.0224208831787109 0.0300000000000011 0.0300000000000011 0.0 574 -575 0.0223720073699951 0.019999999999996 0.019999999999996 0.0 575 -576 0.0222949981689453 0.019999999999996 0.019999999999996 0.0 576 -577 0.0470468997955322 0.0499999999999972 0.0499999999999972 0.0 577 -578 0.0229780673980713 0.0200000000000102 0.0200000000000102 0.0 578 -579 0.0227508544921875 0.019999999999996 0.019999999999996 0.0 579 -580 0.022536039352417 0.0300000000000011 0.0300000000000011 0.0 580 -581 0.0225150585174561 0.019999999999996 0.019999999999996 0.0 581 -582 0.0254819393157959 0.0200000000000102 0.0200000000000102 0.0 582 -583 0.0310370922088623 0.0299999999999869 0.0299999999999869 0.0 583 -584 0.0474588871002197 0.0500000000000114 0.0500000000000114 0.0 584 -585 0.022752046585083 0.019999999999996 0.019999999999996 0.0 585 -586 0.0233280658721924 0.0300000000000011 0.0300000000000011 0.0 586 -587 0.0223760604858398 0.019999999999996 0.019999999999996 0.0 587 -588 0.0223050117492676 0.019999999999996 0.019999999999996 0.0 588 -589 0.0223169326782227 0.0200000000000102 0.0200000000000102 0.0 589 -590 0.047105073928833 0.0499999999999972 0.0499999999999972 0.0 590 -591 0.0272059440612793 0.0300000000000011 0.0300000000000011 0.0 591 -592 0.0227630138397217 0.019999999999996 0.019999999999996 0.0 592 -593 0.0226268768310547 0.019999999999996 0.019999999999996 0.0 593 -594 0.0225090980529785 0.0300000000000011 0.0300000000000011 0.0 594 -595 0.0225892066955566 0.0200000000000102 0.0200000000000102 0.0 595 -596 0.0231549739837646 0.019999999999996 0.019999999999996 0.0 596 -597 0.0475459098815918 0.0499999999999972 0.0499999999999972 0.0 597 -598 0.0226891040802002 0.019999999999996 0.019999999999996 0.0 598 -599 0.0224978923797607 0.0300000000000011 0.0300000000000011 0.0 599 -600 0.0245161056518555 0.0200000000000102 0.0200000000000102 0.0 600 -601 0.0242869853973389 0.019999999999996 0.019999999999996 0.0 601 -602 0.0225369930267334 0.0300000000000011 0.0300000000000011 0.0 602 -603 0.0477139949798584 0.039999999999992 0.039999999999992 0.0 603 -604 0.0228500366210938 0.0300000000000011 0.0300000000000011 0.0 604 -605 0.0225930213928223 0.019999999999996 0.019999999999996 0.0 605 -606 0.0224370956420898 0.0200000000000102 0.0200000000000102 0.0 606 -607 0.0223829746246338 0.019999999999996 0.019999999999996 0.0 607 -608 0.0222539901733398 0.0300000000000011 0.0300000000000011 0.0 608 -609 0.0497751235961914 0.0499999999999972 0.0499999999999972 0.0 609 -610 0.0235979557037354 0.019999999999996 0.019999999999996 0.0 610 -611 0.0227591991424561 0.0200000000000102 0.0200000000000102 0.0 611 -612 0.0226850509643555 0.0300000000000011 0.0300000000000011 0.0 612 -613 0.0225200653076172 0.019999999999996 0.019999999999996 0.0 613 -614 0.0227999687194824 0.019999999999996 0.019999999999996 0.0 614 -615 0.0224919319152832 0.019999999999996 0.019999999999996 0.0 615 -616 0.0472068786621094 0.0500000000000114 0.0500000000000114 0.0 616 -617 0.0227549076080322 0.019999999999996 0.019999999999996 0.0 617 -618 0.0224969387054443 0.0300000000000011 0.0300000000000011 0.0 618 -619 0.0257840156555176 0.019999999999996 0.019999999999996 0.0 619 -620 0.0295670032501221 0.0300000000000011 0.0300000000000011 0.0 620 -621 0.0229511260986328 0.019999999999996 0.019999999999996 0.0 621 -622 0.0471799373626709 0.0500000000000114 0.0500000000000114 0.0 622 -623 0.0238358974456787 0.0299999999999869 0.0299999999999869 0.0 623 -624 0.0228331089019775 0.0200000000000102 0.0200000000000102 0.0 624 -625 0.0225739479064941 0.019999999999996 0.019999999999996 0.0 625 -626 0.0223119258880615 0.019999999999996 0.019999999999996 0.0 626 -627 0.0223081111907959 0.0300000000000011 0.0300000000000011 0.0 627 -628 0.0510420799255371 0.0499999999999972 0.0499999999999972 0.0 628 -629 0.0229439735412598 0.0200000000000102 0.0200000000000102 0.0 629 -630 0.0228598117828369 0.019999999999996 0.019999999999996 0.0 630 -631 0.0226309299468994 0.0300000000000011 0.0300000000000011 0.0 631 -632 0.0225811004638672 0.019999999999996 0.019999999999996 0.0 632 -633 0.0231959819793701 0.019999999999996 0.019999999999996 0.0 633 -634 0.022752046585083 0.0200000000000102 0.0200000000000102 0.0 634 -635 0.0472497940063477 0.0499999999999972 0.0499999999999972 0.0 635 -636 0.0227398872375488 0.019999999999996 0.019999999999996 0.0 636 -637 0.0257761478424072 0.0300000000000011 0.0300000000000011 0.0 637 -638 0.0224080085754395 0.019999999999996 0.019999999999996 0.0 638 -639 0.0224230289459229 0.0300000000000011 0.0300000000000011 0.0 639 -640 0.0224108695983887 0.0200000000000102 0.0200000000000102 0.0 640 -641 0.0475258827209473 0.0499999999999972 0.0499999999999972 0.0 641 -642 0.0228271484375 0.019999999999996 0.019999999999996 0.0 642 -643 0.0227019786834717 0.019999999999996 0.019999999999996 0.0 643 -644 0.0224940776824951 0.0200000000000102 0.0200000000000102 0.0 644 -645 0.0224850177764893 0.0300000000000011 0.0300000000000011 0.0 645 -646 0.0227019786834717 0.019999999999996 0.019999999999996 0.0 646 -647 0.0250790119171143 0.019999999999996 0.019999999999996 0.0 647 -648 0.0480010509490967 0.0499999999999972 0.0499999999999972 0.0 648 -649 0.0226480960845947 0.0200000000000102 0.0200000000000102 0.0 649 -650 0.0224239826202393 0.0300000000000011 0.0300000000000011 0.0 650 -651 0.0233159065246582 0.019999999999996 0.019999999999996 0.0 651 -652 0.022554874420166 0.019999999999996 0.019999999999996 0.0 652 -653 0.0225050449371338 0.019999999999996 0.019999999999996 0.0 653 -654 0.04734206199646 0.0500000000000114 0.0500000000000114 0.0 654 -655 0.0227370262145996 0.019999999999996 0.019999999999996 0.0 655 -656 0.0317370891571045 0.0299999999999869 0.0299999999999869 0.0 656 -657 0.0237619876861572 0.0200000000000102 0.0200000000000102 0.0 657 -658 0.0224289894104004 0.019999999999996 0.019999999999996 0.0 658 -659 0.0223090648651123 0.0300000000000011 0.0300000000000011 0.0 659 -660 0.0475950241088867 0.039999999999992 0.039999999999992 0.0 660 -661 0.0230028629302979 0.0300000000000011 0.0300000000000011 0.0 661 -662 0.0226609706878662 0.0200000000000102 0.0200000000000102 0.0 662 -663 0.0227439403533936 0.019999999999996 0.019999999999996 0.0 663 -664 0.0224378108978271 0.019999999999996 0.019999999999996 0.0 664 -665 0.0267817974090576 0.0300000000000011 0.0300000000000011 0.0 665 -666 0.0225181579589844 0.019999999999996 0.019999999999996 0.0 666 -667 0.0476372241973877 0.0500000000000114 0.0500000000000114 0.0 667 -668 0.0227279663085938 0.019999999999996 0.019999999999996 0.0 668 -669 0.0238058567047119 0.0300000000000011 0.0300000000000011 0.0 669 -670 0.0225961208343506 0.019999999999996 0.019999999999996 0.0 670 -671 0.0226478576660156 0.019999999999996 0.019999999999996 0.0 671 -672 0.0224800109863281 0.0300000000000011 0.0300000000000011 0.0 672 -673 0.0478980541229248 0.0400000000000063 0.0400000000000063 0.0 673 -674 0.0272519588470459 0.0300000000000011 0.0300000000000011 0.0 674 -675 0.0226519107818604 0.019999999999996 0.019999999999996 0.0 675 -676 0.0225238800048828 0.0300000000000011 0.0300000000000011 0.0 676 -677 0.0224411487579346 0.019999999999996 0.019999999999996 0.0 677 -678 0.0228710174560547 0.0200000000000102 0.0200000000000102 0.0 678 -679 0.0471720695495605 0.0499999999999972 0.0499999999999972 0.0 679 -680 0.0229899883270264 0.019999999999996 0.019999999999996 0.0 680 -681 0.0226860046386719 0.019999999999996 0.019999999999996 0.0 681 -682 0.0227768421173096 0.0300000000000011 0.0300000000000011 0.0 682 -683 0.0246498584747314 0.0200000000000102 0.0200000000000102 0.0 683 -684 0.024179220199585 0.0299999999999869 0.0299999999999869 0.0 684 -685 0.0224809646606445 0.0200000000000102 0.0200000000000102 0.0 685 -686 0.0472848415374756 0.0499999999999972 0.0499999999999972 0.0 686 -687 0.0227711200714111 0.019999999999996 0.019999999999996 0.0 687 -688 0.0226719379425049 0.019999999999996 0.019999999999996 0.0 688 -689 0.0224339962005615 0.0200000000000102 0.0200000000000102 0.0 689 -690 0.022291898727417 0.0300000000000011 0.0300000000000011 0.0 690 -691 0.02239990234375 0.019999999999996 0.019999999999996 0.0 691 -692 0.0513718128204346 0.0499999999999972 0.0499999999999972 0.0 692 -693 0.0307130813598633 0.0300000000000011 0.0300000000000011 0.0 693 -694 0.0228471755981445 0.019999999999996 0.019999999999996 0.0 694 -695 0.0224709510803223 0.0300000000000011 0.0300000000000011 0.0 695 -696 0.0225100517272949 0.0200000000000102 0.0200000000000102 0.0 696 -697 0.0233030319213867 0.019999999999996 0.019999999999996 0.0 697 -698 0.0470919609069824 0.0499999999999972 0.0499999999999972 0.0 698 -699 0.0229198932647705 0.019999999999996 0.019999999999996 0.0 699 -700 0.0227630138397217 0.0200000000000102 0.0200000000000102 0.0 700 -701 0.0225980281829834 0.0200000000000102 0.0200000000000102 0.0 701 -702 0.0258259773254395 0.019999999999996 0.019999999999996 0.0 702 -703 0.0223879814147949 0.0300000000000011 0.0300000000000011 0.0 703 -704 0.0224990844726562 0.019999999999996 0.019999999999996 0.0 704 -705 0.0473251342773438 0.0499999999999972 0.0499999999999972 0.0 705 -706 0.0234189033508301 0.019999999999996 0.019999999999996 0.0 706 -707 0.0227119922637939 0.0200000000000102 0.0200000000000102 0.0 707 -708 0.0224349498748779 0.019999999999996 0.019999999999996 0.0 708 -709 0.0224518775939941 0.0300000000000011 0.0300000000000011 0.0 709 -710 0.0225179195404053 0.019999999999996 0.019999999999996 0.0 710 -711 0.0502331256866455 0.0499999999999972 0.0499999999999972 0.0 711 -712 0.0228428840637207 0.0200000000000102 0.0200000000000102 0.0 712 -713 0.0227060317993164 0.0300000000000011 0.0300000000000011 0.0 713 -714 0.023097038269043 0.019999999999996 0.019999999999996 0.0 714 -715 0.0223181247711182 0.019999999999996 0.019999999999996 0.0 715 -716 0.0222809314727783 0.019999999999996 0.019999999999996 0.0 716 -717 0.0471060276031494 0.0500000000000114 0.0500000000000114 0.0 717 -718 0.0228781700134277 0.019999999999996 0.019999999999996 0.0 718 -719 0.0229380130767822 0.0300000000000011 0.0300000000000011 0.0 719 -720 0.0258369445800781 0.019999999999996 0.019999999999996 0.0 720 -721 0.0224931240081787 0.0300000000000011 0.0300000000000011 0.0 721 -722 0.0230259895324707 0.019999999999996 0.019999999999996 0.0 722 -723 0.02252197265625 0.0200000000000102 0.0200000000000102 0.0 723 -724 0.0475549697875977 0.0499999999999972 0.0499999999999972 0.0 724 -725 0.0227770805358887 0.019999999999996 0.019999999999996 0.0 725 -726 0.0225141048431396 0.019999999999996 0.019999999999996 0.0 726 -727 0.0227451324462891 0.0300000000000011 0.0300000000000011 0.0 727 -728 0.0223758220672607 0.0200000000000102 0.0200000000000102 0.0 728 -729 0.023906946182251 0.019999999999996 0.019999999999996 0.0 729 -730 0.0556581020355225 0.0600000000000023 0.0600000000000023 0.0 730 -731 0.0229699611663818 0.019999999999996 0.019999999999996 0.0 731 -732 0.0226690769195557 0.019999999999996 0.019999999999996 0.0 732 -733 0.0225589275360107 0.0300000000000011 0.0300000000000011 0.0 733 -734 0.0232241153717041 0.019999999999996 0.019999999999996 0.0 734 -735 0.0225598812103271 0.0200000000000102 0.0200000000000102 0.0 735 -736 0.0470528602600098 0.0499999999999972 0.0499999999999972 0.0 736 -737 0.0228769779205322 0.019999999999996 0.019999999999996 0.0 737 -738 0.0257880687713623 0.0300000000000011 0.0300000000000011 0.0 738 -739 0.0235300064086914 0.019999999999996 0.019999999999996 0.0 739 -740 0.0224180221557617 0.0200000000000102 0.0200000000000102 0.0 740 -741 0.0224599838256836 0.0300000000000011 0.0300000000000011 0.0 741 -742 0.022385835647583 0.019999999999996 0.019999999999996 0.0 742 -743 0.0479929447174072 0.0499999999999972 0.0499999999999972 0.0 743 -744 0.0231039524078369 0.019999999999996 0.019999999999996 0.0 744 -745 0.0225660800933838 0.0200000000000102 0.0200000000000102 0.0 745 -746 0.0224900245666504 0.019999999999996 0.019999999999996 0.0 746 -747 0.0224640369415283 0.0300000000000011 0.0300000000000011 0.0 747 -748 0.0256268978118896 0.019999999999996 0.019999999999996 0.0 748 -749 0.0473120212554932 0.0499999999999972 0.0499999999999972 0.0 749 -750 0.0228018760681152 0.0200000000000102 0.0200000000000102 0.0 750 -751 0.0232498645782471 0.0300000000000011 0.0300000000000011 0.0 751 -752 0.0224390029907227 0.019999999999996 0.019999999999996 0.0 752 -753 0.022291898727417 0.019999999999996 0.019999999999996 0.0 753 -754 0.0223748683929443 0.019999999999996 0.019999999999996 0.0 754 -755 0.0472152233123779 0.0500000000000114 0.0500000000000114 0.0 755 -756 0.0228731632232666 0.019999999999996 0.019999999999996 0.0 756 -757 0.0252671241760254 0.0300000000000011 0.0300000000000011 0.0 757 -758 0.0226409435272217 0.019999999999996 0.019999999999996 0.0 758 -759 0.0225830078125 0.019999999999996 0.019999999999996 0.0 759 -760 0.0225331783294678 0.0300000000000011 0.0300000000000011 0.0 760 -761 0.0225949287414551 0.0200000000000102 0.0200000000000102 0.0 761 -762 0.0475749969482422 0.0499999999999972 0.0499999999999972 0.0 762 -763 0.0227329730987549 0.019999999999996 0.019999999999996 0.0 763 -764 0.0225529670715332 0.019999999999996 0.019999999999996 0.0 764 -765 0.0224440097808838 0.0200000000000102 0.0200000000000102 0.0 765 -766 0.0223290920257568 0.0300000000000011 0.0300000000000011 0.0 766 -767 0.033358097076416 0.0299999999999869 0.0299999999999869 0.0 767 -768 0.0471920967102051 0.0500000000000114 0.0500000000000114 0.0 768 -769 0.0227799415588379 0.019999999999996 0.019999999999996 0.0 769 -770 0.0234429836273193 0.019999999999996 0.019999999999996 0.0 770 -771 0.0224521160125732 0.0300000000000011 0.0300000000000011 0.0 771 -772 0.0226120948791504 0.019999999999996 0.019999999999996 0.0 772 -773 0.0225300788879395 0.0200000000000102 0.0200000000000102 0.0 773 -774 0.0472240447998047 0.0499999999999972 0.0499999999999972 0.0 774 -775 0.0266668796539307 0.0300000000000011 0.0300000000000011 0.0 775 -776 0.023015022277832 0.019999999999996 0.019999999999996 0.0 776 -777 0.0226809978485107 0.019999999999996 0.019999999999996 0.0 777 -778 0.0225629806518555 0.0200000000000102 0.0200000000000102 0.0 778 -779 0.0223550796508789 0.0300000000000011 0.0300000000000011 0.0 779 -780 0.0230989456176758 0.019999999999996 0.019999999999996 0.0 780 -781 0.0475809574127197 0.0499999999999972 0.0499999999999972 0.0 781 -782 0.0226840972900391 0.019999999999996 0.019999999999996 0.0 782 -783 0.0225729942321777 0.0200000000000102 0.0200000000000102 0.0 783 -784 0.0224289894104004 0.0300000000000011 0.0300000000000011 0.0 784 -785 0.0256469249725342 0.019999999999996 0.019999999999996 0.0 785 -786 0.0225028991699219 0.019999999999996 0.019999999999996 0.0 786 -787 0.0480420589447021 0.0499999999999972 0.0499999999999972 0.0 787 -788 0.0228919982910156 0.0200000000000102 0.0200000000000102 0.0 788 -789 0.0226309299468994 0.0299999999999869 0.0299999999999869 0.0 789 -790 0.0224378108978271 0.0200000000000102 0.0200000000000102 0.0 790 -791 0.0224709510803223 0.019999999999996 0.019999999999996 0.0 791 -792 0.0223159790039062 0.019999999999996 0.019999999999996 0.0 792 -793 0.0482239723205566 0.0400000000000063 0.0400000000000063 0.0 793 -794 0.0246069431304932 0.0299999999999869 0.0299999999999869 0.0 794 -795 0.0227251052856445 0.0200000000000102 0.0200000000000102 0.0 795 -796 0.0226359367370605 0.019999999999996 0.019999999999996 0.0 796 -797 0.0224781036376953 0.0300000000000011 0.0300000000000011 0.0 797 -798 0.0225961208343506 0.019999999999996 0.019999999999996 0.0 798 -799 0.0226588249206543 0.019999999999996 0.019999999999996 0.0 799 -800 0.0475590229034424 0.0500000000000114 0.0500000000000114 0.0 800 -801 0.0227870941162109 0.019999999999996 0.019999999999996 0.0 801 -802 0.0225069522857666 0.019999999999996 0.019999999999996 0.0 802 -803 0.0258538722991943 0.0300000000000011 0.0300000000000011 0.0 803 -804 0.0293428897857666 0.0300000000000011 0.0300000000000011 0.0 804 -805 0.022611141204834 0.019999999999996 0.019999999999996 0.0 805 -806 0.0470418930053711 0.0500000000000114 0.0500000000000114 0.0 806 -807 0.0237758159637451 0.019999999999996 0.019999999999996 0.0 807 -808 0.0227320194244385 0.0300000000000011 0.0300000000000011 0.0 808 -809 0.0224711894989014 0.019999999999996 0.019999999999996 0.0 809 -810 0.0225059986114502 0.019999999999996 0.019999999999996 0.0 810 -811 0.0224649906158447 0.0200000000000102 0.0200000000000102 0.0 811 -812 0.0506050586700439 0.0499999999999972 0.0499999999999972 0.0 812 -813 0.0230269432067871 0.0300000000000011 0.0300000000000011 0.0 813 -814 0.0228140354156494 0.019999999999996 0.019999999999996 0.0 814 -815 0.0225369930267334 0.019999999999996 0.019999999999996 0.0 815 -816 0.0224819183349609 0.0300000000000011 0.0300000000000011 0.0 816 -817 0.0230681896209717 0.019999999999996 0.019999999999996 0.0 817 -818 0.0226531028747559 0.0200000000000102 0.0200000000000102 0.0 818 -819 0.0471920967102051 0.0499999999999972 0.0499999999999972 0.0 819 -820 0.022752046585083 0.019999999999996 0.019999999999996 0.0 820 -821 0.0240130424499512 0.0300000000000011 0.0300000000000011 0.0 821 -822 0.024043083190918 0.019999999999996 0.019999999999996 0.0 822 -823 0.022367000579834 0.0200000000000102 0.0200000000000102 0.0 823 -824 0.0223929882049561 0.019999999999996 0.019999999999996 0.0 824 -825 0.0477418899536133 0.0499999999999972 0.0499999999999972 0.0 825 -826 0.0227749347686768 0.0300000000000011 0.0300000000000011 0.0 826 -827 0.0227129459381104 0.019999999999996 0.019999999999996 0.0 827 -828 0.0225088596343994 0.0200000000000102 0.0200000000000102 0.0 828 -829 0.0223178863525391 0.019999999999996 0.019999999999996 0.0 829 -830 0.02256178855896 0.0300000000000011 0.0300000000000011 0.0 830 -831 0.0491888523101807 0.039999999999992 0.039999999999992 0.0 831 -832 0.0238690376281738 0.0300000000000011 0.0300000000000011 0.0 832 -833 0.0228731632232666 0.0200000000000102 0.0200000000000102 0.0 833 -834 0.0226390361785889 0.019999999999996 0.019999999999996 0.0 834 -835 0.0226919651031494 0.0300000000000011 0.0300000000000011 0.0 835 -836 0.0225028991699219 0.019999999999996 0.019999999999996 0.0 836 -837 0.0224220752716064 0.019999999999996 0.019999999999996 0.0 837 -838 0.0475718975067139 0.0500000000000114 0.0500000000000114 0.0 838 -839 0.0228641033172607 0.019999999999996 0.019999999999996 0.0 839 -840 0.0308690071105957 0.0300000000000011 0.0300000000000011 0.0 840 -841 0.0251350402832031 0.0300000000000011 0.0300000000000011 0.0 841 -842 0.022784948348999 0.019999999999996 0.019999999999996 0.0 842 -843 0.022475004196167 0.019999999999996 0.019999999999996 0.0 843 -844 0.0481071472167969 0.0499999999999972 0.0499999999999972 0.0 844 -845 0.022777795791626 0.0200000000000102 0.0200000000000102 0.0 845 -846 0.0225391387939453 0.0300000000000011 0.0300000000000011 0.0 846 -847 0.0223829746246338 0.019999999999996 0.019999999999996 0.0 847 -848 0.0222880840301514 0.019999999999996 0.019999999999996 0.0 848 -849 0.0231649875640869 0.0200000000000102 0.0200000000000102 0.0 849 -850 0.0498239994049072 0.0499999999999972 0.0499999999999972 0.0 850 -851 0.0229728221893311 0.0300000000000011 0.0300000000000011 0.0 851 -852 0.0226678848266602 0.019999999999996 0.019999999999996 0.0 852 -853 0.0235629081726074 0.019999999999996 0.019999999999996 0.0 853 -854 0.0226778984069824 0.0300000000000011 0.0300000000000011 0.0 854 -855 0.0225760936737061 0.019999999999996 0.019999999999996 0.0 855 -856 0.0472428798675537 0.0500000000000114 0.0500000000000114 0.0 856 -857 0.0228590965270996 0.019999999999996 0.019999999999996 0.0 857 -858 0.0256388187408447 0.0300000000000011 0.0300000000000011 0.0 858 -859 0.0229208469390869 0.019999999999996 0.019999999999996 0.0 859 -860 0.0224840641021729 0.019999999999996 0.019999999999996 0.0 860 -861 0.0223701000213623 0.0200000000000102 0.0200000000000102 0.0 861 -862 0.0229117870330811 0.0300000000000011 0.0300000000000011 0.0 862 -863 0.0475149154663086 0.039999999999992 0.039999999999992 0.0 863 -864 0.022799015045166 0.0300000000000011 0.0300000000000011 0.0 864 -865 0.0225379467010498 0.019999999999996 0.019999999999996 0.0 865 -866 0.0226678848266602 0.0200000000000102 0.0200000000000102 0.0 866 -867 0.0223591327667236 0.019999999999996 0.019999999999996 0.0 867 -868 0.0251359939575195 0.0300000000000011 0.0300000000000011 0.0 868 -869 0.0475220680236816 0.0499999999999972 0.0499999999999972 0.0 869 -870 0.0227980613708496 0.019999999999996 0.019999999999996 0.0 870 -871 0.0227110385894775 0.0200000000000102 0.0200000000000102 0.0 871 -872 0.0231759548187256 0.0299999999999869 0.0299999999999869 0.0 872 -873 0.0223469734191895 0.0200000000000102 0.0200000000000102 0.0 873 -874 0.0222749710083008 0.019999999999996 0.019999999999996 0.0 874 -875 0.046968936920166 0.0499999999999972 0.0499999999999972 0.0 875 -876 0.0229840278625488 0.0200000000000102 0.0200000000000102 0.0 876 -877 0.0336899757385254 0.0299999999999869 0.0299999999999869 0.0 877 -878 0.0226821899414062 0.0300000000000011 0.0300000000000011 0.0 878 -879 0.0225288867950439 0.0200000000000102 0.0200000000000102 0.0 879 -880 0.0224189758300781 0.019999999999996 0.019999999999996 0.0 880 -881 0.023205041885376 0.0300000000000011 0.0300000000000011 0.0 881 -882 0.0473780632019043 0.039999999999992 0.039999999999992 0.0 882 -883 0.0226800441741943 0.0300000000000011 0.0300000000000011 0.0 883 -884 0.0224399566650391 0.0200000000000102 0.0200000000000102 0.0 884 -885 0.0223681926727295 0.019999999999996 0.019999999999996 0.0 885 -886 0.0252659320831299 0.0300000000000011 0.0300000000000011 0.0 886 -887 0.0249259471893311 0.019999999999996 0.019999999999996 0.0 887 -888 0.047400951385498 0.0499999999999972 0.0499999999999972 0.0 888 -889 0.0227570533752441 0.0200000000000102 0.0200000000000102 0.0 889 -890 0.0234551429748535 0.019999999999996 0.019999999999996 0.0 890 -891 0.0227649211883545 0.0300000000000011 0.0300000000000011 0.0 891 -892 0.0223729610443115 0.019999999999996 0.019999999999996 0.0 892 -893 0.0223479270935059 0.019999999999996 0.019999999999996 0.0 893 -894 0.047307014465332 0.0500000000000114 0.0500000000000114 0.0 894 -895 0.0258030891418457 0.019999999999996 0.019999999999996 0.0 895 -896 0.0229730606079102 0.0300000000000011 0.0300000000000011 0.0 896 -897 0.0226550102233887 0.019999999999996 0.019999999999996 0.0 897 -898 0.0230071544647217 0.019999999999996 0.019999999999996 0.0 898 -899 0.0224480628967285 0.0300000000000011 0.0300000000000011 0.0 899 -900 0.047260046005249 0.0400000000000063 0.0400000000000063 0.0 900 -901 0.0229511260986328 0.0300000000000011 0.0300000000000011 0.0 901 -902 0.0227549076080322 0.019999999999996 0.019999999999996 0.0 902 -903 0.0227870941162109 0.019999999999996 0.019999999999996 0.0 903 -904 0.023169994354248 0.0200000000000102 0.0200000000000102 0.0 904 -905 0.0247299671173096 0.0299999999999869 0.0299999999999869 0.0 905 -906 0.0232272148132324 0.0200000000000102 0.0200000000000102 0.0 906 -907 0.0473639965057373 0.0499999999999972 0.0499999999999972 0.0 907 -908 0.0231180191040039 0.019999999999996 0.019999999999996 0.0 908 -909 0.0226378440856934 0.0300000000000011 0.0300000000000011 0.0 909 -910 0.0224730968475342 0.019999999999996 0.019999999999996 0.0 910 -911 0.0223720073699951 0.0200000000000102 0.0200000000000102 0.0 911 -912 0.0224881172180176 0.019999999999996 0.019999999999996 0.0 912 -913 0.0518181324005127 0.0600000000000023 0.0600000000000023 0.0 913 -914 0.0285370349884033 0.019999999999996 0.019999999999996 0.0 914 -915 0.0229339599609375 0.0300000000000011 0.0300000000000011 0.0 915 -916 0.0224258899688721 0.019999999999996 0.019999999999996 0.0 916 -917 0.0223419666290283 0.0200000000000102 0.0200000000000102 0.0 917 -918 0.0231149196624756 0.019999999999996 0.019999999999996 0.0 918 -919 0.0469498634338379 0.0499999999999972 0.0499999999999972 0.0 919 -920 0.0229380130767822 0.019999999999996 0.019999999999996 0.0 920 -921 0.022784948348999 0.0300000000000011 0.0300000000000011 0.0 921 -922 0.0224778652191162 0.0200000000000102 0.0200000000000102 0.0 922 -923 0.025670051574707 0.0299999999999869 0.0299999999999869 0.0 923 -924 0.0241270065307617 0.0200000000000102 0.0200000000000102 0.0 924 -925 0.0224959850311279 0.019999999999996 0.019999999999996 0.0 925 -926 0.0475151538848877 0.0499999999999972 0.0499999999999972 0.0 926 -927 0.0233569145202637 0.019999999999996 0.019999999999996 0.0 927 -928 0.022697925567627 0.0300000000000011 0.0300000000000011 0.0 928 -929 0.0224049091339111 0.0200000000000102 0.0200000000000102 0.0 929 -930 0.0223929882049561 0.019999999999996 0.019999999999996 0.0 930 -931 0.0224430561065674 0.019999999999996 0.019999999999996 0.0 931 -932 0.0508589744567871 0.0499999999999972 0.0499999999999972 0.0 932 -933 0.0229549407958984 0.0300000000000011 0.0300000000000011 0.0 933 -934 0.0227360725402832 0.0200000000000102 0.0200000000000102 0.0 934 -935 0.0230159759521484 0.019999999999996 0.019999999999996 0.0 935 -936 0.0223309993743896 0.019999999999996 0.019999999999996 0.0 936 -937 0.0222959518432617 0.019999999999996 0.019999999999996 0.0 937 -938 0.0472970008850098 0.0400000000000063 0.0400000000000063 0.0 938 -939 0.0230600833892822 0.0300000000000011 0.0300000000000011 0.0 939 -940 0.0226349830627441 0.019999999999996 0.019999999999996 0.0 940 -941 0.025303840637207 0.0300000000000011 0.0300000000000011 0.0 941 -942 0.0234689712524414 0.019999999999996 0.019999999999996 0.0 942 -943 0.022615909576416 0.019999999999996 0.019999999999996 0.0 943 -944 0.0470030307769775 0.0500000000000114 0.0500000000000114 0.0 944 -945 0.0232269763946533 0.019999999999996 0.019999999999996 0.0 945 -946 0.0227811336517334 0.0300000000000011 0.0300000000000011 0.0 946 -947 0.0225110054016113 0.019999999999996 0.019999999999996 0.0 947 -948 0.0224099159240723 0.019999999999996 0.019999999999996 0.0 948 -949 0.0224759578704834 0.0200000000000102 0.0200000000000102 0.0 949 -950 0.0223360061645508 0.0300000000000011 0.0300000000000011 0.0 950 -951 0.0556850433349609 0.0499999999999972 0.0499999999999972 0.0 951 -952 0.0229251384735107 0.019999999999996 0.019999999999996 0.0 952 -953 0.0225358009338379 0.0300000000000011 0.0300000000000011 0.0 953 -954 0.0226168632507324 0.019999999999996 0.019999999999996 0.0 954 -955 0.023292064666748 0.019999999999996 0.019999999999996 0.0 955 -956 0.0225601196289062 0.0300000000000011 0.0300000000000011 0.0 956 -957 0.0472140312194824 0.0400000000000063 0.0400000000000063 0.0 957 -958 0.0228290557861328 0.0300000000000011 0.0300000000000011 0.0 958 -959 0.0247390270233154 0.019999999999996 0.019999999999996 0.0 959 -960 0.0244059562683105 0.019999999999996 0.019999999999996 0.0 960 -961 0.0223748683929443 0.0300000000000011 0.0300000000000011 0.0 961 -962 0.0224399566650391 0.0200000000000102 0.0200000000000102 0.0 962 -963 0.0478479862213135 0.0499999999999972 0.0499999999999972 0.0 963 -964 0.0231130123138428 0.019999999999996 0.019999999999996 0.0 964 -965 0.0229220390319824 0.019999999999996 0.019999999999996 0.0 965 -966 0.0224699974060059 0.0300000000000011 0.0300000000000011 0.0 966 -967 0.0225620269775391 0.0200000000000102 0.0200000000000102 0.0 967 -968 0.0224020481109619 0.019999999999996 0.019999999999996 0.0 968 -969 0.0508251190185547 0.0499999999999972 0.0499999999999972 0.0 969 -970 0.0230629444122314 0.0300000000000011 0.0300000000000011 0.0 970 -971 0.0234439373016357 0.019999999999996 0.019999999999996 0.0 971 -972 0.0241410732269287 0.0200000000000102 0.0200000000000102 0.0 972 -973 0.0225048065185547 0.019999999999996 0.019999999999996 0.0 973 -974 0.0223360061645508 0.0300000000000011 0.0300000000000011 0.0 974 -975 0.0224909782409668 0.019999999999996 0.019999999999996 0.0 975 -976 0.0475950241088867 0.0499999999999972 0.0499999999999972 0.0 976 -977 0.0227401256561279 0.0200000000000102 0.0200000000000102 0.0 977 -978 0.0255289077758789 0.019999999999996 0.019999999999996 0.0 978 -979 0.0238900184631348 0.0300000000000011 0.0300000000000011 0.0 979 -980 0.0224909782409668 0.019999999999996 0.019999999999996 0.0 980 -981 0.0223910808563232 0.019999999999996 0.019999999999996 0.0 981 -982 0.0473268032073975 0.0499999999999972 0.0499999999999972 0.0 982 -983 0.0227880477905273 0.0200000000000102 0.0200000000000102 0.0 983 -984 0.0226118564605713 0.0300000000000011 0.0300000000000011 0.0 984 -985 0.0223948955535889 0.019999999999996 0.019999999999996 0.0 985 -986 0.0223472118377686 0.019999999999996 0.019999999999996 0.0 986 -987 0.0237748622894287 0.0200000000000102 0.0200000000000102 0.0 987 -988 0.0564570426940918 0.0499999999999972 0.0499999999999972 0.0 988 -989 0.0229530334472656 0.0200000000000102 0.0200000000000102 0.0 989 -990 0.0226871967315674 0.0300000000000011 0.0300000000000011 0.0 990 -991 0.0234870910644531 0.019999999999996 0.019999999999996 0.0 991 -992 0.0224900245666504 0.019999999999996 0.019999999999996 0.0 992 -993 0.0224850177764893 0.0300000000000011 0.0300000000000011 0.0 993 -994 0.0470020771026611 0.0400000000000063 0.0400000000000063 0.0 994 -995 0.022852897644043 0.0300000000000011 0.0300000000000011 0.0 995 -996 0.0257470607757568 0.019999999999996 0.019999999999996 0.0 996 -997 0.0236849784851074 0.0300000000000011 0.0300000000000011 0.0 997 -998 0.0226609706878662 0.019999999999996 0.019999999999996 0.0 998 -999 0.0222959518432617 0.019999999999996 0.019999999999996 0.0 999 -1000 0.0223429203033447 0.0200000000000102 0.0200000000000102 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log deleted file mode 100644 index 1d42e63d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log +++ /dev/null @@ -1,262 +0,0 @@ -========================== 2009-04-01T16:50:52 CEST =========================== -Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux]. -Running 'GeneratorBenchmarkPure' for 1000 iterations/method (compare_time=real) -=============================================================================== - -This first run is only for warmup. -GeneratorBenchmarkPure#generator_pretty: - real total user system -sum 27.356301069 27.380000000 27.370000000 0.010000000 -min 0.022372007 0.020000000 0.020000000 0.000000000 -std- 0.018178834 0.017248947 0.017256376 -0.000306228 -mean 0.027356301 0.027380000 0.027370000 0.000010000 -std+ 0.036533768 0.037511053 0.037483624 0.000326228 -max 0.059602976 0.060000000 0.060000000 0.010000000 -std 0.009177467 0.010131053 0.010113624 0.000316228 -std% 33.547909026 37.001655096 36.951493429 3162.277660168 -harm 0.025499974 0.024719842 0.024716787 nan -geo 0.026258699 0.025883656 0.025877881 0.000000000 -q1 0.023006916 0.020000000 0.020000000 0.000000000 -med 0.023234129 0.020000000 0.020000000 0.000000000 -q3 0.024879038 0.030000000 0.030000000 0.000000000 - 1000 36.55465 0.027356301 - calls calls/sec secs/call - - 0.05774 -| - 0.05402 -|* - 0.05030 -|**** - 0.04657 -|*** - 0.04285 -| - 0.03913 -| - 0.03540 -| - 0.03168 -|* - 0.02796 -|*** - 0.02423 -|************************************************** - -Outliers detected with box plot algo (median=0.02323, iqr=0.00187, factor=3.00): -high=72 very_high=150 - -Ljung-Box statistics: q=3705.61130 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -GeneratorBenchmarkPure#generator_pretty: - real total user system -sum 27.569372892 27.540000000 27.530000000 0.010000000 -min 0.022536039 0.020000000 0.020000000 0.000000000 -std- 0.018335894 0.017329581 0.017326902 -0.000306228 -mean 0.027569373 0.027540000 0.027530000 0.000010000 -std+ 0.036802852 0.037750419 0.037733098 0.000326228 -max 0.056230068 0.060000000 0.060000000 0.010000000 -std 0.009233479 0.010210419 0.010203098 0.000316228 -std% 33.491797772 37.074868658 37.061742557 3162.277660168 -harm 0.025675439 0.024841635 0.024836493 nan -geo 0.026453993 0.026024721 0.026017235 0.000000000 -q1 0.023056030 0.020000000 0.020000000 0.000000000 -med 0.023363113 0.020000000 0.020000000 0.000000000 -q3 0.025253892 0.030000000 0.030000000 0.000000000 - 1000 36.27213 0.027569373 - calls calls/sec secs/call - - 0.05455 -|* - 0.05118 -|** - 0.04781 -|****** - 0.04444 -| - 0.04107 -| - 0.03770 -| - 0.03433 -| - 0.03096 -|* - 0.02759 -|***** - 0.02422 -|************************************************** - -Outliers detected with box plot algo (median=0.02336, iqr=0.00220, factor=3.00): -high=67 very_high=148 - -Ljung-Box statistics: q=3212.48820 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -------------------------------------------------------------------------------- - -This first run is only for warmup. -GeneratorBenchmarkPure#generator_safe: - real total user system -sum 26.869803667 26.870000000 26.870000000 0.000000000 -min 0.022134781 0.020000000 0.020000000 0.000000000 -std- 0.017763505 0.016750439 0.016750439 0.000000000 -mean 0.026869804 0.026870000 0.026870000 0.000000000 -std+ 0.035976103 0.036989561 0.036989561 0.000000000 -max 0.054952860 0.060000000 0.060000000 0.000000000 -std 0.009106299 0.010119561 0.010119561 0.000000000 -std% 33.890455748 37.661185483 37.661185483 nan -harm 0.024986876 0.024236549 0.024236549 nan -geo 0.025759291 0.025373850 0.025373850 0.000000000 -q1 0.022480011 0.020000000 0.020000000 0.000000000 -med 0.022669554 0.020000000 0.020000000 0.000000000 -q3 0.024562180 0.030000000 0.030000000 0.000000000 - 1000 37.21650 0.026869804 - calls calls/sec secs/call - - 0.05331 -|* - 0.05003 -|** - 0.04675 -|******* - 0.04347 -| - 0.04018 -| - 0.03690 -| - 0.03362 -| - 0.03034 -|* - 0.02706 -|**** - 0.02378 -|************************************************** - -Outliers detected with box plot algo (median=0.02267, iqr=0.00208, factor=3.00): -high=77 very_high=149 - -Ljung-Box statistics: q=3100.69443 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -GeneratorBenchmarkPure#generator_safe: - real total user system -sum 27.079979420 27.040000000 27.030000000 0.010000000 -min 0.022160053 0.020000000 0.020000000 0.000000000 -std- 0.017839790 0.016756803 0.016774061 -0.000306228 -mean 0.027079979 0.027040000 0.027030000 0.000010000 -std+ 0.036320169 0.037323197 0.037285939 0.000326228 -max 0.056457043 0.060000000 0.060000000 0.010000000 -std 0.009240189 0.010283197 0.010255939 0.000316228 -std% 34.121847738 38.029575352 37.942800504 3162.277660168 -harm 0.025134510 0.024331887 0.024329914 nan -geo 0.025935574 0.025501913 0.025497264 0.000000000 -q1 0.022511005 0.020000000 0.020000000 0.000000000 -med 0.022763968 0.020000000 0.020000000 0.000000000 -q3 0.024686873 0.030000000 0.030000000 0.000000000 - 1000 36.92765 0.027079979 - calls calls/sec secs/call - - 0.05474 -| - 0.05131 -|* - 0.04788 -|******** - 0.04445 -| - 0.04102 -| - 0.03759 -| - 0.03416 -| - 0.03073 -|* - 0.02730 -|*** - 0.02387 -|************************************************** - -Outliers detected with box plot algo (median=0.02276, iqr=0.00218, factor=3.00): -high=53 very_high=158 - -Ljung-Box statistics: q=3263.81737 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -------------------------------------------------------------------------------- - -This first run is only for warmup. -GeneratorBenchmarkPure#generator_fast: - real total user system -sum 19.930217266 19.900000000 19.900000000 0.000000000 -min 0.015556812 0.010000000 0.010000000 0.000000000 -std- 0.010984683 0.009865525 0.009865525 0.000000000 -mean 0.019930217 0.019900000 0.019900000 0.000000000 -std+ 0.028875752 0.029934475 0.029934475 0.000000000 -max 0.048508883 0.050000000 0.050000000 0.000000000 -std 0.008945535 0.010034475 0.010034475 0.000000000 -std% 44.884280314 50.424498030 50.424498030 nan -harm 0.017806422 0.016056519 0.016056519 nan -geo 0.018618502 0.017792091 0.017792091 0.000000000 -q1 0.015833676 0.010000000 0.010000000 0.000000000 -med 0.016059995 0.020000000 0.020000000 0.000000000 -q3 0.016686678 0.020000000 0.020000000 0.000000000 - 1000 50.17507 0.019930217 - calls calls/sec secs/call - - 0.04686 -| - 0.04357 -|** - 0.04027 -|****** - 0.03698 -| - 0.03368 -| - 0.03039 -| - 0.02709 -| - 0.02379 -|* - 0.02050 -|** - 0.01720 -|************************************************** - -Outliers detected with box plot algo (median=0.01606, iqr=0.00085, factor=3.00): -high=46 very_high=180 - -Ljung-Box statistics: q=3486.59836 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -GeneratorBenchmarkPure#generator_fast: - real total user system -sum 20.008520842 19.960000000 19.950000000 0.010000000 -min 0.015434027 0.010000000 0.010000000 0.000000000 -std- 0.010882230 0.009581845 0.009596030 -0.000306228 -mean 0.020008521 0.019960000 0.019950000 0.000010000 -std+ 0.029134812 0.030338155 0.030303970 0.000326228 -max 0.047976971 0.050000000 0.050000000 0.010000000 -std 0.009126291 0.010378155 0.010353970 0.000316228 -std% 45.612021047 51.994765712 51.899601404 3162.277660168 -harm 0.017787111 0.015944725 0.015943454 nan -geo 0.018637889 0.017737808 0.017733851 0.000000000 -q1 0.015746295 0.010000000 0.010000000 0.000000000 -med 0.015944481 0.020000000 0.020000000 0.000000000 -q3 0.016811609 0.020000000 0.020000000 0.000000000 - 1000 49.97871 0.020008521 - calls calls/sec secs/call - - 0.04635 -|* - 0.04310 -|** - 0.03984 -|******* - 0.03659 -| - 0.03333 -| - 0.03008 -| - 0.02682 -| - 0.02357 -| - 0.02032 -|*** - 0.01706 -|************************************************** - -Outliers detected with box plot algo (median=0.01594, iqr=0.00107, factor=3.00): -high=64 very_high=166 - -Ljung-Box statistics: q=2965.93220 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -========================== 2009-04-01T16:53:33 CEST =========================== - -Comparing times (call_time_mean): - 1 GeneratorBenchmarkPure#generator_fast 1000 repeats: - 49.978706968 ( real) -> 1.378x - 0.020008521 - 2 GeneratorBenchmarkPure#generator_safe 1000 repeats: - 36.927649925 ( real) -> 1.018x 3 (>=3859) - 0.027079979 - 3 GeneratorBenchmarkPure#generator_pretty 1000 repeats: - 36.272134441 ( real) -> 1.000x 2 (>=3859) - 0.027569373 - calls/sec ( time) -> speed covers - secs/call - -Comparing times (call_time_median): - 1 GeneratorBenchmarkPure#generator_fast 1000 repeats: - 62.717626652 ( real) -> 1.465x - 0.015944481 - 2 GeneratorBenchmarkPure#generator_safe 1000 repeats: - 43.929073409 ( real) -> 1.026x 3 (>=3859) - 0.022763968 - 3 GeneratorBenchmarkPure#generator_pretty 1000 repeats: - 42.802514491 ( real) -> 1.000x 2 (>=3859) - 0.023363113 - calls/sec ( time) -> speed covers - secs/call -=============================================================================== -Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_pretty.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat'. -Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_safe.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat'. -Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_fast.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat'. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat deleted file mode 100644 index 8817d651..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.0465724627546347 -3 -0.0538491011993629 -4 -0.0538837516678858 -5 -0.0581087152880847 -6 -0.0572986418232159 -7 -0.0599999756465123 -8 -0.068646253651936 -9 -0.0748373181827194 -10 -0.0762302382502274 -11 -0.0698190157504385 -12 -0.0638026172211339 -13 -0.056269249634719 -14 -0.0567327382445349 -15 -0.0596771394790282 -16 -0.054002423139168 -17 -0.0490317335722634 -18 0.461538736857567 -19 0.45915885478734 -20 -0.0465031134094806 -21 -0.0522729893812941 -22 -0.0556508820670087 -23 -0.0550082280116714 -24 -0.0545719306525113 -25 -0.0657168876641937 -26 -0.0693857874047984 -27 -0.0792986072802413 -28 -0.0733338236920328 -29 -0.0654333815670565 -30 -0.0571917436864775 -31 -0.0526717459233624 -32 -0.0557521787108153 -33 -0.0549975758505058 -34 -0.0517415749303995 -35 0.0235297603781655 -36 0.804189593789118 -37 0.0278204967070628 -38 -0.050024141489799 -39 -0.0518095926145569 -40 -0.0452419084747306 -41 -0.0508505065460828 -42 -0.0630761219578647 -43 -0.062815338541251 -44 -0.0772705590073707 -45 -0.0729125138410514 -46 -0.0718320579999123 -47 -0.0607354760752678 -48 -0.0537362276786008 -49 -0.0486777895346357 -50 -0.0554247873222313 -51 -0.0511645855928409 -52 -0.0466004298363093 -53 0.459873350367521 -54 0.424472275070108 -55 -0.0487047547824375 -56 -0.0545283173980978 -57 -0.0480870048405532 -58 -0.0558758950923908 -59 -0.0508952051704444 -60 -0.0620003778190341 -61 -0.0676424010473159 -62 -0.0753766989500048 -63 -0.0695341618321725 -64 -0.0663751431467297 -65 -0.0563170232338965 -66 -0.053655761264179 -67 -0.0530055660822738 -68 -0.0517420323264873 -69 -0.0456703115975304 -70 0.103335608865948 -71 0.639961232446673 -72 0.0835611643585718 -73 -0.0505874487567197 -74 -0.0544864827038179 -75 -0.05268470170316 -76 -0.0471381749128569 -77 -0.0587367141040808 -78 -0.0594188669128526 -79 -0.0650917021991912 -80 -0.068525580194848 -81 -0.0720464392408628 -82 -0.0530371585210882 -83 -0.0594974405056426 -84 -0.0468462249568105 -85 -0.0556729861678099 -86 -0.0486685569511801 -87 -0.0231831809211586 -88 0.412151261252192 -89 0.427286596751845 -90 -0.0468484487476343 -91 -0.0513065750413643 -92 -0.0506460103589642 -93 -0.0523040710285122 -94 -0.0553864194240335 -95 -0.0624298273708398 -96 -0.0629408163122051 -97 -0.0704192947779158 -98 -0.0661863417422444 -99 -0.0616198727092325 -100 -0.0549440862832691 -101 -0.0493100463446785 -102 -0.0513058903561152 -103 -0.0546567629566328 -104 -0.0447767089062448 -105 0.155994950171604 -106 0.499983838989633 -107 0.146752854694195 -108 -0.0499527760238258 -109 -0.0481994338837686 -110 -0.0507971256336303 -111 -0.053242725247733 -112 -0.0556340421399292 -113 -0.0659043126583437 -114 -0.0664898553672703 -115 -0.0623446272778118 -116 -0.0661076782182718 -117 -0.0496402401287781 -118 -0.0494603231236963 -119 -0.04785210230028 -120 -0.0549514395062738 -121 -0.0457893865901791 -122 0.0107718727916323 -123 0.354591871972286 -124 0.378214524188427 -125 -0.00576473785992366 -126 -0.0475263414095933 -127 -0.0467032507959455 -128 -0.0492439340398371 -129 -0.0553725291795042 -130 -0.0588373348224932 -131 -0.0653802923166691 -132 -0.065420878560692 -133 -0.0664825458346486 -134 -0.0585794787867471 -135 -0.0526654847715212 -136 -0.0458834268571694 -137 -0.0488834733479998 -138 -0.0484626462105708 -139 -0.0459832096817391 -140 0.217115969208045 -141 0.366645152379531 -142 0.180037374351014 -143 -0.0470069302868867 -144 -0.0448016085636167 -145 -0.0480964372087658 -146 -0.047581587974722 -147 -0.0542737921731714 -148 -0.0616712591015281 -149 -0.0645264998964167 -150 -0.0660893063296893 -151 -0.0626040533901412 -152 -0.0563401748225009 -153 -0.0489872324179382 -154 -0.0416660137613489 -155 -0.0474153625982119 -156 -0.0429322203344692 -157 0.0758981518142605 -158 0.280022168317631 -159 0.322388389335567 -160 0.029741268314489 -161 -0.0477650431020993 -162 -0.0450492975581489 -163 -0.0437136320420844 -164 -0.0525847472537078 -165 -0.0545773291954165 -166 -0.0605617971026816 -167 -0.0604174493574271 -168 -0.0668887082049361 -169 -0.0569988719330788 -170 -0.0531317736158737 -171 -0.0453847330038626 -172 -0.0478811645968217 -173 -0.0490973206952072 -174 -0.0208865958962374 -175 0.219799921570466 -176 0.281455499801039 -177 0.217413022569843 -178 -0.0472411753883375 -179 -0.0420519413404592 -180 -0.0503599257085886 -181 -0.0460149167014056 -182 -0.0525935089624673 -183 -0.058565014679309 -184 -0.0597480380605469 -185 -0.0594067588886417 -186 -0.0596129671442577 -187 -0.0532084985745771 -188 -0.0488672523172161 -189 -0.0467425993035773 -190 -0.047469398929737 -191 -0.0478812995202321 -192 0.113496325641223 -193 0.235261527843186 -194 0.274288512637064 -195 0.0686558749507578 -196 -0.0421890074761181 -197 -0.0462774420288975 -198 -0.0436343780463106 -199 -0.0526745158526506 -200 -0.0530085997416379 -201 -0.0595766365030657 -202 -0.0527520859095327 -203 -0.0617844575573737 -204 -0.0533732516707478 -205 -0.0475406344908671 -206 -0.0448557657939025 -207 -0.0491813452587493 -208 -0.0465215540303466 -209 0.0129885978681198 -210 0.18048531357979 -211 0.232613590605931 -212 0.216739579303611 -213 -0.0198642765598399 -214 -0.0414628173858397 -215 -0.0446070145491157 -216 -0.0466847454519845 -217 -0.0516226742873491 -218 -0.0545361970917439 -219 -0.0613148091516843 -220 -0.055072960413915 -221 -0.0570761596774525 -222 -0.0495753919838192 -223 -0.044640513821499 -224 -0.0405018327822807 -225 -0.0466702636420172 -226 -0.0430523088898141 -227 0.125260003795363 -228 0.191674753632075 -229 0.237532651857125 -230 0.0874635279713366 -231 -0.0384027504022232 -232 -0.0385130011851906 -233 -0.0369193020542282 -234 -0.0515458512947041 -235 -0.050306447453753 -236 -0.0581741159838659 -237 -0.052999201910556 -238 -0.0589658237786291 -239 -0.0514526377102802 -240 -0.0466869399159385 -241 -0.0380841759966984 -242 -0.0453267873931886 -243 -0.0425000608264673 -244 0.0366267109959152 -245 0.160369979130273 -246 0.196676462412679 -247 0.196963399648668 -248 -0.00269284361330376 -249 -0.0432567847711532 -250 -0.038260742578146 -251 -0.0448624744088596 -252 -0.0455503391926038 -253 -0.0532191861758754 -254 -0.0548508398385335 -255 -0.0555442566058335 -256 -0.0526918597919155 -257 -0.0496453707825256 -258 -0.0463836479193388 -259 -0.0379199031664589 -260 -0.043979755952542 -261 -0.0385836044654481 -262 0.148383243382033 -263 0.160888203514488 -264 0.201083269668142 -265 0.101463931607865 -266 -0.0389240581250844 -267 -0.043318710806698 -268 -0.0360099743646708 -269 -0.0479594556724686 -270 -0.0461272027080179 -271 -0.0510551768794275 -272 -0.0463026057033333 -273 -0.0586300566668458 -274 -0.0481537987530518 -275 -0.0467240944281063 -276 -0.0388278648519038 -277 -0.0438740084909164 -278 -0.0404201849366918 -279 0.0573087818198142 -280 0.149625568374594 -281 0.165251996461555 -282 0.180497909191808 -283 0.0141274252706337 -284 -0.0433910523077124 -285 -0.0353327138881179 -286 -0.04407012419326 -287 -0.0472875341495554 -288 -0.0500154039913527 -289 -0.0489059070454218 -290 -0.0523175481803876 -291 -0.0483438070974799 -292 -0.0465391341735897 -293 -0.0443706893358358 -294 -0.0383212232736209 -295 -0.0439923509231612 -296 -0.0179530530333497 -297 0.126953953852207 -298 0.148073497780274 -299 0.169463284775491 -300 0.12460981401008 -301 -0.0384433337210392 -302 -0.037574676038055 -303 -0.0373312294892246 -304 -0.0476939816787347 -305 -0.0485476034606885 -306 -0.053203479537681 -307 -0.0432695529453645 -308 -0.0531581165281506 -309 -0.0433332891054256 -310 -0.0406621361812071 -311 -0.0336785273069936 -312 -0.0450892345419585 -313 -0.0372803722726718 -314 0.0747413637301572 -315 0.12838403521187 -316 0.131273451158583 -317 0.165634916670676 -318 0.0393574762093495 -319 -0.0400219462092557 -320 -0.0321130988518114 -321 -0.0426329631110547 -322 -0.0472021330054887 -323 -0.0510884361963381 -324 -0.0451526836510229 -325 -0.0497432174259365 -326 -0.0494924567626408 -327 -0.0426445357005891 -328 -0.0399977780929692 -329 -0.035075954620801 -330 -0.0398937379838232 -331 0.00141601747607724 -332 0.111237045799794 -333 0.129781753698161 -334 0.148823429538605 -335 0.111428704849097 -336 -0.0189114212837953 -337 -0.0358144500870447 -338 -0.0338893528609611 -339 -0.04156202524001 -340 -0.0476279047622513 -341 -0.0479240001912479 -342 -0.0448192129885784 -343 -0.0520619488376005 -344 -0.045398294011681 -345 -0.0425448160252897 -346 -0.0301879715513119 -347 -0.039119844953792 -348 -0.0318445060292795 -349 0.0775128927560733 -350 0.133696030929458 -351 0.0934040962894178 -352 0.165037006342042 -353 0.0370713206399436 -354 -0.0370489719027206 -355 -0.0298304751416159 -356 -0.0387994185030151 -357 -0.0425739727567155 -358 -0.0469026409069165 -359 -0.0418293150822566 -360 -0.0473273219131854 -361 -0.049308019642061 -362 -0.0433284886806794 -363 -0.0369972157525989 -364 -0.0345525347288445 -365 -0.0400585889725531 -366 0.006656467274749 -367 0.11319538432443 -368 0.114967420474613 -369 0.133840368292221 -370 0.11280046677219 -371 -0.0184103961539414 -372 -0.0339399206362434 -373 -0.0341590200213704 -374 -0.0389400741910205 -375 -0.0448588461724111 -376 -0.0447120964840124 -377 -0.0401284599190171 -378 -0.0470280445927007 -379 -0.0439972690249817 -380 -0.0392994644400358 -381 -0.0331443114964012 -382 -0.0396320099995872 -383 -0.0357237280973228 -384 0.0769794799672965 -385 0.121101405134608 -386 0.100303300798787 -387 0.149213747230628 -388 0.0412712734968881 -389 -0.034428474543572 -390 -0.0309853686271892 -391 -0.037127802798713 -392 -0.0410862385400477 -393 -0.0446683655260938 -394 -0.0377779019366912 -395 -0.0432145550363202 -396 -0.0438865867392626 -397 -0.0397741719725851 -398 -0.0337532454079572 -399 -0.0345799482263535 -400 -0.0387855235790556 -401 0.0042952586621399 -402 0.114260797874283 -403 0.0962185400570627 -404 0.116302086694965 -405 0.116848660126361 -406 -0.0132599069767382 -407 -0.0326838372412273 -408 -0.031676894325753 -409 -0.0359544345578842 -410 -0.0430939231188687 -411 -0.0427909313399572 -412 -0.0392589148284163 -413 -0.0430139521930403 -414 -0.0405058980200932 -415 -0.0359005384516355 -416 -0.0297289315488662 -417 -0.0346787823837342 -418 -0.0332184590996983 -419 0.0771309823574169 -420 0.0954831808563938 -421 0.0986580814637101 -422 0.132204221810988 -423 0.0432995539287995 -424 -0.0282150289086581 -425 -0.0254088298731916 -426 -0.035952142901876 -427 -0.037552626088304 -428 -0.0405520090843967 -429 -0.0395737434856001 -430 -0.0415264891793749 -431 -0.0396875191674724 -432 -0.0384740880698292 -433 -0.0302213018176337 -434 -0.0302192627628463 -435 -0.0348307323662469 -436 0.00857082219058242 -437 0.113991981123305 -438 0.0810743348982558 -439 0.0970584251304922 -440 0.115026168034471 -441 -0.0130244881629081 -442 -0.0292031219799078 -443 -0.0308836212065116 -444 -0.0320575360367349 -445 -0.0393235092139189 -446 -0.0404817406521166 -447 -0.0375499698943704 -448 -0.0391450519157927 -449 -0.0397015347530508 -450 -0.0341587808934071 -451 -0.0310633384201306 -452 -0.0298881734250907 -453 -0.0295664081324632 -454 0.0805186281243404 -455 0.0833481690834954 -456 0.100864427083124 -457 0.111048128125141 -458 0.0464738054146592 -459 -0.0349995254836163 -460 -0.0255159736923953 -461 -0.0328764364137298 -462 -0.0338236112511505 -463 -0.0346782988250705 -464 -0.0340726935148046 -465 -0.0404234701095829 -466 -0.0356824878052483 -467 -0.0365578629303766 -468 -0.0324733709193554 -469 -0.0289648187856306 -470 -0.0320583632447268 -471 0.0109080362038411 -472 0.11757782076319 -473 0.0695324086716044 -474 0.079135520981604 -475 0.117166513712611 -476 -0.0107597842046391 -477 -0.0317910056255559 -478 -0.027713154753877 -479 -0.0328896799629515 -480 -0.0351148398263727 -481 -0.0367274328131775 -482 -0.0364350706943765 -483 -0.0352358798451258 -484 -0.0349817805140066 -485 -0.0341765926002117 -486 -0.0295770684618762 -487 -0.0265724708520466 -488 -0.0307810244464994 -489 0.0809894603579388 -490 0.0657550565427912 -491 0.106121880875152 -492 0.0974533505603275 -493 0.048238583810636 -494 -0.0288751879183889 -495 -0.0278787597095273 -496 -0.0337889205336922 -497 -0.0310688626579132 -498 -0.0384449649057626 -499 -0.0323682085966455 -500 -0.0361594385992874 -501 -0.0307937097313911 -502 -0.0313341566221988 -503 -0.0279856067641256 -504 -0.0289346840813807 -505 -0.0274872799690336 -506 0.00966555565940951 -507 0.0987720472362742 -508 0.0693890261403234 -509 0.0836756922797179 -510 0.10281770126579 -511 -0.00727787007831376 -512 -0.0258225019587932 -513 -0.0298502698700326 -514 -0.0306103473329238 -515 -0.0340826155989302 -516 -0.0355383371718098 -517 -0.0332157070791453 -518 -0.0354738192624273 -519 -0.0294010470848171 -520 -0.0310021513905682 -521 -0.0278235052216282 -522 -0.0239204460552095 -523 -0.0270969544256545 -524 0.0813764246127106 -525 0.0493102023473518 -526 0.104517332044244 -527 0.0811860139474904 -528 0.0510442031887192 -529 -0.0263637770970907 -530 -0.024755257304 -531 -0.0293388219300537 -532 -0.030007512828798 -533 -0.0323871465584352 -534 -0.0326780116025662 -535 -0.0374203204825225 -536 -0.0287231615177231 -537 -0.0332054768516264 -538 -0.0263051872864467 -539 -0.0243639277620771 -540 -0.023684344033898 -541 0.0142647324079813 -542 0.08574245660666 -543 0.0666795058595027 -544 0.0869761334698767 -545 0.0822018389405922 -546 -0.00295335814304317 -547 -0.0235452895911804 -548 -0.0281420988182953 -549 -0.0274120947938358 -550 -0.030158448744077 -551 -0.0295591560556766 -552 -0.0349368577359752 -553 -0.0326892340430509 -554 -0.0288806796544796 -555 -0.0295906146661126 -556 -0.0255785772166513 -557 -0.0247509384838002 -558 -0.0232231373627232 -559 0.0658724153140723 -560 0.0712698072158692 -561 0.0881661970571259 -562 0.0663434329796159 -563 0.0504442196817487 -564 -0.0220475381031792 -565 -0.0264520763210997 -566 -0.0262681630778278 -567 -0.0288120090469048 -568 -0.0292045667237407 -569 -0.0288062681932496 -570 -0.0330307486178301 -571 -0.0276514157813042 -572 -0.0268575483268837 -573 -0.0286764091398958 -574 -0.0281163961143271 -575 -0.0228693014048811 -576 0.0137045823052654 -577 0.0708633033596918 -578 0.0727744765379734 -579 0.0901470435080371 -580 0.0668755655920324 -581 -0.000653685262202251 -582 -0.0226994101946291 -583 -0.0270858316982201 -584 -0.0262718617327352 -585 -0.0265543856920115 -586 -0.0263771846461291 -587 -0.0319210552186977 -588 -0.029228183377507 -589 -0.0253777881177648 -590 -0.023809668956424 -591 -0.0280707574473553 -592 -0.0236140212549248 -593 -0.0228812657345804 -594 0.0486286781379677 -595 0.0898094414635747 -596 0.0508172134123107 -597 0.0901627351364118 -598 0.035844991775818 -599 -0.0203954379453198 -600 -0.0236862766959248 -601 -0.0247764225976876 -602 -0.0268581954253402 -603 -0.024001323229557 -604 -0.0303209729182735 -605 -0.0282931887611187 -606 -0.0292448557436288 -607 -0.0204578421032432 -608 -0.0248481591188926 -609 -0.0243082585401647 -610 -0.0203058655309834 -611 0.0139804741022989 -612 0.0505962449646704 -613 0.0690065939226321 -614 0.0907008020619833 -615 0.0519895469381193 -616 0.00206395484186643 -617 -0.0179281261622168 -618 -0.0227541776038619 -619 -0.0257149623750039 -620 -0.0221474812173537 -621 -0.0258958495203968 -622 -0.0291821476071184 -623 -0.0275173183668531 -624 -0.0219475947671766 -625 -0.0205864860149524 -626 -0.025198699283959 -627 -0.0196801475213126 -628 -0.0202813022751003 -629 0.0348753757737052 -630 0.0886744284826022 -631 0.0510351034421101 -632 0.0895415054055807 -633 0.0164865165554748 -634 -0.015820890351599 -635 -0.0235475303149806 -636 -0.0213487610196947 -637 -0.0223199871320358 -638 -0.0232883343131998 -639 -0.0272670686256873 -640 -0.0272994728260666 -641 -0.0251308147365066 -642 -0.0178939045831991 -643 -0.0228455395566411 -644 -0.0221674583093893 -645 -0.0181323711670327 -646 -0.000452057490636536 -647 0.0730003371658734 -648 0.0526039790662623 -649 0.0893120555725861 -650 0.0370376391850216 -651 -0.00089235639136826 -652 -0.0187548356986865 -653 -0.0202476722666913 -654 -0.0234402686094643 -655 -0.0176944079943485 -656 -0.0217419932421246 -657 -0.0252856528727102 -658 -0.0266563306764344 -659 -0.0179448089254929 -660 -0.0195530157887301 -661 -0.0242694989687706 -662 -0.0190898174037584 -663 -0.0162971087662526 -664 0.0190291931578508 -665 0.0920040569420149 -666 0.0547776230200262 -667 0.092519718174194 -668 -0.00323187468810452 -669 -0.0159810677640527 -670 -0.0185314129082898 -671 -0.0214996968543122 -672 -0.0209394743431591 -673 -0.0193460621057047 -674 -0.0257496298508357 -675 -0.0234878155623851 -676 -0.0215154679548733 -677 -0.0168154166505892 -678 -0.019623012738795 -679 -0.0222731795719489 -680 -0.0150548901993986 -681 -0.0172527061580013 -682 0.0747183966470148 -683 0.0721393781132992 -684 0.0565213941535672 -685 0.0565389116679803 -686 -0.0148388383909541 -687 -0.0189549593111703 -688 -0.0194161863407717 -689 -0.0197915076545455 -690 -0.0204244077381793 -691 -0.0218016316407433 -692 -0.0214645015602913 -693 -0.0238079641007921 -694 -0.0139629684168808 -695 -0.0156538895936235 -696 -0.021079456852115 -697 -0.0181418459552329 -698 -0.0145711876585601 -699 0.021215272535226 -700 0.0739558887973388 -701 0.0544658986157784 -702 0.0807341348823958 -703 -0.000188368345643536 -704 -0.0129199941327641 -705 -0.0180368997395347 -706 -0.0177692127800531 -707 -0.0204829544190261 -708 -0.0186632967600099 -709 -0.0204496056760325 -710 -0.023317274857146 -711 -0.0203774310283799 -712 -0.0136747501938559 -713 -0.0178116490297146 -714 -0.0189587954269383 -715 -0.0118858609089409 -716 -0.0172514569604997 -717 0.060802565704854 -718 0.0729937005677284 -719 0.0561951789698019 -720 0.042100568116198 -721 -0.0145015528092692 -722 -0.015700955312727 -723 -0.0167874521751816 -724 -0.0157176826421741 -725 -0.01783312467466 -726 -0.0220309477451877 -727 -0.0206302592507727 -728 -0.0200916933627863 -729 -0.0188778418069578 -730 -0.0113708982542668 -731 -0.0176778219523296 -732 -0.014843868366855 -733 -0.0112296460883651 -734 0.0256322345958098 -735 0.0560052205819785 -736 0.0568640232132456 -737 0.0611881586473825 -738 0.00379039852134298 -739 -0.0104730174558681 -740 -0.0164262606347393 -741 -0.0144022889870097 -742 -0.0168139620706729 -743 -0.0162615811333726 -744 -0.0196477371337629 -745 -0.0198824745918442 -746 -0.0192330305226495 -747 -0.012843462564526 -748 -0.0132891104080353 -749 -0.0181808023489715 -750 -0.0130545167379928 -751 -0.0113910229689613 -752 0.041990539641635 -753 0.0763855238906953 -754 0.0594251709620633 -755 0.0243609283015674 -756 -0.011509575108219 -757 -0.0130005756539877 -758 -0.0150890385548497 -759 -0.0139673203815592 -760 -0.0157156335728081 -761 -0.0186682466883542 -762 -0.0185554927618856 -763 -0.0162755018147282 -764 -0.0154200664197001 -765 -0.0134500863696249 -766 -0.014171081512106 -767 -0.0144636296247257 -768 -0.0126931065239486 -769 0.00886491087382969 -770 0.0582642578199214 -771 0.0786546867228701 -772 0.0272306482046141 -773 0.00822579495183492 -774 -0.011517390916366 -775 -0.0139592957633573 -776 -0.0129421565517047 -777 -0.0134986559471086 -778 -0.0136304589585504 -779 -0.0173438393070116 -780 -0.016064531677406 -781 -0.0152510664062614 -782 -0.0101822066131621 -783 -0.0130099394643087 -784 -0.0150897101751983 -785 -0.0121547232260943 -786 -0.0117824571975702 -787 0.0242515574526126 -788 0.0773173900249155 -789 0.061635146281499 -790 0.00959030625397352 -791 -0.0090693872805306 -792 -0.0112081729509553 -793 -0.0138649594742307 -794 -0.010084978733244 -795 -0.0132143360704552 -796 -0.01496302977637 -797 -0.0164140720480332 -798 -0.0137826264017484 -799 -0.0128738607141167 -800 -0.0108179181287105 -801 -0.0114389768189071 -802 -0.0115710434341599 -803 -0.00965025893918617 -804 -0.0135132422793313 -805 0.0617365766920115 -806 0.0779699523399871 -807 0.0247967756220761 -808 -0.0065090662747984 -809 -0.00857892822230665 -810 -0.0101662607994292 -811 -0.0108507653686812 -812 -0.00958246558520002 -813 -0.0144516907622999 -814 -0.0150147299589262 -815 -0.0135220759135818 -816 -0.0115211008118439 -817 -0.0104021106108387 -818 -0.00780776429502702 -819 -0.011404849912357 -820 -0.00951333011434902 -821 -0.00938572506372878 -822 0.0266216133025957 -823 0.0610181017554806 -824 0.0438869371591075 -825 0.00859504869317741 -826 -0.00699743519150731 -827 -0.00929600314682341 -828 -0.0111911531783819 -829 -0.00823625897932562 -830 -0.0100913686286367 -831 -0.0125756643002852 -832 -0.0152602353555104 -833 -0.00953260529007071 -834 -0.0100594605441607 -835 -0.00871459443751229 -836 -0.00938155933764076 -837 -0.00918618283897082 -838 -0.00755980106901216 -839 -0.0107245855066125 -840 0.0458486876264972 -841 0.0824090055093124 -842 0.00574421553061521 -843 -0.00725667517287379 -844 -0.00867494223043522 -845 -0.00829285117321785 -846 -0.00957414187855957 -847 -0.00659032223177494 -848 -0.0106624401215929 -849 -0.0122427759092887 -850 -0.0104622099267244 -851 -0.00799623147718296 -852 -0.0104382420530796 -853 -0.0075668223790859 -854 -0.00621892353946098 -855 -0.00836920759535837 -856 -0.00630014552985234 -857 0.0113479974095218 -858 0.0628686123242055 -859 0.0463260384468626 -860 -0.00865830449867469 -861 -0.00632533057369849 -862 -0.00620405394762857 -863 -0.00876475527943431 -864 -0.00910265771371557 -865 -0.00714690863853632 -866 -0.0103958026182488 -867 -0.0121633888743942 -868 -0.00676196610841381 -869 -0.00714452896204837 -870 -0.00679873891573572 -871 -0.00845680011347619 -872 -0.00625057507944579 -873 -0.00606839813409962 -874 -0.00725859558269772 -875 0.0281965759233777 -876 0.0670260741629087 -877 0.00963490036467712 -878 -0.00456245837151462 -879 -0.00755131292428571 -880 -0.00586747799683473 -881 -0.00783299131040265 -882 -0.00744370954110726 -883 -0.00915087240687255 -884 -0.00957213417268418 -885 -0.00832361596391925 -886 -0.0050340090260566 -887 -0.00755295159414475 -888 -0.00495117481094215 -889 -0.00424086001593403 -890 -0.00515343444584415 -891 -0.00744099299381077 -892 -0.00696188041633924 -893 0.0670358828192865 -894 0.0306555670430617 -895 -0.00700188318283173 -896 -0.00439483158228684 -897 -0.00440309654475794 -898 -0.00580106920715627 -899 -0.00743386431878525 -900 -0.00615300126683845 -901 -0.00852083652339179 -902 -0.00801483743475307 -903 -0.0074130347068713 -904 -0.00363565987760851 -905 -0.007955033309064 -906 -0.00193305784421065 -907 -0.0041800577189778 -908 -0.00353565656672481 -909 -0.0058551774732522 -910 0.0302595657677451 -911 0.0314102314562899 -912 0.013212750015713 -913 -0.00316630844923298 -914 -0.00520479906156008 -915 -0.00420739410816969 -916 -0.00564901350096342 -917 -0.00531128324885506 -918 -0.00606089198821065 -919 -0.00772996050306375 -920 -0.00676594704104744 -921 -0.00533751850001158 -922 -0.0058222391965106 -923 -0.00590469211682123 -924 -0.00139624368550244 -925 -0.00225770557975624 -926 -0.00430278519099915 -927 -0.00497994091066768 -928 0.0521745063047641 -929 0.0125007611461825 -930 -0.00335983528594071 -931 -0.00200633784627574 -932 -0.00192061226814783 -933 -0.00414996522579167 -934 -0.00453925170940819 -935 -0.00441610859184833 -936 -0.00487531850001996 -937 -0.00511365916811154 -938 -0.00549890284279737 -939 -0.00379682253936933 -940 -0.00404757676266654 -941 -0.00349312951783624 -942 -0.00159942004178191 -943 -0.00176952812644145 -944 -0.00366444935410891 -945 0.0162283566898874 -946 0.0320898583297591 -947 -0.00388380045409207 -948 -0.0018243911045478 -949 -0.00115125308892718 -950 -0.00149365801922153 -951 -0.00294988667592288 -952 -0.00329687293305934 -953 -0.00371267430404071 -954 -0.00407396263409427 -955 -0.00384065535263086 -956 -0.00283959971098493 -957 -0.00342824033321658 -958 -0.00321142688896053 -959 -0.00222112060678468 -960 -0.0020328615528584 -961 -0.00145605698519582 -962 -0.00287857829852364 -963 0.0183610738417914 -964 0.0154027556420478 -965 -0.00179489314871512 -966 -0.00129790436843852 -967 -0.000853980926230406 -968 -0.000666619047494671 -969 -0.00118456473308688 -970 -0.00182173221293997 -971 -0.00223763548036304 -972 -0.00250045159359336 -973 -0.00244783545512189 -974 -0.00233355012767793 -975 -0.00148662334882801 -976 -0.00109910993153004 -977 -0.00197535475727005 -978 -0.00150005492632689 -979 -0.000669782105543667 -980 -0.00133477373003284 -981 0.0173273972011934 -982 -0.00112526521664063 -983 -0.000841739351965462 -984 0.000565203827743629 -985 -0.000459312244397425 -986 -0.000418262528083788 -987 -0.000498463341452234 -988 -0.000616296957122406 -989 -0.000679296268851578 -990 -0.00084778145306077 -991 -0.000978798423497668 -992 -0.000894990113732281 -993 -0.000701461719327138 -994 -0.000511781130867642 -995 -0.000286708792038961 -996 -0.000395118651726646 -997 -0.000921290818811666 -998 -0.000781372909192289 -999 9.80848043031114e-05 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat deleted file mode 100644 index 7ed81ad3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.0234072208404541 0.0299999999999976 0.0299999999999976 0.0 1 -2 0.0229461193084717 0.0199999999999996 0.0199999999999996 0.0 2 -3 0.0243709087371826 0.0200000000000031 0.0200000000000031 0.0 3 -4 0.0244681835174561 0.0299999999999976 0.0299999999999976 0.0 4 -5 0.0235309600830078 0.0199999999999996 0.0199999999999996 0.0 5 -6 0.0227420330047607 0.0199999999999996 0.0199999999999996 0.0 6 -7 0.022014856338501 0.0300000000000011 0.0300000000000011 0.0 7 -8 0.0215449333190918 0.0199999999999996 0.0199999999999996 0.0 8 -9 0.0216219425201416 0.0199999999999996 0.0199999999999996 0.0 9 -10 0.0218148231506348 0.0199999999999996 0.0199999999999996 0.0 10 -11 0.0217390060424805 0.0200000000000031 0.0200000000000031 0.0 11 -12 0.0218250751495361 0.0299999999999976 0.0299999999999976 0.0 12 -13 0.0219888687133789 0.0199999999999996 0.0199999999999996 0.0 13 -14 0.021812915802002 0.0200000000000031 0.0200000000000031 0.0 14 -15 0.0244221687316895 0.0199999999999996 0.0199999999999996 0.0 15 -16 0.022874116897583 0.0299999999999976 0.0299999999999976 0.0 16 -17 0.0218498706817627 0.0199999999999996 0.0199999999999996 0.0 17 -18 0.0760290622711182 0.0700000000000003 0.0700000000000003 0.0 18 -19 0.0238790512084961 0.0300000000000011 0.0300000000000011 0.0 19 -20 0.0229480266571045 0.0199999999999996 0.0199999999999996 0.0 20 -21 0.0231330394744873 0.0199999999999996 0.0199999999999996 0.0 21 -22 0.0228769779205322 0.0300000000000011 0.0300000000000011 0.0 22 -23 0.0258219242095947 0.0199999999999996 0.0199999999999996 0.0 23 -24 0.0243449211120605 0.0300000000000011 0.0300000000000011 0.0 24 -25 0.0228381156921387 0.0199999999999996 0.0199999999999996 0.0 25 -26 0.022367000579834 0.0199999999999996 0.0199999999999996 0.0 26 -27 0.0216410160064697 0.0199999999999996 0.0199999999999996 0.0 27 -28 0.0216100215911865 0.0300000000000011 0.0300000000000011 0.0 28 -29 0.0220630168914795 0.0199999999999996 0.0199999999999996 0.0 29 -30 0.0222890377044678 0.0199999999999996 0.0199999999999996 0.0 30 -31 0.0216050148010254 0.0199999999999996 0.0199999999999996 0.0 31 -32 0.0216009616851807 0.0199999999999996 0.0199999999999996 0.0 32 -33 0.021636962890625 0.0199999999999996 0.0199999999999996 0.0 33 -34 0.0239388942718506 0.0300000000000011 0.0300000000000011 0.0 34 -35 0.021759033203125 0.0199999999999996 0.0199999999999996 0.0 35 -36 0.0811088085174561 0.0800000000000018 0.0800000000000018 0.0 36 -37 0.0229001045227051 0.0199999999999996 0.0199999999999996 0.0 37 -38 0.0228509902954102 0.0299999999999976 0.0299999999999976 0.0 38 -39 0.0228641033172607 0.0200000000000031 0.0200000000000031 0.0 39 -40 0.0229160785675049 0.0199999999999996 0.0199999999999996 0.0 40 -41 0.0227169990539551 0.0299999999999976 0.0299999999999976 0.0 41 -42 0.0228250026702881 0.0200000000000031 0.0200000000000031 0.0 42 -43 0.0261838436126709 0.0199999999999996 0.0199999999999996 0.0 43 -44 0.0234429836273193 0.0299999999999976 0.0299999999999976 0.0 44 -45 0.0215818881988525 0.0199999999999996 0.0199999999999996 0.0 45 -46 0.0215709209442139 0.0200000000000031 0.0200000000000031 0.0 46 -47 0.0215950012207031 0.0199999999999996 0.0199999999999996 0.0 47 -48 0.0215859413146973 0.0199999999999996 0.0199999999999996 0.0 48 -49 0.0217461585998535 0.0299999999999976 0.0299999999999976 0.0 49 -50 0.021589994430542 0.0200000000000031 0.0200000000000031 0.0 50 -51 0.0216829776763916 0.0199999999999996 0.0199999999999996 0.0 51 -52 0.0217359066009521 0.0199999999999996 0.0199999999999996 0.0 52 -53 0.0219109058380127 0.0199999999999996 0.0199999999999996 0.0 53 -54 0.0795738697052002 0.0799999999999983 0.0799999999999983 0.0 54 -55 0.023021936416626 0.0300000000000011 0.0300000000000011 0.0 55 -56 0.0230770111083984 0.0199999999999996 0.0199999999999996 0.0 56 -57 0.0229918956756592 0.0199999999999996 0.0199999999999996 0.0 57 -58 0.0233080387115479 0.0300000000000011 0.0300000000000011 0.0 58 -59 0.0226249694824219 0.0199999999999996 0.0199999999999996 0.0 59 -60 0.022819995880127 0.0199999999999996 0.0199999999999996 0.0 60 -61 0.0220620632171631 0.0199999999999996 0.0199999999999996 0.0 61 -62 0.0242538452148438 0.0300000000000011 0.0300000000000011 0.0 62 -63 0.0224769115447998 0.0199999999999996 0.0199999999999996 0.0 63 -64 0.0229120254516602 0.0199999999999996 0.0199999999999996 0.0 64 -65 0.0216310024261475 0.0199999999999996 0.0199999999999996 0.0 65 -66 0.0215990543365479 0.0300000000000011 0.0300000000000011 0.0 66 -67 0.0216221809387207 0.0199999999999996 0.0199999999999996 0.0 67 -68 0.0220649242401123 0.0199999999999996 0.0199999999999996 0.0 68 -69 0.0225241184234619 0.0199999999999996 0.0199999999999996 0.0 69 -70 0.0217139720916748 0.0200000000000031 0.0200000000000031 0.0 70 -71 0.0781118869781494 0.0799999999999983 0.0799999999999983 0.0 71 -72 0.0234410762786865 0.0300000000000011 0.0300000000000011 0.0 72 -73 0.0229668617248535 0.0199999999999996 0.0199999999999996 0.0 73 -74 0.0291080474853516 0.0300000000000011 0.0300000000000011 0.0 74 -75 0.0240139961242676 0.0199999999999996 0.0199999999999996 0.0 75 -76 0.0226550102233887 0.0199999999999996 0.0199999999999996 0.0 76 -77 0.0226681232452393 0.0299999999999976 0.0299999999999976 0.0 77 -78 0.0226988792419434 0.0200000000000031 0.0200000000000031 0.0 78 -79 0.0223758220672607 0.0199999999999996 0.0199999999999996 0.0 79 -80 0.0216100215911865 0.0199999999999996 0.0199999999999996 0.0 80 -81 0.0216431617736816 0.0300000000000011 0.0300000000000011 0.0 81 -82 0.0247490406036377 0.0199999999999996 0.0199999999999996 0.0 82 -83 0.023237943649292 0.0199999999999996 0.0199999999999996 0.0 83 -84 0.0217869281768799 0.0299999999999976 0.0299999999999976 0.0 84 -85 0.0216598510742188 0.0200000000000031 0.0200000000000031 0.0 85 -86 0.0217628479003906 0.0199999999999996 0.0199999999999996 0.0 86 -87 0.0218119621276855 0.0199999999999996 0.0199999999999996 0.0 87 -88 0.0217659473419189 0.0199999999999996 0.0199999999999996 0.0 88 -89 0.0768370628356934 0.0799999999999983 0.0799999999999983 0.0 89 -90 0.025317907333374 0.0200000000000031 0.0200000000000031 0.0 90 -91 0.0233399868011475 0.0299999999999976 0.0299999999999976 0.0 91 -92 0.0232961177825928 0.0199999999999996 0.0199999999999996 0.0 92 -93 0.0227580070495605 0.0199999999999996 0.0199999999999996 0.0 93 -94 0.0227789878845215 0.0300000000000011 0.0300000000000011 0.0 94 -95 0.0228569507598877 0.0199999999999996 0.0199999999999996 0.0 95 -96 0.0226337909698486 0.0199999999999996 0.0199999999999996 0.0 96 -97 0.0222299098968506 0.0300000000000011 0.0300000000000011 0.0 97 -98 0.0214722156524658 0.0199999999999996 0.0199999999999996 0.0 98 -99 0.0216591358184814 0.0199999999999996 0.0199999999999996 0.0 99 -100 0.0215888023376465 0.0199999999999996 0.0199999999999996 0.0 100 -101 0.0234711170196533 0.0200000000000031 0.0200000000000031 0.0 101 -102 0.0229098796844482 0.0299999999999976 0.0299999999999976 0.0 102 -103 0.0220291614532471 0.0199999999999996 0.0199999999999996 0.0 103 -104 0.0216660499572754 0.0199999999999996 0.0199999999999996 0.0 104 -105 0.0216059684753418 0.0200000000000031 0.0200000000000031 0.0 105 -106 0.0761630535125732 0.0799999999999983 0.0799999999999983 0.0 106 -107 0.0231220722198486 0.0199999999999996 0.0199999999999996 0.0 107 -108 0.0229330062866211 0.0199999999999996 0.0199999999999996 0.0 108 -109 0.0230400562286377 0.0300000000000011 0.0300000000000011 0.0 109 -110 0.0250980854034424 0.0199999999999996 0.0199999999999996 0.0 110 -111 0.0231518745422363 0.0300000000000011 0.0300000000000011 0.0 111 -112 0.0227048397064209 0.0199999999999996 0.0199999999999996 0.0 112 -113 0.0284969806671143 0.0300000000000011 0.0300000000000011 0.0 113 -114 0.0239260196685791 0.0199999999999996 0.0199999999999996 0.0 114 -115 0.0219199657440186 0.0199999999999996 0.0199999999999996 0.0 115 -116 0.0215260982513428 0.0199999999999996 0.0199999999999996 0.0 116 -117 0.0215198993682861 0.0300000000000011 0.0300000000000011 0.0 117 -118 0.0216398239135742 0.0199999999999996 0.0199999999999996 0.0 118 -119 0.0215740203857422 0.0199999999999996 0.0199999999999996 0.0 119 -120 0.0216050148010254 0.0199999999999996 0.0199999999999996 0.0 120 -121 0.0247631072998047 0.0300000000000011 0.0300000000000011 0.0 121 -122 0.0225539207458496 0.0199999999999996 0.0199999999999996 0.0 122 -123 0.0218660831451416 0.0199999999999996 0.0199999999999996 0.0 123 -124 0.0765988826751709 0.0799999999999983 0.0799999999999983 0.0 124 -125 0.0230319499969482 0.0199999999999996 0.0199999999999996 0.0 125 -126 0.0229179859161377 0.0200000000000031 0.0200000000000031 0.0 126 -127 0.0229899883270264 0.0299999999999976 0.0299999999999976 0.0 127 -128 0.0230929851531982 0.0199999999999996 0.0199999999999996 0.0 128 -129 0.024507999420166 0.0200000000000031 0.0200000000000031 0.0 129 -130 0.0237898826599121 0.0299999999999976 0.0299999999999976 0.0 130 -131 0.0237009525299072 0.0199999999999996 0.0199999999999996 0.0 131 -132 0.0220949649810791 0.0199999999999996 0.0199999999999996 0.0 132 -133 0.0216069221496582 0.0300000000000011 0.0300000000000011 0.0 133 -134 0.0217080116271973 0.0199999999999996 0.0199999999999996 0.0 134 -135 0.0218410491943359 0.0199999999999996 0.0199999999999996 0.0 135 -136 0.0222909450531006 0.0199999999999996 0.0199999999999996 0.0 136 -137 0.0216519832611084 0.0200000000000031 0.0200000000000031 0.0 137 -138 0.0217440128326416 0.0299999999999976 0.0299999999999976 0.0 138 -139 0.0217659473419189 0.0199999999999996 0.0199999999999996 0.0 139 -140 0.0218610763549805 0.0200000000000031 0.0200000000000031 0.0 140 -141 0.0243120193481445 0.0199999999999996 0.0199999999999996 0.0 141 -142 0.0773770809173584 0.0799999999999983 0.0799999999999983 0.0 142 -143 0.0230779647827148 0.0199999999999996 0.0199999999999996 0.0 143 -144 0.022913932800293 0.0300000000000011 0.0300000000000011 0.0 144 -145 0.0239241123199463 0.0199999999999996 0.0199999999999996 0.0 145 -146 0.0227971076965332 0.0199999999999996 0.0199999999999996 0.0 146 -147 0.0230598449707031 0.0300000000000011 0.0300000000000011 0.0 147 -148 0.0227980613708496 0.0200000000000031 0.0199999999999996 0.0 148 -149 0.0250101089477539 0.019999999999996 0.0199999999999996 0.0 149 -150 0.0231060981750488 0.0300000000000011 0.0300000000000011 0.0 150 -151 0.021589994430542 0.0200000000000031 0.0199999999999996 0.0 151 -152 0.0279331207275391 0.029999999999994 0.0299999999999976 0.0 152 -153 0.0230989456176758 0.0200000000000031 0.0200000000000031 0.0 153 -154 0.0220518112182617 0.019999999999996 0.019999999999996 0.0 154 -155 0.02158522605896 0.0200000000000031 0.0200000000000031 0.0 155 -156 0.0215890407562256 0.0300000000000011 0.0300000000000011 0.0 156 -157 0.021787166595459 0.019999999999996 0.019999999999996 0.0 157 -158 0.0218689441680908 0.0200000000000031 0.0200000000000031 0.0 158 -159 0.0797779560089111 0.0799999999999983 0.0799999999999983 0.0 159 -160 0.0232160091400146 0.0200000000000031 0.0200000000000031 0.0 160 -161 0.0228378772735596 0.019999999999996 0.019999999999996 0.0 161 -162 0.02286696434021 0.0300000000000011 0.0300000000000011 0.0 162 -163 0.0227479934692383 0.0200000000000031 0.0200000000000031 0.0 163 -164 0.0228869915008545 0.019999999999996 0.019999999999996 0.0 164 -165 0.0226659774780273 0.0300000000000011 0.0300000000000011 0.0 165 -166 0.022770881652832 0.0200000000000031 0.0200000000000031 0.0 166 -167 0.0226860046386719 0.019999999999996 0.019999999999996 0.0 167 -168 0.0242869853973389 0.0300000000000011 0.0300000000000011 0.0 168 -169 0.0219647884368896 0.0200000000000031 0.0200000000000031 0.0 169 -170 0.0227658748626709 0.019999999999996 0.019999999999996 0.0 170 -171 0.0217809677124023 0.0200000000000031 0.0200000000000031 0.0 171 -172 0.0216867923736572 0.019999999999996 0.019999999999996 0.0 172 -173 0.0220091342926025 0.0300000000000011 0.0300000000000011 0.0 173 -174 0.0218439102172852 0.0200000000000031 0.0200000000000031 0.0 174 -175 0.0223178863525391 0.019999999999996 0.019999999999996 0.0 175 -176 0.0216579437255859 0.0200000000000031 0.0200000000000031 0.0 176 -177 0.0791630744934082 0.0799999999999983 0.0799999999999983 0.0 177 -178 0.0234289169311523 0.0300000000000011 0.0300000000000011 0.0 178 -179 0.0239951610565186 0.019999999999996 0.019999999999996 0.0 179 -180 0.0231759548187256 0.0200000000000031 0.0200000000000031 0.0 180 -181 0.0228521823883057 0.0300000000000011 0.0300000000000011 0.0 181 -182 0.0234448909759521 0.019999999999996 0.019999999999996 0.0 182 -183 0.0231420993804932 0.0200000000000031 0.0200000000000031 0.0 183 -184 0.0229649543762207 0.0300000000000011 0.0300000000000011 0.0 184 -185 0.0216999053955078 0.019999999999996 0.019999999999996 0.0 185 -186 0.0214908123016357 0.0200000000000031 0.0200000000000031 0.0 186 -187 0.0216050148010254 0.019999999999996 0.019999999999996 0.0 187 -188 0.0253100395202637 0.0200000000000031 0.0200000000000031 0.0 188 -189 0.0231828689575195 0.0300000000000011 0.0300000000000011 0.0 189 -190 0.021651029586792 0.019999999999996 0.019999999999996 0.0 190 -191 0.0281798839569092 0.0300000000000011 0.0300000000000011 0.0 191 -192 0.0221288204193115 0.0200000000000031 0.0200000000000031 0.0 192 -193 0.0217571258544922 0.019999999999996 0.019999999999996 0.0 193 -194 0.0757858753204346 0.0800000000000054 0.0800000000000054 0.0 194 -195 0.0231471061706543 0.019999999999996 0.019999999999996 0.0 195 -196 0.0251290798187256 0.0300000000000011 0.0300000000000011 0.0 196 -197 0.0239238739013672 0.0200000000000031 0.0200000000000031 0.0 197 -198 0.0237748622894287 0.019999999999996 0.019999999999996 0.0 198 -199 0.0228419303894043 0.0300000000000011 0.0300000000000011 0.0 199 -200 0.0227909088134766 0.0200000000000031 0.0200000000000031 0.0 200 -201 0.0227510929107666 0.019999999999996 0.019999999999996 0.0 201 -202 0.0226459503173828 0.0200000000000031 0.0200000000000031 0.0 202 -203 0.0219879150390625 0.0300000000000011 0.0300000000000011 0.0 203 -204 0.0215039253234863 0.019999999999996 0.019999999999996 0.0 204 -205 0.021712064743042 0.0200000000000031 0.0200000000000031 0.0 205 -206 0.0217649936676025 0.019999999999996 0.019999999999996 0.0 206 -207 0.0244510173797607 0.0300000000000011 0.0300000000000011 0.0 207 -208 0.0221529006958008 0.0200000000000031 0.0200000000000031 0.0 208 -209 0.0231170654296875 0.019999999999996 0.019999999999996 0.0 209 -210 0.0216870307922363 0.0200000000000031 0.0200000000000031 0.0 210 -211 0.0216608047485352 0.019999999999996 0.019999999999996 0.0 211 -212 0.0771470069885254 0.0800000000000054 0.0800000000000054 0.0 212 -213 0.0229711532592773 0.019999999999996 0.019999999999996 0.0 213 -214 0.0230278968811035 0.0300000000000011 0.0300000000000011 0.0 214 -215 0.0230338573455811 0.019999999999996 0.019999999999996 0.0 215 -216 0.0260100364685059 0.0300000000000011 0.0300000000000011 0.0 216 -217 0.0238170623779297 0.0200000000000031 0.0200000000000031 0.0 217 -218 0.0228071212768555 0.019999999999996 0.019999999999996 0.0 218 -219 0.0227000713348389 0.0300000000000011 0.0300000000000011 0.0 219 -220 0.0220599174499512 0.0200000000000031 0.0200000000000031 0.0 220 -221 0.0216770172119141 0.019999999999996 0.019999999999996 0.0 221 -222 0.0224151611328125 0.0200000000000031 0.0200000000000031 0.0 222 -223 0.0217008590698242 0.0200000000000031 0.0200000000000031 0.0 223 -224 0.0216941833496094 0.029999999999994 0.029999999999994 0.0 224 -225 0.0216820240020752 0.0200000000000031 0.0200000000000031 0.0 225 -226 0.0217270851135254 0.019999999999996 0.019999999999996 0.0 226 -227 0.0246779918670654 0.0200000000000031 0.0200000000000031 0.0 227 -228 0.0233469009399414 0.0300000000000011 0.0300000000000011 0.0 228 -229 0.0217921733856201 0.019999999999996 0.019999999999996 0.0 229 -230 0.0832829475402832 0.0800000000000054 0.0800000000000054 0.0 230 -231 0.02298903465271 0.019999999999996 0.019999999999996 0.0 231 -232 0.0229618549346924 0.0300000000000011 0.0300000000000011 0.0 232 -233 0.0230050086975098 0.0200000000000031 0.0200000000000031 0.0 233 -234 0.022770881652832 0.019999999999996 0.019999999999996 0.0 234 -235 0.0257570743560791 0.0300000000000011 0.0300000000000011 0.0 235 -236 0.0234668254852295 0.0200000000000031 0.0200000000000031 0.0 236 -237 0.0224740505218506 0.029999999999994 0.029999999999994 0.0 237 -238 0.0215451717376709 0.0200000000000031 0.0200000000000031 0.0 238 -239 0.0215630531311035 0.0200000000000031 0.0200000000000031 0.0 239 -240 0.0216259956359863 0.019999999999996 0.019999999999996 0.0 240 -241 0.0215809345245361 0.0200000000000031 0.0200000000000031 0.0 241 -242 0.0216450691223145 0.019999999999996 0.019999999999996 0.0 242 -243 0.0215449333190918 0.0300000000000011 0.0300000000000011 0.0 243 -244 0.0216479301452637 0.0200000000000031 0.0200000000000031 0.0 244 -245 0.0218291282653809 0.019999999999996 0.019999999999996 0.0 245 -246 0.0227890014648438 0.0200000000000031 0.0200000000000031 0.0 246 -247 0.0793211460113525 0.0799999999999983 0.0799999999999983 0.0 247 -248 0.0230979919433594 0.0200000000000031 0.0200000000000031 0.0 248 -249 0.0230920314788818 0.029999999999994 0.029999999999994 0.0 249 -250 0.0235588550567627 0.0200000000000031 0.0200000000000031 0.0 250 -251 0.0228121280670166 0.0200000000000031 0.0200000000000031 0.0 251 -252 0.0227479934692383 0.029999999999994 0.029999999999994 0.0 252 -253 0.0227429866790771 0.0200000000000031 0.0200000000000031 0.0 253 -254 0.0227539539337158 0.019999999999996 0.019999999999996 0.0 254 -255 0.0255939960479736 0.0300000000000011 0.0300000000000011 0.0 255 -256 0.0225818157196045 0.0200000000000031 0.0200000000000031 0.0 256 -257 0.0216748714447021 0.019999999999996 0.019999999999996 0.0 257 -258 0.0216860771179199 0.0200000000000031 0.0200000000000031 0.0 258 -259 0.0217640399932861 0.0300000000000011 0.0300000000000011 0.0 259 -260 0.0218229293823242 0.019999999999996 0.019999999999996 0.0 260 -261 0.0217108726501465 0.0200000000000031 0.0200000000000031 0.0 261 -262 0.0230560302734375 0.0200000000000031 0.0200000000000031 0.0 262 -263 0.0218439102172852 0.019999999999996 0.019999999999996 0.0 263 -264 0.0216600894927979 0.0200000000000031 0.0200000000000031 0.0 264 -265 0.0821051597595215 0.0899999999999963 0.0899999999999963 0.0 265 -266 0.0255589485168457 0.0200000000000031 0.0200000000000031 0.0 266 -267 0.0274901390075684 0.0300000000000011 0.0300000000000011 0.0 267 -268 0.0230200290679932 0.019999999999996 0.019999999999996 0.0 268 -269 0.0227861404418945 0.0200000000000031 0.0200000000000031 0.0 269 -270 0.0227971076965332 0.0300000000000011 0.0300000000000011 0.0 270 -271 0.0227358341217041 0.019999999999996 0.019999999999996 0.0 271 -272 0.0242559909820557 0.0200000000000031 0.0200000000000031 0.0 272 -273 0.0217318534851074 0.029999999999994 0.029999999999994 0.0 273 -274 0.0250978469848633 0.0200000000000031 0.0200000000000031 0.0 274 -275 0.0236959457397461 0.0200000000000031 0.0200000000000031 0.0 275 -276 0.0217390060424805 0.029999999999994 0.029999999999994 0.0 276 -277 0.0216028690338135 0.0200000000000031 0.0200000000000031 0.0 277 -278 0.0216250419616699 0.0200000000000031 0.0200000000000031 0.0 278 -279 0.0216012001037598 0.019999999999996 0.019999999999996 0.0 279 -280 0.0216450691223145 0.0200000000000031 0.0200000000000031 0.0 280 -281 0.0217640399932861 0.019999999999996 0.019999999999996 0.0 281 -282 0.076016902923584 0.0799999999999983 0.0799999999999983 0.0 282 -283 0.0259561538696289 0.0300000000000011 0.0300000000000011 0.0 283 -284 0.024043083190918 0.0200000000000031 0.0200000000000031 0.0 284 -285 0.0230240821838379 0.019999999999996 0.019999999999996 0.0 285 -286 0.0229220390319824 0.0300000000000011 0.0300000000000011 0.0 286 -287 0.0229079723358154 0.0200000000000031 0.0200000000000031 0.0 287 -288 0.0228331089019775 0.019999999999996 0.019999999999996 0.0 288 -289 0.0232009887695312 0.0300000000000011 0.0300000000000011 0.0 289 -290 0.0225679874420166 0.0200000000000031 0.0200000000000031 0.0 290 -291 0.021859884262085 0.019999999999996 0.019999999999996 0.0 291 -292 0.0215480327606201 0.0200000000000031 0.0200000000000031 0.0 292 -293 0.0216219425201416 0.019999999999996 0.019999999999996 0.0 293 -294 0.0247988700866699 0.0300000000000011 0.0300000000000011 0.0 294 -295 0.0220661163330078 0.0200000000000031 0.0200000000000031 0.0 295 -296 0.0218551158905029 0.019999999999996 0.019999999999996 0.0 296 -297 0.0216910839080811 0.0200000000000031 0.0200000000000031 0.0 297 -298 0.0218009948730469 0.0300000000000011 0.0300000000000011 0.0 298 -299 0.0217809677124023 0.019999999999996 0.019999999999996 0.0 299 -300 0.0773510932922363 0.0800000000000054 0.0800000000000054 0.0 300 -301 0.0230739116668701 0.019999999999996 0.019999999999996 0.0 301 -302 0.0251951217651367 0.0200000000000031 0.0200000000000031 0.0 302 -303 0.0236630439758301 0.0300000000000011 0.0300000000000011 0.0 303 -304 0.0231490135192871 0.019999999999996 0.019999999999996 0.0 304 -305 0.029649019241333 0.0300000000000011 0.0300000000000011 0.0 305 -306 0.0232720375061035 0.0200000000000031 0.0200000000000031 0.0 306 -307 0.0227010250091553 0.029999999999994 0.029999999999994 0.0 307 -308 0.0219080448150635 0.0200000000000031 0.0200000000000031 0.0 308 -309 0.0215001106262207 0.0200000000000031 0.0200000000000031 0.0 309 -310 0.0215349197387695 0.019999999999996 0.019999999999996 0.0 310 -311 0.0216870307922363 0.0200000000000031 0.0200000000000031 0.0 311 -312 0.0215351581573486 0.019999999999996 0.019999999999996 0.0 312 -313 0.0247399806976318 0.0300000000000011 0.0300000000000011 0.0 313 -314 0.0232751369476318 0.0200000000000031 0.0200000000000031 0.0 314 -315 0.0219449996948242 0.019999999999996 0.019999999999996 0.0 315 -316 0.0216867923736572 0.0300000000000011 0.0300000000000011 0.0 316 -317 0.0756809711456299 0.0700000000000003 0.0700000000000003 0.0 317 -318 0.0230629444122314 0.0300000000000011 0.0300000000000011 0.0 318 -319 0.0229449272155762 0.019999999999996 0.019999999999996 0.0 319 -320 0.0231809616088867 0.0200000000000031 0.0200000000000031 0.0 320 -321 0.0229148864746094 0.019999999999996 0.019999999999996 0.0 321 -322 0.0256710052490234 0.0300000000000011 0.0300000000000011 0.0 322 -323 0.0237009525299072 0.0200000000000031 0.0200000000000031 0.0 323 -324 0.0227048397064209 0.0300000000000011 0.0300000000000011 0.0 324 -325 0.0226731300354004 0.019999999999996 0.019999999999996 0.0 325 -326 0.0221679210662842 0.0200000000000031 0.0200000000000031 0.0 326 -327 0.0216591358184814 0.019999999999996 0.019999999999996 0.0 327 -328 0.0220868587493896 0.0300000000000011 0.0300000000000011 0.0 328 -329 0.0215578079223633 0.0200000000000031 0.0200000000000031 0.0 329 -330 0.0216000080108643 0.019999999999996 0.019999999999996 0.0 330 -331 0.0216810703277588 0.0200000000000031 0.0200000000000031 0.0 331 -332 0.0217440128326416 0.019999999999996 0.019999999999996 0.0 332 -333 0.024817943572998 0.0300000000000011 0.0300000000000011 0.0 333 -334 0.0228419303894043 0.0200000000000031 0.0200000000000031 0.0 334 -335 0.0767669677734375 0.0799999999999983 0.0799999999999983 0.0 335 -336 0.0229949951171875 0.0200000000000031 0.0200000000000031 0.0 336 -337 0.0237720012664795 0.019999999999996 0.019999999999996 0.0 337 -338 0.0229918956756592 0.0300000000000011 0.0300000000000011 0.0 338 -339 0.0228021144866943 0.0200000000000031 0.0200000000000031 0.0 339 -340 0.0227911472320557 0.019999999999996 0.019999999999996 0.0 340 -341 0.0249691009521484 0.0300000000000011 0.0300000000000011 0.0 341 -342 0.0228381156921387 0.0200000000000031 0.0200000000000031 0.0 342 -343 0.0229289531707764 0.019999999999996 0.019999999999996 0.0 343 -344 0.028364896774292 0.0300000000000011 0.0300000000000011 0.0 344 -345 0.0216519832611084 0.0200000000000031 0.0200000000000031 0.0 345 -346 0.0216679573059082 0.029999999999994 0.029999999999994 0.0 346 -347 0.0215489864349365 0.0200000000000031 0.0200000000000031 0.0 347 -348 0.0216460227966309 0.0200000000000031 0.0200000000000031 0.0 348 -349 0.0217490196228027 0.019999999999996 0.019999999999996 0.0 349 -350 0.0217440128326416 0.0200000000000031 0.0200000000000031 0.0 350 -351 0.0216310024261475 0.019999999999996 0.019999999999996 0.0 351 -352 0.0248680114746094 0.0300000000000011 0.0300000000000011 0.0 352 -353 0.0779280662536621 0.0799999999999983 0.0799999999999983 0.0 353 -354 0.0229990482330322 0.0200000000000031 0.0200000000000031 0.0 354 -355 0.02298903465271 0.019999999999996 0.019999999999996 0.0 355 -356 0.0229768753051758 0.0300000000000011 0.0300000000000011 0.0 356 -357 0.0228021144866943 0.0200000000000031 0.0200000000000031 0.0 357 -358 0.0227739810943604 0.019999999999996 0.019999999999996 0.0 358 -359 0.0229020118713379 0.0200000000000031 0.0200000000000031 0.0 359 -360 0.0220818519592285 0.0300000000000011 0.0300000000000011 0.0 360 -361 0.024421215057373 0.019999999999996 0.019999999999996 0.0 361 -362 0.0219769477844238 0.0200000000000031 0.0200000000000031 0.0 362 -363 0.0216801166534424 0.0300000000000011 0.0300000000000011 0.0 363 -364 0.0218110084533691 0.019999999999996 0.019999999999996 0.0 364 -365 0.0219409465789795 0.0200000000000031 0.0200000000000031 0.0 365 -366 0.0218820571899414 0.019999999999996 0.019999999999996 0.0 366 -367 0.0223009586334229 0.0200000000000031 0.0200000000000031 0.0 367 -368 0.0218269824981689 0.0300000000000011 0.0300000000000011 0.0 368 -369 0.0217530727386475 0.019999999999996 0.019999999999996 0.0 369 -370 0.0778021812438965 0.0700000000000003 0.0700000000000003 0.0 370 -371 0.0233700275421143 0.0300000000000011 0.0300000000000011 0.0 371 -372 0.0233359336853027 0.0200000000000031 0.0200000000000031 0.0 372 -373 0.0229201316833496 0.019999999999996 0.019999999999996 0.0 373 -374 0.0229110717773438 0.0300000000000011 0.0300000000000011 0.0 374 -375 0.0227591991424561 0.0200000000000031 0.0200000000000031 0.0 375 -376 0.023568868637085 0.019999999999996 0.019999999999996 0.0 376 -377 0.022733211517334 0.0300000000000011 0.0300000000000011 0.0 377 -378 0.0221920013427734 0.0200000000000031 0.0200000000000031 0.0 378 -379 0.0215809345245361 0.019999999999996 0.019999999999996 0.0 379 -380 0.0231049060821533 0.0200000000000031 0.0200000000000031 0.0 380 -381 0.0227119922637939 0.0300000000000011 0.0300000000000011 0.0 381 -382 0.0230410099029541 0.019999999999996 0.019999999999996 0.0 382 -383 0.0276191234588623 0.0300000000000011 0.0300000000000011 0.0 383 -384 0.0234389305114746 0.0200000000000031 0.0200000000000031 0.0 384 -385 0.0217380523681641 0.019999999999996 0.019999999999996 0.0 385 -386 0.0216379165649414 0.0200000000000031 0.0200000000000031 0.0 386 -387 0.0217010974884033 0.0300000000000011 0.0300000000000011 0.0 387 -388 0.0771059989929199 0.0699999999999932 0.0699999999999932 0.0 388 -389 0.0259981155395508 0.0300000000000011 0.0300000000000011 0.0 389 -390 0.0245940685272217 0.0200000000000031 0.0200000000000031 0.0 390 -391 0.0229830741882324 0.0300000000000011 0.0300000000000011 0.0 391 -392 0.0227859020233154 0.019999999999996 0.019999999999996 0.0 392 -393 0.0226709842681885 0.0200000000000031 0.0200000000000031 0.0 393 -394 0.0227479934692383 0.0300000000000011 0.0300000000000011 0.0 394 -395 0.0223689079284668 0.019999999999996 0.019999999999996 0.0 395 -396 0.0215182304382324 0.0200000000000031 0.0200000000000031 0.0 396 -397 0.0214920043945312 0.019999999999996 0.019999999999996 0.0 397 -398 0.0217499732971191 0.0200000000000031 0.0200000000000031 0.0 398 -399 0.021583080291748 0.019999999999996 0.019999999999996 0.0 399 -400 0.0245871543884277 0.0300000000000011 0.0300000000000011 0.0 400 -401 0.0234861373901367 0.0200000000000031 0.0200000000000031 0.0 401 -402 0.0216600894927979 0.019999999999996 0.019999999999996 0.0 402 -403 0.0216600894927979 0.0300000000000011 0.0300000000000011 0.0 403 -404 0.021885871887207 0.0200000000000031 0.0200000000000031 0.0 404 -405 0.0772140026092529 0.0799999999999983 0.0799999999999983 0.0 405 -406 0.0230650901794434 0.0200000000000031 0.0200000000000031 0.0 406 -407 0.0229761600494385 0.019999999999996 0.019999999999996 0.0 407 -408 0.0251660346984863 0.0300000000000011 0.0300000000000011 0.0 408 -409 0.0232548713684082 0.0200000000000031 0.0200000000000031 0.0 409 -410 0.0238220691680908 0.019999999999996 0.019999999999996 0.0 410 -411 0.0227861404418945 0.0300000000000011 0.0300000000000011 0.0 411 -412 0.0226359367370605 0.0200000000000031 0.0200000000000031 0.0 412 -413 0.0224370956420898 0.019999999999996 0.019999999999996 0.0 413 -414 0.0216140747070312 0.0200000000000031 0.0200000000000031 0.0 414 -415 0.0223848819732666 0.0300000000000011 0.0300000000000011 0.0 415 -416 0.0215442180633545 0.019999999999996 0.019999999999996 0.0 416 -417 0.0215690135955811 0.0200000000000031 0.0200000000000031 0.0 417 -418 0.0216190814971924 0.019999999999996 0.019999999999996 0.0 418 -419 0.0228719711303711 0.0200000000000031 0.0200000000000031 0.0 419 -420 0.0226399898529053 0.0300000000000011 0.0300000000000011 0.0 420 -421 0.0236082077026367 0.019999999999996 0.019999999999996 0.0 421 -422 0.0264570713043213 0.0300000000000011 0.0300000000000011 0.0 422 -423 0.0789790153503418 0.0799999999999983 0.0799999999999983 0.0 423 -424 0.0229339599609375 0.0200000000000031 0.0200000000000031 0.0 424 -425 0.0229668617248535 0.019999999999996 0.019999999999996 0.0 425 -426 0.02298903465271 0.0200000000000031 0.0200000000000031 0.0 426 -427 0.0229198932647705 0.0300000000000011 0.0300000000000011 0.0 427 -428 0.0257198810577393 0.019999999999996 0.019999999999996 0.0 428 -429 0.0243279933929443 0.0300000000000011 0.0300000000000011 0.0 429 -430 0.022507905960083 0.0200000000000031 0.0200000000000031 0.0 430 -431 0.0216341018676758 0.019999999999996 0.019999999999996 0.0 431 -432 0.0214908123016357 0.0200000000000031 0.0200000000000031 0.0 432 -433 0.0215690135955811 0.0300000000000011 0.0300000000000011 0.0 433 -434 0.0216338634490967 0.019999999999996 0.019999999999996 0.0 434 -435 0.0216329097747803 0.0200000000000031 0.0200000000000031 0.0 435 -436 0.0217580795288086 0.019999999999996 0.019999999999996 0.0 436 -437 0.0218169689178467 0.0200000000000031 0.0200000000000031 0.0 437 -438 0.0216329097747803 0.019999999999996 0.019999999999996 0.0 438 -439 0.0245261192321777 0.0300000000000011 0.0300000000000011 0.0 439 -440 0.0769329071044922 0.0700000000000003 0.0700000000000003 0.0 440 -441 0.0231759548187256 0.0300000000000011 0.0300000000000011 0.0 441 -442 0.0230391025543213 0.0200000000000031 0.0200000000000031 0.0 442 -443 0.0233399868011475 0.019999999999996 0.019999999999996 0.0 443 -444 0.0227611064910889 0.0300000000000011 0.0300000000000011 0.0 444 -445 0.0228729248046875 0.0200000000000031 0.0200000000000031 0.0 445 -446 0.0227501392364502 0.019999999999996 0.019999999999996 0.0 446 -447 0.0253760814666748 0.0300000000000011 0.0300000000000011 0.0 447 -448 0.0228900909423828 0.0200000000000031 0.0200000000000031 0.0 448 -449 0.0227060317993164 0.019999999999996 0.019999999999996 0.0 449 -450 0.0215671062469482 0.0300000000000011 0.0300000000000011 0.0 450 -451 0.0215458869934082 0.0200000000000031 0.0200000000000031 0.0 451 -452 0.0216641426086426 0.019999999999996 0.019999999999996 0.0 452 -453 0.0215919017791748 0.0200000000000031 0.0200000000000031 0.0 453 -454 0.022503137588501 0.019999999999996 0.019999999999996 0.0 454 -455 0.0216779708862305 0.0300000000000011 0.0300000000000011 0.0 455 -456 0.0216538906097412 0.0200000000000031 0.0200000000000031 0.0 456 -457 0.0217761993408203 0.019999999999996 0.019999999999996 0.0 457 -458 0.0798358917236328 0.0799999999999983 0.0799999999999983 0.0 458 -459 0.0303719043731689 0.0300000000000011 0.0300000000000011 0.0 459 -460 0.0229458808898926 0.0200000000000031 0.0200000000000031 0.0 460 -461 0.0229299068450928 0.019999999999996 0.019999999999996 0.0 461 -462 0.0227961540222168 0.019999999999996 0.019999999999996 0.0 462 -463 0.0226409435272217 0.0200000000000031 0.0200000000000031 0.0 463 -464 0.0226771831512451 0.019999999999996 0.019999999999996 0.0 464 -465 0.0224730968475342 0.0300000000000011 0.0300000000000011 0.0 465 -466 0.0218050479888916 0.0200000000000031 0.0200000000000031 0.0 466 -467 0.025601863861084 0.019999999999996 0.019999999999996 0.0 467 -468 0.0238199234008789 0.0300000000000011 0.0300000000000011 0.0 468 -469 0.0232160091400146 0.0200000000000031 0.0200000000000031 0.0 469 -470 0.0216109752655029 0.019999999999996 0.019999999999996 0.0 470 -471 0.0216319561004639 0.0200000000000031 0.0200000000000031 0.0 471 -472 0.0216560363769531 0.019999999999996 0.019999999999996 0.0 472 -473 0.021658182144165 0.0300000000000011 0.0300000000000011 0.0 473 -474 0.0217010974884033 0.0200000000000031 0.0200000000000031 0.0 474 -475 0.0779910087585449 0.0799999999999983 0.0799999999999983 0.0 475 -476 0.0244100093841553 0.0200000000000031 0.0200000000000031 0.0 476 -477 0.026054859161377 0.029999999999994 0.029999999999994 0.0 477 -478 0.022968053817749 0.0200000000000031 0.0200000000000031 0.0 478 -479 0.0229709148406982 0.0200000000000031 0.0200000000000031 0.0 479 -480 0.0229671001434326 0.019999999999996 0.019999999999996 0.0 480 -481 0.0232329368591309 0.0300000000000011 0.0300000000000011 0.0 481 -482 0.0227680206298828 0.0200000000000031 0.0200000000000031 0.0 482 -483 0.0224251747131348 0.019999999999996 0.019999999999996 0.0 483 -484 0.021751880645752 0.0300000000000011 0.0300000000000011 0.0 484 -485 0.0215151309967041 0.019999999999996 0.019999999999996 0.0 485 -486 0.0246729850769043 0.0200000000000031 0.0200000000000031 0.0 486 -487 0.0227639675140381 0.0200000000000031 0.0200000000000031 0.0 487 -488 0.0219759941101074 0.029999999999994 0.029999999999994 0.0 488 -489 0.0217058658599854 0.0200000000000031 0.0200000000000031 0.0 489 -490 0.0216960906982422 0.0200000000000031 0.0200000000000031 0.0 490 -491 0.0218369960784912 0.019999999999996 0.019999999999996 0.0 491 -492 0.0217111110687256 0.0200000000000031 0.0200000000000031 0.0 492 -493 0.078171968460083 0.0799999999999983 0.0799999999999983 0.0 493 -494 0.0229799747467041 0.019999999999996 0.019999999999996 0.0 494 -495 0.0272798538208008 0.0300000000000011 0.0300000000000011 0.0 495 -496 0.0244588851928711 0.0200000000000031 0.0200000000000031 0.0 496 -497 0.028217077255249 0.0300000000000011 0.0300000000000011 0.0 497 -498 0.0241749286651611 0.0300000000000011 0.0300000000000011 0.0 498 -499 0.0227570533752441 0.019999999999996 0.019999999999996 0.0 499 -500 0.022475004196167 0.0200000000000031 0.0200000000000031 0.0 500 -501 0.021665096282959 0.019999999999996 0.019999999999996 0.0 501 -502 0.021481990814209 0.0300000000000011 0.0300000000000011 0.0 502 -503 0.0216250419616699 0.0200000000000031 0.0200000000000031 0.0 503 -504 0.0215671062469482 0.019999999999996 0.019999999999996 0.0 504 -505 0.0225341320037842 0.0200000000000031 0.0200000000000031 0.0 505 -506 0.0243070125579834 0.0300000000000011 0.0300000000000011 0.0 506 -507 0.0236639976501465 0.019999999999996 0.019999999999996 0.0 507 -508 0.021744966506958 0.0200000000000031 0.0200000000000031 0.0 508 -509 0.0216488838195801 0.019999999999996 0.019999999999996 0.0 509 -510 0.0759198665618896 0.0800000000000054 0.0800000000000054 0.0 510 -511 0.0230319499969482 0.019999999999996 0.019999999999996 0.0 511 -512 0.0232639312744141 0.0300000000000011 0.0300000000000011 0.0 512 -513 0.022974967956543 0.019999999999996 0.019999999999996 0.0 513 -514 0.0257279872894287 0.0200000000000031 0.0200000000000031 0.0 514 -515 0.0243010520935059 0.0300000000000011 0.0300000000000011 0.0 515 -516 0.0226881504058838 0.019999999999996 0.019999999999996 0.0 516 -517 0.0226349830627441 0.0200000000000031 0.0200000000000031 0.0 517 -518 0.0224928855895996 0.0300000000000011 0.0300000000000011 0.0 518 -519 0.0218918323516846 0.019999999999996 0.019999999999996 0.0 519 -520 0.0220029354095459 0.0200000000000031 0.0200000000000031 0.0 520 -521 0.0215179920196533 0.0200000000000031 0.0200000000000031 0.0 521 -522 0.0215981006622314 0.019999999999996 0.019999999999996 0.0 522 -523 0.0216679573059082 0.0300000000000011 0.0300000000000011 0.0 523 -524 0.0216460227966309 0.019999999999996 0.019999999999996 0.0 524 -525 0.0247371196746826 0.0200000000000031 0.0200000000000031 0.0 525 -526 0.0231599807739258 0.0300000000000011 0.0300000000000011 0.0 526 -527 0.021859884262085 0.019999999999996 0.019999999999996 0.0 527 -528 0.0768899917602539 0.0700000000000003 0.0700000000000003 0.0 528 -529 0.0238020420074463 0.0300000000000011 0.0300000000000011 0.0 529 -530 0.0229949951171875 0.0200000000000031 0.0200000000000031 0.0 530 -531 0.0229158401489258 0.019999999999996 0.019999999999996 0.0 531 -532 0.0228259563446045 0.0300000000000011 0.0300000000000011 0.0 532 -533 0.0230560302734375 0.0200000000000031 0.0200000000000031 0.0 533 -534 0.0252690315246582 0.0300000000000011 0.0300000000000011 0.0 534 -535 0.0236430168151855 0.019999999999996 0.019999999999996 0.0 535 -536 0.029339075088501 0.0300000000000011 0.0300000000000011 0.0 536 -537 0.0215559005737305 0.0200000000000031 0.0200000000000031 0.0 537 -538 0.0222070217132568 0.019999999999996 0.019999999999996 0.0 538 -539 0.0215811729431152 0.0200000000000031 0.0200000000000031 0.0 539 -540 0.0215599536895752 0.0300000000000011 0.0300000000000011 0.0 540 -541 0.0217399597167969 0.019999999999996 0.019999999999996 0.0 541 -542 0.0217771530151367 0.0200000000000031 0.0200000000000031 0.0 542 -543 0.0216219425201416 0.019999999999996 0.019999999999996 0.0 543 -544 0.0232682228088379 0.0200000000000031 0.0200000000000031 0.0 544 -545 0.0793290138244629 0.0799999999999983 0.0799999999999983 0.0 545 -546 0.0229940414428711 0.0300000000000011 0.0300000000000011 0.0 546 -547 0.022838830947876 0.019999999999996 0.019999999999996 0.0 547 -548 0.0229969024658203 0.0200000000000031 0.0200000000000031 0.0 548 -549 0.0229189395904541 0.0300000000000011 0.0300000000000011 0.0 549 -550 0.0227901935577393 0.019999999999996 0.019999999999996 0.0 550 -551 0.0229239463806152 0.0200000000000031 0.0200000000000031 0.0 551 -552 0.022730827331543 0.019999999999996 0.019999999999996 0.0 552 -553 0.0253369808197021 0.0300000000000011 0.0300000000000011 0.0 553 -554 0.0220980644226074 0.0200000000000031 0.0200000000000031 0.0 554 -555 0.0214731693267822 0.019999999999996 0.019999999999996 0.0 555 -556 0.0215020179748535 0.0300000000000011 0.0300000000000011 0.0 556 -557 0.0217249393463135 0.0200000000000031 0.0200000000000031 0.0 557 -558 0.0217740535736084 0.019999999999996 0.019999999999996 0.0 558 -559 0.022136926651001 0.0200000000000031 0.0200000000000031 0.0 559 -560 0.021636962890625 0.0200000000000031 0.0200000000000031 0.0 560 -561 0.0216689109802246 0.019999999999996 0.019999999999996 0.0 561 -562 0.0218231678009033 0.0300000000000011 0.0300000000000011 0.0 562 -563 0.0795009136199951 0.0799999999999983 0.0799999999999983 0.0 563 -564 0.0232501029968262 0.0200000000000031 0.0200000000000031 0.0 564 -565 0.0230040550231934 0.019999999999996 0.019999999999996 0.0 565 -566 0.0230789184570312 0.0300000000000011 0.0300000000000011 0.0 566 -567 0.0227739810943604 0.0200000000000031 0.0200000000000031 0.0 567 -568 0.0235750675201416 0.019999999999996 0.019999999999996 0.0 568 -569 0.0226988792419434 0.0200000000000031 0.0200000000000031 0.0 569 -570 0.0223028659820557 0.0300000000000011 0.0300000000000011 0.0 570 -571 0.0216829776763916 0.019999999999996 0.019999999999996 0.0 571 -572 0.0214540958404541 0.0200000000000031 0.0200000000000031 0.0 572 -573 0.0238778591156006 0.019999999999996 0.019999999999996 0.0 573 -574 0.0230958461761475 0.0300000000000011 0.0300000000000011 0.0 574 -575 0.0280261039733887 0.0300000000000011 0.0300000000000011 0.0 575 -576 0.0220839977264404 0.0200000000000031 0.0200000000000031 0.0 576 -577 0.0217299461364746 0.019999999999996 0.019999999999996 0.0 577 -578 0.0215981006622314 0.0200000000000031 0.0200000000000031 0.0 578 -579 0.0216739177703857 0.019999999999996 0.019999999999996 0.0 579 -580 0.0760340690612793 0.0799999999999983 0.0799999999999983 0.0 580 -581 0.0261681079864502 0.0200000000000031 0.0200000000000031 0.0 581 -582 0.0245881080627441 0.0300000000000011 0.0300000000000011 0.0 582 -583 0.0231649875640869 0.019999999999996 0.019999999999996 0.0 583 -584 0.0228891372680664 0.0300000000000011 0.0300000000000011 0.0 584 -585 0.0227940082550049 0.0200000000000031 0.0200000000000031 0.0 585 -586 0.0227079391479492 0.019999999999996 0.019999999999996 0.0 586 -587 0.0227351188659668 0.0200000000000031 0.0200000000000031 0.0 587 -588 0.0223979949951172 0.0300000000000011 0.0300000000000011 0.0 588 -589 0.0217239856719971 0.019999999999996 0.019999999999996 0.0 589 -590 0.0216400623321533 0.0200000000000031 0.0200000000000031 0.0 590 -591 0.0222110748291016 0.019999999999996 0.019999999999996 0.0 591 -592 0.0244839191436768 0.0300000000000011 0.0300000000000011 0.0 592 -593 0.0231800079345703 0.0200000000000031 0.0200000000000031 0.0 593 -594 0.0216829776763916 0.019999999999996 0.019999999999996 0.0 594 -595 0.0216670036315918 0.0200000000000031 0.0200000000000031 0.0 595 -596 0.0216989517211914 0.0200000000000031 0.0200000000000031 0.0 596 -597 0.0218870639801025 0.039999999999992 0.029999999999994 0.01 597 -598 0.077578067779541 0.0700000000000003 0.0700000000000003 0.0 598 -599 0.0230538845062256 0.0300000000000011 0.0300000000000011 0.0 599 -600 0.0230109691619873 0.0200000000000031 0.0200000000000031 0.0 600 -601 0.0260770320892334 0.0300000000000011 0.0300000000000011 0.0 601 -602 0.0238099098205566 0.019999999999996 0.019999999999996 0.0 602 -603 0.0228049755096436 0.0200000000000031 0.0200000000000031 0.0 603 -604 0.0226948261260986 0.019999999999996 0.019999999999996 0.0 604 -605 0.0223379135131836 0.0300000000000011 0.0300000000000011 0.0 605 -606 0.0216000080108643 0.0200000000000031 0.0200000000000031 0.0 606 -607 0.0224909782409668 0.019999999999996 0.019999999999996 0.0 607 -608 0.0216529369354248 0.0200000000000031 0.0200000000000031 0.0 608 -609 0.0217139720916748 0.019999999999996 0.019999999999996 0.0 609 -610 0.0218150615692139 0.0300000000000011 0.0300000000000011 0.0 610 -611 0.0217039585113525 0.0200000000000031 0.0200000000000031 0.0 611 -612 0.0246798992156982 0.019999999999996 0.019999999999996 0.0 612 -613 0.0233089923858643 0.0300000000000011 0.0300000000000011 0.0 613 -614 0.0297579765319824 0.0300000000000011 0.0300000000000011 0.0 614 -615 0.0762190818786621 0.0700000000000003 0.0700000000000003 0.0 615 -616 0.0230169296264648 0.0200000000000031 0.0200000000000031 0.0 616 -617 0.0229558944702148 0.029999999999994 0.029999999999994 0.0 617 -618 0.0230798721313477 0.0200000000000031 0.0200000000000031 0.0 618 -619 0.0230178833007812 0.019999999999996 0.019999999999996 0.0 619 -620 0.0257527828216553 0.0300000000000011 0.0300000000000011 0.0 620 -621 0.0235459804534912 0.0200000000000031 0.0200000000000031 0.0 621 -622 0.0228161811828613 0.0300000000000011 0.0300000000000011 0.0 622 -623 0.022197961807251 0.019999999999996 0.019999999999996 0.0 623 -624 0.021589994430542 0.0200000000000031 0.0200000000000031 0.0 624 -625 0.0214920043945312 0.019999999999996 0.019999999999996 0.0 625 -626 0.0215818881988525 0.0200000000000031 0.0200000000000031 0.0 626 -627 0.021651029586792 0.0300000000000011 0.0300000000000011 0.0 627 -628 0.0215868949890137 0.019999999999996 0.019999999999996 0.0 628 -629 0.0218029022216797 0.0200000000000031 0.0200000000000031 0.0 629 -630 0.0216500759124756 0.019999999999996 0.019999999999996 0.0 630 -631 0.0244319438934326 0.0200000000000031 0.0200000000000031 0.0 631 -632 0.0230758190155029 0.0300000000000011 0.0300000000000011 0.0 632 -633 0.077272891998291 0.0799999999999983 0.0799999999999983 0.0 633 -634 0.0236070156097412 0.0200000000000031 0.0200000000000031 0.0 634 -635 0.0229601860046387 0.019999999999996 0.019999999999996 0.0 635 -636 0.0228729248046875 0.0200000000000031 0.0200000000000031 0.0 636 -637 0.0228011608123779 0.0300000000000011 0.0300000000000011 0.0 637 -638 0.0227499008178711 0.019999999999996 0.019999999999996 0.0 638 -639 0.0244989395141602 0.0200000000000031 0.0200000000000031 0.0 639 -640 0.0235378742218018 0.0200000000000031 0.0200000000000031 0.0 640 -641 0.0223779678344727 0.019999999999996 0.019999999999996 0.0 641 -642 0.0215990543365479 0.0200000000000031 0.0200000000000031 0.0 642 -643 0.0215990543365479 0.019999999999996 0.019999999999996 0.0 643 -644 0.0219650268554688 0.0300000000000011 0.0300000000000011 0.0 644 -645 0.0215990543365479 0.0200000000000031 0.0200000000000031 0.0 645 -646 0.0224740505218506 0.019999999999996 0.019999999999996 0.0 646 -647 0.0216758251190186 0.0200000000000031 0.0200000000000031 0.0 647 -648 0.0216619968414307 0.019999999999996 0.019999999999996 0.0 648 -649 0.0221309661865234 0.0300000000000011 0.0300000000000011 0.0 649 -650 0.0787041187286377 0.0700000000000003 0.0700000000000003 0.0 650 -651 0.0299739837646484 0.0300000000000011 0.0300000000000011 0.0 651 -652 0.0230100154876709 0.0200000000000031 0.0200000000000031 0.0 652 -653 0.0230507850646973 0.019999999999996 0.019999999999996 0.0 653 -654 0.0228569507598877 0.0200000000000031 0.0200000000000031 0.0 654 -655 0.0227470397949219 0.0300000000000011 0.0300000000000011 0.0 655 -656 0.0226500034332275 0.019999999999996 0.019999999999996 0.0 656 -657 0.0228099822998047 0.0200000000000031 0.0200000000000031 0.0 657 -658 0.0222539901733398 0.019999999999996 0.019999999999996 0.0 658 -659 0.0245277881622314 0.0300000000000011 0.0300000000000011 0.0 659 -660 0.0224230289459229 0.0200000000000031 0.0200000000000031 0.0 660 -661 0.0216460227966309 0.019999999999996 0.019999999999996 0.0 661 -662 0.0215950012207031 0.0300000000000011 0.0300000000000011 0.0 662 -663 0.0216000080108643 0.0200000000000031 0.0200000000000031 0.0 663 -664 0.0216140747070312 0.019999999999996 0.019999999999996 0.0 664 -665 0.021726131439209 0.0200000000000031 0.0200000000000031 0.0 665 -666 0.0217559337615967 0.0200000000000031 0.0200000000000031 0.0 666 -667 0.0218238830566406 0.019999999999996 0.019999999999996 0.0 667 -668 0.0802149772644043 0.0799999999999983 0.0799999999999983 0.0 668 -669 0.0245440006256104 0.0300000000000011 0.0300000000000011 0.0 669 -670 0.0230040550231934 0.0200000000000031 0.0200000000000031 0.0 670 -671 0.02288818359375 0.019999999999996 0.019999999999996 0.0 671 -672 0.0228390693664551 0.0300000000000011 0.0300000000000011 0.0 672 -673 0.023313045501709 0.0200000000000031 0.0200000000000031 0.0 673 -674 0.0226609706878662 0.019999999999996 0.019999999999996 0.0 674 -675 0.0220029354095459 0.0300000000000011 0.0300000000000011 0.0 675 -676 0.0215702056884766 0.0200000000000031 0.0200000000000031 0.0 676 -677 0.0216479301452637 0.019999999999996 0.019999999999996 0.0 677 -678 0.0215539932250977 0.0200000000000031 0.0200000000000031 0.0 678 -679 0.0247859954833984 0.0300000000000011 0.0300000000000011 0.0 679 -680 0.0219168663024902 0.019999999999996 0.019999999999996 0.0 680 -681 0.0216579437255859 0.0200000000000031 0.0200000000000031 0.0 681 -682 0.0216360092163086 0.019999999999996 0.019999999999996 0.0 682 -683 0.0217740535736084 0.0200000000000031 0.0200000000000031 0.0 683 -684 0.0216720104217529 0.019999999999996 0.019999999999996 0.0 684 -685 0.076854944229126 0.0800000000000054 0.0800000000000054 0.0 685 -686 0.0229959487915039 0.019999999999996 0.019999999999996 0.0 686 -687 0.0258049964904785 0.0300000000000011 0.0300000000000011 0.0 687 -688 0.0232279300689697 0.0200000000000031 0.0200000000000031 0.0 688 -689 0.0251309871673584 0.029999999999994 0.029999999999994 0.0 689 -690 0.0279409885406494 0.0300000000000011 0.0300000000000011 0.0 690 -691 0.0227260589599609 0.0200000000000031 0.0200000000000031 0.0 691 -692 0.0227479934692383 0.019999999999996 0.019999999999996 0.0 692 -693 0.0219731330871582 0.0200000000000031 0.0200000000000031 0.0 693 -694 0.0215420722961426 0.0300000000000011 0.0300000000000011 0.0 694 -695 0.0214939117431641 0.019999999999996 0.019999999999996 0.0 695 -696 0.0216901302337646 0.0200000000000031 0.0200000000000031 0.0 696 -697 0.0216901302337646 0.019999999999996 0.019999999999996 0.0 697 -698 0.0246269702911377 0.0200000000000031 0.0200000000000031 0.0 698 -699 0.0231730937957764 0.0300000000000011 0.0300000000000011 0.0 699 -700 0.021737813949585 0.019999999999996 0.019999999999996 0.0 700 -701 0.0217559337615967 0.0200000000000031 0.0200000000000031 0.0 701 -702 0.0756359100341797 0.0799999999999983 0.0799999999999983 0.0 702 -703 0.0232179164886475 0.0200000000000031 0.0200000000000031 0.0 703 -704 0.0229458808898926 0.019999999999996 0.019999999999996 0.0 704 -705 0.0230169296264648 0.0300000000000011 0.0300000000000011 0.0 705 -706 0.0228660106658936 0.0200000000000031 0.0200000000000031 0.0 706 -707 0.0257608890533447 0.0300000000000011 0.0300000000000011 0.0 707 -708 0.0230529308319092 0.019999999999996 0.019999999999996 0.0 708 -709 0.0226249694824219 0.0200000000000031 0.0200000000000031 0.0 709 -710 0.0225780010223389 0.019999999999996 0.019999999999996 0.0 710 -711 0.0220761299133301 0.0300000000000011 0.0300000000000011 0.0 711 -712 0.0221598148345947 0.0200000000000031 0.0200000000000031 0.0 712 -713 0.0215129852294922 0.019999999999996 0.019999999999996 0.0 713 -714 0.0216219425201416 0.0200000000000031 0.0200000000000031 0.0 714 -715 0.0215890407562256 0.019999999999996 0.019999999999996 0.0 715 -716 0.0216820240020752 0.0200000000000031 0.0200000000000031 0.0 716 -717 0.0216300487518311 0.0300000000000011 0.0300000000000011 0.0 717 -718 0.0247721672058105 0.019999999999996 0.019999999999996 0.0 718 -719 0.0220820903778076 0.0200000000000031 0.0200000000000031 0.0 719 -720 0.0769851207733154 0.0799999999999983 0.0799999999999983 0.0 720 -721 0.0229990482330322 0.0200000000000031 0.0200000000000031 0.0 721 -722 0.024212121963501 0.0300000000000011 0.0300000000000011 0.0 722 -723 0.0229740142822266 0.019999999999996 0.019999999999996 0.0 723 -724 0.0227351188659668 0.0200000000000031 0.0200000000000031 0.0 724 -725 0.0226562023162842 0.029999999999994 0.029999999999994 0.0 725 -726 0.0255320072174072 0.0200000000000031 0.0200000000000031 0.0 726 -727 0.0227208137512207 0.0200000000000031 0.0200000000000031 0.0 727 -728 0.0237081050872803 0.029999999999994 0.029999999999994 0.0 728 -729 0.0268452167510986 0.0200000000000031 0.0200000000000031 0.0 729 -730 0.0218770503997803 0.0300000000000011 0.0300000000000011 0.0 730 -731 0.0217039585113525 0.019999999999996 0.019999999999996 0.0 731 -732 0.0215818881988525 0.0200000000000031 0.0200000000000031 0.0 732 -733 0.0217380523681641 0.0200000000000031 0.0200000000000031 0.0 733 -734 0.0216901302337646 0.019999999999996 0.019999999999996 0.0 734 -735 0.0217649936676025 0.0300000000000011 0.0300000000000011 0.0 735 -736 0.0216591358184814 0.019999999999996 0.019999999999996 0.0 736 -737 0.0809669494628906 0.0800000000000054 0.0800000000000054 0.0 737 -738 0.0230050086975098 0.019999999999996 0.019999999999996 0.0 738 -739 0.0229599475860596 0.0200000000000031 0.0200000000000031 0.0 739 -740 0.0229651927947998 0.0300000000000011 0.0300000000000011 0.0 740 -741 0.0228550434112549 0.019999999999996 0.019999999999996 0.0 741 -742 0.0228068828582764 0.0200000000000031 0.0200000000000031 0.0 742 -743 0.022993803024292 0.0300000000000011 0.0300000000000011 0.0 743 -744 0.0227200984954834 0.019999999999996 0.019999999999996 0.0 744 -745 0.02242112159729 0.0200000000000031 0.0200000000000031 0.0 745 -746 0.0246379375457764 0.0300000000000011 0.0300000000000011 0.0 746 -747 0.0218410491943359 0.019999999999996 0.019999999999996 0.0 747 -748 0.0215339660644531 0.0200000000000031 0.0200000000000031 0.0 748 -749 0.0215659141540527 0.019999999999996 0.019999999999996 0.0 749 -750 0.0216779708862305 0.0200000000000031 0.0200000000000031 0.0 750 -751 0.0216810703277588 0.019999999999996 0.019999999999996 0.0 751 -752 0.0221710205078125 0.0300000000000011 0.0300000000000011 0.0 752 -753 0.0216331481933594 0.0200000000000031 0.0200000000000031 0.0 753 -754 0.0217230319976807 0.019999999999996 0.019999999999996 0.0 754 -755 0.0797798633575439 0.0800000000000054 0.0800000000000054 0.0 755 -756 0.0233240127563477 0.019999999999996 0.019999999999996 0.0 756 -757 0.0232129096984863 0.0300000000000011 0.0300000000000011 0.0 757 -758 0.0233068466186523 0.0200000000000031 0.0200000000000031 0.0 758 -759 0.0228340625762939 0.019999999999996 0.019999999999996 0.0 759 -760 0.0226619243621826 0.0300000000000011 0.0300000000000011 0.0 760 -761 0.0235550403594971 0.0200000000000031 0.0200000000000031 0.0 761 -762 0.0222749710083008 0.019999999999996 0.019999999999996 0.0 762 -763 0.0216190814971924 0.0200000000000031 0.0200000000000031 0.0 763 -764 0.0215640068054199 0.019999999999996 0.019999999999996 0.0 764 -765 0.0237760543823242 0.0300000000000011 0.0300000000000011 0.0 765 -766 0.0217039585113525 0.0200000000000031 0.0200000000000031 0.0 766 -767 0.0219049453735352 0.019999999999996 0.019999999999996 0.0 767 -768 0.0291330814361572 0.0300000000000011 0.0300000000000011 0.0 768 -769 0.0216200351715088 0.0200000000000031 0.0200000000000031 0.0 769 -770 0.0217278003692627 0.019999999999996 0.019999999999996 0.0 770 -771 0.0217189788818359 0.0300000000000011 0.0300000000000011 0.0 771 -772 0.0760140419006348 0.0700000000000003 0.0700000000000003 0.0 772 -773 0.0230591297149658 0.0300000000000011 0.0300000000000011 0.0 773 -774 0.0260210037231445 0.019999999999996 0.019999999999996 0.0 774 -775 0.0247459411621094 0.0300000000000011 0.0300000000000011 0.0 775 -776 0.0229299068450928 0.0200000000000031 0.0200000000000031 0.0 776 -777 0.0227248668670654 0.019999999999996 0.019999999999996 0.0 777 -778 0.022636890411377 0.0300000000000011 0.0300000000000011 0.0 778 -779 0.0227160453796387 0.0200000000000031 0.0200000000000031 0.0 779 -780 0.0222170352935791 0.019999999999996 0.019999999999996 0.0 780 -781 0.0216178894042969 0.0200000000000031 0.0200000000000031 0.0 781 -782 0.0216701030731201 0.019999999999996 0.019999999999996 0.0 782 -783 0.0215609073638916 0.0300000000000011 0.0300000000000011 0.0 783 -784 0.0215671062469482 0.0200000000000031 0.0200000000000031 0.0 784 -785 0.0244979858398438 0.019999999999996 0.019999999999996 0.0 785 -786 0.02254319190979 0.0200000000000031 0.0200000000000031 0.0 786 -787 0.0216531753540039 0.0300000000000011 0.0300000000000011 0.0 787 -788 0.0216619968414307 0.019999999999996 0.019999999999996 0.0 788 -789 0.0218989849090576 0.0200000000000031 0.0200000000000031 0.0 789 -790 0.0775949954986572 0.0799999999999983 0.0799999999999983 0.0 790 -791 0.0229768753051758 0.0200000000000031 0.0200000000000031 0.0 791 -792 0.0230350494384766 0.019999999999996 0.019999999999996 0.0 792 -793 0.0247578620910645 0.0300000000000011 0.0300000000000011 0.0 793 -794 0.0241599082946777 0.0200000000000031 0.0200000000000031 0.0 794 -795 0.0229189395904541 0.029999999999994 0.029999999999994 0.0 795 -796 0.0227510929107666 0.0200000000000031 0.0200000000000031 0.0 796 -797 0.0223112106323242 0.0200000000000031 0.0200000000000031 0.0 797 -798 0.0216238498687744 0.019999999999996 0.019999999999996 0.0 798 -799 0.0216000080108643 0.0200000000000031 0.0200000000000031 0.0 799 -800 0.0226099491119385 0.0300000000000011 0.0300000000000011 0.0 800 -801 0.0218279361724854 0.019999999999996 0.019999999999996 0.0 801 -802 0.0216817855834961 0.0200000000000031 0.0200000000000031 0.0 802 -803 0.0218219757080078 0.019999999999996 0.019999999999996 0.0 803 -804 0.0220489501953125 0.0200000000000031 0.0200000000000031 0.0 804 -805 0.0245721340179443 0.0300000000000011 0.0300000000000011 0.0 805 -806 0.0237100124359131 0.019999999999996 0.019999999999996 0.0 806 -807 0.0831229686737061 0.0900000000000034 0.0900000000000034 0.0 807 -808 0.0229980945587158 0.019999999999996 0.019999999999996 0.0 808 -809 0.0230069160461426 0.0200000000000031 0.0200000000000031 0.0 809 -810 0.0229578018188477 0.019999999999996 0.019999999999996 0.0 810 -811 0.0229570865631104 0.0300000000000011 0.0300000000000011 0.0 811 -812 0.0228419303894043 0.0200000000000031 0.0200000000000031 0.0 812 -813 0.0257079601287842 0.0300000000000011 0.0300000000000011 0.0 813 -814 0.0235209465026855 0.019999999999996 0.019999999999996 0.0 814 -815 0.0221221446990967 0.0200000000000031 0.0200000000000031 0.0 815 -816 0.0214879512786865 0.019999999999996 0.019999999999996 0.0 816 -817 0.0215079784393311 0.0300000000000011 0.0300000000000011 0.0 817 -818 0.0216140747070312 0.0200000000000031 0.0200000000000031 0.0 818 -819 0.0216760635375977 0.019999999999996 0.019999999999996 0.0 819 -820 0.021683931350708 0.0200000000000031 0.0200000000000031 0.0 820 -821 0.0217459201812744 0.019999999999996 0.019999999999996 0.0 821 -822 0.0217831134796143 0.0200000000000031 0.0200000000000031 0.0 822 -823 0.0216968059539795 0.0300000000000011 0.0300000000000011 0.0 823 -824 0.0794470310211182 0.0799999999999983 0.0799999999999983 0.0 824 -825 0.0230400562286377 0.0200000000000031 0.0200000000000031 0.0 825 -826 0.0233430862426758 0.019999999999996 0.019999999999996 0.0 826 -827 0.023482084274292 0.0300000000000011 0.0300000000000011 0.0 827 -828 0.0228879451751709 0.0200000000000031 0.0200000000000031 0.0 828 -829 0.0232207775115967 0.019999999999996 0.019999999999996 0.0 829 -830 0.0228579044342041 0.0200000000000031 0.0200000000000031 0.0 830 -831 0.022691011428833 0.029999999999994 0.029999999999994 0.0 831 -832 0.024960994720459 0.0200000000000031 0.0200000000000031 0.0 832 -833 0.0226261615753174 0.0200000000000031 0.0200000000000031 0.0 833 -834 0.0222339630126953 0.029999999999994 0.029999999999994 0.0 834 -835 0.0216858386993408 0.0200000000000031 0.0200000000000031 0.0 835 -836 0.0216341018676758 0.0200000000000031 0.0200000000000031 0.0 836 -837 0.0216710567474365 0.019999999999996 0.019999999999996 0.0 837 -838 0.0217170715332031 0.0200000000000031 0.0200000000000031 0.0 838 -839 0.0223820209503174 0.0300000000000011 0.0300000000000011 0.0 839 -840 0.0218658447265625 0.019999999999996 0.019999999999996 0.0 840 -841 0.0216851234436035 0.0200000000000031 0.0200000000000031 0.0 841 -842 0.0797119140625 0.0799999999999983 0.0799999999999983 0.0 842 -843 0.0296900272369385 0.0300000000000011 0.0300000000000011 0.0 843 -844 0.023921012878418 0.019999999999996 0.019999999999996 0.0 844 -845 0.0230309963226318 0.0300000000000011 0.0300000000000011 0.0 845 -846 0.0227670669555664 0.0200000000000031 0.0200000000000031 0.0 846 -847 0.0226919651031494 0.019999999999996 0.019999999999996 0.0 847 -848 0.0227150917053223 0.0200000000000031 0.0200000000000031 0.0 848 -849 0.0224990844726562 0.0300000000000011 0.0300000000000011 0.0 849 -850 0.0217578411102295 0.019999999999996 0.019999999999996 0.0 850 -851 0.0215840339660645 0.0200000000000031 0.0200000000000031 0.0 851 -852 0.0246429443359375 0.0300000000000011 0.0300000000000011 0.0 852 -853 0.0232079029083252 0.019999999999996 0.019999999999996 0.0 853 -854 0.0217320919036865 0.0200000000000031 0.0200000000000031 0.0 854 -855 0.0215840339660645 0.019999999999996 0.019999999999996 0.0 855 -856 0.0217161178588867 0.0200000000000031 0.0200000000000031 0.0 856 -857 0.0216400623321533 0.0300000000000011 0.0300000000000011 0.0 857 -858 0.0217981338500977 0.019999999999996 0.019999999999996 0.0 858 -859 0.0765349864959717 0.0700000000000003 0.0700000000000003 0.0 859 -860 0.0244770050048828 0.0300000000000011 0.0300000000000011 0.0 860 -861 0.0246331691741943 0.0200000000000031 0.0200000000000031 0.0 861 -862 0.0232968330383301 0.029999999999994 0.029999999999994 0.0 862 -863 0.0228350162506104 0.0200000000000031 0.0200000000000031 0.0 863 -864 0.0228140354156494 0.0200000000000031 0.0200000000000031 0.0 864 -865 0.0230000019073486 0.029999999999994 0.029999999999994 0.0 865 -866 0.0231919288635254 0.0200000000000031 0.0200000000000031 0.0 866 -867 0.0222370624542236 0.0200000000000031 0.0200000000000031 0.0 867 -868 0.0216059684753418 0.019999999999996 0.019999999999996 0.0 868 -869 0.0215280055999756 0.0200000000000031 0.0200000000000031 0.0 869 -870 0.0218400955200195 0.029999999999994 0.029999999999994 0.0 870 -871 0.0238420963287354 0.0200000000000031 0.0200000000000031 0.0 871 -872 0.0222158432006836 0.0200000000000031 0.0200000000000031 0.0 872 -873 0.0229439735412598 0.029999999999994 0.029999999999994 0.0 873 -874 0.022014856338501 0.0200000000000031 0.0200000000000031 0.0 874 -875 0.0218870639801025 0.0200000000000031 0.0200000000000031 0.0 875 -876 0.0765628814697266 0.0799999999999983 0.0799999999999983 0.0 876 -877 0.0229649543762207 0.019999999999996 0.019999999999996 0.0 877 -878 0.0228400230407715 0.0200000000000031 0.0200000000000031 0.0 878 -879 0.0230231285095215 0.019999999999996 0.019999999999996 0.0 879 -880 0.0252189636230469 0.0300000000000011 0.0300000000000011 0.0 880 -881 0.0232028961181641 0.0200000000000031 0.0200000000000031 0.0 881 -882 0.0295140743255615 0.0300000000000011 0.0300000000000011 0.0 882 -883 0.0227620601654053 0.0300000000000011 0.0300000000000011 0.0 883 -884 0.0229089260101318 0.019999999999996 0.019999999999996 0.0 884 -885 0.0219950675964355 0.0200000000000031 0.0200000000000031 0.0 885 -886 0.021589994430542 0.019999999999996 0.019999999999996 0.0 886 -887 0.0214979648590088 0.0200000000000031 0.0200000000000031 0.0 887 -888 0.0215859413146973 0.0300000000000011 0.0300000000000011 0.0 888 -889 0.0217750072479248 0.019999999999996 0.019999999999996 0.0 889 -890 0.021744966506958 0.0200000000000031 0.0200000000000031 0.0 890 -891 0.025892972946167 0.019999999999996 0.019999999999996 0.0 891 -892 0.0236170291900635 0.0300000000000011 0.0300000000000011 0.0 892 -893 0.0218141078948975 0.0200000000000031 0.0200000000000031 0.0 893 -894 0.0771820545196533 0.0799999999999983 0.0799999999999983 0.0 894 -895 0.0230357646942139 0.0200000000000031 0.0200000000000031 0.0 895 -896 0.0231060981750488 0.019999999999996 0.019999999999996 0.0 896 -897 0.023137092590332 0.0300000000000011 0.0300000000000011 0.0 897 -898 0.022799015045166 0.019999999999996 0.019999999999996 0.0 898 -899 0.0256779193878174 0.0200000000000031 0.0200000000000031 0.0 899 -900 0.0231838226318359 0.0300000000000011 0.0300000000000011 0.0 900 -901 0.0232141017913818 0.019999999999996 0.019999999999996 0.0 901 -902 0.0217940807342529 0.0200000000000031 0.0200000000000031 0.0 902 -903 0.0214989185333252 0.0200000000000031 0.0200000000000031 0.0 903 -904 0.0218000411987305 0.029999999999994 0.029999999999994 0.0 904 -905 0.0220961570739746 0.0200000000000031 0.0200000000000031 0.0 905 -906 0.0215680599212646 0.0200000000000031 0.0200000000000031 0.0 906 -907 0.0216329097747803 0.019999999999996 0.019999999999996 0.0 907 -908 0.0217070579528809 0.0200000000000031 0.0200000000000031 0.0 908 -909 0.0216760635375977 0.019999999999996 0.019999999999996 0.0 909 -910 0.0236759185791016 0.0300000000000011 0.0300000000000011 0.0 910 -911 0.0770270824432373 0.0799999999999983 0.0799999999999983 0.0 911 -912 0.0231328010559082 0.0200000000000031 0.0200000000000031 0.0 912 -913 0.0229079723358154 0.019999999999996 0.019999999999996 0.0 913 -914 0.0230019092559814 0.0200000000000031 0.0200000000000031 0.0 914 -915 0.0252349376678467 0.0300000000000011 0.0300000000000011 0.0 915 -916 0.0227150917053223 0.019999999999996 0.019999999999996 0.0 916 -917 0.0228018760681152 0.0200000000000031 0.0200000000000031 0.0 917 -918 0.0226809978485107 0.0300000000000011 0.0300000000000011 0.0 918 -919 0.0252270698547363 0.019999999999996 0.019999999999996 0.0 919 -920 0.0231540203094482 0.0300000000000011 0.0300000000000011 0.0 920 -921 0.0289709568023682 0.0200000000000031 0.0200000000000031 0.0 921 -922 0.0215799808502197 0.0300000000000011 0.0300000000000011 0.0 922 -923 0.0319468975067139 0.0300000000000011 0.019999999999996 0.01 923 -924 0.0216109752655029 0.0200000000000031 0.0200000000000031 0.0 924 -925 0.0217740535736084 0.019999999999996 0.019999999999996 0.0 925 -926 0.0216958522796631 0.0200000000000031 0.0200000000000031 0.0 926 -927 0.0216629505157471 0.019999999999996 0.019999999999996 0.0 927 -928 0.0217578411102295 0.0300000000000011 0.0300000000000011 0.0 928 -929 0.0820608139038086 0.0799999999999983 0.0799999999999983 0.0 929 -930 0.0229201316833496 0.0200000000000031 0.0200000000000031 0.0 930 -931 0.0229270458221436 0.0200000000000031 0.0200000000000031 0.0 931 -932 0.0229320526123047 0.029999999999994 0.029999999999994 0.0 932 -933 0.0227558612823486 0.0200000000000031 0.0200000000000031 0.0 933 -934 0.0226609706878662 0.0200000000000031 0.0200000000000031 0.0 934 -935 0.0229549407958984 0.019999999999996 0.019999999999996 0.0 935 -936 0.0221340656280518 0.0300000000000011 0.0300000000000011 0.0 936 -937 0.0215301513671875 0.019999999999996 0.019999999999996 0.0 937 -938 0.0243568420410156 0.0200000000000031 0.0200000000000031 0.0 938 -939 0.021946907043457 0.0300000000000011 0.0300000000000011 0.0 939 -940 0.021575927734375 0.019999999999996 0.019999999999996 0.0 940 -941 0.0216639041900635 0.0200000000000031 0.0200000000000031 0.0 941 -942 0.0217418670654297 0.0200000000000031 0.0200000000000031 0.0 942 -943 0.0222411155700684 0.019999999999996 0.019999999999996 0.0 943 -944 0.0216610431671143 0.0200000000000031 0.0200000000000031 0.0 944 -945 0.0216820240020752 0.019999999999996 0.019999999999996 0.0 945 -946 0.0792751312255859 0.0699999999999932 0.0699999999999932 0.0 946 -947 0.0251059532165527 0.0300000000000011 0.0300000000000011 0.0 947 -948 0.0247578620910645 0.0200000000000031 0.0200000000000031 0.0 948 -949 0.0229980945587158 0.0300000000000011 0.0300000000000011 0.0 949 -950 0.0229229927062988 0.019999999999996 0.019999999999996 0.0 950 -951 0.0227029323577881 0.0200000000000031 0.0200000000000031 0.0 951 -952 0.0226871967315674 0.019999999999996 0.019999999999996 0.0 952 -953 0.0235540866851807 0.0300000000000011 0.0300000000000011 0.0 953 -954 0.0219640731811523 0.0200000000000031 0.0200000000000031 0.0 954 -955 0.0214629173278809 0.019999999999996 0.019999999999996 0.0 955 -956 0.021557092666626 0.0200000000000031 0.0200000000000031 0.0 956 -957 0.02388596534729 0.0300000000000011 0.0300000000000011 0.0 957 -958 0.0222799777984619 0.019999999999996 0.019999999999996 0.0 958 -959 0.0276319980621338 0.0300000000000011 0.0300000000000011 0.0 959 -960 0.0242338180541992 0.0200000000000031 0.0200000000000031 0.0 960 -961 0.0216600894927979 0.019999999999996 0.019999999999996 0.0 961 -962 0.0217490196228027 0.0200000000000031 0.0200000000000031 0.0 962 -963 0.0757958889007568 0.0799999999999983 0.0799999999999983 0.0 963 -964 0.0231211185455322 0.0200000000000031 0.0200000000000031 0.0 964 -965 0.023090124130249 0.029999999999994 0.029999999999994 0.0 965 -966 0.02652907371521 0.0200000000000031 0.0200000000000031 0.0 966 -967 0.024601936340332 0.0300000000000011 0.0300000000000011 0.0 967 -968 0.0228731632232666 0.019999999999996 0.019999999999996 0.0 968 -969 0.0227208137512207 0.0200000000000031 0.0200000000000031 0.0 969 -970 0.0226399898529053 0.0300000000000011 0.0300000000000011 0.0 970 -971 0.0225419998168945 0.019999999999996 0.019999999999996 0.0 971 -972 0.0218651294708252 0.0200000000000031 0.0200000000000031 0.0 972 -973 0.0215599536895752 0.0200000000000031 0.0200000000000031 0.0 973 -974 0.0218329429626465 0.019999999999996 0.019999999999996 0.0 974 -975 0.0215480327606201 0.0300000000000011 0.0300000000000011 0.0 975 -976 0.0220801830291748 0.019999999999996 0.019999999999996 0.0 976 -977 0.0245459079742432 0.0200000000000031 0.0200000000000031 0.0 977 -978 0.0230350494384766 0.0300000000000011 0.0300000000000011 0.0 978 -979 0.0217211246490479 0.019999999999996 0.019999999999996 0.0 979 -980 0.0217759609222412 0.0200000000000031 0.0200000000000031 0.0 980 -981 0.0778119564056396 0.0799999999999983 0.0799999999999983 0.0 981 -982 0.0229709148406982 0.0200000000000031 0.0200000000000031 0.0 982 -983 0.023047924041748 0.019999999999996 0.019999999999996 0.0 983 -984 0.0228879451751709 0.0300000000000011 0.0300000000000011 0.0 984 -985 0.0263099670410156 0.0200000000000031 0.0200000000000031 0.0 985 -986 0.0241529941558838 0.0300000000000011 0.0300000000000011 0.0 986 -987 0.0228710174560547 0.019999999999996 0.019999999999996 0.0 987 -988 0.0223538875579834 0.0200000000000031 0.0200000000000031 0.0 988 -989 0.0217280387878418 0.019999999999996 0.019999999999996 0.0 989 -990 0.0214800834655762 0.0300000000000011 0.0300000000000011 0.0 990 -991 0.0215470790863037 0.0200000000000031 0.0200000000000031 0.0 991 -992 0.0224719047546387 0.019999999999996 0.019999999999996 0.0 992 -993 0.0216379165649414 0.0200000000000031 0.0200000000000031 0.0 993 -994 0.0215561389923096 0.019999999999996 0.019999999999996 0.0 994 -995 0.021676778793335 0.0200000000000031 0.0200000000000031 0.0 995 -996 0.024587869644165 0.0300000000000011 0.0300000000000011 0.0 996 -997 0.0231449604034424 0.019999999999996 0.019999999999996 0.0 997 -998 0.0824549198150635 0.0900000000000034 0.0900000000000034 0.0 998 -999 0.0230429172515869 0.019999999999996 0.019999999999996 0.0 999 -1000 0.0229730606079102 0.0200000000000031 0.0200000000000031 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log deleted file mode 100644 index 72726793..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log +++ /dev/null @@ -1,82 +0,0 @@ -========================== 2009-04-01T16:49:55 CEST =========================== -Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux]. -Running 'GeneratorBenchmarkRails' for 1000 iterations/method (compare_time=real) -=============================================================================== - -This first run is only for warmup. -GeneratorBenchmarkRails#generator: - real total user system -sum 25.871086597 25.820000000 25.780000000 0.040000000 -min 0.021485090 0.020000000 0.020000000 0.000000000 -std- 0.013123732 0.012534515 0.012507179 -0.000591505 -mean 0.025871087 0.025820000 0.025780000 0.000040000 -std+ 0.038618441 0.039105485 0.039052821 0.000671505 -max 0.084933996 0.090000000 0.090000000 0.010000000 -std 0.012747354 0.013285485 0.013272821 0.000631505 -std% 49.272590131 51.454239794 51.484952060 1578.762962731 -harm 0.023654431 0.022959497 0.022933171 nan -geo 0.024373445 0.023988580 0.023955348 0.000000000 -q1 0.021737874 0.020000000 0.020000000 0.000000000 -med 0.022677064 0.020000000 0.020000000 0.000000000 -q3 0.023290575 0.030000000 0.030000000 0.000000000 - 1000 38.65319 0.025871087 - calls calls/sec secs/call - - 0.08176 -|* - 0.07542 -|** - 0.06907 -| - 0.06273 -| - 0.05638 -| - 0.05004 -| - 0.04369 -| - 0.03735 -| - 0.03100 -|* - 0.02466 -|************************************************** - -Outliers detected with box plot algo (median=0.02268, iqr=0.00155, factor=3.00): -high=115 very_high=69 - -Ljung-Box statistics: q=1246.12050 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -GeneratorBenchmarkRails#generator: - real total user system -sum 25.952543497 25.950000000 25.930000000 0.020000000 -min 0.021454096 0.020000000 0.020000000 0.000000000 -std- 0.013029796 0.012272113 0.012258057 -0.000426990 -mean 0.025952543 0.025950000 0.025930000 0.000020000 -std+ 0.038875291 0.039627887 0.039601943 0.000466990 -max 0.083282948 0.090000000 0.090000000 0.010000000 -std 0.012922747 0.013677887 0.013671943 0.000446990 -std% 49.793760083 52.708619269 52.726351240 2234.948544149 -harm 0.023675798 0.022977187 0.022963996 nan -geo 0.024414095 0.024037524 0.024020868 0.000000000 -q1 0.021728516 0.020000000 0.020000000 0.000000000 -med 0.022745013 0.020000000 0.020000000 0.000000000 -q3 0.023253679 0.030000000 0.030000000 0.000000000 - 1000 38.53187 0.025952543 - calls calls/sec secs/call - - 0.08019 -|** - 0.07401 -|* - 0.06783 -| - 0.06164 -| - 0.05546 -| - 0.04928 -| - 0.04309 -| - 0.03691 -| - 0.03073 -|* - 0.02455 -|************************************************** - -Outliers detected with box plot algo (median=0.02275, iqr=0.00153, factor=3.00): -high=106 very_high=75 - -Ljung-Box statistics: q=1270.99317 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -========================== 2009-04-01T16:50:50 CEST =========================== - -Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkRails#generator.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkRails#generator-autocorrelation.dat'. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log deleted file mode 100644 index 7df44451..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log +++ /dev/null @@ -1,34 +0,0 @@ -========================== 2009-04-01T16:49:51 CEST =========================== - -Comparing times (call_time_mean): - 1 ParserBenchmarkExt#parser 900 repeats: - 553.922304770 ( real) -> 21.500x - 0.001805307 - 2 ParserBenchmarkYAML#parser 1000 repeats: - 224.513358139 ( real) -> 8.714x - 0.004454078 - 3 ParserBenchmarkPure#parser 1000 repeats: - 26.755020642 ( real) -> 1.038x - 0.037376163 - 4 ParserBenchmarkRails#parser 1000 repeats: - 25.763381731 ( real) -> 1.000x - 0.038814780 - calls/sec ( time) -> speed covers - secs/call - -Comparing times (call_time_median): - 1 ParserBenchmarkExt#parser 900 repeats: - 800.592479481 ( real) -> 26.936x - 0.001249075 - 2 ParserBenchmarkYAML#parser 1000 repeats: - 271.002390644 ( real) -> 9.118x - 0.003690004 - 3 ParserBenchmarkRails#parser 1000 repeats: - 30.227910865 ( real) -> 1.017x - 0.033082008 - 4 ParserBenchmarkPure#parser 1000 repeats: - 29.722384421 ( real) -> 1.000x - 0.033644676 - calls/sec ( time) -> speed covers - secs/call -=============================================================================== diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat deleted file mode 100644 index 40efc57c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat +++ /dev/null @@ -1,900 +0,0 @@ -#lag autocorrelation -101 1.0 -102 0.00985212418163005 -103 -0.00105742571489969 -104 -0.0200019393620297 -105 -0.00933105977449441 -106 -0.0198053539236752 -107 -0.0179767811553642 -108 -0.0176611423990743 -109 -0.0185222417953087 -110 -0.0205843694390457 -111 -0.01715959553508 -112 -0.0198505157325194 -113 -0.0185062490072185 -114 -0.0196897065923063 -115 -0.021656479097572 -116 -0.0204821887654524 -117 -0.0184415185088398 -118 -0.0211615011085338 -119 -0.0216761971444828 -120 -0.0198233495768411 -121 -0.0203604715880323 -122 -0.0198005010000642 -123 -0.0186848341524697 -124 -0.0180302780242917 -125 -0.0183844885059821 -126 -0.0193889269967917 -127 -0.0192676046194778 -128 -0.017137594880939 -129 -0.0170409124066728 -130 -0.0150595759310503 -131 -0.018497243864985 -132 -0.0191312662452333 -133 -0.0194917405622472 -134 -0.0182724916370003 -135 -0.0171018288530395 -136 -0.017693203383731 -137 -0.019233808628409 -138 -0.0204803489133546 -139 -0.0206519814870514 -140 -0.0209197600090546 -141 -0.0201426439148014 -142 -0.0181979335068176 -143 -0.0198192645275531 -144 -0.0202773409268149 -145 -0.0197509641765462 -146 -0.0174542791271672 -147 -0.0185131963029398 -148 -0.0142911622141816 -149 -0.018189949446747 -150 -0.0172775321644038 -151 -0.0172514996638929 -152 -0.0149711216258677 -153 -0.0180209406771167 -154 -0.0187829326095732 -155 -0.0179420788237305 -156 0.00424372785454928 -157 0.00821554188465932 -158 0.35293400731859 -159 0.366837592246794 -160 0.213298783047283 -161 -0.0157394761915721 -162 -0.00774376349114834 -163 -0.0172186119438013 -164 -0.0162348306988972 -165 -0.0179811217375531 -166 -0.0168325248721867 -167 -0.0177863454159124 -168 -0.0162717222175639 -169 -0.0191117204105146 -170 -0.0177356811020167 -171 -0.0186975490077008 -172 -0.0172583072789483 -173 -0.0189210264178748 -174 -0.0171826733538386 -175 -0.0197467598837419 -176 -0.0197612311894552 -177 -0.0200029809913758 -178 -0.0197615059774931 -179 -0.017571989727297 -180 -0.0173400082784329 -181 -0.0176396221137864 -182 -0.0178007321096628 -183 -0.0171581059408866 -184 -0.0175715243687287 -185 -0.0144018049890081 -186 -0.0137323861679082 -187 -0.0160141550759938 -188 -0.017722831700802 -189 -0.015351426662838 -190 -0.0185698089210776 -191 -0.0175157776409104 -192 -0.0155631516338833 -193 -0.0169248557096909 -194 -0.0172361325951485 -195 -0.0181452103029826 -196 -0.0188512630759419 -197 -0.019287412783149 -198 -0.0189502964327969 -199 -0.0175238114666983 -200 -0.0183952774301715 -201 -0.0186218598819691 -202 -0.018542074990071 -203 -0.0182545379514657 -204 -0.017840994815964 -205 -0.0165268111705284 -206 -0.0170697996989772 -207 -0.0164709961667795 -208 -0.016643508111465 -209 -0.0157568996501781 -210 -0.0168374783887807 -211 -0.0177159477110073 -212 -0.0185524368774668 -213 0.0053422952230943 -214 0.00276128222155045 -215 0.286489934471652 -216 0.0658269400928081 -217 0.262561253228902 -218 0.169103819531699 -219 0.0650049870287007 -220 -0.0133346213868773 -221 -0.0142126752180425 -222 -0.0160968078458446 -223 -0.0167528062012806 -224 -0.0164817511097463 -225 -0.0142119297070018 -226 -0.0184810797176798 -227 -0.0172569541054024 -228 -0.0172066024264211 -229 -0.0169726297147995 -230 -0.0150887497973008 -231 -0.0156277947184747 -232 -0.0180738339464492 -233 -0.0190883324101496 -234 -0.0183422711026111 -235 -0.018362277398652 -236 -0.0181804365041856 -237 -0.0173970084740036 -238 -0.0160781720728349 -239 -0.0175236902049324 -240 -0.0174042718759811 -241 -0.0173938793276598 -242 -0.0147551028769872 -243 -0.0122857581039405 -244 -0.010867924198452 -245 -0.0147424216205904 -246 -0.0161622617779801 -247 -0.0172022551420587 -248 -0.0150808969605776 -249 -0.0151917742587137 -250 -0.0152127703813932 -251 -0.0164007891388044 -252 -0.0158495946074772 -253 -0.0165231819746255 -254 -0.0179743821309601 -255 -0.0168790954979486 -256 -0.0162120097817564 -257 -0.0178739491417351 -258 -0.0173473040628906 -259 -0.017333660413587 -260 -0.0169091470123355 -261 -0.0173480396586057 -262 -0.0162244782824425 -263 -0.0161131334675745 -264 -0.015440149830728 -265 -0.0158807862437797 -266 -0.0152294521155507 -267 -0.0158352218642096 -268 -0.0155828944335708 -269 -0.0154836062421944 -270 0.00558208708467659 -271 0.0114870902959279 -272 0.231287473612096 -273 0.0339554100844083 -274 0.0575163566469858 -275 0.200319219612533 -276 0.130545113965154 -277 0.103208025156172 -278 -0.00828951271991966 -279 -0.011478192463039 -280 -0.0144428867470379 -281 -0.0166239539451988 -282 -0.0140920994032186 -283 -0.0158723288388108 -284 -0.0165069706040961 -285 -0.0161430629749153 -286 -0.0156730553051534 -287 -0.0140404598916659 -288 -0.0133504108974733 -289 -0.0157085445845684 -290 -0.0176124651386038 -291 -0.0171680503827001 -292 -0.0170039830572799 -293 -0.0168887759061973 -294 -0.0169101987732867 -295 -0.0163174932481928 -296 -0.0167303236582728 -297 -0.0164240715366653 -298 -0.0174052740404305 -299 -0.0154895527247017 -300 -0.0136444220312839 -301 -0.0116830781987026 -302 -0.0115068177333964 -303 -0.0122234935117673 -304 -0.0161080245808241 -305 -0.0156513921624129 -306 -0.015465759720129 -307 -0.0155883071657887 -308 -0.014915569597449 -309 -0.0154401977831601 -310 -0.0152328705988631 -311 -0.0150660231818582 -312 -0.0162849647550971 -313 -0.0156909486406831 -314 -0.0157314619149535 -315 -0.0171049069711299 -316 -0.0163207392432989 -317 -0.0162187518728422 -318 -0.0159225278740695 -319 -0.0158753160806369 -320 -0.0175020706698857 -321 -0.0162498852657993 -322 -0.0142911340574672 -323 -0.0134726499133121 -324 -0.0139601338890013 -325 -0.0135761876345162 -326 -0.0137860102565959 -327 0.00758105123652143 -328 0.0138556686845422 -329 0.160536954774616 -330 0.0580898398456171 -331 0.0362943231984366 -332 0.0582894097570709 -333 0.140607199465268 -334 0.122618966464092 -335 0.0544884026670781 -336 0.0574883295508244 -337 -0.0128811621108332 -338 -0.0142051495442353 -339 -0.012596825344306 -340 -0.0144711739317383 -341 -0.0143424560269512 -342 -0.0151482554143398 -343 -0.0152335381293791 -344 -0.0145008541639242 -345 -0.0128863677349906 -346 -0.0135998919997521 -347 -0.0137187354568586 -348 -0.016562150133356 -349 -0.0159327586951356 -350 -0.0157278421724429 -351 -0.0156917921778683 -352 -0.0162525169522264 -353 -0.0151087680645235 -354 -0.0163683946557918 -355 -0.0158321090068333 -356 -0.014187820897252 -357 -0.0135506277381031 -358 -0.0129291218507853 -359 -0.011476061331394 -360 -0.0106220863859184 -361 -0.0136381523747695 -362 -0.0144198007144617 -363 -0.0140646467360062 -364 -0.0146311562003427 -365 -0.0138043111265009 -366 -0.0132336502438289 -367 -0.0137447378009751 -368 -0.0134055994936963 -369 -0.0138096044909662 -370 -0.0148709544542698 -371 -0.0141560548846661 -372 -0.0143189068321436 -373 -0.0154246653827396 -374 -0.0143998490618263 -375 -0.0151239610115372 -376 -0.0145837141470442 -377 -0.0149820141088871 -378 -0.0152660994133885 -379 -0.0150896640677698 -380 -0.0143925874319689 -381 -0.012857919840862 -382 -0.012469852706461 -383 -0.0114191455070416 -384 -0.0117369627541799 -385 0.00901231127194259 -386 0.112581309251641 -387 0.0630586366341156 -388 0.0560506964150278 -389 0.034078031969884 -390 0.0673456104691437 -391 0.0675823686435704 -392 0.125111752483497 -393 0.0574208869213907 -394 0.0547195112212531 -395 -0.0126520762992662 -396 -0.0108416098060863 -397 -0.0130469248384881 -398 -0.0127546014788274 -399 -0.0132792357499854 -400 -0.0146832842515137 -401 -0.0126612510959431 -402 -0.0115800372136954 -403 -0.0113903072278453 -404 -0.0140846407853927 -405 -0.0131520362471166 -406 -0.0151139726926659 -407 -0.014338285447184 -408 -0.0139604129340576 -409 -0.0146086760584088 -410 -0.0147068805852203 -411 -0.0133990381740181 -412 -0.0146858710730989 -413 -0.0130742254367083 -414 -0.0131112804223081 -415 -0.0137104304702131 -416 -0.0127181490916882 -417 -0.0101122805581215 -418 -0.0116311057808783 -419 -0.0116685677717087 -420 -0.0125364818049418 -421 -0.0131681573750755 -422 -0.0136051276108772 -423 -0.0120078720987834 -424 -0.0120742461009416 -425 -0.0122528176238668 -426 -0.0117254366398627 -427 -0.0121713901545344 -428 -0.0134473192309673 -429 -0.0125993249687127 -430 -0.0127679522459455 -431 -0.0139092549620457 -432 -0.012803641341176 -433 -0.0136774030500624 -434 -0.0141830514589281 -435 -0.0128995570395618 -436 -0.0138061906269556 -437 -0.0138485903191603 -438 -0.0134705594226274 -439 -0.0135710367850959 -440 -0.0134802406736088 -441 -0.0114240523633417 -442 0.00941052876968686 -443 0.0430904882987511 -444 0.0610654134717703 -445 0.062319445242902 -446 0.0601232622212667 -447 0.0405754724552619 -448 0.0620931832458557 -449 0.0116088523973264 -450 0.0982633823768887 -451 0.0714603689521745 -452 0.0559398394361076 -453 -0.0101201070889078 -454 -0.00879771513149454 -455 -0.0115272354759577 -456 -0.0116269116840352 -457 -0.0122869101923228 -458 -0.0120188445899197 -459 -0.0118598309936189 -460 -0.0101004693907269 -461 -0.0114030122417514 -462 -0.0122734729370316 -463 -0.0115720712151182 -464 -0.0138183196216235 -465 -0.0127878610331042 -466 -0.0125076360625095 -467 -0.012954528306254 -468 -0.0134636454445403 -469 -0.0119988447482744 -470 -0.0129555835189171 -471 -0.0118492958760378 -472 -0.0118594416726488 -473 -0.0122062699596644 -474 -0.010080021699572 -475 -0.0096177810356361 -476 -0.0103925438270026 -477 -0.00956922010832709 -478 -0.0112412626452718 -479 -0.0121001052660535 -480 -0.011378640220319 -481 -0.0092484956113967 -482 -0.0106941808432033 -483 -0.0110034314038638 -484 -0.0110076000819364 -485 -0.0120066628455925 -486 -0.0120644325940679 -487 -0.0113002732292104 -488 -0.0115088408547228 -489 -0.0124620522688203 -490 -0.011436641831689 -491 -0.0122177151639931 -492 -0.011889848089267 -493 -0.0112514741258071 -494 -0.0123396196285994 -495 -0.0125441398199035 -496 -0.0120423852622065 -497 -0.0117710714915686 -498 -0.0120685728943707 -499 -0.0102415762932917 -500 -0.00952560982747511 -501 0.057365018480452 -502 0.0589533698587152 -503 0.0631840298934377 -504 0.0575949246719766 -505 0.0495075237359153 -506 -0.00276987533523964 -507 0.0566980942764334 -508 0.0446716609032234 -509 0.0800168272027955 -510 0.0590566885918559 -511 -0.00867575003512787 -512 -0.00762446391218853 -513 -0.0110530315739159 -514 -0.0112154987644773 -515 -0.0115595346792594 -516 -0.00980277940001169 -517 -0.00973051262117572 -518 -0.0103794047555936 -519 -0.0112379712859069 -520 -0.0115804163149423 -521 -0.0101848401928812 -522 -0.0124971838157264 -523 -0.0116095875762639 -524 -0.0110264315185272 -525 -0.0117091264505558 -526 -0.0123732885927322 -527 -0.010594137537324 -528 -0.0118959477121367 -529 -0.0104863548938662 -530 -0.0105605260979509 -531 -0.0106933635291854 -532 -0.0108043363381157 -533 -0.00921313629560141 -534 -0.00991616820012903 -535 -0.00958582052168739 -536 -0.00704544580624994 -537 -0.0106691661025772 -538 -0.010420801758334 -539 -0.00875433609811375 -540 -0.00883595894162315 -541 -0.00997102984238341 -542 -0.0102647231793572 -543 -0.0102814553860974 -544 -0.0108603826750419 -545 -0.00986739232072193 -546 -0.0101569632812344 -547 -0.011268829829185 -548 -0.0103314326239715 -549 -0.0108025538636602 -550 -0.0110885402975588 -551 -0.00994108726738058 -552 -0.0109717247548978 -553 -0.0111952027153027 -554 -0.0106777314688714 -555 -0.0105192670440749 -556 -0.0103965890169893 -557 -0.00921877528177769 -558 -0.0105438348503076 -559 0.0565407931203086 -560 0.0607631038776418 -561 0.0631456281304688 -562 0.0643969806813753 -563 0.00250124004424947 -564 0.0238807604805019 -565 0.0611062977177439 -566 0.00597775022828004 -567 0.0460556379694793 -568 0.0815090939407766 -569 -0.00626805713052914 -570 -0.00661349141206074 -571 -0.0103106916231778 -572 -0.00997759927119779 -573 -0.00925417552568336 -574 -0.00793232399214336 -575 -0.00984859802468641 -576 -0.00970943291247622 -577 -0.0102555983171129 -578 -0.0105112448841139 -579 -0.00934462727175849 -580 -0.0109724429920345 -581 -0.0105475816212072 -582 -0.00987869004825123 -583 -0.0108012349540747 -584 -0.0110285881583596 -585 -0.00936923199699531 -586 -0.010677032137483 -587 -0.00926759654250112 -588 -0.00927806685390026 -589 -0.00953198453346766 -590 -0.00985316922914821 -591 -0.00816343304426746 -592 -0.00804247528052676 -593 -0.00716187036218296 -594 -0.00719169352938419 -595 -0.00640320531281439 -596 -0.00933925279879329 -597 -0.00742884578783592 -598 -0.00884147481763569 -599 -0.00946231770499787 -600 -0.00920569741458586 -601 -0.00945237056796019 -602 -0.00981398771732927 -603 -0.00871297697902305 -604 -0.0100303276706874 -605 -0.00898480302286613 -606 -0.00924314281708078 -607 -0.00967182311916309 -608 -0.00990373367569264 -609 -0.00867546650016389 -610 -0.00974271626786161 -611 -0.00993605711012294 -612 -0.00942263108268127 -613 -0.00900896482065972 -614 -0.0091002536867116 -615 -0.0087141619357278 -616 -0.00892632720545352 -617 0.0589814861280723 -618 0.0605513762593439 -619 0.0714950418331747 -620 -0.00270802819557134 -621 0.0492471524740303 -622 0.038730090749927 -623 -0.00470286001171746 -624 0.0805291384934167 -625 -0.0061135815816416 -626 0.0469241708061885 -627 0.0129057834766504 -628 -0.00613654384956245 -629 -0.00879823441679327 -630 -0.00781138453907383 -631 -0.00742325743221473 -632 -0.00823530705565565 -633 -0.0084784951984544 -634 -0.00809365168883783 -635 -0.00953458560320773 -636 -0.00802484455858134 -637 -0.00916422962874895 -638 -0.00901522658367207 -639 -0.00980509257172476 -640 -0.00879042365734647 -641 -0.00895901541679582 -642 -0.00967011172668992 -643 -0.00909032972552398 -644 -0.00839888383893324 -645 -0.00811198094900032 -646 -0.00768107918073061 -647 -0.00816456224653991 -648 -0.0082275430634122 -649 -0.0081977088645516 -650 -0.00539347813540888 -651 -0.00654335448921841 -652 -0.00443308105716727 -653 -0.00570487900007702 -654 -0.0066893756968109 -655 -0.00818867754248517 -656 -0.00757689453770065 -657 -0.00809806707024929 -658 -0.00781954604985851 -659 -0.00817710586907003 -660 -0.00815598808085207 -661 -0.00838471453215144 -662 -0.00761655712958744 -663 -0.00754256056280177 -664 -0.00784016975796052 -665 -0.00809877261256007 -666 -0.00845387142411403 -667 -0.00839255166002082 -668 -0.00750643389123885 -669 -0.00842839786359518 -670 -0.00793771252048078 -671 -0.00821559065464683 -672 -0.00836801649799504 -673 -0.00801406294900344 -674 -0.0068829238602205 -675 0.0587431729672395 -676 0.0679066498016378 -677 0.00138627052356425 -678 0.045430011210707 -679 0.0703642058717147 -680 -0.00785311036081027 -681 0.0393771166371859 -682 -0.0012573720198598 -683 0.0787866974453597 -684 -0.00622669473512034 -685 -0.00636435714406588 -686 -0.00498738462505791 -687 -0.00682069596495773 -688 -0.00626878401038485 -689 -0.00829494420297491 -690 -0.00672112910303483 -691 -0.00742349355313316 -692 -0.00663050740514031 -693 -0.00668402104568857 -694 -0.00765554385447826 -695 -0.00750480426076586 -696 -0.00755677083867405 -697 -0.00878562401331522 -698 -0.00750067365297707 -699 -0.00777302023891454 -700 -0.00817258866736239 -701 -0.00782461564356417 -702 -0.00524788018311442 -703 -0.00639934484202989 -704 -0.00643323873066334 -705 -0.00675310931225713 -706 -0.00662734325519555 -707 -0.00521831889291382 -708 -0.00564541170834083 -709 -0.00456417269308792 -710 -0.00400766521918149 -711 -0.00371044720499201 -712 -0.00477769884156836 -713 -0.00650815478194108 -714 -0.00648004714637358 -715 -0.00676089500421721 -716 -0.00680941068103167 -717 -0.00642611423395982 -718 -0.00702188737616296 -719 -0.00653395389621014 -720 -0.00584494763207698 -721 -0.00698560115812894 -722 -0.00617395252882351 -723 -0.00649589045366301 -724 -0.00697571124768394 -725 -0.00710622766255317 -726 -0.00619879747257016 -727 -0.00665952366507082 -728 -0.00697267381777301 -729 -0.00656067343167249 -730 -0.00686476942480864 -731 -0.00642237619826439 -732 -0.00571464839985842 -733 0.0667446844690344 -734 -0.000602956363836805 -735 0.0435578419252502 -736 0.0671949304076346 -737 0.00272911716837698 -738 0.0617459164425819 -739 -0.00803573888395584 -740 0.0408644996908555 -741 -0.00188635612841879 -742 0.012816656873346 -743 -0.00568767407759494 -744 -0.00636171895252407 -745 -0.00542006518701238 -746 -0.00762131167004239 -747 -0.00660561178711003 -748 -0.00606759153689151 -749 -0.0058887906931096 -750 -0.00489479103900307 -751 -0.00560951874516548 -752 -0.00616879095509287 -753 -0.00635688929093473 -754 -0.00647498478390112 -755 -0.00602500915318228 -756 -0.00733096951475789 -757 -0.00594264381799701 -758 -0.00639292931982792 -759 -0.00572524668506834 -760 -0.00539599866786123 -761 -0.00379529224483641 -762 -0.00508628266806213 -763 -0.00482859601859399 -764 -0.00384270276169917 -765 -0.0048947554317503 -766 -0.0036868713314995 -767 -0.00296664588261117 -768 -0.00394853350358643 -769 -0.00370978621561119 -770 -0.00496135959443785 -771 -0.00483764544982328 -772 -0.00514032926285884 -773 -0.00429422735197048 -774 -0.00533057103732123 -775 -0.00536211175807313 -776 -0.00507354991704586 -777 -0.00523842710609345 -778 -0.00538601193828756 -779 -0.00457245530033061 -780 -0.00555196995586425 -781 -0.00431853553236008 -782 -0.00528202292794999 -783 -0.00548332867892791 -784 -0.0054668106220194 -785 -0.00467211264805423 -786 -0.0056172070705691 -787 -0.0050524268347218 -788 -0.00490507861057278 -789 -0.00533817709181219 -790 -0.00320459126822799 -791 0.000899360051725526 -792 0.0415445575505902 -793 0.0636610531703114 -794 -0.0016809425357539 -795 0.0687212087083107 -796 0.000196803163775908 -797 0.0629583673226595 -798 -0.00692549309097212 -799 -0.00464547193258324 -800 -0.00554999704707722 -801 -0.00548776067864322 -802 -0.00542976281097604 -803 -0.0035044437646846 -804 -0.0055525582475137 -805 -0.00571646473007065 -806 -0.00559650400651719 -807 -0.0038274405540596 -808 -0.0049295061654944 -809 -0.00431367615172496 -810 -0.00488424593891825 -811 -0.00508803026004008 -812 -0.00516376184293035 -813 -0.00533514975859532 -814 -0.00495590288647863 -815 -0.00582914296339316 -816 -0.00363638197988919 -817 -0.00435167714877856 -818 -0.00395852323776287 -819 -0.0040209798766184 -820 -0.00259964040539382 -821 -0.00252589454921766 -822 -0.00402931674090356 -823 -0.00437393888079731 -824 -0.00424357159059594 -825 -0.00410943374121717 -826 -0.00317027800134567 -827 -0.00401422305864503 -828 -0.00362959396117676 -829 -0.00435662189051477 -830 -0.00429725981497675 -831 -0.00437374795310113 -832 -0.00378466430841879 -833 -0.00411294642315096 -834 -0.00378707889918487 -835 -0.00453957661876227 -836 -0.00428380826395531 -837 -0.00440314525366383 -838 -0.0035999051330324 -839 -0.00448715088820831 -840 -0.00394825961839359 -841 -0.00424255651229298 -842 -0.00457239362923998 -843 -0.00454960510129971 -844 -0.00359729823872128 -845 -0.00427987549442926 -846 -0.00383749859614317 -847 -0.00440264075958008 -848 -0.00443053281886172 -849 -0.00462479790588209 -850 0.0635581089210887 -851 -0.00436894515178304 -852 0.0644673368682151 -853 -0.000871046243511147 -854 0.0774867967247699 -855 -0.00520058993039265 -856 -0.00455758197376518 -857 -0.0045515125818426 -858 -0.00326760124250017 -859 -0.00391042035486497 -860 -0.00365931176845998 -861 -0.00406590514483785 -862 -0.0025402582470179 -863 -0.00536731784656349 -864 -0.00383767883865199 -865 -0.00355617763954968 -866 -0.00378000247138692 -867 -0.00392301919821498 -868 -0.00311017256485425 -869 -0.00362676859689902 -870 -0.00388528530404416 -871 -0.00403811507092716 -872 -0.00389341264783238 -873 -0.00250872494912967 -874 -0.00227481761327797 -875 -0.00232996833366221 -876 -0.00304083453398083 -877 -0.00268074555016819 -878 -0.00265096778109124 -879 -0.00262000280831905 -880 -0.00263328713175465 -881 -0.0025831537476473 -882 -0.00285396803049453 -883 -0.00275081518908208 -884 -0.00275786365878849 -885 -0.00270692981149454 -886 -0.00279346701415621 -887 -0.00243358618146588 -888 -0.00292581648863345 -889 -0.00324682684580069 -890 -0.00268405340278505 -891 -0.00298098008752344 -892 -0.0030275487992921 -893 -0.00253465692577619 -894 -0.0030528198225934 -895 -0.00306163668899383 -896 -0.00302971568628192 -897 -0.00312372318456645 -898 -0.00302532654866883 -899 -0.00260699554256586 -900 -0.00314997872940616 -901 -0.00310092374684808 -902 -0.00285287807280204 -903 -0.00322514674479286 -904 -0.00324555248275787 -905 -0.00266343884682981 -906 -0.0033292088604627 -907 -0.00311942534161818 -908 -0.003188028948592 -909 0.063849474353312 -910 -0.00314766360320187 -911 0.0654720703776586 -912 -0.00104922659034679 -913 0.00682464273763961 -914 -0.00303985655616328 -915 -0.00305320941524036 -916 -0.00235000269848827 -917 -0.00159322372169743 -918 -0.00266570495618958 -919 -0.00262099570862898 -920 -0.00331666377238153 -921 -0.000308570913141365 -922 -0.0043164022171378 -923 -0.00371227484203275 -924 -0.00247827724873875 -925 -0.00234032536054011 -926 -0.00253743141649567 -927 -0.00196547166307156 -928 -0.00258072736023124 -929 -0.00262490193099622 -930 -0.00130204665127498 -931 -0.00126358935693649 -932 -0.00125324190600646 -933 -0.00103101472775934 -934 -0.00130963767061068 -935 -0.00170600528719406 -936 -0.00131231544424995 -937 -0.00130240649250473 -938 -0.0011496494054081 -939 -0.00120338315610114 -940 -0.00107955390929202 -941 -0.00136336765253578 -942 -0.00138525137115296 -943 -0.00142000506928781 -944 -0.00137347169208518 -945 -0.00130072987756282 -946 -0.00149282878067872 -947 -0.00147328073275425 -948 -0.00148996134571696 -949 -0.0015346094598941 -950 -0.00155787525175409 -951 -0.0015758298667031 -952 -0.00144258818629267 -953 -0.0016057038498501 -954 -0.00161313789189179 -955 -0.0014926163928444 -956 -0.00167630619540263 -957 -0.00171225333920666 -958 -0.00158417048330168 -959 -0.00172363849918105 -960 -0.00178681745393769 -961 -0.00177326985666539 -962 -0.00177274859905472 -963 -0.00180813461186522 -964 -0.00164734316246358 -965 -0.00179758469878046 -966 -0.00170533834289266 -967 -0.0018391064291266 -968 0.0648568044321966 -969 -0.00181391508277247 -970 -0.00187271774497418 -971 -0.00171843154333231 -972 0.00690748933974905 -973 -0.0020046618702145 -974 -0.00209930430368119 -975 -0.00151158386207428 -976 -0.00215827618636864 -977 -0.00219374577659291 -978 -0.00221636226760568 -979 -0.00228093075519445 -980 -0.00204652728069895 -981 -0.00229765429774947 -982 -0.00230704101453769 -983 -0.00107403973652915 -984 -0.00110441180969535 -985 -0.00113692360921596 -986 -0.00114267728647558 -987 0.000141381944635982 -988 0.00011755670125973 -989 9.44527623139297e-05 -990 7.92340829889737e-05 -991 0.000230018756762113 -992 0.000207110838703588 -993 0.000182764350871147 -994 0.000169272314028801 -995 0.000144905246673696 -996 0.000120096836237343 -997 9.53172448027285e-05 -998 7.0792968638772e-05 -999 4.98796983407663e-05 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat deleted file mode 100644 index 797a3d09..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat +++ /dev/null @@ -1,901 +0,0 @@ -#scatter real total user system repeat -101 0.00124120712280273 0.0 0.0 0.0 101 -102 0.00123310089111328 0.0 0.0 0.0 102 -103 0.0012359619140625 0.0 0.0 0.0 103 -104 0.00124216079711914 0.0 0.0 0.0 104 -105 0.00124096870422363 0.0 0.0 0.0 105 -106 0.00124096870422363 0.00999999999999979 0.00999999999999979 0.0 106 -107 0.00124692916870117 0.0 0.0 0.0 107 -108 0.00122189521789551 0.0 0.0 0.0 108 -109 0.00124287605285645 0.0 0.0 0.0 109 -110 0.00124287605285645 0.0 0.0 0.0 110 -111 0.00124597549438477 0.0 0.0 0.0 111 -112 0.0012519359588623 0.0 0.0 0.0 112 -113 0.00124788284301758 0.0 0.0 0.0 113 -114 0.00124502182006836 0.0100000000000007 0.0100000000000007 0.0 114 -115 0.00124692916870117 0.0 0.0 0.0 115 -116 0.00123810768127441 0.0 0.0 0.0 116 -117 0.00125002861022949 0.0 0.0 0.0 117 -118 0.00125789642333984 0.0 0.0 0.0 118 -119 0.0300710201263428 0.0299999999999994 0.0299999999999994 0.0 119 -120 0.00127291679382324 0.0 0.0 0.0 120 -121 0.00133109092712402 0.0 0.0 0.0 121 -122 0.0012810230255127 0.0100000000000007 0.0100000000000007 0.0 122 -123 0.00127792358398438 0.0 0.0 0.0 123 -124 0.0012671947479248 0.0 0.0 0.0 124 -125 0.00126814842224121 0.0 0.0 0.0 125 -126 0.00125694274902344 0.0 0.0 0.0 126 -127 0.00124883651733398 0.0 0.0 0.0 127 -128 0.00124907493591309 0.0 0.0 0.0 128 -129 0.0012509822845459 0.0 0.0 0.0 129 -130 0.0012509822845459 0.00999999999999979 0.00999999999999979 0.0 130 -131 0.00125312805175781 0.0 0.0 0.0 131 -132 0.00131797790527344 0.0 0.0 0.0 132 -133 0.00125694274902344 0.0 0.0 0.0 133 -134 0.00125288963317871 0.0 0.0 0.0 134 -135 0.0012519359588623 0.0 0.0 0.0 135 -136 0.00124692916870117 0.0 0.0 0.0 136 -137 0.00124692916870117 0.0 0.0 0.0 137 -138 0.00124907493591309 0.00999999999999979 0.00999999999999979 0.0 138 -139 0.0012509822845459 0.0 0.0 0.0 139 -140 0.00125598907470703 0.0 0.0 0.0 140 -141 0.00124287605285645 0.0 0.0 0.0 141 -142 0.00124812126159668 0.0 0.0 0.0 142 -143 0.00124883651733398 0.0 0.0 0.0 143 -144 0.00123500823974609 0.0 0.0 0.0 144 -145 0.00124382972717285 0.00999999999999979 0.00999999999999979 0.0 145 -146 0.00123715400695801 0.0 0.0 0.0 146 -147 0.00134897232055664 0.0 0.0 0.0 147 -148 0.00123906135559082 0.0 0.0 0.0 148 -149 0.00124788284301758 0.0 0.0 0.0 149 -150 0.0012359619140625 0.0 0.0 0.0 150 -151 0.00123476982116699 0.0 0.0 0.0 151 -152 0.00124597549438477 0.0 0.0 0.0 152 -153 0.00124597549438477 0.0100000000000007 0.0100000000000007 0.0 153 -154 0.00123190879821777 0.0 0.0 0.0 154 -155 0.0012509822845459 0.0 0.0 0.0 155 -156 0.00124096870422363 0.0 0.0 0.0 156 -157 0.0012359619140625 0.0 0.0 0.0 157 -158 0.00123906135559082 0.0 0.0 0.0 158 -159 0.00123906135559082 0.0 0.0 0.0 159 -160 0.00123691558837891 0.0 0.0 0.0 160 -161 0.00124001502990723 0.00999999999999979 0.00999999999999979 0.0 161 -162 0.00124597549438477 0.0 0.0 0.0 162 -163 0.00124096870422363 0.0 0.0 0.0 163 -164 0.0012359619140625 0.0 0.0 0.0 164 -165 0.00123500823974609 0.0 0.0 0.0 165 -166 0.00173211097717285 0.0 0.0 0.0 166 -167 0.00125217437744141 0.0 0.0 0.0 167 -168 0.00124406814575195 0.00999999999999979 0.00999999999999979 0.0 168 -169 0.00124096870422363 0.0 0.0 0.0 169 -170 0.00123381614685059 0.0 0.0 0.0 170 -171 0.00124001502990723 0.0 0.0 0.0 171 -172 0.00124001502990723 0.0 0.0 0.0 172 -173 0.00123715400695801 0.0 0.0 0.0 173 -174 0.00123691558837891 0.0 0.0 0.0 174 -175 0.00124692916870117 0.0 0.0 0.0 175 -176 0.00130796432495117 0.00999999999999979 0.00999999999999979 0.0 176 -177 0.00127100944519043 0.0 0.0 0.0 177 -178 0.0301418304443359 0.0300000000000002 0.0300000000000002 0.0 178 -179 0.00127196311950684 0.0 0.0 0.0 179 -180 0.00131416320800781 0.0 0.0 0.0 180 -181 0.00119805335998535 0.0 0.0 0.0 181 -182 0.00128316879272461 0.0 0.0 0.0 182 -183 0.0013129711151123 0.0 0.0 0.0 183 -184 0.00127100944519043 0.0 0.0 0.0 184 -185 0.00141692161560059 0.0 0.0 0.0 185 -186 0.00130701065063477 0.0 0.0 0.0 186 -187 0.00126099586486816 0.0 0.0 0.0 187 -188 0.00125694274902344 0.0 0.0 0.0 188 -189 0.00124502182006836 0.0 0.0 0.0 189 -190 0.00125217437744141 0.0 0.0 0.0 190 -191 0.00124216079711914 0.0 0.0 0.0 191 -192 0.00125408172607422 0.0100000000000007 0.0100000000000007 0.0 192 -193 0.00124502182006836 0.0 0.0 0.0 193 -194 0.00125718116760254 0.0 0.0 0.0 194 -195 0.00125503540039062 0.0 0.0 0.0 195 -196 0.00125598907470703 0.0 0.0 0.0 196 -197 0.00137186050415039 0.0 0.0 0.0 197 -198 0.0011131763458252 0.0 0.0 0.0 198 -199 0.00124788284301758 0.0 0.0 0.0 199 -200 0.00124597549438477 0.00999999999999979 0.00999999999999979 0.0 200 -201 0.00124597549438477 0.0 0.0 0.0 201 -202 0.00132608413696289 0.0 0.0 0.0 202 -203 0.00129795074462891 0.0 0.0 0.0 203 -204 0.00120997428894043 0.0 0.0 0.0 204 -205 0.00124192237854004 0.0 0.0 0.0 205 -206 0.00126290321350098 0.0 0.0 0.0 206 -207 0.00125002861022949 0.00999999999999979 0.00999999999999979 0.0 207 -208 0.00125503540039062 0.0 0.0 0.0 208 -209 0.00124883651733398 0.0 0.0 0.0 209 -210 0.00124192237854004 0.0 0.0 0.0 210 -211 0.00124812126159668 0.0 0.0 0.0 211 -212 0.00125002861022949 0.0 0.0 0.0 212 -213 0.00124287605285645 0.0 0.0 0.0 213 -214 0.00125288963317871 0.0 0.0 0.0 214 -215 0.00125002861022949 0.00999999999999979 0.00999999999999979 0.0 215 -216 0.00124287605285645 0.0 0.0 0.0 216 -217 0.00124001502990723 0.0 0.0 0.0 217 -218 0.00124883651733398 0.0 0.0 0.0 218 -219 0.00124192237854004 0.0 0.0 0.0 219 -220 0.00123405456542969 0.0 0.0 0.0 220 -221 0.00124883651733398 0.0 0.0 0.0 221 -222 0.00123810768127441 0.0 0.0 0.0 222 -223 0.0012359619140625 0.00999999999999979 0.00999999999999979 0.0 223 -224 0.00123405456542969 0.0 0.0 0.0 224 -225 0.00124788284301758 0.0 0.0 0.0 225 -226 0.00148200988769531 0.0 0.0 0.0 226 -227 0.00123882293701172 0.0 0.0 0.0 227 -228 0.00124907493591309 0.0 0.0 0.0 228 -229 0.00124120712280273 0.0 0.0 0.0 229 -230 0.00124096870422363 0.0 0.0 0.0 230 -231 0.00124812126159668 0.0100000000000007 0.0100000000000007 0.0 231 -232 0.00124001502990723 0.0 0.0 0.0 232 -233 0.001251220703125 0.0 0.0 0.0 233 -234 0.00123810768127441 0.0 0.0 0.0 234 -235 0.00125885009765625 0.0 0.0 0.0 235 -236 0.00126409530639648 0.0 0.0 0.0 236 -237 0.0301649570465088 0.0299999999999994 0.0299999999999994 0.0 237 -238 0.00130605697631836 0.0 0.0 0.0 238 -239 0.00129795074462891 0.0100000000000007 0.0100000000000007 0.0 239 -240 0.00127410888671875 0.0 0.0 0.0 240 -241 0.00134420394897461 0.0 0.0 0.0 241 -242 0.00127720832824707 0.0 0.0 0.0 242 -243 0.00126409530639648 0.0 0.0 0.0 243 -244 0.00125288963317871 0.0 0.0 0.0 244 -245 0.00125384330749512 0.0 0.0 0.0 245 -246 0.00124788284301758 0.0 0.0 0.0 246 -247 0.00124287605285645 0.00999999999999979 0.00999999999999979 0.0 247 -248 0.00125813484191895 0.0 0.0 0.0 248 -249 0.00125002861022949 0.0 0.0 0.0 249 -250 0.00124502182006836 0.0 0.0 0.0 250 -251 0.00125694274902344 0.0 0.0 0.0 251 -252 0.00124192237854004 0.0 0.0 0.0 252 -253 0.00128889083862305 0.0 0.0 0.0 253 -254 0.00124883651733398 0.00999999999999979 0.00999999999999979 0.0 254 -255 0.00124907493591309 0.0 0.0 0.0 255 -256 0.00124812126159668 0.0 0.0 0.0 256 -257 0.00125503540039062 0.0 0.0 0.0 257 -258 0.00125789642333984 0.0 0.0 0.0 258 -259 0.00124692916870117 0.0 0.0 0.0 259 -260 0.00124812126159668 0.0 0.0 0.0 260 -261 0.00124192237854004 0.0 0.0 0.0 261 -262 0.00124287605285645 0.00999999999999979 0.00999999999999979 0.0 262 -263 0.00124192237854004 0.0 0.0 0.0 263 -264 0.00123500823974609 0.0 0.0 0.0 264 -265 0.00123715400695801 0.0 0.0 0.0 265 -266 0.0018610954284668 0.0 0.0 0.0 266 -267 0.00128507614135742 0.0 0.0 0.0 267 -268 0.00123906135559082 0.0 0.0 0.0 268 -269 0.00124001502990723 0.0 0.0 0.0 269 -270 0.00124907493591309 0.0 0.0 0.0 270 -271 0.00124716758728027 0.0 0.0 0.0 271 -272 0.00124001502990723 0.0 0.0 0.0 272 -273 0.00125288963317871 0.0 0.0 0.0 273 -274 0.00118589401245117 0.0 0.0 0.0 274 -275 0.00124192237854004 0.0 0.0 0.0 275 -276 0.00123906135559082 0.0 0.0 0.0 276 -277 0.00125002861022949 0.00999999999999979 0.00999999999999979 0.0 277 -278 0.00124597549438477 0.0 0.0 0.0 278 -279 0.00124096870422363 0.0 0.0 0.0 279 -280 0.00124382972717285 0.0 0.0 0.0 280 -281 0.00125694274902344 0.0 0.0 0.0 281 -282 0.00124812126159668 0.0 0.0 0.0 282 -283 0.00124192237854004 0.0 0.0 0.0 283 -284 0.001251220703125 0.0 0.0 0.0 284 -285 0.00128316879272461 0.00999999999999979 0.00999999999999979 0.0 285 -286 0.00124287605285645 0.0 0.0 0.0 286 -287 0.00133800506591797 0.0 0.0 0.0 287 -288 0.00124788284301758 0.0 0.0 0.0 288 -289 0.0012509822845459 0.0 0.0 0.0 289 -290 0.00124883651733398 0.0 0.0 0.0 290 -291 0.00124502182006836 0.0 0.0 0.0 291 -292 0.00124382972717285 0.0 0.0 0.0 292 -293 0.00125908851623535 0.00999999999999979 0.00999999999999979 0.0 293 -294 0.00126791000366211 0.0 0.0 0.0 294 -295 0.0215630531311035 0.0200000000000005 0.0200000000000005 0.0 295 -296 0.00352096557617188 0.0 0.0 0.0 296 -297 0.00220417976379395 0.0 0.0 0.0 297 -298 0.00125384330749512 0.00999999999999979 0.00999999999999979 0.0 298 -299 0.00129985809326172 0.0 0.0 0.0 299 -300 0.00123715400695801 0.0 0.0 0.0 300 -301 0.00124096870422363 0.0 0.0 0.0 301 -302 0.00124001502990723 0.0 0.0 0.0 302 -303 0.00123405456542969 0.0 0.0 0.0 303 -304 0.0012509822845459 0.0 0.0 0.0 304 -305 0.0012509822845459 0.00999999999999979 0.00999999999999979 0.0 305 -306 0.00125288963317871 0.0 0.0 0.0 306 -307 0.00126099586486816 0.0 0.0 0.0 307 -308 0.00124788284301758 0.0 0.0 0.0 308 -309 0.00124907493591309 0.0 0.0 0.0 309 -310 0.00124096870422363 0.0 0.0 0.0 310 -311 0.00125002861022949 0.0 0.0 0.0 311 -312 0.0012519359588623 0.0 0.0 0.0 312 -313 0.00126314163208008 0.0100000000000007 0.0100000000000007 0.0 313 -314 0.00124406814575195 0.0 0.0 0.0 314 -315 0.00125789642333984 0.0 0.0 0.0 315 -316 0.00128793716430664 0.0 0.0 0.0 316 -317 0.0012509822845459 0.0 0.0 0.0 317 -318 0.00156903266906738 0.0 0.0 0.0 318 -319 0.00181221961975098 0.0 0.0 0.0 319 -320 0.0018010139465332 0.00999999999999979 0.00999999999999979 0.0 320 -321 0.00193095207214355 0.0 0.0 0.0 321 -322 0.0014030933380127 0.0 0.0 0.0 322 -323 0.0012519359588623 0.0 0.0 0.0 323 -324 0.00121903419494629 0.0 0.0 0.0 324 -325 0.00120687484741211 0.0 0.0 0.0 325 -326 0.00123000144958496 0.0 0.0 0.0 326 -327 0.00123095512390137 0.00999999999999979 0.00999999999999979 0.0 327 -328 0.00124692916870117 0.0 0.0 0.0 328 -329 0.00127005577087402 0.0 0.0 0.0 329 -330 0.00124716758728027 0.0 0.0 0.0 330 -331 0.00126481056213379 0.0 0.0 0.0 331 -332 0.00125694274902344 0.0 0.0 0.0 332 -333 0.00118613243103027 0.0 0.0 0.0 333 -334 0.00124001502990723 0.0 0.0 0.0 334 -335 0.00124812126159668 0.00999999999999979 0.00999999999999979 0.0 335 -336 0.00126791000366211 0.0 0.0 0.0 336 -337 0.00124692916870117 0.0 0.0 0.0 337 -338 0.00124907493591309 0.0 0.0 0.0 338 -339 0.00126218795776367 0.0 0.0 0.0 339 -340 0.00124406814575195 0.0 0.0 0.0 340 -341 0.0012359619140625 0.0 0.0 0.0 341 -342 0.00125885009765625 0.0100000000000007 0.0100000000000007 0.0 342 -343 0.00131320953369141 0.0 0.0 0.0 343 -344 0.0012519359588623 0.0 0.0 0.0 344 -345 0.00123691558837891 0.0 0.0 0.0 345 -346 0.00125694274902344 0.0 0.0 0.0 346 -347 0.00139403343200684 0.0 0.0 0.0 347 -348 0.00127506256103516 0.0 0.0 0.0 348 -349 0.00130009651184082 0.0 0.0 0.0 349 -350 0.00128412246704102 0.00999999999999979 0.00999999999999979 0.0 350 -351 0.00133395195007324 0.0 0.0 0.0 351 -352 0.00152087211608887 0.0 0.0 0.0 352 -353 0.0015110969543457 0.0 0.0 0.0 353 -354 0.0320370197296143 0.0299999999999994 0.0299999999999994 0.0 354 -355 0.00130319595336914 0.0 0.0 0.0 355 -356 0.0012969970703125 0.0100000000000007 0.0100000000000007 0.0 356 -357 0.00127792358398438 0.0 0.0 0.0 357 -358 0.00127506256103516 0.0 0.0 0.0 358 -359 0.00126791000366211 0.0 0.0 0.0 359 -360 0.00126385688781738 0.0 0.0 0.0 360 -361 0.00125694274902344 0.0 0.0 0.0 361 -362 0.00125002861022949 0.0 0.0 0.0 362 -363 0.00125598907470703 0.0 0.0 0.0 363 -364 0.00125002861022949 0.00999999999999979 0.00999999999999979 0.0 364 -365 0.00124692916870117 0.0 0.0 0.0 365 -366 0.00125503540039062 0.0 0.0 0.0 366 -367 0.00125217437744141 0.0 0.0 0.0 367 -368 0.00124406814575195 0.0 0.0 0.0 368 -369 0.00125789642333984 0.0 0.0 0.0 369 -370 0.0012509822845459 0.0 0.0 0.0 370 -371 0.00124287605285645 0.0 0.0 0.0 371 -372 0.00124812126159668 0.00999999999999979 0.00999999999999979 0.0 372 -373 0.00124692916870117 0.0 0.0 0.0 373 -374 0.0012519359588623 0.0 0.0 0.0 374 -375 0.0012519359588623 0.0 0.0 0.0 375 -376 0.00125503540039062 0.0 0.0 0.0 376 -377 0.00123691558837891 0.0 0.0 0.0 377 -378 0.00123310089111328 0.0 0.0 0.0 378 -379 0.00123190879821777 0.0 0.0 0.0 379 -380 0.00124382972717285 0.00999999999999979 0.00999999999999979 0.0 380 -381 0.00123906135559082 0.0 0.0 0.0 381 -382 0.00124883651733398 0.0 0.0 0.0 382 -383 0.00124192237854004 0.0 0.0 0.0 383 -384 0.0012509822845459 0.0 0.0 0.0 384 -385 0.00124406814575195 0.0 0.0 0.0 385 -386 0.00123405456542969 0.0 0.0 0.0 386 -387 0.00124788284301758 0.0100000000000007 0.0100000000000007 0.0 387 -388 0.00125002861022949 0.0 0.0 0.0 388 -389 0.00123214721679688 0.0 0.0 0.0 389 -390 0.00123810768127441 0.0 0.0 0.0 390 -391 0.00124287605285645 0.0 0.0 0.0 391 -392 0.0012359619140625 0.0 0.0 0.0 392 -393 0.00123405456542969 0.0 0.0 0.0 393 -394 0.00124621391296387 0.0 0.0 0.0 394 -395 0.00124907493591309 0.00999999999999979 0.00999999999999979 0.0 395 -396 0.00124216079711914 0.0 0.0 0.0 396 -397 0.00123190879821777 0.0 0.0 0.0 397 -398 0.00139594078063965 0.0 0.0 0.0 398 -399 0.0022280216217041 0.0 0.0 0.0 399 -400 0.00197100639343262 0.0 0.0 0.0 400 -401 0.00163888931274414 0.00999999999999979 0.00999999999999979 0.0 401 -402 0.00142812728881836 0.0 0.0 0.0 402 -403 0.00138711929321289 0.0 0.0 0.0 403 -404 0.00148701667785645 0.0 0.0 0.0 404 -405 0.00162696838378906 0.0 0.0 0.0 405 -406 0.00157594680786133 0.0 0.0 0.0 406 -407 0.00158596038818359 0.00999999999999979 0.00999999999999979 0.0 407 -408 0.00186491012573242 0.0 0.0 0.0 408 -409 0.0016481876373291 0.0 0.0 0.0 409 -410 0.00135707855224609 0.0 0.0 0.0 410 -411 0.00129485130310059 0.0 0.0 0.0 411 -412 0.0299890041351318 0.0300000000000002 0.0300000000000002 0.0 412 -413 0.00138497352600098 0.0 0.0 0.0 413 -414 0.0013120174407959 0.0 0.0 0.0 414 -415 0.00127696990966797 0.00999999999999979 0.00999999999999979 0.0 415 -416 0.00128507614135742 0.0 0.0 0.0 416 -417 0.00126981735229492 0.0 0.0 0.0 417 -418 0.00126814842224121 0.0 0.0 0.0 418 -419 0.00125718116760254 0.0 0.0 0.0 419 -420 0.00125408172607422 0.0 0.0 0.0 420 -421 0.0012509822845459 0.0 0.0 0.0 421 -422 0.00124716758728027 0.0 0.0 0.0 422 -423 0.00125408172607422 0.0100000000000007 0.0100000000000007 0.0 423 -424 0.001251220703125 0.0 0.0 0.0 424 -425 0.00124812126159668 0.0 0.0 0.0 425 -426 0.00124692916870117 0.0 0.0 0.0 426 -427 0.00124597549438477 0.0 0.0 0.0 427 -428 0.001251220703125 0.0 0.0 0.0 428 -429 0.00124311447143555 0.0 0.0 0.0 429 -430 0.00124812126159668 0.00999999999999979 0.00999999999999979 0.0 430 -431 0.00124311447143555 0.0 0.0 0.0 431 -432 0.00125002861022949 0.0 0.0 0.0 432 -433 0.00125002861022949 0.0 0.0 0.0 433 -434 0.00125002861022949 0.0 0.0 0.0 434 -435 0.00124502182006836 0.0 0.0 0.0 435 -436 0.00124382972717285 0.0 0.0 0.0 436 -437 0.00124812126159668 0.0 0.0 0.0 437 -438 0.00124406814575195 0.00999999999999979 0.00999999999999979 0.0 438 -439 0.00122785568237305 0.0 0.0 0.0 439 -440 0.00123214721679688 0.0 0.0 0.0 440 -441 0.00123691558837891 0.0 0.0 0.0 441 -442 0.00124502182006836 0.0 0.0 0.0 442 -443 0.00123405456542969 0.0 0.0 0.0 443 -444 0.00124311447143555 0.0 0.0 0.0 444 -445 0.00124382972717285 0.0 0.0 0.0 445 -446 0.00123906135559082 0.00999999999999979 0.00999999999999979 0.0 446 -447 0.00124096870422363 0.0 0.0 0.0 447 -448 0.00124311447143555 0.0 0.0 0.0 448 -449 0.00124788284301758 0.0 0.0 0.0 449 -450 0.00123500823974609 0.0 0.0 0.0 450 -451 0.00124096870422363 0.0 0.0 0.0 451 -452 0.00123906135559082 0.0 0.0 0.0 452 -453 0.00123500823974609 0.0 0.0 0.0 453 -454 0.0012359619140625 0.0100000000000007 0.0100000000000007 0.0 454 -455 0.00124192237854004 0.0 0.0 0.0 455 -456 0.00124096870422363 0.0 0.0 0.0 456 -457 0.00123405456542969 0.0 0.0 0.0 457 -458 0.00124311447143555 0.0 0.0 0.0 458 -459 0.00158381462097168 0.0 0.0 0.0 459 -460 0.00182890892028809 0.0 0.0 0.0 460 -461 0.00183510780334473 0.00999999999999979 0.00999999999999979 0.0 461 -462 0.00188088417053223 0.0 0.0 0.0 462 -463 0.00174307823181152 0.0 0.0 0.0 463 -464 0.00124692916870117 0.0 0.0 0.0 464 -465 0.00123906135559082 0.0 0.0 0.0 465 -466 0.00124096870422363 0.0 0.0 0.0 466 -467 0.00124311447143555 0.00999999999999979 0.00999999999999979 0.0 467 -468 0.00125503540039062 0.0 0.0 0.0 468 -469 0.00125908851623535 0.0 0.0 0.0 469 -470 0.0304310321807861 0.0300000000000002 0.0300000000000002 0.0 470 -471 0.00145387649536133 0.0 0.0 0.0 471 -472 0.00129985809326172 0.0 0.0 0.0 472 -473 0.00149822235107422 0.0 0.0 0.0 473 -474 0.0015261173248291 0.0 0.0 0.0 474 -475 0.00127696990966797 0.00999999999999979 0.00999999999999979 0.0 475 -476 0.0012669563293457 0.0 0.0 0.0 476 -477 0.00122594833374023 0.0 0.0 0.0 477 -478 0.00125002861022949 0.0 0.0 0.0 478 -479 0.00124478340148926 0.0 0.0 0.0 479 -480 0.00125694274902344 0.0 0.0 0.0 480 -481 0.001251220703125 0.0 0.0 0.0 481 -482 0.0012509822845459 0.0 0.0 0.0 482 -483 0.0012509822845459 0.00999999999999979 0.00999999999999979 0.0 483 -484 0.00125288963317871 0.0 0.0 0.0 484 -485 0.00125408172607422 0.0 0.0 0.0 485 -486 0.00125718116760254 0.0 0.0 0.0 486 -487 0.00124716758728027 0.0 0.0 0.0 487 -488 0.00117087364196777 0.0 0.0 0.0 488 -489 0.00124812126159668 0.0 0.0 0.0 489 -490 0.00122618675231934 0.00999999999999979 0.00999999999999979 0.0 490 -491 0.00125598907470703 0.0 0.0 0.0 491 -492 0.00124311447143555 0.0 0.0 0.0 492 -493 0.00124192237854004 0.0 0.0 0.0 493 -494 0.00124692916870117 0.0 0.0 0.0 494 -495 0.00123381614685059 0.0 0.0 0.0 495 -496 0.00123691558837891 0.0 0.0 0.0 496 -497 0.00123906135559082 0.0 0.0 0.0 497 -498 0.00125718116760254 0.0100000000000007 0.0100000000000007 0.0 498 -499 0.00124502182006836 0.0 0.0 0.0 499 -500 0.00124788284301758 0.0 0.0 0.0 500 -501 0.00124812126159668 0.0 0.0 0.0 501 -502 0.00124096870422363 0.0 0.0 0.0 502 -503 0.00124287605285645 0.0 0.0 0.0 503 -504 0.00122690200805664 0.0 0.0 0.0 504 -505 0.00124406814575195 0.0 0.0 0.0 505 -506 0.00123786926269531 0.00999999999999979 0.00999999999999979 0.0 506 -507 0.00124001502990723 0.0 0.0 0.0 507 -508 0.0012519359588623 0.0 0.0 0.0 508 -509 0.00124597549438477 0.0 0.0 0.0 509 -510 0.00124311447143555 0.0 0.0 0.0 510 -511 0.00124979019165039 0.0 0.0 0.0 511 -512 0.00124502182006836 0.0 0.0 0.0 512 -513 0.00124001502990723 0.0 0.0 0.0 513 -514 0.00123810768127441 0.00999999999999979 0.00999999999999979 0.0 514 -515 0.00125002861022949 0.0 0.0 0.0 515 -516 0.00124812126159668 0.0 0.0 0.0 516 -517 0.00124311447143555 0.0 0.0 0.0 517 -518 0.00125288963317871 0.0 0.0 0.0 518 -519 0.00124979019165039 0.0 0.0 0.0 519 -520 0.00124192237854004 0.0 0.0 0.0 520 -521 0.00124406814575195 0.0 0.0 0.0 521 -522 0.00125622749328613 0.00999999999999979 0.00999999999999979 0.0 522 -523 0.00124907493591309 0.0 0.0 0.0 523 -524 0.00124692916870117 0.0 0.0 0.0 524 -525 0.00125002861022949 0.0 0.0 0.0 525 -526 0.0012671947479248 0.0 0.0 0.0 526 -527 0.00126910209655762 0.0 0.0 0.0 527 -528 0.0301029682159424 0.0300000000000002 0.0300000000000002 0.0 528 -529 0.00129103660583496 0.0 0.0 0.0 529 -530 0.00132203102111816 0.00999999999999979 0.00999999999999979 0.0 530 -531 0.00127696990966797 0.0 0.0 0.0 531 -532 0.00128507614135742 0.0 0.0 0.0 532 -533 0.00127196311950684 0.0 0.0 0.0 533 -534 0.00127100944519043 0.0 0.0 0.0 534 -535 0.00126886367797852 0.0 0.0 0.0 535 -536 0.00125789642333984 0.0 0.0 0.0 536 -537 0.00124311447143555 0.0 0.0 0.0 537 -538 0.0012509822845459 0.0100000000000007 0.0100000000000007 0.0 538 -539 0.00125908851623535 0.0 0.0 0.0 539 -540 0.00124788284301758 0.0 0.0 0.0 540 -541 0.00125002861022949 0.0 0.0 0.0 541 -542 0.0012671947479248 0.0 0.0 0.0 542 -543 0.00125312805175781 0.0 0.0 0.0 543 -544 0.00125885009765625 0.0 0.0 0.0 544 -545 0.00125503540039062 0.00999999999999979 0.00999999999999979 0.0 545 -546 0.00126099586486816 0.0 0.0 0.0 546 -547 0.00126218795776367 0.0 0.0 0.0 547 -548 0.00124883651733398 0.0 0.0 0.0 548 -549 0.00126099586486816 0.0 0.0 0.0 549 -550 0.00126194953918457 0.0 0.0 0.0 550 -551 0.00119996070861816 0.0 0.0 0.0 551 -552 0.00124883651733398 0.0 0.0 0.0 552 -553 0.00124192237854004 0.00999999999999979 0.00999999999999979 0.0 553 -554 0.00124382972717285 0.0 0.0 0.0 554 -555 0.00124311447143555 0.0 0.0 0.0 555 -556 0.00123500823974609 0.0 0.0 0.0 556 -557 0.0012359619140625 0.0 0.0 0.0 557 -558 0.00123882293701172 0.0 0.0 0.0 558 -559 0.0012519359588623 0.0 0.0 0.0 559 -560 0.00124716758728027 0.0 0.0 0.0 560 -561 0.00124406814575195 0.0 0.0 0.0 561 -562 0.00124812126159668 0.00999999999999979 0.00999999999999979 0.0 562 -563 0.00129103660583496 0.0 0.0 0.0 563 -564 0.00124001502990723 0.0 0.0 0.0 564 -565 0.00124406814575195 0.0 0.0 0.0 565 -566 0.00125789642333984 0.0 0.0 0.0 566 -567 0.00124406814575195 0.0 0.0 0.0 567 -568 0.00123500823974609 0.0 0.0 0.0 568 -569 0.00124311447143555 0.0 0.0 0.0 569 -570 0.00124096870422363 0.0 0.0 0.0 570 -571 0.00124001502990723 0.0 0.0 0.0 571 -572 0.00123786926269531 0.0 0.0 0.0 572 -573 0.00125288963317871 0.0 0.0 0.0 573 -574 0.00124502182006836 0.0 0.0 0.0 574 -575 0.00124192237854004 0.0 0.0 0.0 575 -576 0.00124502182006836 0.0 0.0 0.0 576 -577 0.00125479698181152 0.00999999999999979 0.00999999999999979 0.0 577 -578 0.00124502182006836 0.0 0.0 0.0 578 -579 0.00124502182006836 0.0 0.0 0.0 579 -580 0.00124692916870117 0.0 0.0 0.0 580 -581 0.00123095512390137 0.0 0.0 0.0 581 -582 0.00124287605285645 0.0 0.0 0.0 582 -583 0.00125288963317871 0.0 0.0 0.0 583 -584 0.0012669563293457 0.0 0.0 0.0 584 -585 0.00127005577087402 0.00999999999999979 0.00999999999999979 0.0 585 -586 0.0311369895935059 0.0300000000000002 0.0300000000000002 0.0 586 -587 0.00198984146118164 0.0 0.0 0.0 587 -588 0.00141692161560059 0.0 0.0 0.0 588 -589 0.00131011009216309 0.0 0.0 0.0 589 -590 0.0012810230255127 0.0 0.0 0.0 590 -591 0.00123500823974609 0.0 0.0 0.0 591 -592 0.00117397308349609 0.00999999999999979 0.00999999999999979 0.0 592 -593 0.00125908851623535 0.0 0.0 0.0 593 -594 0.00126194953918457 0.0 0.0 0.0 594 -595 0.00124597549438477 0.0 0.0 0.0 595 -596 0.00124692916870117 0.0 0.0 0.0 596 -597 0.00125479698181152 0.0 0.0 0.0 597 -598 0.00127911567687988 0.0 0.0 0.0 598 -599 0.00125789642333984 0.0 0.0 0.0 599 -600 0.00124406814575195 0.00999999999999979 0.00999999999999979 0.0 600 -601 0.00124907493591309 0.0 0.0 0.0 601 -602 0.00124216079711914 0.0 0.0 0.0 602 -603 0.00124907493591309 0.0 0.0 0.0 603 -604 0.00125384330749512 0.0 0.0 0.0 604 -605 0.00125694274902344 0.0 0.0 0.0 605 -606 0.00124192237854004 0.0 0.0 0.0 606 -607 0.00124502182006836 0.0 0.0 0.0 607 -608 0.0012509822845459 0.0100000000000007 0.0100000000000007 0.0 608 -609 0.00123906135559082 0.0 0.0 0.0 609 -610 0.0014030933380127 0.0 0.0 0.0 610 -611 0.00124883651733398 0.0 0.0 0.0 611 -612 0.00135397911071777 0.0 0.0 0.0 612 -613 0.00174593925476074 0.0 0.0 0.0 613 -614 0.00124716758728027 0.0 0.0 0.0 614 -615 0.00124812126159668 0.00999999999999979 0.00999999999999979 0.0 615 -616 0.00125503540039062 0.0 0.0 0.0 616 -617 0.00140786170959473 0.0 0.0 0.0 617 -618 0.00125312805175781 0.0 0.0 0.0 618 -619 0.0012509822845459 0.0 0.0 0.0 619 -620 0.00124096870422363 0.0 0.0 0.0 620 -621 0.0012359619140625 0.0 0.0 0.0 621 -622 0.00124382972717285 0.00999999999999979 0.00999999999999979 0.0 622 -623 0.00124406814575195 0.0 0.0 0.0 623 -624 0.00123000144958496 0.0 0.0 0.0 624 -625 0.00124001502990723 0.0 0.0 0.0 625 -626 0.00124001502990723 0.0 0.0 0.0 626 -627 0.00124001502990723 0.0 0.0 0.0 627 -628 0.00125885009765625 0.0 0.0 0.0 628 -629 0.00124907493591309 0.0 0.0 0.0 629 -630 0.00124192237854004 0.00999999999999979 0.00999999999999979 0.0 630 -631 0.00124406814575195 0.0 0.0 0.0 631 -632 0.0012519359588623 0.0 0.0 0.0 632 -633 0.00124502182006836 0.0 0.0 0.0 633 -634 0.00124287605285645 0.0 0.0 0.0 634 -635 0.00123906135559082 0.0 0.0 0.0 635 -636 0.00124621391296387 0.0 0.0 0.0 636 -637 0.00124502182006836 0.0 0.0 0.0 637 -638 0.00124692916870117 0.00999999999999979 0.00999999999999979 0.0 638 -639 0.0012509822845459 0.0 0.0 0.0 639 -640 0.00132584571838379 0.0 0.0 0.0 640 -641 0.00126409530639648 0.0 0.0 0.0 641 -642 0.00126504898071289 0.0 0.0 0.0 642 -643 0.00127911567687988 0.0 0.0 0.0 643 -644 0.0240340232849121 0.0300000000000002 0.0300000000000002 0.0 644 -645 0.0101561546325684 0.00999999999999979 0.00999999999999979 0.0 645 -646 0.00133299827575684 0.0 0.0 0.0 646 -647 0.00129604339599609 0.0 0.0 0.0 647 -648 0.00124382972717285 0.0 0.0 0.0 648 -649 0.00127410888671875 0.0 0.0 0.0 649 -650 0.00126409530639648 0.0 0.0 0.0 650 -651 0.0012519359588623 0.0 0.0 0.0 651 -652 0.00124597549438477 0.0100000000000007 0.0100000000000007 0.0 652 -653 0.000922918319702148 0.0 0.0 0.0 653 -654 0.00125503540039062 0.0 0.0 0.0 654 -655 0.00124287605285645 0.0 0.0 0.0 655 -656 0.00124692916870117 0.0 0.0 0.0 656 -657 0.00126004219055176 0.0 0.0 0.0 657 -658 0.00125384330749512 0.0 0.0 0.0 658 -659 0.0013279914855957 0.0 0.0 0.0 659 -660 0.00124502182006836 0.00999999999999979 0.00999999999999979 0.0 660 -661 0.00125598907470703 0.0 0.0 0.0 661 -662 0.00124192237854004 0.0 0.0 0.0 662 -663 0.00124096870422363 0.0 0.0 0.0 663 -664 0.00125312805175781 0.0 0.0 0.0 664 -665 0.00124692916870117 0.0 0.0 0.0 665 -666 0.00124597549438477 0.0 0.0 0.0 666 -667 0.00123977661132812 0.0 0.0 0.0 667 -668 0.00124406814575195 0.0 0.0 0.0 668 -669 0.00123500823974609 0.0 0.0 0.0 669 -670 0.00124502182006836 0.0 0.0 0.0 670 -671 0.00124502182006836 0.0 0.0 0.0 671 -672 0.00124382972717285 0.0 0.0 0.0 672 -673 0.00123190879821777 0.0 0.0 0.0 673 -674 0.00123500823974609 0.0 0.0 0.0 674 -675 0.00124692916870117 0.00999999999999979 0.00999999999999979 0.0 675 -676 0.00123310089111328 0.0 0.0 0.0 676 -677 0.00123095512390137 0.0 0.0 0.0 677 -678 0.00124192237854004 0.0 0.0 0.0 678 -679 0.00122690200805664 0.0 0.0 0.0 679 -680 0.00123286247253418 0.0 0.0 0.0 680 -681 0.00124096870422363 0.0 0.0 0.0 681 -682 0.00124192237854004 0.0 0.0 0.0 682 -683 0.00124692916870117 0.0100000000000007 0.0100000000000007 0.0 683 -684 0.0012359619140625 0.0 0.0 0.0 684 -685 0.00123286247253418 0.0 0.0 0.0 685 -686 0.00124001502990723 0.0 0.0 0.0 686 -687 0.00124001502990723 0.0 0.0 0.0 687 -688 0.00123786926269531 0.0 0.0 0.0 688 -689 0.00125002861022949 0.0 0.0 0.0 689 -690 0.00124907493591309 0.0 0.0 0.0 690 -691 0.00129103660583496 0.00999999999999979 0.00999999999999979 0.0 691 -692 0.00124311447143555 0.0 0.0 0.0 692 -693 0.00129890441894531 0.0 0.0 0.0 693 -694 0.00130796432495117 0.0 0.0 0.0 694 -695 0.00123500823974609 0.0 0.0 0.0 695 -696 0.00124716758728027 0.0 0.0 0.0 696 -697 0.00123906135559082 0.0 0.0 0.0 697 -698 0.00124287605285645 0.0 0.0 0.0 698 -699 0.00127696990966797 0.00999999999999979 0.00999999999999979 0.0 699 -700 0.00124907493591309 0.0 0.0 0.0 700 -701 0.0300769805908203 0.0300000000000002 0.0300000000000002 0.0 701 -702 0.0012669563293457 0.0 0.0 0.0 702 -703 0.00174999237060547 0.0 0.0 0.0 703 -704 0.00131797790527344 0.0 0.0 0.0 704 -705 0.00130391120910645 0.0 0.0 0.0 705 -706 0.00126886367797852 0.0 0.0 0.0 706 -707 0.00127601623535156 0.00999999999999979 0.00999999999999979 0.0 707 -708 0.00125503540039062 0.0 0.0 0.0 708 -709 0.00125312805175781 0.0 0.0 0.0 709 -710 0.00124597549438477 0.0 0.0 0.0 710 -711 0.00125217437744141 0.0 0.0 0.0 711 -712 0.00124311447143555 0.0 0.0 0.0 712 -713 0.00124287605285645 0.0 0.0 0.0 713 -714 0.00125503540039062 0.00999999999999979 0.00999999999999979 0.0 714 -715 0.0012519359588623 0.0 0.0 0.0 715 -716 0.00124502182006836 0.0 0.0 0.0 716 -717 0.00124502182006836 0.0 0.0 0.0 717 -718 0.00126814842224121 0.0 0.0 0.0 718 -719 0.00124883651733398 0.0 0.0 0.0 719 -720 0.00124812126159668 0.0 0.0 0.0 720 -721 0.00125408172607422 0.0 0.0 0.0 721 -722 0.00125694274902344 0.0100000000000007 0.0100000000000007 0.0 722 -723 0.00125002861022949 0.0 0.0 0.0 723 -724 0.0012509822845459 0.0 0.0 0.0 724 -725 0.00124502182006836 0.0 0.0 0.0 725 -726 0.00115799903869629 0.0 0.0 0.0 726 -727 0.00148391723632812 0.0 0.0 0.0 727 -728 0.00177001953125 0.0 0.0 0.0 728 -729 0.00183606147766113 0.00999999999999979 0.00999999999999979 0.0 729 -730 0.00171613693237305 0.0 0.0 0.0 730 -731 0.00128793716430664 0.0 0.0 0.0 731 -732 0.000819921493530273 0.0 0.0 0.0 732 -733 0.00124001502990723 0.0 0.0 0.0 733 -734 0.00124692916870117 0.0 0.0 0.0 734 -735 0.00124001502990723 0.0 0.0 0.0 735 -736 0.00123882293701172 0.0 0.0 0.0 736 -737 0.00124597549438477 0.00999999999999979 0.00999999999999979 0.0 737 -738 0.00124502182006836 0.0 0.0 0.0 738 -739 0.00124096870422363 0.0 0.0 0.0 739 -740 0.00124502182006836 0.0 0.0 0.0 740 -741 0.00124096870422363 0.0 0.0 0.0 741 -742 0.00124287605285645 0.0 0.0 0.0 742 -743 0.00124096870422363 0.0 0.0 0.0 743 -744 0.00124692916870117 0.00999999999999979 0.00999999999999979 0.0 744 -745 0.00138497352600098 0.0 0.0 0.0 745 -746 0.00129485130310059 0.0 0.0 0.0 746 -747 0.0012509822845459 0.0 0.0 0.0 747 -748 0.00124907493591309 0.0 0.0 0.0 748 -749 0.00123500823974609 0.0 0.0 0.0 749 -750 0.00124621391296387 0.0 0.0 0.0 750 -751 0.00124096870422363 0.0 0.0 0.0 751 -752 0.00123810768127441 0.0100000000000007 0.0100000000000007 0.0 752 -753 0.00124287605285645 0.0 0.0 0.0 753 -754 0.00124716758728027 0.0 0.0 0.0 754 -755 0.00124311447143555 0.0 0.0 0.0 755 -756 0.00124883651733398 0.0 0.0 0.0 756 -757 0.0014030933380127 0.0 0.0 0.0 757 -758 0.0220100879669189 0.0199999999999996 0.0199999999999996 0.0 758 -759 0.00328278541564941 0.00999999999999979 0.00999999999999979 0.0 759 -760 0.00999212265014648 0.00999999999999979 0.00999999999999979 0.0 760 -761 0.00151991844177246 0.0 0.0 0.0 761 -762 0.00131011009216309 0.0 0.0 0.0 762 -763 0.00128889083862305 0.0 0.0 0.0 763 -764 0.0012819766998291 0.0 0.0 0.0 764 -765 0.0012819766998291 0.0 0.0 0.0 765 -766 0.00126886367797852 0.0100000000000007 0.0100000000000007 0.0 766 -767 0.00125288963317871 0.0 0.0 0.0 767 -768 0.00125408172607422 0.0 0.0 0.0 768 -769 0.00125718116760254 0.0 0.0 0.0 769 -770 0.00125384330749512 0.0 0.0 0.0 770 -771 0.00125002861022949 0.0 0.0 0.0 771 -772 0.00124406814575195 0.0 0.0 0.0 772 -773 0.00125002861022949 0.00999999999999979 0.00999999999999979 0.0 773 -774 0.0012509822845459 0.0 0.0 0.0 774 -775 0.00124502182006836 0.0 0.0 0.0 775 -776 0.00124788284301758 0.0 0.0 0.0 776 -777 0.00125408172607422 0.0 0.0 0.0 777 -778 0.00125288963317871 0.0 0.0 0.0 778 -779 0.00124788284301758 0.0 0.0 0.0 779 -780 0.00124287605285645 0.0 0.0 0.0 780 -781 0.00125694274902344 0.00999999999999979 0.00999999999999979 0.0 781 -782 0.00124096870422363 0.0 0.0 0.0 782 -783 0.00123691558837891 0.0 0.0 0.0 783 -784 0.00124287605285645 0.0 0.0 0.0 784 -785 0.00124597549438477 0.0 0.0 0.0 785 -786 0.00123786926269531 0.0 0.0 0.0 786 -787 0.00124502182006836 0.0 0.0 0.0 787 -788 0.00124096870422363 0.0 0.0 0.0 788 -789 0.00124096870422363 0.00999999999999979 0.00999999999999979 0.0 789 -790 0.00123500823974609 0.0 0.0 0.0 790 -791 0.00124001502990723 0.0 0.0 0.0 791 -792 0.00124001502990723 0.0 0.0 0.0 792 -793 0.00123000144958496 0.0 0.0 0.0 793 -794 0.00124406814575195 0.0 0.0 0.0 794 -795 0.00123691558837891 0.0 0.0 0.0 795 -796 0.00123286247253418 0.0 0.0 0.0 796 -797 0.00123906135559082 0.0100000000000007 0.0100000000000007 0.0 797 -798 0.00120997428894043 0.0 0.0 0.0 798 -799 0.00156807899475098 0.0 0.0 0.0 799 -800 0.00123286247253418 0.0 0.0 0.0 800 -801 0.00125002861022949 0.0 0.0 0.0 801 -802 0.0012199878692627 0.0 0.0 0.0 802 -803 0.00123405456542969 0.0 0.0 0.0 803 -804 0.0012519359588623 0.00999999999999979 0.00999999999999979 0.0 804 -805 0.00124192237854004 0.0 0.0 0.0 805 -806 0.00124406814575195 0.0 0.0 0.0 806 -807 0.00124001502990723 0.0 0.0 0.0 807 -808 0.00124692916870117 0.0 0.0 0.0 808 -809 0.00125002861022949 0.0 0.0 0.0 809 -810 0.00125312805175781 0.0 0.0 0.0 810 -811 0.00126981735229492 0.0 0.0 0.0 811 -812 0.00124001502990723 0.00999999999999979 0.00999999999999979 0.0 812 -813 0.00124597549438477 0.0 0.0 0.0 813 -814 0.00126290321350098 0.0 0.0 0.0 814 -815 0.0310249328613281 0.0300000000000002 0.0300000000000002 0.0 815 -816 0.000841140747070312 0.0 0.0 0.0 816 -817 0.000878095626831055 0.0 0.0 0.0 817 -818 0.000874042510986328 0.0 0.0 0.0 818 -819 0.000869035720825195 0.0 0.0 0.0 819 -820 0.0012819766998291 0.0 0.0 0.0 820 -821 0.00133609771728516 0.00999999999999979 0.00999999999999979 0.0 821 -822 0.0012660026550293 0.0 0.0 0.0 822 -823 0.0013270378112793 0.0 0.0 0.0 823 -824 0.00125718116760254 0.0 0.0 0.0 824 -825 0.00124907493591309 0.0 0.0 0.0 825 -826 0.00137901306152344 0.0 0.0 0.0 826 -827 0.00125503540039062 0.0 0.0 0.0 827 -828 0.0012509822845459 0.0 0.0 0.0 828 -829 0.00126791000366211 0.00999999999999979 0.00999999999999979 0.0 829 -830 0.00128698348999023 0.0 0.0 0.0 830 -831 0.00125598907470703 0.0 0.0 0.0 831 -832 0.00135207176208496 0.0 0.0 0.0 832 -833 0.000869035720825195 0.0 0.0 0.0 833 -834 0.00125503540039062 0.0 0.0 0.0 834 -835 0.0012519359588623 0.0 0.0 0.0 835 -836 0.00126004219055176 0.0 0.0 0.0 836 -837 0.00126099586486816 0.0100000000000007 0.0100000000000007 0.0 837 -838 0.00181698799133301 0.0 0.0 0.0 838 -839 0.00126290321350098 0.0 0.0 0.0 839 -840 0.00124096870422363 0.0 0.0 0.0 840 -841 0.00118899345397949 0.0 0.0 0.0 841 -842 0.00124096870422363 0.0 0.0 0.0 842 -843 0.00123286247253418 0.0 0.0 0.0 843 -844 0.00165700912475586 0.00999999999999979 0.00999999999999979 0.0 844 -845 0.00125789642333984 0.0 0.0 0.0 845 -846 0.00123405456542969 0.0 0.0 0.0 846 -847 0.00123095512390137 0.0 0.0 0.0 847 -848 0.0012509822845459 0.0 0.0 0.0 848 -849 0.00123906135559082 0.0 0.0 0.0 849 -850 0.00165104866027832 0.0 0.0 0.0 850 -851 0.00123906135559082 0.00999999999999979 0.00999999999999979 0.0 851 -852 0.00123786926269531 0.0 0.0 0.0 852 -853 0.00120902061462402 0.0 0.0 0.0 853 -854 0.00130009651184082 0.0 0.0 0.0 854 -855 0.00124502182006836 0.0 0.0 0.0 855 -856 0.0016329288482666 0.0 0.0 0.0 856 -857 0.0012509822845459 0.0 0.0 0.0 857 -858 0.00124692916870117 0.0 0.0 0.0 858 -859 0.00129890441894531 0.00999999999999979 0.00999999999999979 0.0 859 -860 0.00123786926269531 0.0 0.0 0.0 860 -861 0.00123786926269531 0.0 0.0 0.0 861 -862 0.0016181468963623 0.0 0.0 0.0 862 -863 0.00124192237854004 0.0 0.0 0.0 863 -864 0.00124692916870117 0.0 0.0 0.0 864 -865 0.00124597549438477 0.0 0.0 0.0 865 -866 0.00124478340148926 0.0100000000000007 0.0100000000000007 0.0 866 -867 0.00123500823974609 0.0 0.0 0.0 867 -868 0.00165414810180664 0.0 0.0 0.0 868 -869 0.00124502182006836 0.0 0.0 0.0 869 -870 0.0012669563293457 0.0 0.0 0.0 870 -871 0.0018620491027832 0.0 0.0 0.0 871 -872 0.0325958728790283 0.04 0.04 0.0 872 -873 0.000857114791870117 0.0 0.0 0.0 873 -874 0.00117611885070801 0.0 0.0 0.0 874 -875 0.000876903533935547 0.0 0.0 0.0 875 -876 0.00108814239501953 0.0 0.0 0.0 876 -877 0.00129008293151855 0.0 0.0 0.0 877 -878 0.00138592720031738 0.0 0.0 0.0 878 -879 0.00126004219055176 0.0 0.0 0.0 879 -880 0.00133490562438965 0.00999999999999979 0.00999999999999979 0.0 880 -881 0.00133109092712402 0.0 0.0 0.0 881 -882 0.00126004219055176 0.0 0.0 0.0 882 -883 0.00134086608886719 0.0 0.0 0.0 883 -884 0.00124907493591309 0.0 0.0 0.0 884 -885 0.00122594833374023 0.0 0.0 0.0 885 -886 0.00130510330200195 0.0 0.0 0.0 886 -887 0.00134396553039551 0.0 0.0 0.0 887 -888 0.00126194953918457 0.00999999999999979 0.00999999999999979 0.0 888 -889 0.00120782852172852 0.0 0.0 0.0 889 -890 0.00124692916870117 0.0 0.0 0.0 890 -891 0.00125813484191895 0.0 0.0 0.0 891 -892 0.0012509822845459 0.0 0.0 0.0 892 -893 0.00136804580688477 0.0 0.0 0.0 893 -894 0.00125718116760254 0.0 0.0 0.0 894 -895 0.00125312805175781 0.00999999999999979 0.00999999999999979 0.0 895 -896 0.00126218795776367 0.0 0.0 0.0 896 -897 0.00123286247253418 0.0 0.0 0.0 897 -898 0.00124406814575195 0.0 0.0 0.0 898 -899 0.00131702423095703 0.0 0.0 0.0 899 -900 0.00123405456542969 0.0 0.0 0.0 900 -901 0.00121402740478516 0.0 0.0 0.0 901 -902 0.00123882293701172 0.0 0.0 0.0 902 -903 0.00123310089111328 0.00999999999999979 0.00999999999999979 0.0 903 -904 0.00124096870422363 0.0 0.0 0.0 904 -905 0.00147390365600586 0.0 0.0 0.0 905 -906 0.0012509822845459 0.0 0.0 0.0 906 -907 0.00124692916870117 0.0 0.0 0.0 907 -908 0.00124907493591309 0.0 0.0 0.0 908 -909 0.00124597549438477 0.0 0.0 0.0 909 -910 0.00124001502990723 0.0 0.0 0.0 910 -911 0.00142002105712891 0.0100000000000007 0.0100000000000007 0.0 911 -912 0.00124502182006836 0.0 0.0 0.0 912 -913 0.00124502182006836 0.0 0.0 0.0 913 -914 0.0012819766998291 0.0 0.0 0.0 914 -915 0.00123786926269531 0.0 0.0 0.0 915 -916 0.00124287605285645 0.0 0.0 0.0 916 -917 0.00142312049865723 0.0 0.0 0.0 917 -918 0.0012509822845459 0.00999999999999979 0.00999999999999979 0.0 918 -919 0.00124502182006836 0.0 0.0 0.0 919 -920 0.00124692916870117 0.0 0.0 0.0 920 -921 0.00124192237854004 0.0 0.0 0.0 921 -922 0.00119709968566895 0.0 0.0 0.0 922 -923 0.00140190124511719 0.0 0.0 0.0 923 -924 0.00125002861022949 0.0 0.0 0.0 924 -925 0.00124502182006836 0.0 0.0 0.0 925 -926 0.00124597549438477 0.00999999999999979 0.00999999999999979 0.0 926 -927 0.00127720832824707 0.0 0.0 0.0 927 -928 0.00126409530639648 0.0 0.0 0.0 928 -929 0.0312209129333496 0.0300000000000002 0.0300000000000002 0.0 929 -930 0.00214791297912598 0.0 0.0 0.0 930 -931 0.00183796882629395 0.0 0.0 0.0 931 -932 0.00143814086914062 0.00999999999999979 0.00999999999999979 0.0 932 -933 0.00145792961120605 0.0 0.0 0.0 933 -934 0.00152087211608887 0.0 0.0 0.0 934 -935 0.00213003158569336 0.0 0.0 0.0 935 -936 0.00166201591491699 0.0 0.0 0.0 936 -937 0.0016930103302002 0.0 0.0 0.0 937 -938 0.00139403343200684 0.00999999999999979 0.00999999999999979 0.0 938 -939 0.00214695930480957 0.0 0.0 0.0 939 -940 0.00102400779724121 0.0 0.0 0.0 940 -941 0.0012660026550293 0.0 0.0 0.0 941 -942 0.00126004219055176 0.0 0.0 0.0 942 -943 0.00126194953918457 0.0 0.0 0.0 943 -944 0.00125813484191895 0.0 0.0 0.0 944 -945 0.00152897834777832 0.0100000000000007 0.0100000000000007 0.0 945 -946 0.0012669563293457 0.0 0.0 0.0 946 -947 0.00125408172607422 0.0 0.0 0.0 947 -948 0.00125980377197266 0.0 0.0 0.0 948 -949 0.00126481056213379 0.0 0.0 0.0 949 -950 0.00125908851623535 0.0 0.0 0.0 950 -951 0.00138092041015625 0.0 0.0 0.0 951 -952 0.00125384330749512 0.00999999999999979 0.00999999999999979 0.0 952 -953 0.00108504295349121 0.0 0.0 0.0 953 -954 0.0012509822845459 0.0 0.0 0.0 954 -955 0.00125980377197266 0.0 0.0 0.0 955 -956 0.00131511688232422 0.0 0.0 0.0 956 -957 0.00130796432495117 0.0 0.0 0.0 957 -958 0.00124597549438477 0.0 0.0 0.0 958 -959 0.00125002861022949 0.0 0.0 0.0 959 -960 0.00124287605285645 0.00999999999999979 0.00999999999999979 0.0 960 -961 0.00124812126159668 0.0 0.0 0.0 961 -962 0.0012509822845459 0.0 0.0 0.0 962 -963 0.00130891799926758 0.0 0.0 0.0 963 -964 0.00123500823974609 0.0 0.0 0.0 964 -965 0.00124096870422363 0.0 0.0 0.0 965 -966 0.00124883651733398 0.0 0.0 0.0 966 -967 0.00124192237854004 0.0 0.0 0.0 967 -968 0.00124502182006836 0.00999999999999979 0.00999999999999979 0.0 968 -969 0.00124597549438477 0.0 0.0 0.0 969 -970 0.00130796432495117 0.0 0.0 0.0 970 -971 0.00124716758728027 0.0 0.0 0.0 971 -972 0.00125408172607422 0.0 0.0 0.0 972 -973 0.00125384330749512 0.0 0.0 0.0 973 -974 0.00124907493591309 0.0 0.0 0.0 974 -975 0.00124502182006836 0.0 0.0 0.0 975 -976 0.00131011009216309 0.0100000000000007 0.0100000000000007 0.0 976 -977 0.00125384330749512 0.0 0.0 0.0 977 -978 0.00124597549438477 0.0 0.0 0.0 978 -979 0.00125503540039062 0.0 0.0 0.0 979 -980 0.00125384330749512 0.0 0.0 0.0 980 -981 0.0012509822845459 0.0 0.0 0.0 981 -982 0.00131988525390625 0.0 0.0 0.0 982 -983 0.00126099586486816 0.00999999999999979 0.00999999999999979 0.0 983 -984 0.00126004219055176 0.0 0.0 0.0 984 -985 0.00127100944519043 0.0 0.0 0.0 985 -986 0.0304250717163086 0.0300000000000002 0.0300000000000002 0.0 986 -987 0.00131678581237793 0.0 0.0 0.0 987 -988 0.00130200386047363 0.0 0.0 0.0 988 -989 0.00139880180358887 0.0 0.0 0.0 989 -990 0.00517010688781738 0.0 0.0 0.0 990 -991 0.00128984451293945 0.00999999999999979 0.00999999999999979 0.0 991 -992 0.00125789642333984 0.0 0.0 0.0 992 -993 0.00152301788330078 0.0 0.0 0.0 993 -994 0.00125598907470703 0.0 0.0 0.0 994 -995 0.00125312805175781 0.0 0.0 0.0 995 -996 0.00125312805175781 0.0 0.0 0.0 996 -997 0.00125598907470703 0.0 0.0 0.0 997 -998 0.00134396553039551 0.0 0.0 0.0 998 -999 0.00124979019165039 0.00999999999999979 0.00999999999999979 0.0 999 -1000 0.00125598907470703 0.0 0.0 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log deleted file mode 100644 index ca6c64e4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log +++ /dev/null @@ -1,81 +0,0 @@ -========================== 2009-04-01T16:49:42 CEST =========================== -Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux]. -Running 'ParserBenchmarkExt' for 1000 iterations/method (compare_time=real) -=============================================================================== - -This first run is only for warmup. -ParserBenchmarkExt#parser: - real total user system -sum 1.733042240 1.770000000 1.760000000 0.010000000 -min 0.000833988 0.000000000 0.000000000 0.000000000 -std- -0.001838092 -0.003229209 -0.003232727 -0.000306228 -mean 0.001733042 0.001770000 0.001760000 0.000010000 -std+ 0.005304177 0.006769209 0.006752727 0.000326228 -max 0.032314062 0.040000000 0.040000000 0.010000000 -std 0.003571134 0.004999209 0.004992727 0.000316228 -std% 206.061583704 282.441194727 283.677695666 3162.277660168 -harm 0.001283614 nan nan nan -geo 0.001337350 0.000000000 0.000000000 0.000000000 -q1 0.001236916 0.000000000 0.000000000 0.000000000 -med 0.001246929 0.000000000 0.000000000 0.000000000 -q3 0.001260996 0.000000000 0.000000000 0.000000000 - 1000 577.01998 0.001733042 - calls calls/sec secs/call - - 0.03074 -|* - 0.02759 -| - 0.02444 -| - 0.02130 -| - 0.01815 -| - 0.01500 -| - 0.01185 -| - 0.00870 -| - 0.00556 -| - 0.00241 -|************************************************** - -Outliers detected with box plot algo (median=0.00125, iqr=0.00002, factor=3.00): -very_low=32 low=15 high=77 very_high=135 - -Ljung-Box statistics: q=13.14182 (alpha=0.05, df=50). -0.00000 < 0.95000 => No autocorrelation was detected. - -ParserBenchmarkExt#parser: - real total user system -sum 1.624776602 1.620000000 1.620000000 0.000000000 -min 0.000819921 0.000000000 0.000000000 0.000000000 -std- -0.001936067 -0.003223194 -0.003223194 0.000000000 -mean 0.001805307 0.001800000 0.001800000 0.000000000 -std+ 0.005546681 0.006823194 0.006823194 0.000000000 -max 0.032595873 0.040000000 0.040000000 0.000000000 -std 0.003741374 0.005023194 0.005023194 0.000000000 -std% 207.243050150 279.066347558 279.066347558 nan -harm 0.001297084 nan nan nan -geo 0.001358799 0.000000000 0.000000000 0.000000000 -q1 0.001241922 0.000000000 0.000000000 0.000000000 -med 0.001249075 0.000000000 0.000000000 0.000000000 -q3 0.001264811 0.000000000 0.000000000 0.000000000 - 900 553.92230 0.001805307 - calls calls/sec secs/call - - 0.03101 -|* - 0.02783 -| - 0.02465 -| - 0.02147 -| - 0.01830 -| - 0.01512 -| - 0.01194 -| - 0.00876 -| - 0.00559 -| - 0.00241 -|************************************************** - -Outliers detected with box plot algo (median=0.00125, iqr=0.00002, factor=3.00): -very_low=15 low=9 high=76 very_high=110 - -Ljung-Box statistics: q=15.89429 (alpha=0.05, df=50). -0.00000 < 0.95000 => No autocorrelation was detected. - -Truncated initial 100 measurements: 1000 -> 900 (-10.00%). -========================== 2009-04-01T16:49:49 CEST =========================== - -Writing measurement data file '/data/scm/json/benchmarks/data/ParserBenchmarkExt#parser.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/ParserBenchmarkExt#parser-autocorrelation.dat'. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat deleted file mode 100644 index 40a0668a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.126526065077488 -3 -0.144961526627029 -4 -0.139357177406834 -5 -0.143974826894912 -6 -0.142298816838391 -7 -0.139337332621068 -8 -0.0804933565996591 -9 0.863154337738992 -10 -0.0856698326462466 -11 -0.139044499260128 -12 -0.144409577021306 -13 -0.139952610271037 -14 -0.137830644370195 -15 -0.138237560134025 -16 -0.0318228583907447 -17 0.762295174674438 -18 -0.0451085401986914 -19 -0.139574314980337 -20 -0.137706022735926 -21 -0.135000055250474 -22 -0.140944565680693 -23 -0.136209503772352 -24 0.0116248943043287 -25 0.668814012806624 -26 0.00194941922845652 -27 -0.132610614145838 -28 -0.110905629572418 -29 -0.142849770878147 -30 -0.143488824970324 -31 -0.134330197021416 -32 0.0538835449451642 -33 0.575132011890069 -34 0.0505429010331842 -35 -0.137467592425517 -36 -0.125877861208834 -37 -0.148631268110284 -38 -0.136115193781866 -39 -0.137935999911469 -40 0.0988849495063306 -41 0.486986888878156 -42 0.0878752779386658 -43 -0.132160917693119 -44 -0.129643145971886 -45 -0.149607998788336 -46 -0.13478438037923 -47 -0.133019295702461 -48 0.14888456218326 -49 0.393046641526692 -50 0.120499739018384 -51 -0.12075319894839 -52 -0.132962236637115 -53 -0.144429618272262 -54 -0.119605702139121 -55 -0.101682767008184 -56 0.152609045047458 -57 0.329588666724346 -58 0.139652155383137 -59 -0.114941895372878 -60 -0.126489834985415 -61 -0.139130898077927 -62 -0.137842155865592 -63 -0.0861253194251446 -64 0.150629648832854 -65 0.281018765279001 -66 0.13915358689329 -67 -0.0896859084267328 -68 -0.123313711110523 -69 -0.142874643960391 -70 -0.135495171639773 -71 -0.0711514410690874 -72 0.147596411956897 -73 0.251872397592371 -74 0.121839586873541 -75 -0.0575973326704366 -76 -0.126799299154496 -77 -0.144543550470945 -78 -0.124111534889387 -79 -0.0466899945416701 -80 0.131315152952299 -81 0.252160996580415 -82 0.10666721386194 -83 -0.0339037628702252 -84 -0.127183439268724 -85 -0.143132479164138 -86 -0.125851156910328 -87 -0.0147264358973224 -88 0.118449575410306 -89 0.201728736307241 -90 0.0886049712661605 -91 -0.00382129887238343 -92 -0.131751835679824 -93 -0.140792586519908 -94 -0.118637713578907 -95 0.02095681301022 -96 0.0813261521961686 -97 0.180482658314394 -98 0.0795745616300617 -99 0.0126200590172042 -100 -0.127051186194544 -101 -0.137444352404263 -102 -0.109978539446263 -103 0.0380230003474469 -104 0.0605417360053513 -105 0.171590136906878 -106 0.0604018417747588 -107 0.0402566049413917 -108 -0.100533719460918 -109 -0.140161784412186 -110 -0.10312957661735 -111 0.0485735840442751 -112 0.0373718997374129 -113 0.167648566872301 -114 0.0459260028708854 -115 0.046121183499996 -116 -0.110430068243273 -117 -0.140278458993756 -118 -0.0875776667752535 -119 0.0510626017064324 -120 0.0238451049454621 -121 0.16085061505561 -122 0.030276460935626 -123 0.0561232990819215 -124 -0.105464808595229 -125 -0.135546173373586 -126 -0.079801944025769 -127 0.0599654914699078 -128 0.0136534141192567 -129 0.15182365517752 -130 0.0197096306752212 -131 0.0534620866010349 -132 -0.0917414096626928 -133 -0.127172172660217 -134 -0.0514782042484449 -135 0.0685986797971808 -136 -0.00353858174559342 -137 0.142196102713977 -138 0.0134469000302172 -139 0.0396095015311617 -140 -0.0655242334449433 -141 -0.122832275916882 -142 -0.0479444786698279 -143 0.050751999392634 -144 -0.011019423438215 -145 0.132113807423818 -146 0.00290229828051553 -147 0.0324895304839574 -148 -0.0424435359166719 -149 -0.122337133535285 -150 -0.0293859066983028 -151 0.0383678650842516 -152 -0.0194742885265415 -153 0.126609912325987 -154 -0.00608808492180084 -155 0.0395330884838485 -156 -0.0368665742861527 -157 -0.121320946026168 -158 -0.0130016640468885 -159 0.0309861525800574 -160 -0.018558052599205 -161 0.137300590031426 -162 -0.00746032318164814 -163 0.0344072362770583 -164 -0.0323265667023796 -165 -0.108099357804514 -166 -0.00728009854612887 -167 0.0166450780849257 -168 -0.0143279526502486 -169 0.109076299549607 -170 -0.0115962562225386 -171 0.0177205211496241 -172 -0.0165802545828673 -173 -0.0995936967878659 -174 0.011605779237427 -175 0.00523220776952252 -176 -0.0161523464956781 -177 0.0989734877266892 -178 -0.0129792250545895 -179 0.00898322395475531 -180 -0.0153158199749067 -181 -0.0800824097692582 -182 0.0178200034942401 -183 -0.00474786676294106 -184 -0.0157551972778546 -185 0.0942532461909266 -186 -0.00969269130384397 -187 0.00652836785416871 -188 0.000910018587766529 -189 -0.0619232375104542 -190 0.0179928377991651 -191 -0.0159711302098274 -192 -0.018744717694339 -193 0.0877619939638119 -194 -0.00502556289883764 -195 -0.00667460786160017 -196 -0.0121723963071187 -197 -0.0449032831155359 -198 0.0212125953730812 -199 -0.0262860792829433 -200 -0.016162057795481 -201 0.0811913575034835 -202 -0.00330089426590078 -203 -0.0151519759511698 -204 -0.017960262928082 -205 -0.0215037814284608 -206 0.0182943543046035 -207 -0.0341747401956763 -208 -0.0146866352915169 -209 0.0792718771176078 -210 -0.00321919646839206 -211 -0.023611826169962 -212 -0.0126184079823646 -213 -0.000954698682123794 -214 0.0297339638938581 -215 -0.0312735654036501 -216 -0.0161173400247215 -217 0.0692180762363309 -218 -0.00283288277832248 -219 -0.0388702841271483 -220 0.00457538848515518 -221 0.017702534023738 -222 0.00544552208632338 -223 -0.0446102056961128 -224 -0.0135729757433799 -225 0.061318425794026 -226 -0.00494947349286398 -227 -0.0321768515141099 -228 0.00497720552190702 -229 0.0267952089554404 -230 -0.000738697332716776 -231 -0.0492659393491728 -232 -0.0148071186922711 -233 0.0545872347505704 -234 -0.00382673762292252 -235 -0.0282826124126036 -236 0.00794227173858329 -237 0.0378731489090914 -238 -0.00835973314997662 -239 -0.0447739268124712 -240 -0.0127983223158383 -241 0.0636581757214183 -242 -0.000854926428120144 -243 -0.0310943152069584 -244 -0.00259888627525403 -245 0.0558953643657078 -246 -0.0171154785163806 -247 -0.0391969466693341 -248 -0.0117324565371219 -249 0.0429666350675198 -250 -0.00749755396653516 -251 -0.0292116650124283 -252 -0.00980920002999956 -253 0.0728023253137216 -254 -0.0242433063094984 -255 -0.0319002210401708 -256 -0.0116887755426019 -257 0.0318202643673836 -258 -0.00934603617096265 -259 -0.0320628549574969 -260 -0.0138223876265734 -261 0.0891055411435177 -262 -0.0247651373213855 -263 -0.0309052036748624 -264 -0.0100532798596721 -265 0.0243378856936498 -266 -0.0045778331986359 -267 -0.026821752316485 -268 0.000989105341668746 -269 0.0888402056176568 -270 -0.0231248959628869 -271 -0.0335116780227126 -272 -0.0117587705487187 -273 0.0167906040316404 -274 -0.00329835726197584 -275 -0.0310756973538631 -276 -0.00167909352527941 -277 0.0731070181742769 -278 -0.0163827003248124 -279 -0.0314028257468305 -280 -0.00966921026548781 -281 0.0102706941067124 -282 0.00203072073029314 -283 -0.0308313739794282 -284 0.00547048142856235 -285 0.0539371640185639 -286 -0.00773101119983001 -287 -0.0303450446180751 -288 -0.00733600257056593 -289 0.00772935578415776 -290 0.00197958032226745 -291 -0.0273846524631412 -292 0.0112672702862109 -293 0.045049409831887 -294 0.00799728833473099 -295 -0.0200723316807648 -296 -0.00733856327080615 -297 -0.001791898850227 -298 0.00388503548910184 -299 -0.0339646317125627 -300 0.0269401380987506 -301 0.0295897394272477 -302 0.00882971838376906 -303 -0.0255032485942965 -304 -0.00586660773988975 -305 -0.0143116332821527 -306 0.00534299944397864 -307 -0.0288912695776605 -308 0.0357675762276391 -309 0.0162077381233435 -310 0.0175736980127429 -311 -0.0300119235674159 -312 -0.00563685913557697 -313 -0.0218208266576808 -314 0.00532212484976867 -315 -0.0165702155219983 -316 0.03160258037738 -317 0.0156089288371773 -318 0.0179977820150998 -319 -0.0255657663584924 -320 -0.00314013163781615 -321 -0.0174257276545932 -322 0.00856637995358983 -323 -0.00719462491658861 -324 0.0248064952084498 -325 0.0118797380566877 -326 0.0164280770611372 -327 -0.0202684072278218 -328 -0.000968003222461791 -329 -0.0392377749025386 -330 0.00616137008243444 -331 -0.00395889897053221 -332 0.0209975704367836 -333 0.0165669731399994 -334 0.0167876667126637 -335 -0.0162800034591445 -336 0.00157612684339945 -337 -0.0497601369515435 -338 0.00168009969601492 -339 -0.00390601780649794 -340 0.023648567413202 -341 0.0158640545767057 -342 0.0244736064929526 -343 -0.014150912333521 -344 0.00356083314932668 -345 -0.0588422955021098 -346 0.0064856866009032 -347 0.000344551175540443 -348 0.0364591845510023 -349 0.0166346451576227 -350 0.0251881929581815 -351 -0.01627179367963 -352 0.00180146013521436 -353 -0.0649333243287488 -354 0.00866862821696223 -355 -0.00279970209152114 -356 0.0263646717293285 -357 0.0211193247836195 -358 0.0214320318152118 -359 -0.0151817766787754 -360 0.00485821947887842 -361 -0.0715992844478512 -362 0.0108378220586832 -363 -0.00133094811006224 -364 0.0247532282729131 -365 0.016495069638089 -366 0.0229500626359929 -367 -0.0147226502159456 -368 0.00647045064867083 -369 -0.073385789691225 -370 0.0114312149907294 -371 0.00249982568991776 -372 0.0225934619182297 -373 0.0238409420604106 -374 0.0300604984923422 -375 -0.00852632300506627 -376 -0.000476408670694637 -377 -0.0669893069127702 -378 0.00708510482024032 -379 -0.00633855524099727 -380 0.0316293143381378 -381 0.0224467328328507 -382 0.024131620910292 -383 -0.0144420099990433 -384 -0.00656804302886437 -385 -0.0605047793511062 -386 -0.00244909720127004 -387 -0.00228283234187514 -388 0.0347630666059254 -389 0.0255372783174439 -390 0.0249118471215147 -391 -0.0156811043640799 -392 -0.0186780895478396 -393 -0.0500470638854078 -394 -0.0106681828115876 -395 0.00299348108637595 -396 0.0375478351991823 -397 0.0272676652644904 -398 0.0249262372804901 -399 -0.0128139590091909 -400 -0.0244260954570344 -401 -0.0296360177448727 -402 -0.0156522051426314 -403 0.00371335698467524 -404 0.0375532256529043 -405 0.025029221367199 -406 0.0252473835020561 -407 -0.00821195172190185 -408 -0.0340470970501328 -409 -0.0312374914683474 -410 -0.0253324219431086 -411 0.00556439075799471 -412 0.0343851616998114 -413 0.0296108649664041 -414 0.0244865536821279 -415 -0.00642396788124207 -416 -0.0381703614534087 -417 -0.0250381539188707 -418 -0.0339628157444566 -419 0.00243992182082179 -420 0.0377363310935231 -421 0.0279269519560789 -422 0.0330045526455719 -423 -0.00511644400658994 -424 -0.0450141067262116 -425 -0.0158485572785398 -426 -0.03936429400437 -427 0.00750953654479071 -428 0.0477707926390831 -429 0.0288151654666373 -430 0.0361802804944373 -431 -0.00712917753126239 -432 -0.0583334638414398 -433 -0.00267010949721538 -434 -0.0470917242637041 -435 0.00517042251078623 -436 0.037455528907572 -437 0.0343942996609878 -438 0.0332028694901519 -439 -0.00589078251875288 -440 -0.0637043911707992 -441 0.00666183788238349 -442 -0.0525517266899241 -443 0.00895232543554424 -444 0.0382697031000271 -445 0.0284021587291105 -446 0.0334942204660841 -447 -0.00596107650540415 -448 -0.0720966795946044 -449 0.0232447585917915 -450 -0.0608153052711438 -451 0.0116399374656849 -452 0.0381251008359883 -453 0.0346830496503291 -454 0.0398065018725046 -455 -0.000362012301347499 -456 -0.0785173577161933 -457 0.0300252474048187 -458 -0.0646382374089607 -459 0.00182900934772608 -460 0.0454064481406782 -461 0.0329664080833594 -462 0.0362011391795208 -463 -0.015347551228469 -464 -0.0671509681824761 -465 0.0296481877260799 -466 -0.0746946268126137 -467 0.00641586390856246 -468 0.0470505050556008 -469 0.0366327721242302 -470 0.0377150582080205 -471 -0.0257508722774105 -472 -0.0637151879640854 -473 0.0236744558402174 -474 -0.0680975388310196 -475 0.00255042565832294 -476 0.0512681657479446 -477 0.0403605713503443 -478 0.0359001859859639 -479 -0.029132074768914 -480 -0.0508034717438863 -481 0.0239527602817767 -482 -0.0575129877889322 -483 -0.00369721861473263 -484 0.0505988973989383 -485 0.0361467620291191 -486 0.0368416078787121 -487 -0.032834716815589 -488 -0.0434932898244011 -489 0.00911801422218572 -490 -0.0523537970034941 -491 -0.00821280045148764 -492 0.0487328578561805 -493 0.0392756061114285 -494 0.0353235938763974 -495 -0.0362172978867714 -496 -0.0301630804400009 -497 -0.00312318019738603 -498 -0.0442427016803628 -499 -0.0193549364510511 -500 0.0511246815814022 -501 0.0375525162491352 -502 0.0415223485757893 -503 -0.0434162929277164 -504 -0.0174703151437594 -505 -0.0123368071049746 -506 -0.030092552759096 -507 -0.0259859780907219 -508 0.0606752480087361 -509 0.0379827626715177 -510 0.0429850681863943 -511 -0.0519282882356438 -512 -0.0109290187868267 -513 -0.0198911294093943 -514 -0.0179805613817386 -515 -0.0373506310511416 -516 0.051718263130701 -517 0.0437679408364481 -518 0.0396991923289056 -519 -0.0598738380924832 -520 0.00227956370589332 -521 -0.0315948919060393 -522 -0.00689298816517704 -523 -0.0400683003822942 -524 0.0504116144670193 -525 0.0384452328799252 -526 0.0422779082777363 -527 -0.0628378541858099 -528 0.00648345925565532 -529 -0.0339074110875153 -530 0.00392215913901875 -531 -0.0447371320235012 -532 0.0499683975261213 -533 0.0445342493453758 -534 0.0358507522616787 -535 -0.0462975420467472 -536 0.0065134510940885 -537 -0.0446950607193122 -538 0.0078695055551158 -539 -0.0435564432715238 -540 0.0490054802985018 -541 0.0429751997079501 -542 0.0249996087628272 -543 -0.0442291516924361 -544 0.00869843705070359 -545 -0.0527698107871565 -546 0.00799130494240491 -547 -0.0323718744761137 -548 0.0410065929835765 -549 0.0475759092955819 -550 0.0175755467103812 -551 -0.0376302948184889 -552 0.00700412709467122 -553 -0.0608320774535298 -554 0.0048130064138099 -555 -0.0173352616909856 -556 0.0346973915783743 -557 0.0493903178904071 -558 0.0101108717892249 -559 -0.0265084973202414 -560 0.00358635362684098 -561 -0.0470576145955835 -562 9.30616028058754e-05 -563 -0.009328796983189 -564 0.0265128180743515 -565 0.047184891847067 -566 0.00219163772528874 -567 -0.0121413168884318 -568 -0.00749414671957915 -569 -0.0440813124278593 -570 -0.00813710471833781 -571 0.00114675437656366 -572 0.0162393335738264 -573 0.0504911799834256 -574 -0.00853374126083636 -575 0.000754234959055234 -576 -0.0117204282603961 -577 -0.0354583766676116 -578 -0.0192100536607529 -579 0.00839406418544501 -580 0.00960845163504427 -581 0.0469051048472684 -582 -0.00888902900418868 -583 0.0100099116353234 -584 -0.0179909146856837 -585 -0.0244293914853853 -586 -0.0256760479816353 -587 0.0212220748711766 -588 0.00632084475559719 -589 0.0387313178071368 -590 -0.000554587934313714 -591 0.0124601538908314 -592 -0.0295249733381573 -593 -0.0144520545351094 -594 -0.0331889907164869 -595 0.0212877712137735 -596 0.00590139546386316 -597 0.0273355576179403 -598 0.00735416770830889 -599 0.0128873818372069 -600 -0.0346175922714857 -601 -0.00857703845819032 -602 -0.0362631596335238 -603 0.0242701471795148 -604 0.0131286156780055 -605 0.00696270942062036 -606 0.0188195193146635 -607 0.0103462402033716 -608 -0.0417481445059436 -609 0.00414843805232896 -610 -0.041616927291058 -611 0.0282618294134973 -612 0.02337979916365 -613 -0.00673110780182958 -614 0.0290971868544386 -615 0.017105062059816 -616 -0.0516331546555055 -617 0.0142062007627548 -618 -0.046594757738246 -619 0.0214354322279795 -620 0.0395098993458107 -621 -0.0267793069789269 -622 0.0381323026116677 -623 0.0119813141067502 -624 -0.0521722164918075 -625 0.00907497826142658 -626 -0.0377414784171271 -627 0.0150907402651132 -628 0.0450797547657188 -629 -0.0367261749783528 -630 0.0474940016463238 -631 0.000764223750645765 -632 -0.0464350834773778 -633 0.00292816454844645 -634 -0.0345472431115147 -635 0.0140802099582887 -636 0.046733825449202 -637 -0.0331976317138726 -638 0.0505769917402539 -639 -0.00507624644834293 -640 -0.0344212973139547 -641 -0.00226163410076298 -642 -0.0197922791475835 -643 0.00383630490838536 -644 0.0363444998831405 -645 -0.0152447367341023 -646 0.0410735723819794 -647 -0.00866551034416046 -648 -0.0282028390344346 -649 -0.0138273162520216 -650 -0.013988974897117 -651 -0.00356215450658962 -652 0.0315292998347554 -653 0.00265684065928491 -654 0.0297462860635905 -655 -0.0132763024515043 -656 -0.0151844375022346 -657 -0.0222624267154824 -658 -0.00808783339763846 -659 -0.0118309039774407 -660 0.0257051832194354 -661 0.0139672196593361 -662 0.0297614515417377 -663 -0.021331361380431 -664 -0.00340733006761883 -665 -0.0283789637687968 -666 0.00461054911911345 -667 -0.018250569181885 -668 0.0226081124897128 -669 0.0323347720900023 -670 0.0223372263530966 -671 -0.0329163380381145 -672 0.00653265472132318 -673 -0.0348871958579168 -674 0.0141751097268468 -675 -0.0288075244305473 -676 0.00890270626763702 -677 0.0520479385647175 -678 0.0145072446621148 -679 -0.0415204263536339 -680 0.0171547215622114 -681 -0.0470557518960979 -682 0.0193254756646944 -683 -0.0255419271372531 -684 0.00688287993008186 -685 0.0526562424346814 -686 0.00589567882152875 -687 -0.0339847831638287 -688 0.02068125784698 -689 -0.0420544887083924 -690 0.013314784448658 -691 -0.0245768886587792 -692 0.00903037071195691 -693 0.0563846260400661 -694 -0.00286801368241955 -695 -0.0213844040017938 -696 0.0126629235111523 -697 -0.0309372292635961 -698 0.00276336704503089 -699 -0.015616452692981 -700 0.00419778210216804 -701 0.0536380666776548 -702 -0.012596502198999 -703 -0.0174715146408299 -704 0.00871952059420196 -705 -0.0227565257963439 -706 -0.00318256697092859 -707 -0.0038667173143475 -708 -0.00772968118848665 -709 0.0587207873901504 -710 -0.0193357475432715 -711 -0.0115269673972748 -712 -1.7421858581782e-05 -713 -0.012115015884252 -714 -0.0149797201478353 -715 0.00756590604451175 -716 -0.0126297132883264 -717 0.0594933008421939 -718 -0.0267304156748315 -719 0.00405070013394311 -720 -0.00821048967450404 -721 -0.000558386344514712 -722 -0.0178272992410061 -723 0.0152599286078378 -724 -0.0188510979465177 -725 0.056849489519984 -726 -0.0348880232368348 -727 0.0167352525344068 -728 -0.020642086446652 -729 0.00744701455708182 -730 -0.027702827538011 -731 0.0163569136090967 -732 -0.00705447320310994 -733 0.0411987341306314 -734 -0.0263596539233783 -735 0.0159406402225642 -736 -0.0248727169666328 -737 0.0157261169316672 -738 -0.039588636677443 -739 0.019694261902396 -740 0.00199064144206026 -741 0.0194114269206411 -742 -0.0122293779441828 -743 0.0185339904720133 -744 -0.0293392689309816 -745 0.0259396934186521 -746 -0.0358486717626121 -747 0.0137081983383313 -748 0.0135827148405382 -749 0.00581560048523093 -750 -0.00646581428956839 -751 0.0110071423563427 -752 -0.0246658880723862 -753 0.0234599435571564 -754 -0.0251762927530073 -755 0.00161483936854108 -756 0.0187635618473274 -757 -0.00741664776560292 -758 0.000689537114138283 -759 0.00538728043193201 -760 -0.0121682428833197 -761 0.0107275222262937 -762 -0.0128031079890448 -763 -0.0063592461488716 -764 0.0251504687162441 -765 -0.0239334767266835 -766 0.0114670525225061 -767 -0.00487523656435794 -768 -0.00763249778942318 -769 0.0104557895326864 -770 -0.00080890423935272 -771 -0.011995729852147 -772 0.0283817192968894 -773 -0.0287562177182345 -774 0.0217718323275436 -775 -0.0101305067053654 -776 0.0014155810398293 -777 0.00324589569032011 -778 0.00708416810583891 -779 -0.022169020480487 -780 0.0234205617460705 -781 -0.0208062585550248 -782 0.0203380109609699 -783 -0.020741474408173 -784 0.0135803686158102 -785 -0.00501416160524954 -786 0.0164731425495951 -787 -0.0268911165061168 -788 0.0106549298554577 -789 -0.00845501832015795 -790 0.023385887150049 -791 -0.0315824919189702 -792 0.0225937647734562 -793 -0.0122625199927789 -794 0.0237235394650212 -795 -0.027848735297458 -796 0.0102148026540408 -797 -0.00743306965465811 -798 0.0163964193052597 -799 -0.0205275094803387 -800 0.0268449934848731 -801 -0.0196194639874214 -802 0.0245047543387088 -803 -0.018846409722053 -804 0.00241958726037752 -805 -0.00956161998696891 -806 0.00999709244485242 -807 -0.010418326586979 -808 0.0168983481695472 -809 -0.0127566274792617 -810 0.0217393096303905 -811 -0.0103549544989814 -812 -0.00649684841130904 -813 -0.00620619985783303 -814 0.000695206197500287 -815 -0.00340809372595454 -816 0.0136404808756853 -817 -0.00453202592092646 -818 0.0101641460331084 -819 0.00219305363441266 -820 -0.01561469271582 -821 -0.00960597345375202 -822 -0.00481911400465912 -823 0.00944779427817189 -824 0.00716593193427114 -825 0.00794506991287553 -826 0.00465812347978461 -827 0.010359878693985 -828 -0.020236818592972 -829 -0.0111741972267443 -830 -0.0115950977160356 -831 0.020041269074572 -832 -0.00202251725285479 -833 0.015145433881013 -834 -0.00118772326275258 -835 0.0172802408084672 -836 -0.023141151004978 -837 -0.00684287010020396 -838 -0.0222362324134472 -839 0.0290833389346101 -840 -0.00863450139262045 -841 0.0198832975538718 -842 -0.0104466516619161 -843 0.0216180798136572 -844 -0.0224573860747524 -845 -0.0159317111021684 -846 -0.0124256114118245 -847 0.0319156051078274 -848 -0.020989683927269 -849 0.0331677982754718 -850 -0.0160779048828163 -851 0.0221942143966997 -852 -0.0207114091551809 -853 -0.0193864563297597 -854 -0.00631341525970981 -855 0.0256287918067823 -856 -0.0127670576748428 -857 0.0268901900517397 -858 -0.00929763294799435 -859 0.0179202360715882 -860 -0.0205297531444686 -861 -0.0205828726597419 -862 -0.00590540758107269 -863 0.0155451399031948 -864 -0.000875709073962753 -865 0.0168572022602374 -866 0.0028001228220118 -867 0.0104479294454913 -868 -0.0213679514358647 -869 -0.0190762037709474 -870 -0.00370777717818964 -871 0.00842042601552804 -872 0.010436753298379 -873 0.00801824546756709 -874 0.00905450943087241 -875 0.00193033358362754 -876 -0.0169120672468857 -877 -0.0180536990655791 -878 -0.00178520558336185 -879 0.00342242219620668 -880 0.0209308868044849 -881 0.00123969777653587 -882 0.0189079333389431 -883 -0.00681131675201787 -884 -0.0163080121259332 -885 -0.0199735256447265 -886 0.00366535906601146 -887 -0.00556880592163452 -888 0.0273660773092557 -889 -0.0056009291081872 -890 0.0258105464894864 -891 -0.0110454740226059 -892 -0.0163301324647326 -893 -0.0182941746735561 -894 0.00615903992467205 -895 -0.0162282546172766 -896 0.0386373258470084 -897 -0.0125315671068463 -898 0.0272787535301086 -899 -0.0123831641946371 -900 -0.0133878892299601 -901 -0.0190951688075489 -902 -0.00155326284649879 -903 -0.00410581328198279 -904 0.0316127784251008 -905 -0.00291818177314328 -906 0.0227531671125918 -907 -0.0109655434893085 -908 -0.012799308403064 -909 -0.0160017423860052 -910 -0.0119329107305064 -911 0.00364258505980213 -912 0.0217756860858317 -913 0.010678734327474 -914 0.0134293321905379 -915 -0.0116912782885493 -916 -0.0117630350181795 -917 -0.0135312586647217 -918 -0.0108968297221034 -919 0.00680452587364608 -920 0.0148747844715078 -921 0.0162949694832807 -922 0.00539910868322474 -923 -0.00933468939253505 -924 -0.0106686683836374 -925 -0.0124085659528643 -926 -0.0105711782287246 -927 0.00804235477237977 -928 0.00723801263775247 -929 0.0258061476363918 -930 -0.000684398388361734 -931 -0.00762103435599326 -932 -0.00904303753421588 -933 -0.00745301596275639 -934 -0.0103044124193686 -935 0.00595191617101465 -936 2.14978806537769e-05 -937 0.0352834100860169 -938 -0.00718396988767262 -939 -0.00837792361666858 -940 -0.00720830894781464 -941 -0.00721256609199517 -942 -0.0103563055654315 -943 0.0067689029813515 -944 -0.00615969185391731 -945 0.0366438822751357 -946 -0.00555322732762464 -947 -0.00559909850816345 -948 -0.00807226171468928 -949 -0.0072437466206792 -950 -0.00880657440286336 -951 -0.000406817302546885 -952 0.00334053871073266 -953 0.0282996182562531 -954 -0.00548530337183551 -955 -0.00508266404610792 -956 -0.00475991829082716 -957 -0.00556541448888507 -958 -0.00693102605261411 -959 -0.0068914951848352 -960 0.0124551723792496 -961 0.0205485192799428 -962 -0.0051215464298893 -963 -0.00544517946765895 -964 -0.00360902370385679 -965 -0.00389124817008502 -966 -0.00568418258247609 -967 -0.00451409289805204 -968 0.0126296974425642 -969 0.0119357974221847 -970 -0.00453960421739095 -971 -0.00389602063108262 -972 -0.00253945519375536 -973 -0.00246645747512712 -974 -0.00331176412956721 -975 -0.0045686818998509 -976 0.0119005284725565 -977 0.00477869960024375 -978 -0.00316972429661236 -979 -0.00294762637219811 -980 -0.00197263485163538 -981 -0.00240027919608702 -982 -0.00221728547295443 -983 -0.00268664184058333 -984 0.013078013292045 -985 -0.00054100792945422 -986 -0.000917736517605598 -987 -0.001567052283492 -988 -0.000836676486280892 -989 -0.00221208695388904 -990 -0.00248903162837629 -991 -0.0021625005351972 -992 0.0072477698974949 -993 0.00063353338379511 -994 0.000469110586525005 -995 -0.000441976909684745 -996 -0.000609378899765559 -997 -0.000809499361526555 -998 -0.0010684119522621 -999 -0.00124157520451844 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat deleted file mode 100644 index 0d92cc37..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.0375239849090576 0.029999999999994 0.029999999999994 0.0 1 -2 0.0333089828491211 0.0300000000000011 0.0300000000000011 0.0 2 -3 0.0330851078033447 0.0399999999999991 0.0399999999999991 0.0 3 -4 0.0331559181213379 0.0300000000000011 0.0300000000000011 0.0 4 -5 0.0330770015716553 0.0300000000000011 0.0300000000000011 0.0 5 -6 0.0331110954284668 0.0399999999999991 0.0399999999999991 0.0 6 -7 0.0357470512390137 0.0300000000000011 0.0300000000000011 0.0 7 -8 0.0360550880432129 0.0399999999999991 0.0399999999999991 0.0 8 -9 0.0575530529022217 0.0600000000000023 0.0600000000000023 0.0 9 -10 0.0352299213409424 0.0300000000000011 0.0300000000000011 0.0 10 -11 0.0335679054260254 0.029999999999994 0.029999999999994 0.0 11 -12 0.0332560539245605 0.0400000000000063 0.0400000000000063 0.0 12 -13 0.0364248752593994 0.029999999999994 0.029999999999994 0.0 13 -14 0.033275842666626 0.0400000000000063 0.0400000000000063 0.0 14 -15 0.0336852073669434 0.029999999999994 0.029999999999994 0.0 15 -16 0.0334939956665039 0.0300000000000011 0.0300000000000011 0.0 16 -17 0.0582540035247803 0.0600000000000023 0.0600000000000023 0.0 17 -18 0.0354878902435303 0.0399999999999991 0.0399999999999991 0.0 18 -19 0.0385029315948486 0.0399999999999991 0.0399999999999991 0.0 19 -20 0.0362861156463623 0.0300000000000011 0.0300000000000011 0.0 20 -21 0.035506010055542 0.0399999999999991 0.0399999999999991 0.0 21 -22 0.0334300994873047 0.0300000000000011 0.0300000000000011 0.0 22 -23 0.0329139232635498 0.0399999999999991 0.0399999999999991 0.0 23 -24 0.0332398414611816 0.0300000000000011 0.0300000000000011 0.0 24 -25 0.0579190254211426 0.0600000000000023 0.0600000000000023 0.0 25 -26 0.0361781120300293 0.029999999999994 0.029999999999994 0.0 26 -27 0.0338189601898193 0.0400000000000063 0.0400000000000063 0.0 27 -28 0.0347120761871338 0.029999999999994 0.029999999999994 0.0 28 -29 0.0333528518676758 0.0399999999999991 0.0399999999999991 0.0 29 -30 0.0332620143890381 0.0300000000000011 0.0300000000000011 0.0 30 -31 0.0329258441925049 0.0300000000000011 0.0300000000000011 0.0 31 -32 0.033383846282959 0.0300000000000011 0.0300000000000011 0.0 32 -33 0.0601050853729248 0.0700000000000003 0.0700000000000003 0.0 33 -34 0.0353600978851318 0.0300000000000011 0.0300000000000011 0.0 34 -35 0.0334739685058594 0.0300000000000011 0.0300000000000011 0.0 35 -36 0.0333919525146484 0.0399999999999991 0.0399999999999991 0.0 36 -37 0.034959077835083 0.0300000000000011 0.0300000000000011 0.0 37 -38 0.0332329273223877 0.029999999999994 0.029999999999994 0.0 38 -39 0.0333740711212158 0.0400000000000063 0.0400000000000063 0.0 39 -40 0.0358071327209473 0.029999999999994 0.029999999999994 0.0 40 -41 0.0592548847198486 0.0600000000000023 0.0600000000000023 0.0 41 -42 0.0328431129455566 0.0399999999999991 0.0399999999999991 0.0 42 -43 0.0325570106506348 0.0300000000000011 0.0300000000000011 0.0 43 -44 0.0326550006866455 0.0300000000000011 0.0300000000000011 0.0 44 -45 0.0341711044311523 0.0300000000000011 0.0300000000000011 0.0 45 -46 0.0385479927062988 0.0300000000000011 0.0300000000000011 0.0 46 -47 0.0355618000030518 0.0399999999999991 0.0399999999999991 0.0 47 -48 0.0336899757385254 0.0300000000000011 0.0300000000000011 0.0 48 -49 0.0340290069580078 0.0399999999999991 0.0399999999999991 0.0 49 -50 0.057744026184082 0.0499999999999972 0.0499999999999972 0.0 50 -51 0.0332441329956055 0.0399999999999991 0.0399999999999991 0.0 51 -52 0.0334060192108154 0.0300000000000011 0.0300000000000011 0.0 52 -53 0.0331339836120605 0.0300000000000011 0.0300000000000011 0.0 53 -54 0.0364229679107666 0.0399999999999991 0.0399999999999991 0.0 54 -55 0.0333731174468994 0.0300000000000011 0.0300000000000011 0.0 55 -56 0.0333929061889648 0.0399999999999991 0.0399999999999991 0.0 56 -57 0.0332939624786377 0.0300000000000011 0.0300000000000011 0.0 57 -58 0.0580708980560303 0.0600000000000023 0.0600000000000023 0.0 58 -59 0.0334999561309814 0.0300000000000011 0.0300000000000011 0.0 59 -60 0.0361111164093018 0.0399999999999991 0.0399999999999991 0.0 60 -61 0.0338809490203857 0.0300000000000011 0.0300000000000011 0.0 61 -62 0.0334880352020264 0.0399999999999991 0.0399999999999991 0.0 62 -63 0.0335280895233154 0.029999999999994 0.029999999999994 0.0 63 -64 0.0350849628448486 0.0300000000000011 0.0300000000000011 0.0 64 -65 0.033484935760498 0.0399999999999991 0.0399999999999991 0.0 65 -66 0.0578420162200928 0.0500000000000043 0.0500000000000043 0.0 66 -67 0.0367329120635986 0.0399999999999991 0.0399999999999991 0.0 67 -68 0.0351338386535645 0.0399999999999991 0.0399999999999991 0.0 68 -69 0.0334072113037109 0.0300000000000011 0.0300000000000011 0.0 69 -70 0.0339431762695312 0.0300000000000011 0.0300000000000011 0.0 70 -71 0.0332098007202148 0.0399999999999991 0.0399999999999991 0.0 71 -72 0.034019947052002 0.0300000000000011 0.0300000000000011 0.0 72 -73 0.0393249988555908 0.0399999999999991 0.0399999999999991 0.0 73 -74 0.0685920715332031 0.0600000000000023 0.0600000000000023 0.0 74 -75 0.034276008605957 0.0399999999999991 0.0399999999999991 0.0 75 -76 0.0334501266479492 0.029999999999994 0.029999999999994 0.0 76 -77 0.0332150459289551 0.0300000000000011 0.0300000000000011 0.0 77 -78 0.0333437919616699 0.0399999999999991 0.0399999999999991 0.0 78 -79 0.0332369804382324 0.0300000000000011 0.0300000000000011 0.0 79 -80 0.0360598564147949 0.0399999999999991 0.0399999999999991 0.0 80 -81 0.0335109233856201 0.0300000000000011 0.0300000000000011 0.0 81 -82 0.058535099029541 0.0600000000000023 0.0600000000000023 0.0 82 -83 0.0335390567779541 0.0300000000000011 0.0300000000000011 0.0 83 -84 0.0335979461669922 0.0399999999999991 0.0399999999999991 0.0 84 -85 0.0331900119781494 0.0300000000000011 0.0300000000000011 0.0 85 -86 0.03330397605896 0.0300000000000011 0.0300000000000011 0.0 86 -87 0.0366411209106445 0.0399999999999991 0.0399999999999991 0.0 87 -88 0.0347549915313721 0.0300000000000011 0.0300000000000011 0.0 88 -89 0.0331470966339111 0.0399999999999991 0.0399999999999991 0.0 89 -90 0.0598249435424805 0.0599999999999952 0.0599999999999952 0.0 90 -91 0.0330801010131836 0.0300000000000011 0.0300000000000011 0.0 91 -92 0.0329310894012451 0.0300000000000011 0.0300000000000011 0.0 92 -93 0.032721996307373 0.0300000000000011 0.0300000000000011 0.0 93 -94 0.0355160236358643 0.0399999999999991 0.0399999999999991 0.0 94 -95 0.0339648723602295 0.0300000000000011 0.0300000000000011 0.0 95 -96 0.032512903213501 0.0399999999999991 0.0399999999999991 0.0 96 -97 0.0330419540405273 0.0300000000000011 0.0300000000000011 0.0 97 -98 0.0334761142730713 0.0300000000000011 0.0300000000000011 0.0 98 -99 0.0660569667816162 0.0700000000000003 0.0700000000000003 0.0 99 -100 0.0368058681488037 0.0399999999999991 0.0399999999999991 0.0 100 -101 0.0347878932952881 0.0300000000000011 0.0300000000000011 0.0 101 -102 0.0338079929351807 0.029999999999994 0.029999999999994 0.0 102 -103 0.0334770679473877 0.029999999999994 0.029999999999994 0.0 103 -104 0.0329740047454834 0.0300000000000011 0.0300000000000011 0.0 104 -105 0.0333049297332764 0.0300000000000011 0.0300000000000011 0.0 105 -106 0.033519983291626 0.0399999999999991 0.0399999999999991 0.0 106 -107 0.0611979961395264 0.0600000000000023 0.0600000000000023 0.0 107 -108 0.0340859889984131 0.0300000000000011 0.0300000000000011 0.0 108 -109 0.0335040092468262 0.0399999999999991 0.0399999999999991 0.0 109 -110 0.0334708690643311 0.0300000000000011 0.0300000000000011 0.0 110 -111 0.0335888862609863 0.0300000000000011 0.0300000000000011 0.0 111 -112 0.033301830291748 0.0399999999999991 0.0399999999999991 0.0 112 -113 0.0332660675048828 0.0300000000000011 0.0300000000000011 0.0 113 -114 0.0370340347290039 0.0399999999999991 0.0399999999999991 0.0 114 -115 0.0586259365081787 0.0599999999999952 0.0599999999999952 0.0 115 -116 0.0336349010467529 0.0300000000000011 0.0300000000000011 0.0 116 -117 0.0350830554962158 0.0300000000000011 0.0300000000000011 0.0 117 -118 0.033397912979126 0.0399999999999991 0.0399999999999991 0.0 118 -119 0.0334382057189941 0.0300000000000011 0.0300000000000011 0.0 119 -120 0.0333988666534424 0.0399999999999991 0.0399999999999991 0.0 120 -121 0.0362389087677002 0.0300000000000011 0.0300000000000011 0.0 121 -122 0.033973217010498 0.0399999999999991 0.0399999999999991 0.0 122 -123 0.0578141212463379 0.0499999999999972 0.0499999999999972 0.0 123 -124 0.033689022064209 0.0400000000000063 0.0400000000000063 0.0 124 -125 0.0340471267700195 0.029999999999994 0.029999999999994 0.0 125 -126 0.0395550727844238 0.0400000000000063 0.0400000000000063 0.0 126 -127 0.0365371704101562 0.0399999999999991 0.0399999999999991 0.0 127 -128 0.034188985824585 0.0300000000000011 0.0300000000000011 0.0 128 -129 0.0336990356445312 0.0399999999999991 0.0399999999999991 0.0 129 -130 0.033534049987793 0.029999999999994 0.029999999999994 0.0 130 -131 0.0577750205993652 0.0600000000000023 0.0600000000000023 0.0 131 -132 0.0339059829711914 0.0300000000000011 0.0300000000000011 0.0 132 -133 0.0334141254425049 0.0300000000000011 0.0300000000000011 0.0 133 -134 0.0364940166473389 0.0399999999999991 0.0399999999999991 0.0 134 -135 0.0346250534057617 0.0399999999999991 0.0399999999999991 0.0 135 -136 0.03348708152771 0.0300000000000011 0.0300000000000011 0.0 136 -137 0.0330390930175781 0.0300000000000011 0.0300000000000011 0.0 137 -138 0.0333828926086426 0.0399999999999991 0.0399999999999991 0.0 138 -139 0.0577211380004883 0.0499999999999972 0.0499999999999972 0.0 139 -140 0.0367538928985596 0.0399999999999991 0.0399999999999991 0.0 140 -141 0.0339748859405518 0.0300000000000011 0.0300000000000011 0.0 141 -142 0.0334391593933105 0.0399999999999991 0.0399999999999991 0.0 142 -143 0.0334470272064209 0.0300000000000011 0.0300000000000011 0.0 143 -144 0.0356760025024414 0.0399999999999991 0.0399999999999991 0.0 144 -145 0.0332551002502441 0.0300000000000011 0.0300000000000011 0.0 145 -146 0.0335030555725098 0.0300000000000011 0.0300000000000011 0.0 146 -147 0.0603840351104736 0.0600000000000023 0.0600000000000023 0.0 147 -148 0.033195972442627 0.0399999999999991 0.0399999999999991 0.0 148 -149 0.0326118469238281 0.0300000000000011 0.0300000000000011 0.0 149 -150 0.0324470996856689 0.029999999999994 0.029999999999994 0.0 150 -151 0.0330009460449219 0.0400000000000063 0.0400000000000063 0.0 151 -152 0.0324180126190186 0.029999999999994 0.029999999999994 0.0 152 -153 0.0400440692901611 0.0400000000000063 0.0400000000000063 0.0 153 -154 0.0362899303436279 0.029999999999994 0.029999999999994 0.0 154 -155 0.0349278450012207 0.0400000000000063 0.0400000000000063 0.0 155 -156 0.0600240230560303 0.0599999999999952 0.0599999999999952 0.0 156 -157 0.0334708690643311 0.0300000000000011 0.0300000000000011 0.0 157 -158 0.0335209369659424 0.0399999999999991 0.0399999999999991 0.0 158 -159 0.0335359573364258 0.0300000000000011 0.0300000000000011 0.0 159 -160 0.0334579944610596 0.0300000000000011 0.0300000000000011 0.0 160 -161 0.0362169742584229 0.0399999999999991 0.0399999999999991 0.0 161 -162 0.0338380336761475 0.0300000000000011 0.0300000000000011 0.0 162 -163 0.0335981845855713 0.0399999999999991 0.0399999999999991 0.0 163 -164 0.0578079223632812 0.0499999999999972 0.0499999999999972 0.0 164 -165 0.0334019660949707 0.0399999999999991 0.0399999999999991 0.0 165 -166 0.0331990718841553 0.0300000000000011 0.0300000000000011 0.0 166 -167 0.0360620021820068 0.0399999999999991 0.0399999999999991 0.0 167 -168 0.0344648361206055 0.0300000000000011 0.0300000000000011 0.0 168 -169 0.0341999530792236 0.0399999999999991 0.0399999999999991 0.0 169 -170 0.0331728458404541 0.0300000000000011 0.0300000000000011 0.0 170 -171 0.0350158214569092 0.0300000000000011 0.0300000000000011 0.0 171 -172 0.0580298900604248 0.0600000000000023 0.0600000000000023 0.0 172 -173 0.0335690975189209 0.0300000000000011 0.0300000000000011 0.0 173 -174 0.036384105682373 0.0399999999999991 0.0399999999999991 0.0 174 -175 0.034492015838623 0.0300000000000011 0.0300000000000011 0.0 175 -176 0.03336501121521 0.0399999999999991 0.0399999999999991 0.0 176 -177 0.0331079959869385 0.029999999999994 0.029999999999994 0.0 177 -178 0.0331339836120605 0.0300000000000011 0.0300000000000011 0.0 178 -179 0.0350081920623779 0.0399999999999991 0.0399999999999991 0.0 179 -180 0.0666470527648926 0.0700000000000003 0.0700000000000003 0.0 180 -181 0.0338301658630371 0.0300000000000011 0.0300000000000011 0.0 181 -182 0.0340950489044189 0.0300000000000011 0.0300000000000011 0.0 182 -183 0.0334529876708984 0.0399999999999991 0.0399999999999991 0.0 183 -184 0.0331630706787109 0.0300000000000011 0.0300000000000011 0.0 184 -185 0.0333731174468994 0.0300000000000011 0.0300000000000011 0.0 185 -186 0.0330700874328613 0.0399999999999991 0.0399999999999991 0.0 186 -187 0.0334250926971436 0.0300000000000011 0.0300000000000011 0.0 187 -188 0.0619869232177734 0.0600000000000023 0.0600000000000023 0.0 188 -189 0.0336270332336426 0.0399999999999991 0.0399999999999991 0.0 189 -190 0.0331699848175049 0.029999999999994 0.029999999999994 0.0 190 -191 0.033411979675293 0.0300000000000011 0.0300000000000011 0.0 191 -192 0.0346980094909668 0.0399999999999991 0.0399999999999991 0.0 192 -193 0.0330710411071777 0.0300000000000011 0.0300000000000011 0.0 193 -194 0.0360589027404785 0.0399999999999991 0.0399999999999991 0.0 194 -195 0.0341928005218506 0.0300000000000011 0.0300000000000011 0.0 195 -196 0.0596940517425537 0.0600000000000023 0.0600000000000023 0.0 196 -197 0.0352950096130371 0.0300000000000011 0.0300000000000011 0.0 197 -198 0.0335190296173096 0.0399999999999991 0.0399999999999991 0.0 198 -199 0.0334808826446533 0.0300000000000011 0.0300000000000011 0.0 199 -200 0.0335469245910645 0.0399999999999991 0.0399999999999991 0.0 200 -201 0.035862922668457 0.0300000000000011 0.0300000000000011 0.0 201 -202 0.034390926361084 0.0399999999999991 0.0399999999999991 0.0 202 -203 0.0333080291748047 0.0300000000000011 0.0300000000000011 0.0 203 -204 0.0580418109893799 0.0599999999999952 0.0599999999999952 0.0 204 -205 0.0345079898834229 0.0300000000000011 0.0300000000000011 0.0 205 -206 0.041719913482666 0.0499999999999972 0.0399999999999991 0.01 206 -207 0.0368390083312988 0.0399999999999991 0.0399999999999991 0.0 207 -208 0.0351078510284424 0.0300000000000011 0.0300000000000011 0.0 208 -209 0.0345809459686279 0.0399999999999991 0.0399999999999991 0.0 209 -210 0.0339300632476807 0.0300000000000011 0.0300000000000011 0.0 210 -211 0.0333361625671387 0.0399999999999991 0.0399999999999991 0.0 211 -212 0.0581560134887695 0.0600000000000023 0.0600000000000023 0.0 212 -213 0.0329880714416504 0.0300000000000011 0.0300000000000011 0.0 213 -214 0.0360338687896729 0.0300000000000011 0.0300000000000011 0.0 214 -215 0.0338609218597412 0.0399999999999991 0.0399999999999991 0.0 215 -216 0.0329849720001221 0.0300000000000011 0.0300000000000011 0.0 216 -217 0.0327110290527344 0.029999999999994 0.029999999999994 0.0 217 -218 0.0328159332275391 0.0400000000000063 0.0400000000000063 0.0 218 -219 0.0330610275268555 0.029999999999994 0.029999999999994 0.0 219 -220 0.03336501121521 0.0300000000000011 0.0300000000000011 0.0 220 -221 0.0611529350280762 0.0600000000000023 0.0600000000000023 0.0 221 -222 0.0351941585540771 0.0399999999999991 0.0399999999999991 0.0 222 -223 0.0333490371704102 0.0300000000000011 0.0300000000000011 0.0 223 -224 0.0350041389465332 0.0399999999999991 0.0399999999999991 0.0 224 -225 0.0333740711212158 0.0300000000000011 0.0300000000000011 0.0 225 -226 0.0332489013671875 0.0300000000000011 0.0300000000000011 0.0 226 -227 0.0336949825286865 0.0399999999999991 0.0399999999999991 0.0 227 -228 0.035956859588623 0.0300000000000011 0.0300000000000011 0.0 228 -229 0.0582809448242188 0.0599999999999952 0.0599999999999952 0.0 229 -230 0.0335919857025146 0.0300000000000011 0.0300000000000011 0.0 230 -231 0.0334489345550537 0.0399999999999991 0.0399999999999991 0.0 231 -232 0.0346810817718506 0.0300000000000011 0.0300000000000011 0.0 232 -233 0.0393500328063965 0.0399999999999991 0.0399999999999991 0.0 233 -234 0.0365040302276611 0.0399999999999991 0.0399999999999991 0.0 234 -235 0.0341880321502686 0.0300000000000011 0.0300000000000011 0.0 235 -236 0.0340659618377686 0.0399999999999991 0.0399999999999991 0.0 236 -237 0.0579462051391602 0.0500000000000043 0.0500000000000043 0.0 237 -238 0.0337111949920654 0.0399999999999991 0.0399999999999991 0.0 238 -239 0.0335190296173096 0.0300000000000011 0.0300000000000011 0.0 239 -240 0.0335848331451416 0.0399999999999991 0.0399999999999991 0.0 240 -241 0.0367398262023926 0.0300000000000011 0.0300000000000011 0.0 241 -242 0.0346360206604004 0.0399999999999991 0.0399999999999991 0.0 242 -243 0.0332989692687988 0.0300000000000011 0.0300000000000011 0.0 243 -244 0.0345680713653564 0.029999999999994 0.029999999999994 0.0 244 -245 0.0580320358276367 0.0600000000000023 0.0600000000000023 0.0 245 -246 0.0333890914916992 0.0399999999999991 0.0399999999999991 0.0 246 -247 0.0363030433654785 0.0300000000000011 0.0300000000000011 0.0 247 -248 0.0343329906463623 0.0399999999999991 0.0399999999999991 0.0 248 -249 0.0347940921783447 0.0300000000000011 0.0300000000000011 0.0 249 -250 0.0332629680633545 0.0300000000000011 0.0300000000000011 0.0 250 -251 0.0347621440887451 0.0399999999999991 0.0399999999999991 0.0 251 -252 0.0334999561309814 0.0300000000000011 0.0300000000000011 0.0 252 -253 0.0580670833587646 0.0600000000000023 0.0600000000000023 0.0 253 -254 0.0367870330810547 0.0399999999999991 0.0399999999999991 0.0 254 -255 0.0336589813232422 0.0300000000000011 0.0300000000000011 0.0 255 -256 0.0331900119781494 0.029999999999994 0.029999999999994 0.0 256 -257 0.0331740379333496 0.0399999999999991 0.0399999999999991 0.0 257 -258 0.0331830978393555 0.0300000000000011 0.0300000000000011 0.0 258 -259 0.037837028503418 0.0399999999999991 0.0399999999999991 0.0 259 -260 0.0366449356079102 0.0300000000000011 0.0300000000000011 0.0 260 -261 0.0612552165985107 0.0599999999999952 0.0599999999999952 0.0 261 -262 0.0344550609588623 0.0300000000000011 0.0300000000000011 0.0 262 -263 0.0333309173583984 0.0300000000000011 0.0300000000000011 0.0 263 -264 0.0331869125366211 0.0399999999999991 0.0399999999999991 0.0 264 -265 0.0332980155944824 0.0300000000000011 0.0300000000000011 0.0 265 -266 0.0332081317901611 0.0300000000000011 0.0300000000000011 0.0 266 -267 0.0328857898712158 0.0399999999999991 0.0399999999999991 0.0 267 -268 0.036323070526123 0.0300000000000011 0.0300000000000011 0.0 268 -269 0.0584030151367188 0.0599999999999952 0.0599999999999952 0.0 269 -270 0.0336670875549316 0.0399999999999991 0.0399999999999991 0.0 270 -271 0.0333220958709717 0.0300000000000011 0.0300000000000011 0.0 271 -272 0.0331919193267822 0.0300000000000011 0.0300000000000011 0.0 272 -273 0.0332930088043213 0.0399999999999991 0.0399999999999991 0.0 273 -274 0.0363700389862061 0.0300000000000011 0.0300000000000011 0.0 274 -275 0.0336799621582031 0.0399999999999991 0.0399999999999991 0.0 275 -276 0.0346400737762451 0.0300000000000011 0.0300000000000011 0.0 276 -277 0.0583391189575195 0.0600000000000023 0.0600000000000023 0.0 277 -278 0.0353269577026367 0.0300000000000011 0.0300000000000011 0.0 278 -279 0.0334451198577881 0.0399999999999991 0.0399999999999991 0.0 279 -280 0.0338170528411865 0.0300000000000011 0.0300000000000011 0.0 280 -281 0.0358221530914307 0.0399999999999991 0.0399999999999991 0.0 281 -282 0.033682107925415 0.0300000000000011 0.0300000000000011 0.0 282 -283 0.0331659317016602 0.029999999999994 0.029999999999994 0.0 283 -284 0.0337538719177246 0.0399999999999991 0.0399999999999991 0.0 284 -285 0.0577969551086426 0.0600000000000023 0.0600000000000023 0.0 285 -286 0.0399131774902344 0.0399999999999991 0.0399999999999991 0.0 286 -287 0.0358040332794189 0.0300000000000011 0.0300000000000011 0.0 287 -288 0.0327050685882568 0.0300000000000011 0.0300000000000011 0.0 288 -289 0.0338749885559082 0.0399999999999991 0.0399999999999991 0.0 289 -290 0.0324099063873291 0.0300000000000011 0.0300000000000011 0.0 290 -291 0.032336950302124 0.0300000000000011 0.0300000000000011 0.0 291 -292 0.0333211421966553 0.0399999999999991 0.0399999999999991 0.0 292 -293 0.0579719543457031 0.0499999999999972 0.0499999999999972 0.0 293 -294 0.0362699031829834 0.0399999999999991 0.0399999999999991 0.0 294 -295 0.0343790054321289 0.0300000000000011 0.0300000000000011 0.0 295 -296 0.0331552028656006 0.0399999999999991 0.0399999999999991 0.0 296 -297 0.0328569412231445 0.0300000000000011 0.0300000000000011 0.0 297 -298 0.0329990386962891 0.0300000000000011 0.0300000000000011 0.0 298 -299 0.0327639579772949 0.0399999999999991 0.0399999999999991 0.0 299 -300 0.0331850051879883 0.0300000000000011 0.0300000000000011 0.0 300 -301 0.0610020160675049 0.0600000000000023 0.0600000000000023 0.0 301 -302 0.0331580638885498 0.0300000000000011 0.0300000000000011 0.0 302 -303 0.0325980186462402 0.0399999999999991 0.0399999999999991 0.0 303 -304 0.0325989723205566 0.029999999999994 0.029999999999994 0.0 304 -305 0.0341310501098633 0.0300000000000011 0.0300000000000011 0.0 305 -306 0.0326070785522461 0.0399999999999991 0.0399999999999991 0.0 306 -307 0.032383918762207 0.0300000000000011 0.0300000000000011 0.0 307 -308 0.0361649990081787 0.0300000000000011 0.0300000000000011 0.0 308 -309 0.0585198402404785 0.0600000000000023 0.0600000000000023 0.0 309 -310 0.0331130027770996 0.0399999999999991 0.0399999999999991 0.0 310 -311 0.0329859256744385 0.0300000000000011 0.0300000000000011 0.0 311 -312 0.0329129695892334 0.0300000000000011 0.0300000000000011 0.0 312 -313 0.0405938625335693 0.0399999999999991 0.0399999999999991 0.0 313 -314 0.0329680442810059 0.0300000000000011 0.0300000000000011 0.0 314 -315 0.0359671115875244 0.0399999999999991 0.0399999999999991 0.0 315 -316 0.0347959995269775 0.0399999999999991 0.0399999999999991 0.0 316 -317 0.0335128307342529 0.0300000000000011 0.0300000000000011 0.0 317 -318 0.0581021308898926 0.0599999999999952 0.0599999999999952 0.0 318 -319 0.033390998840332 0.0300000000000011 0.0300000000000011 0.0 319 -320 0.0332300662994385 0.0300000000000011 0.0300000000000011 0.0 320 -321 0.0363011360168457 0.0399999999999991 0.0399999999999991 0.0 321 -322 0.0331549644470215 0.0300000000000011 0.0300000000000011 0.0 322 -323 0.0341241359710693 0.0399999999999991 0.0399999999999991 0.0 323 -324 0.0336441993713379 0.0300000000000011 0.0300000000000011 0.0 324 -325 0.0336179733276367 0.0300000000000011 0.0300000000000011 0.0 325 -326 0.0578069686889648 0.0599999999999952 0.0599999999999952 0.0 326 -327 0.0333080291748047 0.0400000000000063 0.0400000000000063 0.0 327 -328 0.0363671779632568 0.029999999999994 0.029999999999994 0.0 328 -329 0.0343098640441895 0.0400000000000063 0.0400000000000063 0.0 329 -330 0.033099889755249 0.029999999999994 0.029999999999994 0.0 330 -331 0.0332112312316895 0.0300000000000011 0.0300000000000011 0.0 331 -332 0.0349369049072266 0.0399999999999991 0.0399999999999991 0.0 332 -333 0.033397912979126 0.0300000000000011 0.0300000000000011 0.0 333 -334 0.0581459999084473 0.0600000000000023 0.0600000000000023 0.0 334 -335 0.0366590023040771 0.0300000000000011 0.0300000000000011 0.0 335 -336 0.0336220264434814 0.0399999999999991 0.0399999999999991 0.0 336 -337 0.0332498550415039 0.0300000000000011 0.0300000000000011 0.0 337 -338 0.0331971645355225 0.0399999999999991 0.0399999999999991 0.0 338 -339 0.0332369804382324 0.0300000000000011 0.0300000000000011 0.0 339 -340 0.0404288768768311 0.0399999999999991 0.0399999999999991 0.0 340 -341 0.0335631370544434 0.0300000000000011 0.0300000000000011 0.0 341 -342 0.0613040924072266 0.0599999999999952 0.0599999999999952 0.0 342 -343 0.0339159965515137 0.0399999999999991 0.0399999999999991 0.0 343 -344 0.0333619117736816 0.0300000000000011 0.0300000000000011 0.0 344 -345 0.0331740379333496 0.0300000000000011 0.0300000000000011 0.0 345 -346 0.0331220626831055 0.0399999999999991 0.0399999999999991 0.0 346 -347 0.0331380367279053 0.0300000000000011 0.0300000000000011 0.0 347 -348 0.0358641147613525 0.0399999999999991 0.0399999999999991 0.0 348 -349 0.0335299968719482 0.0300000000000011 0.0300000000000011 0.0 349 -350 0.0584430694580078 0.0600000000000023 0.0600000000000023 0.0 350 -351 0.0353488922119141 0.029999999999994 0.029999999999994 0.0 351 -352 0.03336501121521 0.0400000000000063 0.0400000000000063 0.0 352 -353 0.0332889556884766 0.029999999999994 0.029999999999994 0.0 353 -354 0.0334041118621826 0.0300000000000011 0.0300000000000011 0.0 354 -355 0.0363349914550781 0.0399999999999991 0.0399999999999991 0.0 355 -356 0.0346698760986328 0.0300000000000011 0.0300000000000011 0.0 356 -357 0.0335850715637207 0.0399999999999991 0.0399999999999991 0.0 357 -358 0.0599031448364258 0.0600000000000023 0.0600000000000023 0.0 358 -359 0.0340287685394287 0.0300000000000011 0.0300000000000011 0.0 359 -360 0.0335278511047363 0.0300000000000011 0.0300000000000011 0.0 360 -361 0.0349221229553223 0.0399999999999991 0.0399999999999991 0.0 361 -362 0.0355300903320312 0.0300000000000011 0.0300000000000011 0.0 362 -363 0.0349609851837158 0.0399999999999991 0.0399999999999991 0.0 363 -364 0.0329630374908447 0.0300000000000011 0.0300000000000011 0.0 364 -365 0.0333020687103271 0.0399999999999991 0.0399999999999991 0.0 365 -366 0.065701961517334 0.0599999999999952 0.0599999999999952 0.0 366 -367 0.0337100028991699 0.0400000000000063 0.0400000000000063 0.0 367 -368 0.0366199016571045 0.029999999999994 0.029999999999994 0.0 368 -369 0.0340349674224854 0.0400000000000063 0.0400000000000063 0.0 369 -370 0.0338621139526367 0.029999999999994 0.029999999999994 0.0 370 -371 0.0332958698272705 0.0300000000000011 0.0300000000000011 0.0 371 -372 0.0330479145050049 0.0399999999999991 0.0399999999999991 0.0 372 -373 0.033778190612793 0.0300000000000011 0.0300000000000011 0.0 373 -374 0.0588729381561279 0.0600000000000023 0.0600000000000023 0.0 374 -375 0.036099910736084 0.0399999999999991 0.0399999999999991 0.0 375 -376 0.0358579158782959 0.0300000000000011 0.0300000000000011 0.0 376 -377 0.03354811668396 0.0399999999999991 0.0399999999999991 0.0 377 -378 0.0334241390228271 0.0300000000000011 0.0300000000000011 0.0 378 -379 0.0335249900817871 0.0300000000000011 0.0300000000000011 0.0 379 -380 0.0329539775848389 0.0399999999999991 0.0399999999999991 0.0 380 -381 0.0334098339080811 0.0300000000000011 0.0300000000000011 0.0 381 -382 0.0632669925689697 0.0599999999999952 0.0599999999999952 0.0 382 -383 0.033499002456665 0.0399999999999991 0.0399999999999991 0.0 383 -384 0.0333430767059326 0.0300000000000011 0.0300000000000011 0.0 384 -385 0.03495192527771 0.0300000000000011 0.0300000000000011 0.0 385 -386 0.0333530902862549 0.0399999999999991 0.0399999999999991 0.0 386 -387 0.0335168838500977 0.0300000000000011 0.0300000000000011 0.0 387 -388 0.0355610847473145 0.0399999999999991 0.0399999999999991 0.0 388 -389 0.0336718559265137 0.0300000000000011 0.0300000000000011 0.0 389 -390 0.0594749450683594 0.0600000000000023 0.0600000000000023 0.0 390 -391 0.03342604637146 0.029999999999994 0.029999999999994 0.0 391 -392 0.0333490371704102 0.0400000000000063 0.0400000000000063 0.0 392 -393 0.0401210784912109 0.0399999999999991 0.0399999999999991 0.0 393 -394 0.0331671237945557 0.0300000000000011 0.0300000000000011 0.0 394 -395 0.0364630222320557 0.0399999999999991 0.0399999999999991 0.0 395 -396 0.0339119434356689 0.0300000000000011 0.0300000000000011 0.0 396 -397 0.0332529544830322 0.029999999999994 0.029999999999994 0.0 397 -398 0.0581979751586914 0.0600000000000023 0.0600000000000023 0.0 398 -399 0.0337510108947754 0.0300000000000011 0.0300000000000011 0.0 399 -400 0.0334861278533936 0.0300000000000011 0.0300000000000011 0.0 400 -401 0.0362730026245117 0.0300000000000011 0.0300000000000011 0.0 401 -402 0.03330397605896 0.0399999999999991 0.0399999999999991 0.0 402 -403 0.0347201824188232 0.0300000000000011 0.0300000000000011 0.0 403 -404 0.0331459045410156 0.0399999999999991 0.0399999999999991 0.0 404 -405 0.0333847999572754 0.0300000000000011 0.0300000000000011 0.0 405 -406 0.0580871105194092 0.0599999999999952 0.0599999999999952 0.0 406 -407 0.0334339141845703 0.0300000000000011 0.0300000000000011 0.0 407 -408 0.0370500087738037 0.0399999999999991 0.0399999999999991 0.0 408 -409 0.0344600677490234 0.0300000000000011 0.0300000000000011 0.0 409 -410 0.0331830978393555 0.0399999999999991 0.0399999999999991 0.0 410 -411 0.0335149765014648 0.0300000000000011 0.0300000000000011 0.0 411 -412 0.0346379280090332 0.0300000000000011 0.0300000000000011 0.0 412 -413 0.0334169864654541 0.0399999999999991 0.0399999999999991 0.0 413 -414 0.0582180023193359 0.0600000000000023 0.0600000000000023 0.0 414 -415 0.0361251831054688 0.0300000000000011 0.0300000000000011 0.0 415 -416 0.0350911617279053 0.0399999999999991 0.0399999999999991 0.0 416 -417 0.0334968566894531 0.0300000000000011 0.0300000000000011 0.0 417 -418 0.0332348346710205 0.029999999999994 0.029999999999994 0.0 418 -419 0.0332620143890381 0.0400000000000063 0.0400000000000063 0.0 419 -420 0.0409719944000244 0.0399999999999991 0.0399999999999991 0.0 420 -421 0.0333600044250488 0.0300000000000011 0.0300000000000011 0.0 421 -422 0.0630040168762207 0.0599999999999952 0.0599999999999952 0.0 422 -423 0.0343139171600342 0.0399999999999991 0.0399999999999991 0.0 423 -424 0.0333878993988037 0.0300000000000011 0.0300000000000011 0.0 424 -425 0.0333099365234375 0.0300000000000011 0.0300000000000011 0.0 425 -426 0.0331859588623047 0.0399999999999991 0.0399999999999991 0.0 426 -427 0.0331718921661377 0.0300000000000011 0.0300000000000011 0.0 427 -428 0.0377118587493896 0.0399999999999991 0.0399999999999991 0.0 428 -429 0.0332839488983154 0.0300000000000011 0.0300000000000011 0.0 429 -430 0.0597720146179199 0.0600000000000023 0.0600000000000023 0.0 430 -431 0.0336380004882812 0.029999999999994 0.029999999999994 0.0 431 -432 0.0333139896392822 0.0400000000000063 0.0400000000000063 0.0 432 -433 0.0331470966339111 0.029999999999994 0.029999999999994 0.0 433 -434 0.0334060192108154 0.0300000000000011 0.0300000000000011 0.0 434 -435 0.0361709594726562 0.0399999999999991 0.0399999999999991 0.0 435 -436 0.0336370468139648 0.0300000000000011 0.0300000000000011 0.0 436 -437 0.0333271026611328 0.0399999999999991 0.0399999999999991 0.0 437 -438 0.0596990585327148 0.0500000000000043 0.0500000000000043 0.0 438 -439 0.0337719917297363 0.0399999999999991 0.0399999999999991 0.0 439 -440 0.0335121154785156 0.0300000000000011 0.0300000000000011 0.0 440 -441 0.0355470180511475 0.0399999999999991 0.0399999999999991 0.0 441 -442 0.0341551303863525 0.0300000000000011 0.0300000000000011 0.0 442 -443 0.033562183380127 0.0399999999999991 0.0399999999999991 0.0 443 -444 0.033012866973877 0.0300000000000011 0.0300000000000011 0.0 444 -445 0.0334839820861816 0.029999999999994 0.029999999999994 0.0 445 -446 0.064687967300415 0.0700000000000003 0.0700000000000003 0.0 446 -447 0.0336949825286865 0.0300000000000011 0.0300000000000011 0.0 447 -448 0.0361959934234619 0.0399999999999991 0.0399999999999991 0.0 448 -449 0.0349109172821045 0.0300000000000011 0.0300000000000011 0.0 449 -450 0.0339109897613525 0.0399999999999991 0.0399999999999991 0.0 450 -451 0.0331861972808838 0.0300000000000011 0.0300000000000011 0.0 451 -452 0.0328741073608398 0.0300000000000011 0.0300000000000011 0.0 452 -453 0.0332541465759277 0.0399999999999991 0.0399999999999991 0.0 453 -454 0.0579590797424316 0.0500000000000043 0.0500000000000043 0.0 454 -455 0.0366909503936768 0.0399999999999991 0.0399999999999991 0.0 455 -456 0.0345089435577393 0.0300000000000011 0.0300000000000011 0.0 456 -457 0.0332140922546387 0.0399999999999991 0.0399999999999991 0.0 457 -458 0.0330581665039062 0.029999999999994 0.029999999999994 0.0 458 -459 0.0331969261169434 0.0300000000000011 0.0300000000000011 0.0 459 -460 0.0328719615936279 0.0399999999999991 0.0399999999999991 0.0 460 -461 0.033440113067627 0.0300000000000011 0.0300000000000011 0.0 461 -462 0.0617790222167969 0.0600000000000023 0.0600000000000023 0.0 462 -463 0.033750057220459 0.0300000000000011 0.0300000000000011 0.0 463 -464 0.0332808494567871 0.0399999999999991 0.0399999999999991 0.0 464 -465 0.0350358486175537 0.0300000000000011 0.0300000000000011 0.0 465 -466 0.0332400798797607 0.0399999999999991 0.0399999999999991 0.0 466 -467 0.0332620143890381 0.0300000000000011 0.0300000000000011 0.0 467 -468 0.0343048572540283 0.0300000000000011 0.0300000000000011 0.0 468 -469 0.0357210636138916 0.0399999999999991 0.0399999999999991 0.0 469 -470 0.0584299564361572 0.0599999999999952 0.0599999999999952 0.0 470 -471 0.0334739685058594 0.0300000000000011 0.0300000000000011 0.0 471 -472 0.0334410667419434 0.0300000000000011 0.0300000000000011 0.0 472 -473 0.0423488616943359 0.0499999999999972 0.0499999999999972 0.0 473 -474 0.033174991607666 0.0300000000000011 0.0300000000000011 0.0 474 -475 0.0360331535339355 0.0300000000000011 0.0300000000000011 0.0 475 -476 0.036052942276001 0.0399999999999991 0.0399999999999991 0.0 476 -477 0.0333659648895264 0.0300000000000011 0.0300000000000011 0.0 477 -478 0.0577530860900879 0.0600000000000023 0.0600000000000023 0.0 478 -479 0.0335140228271484 0.0399999999999991 0.0399999999999991 0.0 479 -480 0.0333487987518311 0.0300000000000011 0.0300000000000011 0.0 480 -481 0.0346870422363281 0.0300000000000011 0.0300000000000011 0.0 481 -482 0.0349428653717041 0.0399999999999991 0.0399999999999991 0.0 482 -483 0.0336499214172363 0.0300000000000011 0.0300000000000011 0.0 483 -484 0.0331089496612549 0.0399999999999991 0.0399999999999991 0.0 484 -485 0.0334107875823975 0.029999999999994 0.029999999999994 0.0 485 -486 0.0580129623413086 0.0600000000000023 0.0600000000000023 0.0 486 -487 0.0336880683898926 0.0300000000000011 0.0300000000000011 0.0 487 -488 0.0364341735839844 0.0399999999999991 0.0399999999999991 0.0 488 -489 0.0356800556182861 0.0300000000000011 0.0300000000000011 0.0 489 -490 0.033689022064209 0.0399999999999991 0.0399999999999991 0.0 490 -491 0.0335180759429932 0.0300000000000011 0.0300000000000011 0.0 491 -492 0.0345418453216553 0.0300000000000011 0.0300000000000011 0.0 492 -493 0.0336930751800537 0.0399999999999991 0.0399999999999991 0.0 493 -494 0.0580000877380371 0.0600000000000023 0.0600000000000023 0.0 494 -495 0.0361080169677734 0.029999999999994 0.029999999999994 0.0 495 -496 0.0336720943450928 0.0400000000000063 0.0400000000000063 0.0 496 -497 0.0333058834075928 0.029999999999994 0.029999999999994 0.0 497 -498 0.0333189964294434 0.0300000000000011 0.0300000000000011 0.0 498 -499 0.0332541465759277 0.0399999999999991 0.0399999999999991 0.0 499 -500 0.0402250289916992 0.0399999999999991 0.0399999999999991 0.0 500 -501 0.0334169864654541 0.0300000000000011 0.0300000000000011 0.0 501 -502 0.0628290176391602 0.0600000000000023 0.0600000000000023 0.0 502 -503 0.0341489315032959 0.0399999999999991 0.0399999999999991 0.0 503 -504 0.0333640575408936 0.0300000000000011 0.0300000000000011 0.0 504 -505 0.03312087059021 0.0300000000000011 0.0300000000000011 0.0 505 -506 0.0330550670623779 0.0399999999999991 0.0399999999999991 0.0 506 -507 0.0333640575408936 0.0300000000000011 0.0300000000000011 0.0 507 -508 0.0347590446472168 0.0300000000000011 0.0300000000000011 0.0 508 -509 0.0346050262451172 0.0399999999999991 0.0399999999999991 0.0 509 -510 0.0589158535003662 0.0599999999999952 0.0599999999999952 0.0 510 -511 0.0335807800292969 0.0300000000000011 0.0300000000000011 0.0 511 -512 0.0333380699157715 0.0399999999999991 0.0399999999999991 0.0 512 -513 0.0332279205322266 0.0300000000000011 0.0300000000000011 0.0 513 -514 0.0332310199737549 0.0300000000000011 0.0300000000000011 0.0 514 -515 0.0361509323120117 0.0399999999999991 0.0399999999999991 0.0 515 -516 0.0350699424743652 0.0300000000000011 0.0300000000000011 0.0 516 -517 0.0337638854980469 0.0399999999999991 0.0399999999999991 0.0 517 -518 0.0580861568450928 0.0600000000000023 0.0600000000000023 0.0 518 -519 0.035269021987915 0.0300000000000011 0.0300000000000011 0.0 519 -520 0.0334429740905762 0.029999999999994 0.029999999999994 0.0 520 -521 0.0334320068359375 0.0400000000000063 0.0400000000000063 0.0 521 -522 0.0365338325500488 0.029999999999994 0.029999999999994 0.0 522 -523 0.0335922241210938 0.0400000000000063 0.0400000000000063 0.0 523 -524 0.0331869125366211 0.029999999999994 0.029999999999994 0.0 524 -525 0.0333640575408936 0.0300000000000011 0.0300000000000011 0.0 525 -526 0.0657279491424561 0.0700000000000003 0.0700000000000003 0.0 526 -527 0.0335869789123535 0.0300000000000011 0.0300000000000011 0.0 527 -528 0.0365140438079834 0.0399999999999991 0.0399999999999991 0.0 528 -529 0.033782958984375 0.0300000000000011 0.0300000000000011 0.0 529 -530 0.0337071418762207 0.0399999999999991 0.0399999999999991 0.0 530 -531 0.0332880020141602 0.0300000000000011 0.0300000000000011 0.0 531 -532 0.0329639911651611 0.0300000000000011 0.0300000000000011 0.0 532 -533 0.033315896987915 0.0399999999999991 0.0399999999999991 0.0 533 -534 0.0582611560821533 0.0499999999999972 0.0499999999999972 0.0 534 -535 0.0367379188537598 0.0399999999999991 0.0399999999999991 0.0 535 -536 0.033797025680542 0.0400000000000063 0.0400000000000063 0.0 536 -537 0.0335040092468262 0.029999999999994 0.029999999999994 0.0 537 -538 0.0333931446075439 0.0300000000000011 0.0300000000000011 0.0 538 -539 0.033318042755127 0.0399999999999991 0.0399999999999991 0.0 539 -540 0.0329570770263672 0.0300000000000011 0.0300000000000011 0.0 540 -541 0.0334439277648926 0.0300000000000011 0.0300000000000011 0.0 541 -542 0.0605781078338623 0.0600000000000023 0.0600000000000023 0.0 542 -543 0.0348639488220215 0.0399999999999991 0.0399999999999991 0.0 543 -544 0.0333831310272217 0.0300000000000011 0.0300000000000011 0.0 544 -545 0.0333919525146484 0.029999999999994 0.029999999999994 0.0 545 -546 0.0348379611968994 0.0400000000000063 0.0400000000000063 0.0 546 -547 0.0334489345550537 0.029999999999994 0.029999999999994 0.0 547 -548 0.0333089828491211 0.0400000000000063 0.0400000000000063 0.0 548 -549 0.0365209579467773 0.029999999999994 0.029999999999994 0.0 549 -550 0.0601961612701416 0.0600000000000023 0.0600000000000023 0.0 550 -551 0.0337119102478027 0.0300000000000011 0.0300000000000011 0.0 551 -552 0.0332701206207275 0.0399999999999991 0.0399999999999991 0.0 552 -553 0.0401608943939209 0.0399999999999991 0.0399999999999991 0.0 553 -554 0.0333070755004883 0.0300000000000011 0.0300000000000011 0.0 554 -555 0.0364260673522949 0.0399999999999991 0.0399999999999991 0.0 555 -556 0.0348329544067383 0.0300000000000011 0.0300000000000011 0.0 556 -557 0.0339481830596924 0.0399999999999991 0.0399999999999991 0.0 557 -558 0.0576767921447754 0.0499999999999972 0.0499999999999972 0.0 558 -559 0.0335049629211426 0.0300000000000011 0.0300000000000011 0.0 559 -560 0.0332691669464111 0.029999999999994 0.029999999999994 0.0 560 -561 0.0332450866699219 0.0400000000000063 0.0400000000000063 0.0 561 -562 0.037883996963501 0.029999999999994 0.029999999999994 0.0 562 -563 0.0370709896087646 0.0400000000000063 0.0400000000000063 0.0 563 -564 0.0331628322601318 0.029999999999994 0.029999999999994 0.0 564 -565 0.0335371494293213 0.0399999999999991 0.0399999999999991 0.0 565 -566 0.0579180717468262 0.0500000000000043 0.0500000000000043 0.0 566 -567 0.0335509777069092 0.0399999999999991 0.0399999999999991 0.0 567 -568 0.0369341373443604 0.0300000000000011 0.0300000000000011 0.0 568 -569 0.0334761142730713 0.0399999999999991 0.0399999999999991 0.0 569 -570 0.0333311557769775 0.0300000000000011 0.0300000000000011 0.0 570 -571 0.0333850383758545 0.0300000000000011 0.0300000000000011 0.0 571 -572 0.0344130992889404 0.0399999999999991 0.0399999999999991 0.0 572 -573 0.0333690643310547 0.0300000000000011 0.0300000000000011 0.0 573 -574 0.0581290721893311 0.0599999999999952 0.0599999999999952 0.0 574 -575 0.0367560386657715 0.0399999999999991 0.0399999999999991 0.0 575 -576 0.0336780548095703 0.0300000000000011 0.0300000000000011 0.0 576 -577 0.0331878662109375 0.0300000000000011 0.0300000000000011 0.0 577 -578 0.0332210063934326 0.0399999999999991 0.0399999999999991 0.0 578 -579 0.0332109928131104 0.0300000000000011 0.0300000000000011 0.0 579 -580 0.0409071445465088 0.0399999999999991 0.0399999999999991 0.0 580 -581 0.033595085144043 0.0300000000000011 0.0300000000000011 0.0 581 -582 0.0607550144195557 0.0600000000000023 0.0600000000000023 0.0 582 -583 0.0355041027069092 0.0399999999999991 0.0399999999999991 0.0 583 -584 0.0334818363189697 0.0300000000000011 0.0300000000000011 0.0 584 -585 0.0333139896392822 0.0399999999999991 0.0399999999999991 0.0 585 -586 0.0332391262054443 0.0300000000000011 0.0300000000000011 0.0 586 -587 0.0332348346710205 0.029999999999994 0.029999999999994 0.0 587 -588 0.0332849025726318 0.0400000000000063 0.0400000000000063 0.0 588 -589 0.0360300540924072 0.029999999999994 0.029999999999994 0.0 589 -590 0.0599799156188965 0.0600000000000023 0.0600000000000023 0.0 590 -591 0.0335240364074707 0.0399999999999991 0.0399999999999991 0.0 591 -592 0.0333631038665771 0.0300000000000011 0.0300000000000011 0.0 592 -593 0.0332529544830322 0.0300000000000011 0.0300000000000011 0.0 593 -594 0.0335328578948975 0.0399999999999991 0.0399999999999991 0.0 594 -595 0.0370910167694092 0.0300000000000011 0.0300000000000011 0.0 595 -596 0.0335230827331543 0.0399999999999991 0.0399999999999991 0.0 596 -597 0.0337550640106201 0.0300000000000011 0.0300000000000011 0.0 597 -598 0.0580778121948242 0.0599999999999952 0.0599999999999952 0.0 598 -599 0.0352489948272705 0.0300000000000011 0.0300000000000011 0.0 599 -600 0.0334210395812988 0.0399999999999991 0.0399999999999991 0.0 600 -601 0.0336451530456543 0.0300000000000011 0.0300000000000011 0.0 601 -602 0.0362639427185059 0.0399999999999991 0.0399999999999991 0.0 602 -603 0.0335409641265869 0.0300000000000011 0.0300000000000011 0.0 603 -604 0.0330269336700439 0.0300000000000011 0.0300000000000011 0.0 604 -605 0.033350944519043 0.0399999999999991 0.0399999999999991 0.0 605 -606 0.0649051666259766 0.0600000000000023 0.0600000000000023 0.0 606 -607 0.0337560176849365 0.0399999999999991 0.0399999999999991 0.0 607 -608 0.0365309715270996 0.0300000000000011 0.0300000000000011 0.0 608 -609 0.0352151393890381 0.0399999999999991 0.0399999999999991 0.0 609 -610 0.0339179039001465 0.0300000000000011 0.0300000000000011 0.0 610 -611 0.0331799983978271 0.0300000000000011 0.0300000000000011 0.0 611 -612 0.0330498218536377 0.0399999999999991 0.0399999999999991 0.0 612 -613 0.0336270332336426 0.0300000000000011 0.0300000000000011 0.0 613 -614 0.0577888488769531 0.0599999999999952 0.0599999999999952 0.0 614 -615 0.0366761684417725 0.0399999999999991 0.0399999999999991 0.0 615 -616 0.0336871147155762 0.0300000000000011 0.0300000000000011 0.0 616 -617 0.0334889888763428 0.0300000000000011 0.0300000000000011 0.0 617 -618 0.033146858215332 0.0399999999999991 0.0399999999999991 0.0 618 -619 0.0333569049835205 0.0300000000000011 0.0300000000000011 0.0 619 -620 0.0330309867858887 0.0300000000000011 0.0300000000000011 0.0 620 -621 0.0333929061889648 0.0399999999999991 0.0399999999999991 0.0 621 -622 0.0609011650085449 0.0600000000000023 0.0600000000000023 0.0 622 -623 0.0338809490203857 0.0300000000000011 0.0300000000000011 0.0 623 -624 0.0332272052764893 0.029999999999994 0.029999999999994 0.0 624 -625 0.0336441993713379 0.0399999999999991 0.0399999999999991 0.0 625 -626 0.035059928894043 0.0300000000000011 0.0300000000000011 0.0 626 -627 0.0334160327911377 0.0399999999999991 0.0399999999999991 0.0 627 -628 0.0334069728851318 0.0300000000000011 0.0300000000000011 0.0 628 -629 0.0366249084472656 0.0399999999999991 0.0399999999999991 0.0 629 -630 0.0583260059356689 0.0500000000000043 0.0500000000000043 0.0 630 -631 0.0333540439605713 0.0399999999999991 0.0399999999999991 0.0 631 -632 0.0333960056304932 0.0300000000000011 0.0300000000000011 0.0 632 -633 0.0413072109222412 0.0399999999999991 0.0399999999999991 0.0 633 -634 0.0332448482513428 0.0399999999999991 0.0399999999999991 0.0 634 -635 0.0363118648529053 0.0300000000000011 0.0300000000000011 0.0 635 -636 0.035132884979248 0.0399999999999991 0.0399999999999991 0.0 636 -637 0.0339901447296143 0.0300000000000011 0.0300000000000011 0.0 637 -638 0.0578219890594482 0.0599999999999952 0.0599999999999952 0.0 638 -639 0.0334219932556152 0.0300000000000011 0.0300000000000011 0.0 639 -640 0.0333530902862549 0.0399999999999991 0.0399999999999991 0.0 640 -641 0.033282995223999 0.0300000000000011 0.0300000000000011 0.0 641 -642 0.0364758968353271 0.0399999999999991 0.0399999999999991 0.0 642 -643 0.0333881378173828 0.0300000000000011 0.0300000000000011 0.0 643 -644 0.0334060192108154 0.0300000000000011 0.0300000000000011 0.0 644 -645 0.0334770679473877 0.0399999999999991 0.0399999999999991 0.0 645 -646 0.0579509735107422 0.0500000000000043 0.0500000000000043 0.0 646 -647 0.0336329936981201 0.0399999999999991 0.0399999999999991 0.0 647 -648 0.0373489856719971 0.0399999999999991 0.0399999999999991 0.0 648 -649 0.0342509746551514 0.0300000000000011 0.0300000000000011 0.0 649 -650 0.0337338447570801 0.0300000000000011 0.0300000000000011 0.0 650 -651 0.0333359241485596 0.0399999999999991 0.0399999999999991 0.0 651 -652 0.0332560539245605 0.029999999999994 0.029999999999994 0.0 652 -653 0.034912109375 0.029999999999994 0.0300000000000011 0.0 653 -654 0.0582709312438965 0.0600000000000023 0.0600000000000023 0.0 654 -655 0.0366790294647217 0.0400000000000063 0.0400000000000063 0.0 655 -656 0.0336661338806152 0.0299999999999869 0.0299999999999869 0.0 656 -657 0.0334138870239258 0.0400000000000063 0.0400000000000063 0.0 657 -658 0.033390998840332 0.0300000000000011 0.0300000000000011 0.0 658 -659 0.0330209732055664 0.0300000000000011 0.0300000000000011 0.0 659 -660 0.0407001972198486 0.039999999999992 0.039999999999992 0.0 660 -661 0.0335381031036377 0.0400000000000063 0.0400000000000063 0.0 661 -662 0.0610449314117432 0.0600000000000023 0.0600000000000023 0.0 662 -663 0.0341410636901855 0.0300000000000011 0.0300000000000011 0.0 663 -664 0.0333421230316162 0.039999999999992 0.039999999999992 0.0 664 -665 0.0331799983978271 0.0300000000000011 0.0300000000000011 0.0 665 -666 0.0331680774688721 0.0300000000000011 0.0300000000000011 0.0 666 -667 0.0328528881072998 0.0400000000000063 0.0400000000000063 0.0 667 -668 0.0334010124206543 0.0300000000000011 0.0300000000000011 0.0 668 -669 0.0363960266113281 0.0300000000000011 0.0300000000000011 0.0 669 -670 0.058311939239502 0.0599999999999881 0.0599999999999881 0.0 670 -671 0.03330397605896 0.0400000000000063 0.0400000000000063 0.0 671 -672 0.0332088470458984 0.0300000000000011 0.0300000000000011 0.0 672 -673 0.0331571102142334 0.0300000000000011 0.0300000000000011 0.0 673 -674 0.0347979068756104 0.039999999999992 0.039999999999992 0.0 674 -675 0.0361380577087402 0.0300000000000011 0.0300000000000011 0.0 675 -676 0.0341131687164307 0.0400000000000063 0.0400000000000063 0.0 676 -677 0.03476881980896 0.0300000000000011 0.0300000000000011 0.0 677 -678 0.058121919631958 0.0600000000000023 0.0600000000000023 0.0 678 -679 0.0350527763366699 0.0300000000000011 0.0300000000000011 0.0 679 -680 0.0333900451660156 0.039999999999992 0.039999999999992 0.0 680 -681 0.033829927444458 0.0300000000000011 0.0300000000000011 0.0 681 -682 0.0363891124725342 0.0400000000000063 0.0400000000000063 0.0 682 -683 0.0345211029052734 0.0299999999999869 0.0299999999999869 0.0 683 -684 0.0335590839385986 0.0400000000000063 0.0400000000000063 0.0 684 -685 0.0574600696563721 0.0499999999999972 0.0499999999999972 0.0 685 -686 0.041471004486084 0.0499999999999972 0.0499999999999972 0.0 686 -687 0.0334889888763428 0.0300000000000011 0.0300000000000011 0.0 687 -688 0.0362579822540283 0.0400000000000063 0.0400000000000063 0.0 688 -689 0.033682107925415 0.0300000000000011 0.0300000000000011 0.0 689 -690 0.0352790355682373 0.0300000000000011 0.0300000000000011 0.0 690 -691 0.033221960067749 0.039999999999992 0.039999999999992 0.0 691 -692 0.0330390930175781 0.0300000000000011 0.0300000000000011 0.0 692 -693 0.0577991008758545 0.0600000000000023 0.0600000000000023 0.0 693 -694 0.0340001583099365 0.0300000000000011 0.0300000000000011 0.0 694 -695 0.0366599559783936 0.0400000000000063 0.0400000000000063 0.0 695 -696 0.0336761474609375 0.0299999999999869 0.0299999999999869 0.0 696 -697 0.0338170528411865 0.0400000000000063 0.0400000000000063 0.0 697 -698 0.0334699153900146 0.0300000000000011 0.0300000000000011 0.0 698 -699 0.0334680080413818 0.0300000000000011 0.0300000000000011 0.0 699 -700 0.0334641933441162 0.039999999999992 0.039999999999992 0.0 700 -701 0.0584831237792969 0.0700000000000074 0.0600000000000023 0.01 701 -702 0.0371170043945312 0.0300000000000011 0.0300000000000011 0.0 702 -703 0.0348899364471436 0.0400000000000063 0.0400000000000063 0.0 703 -704 0.0332977771759033 0.0300000000000011 0.0300000000000011 0.0 704 -705 0.0337090492248535 0.0300000000000011 0.0300000000000011 0.0 705 -706 0.0363600254058838 0.039999999999992 0.039999999999992 0.0 706 -707 0.0332589149475098 0.0300000000000011 0.0300000000000011 0.0 707 -708 0.0335700511932373 0.0300000000000011 0.0300000000000011 0.0 708 -709 0.0618710517883301 0.0699999999999932 0.0699999999999932 0.0 709 -710 0.0338459014892578 0.0300000000000011 0.0300000000000011 0.0 710 -711 0.0334110260009766 0.0300000000000011 0.0300000000000011 0.0 711 -712 0.0332870483398438 0.0400000000000063 0.0400000000000063 0.0 712 -713 0.0403330326080322 0.039999999999992 0.039999999999992 0.0 713 -714 0.0332109928131104 0.0300000000000011 0.0300000000000011 0.0 714 -715 0.0362699031829834 0.0400000000000063 0.0400000000000063 0.0 715 -716 0.0349149703979492 0.0300000000000011 0.0300000000000011 0.0 716 -717 0.0590531826019287 0.0600000000000023 0.0600000000000023 0.0 717 -718 0.0336310863494873 0.039999999999992 0.039999999999992 0.0 718 -719 0.0333178043365479 0.0300000000000011 0.0300000000000011 0.0 719 -720 0.0332901477813721 0.0300000000000011 0.0300000000000011 0.0 720 -721 0.0332920551300049 0.0400000000000063 0.0400000000000063 0.0 721 -722 0.0363869667053223 0.0300000000000011 0.0300000000000011 0.0 722 -723 0.0335569381713867 0.039999999999992 0.039999999999992 0.0 723 -724 0.0336151123046875 0.0300000000000011 0.0300000000000011 0.0 724 -725 0.0579018592834473 0.0600000000000023 0.0600000000000023 0.0 725 -726 0.0334959030151367 0.0300000000000011 0.0300000000000011 0.0 726 -727 0.0332579612731934 0.0300000000000011 0.0300000000000011 0.0 727 -728 0.0363228321075439 0.039999999999992 0.039999999999992 0.0 728 -729 0.034060001373291 0.0300000000000011 0.0300000000000011 0.0 729 -730 0.0342481136322021 0.0400000000000063 0.0400000000000063 0.0 730 -731 0.033174991607666 0.0300000000000011 0.0300000000000011 0.0 731 -732 0.0333402156829834 0.039999999999992 0.039999999999992 0.0 732 -733 0.0594391822814941 0.0499999999999972 0.0499999999999972 0.0 733 -734 0.0340390205383301 0.0400000000000063 0.0400000000000063 0.0 734 -735 0.0368988513946533 0.0300000000000011 0.0300000000000011 0.0 735 -736 0.036196231842041 0.039999999999992 0.039999999999992 0.0 736 -737 0.0333859920501709 0.0300000000000011 0.0300000000000011 0.0 737 -738 0.0332441329956055 0.0400000000000063 0.0400000000000063 0.0 738 -739 0.0330839157104492 0.0300000000000011 0.0300000000000011 0.0 739 -740 0.0413918495178223 0.039999999999992 0.039999999999992 0.0 740 -741 0.0612490177154541 0.0600000000000023 0.0600000000000023 0.0 741 -742 0.0341551303863525 0.0300000000000011 0.0300000000000011 0.0 742 -743 0.035499095916748 0.0400000000000063 0.0400000000000063 0.0 743 -744 0.0333080291748047 0.0300000000000011 0.0300000000000011 0.0 744 -745 0.0331649780273438 0.039999999999992 0.039999999999992 0.0 745 -746 0.0332601070404053 0.0300000000000011 0.0300000000000011 0.0 746 -747 0.0330040454864502 0.0300000000000011 0.0300000000000011 0.0 747 -748 0.0333499908447266 0.0400000000000063 0.0400000000000063 0.0 748 -749 0.0617849826812744 0.0599999999999881 0.0599999999999881 0.0 749 -750 0.0337250232696533 0.0300000000000011 0.0300000000000011 0.0 750 -751 0.0336470603942871 0.0400000000000063 0.0400000000000063 0.0 751 -752 0.0334620475769043 0.0300000000000011 0.0300000000000011 0.0 752 -753 0.0332620143890381 0.0300000000000011 0.0300000000000011 0.0 753 -754 0.0332539081573486 0.039999999999992 0.039999999999992 0.0 754 -755 0.036297082901001 0.0300000000000011 0.0300000000000011 0.0 755 -756 0.0344269275665283 0.0400000000000063 0.0400000000000063 0.0 756 -757 0.0584709644317627 0.0499999999999972 0.0499999999999972 0.0 757 -758 0.0336380004882812 0.0300000000000011 0.0300000000000011 0.0 758 -759 0.0352699756622314 0.0300000000000011 0.0300000000000011 0.0 759 -760 0.0333750247955322 0.039999999999992 0.039999999999992 0.0 760 -761 0.0338349342346191 0.0300000000000011 0.0300000000000011 0.0 761 -762 0.0356252193450928 0.0400000000000063 0.0400000000000063 0.0 762 -763 0.0349218845367432 0.0299999999999869 0.0299999999999869 0.0 763 -764 0.0333728790283203 0.0300000000000011 0.0300000000000011 0.0 764 -765 0.057542085647583 0.0600000000000023 0.0600000000000023 0.0 765 -766 0.040518045425415 0.0400000000000063 0.0400000000000063 0.0 766 -767 0.0333969593048096 0.039999999999992 0.039999999999992 0.0 767 -768 0.036506175994873 0.0300000000000011 0.0300000000000011 0.0 768 -769 0.034682035446167 0.0400000000000063 0.0400000000000063 0.0 769 -770 0.0337419509887695 0.0300000000000011 0.0300000000000011 0.0 770 -771 0.0334620475769043 0.0300000000000011 0.0300000000000011 0.0 771 -772 0.0577020645141602 0.0600000000000023 0.0600000000000023 0.0 772 -773 0.0334780216217041 0.039999999999992 0.039999999999992 0.0 773 -774 0.0334508419036865 0.0300000000000011 0.0300000000000011 0.0 774 -775 0.036329984664917 0.0300000000000011 0.0300000000000011 0.0 775 -776 0.0336270332336426 0.039999999999992 0.039999999999992 0.0 776 -777 0.0338649749755859 0.0300000000000011 0.0300000000000011 0.0 777 -778 0.0331289768218994 0.0400000000000063 0.0400000000000063 0.0 778 -779 0.0331418514251709 0.0300000000000011 0.0300000000000011 0.0 779 -780 0.0577938556671143 0.0600000000000023 0.0600000000000023 0.0 780 -781 0.0363731384277344 0.0300000000000011 0.0300000000000011 0.0 781 -782 0.0350909233093262 0.039999999999992 0.039999999999992 0.0 782 -783 0.0350501537322998 0.0300000000000011 0.0300000000000011 0.0 783 -784 0.0335679054260254 0.0400000000000063 0.0400000000000063 0.0 784 -785 0.0334410667419434 0.0300000000000011 0.0300000000000011 0.0 785 -786 0.0349650382995605 0.0300000000000011 0.0300000000000011 0.0 786 -787 0.0338919162750244 0.039999999999992 0.039999999999992 0.0 787 -788 0.060966968536377 0.0600000000000023 0.0600000000000023 0.0 788 -789 0.0341048240661621 0.0300000000000011 0.0300000000000011 0.0 789 -790 0.0336289405822754 0.039999999999992 0.039999999999992 0.0 790 -791 0.0333750247955322 0.0300000000000011 0.0300000000000011 0.0 791 -792 0.0333640575408936 0.0300000000000011 0.0300000000000011 0.0 792 -793 0.0411760807037354 0.0499999999999972 0.0499999999999972 0.0 793 -794 0.0330638885498047 0.0300000000000011 0.0300000000000011 0.0 794 -795 0.0362119674682617 0.0300000000000011 0.0300000000000011 0.0 795 -796 0.0589008331298828 0.0499999999999972 0.0499999999999972 0.0 796 -797 0.0335359573364258 0.0400000000000063 0.0400000000000063 0.0 797 -798 0.0333008766174316 0.0300000000000011 0.0300000000000011 0.0 798 -799 0.0347950458526611 0.0300000000000011 0.0300000000000011 0.0 799 -800 0.0332999229431152 0.039999999999992 0.039999999999992 0.0 800 -801 0.033350944519043 0.0300000000000011 0.0300000000000011 0.0 801 -802 0.0362880229949951 0.0400000000000063 0.0400000000000063 0.0 802 -803 0.0351760387420654 0.0299999999999869 0.0299999999999869 0.0 803 -804 0.0578329563140869 0.0600000000000023 0.0600000000000023 0.0 804 -805 0.0334799289703369 0.0300000000000011 0.0300000000000011 0.0 805 -806 0.0332357883453369 0.0400000000000063 0.0400000000000063 0.0 806 -807 0.0333900451660156 0.0300000000000011 0.0300000000000011 0.0 807 -808 0.0362451076507568 0.039999999999992 0.039999999999992 0.0 808 -809 0.0333170890808105 0.0300000000000011 0.0300000000000011 0.0 809 -810 0.0343527793884277 0.0400000000000063 0.0400000000000063 0.0 810 -811 0.0335409641265869 0.0300000000000011 0.0300000000000011 0.0 811 -812 0.0592930316925049 0.0600000000000023 0.0600000000000023 0.0 812 -813 0.0335829257965088 0.0299999999999869 0.0299999999999869 0.0 813 -814 0.033574104309082 0.0300000000000011 0.0300000000000011 0.0 814 -815 0.0360231399536133 0.0400000000000063 0.0400000000000063 0.0 815 -816 0.033574104309082 0.0300000000000011 0.0300000000000011 0.0 816 -817 0.0337851047515869 0.039999999999992 0.039999999999992 0.0 817 -818 0.0332200527191162 0.0300000000000011 0.0300000000000011 0.0 818 -819 0.0334579944610596 0.0300000000000011 0.0300000000000011 0.0 819 -820 0.063668966293335 0.0600000000000023 0.0600000000000023 0.0 820 -821 0.0360410213470459 0.0300000000000011 0.0300000000000011 0.0 821 -822 0.0340430736541748 0.039999999999992 0.039999999999992 0.0 822 -823 0.0340561866760254 0.0300000000000011 0.0300000000000011 0.0 823 -824 0.0331687927246094 0.0400000000000063 0.0400000000000063 0.0 824 -825 0.0331730842590332 0.0300000000000011 0.0300000000000011 0.0 825 -826 0.0330498218536377 0.0300000000000011 0.0300000000000011 0.0 826 -827 0.0333058834075928 0.039999999999992 0.039999999999992 0.0 827 -828 0.0610239505767822 0.0600000000000023 0.0600000000000023 0.0 828 -829 0.0348649024963379 0.0300000000000011 0.0300000000000011 0.0 829 -830 0.0334899425506592 0.039999999999992 0.039999999999992 0.0 830 -831 0.0332210063934326 0.0300000000000011 0.0300000000000011 0.0 831 -832 0.0332589149475098 0.0300000000000011 0.0300000000000011 0.0 832 -833 0.0330421924591064 0.0400000000000063 0.0400000000000063 0.0 833 -834 0.033440113067627 0.0300000000000011 0.0300000000000011 0.0 834 -835 0.0366320610046387 0.039999999999992 0.039999999999992 0.0 835 -836 0.0392351150512695 0.039999999999992 0.039999999999992 0.0 836 -837 0.0332860946655273 0.0400000000000063 0.0400000000000063 0.0 837 -838 0.0337049961090088 0.0300000000000011 0.0300000000000011 0.0 838 -839 0.0346989631652832 0.0300000000000011 0.0300000000000011 0.0 839 -840 0.0334670543670654 0.039999999999992 0.039999999999992 0.0 840 -841 0.0332751274108887 0.0300000000000011 0.0300000000000011 0.0 841 -842 0.0364458560943604 0.0400000000000063 0.0400000000000063 0.0 842 -843 0.0590341091156006 0.0600000000000023 0.0600000000000023 0.0 843 -844 0.0335009098052979 0.0300000000000011 0.0300000000000011 0.0 844 -845 0.0332801342010498 0.0300000000000011 0.0300000000000011 0.0 845 -846 0.0411808490753174 0.0499999999999972 0.0499999999999972 0.0 846 -847 0.0332710742950439 0.0300000000000011 0.0300000000000011 0.0 847 -848 0.0353641510009766 0.0300000000000011 0.0300000000000011 0.0 848 -849 0.0346250534057617 0.039999999999992 0.039999999999992 0.0 849 -850 0.0339748859405518 0.0300000000000011 0.0300000000000011 0.0 850 -851 0.0577869415283203 0.0600000000000023 0.0600000000000023 0.0 851 -852 0.0328571796417236 0.0300000000000011 0.0300000000000011 0.0 852 -853 0.0324909687042236 0.039999999999992 0.039999999999992 0.0 853 -854 0.0326740741729736 0.0300000000000011 0.0300000000000011 0.0 854 -855 0.035412073135376 0.0300000000000011 0.0300000000000011 0.0 855 -856 0.0338008403778076 0.0400000000000063 0.0400000000000063 0.0 856 -857 0.0328540802001953 0.0300000000000011 0.0300000000000011 0.0 857 -858 0.0333800315856934 0.0300000000000011 0.0300000000000011 0.0 858 -859 0.057999849319458 0.0600000000000023 0.0600000000000023 0.0 859 -860 0.0334048271179199 0.039999999999992 0.039999999999992 0.0 860 -861 0.0332610607147217 0.0300000000000011 0.0300000000000011 0.0 861 -862 0.0369820594787598 0.0400000000000063 0.0400000000000063 0.0 862 -863 0.0350849628448486 0.0299999999999869 0.0299999999999869 0.0 863 -864 0.0332708358764648 0.0300000000000011 0.0300000000000011 0.0 864 -865 0.0333819389343262 0.0400000000000063 0.0400000000000063 0.0 865 -866 0.0360109806060791 0.0300000000000011 0.0300000000000011 0.0 866 -867 0.058070182800293 0.0600000000000023 0.0600000000000023 0.0 867 -868 0.0367460250854492 0.039999999999992 0.039999999999992 0.0 868 -869 0.0335311889648438 0.0300000000000011 0.0300000000000011 0.0 869 -870 0.034480094909668 0.0400000000000063 0.0400000000000063 0.0 870 -871 0.0331480503082275 0.0300000000000011 0.0300000000000011 0.0 871 -872 0.0331017971038818 0.0300000000000011 0.0300000000000011 0.0 872 -873 0.0400230884552002 0.039999999999992 0.039999999999992 0.0 873 -874 0.0334382057189941 0.0400000000000063 0.0400000000000063 0.0 874 -875 0.0614311695098877 0.0600000000000023 0.0600000000000023 0.0 875 -876 0.0357120037078857 0.0299999999999869 0.0299999999999869 0.0 876 -877 0.0331881046295166 0.0400000000000063 0.0400000000000063 0.0 877 -878 0.0333230495452881 0.0300000000000011 0.0300000000000011 0.0 878 -879 0.033128023147583 0.0300000000000011 0.0300000000000011 0.0 879 -880 0.0331029891967773 0.039999999999992 0.039999999999992 0.0 880 -881 0.0331718921661377 0.0300000000000011 0.0300000000000011 0.0 881 -882 0.0365970134735107 0.0400000000000063 0.0400000000000063 0.0 882 -883 0.0594449043273926 0.0499999999999972 0.0499999999999972 0.0 883 -884 0.0333600044250488 0.0400000000000063 0.0400000000000063 0.0 884 -885 0.0332062244415283 0.0300000000000011 0.0300000000000011 0.0 885 -886 0.0332579612731934 0.0300000000000011 0.0300000000000011 0.0 886 -887 0.033174991607666 0.039999999999992 0.039999999999992 0.0 887 -888 0.033627986907959 0.0300000000000011 0.0300000000000011 0.0 888 -889 0.0363061428070068 0.0400000000000063 0.0400000000000063 0.0 889 -890 0.0346910953521729 0.0299999999999869 0.0299999999999869 0.0 890 -891 0.0577399730682373 0.0600000000000023 0.0600000000000023 0.0 891 -892 0.0351190567016602 0.0300000000000011 0.0300000000000011 0.0 892 -893 0.0334410667419434 0.0300000000000011 0.0300000000000011 0.0 893 -894 0.0332920551300049 0.0300000000000011 0.0300000000000011 0.0 894 -895 0.0356509685516357 0.039999999999992 0.039999999999992 0.0 895 -896 0.0329999923706055 0.0300000000000011 0.0300000000000011 0.0 896 -897 0.0350220203399658 0.0400000000000063 0.0400000000000063 0.0 897 -898 0.0576491355895996 0.0499999999999972 0.0499999999999972 0.0 898 -899 0.0413708686828613 0.0400000000000063 0.0400000000000063 0.0 899 -900 0.0334579944610596 0.039999999999992 0.039999999999992 0.0 900 -901 0.0331728458404541 0.0300000000000011 0.0300000000000011 0.0 901 -902 0.0366899967193604 0.0400000000000063 0.0400000000000063 0.0 902 -903 0.0341849327087402 0.0299999999999869 0.0299999999999869 0.0 903 -904 0.0330212116241455 0.0300000000000011 0.0300000000000011 0.0 904 -905 0.0330519676208496 0.0400000000000063 0.0400000000000063 0.0 905 -906 0.0578551292419434 0.0600000000000023 0.0600000000000023 0.0 906 -907 0.0339560508728027 0.0300000000000011 0.0300000000000011 0.0 907 -908 0.0368251800537109 0.039999999999992 0.039999999999992 0.0 908 -909 0.0336120128631592 0.0300000000000011 0.0300000000000011 0.0 909 -910 0.0353670120239258 0.0400000000000063 0.0400000000000063 0.0 910 -911 0.0335800647735596 0.0300000000000011 0.0300000000000011 0.0 911 -912 0.0334420204162598 0.0300000000000011 0.0300000000000011 0.0 912 -913 0.0334601402282715 0.039999999999992 0.039999999999992 0.0 913 -914 0.058056116104126 0.0499999999999972 0.0499999999999972 0.0 914 -915 0.0368549823760986 0.0400000000000063 0.0400000000000063 0.0 915 -916 0.0347049236297607 0.039999999999992 0.039999999999992 0.0 916 -917 0.0332660675048828 0.0300000000000011 0.0300000000000011 0.0 917 -918 0.03336501121521 0.0300000000000011 0.0300000000000011 0.0 918 -919 0.0346500873565674 0.0400000000000063 0.0400000000000063 0.0 919 -920 0.0330588817596436 0.0300000000000011 0.0300000000000011 0.0 920 -921 0.0336630344390869 0.0300000000000011 0.0300000000000011 0.0 921 -922 0.0604748725891113 0.0600000000000023 0.0600000000000023 0.0 922 -923 0.0347628593444824 0.039999999999992 0.039999999999992 0.0 923 -924 0.0331780910491943 0.0300000000000011 0.0300000000000011 0.0 924 -925 0.0331499576568604 0.0300000000000011 0.0300000000000011 0.0 925 -926 0.0402188301086426 0.0400000000000063 0.0400000000000063 0.0 926 -927 0.0330500602722168 0.039999999999992 0.039999999999992 0.0 927 -928 0.0330708026885986 0.0300000000000011 0.0300000000000011 0.0 928 -929 0.036876916885376 0.0400000000000063 0.0400000000000063 0.0 929 -930 0.0586659908294678 0.0599999999999881 0.0599999999999881 0.0 930 -931 0.0333189964294434 0.0300000000000011 0.0300000000000011 0.0 931 -932 0.0332140922546387 0.0300000000000011 0.0300000000000011 0.0 932 -933 0.0332601070404053 0.0400000000000063 0.0400000000000063 0.0 933 -934 0.033146858215332 0.0300000000000011 0.0300000000000011 0.0 934 -935 0.0361688137054443 0.039999999999992 0.039999999999992 0.0 935 -936 0.0331850051879883 0.0300000000000011 0.0300000000000011 0.0 936 -937 0.0338339805603027 0.0300000000000011 0.0300000000000011 0.0 937 -938 0.0579109191894531 0.0600000000000023 0.0600000000000023 0.0 938 -939 0.0335099697113037 0.0300000000000011 0.0300000000000011 0.0 939 -940 0.0332717895507812 0.039999999999992 0.039999999999992 0.0 940 -941 0.0332541465759277 0.0300000000000011 0.0300000000000011 0.0 941 -942 0.0368809700012207 0.0400000000000063 0.0400000000000063 0.0 942 -943 0.0335171222686768 0.0300000000000011 0.0300000000000011 0.0 943 -944 0.0335350036621094 0.0300000000000011 0.0300000000000011 0.0 944 -945 0.0578980445861816 0.0600000000000023 0.0600000000000023 0.0 945 -946 0.0351078510284424 0.039999999999992 0.039999999999992 0.0 946 -947 0.0334479808807373 0.0300000000000011 0.0300000000000011 0.0 947 -948 0.033311128616333 0.0300000000000011 0.0300000000000011 0.0 948 -949 0.0363750457763672 0.0400000000000063 0.0400000000000063 0.0 949 -950 0.033627986907959 0.0299999999999869 0.0299999999999869 0.0 950 -951 0.033160924911499 0.0400000000000063 0.0400000000000063 0.0 951 -952 0.033203125 0.0300000000000011 0.0300000000000011 0.0 952 -953 0.0647599697113037 0.0600000000000023 0.0600000000000023 0.0 953 -954 0.0328559875488281 0.039999999999992 0.039999999999992 0.0 954 -955 0.0357460975646973 0.0300000000000011 0.0300000000000011 0.0 955 -956 0.033236026763916 0.0400000000000063 0.0400000000000063 0.0 956 -957 0.0331499576568604 0.0300000000000011 0.0300000000000011 0.0 957 -958 0.0325798988342285 0.0300000000000011 0.0300000000000011 0.0 958 -959 0.0328090190887451 0.0300000000000011 0.0300000000000011 0.0 959 -960 0.033491849899292 0.039999999999992 0.039999999999992 0.0 960 -961 0.0579450130462646 0.0600000000000023 0.0600000000000023 0.0 961 -962 0.0369048118591309 0.0300000000000011 0.0300000000000011 0.0 962 -963 0.0337331295013428 0.039999999999992 0.039999999999992 0.0 963 -964 0.0333647727966309 0.0300000000000011 0.0300000000000011 0.0 964 -965 0.0332319736480713 0.0300000000000011 0.0300000000000011 0.0 965 -966 0.033174991607666 0.0400000000000063 0.0400000000000063 0.0 966 -967 0.0331299304962158 0.0300000000000011 0.0300000000000011 0.0 967 -968 0.0334961414337158 0.0300000000000011 0.0300000000000011 0.0 968 -969 0.0604250431060791 0.0600000000000023 0.0600000000000023 0.0 969 -970 0.0347049236297607 0.039999999999992 0.039999999999992 0.0 970 -971 0.0334169864654541 0.0300000000000011 0.0300000000000011 0.0 971 -972 0.0332670211791992 0.0400000000000063 0.0400000000000063 0.0 972 -973 0.0347368717193604 0.0300000000000011 0.0300000000000011 0.0 973 -974 0.0333490371704102 0.0299999999999869 0.0299999999999869 0.0 974 -975 0.033484935760498 0.0400000000000063 0.0400000000000063 0.0 975 -976 0.0361530780792236 0.0300000000000011 0.0300000000000011 0.0 976 -977 0.0591049194335938 0.0600000000000023 0.0600000000000023 0.0 977 -978 0.0333170890808105 0.039999999999992 0.039999999999992 0.0 978 -979 0.0332751274108887 0.0300000000000011 0.0300000000000011 0.0 979 -980 0.0404400825500488 0.0400000000000063 0.0400000000000063 0.0 980 -981 0.0332608222961426 0.0300000000000011 0.0300000000000011 0.0 981 -982 0.0361859798431396 0.039999999999992 0.039999999999992 0.0 982 -983 0.0338070392608643 0.0300000000000011 0.0300000000000011 0.0 983 -984 0.0339329242706299 0.0400000000000063 0.0400000000000063 0.0 984 -985 0.0576000213623047 0.0499999999999972 0.0499999999999972 0.0 985 -986 0.0332310199737549 0.0400000000000063 0.0400000000000063 0.0 986 -987 0.0331230163574219 0.0299999999999869 0.0299999999999869 0.0 987 -988 0.0332698822021484 0.0300000000000011 0.0300000000000011 0.0 988 -989 0.0362260341644287 0.0400000000000063 0.0400000000000063 0.0 989 -990 0.0335850715637207 0.0300000000000011 0.0300000000000011 0.0 990 -991 0.0335838794708252 0.039999999999992 0.039999999999992 0.0 991 -992 0.0581378936767578 0.0600000000000023 0.0600000000000023 0.0 992 -993 0.0338449478149414 0.0300000000000011 0.0300000000000011 0.0 993 -994 0.0334839820861816 0.0300000000000011 0.0300000000000011 0.0 994 -995 0.0354399681091309 0.0400000000000063 0.0400000000000063 0.0 995 -996 0.0348441600799561 0.0300000000000011 0.0300000000000011 0.0 996 -997 0.033607006072998 0.039999999999992 0.039999999999992 0.0 997 -998 0.0334219932556152 0.0300000000000011 0.0300000000000011 0.0 998 -999 0.0331289768218994 0.0300000000000011 0.0300000000000011 0.0 999 -1000 0.0591549873352051 0.0600000000000023 0.0600000000000023 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log deleted file mode 100644 index abfc0d4e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log +++ /dev/null @@ -1,82 +0,0 @@ -========================== 2009-04-01T16:48:20 CEST =========================== -Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux]. -Running 'ParserBenchmarkPure' for 1000 iterations/method (compare_time=real) -=============================================================================== - -This first run is only for warmup. -ParserBenchmarkPure#parser: - real total user system -sum 37.410897017 37.380000000 37.360000000 0.020000000 -min 0.032916069 0.030000000 0.030000000 0.000000000 -std- 0.029058517 0.027934111 0.027951551 -0.000426990 -mean 0.037410897 0.037380000 0.037360000 0.000020000 -std+ 0.045763277 0.046825889 0.046768449 0.000466990 -max 0.068524122 0.070000000 0.070000000 0.010000000 -std 0.008352380 0.009445889 0.009408449 0.000446990 -std% 22.326062222 25.269901841 25.183215569 2234.948544149 -harm 0.036161242 0.035525181 0.035515868 nan -geo 0.036699193 0.036372385 0.036358664 0.000000000 -q1 0.033462286 0.030000000 0.030000000 0.000000000 -med 0.033834100 0.040000000 0.040000000 0.000000000 -q3 0.036020756 0.040000000 0.040000000 0.000000000 - 1000 26.73018 0.037410897 - calls calls/sec secs/call - - 0.06674 -| - 0.06318 -|* - 0.05962 -|****** - 0.05606 -|* - 0.05250 -| - 0.04894 -| - 0.04538 -| - 0.04182 -|* - 0.03826 -|**** - 0.03470 -|************************************************** - -Outliers detected with box plot algo (median=0.03383, iqr=0.00256, factor=3.00): -high=35 very_high=121 - -Ljung-Box statistics: q=2505.23586 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -ParserBenchmarkPure#parser: - real total user system -sum 37.376162529 37.280000000 37.260000000 0.020000000 -min 0.032336950 0.030000000 0.030000000 0.000000000 -std- 0.028895529 0.027756750 0.027774096 -0.000426990 -mean 0.037376163 0.037280000 0.037260000 0.000020000 -std+ 0.045856796 0.046803250 0.046745904 0.000466990 -max 0.068592072 0.070000000 0.070000000 0.010000000 -std 0.008480634 0.009523250 0.009485904 0.000446990 -std% 22.689953522 25.545198741 25.458680636 2234.948544149 -harm 0.036080414 0.035400319 0.035391071 nan -geo 0.036638902 0.036256656 0.036242979 0.000000000 -q1 0.033310235 0.030000000 0.030000000 0.000000000 -med 0.033644676 0.030000000 0.030000000 0.000000000 -q3 0.036110342 0.040000000 0.040000000 0.000000000 - 1000 26.75502 0.037376163 - calls calls/sec secs/call - - 0.06678 -| - 0.06315 -|* - 0.05953 -|******* - 0.05590 -| - 0.05228 -| - 0.04865 -| - 0.04503 -| - 0.04140 -|** - 0.03778 -|******** - 0.03415 -|************************************************** - -Outliers detected with box plot algo (median=0.03364, iqr=0.00280, factor=3.00): -high=33 very_high=124 - -Ljung-Box statistics: q=3251.86614 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -========================== 2009-04-01T16:49:38 CEST =========================== - -Writing measurement data file '/data/scm/json/benchmarks/data/ParserBenchmarkPure#parser.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/ParserBenchmarkPure#parser-autocorrelation.dat'. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat deleted file mode 100644 index 17c5d6f4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.155070059967971 -3 -0.138640912344721 -4 -0.139479328635323 -5 -0.143780851624976 -6 -0.131974028031826 -7 -0.131846874465781 -8 -0.0297449586146407 -9 0.845922970552183 -10 -0.159296984935386 -11 -0.138285991843348 -12 -0.134537533789242 -13 -0.131577093324224 -14 -0.125691308156566 -15 -0.132970073437043 -16 0.0701610897537414 -17 0.726509328882366 -18 -0.155563464936531 -19 -0.130583532910968 -20 -0.130321215707134 -21 -0.128053370668094 -22 -0.131414104117502 -23 -0.143370315509163 -24 0.167753265713558 -25 0.62702138447293 -26 -0.141554127399372 -27 -0.115269798845456 -28 -0.136445627883801 -29 -0.132820637414474 -30 -0.135080622216643 -31 -0.144602952408704 -32 0.276623173612157 -33 0.525501850891615 -34 -0.139450017650941 -35 -0.134162769453426 -36 -0.140949499976629 -37 -0.132215037534107 -38 -0.128279804339387 -39 -0.136810773207112 -40 0.379134129717981 -41 0.416977891767592 -42 -0.140192442908231 -43 -0.13892710741734 -44 -0.137436044286789 -45 -0.12612058061194 -46 -0.123633038155193 -47 -0.137070098406579 -48 0.472544339120691 -49 0.301863391448336 -50 -0.137675443743332 -51 -0.132184661720946 -52 -0.121519101402595 -53 -0.115776688296262 -54 -0.131478499025051 -55 -0.116275192910739 -56 0.513473974254625 -57 0.227814467008427 -58 -0.129625218043982 -59 -0.125216745459882 -60 -0.125935112946914 -61 -0.130109252240931 -62 -0.135733419564075 -63 -0.0889814647212915 -64 0.559816239969457 -65 0.163620887268623 -66 -0.126594899689712 -67 -0.127716578736114 -68 -0.128558799740727 -69 -0.132714253074456 -70 -0.132981927789806 -71 -0.0463125531444366 -72 0.581465412089299 -73 0.0982819048234013 -74 -0.129982480706599 -75 -0.133771142860062 -76 -0.126274218030991 -77 -0.123223469867868 -78 -0.11895869982128 -79 0.0160445617942978 -80 0.549313085089554 -81 0.0523653189850826 -82 -0.129204586675343 -83 -0.127677297248879 -84 -0.11959366617596 -85 -0.118162084235907 -86 -0.129587964492176 -87 0.0651465727581341 -88 0.512663258282342 -89 0.0223897667771226 -90 -0.118248096115527 -91 -0.123885682842303 -92 -0.117535431833331 -93 -0.121345328959052 -94 -0.133999463136408 -95 0.135326455911309 -96 0.463805777555027 -97 0.00311864739783577 -98 -0.114421979094575 -99 -0.128164506124927 -100 -0.122080031865248 -101 -0.127022342388225 -102 -0.12151335276331 -103 0.208878191673693 -104 0.419309330326886 -105 -0.0174799014199824 -106 -0.12009985269644 -107 -0.131417368471035 -108 -0.121134843634553 -109 -0.120666756344282 -110 -0.105725377626208 -111 0.262489561386311 -112 0.354541905467325 -113 -0.0429415817022358 -114 -0.118506332455011 -115 -0.127753774809165 -116 -0.109476116043001 -117 -0.119418083275649 -118 -0.0854522404041955 -119 0.302906589860581 -120 0.286896207128895 -121 -0.0493387013179091 -122 -0.111479392930294 -123 -0.123008951924811 -124 -0.106573141028928 -125 -0.126135643791708 -126 -0.0577076665067928 -127 0.311292557510419 -128 0.249513559300441 -129 -0.0437015056466829 -130 -0.10140472809797 -131 -0.125545283680022 -132 -0.113851927275127 -133 -0.129070941594458 -134 -0.0206722811383723 -135 0.33013248984195 -136 0.20961947786441 -137 -0.0505286003858023 -138 -0.118483870649077 -139 -0.129232461148704 -140 -0.110922591820262 -141 -0.126965629548802 -142 0.0286192948484217 -143 0.337096243794888 -144 0.169248086740963 -145 -0.0654190423907559 -146 -0.120486323653649 -147 -0.127288129860007 -148 -0.103891665783828 -149 -0.124659309493563 -150 0.0654747872813297 -151 0.339088871793489 -152 0.117694381111953 -153 -0.069800715562458 -154 -0.113826839844647 -155 -0.112055163352168 -156 -0.0970154053292618 -157 -0.12192255176261 -158 0.0946677686276986 -159 0.319767630968006 -160 0.0962983917333902 -161 -0.0684068034695184 -162 -0.112118295167087 -163 -0.114032731963194 -164 -0.110895191829693 -165 -0.12490942207346 -166 0.150898199785889 -167 0.291628773924692 -168 0.0856114574594624 -169 -0.0734234204063937 -170 -0.114367902362174 -171 -0.118059154641348 -172 -0.112572722725924 -173 -0.103481698557819 -174 0.173284813389025 -175 0.278003056900596 -176 0.0650604673280916 -177 -0.0868193733027222 -178 -0.11924430409928 -179 -0.113850555498896 -180 -0.104056053166332 -181 -0.0706195733056155 -182 0.195014655464426 -183 0.251621304231625 -184 0.0441497783679571 -185 -0.0959128518254443 -186 -0.114114295397473 -187 -0.10361116463172 -188 -0.107664797628733 -189 -0.0474401968360638 -190 0.192034834911418 -191 0.224134275351347 -192 0.0395907319098148 -193 -0.0949220934593083 -194 -0.110602484889644 -195 -0.100717728255861 -196 -0.112049320791611 -197 -0.0238825067986291 -198 0.201018888376214 -199 0.200211719960315 -200 0.0376449870339866 -201 -0.0991903665462876 -202 -0.116672120770685 -203 -0.104917842447271 -204 -0.116982682663512 -205 0.0162721560678791 -206 0.204021816160558 -207 0.207342785121829 -208 0.00663694227997103 -209 -0.106521500277643 -210 -0.116317595851116 -211 -0.104116328257713 -212 -0.112167749776831 -213 0.0615103449414028 -214 0.199609635845337 -215 0.172676627738091 -216 -0.0173787071397098 -217 -0.104939889867195 -218 -0.112425821733991 -219 -0.0953637703798143 -220 -0.093052367494033 -221 0.0644616034737725 -222 0.21086820069092 -223 0.135486543334319 -224 -0.0210787666638188 -225 -0.0993320996511885 -226 -0.109562190043721 -227 -0.0908673948537397 -228 -0.0914456089142807 -229 0.077581460778825 -230 0.208551872164277 -231 0.116140101018818 -232 -0.0163102277997069 -233 -0.0916236078939407 -234 -0.111987175847954 -235 -0.0967383768271821 -236 -0.0826408025523878 -237 0.0966321189661173 -238 0.217509001187049 -239 0.0915108637148122 -240 -0.0253671941695331 -241 -0.104462116651977 -242 -0.11348746907754 -243 -0.0959006192794962 -244 -0.0612059863164585 -245 0.113695227895139 -246 0.208511810998661 -247 0.0766780695718476 -248 -0.0378625564901882 -249 -0.10618641671093 -250 -0.109982771242569 -251 -0.0926244918680679 -252 -0.0406078163763886 -253 0.124817056851144 -254 0.194848461762426 -255 0.053597534522723 -256 -0.0438252920201072 -257 -0.0998946597604676 -258 -0.0959760154259235 -259 -0.090197307047542 -260 -0.0257502198933741 -261 0.136762854179184 -262 0.168912763917697 -263 0.048323842970136 -264 -0.0436786423512219 -265 -0.100740525834715 -266 -0.0977845042725835 -267 -0.0927358458760765 -268 -0.0166810260413945 -269 0.146292226604344 -270 0.158004011117704 -271 0.0463090919867654 -272 -0.0508649026224276 -273 -0.100538901603337 -274 -0.0991902746655388 -275 -0.0968540899423071 -276 0.0148153955144431 -277 0.142136683921793 -278 0.150608238602075 -279 0.0366986042958235 -280 -0.0623139712087233 -281 -0.104975317080266 -282 -0.0956029621068854 -283 -0.0890770998720019 -284 0.0548354482192922 -285 0.133209397126082 -286 0.135583138300418 -287 0.0272435880371227 -288 -0.0714230928286135 -289 -0.0994192940032151 -290 -0.088773103919012 -291 -0.0841613176265042 -292 0.0592558849502553 -293 0.125376924612805 -294 0.129920277737479 -295 0.0195010407479747 -296 -0.0711393383891102 -297 -0.0966110162658782 -298 -0.0881783407707736 -299 -0.0770822025982766 -300 0.066971190635949 -301 0.132833571859132 -302 0.106070818363025 -303 0.0264050368313431 -304 -0.0786120187871163 -305 -0.099744480101871 -306 -0.0903116034438872 -307 -0.0727258814461179 -308 0.0805880901984141 -309 0.152764049007061 -310 0.0897693593924932 -311 0.0244183980184888 -312 -0.0913585727715549 -313 -0.101610527844229 -314 -0.0890784444186723 -315 -0.0580505722105439 -316 0.10438372554223 -317 0.13749147221931 -318 0.0759708703685098 -319 0.0047310993987612 -320 -0.0918433949431894 -321 -0.0973283709859868 -322 -0.0830381658731675 -323 -0.0375501533905209 -324 0.104260628790112 -325 0.136767805598137 -326 0.0649623096294137 -327 -0.0111381353615883 -328 -0.0902174271151667 -329 -0.0900084947503609 -330 -0.0845603027974476 -331 -0.0222484905680352 -332 0.10044110265699 -333 0.137209031622297 -334 0.0512317724372533 -335 -0.00469813974344492 -336 -0.0852660869649502 -337 -0.0936856764672113 -338 -0.0810781749410849 -339 -0.0111001728500522 -340 0.103897631604526 -341 0.131709630700509 -342 0.0454986930271181 -343 -0.0154461854075281 -344 -0.0950428147360073 -345 -0.0917481808403137 -346 -0.0819073492712917 -347 0.0124487690676487 -348 0.108988172807393 -349 0.12289144923052 -350 0.0405329244459299 -351 -0.0278261263679556 -352 -0.0969672128436255 -353 -0.0868716693424195 -354 -0.0819407369083838 -355 0.035944491369377 -356 0.107744673984401 -357 0.112575623631055 -358 0.0263346758872926 -359 -0.0328420504056899 -360 -0.0908205706813633 -361 -0.0750870093565662 -362 -0.0805597459059112 -363 0.0581570376747647 -364 0.0865463018735628 -365 0.116540878273595 -366 0.0199948600453009 -367 -0.03533657508366 -368 -0.0918593012174403 -369 -0.0794617415964357 -370 -0.0787014627401186 -371 0.0674476303755033 -372 0.087942973565642 -373 0.104930936427726 -374 0.0273053506001638 -375 -0.0464030903226921 -376 -0.0892541387964512 -377 -0.0826842259404731 -378 -0.071374986057042 -379 0.0807180550904197 -380 0.0929177969009142 -381 0.0862437690352589 -382 0.0286028161793366 -383 -0.0593261076213299 -384 -0.0910657756760768 -385 -0.0789683507405574 -386 -0.0550314183063351 -387 0.100805664939276 -388 0.0897320960012182 -389 0.067010863731299 -390 0.0261048090556462 -391 -0.0659316696174206 -392 -0.086786864764739 -393 -0.0733845242014095 -394 -0.0405465879929758 -395 0.0859517679001778 -396 0.0936250494518407 -397 0.0524562962824195 -398 0.0270919515769923 -399 -0.0676718513969418 -400 -0.0824139549961516 -401 -0.0758274382046422 -402 -0.021973546868283 -403 0.075410664358751 -404 0.104172119247351 -405 0.0343795991613305 -406 0.0358573471696254 -407 -0.0790257754948948 -408 -0.0826103755113398 -409 -0.0802175095763564 -410 -0.00408772816730303 -411 0.0797817450643218 -412 0.10269754375399 -413 0.0435425040893042 -414 0.0151375915059022 -415 -0.082224988149043 -416 -0.0825565105203654 -417 -0.0696184362192416 -418 0.00170781584040336 -419 0.0936874402227218 -420 0.0877595224369305 -421 0.0362572112929432 -422 -0.000752383773564971 -423 -0.0819270792159826 -424 -0.0773158381537405 -425 -0.0651464418900243 -426 0.0233879760162931 -427 0.0833911120244448 -428 0.0867605850712271 -429 0.0258451549993298 -430 -0.00489040153892436 -431 -0.0813233842666857 -432 -0.0691569813607638 -433 -0.0684545819114933 -434 0.0396563587473597 -435 0.0716165433337824 -436 0.0861256506553954 -437 0.0246435046549525 -438 -0.00567840565516219 -439 -0.0766446108871898 -440 -0.0734501086613091 -441 -0.0625863247444175 -442 0.0405008658019374 -443 0.0751250312042876 -444 0.0937777476669092 -445 0.0157135360029692 -446 -0.0185119034061188 -447 -0.0834731849818629 -448 -0.0721596446426834 -449 -0.0539848776994025 -450 0.0482803239352817 -451 0.0865159532050759 -452 0.0758518110612569 -453 0.0183167125626064 -454 -0.0302067075389182 -455 -0.0836849146728332 -456 -0.0680915900681338 -457 -0.0453151677467697 -458 0.0635811903828984 -459 0.0735228836096314 -460 0.0668774855582583 -461 0.0155517569389754 -462 -0.0361902584803522 -463 -0.0772526293731969 -464 -0.0599993945121568 -465 -0.0350025604255705 -466 0.0675409442225932 -467 0.0626588958411958 -468 0.0628618478913283 -469 0.0182100018474144 -470 -0.0393572049932932 -471 -0.0769465863807705 -472 -0.0669019696984521 -473 -0.0307690547029792 -474 0.0787650857298563 -475 0.0555937053005102 -476 0.0591286536064479 -477 0.0236864710611653 -478 -0.0510348446259402 -479 -0.0750230625326582 -480 -0.0692429698123807 -481 -0.0136046303961235 -482 0.074650527480705 -483 0.0576038372995368 -484 0.0514169146679383 -485 0.0235780875676953 -486 -0.0619450461800331 -487 -0.0775574009249976 -488 -0.0561458830522187 -489 -0.00509801117317696 -490 0.0804313785186439 -491 0.0577719157969876 -492 0.03898688881339 -493 0.0241595263048843 -494 -0.0685591657894399 -495 -0.0723076795891697 -496 -0.0523226231903489 -497 0.00373957683716917 -498 0.0717069979485176 -499 0.0550717482683905 -500 0.0403995445989468 -501 0.0113079953085825 -502 -0.0649276537000009 -503 -0.06649843954063 -504 -0.0560505708705572 -505 0.0137761579457734 -506 0.0702863631617265 -507 0.0541404684830862 -508 0.0443433883094673 -509 -0.00133780696150024 -510 -0.0665134068108655 -511 -0.0657601321121601 -512 -0.0607034011107588 -513 0.0213546383342833 -514 0.0775077767181889 -515 0.063458353376667 -516 0.0389609528439854 -517 -0.0108770067728056 -518 -0.0688616436130423 -519 -0.065807838377633 -520 -0.0591899626361279 -521 0.0477995260084885 -522 0.069819996106301 -523 0.0493499046172744 -524 0.0332730594271413 -525 -0.0200687475895302 -526 -0.0673172583961927 -527 -0.0608118592717286 -528 -0.046481250749937 -529 0.0514180414158432 -530 0.0671097463271896 -531 0.0400867520372663 -532 0.0333984982834754 -533 -0.0264838317178022 -534 -0.0659983240048536 -535 -0.0542885590490045 -536 -0.0401453467006326 -537 0.0485625723714385 -538 0.0635239092110429 -539 0.0345979294218286 -540 0.0399929330334083 -541 -0.028147715594677 -542 -0.0619139995393741 -543 -0.0586913999576994 -544 -0.0334649755872845 -545 0.0516737635834675 -546 0.0645253644882226 -547 0.0345307867743962 -548 0.0400603616259159 -549 -0.0423531962375596 -550 -0.0672300807914405 -551 -0.0587843856721668 -552 -0.0232646807886831 -553 0.058345982518284 -554 0.0665917961516256 -555 0.0274860012958233 -556 0.0415598244265968 -557 -0.0545146822234879 -558 -0.0677685109591305 -559 -0.0552725887508413 -560 -0.0125012238487659 -561 0.0625075581718202 -562 0.066971444471093 -563 0.0129232540938186 -564 0.0392980506706601 -565 -0.05908734296345 -566 -0.0607304242571567 -567 -0.0493112113842046 -568 0.00071062117125135 -569 0.0653734421725974 -570 0.0469205167937502 -571 0.0252022285127285 -572 0.0269428623042389 -573 -0.0554040258813037 -574 -0.0594329262955446 -575 -0.0472055457536386 -576 -0.00273760356981996 -577 0.0642743964669037 -578 0.0419312704866381 -579 0.0399122296513867 -580 0.0132186725236814 -581 -0.0547466706460982 -582 -0.0579756221767372 -583 -0.0511476715833451 -584 0.00601423910448657 -585 0.0689373246423459 -586 0.0353940033868963 -587 0.0425778157862413 -588 0.00424129603039375 -589 -0.0586697203651189 -590 -0.059002595522944 -591 -0.0470191336291943 -592 0.0244211578887408 -593 0.0714176288385068 -594 0.0293208317804955 -595 0.0369996210742842 -596 -0.00457553552424864 -597 -0.0559531047561718 -598 -0.0523918096467366 -599 -0.0446664312862491 -600 0.0316320734850762 -601 0.0644602080811167 -602 0.0199863627247641 -603 0.0369746309809726 -604 -0.00948602618598588 -605 -0.0504144894458729 -606 -0.0498443845352435 -607 -0.0444638507903543 -608 0.0391189013974007 -609 0.0628424781970596 -610 0.0112347649830505 -611 0.041452654212153 -612 -0.0137347497952992 -613 -0.0506892746398375 -614 -0.0511072669077967 -615 -0.0477234466444133 -616 0.048705448350975 -617 0.0667627851388053 -618 0.0115120265386804 -619 0.0461383553267045 -620 -0.0255620287525987 -621 -0.0530260247588348 -622 -0.0518381410417808 -623 -0.034700796376516 -624 0.0438063518562166 -625 0.0798836058195734 -626 -0.00243894245318495 -627 0.0406243460796687 -628 -0.0332199890358811 -629 -0.0523350080049007 -630 -0.0477070167478482 -631 -0.0215305402264588 -632 0.0472394359550523 -633 0.0694737083559497 -634 -0.00372172457388709 -635 0.0391809172600764 -636 -0.0382719971378076 -637 -0.0501961995371232 -638 -0.042738214015656 -639 -0.0140839477377811 -640 0.0442885931768186 -641 0.0581346694204897 -642 -0.000477976111666972 -643 0.044566527743489 -644 -0.0396856402477227 -645 -0.0466626145007252 -646 -0.0480864305333951 -647 -0.00726442405889962 -648 0.0459497867910762 -649 0.0529082222445075 -650 0.0147432426130685 -651 0.0267433571795441 -652 -0.0446692520126606 -653 -0.0497203066081803 -654 -0.0480919421757669 -655 0.00345954210366673 -656 0.0509913399433936 -657 0.0467433070314585 -658 0.0252001648134732 -659 0.0106946846977517 -660 -0.0484551606819746 -661 -0.0500758070505588 -662 -0.0440163401232168 -663 0.0148218474037118 -664 0.0526365008291643 -665 0.0397902946591361 -666 0.0206689888910779 -667 0.00207265111858896 -668 -0.0440452489670014 -669 -0.0447792337914997 -670 -0.0286381554427784 -671 0.00640869437792482 -672 0.057153163903739 -673 0.0304890998129141 -674 0.0230136624918959 -675 -0.00281506118608654 -676 -0.0387242678971035 -677 -0.044929991903093 -678 -0.0345193810230013 -679 0.00492460337689268 -680 0.0679821172192718 -681 0.0219950472241659 -682 0.0289438385002853 -683 -0.00781136170677615 -684 -0.0388612390832975 -685 -0.0438680272774733 -686 -0.0376131497506628 -687 0.0139348600467974 -688 0.0615101213028946 -689 0.0249115734544766 -690 0.0331598636184604 -691 -0.0195415991964588 -692 -0.0396395679788538 -693 -0.0456649577394422 -694 -0.0344136244069955 -695 0.031200395934606 -696 0.0562012519733673 -697 0.0260663012747182 -698 0.0295359686001106 -699 -0.0291311572903775 -700 -0.0371203313810216 -701 -0.0424418146790537 -702 -0.0303746199454463 -703 0.0388492858751788 -704 0.0424481679100295 -705 0.0263584605497916 -706 0.0288712604390293 -707 -0.0341554547083513 -708 -0.0333021072203847 -709 -0.0383392296141879 -710 -0.030923211248435 -711 0.0471145773235206 -712 0.032067317539082 -713 0.0263399585846731 -714 0.0323937671311792 -715 -0.0392772990043492 -716 -0.0317758252581109 -717 -0.0407689976562314 -718 -0.0327532575849971 -719 0.0558983521943971 -720 0.026320879417627 -721 0.0457775828616138 -722 0.0162704705253485 -723 -0.0410862090233348 -724 -0.0334511325087015 -725 -0.0413337594074423 -726 -0.0301113850535044 -727 0.0700417742596319 -728 0.0210871230961877 -729 0.0496617422305004 -730 -0.00408251250355076 -731 -0.0406821339716385 -732 -0.0329210563908783 -733 -0.0378798823957753 -734 -0.0166612213666539 -735 0.0622559233401728 -736 0.0220631815362089 -737 0.0480937159816023 -738 -0.0123428856122574 -739 -0.0375402198111287 -740 -0.0309453130567288 -741 -0.0353256252179894 -742 -0.00536945125430805 -743 0.0496444169496324 -744 0.0204929366248046 -745 0.0499533569480695 -746 -0.0174935751544407 -747 -0.0286134919496942 -748 -0.0305151115655182 -749 -0.0370057423961568 -750 0.00182606608143132 -751 0.0417928304144692 -752 0.0232491015772242 -753 0.0556033683720853 -754 -0.0281117547926764 -755 -0.030035318580472 -756 -0.0330573966633533 -757 -0.0365260598388687 -758 0.0111750942979797 -759 0.0374827782514529 -760 0.0257453279628935 -761 0.0580299290244595 -762 -0.0358087395388202 -763 -0.0338231237069173 -764 -0.0328610625099181 -765 -0.0336222121488749 -766 0.0234186100148553 -767 0.0293361050839678 -768 0.0383060243360171 -769 0.0358879458606336 -770 -0.0363117922484678 -771 -0.0310100414844719 -772 -0.0298340231919974 -773 -0.0258481757762449 -774 0.033493341046757 -775 0.0172146853910682 -776 0.0455221955873717 -777 0.0204498758334694 -778 -0.033692934640153 -779 -0.0254246875075756 -780 -0.0321408035488926 -781 -0.0179574084831518 -782 0.0214789164114721 -783 0.019638114859952 -784 0.0455930828635699 -785 0.0178984964416421 -786 -0.0300055577311117 -787 -0.0240917794268532 -788 -0.0321597467853985 -789 -0.0210401731167207 -790 0.0230111556897733 -791 0.0217566052979974 -792 0.0489917866644012 -793 0.0104440982676834 -794 -0.0301428802473305 -795 -0.0258951028342734 -796 -0.03187192392573 -797 -0.0176269050708972 -798 0.027393570534183 -799 0.0263875715311133 -800 0.0486779658212448 -801 -0.00102291484615847 -802 -0.0300556523736458 -803 -0.023857819156972 -804 -0.0280605128257784 -805 -0.0146115387847382 -806 0.0244907923259942 -807 0.0247824841072157 -808 0.0494074681728141 -809 -0.0095960873131345 -810 -0.0267959528999005 -811 -0.0203312406902549 -812 -0.0260311947802059 -813 -0.0131484879600813 -814 0.0230120193265332 -815 0.0228091639758259 -816 0.051666749222434 -817 -0.0152576501369182 -818 -0.0250358027329496 -819 -0.0190314982739485 -820 -0.0266605188325892 -821 -0.0144373958898868 -822 0.0237380994329812 -823 0.0260374801079161 -824 0.0586957834829624 -825 -0.022457849542461 -826 -0.0262980585565696 -827 -0.0200584452117297 -828 -0.0266876132871316 -829 -0.0129290645560979 -830 0.0289095571745369 -831 0.0354539766084729 -832 0.0392777761914384 -833 -0.0238771076358964 -834 -0.0245018601036372 -835 -0.0205517186652316 -836 -0.0234327204627339 -837 -0.00933955244847433 -838 0.0296367828905565 -839 0.0459917434926111 -840 0.0186744768510845 -841 -0.0234505177518883 -842 -0.0215210406113312 -843 -0.01812563049523 -844 -0.0212885529434847 -845 -0.0088234522037928 -846 0.0280281842675072 -847 0.045730091253579 -848 0.0136208433079523 -849 -0.0205058386168346 -850 -0.0163481209061992 -851 -0.017230164457982 -852 -0.0230906563738739 -853 -0.00937085079532756 -854 0.0286089438226922 -855 0.0501679772526387 -856 0.00511934527865221 -857 -0.0188740591732872 -858 -0.017123441437589 -859 -0.0185029603009925 -860 -0.0202624384779385 -861 -0.0103662518808214 -862 0.0316765684721357 -863 0.0535962784902621 -864 -0.00257262435536896 -865 -0.0176721411023214 -866 -0.0194221796537958 -867 -0.0180419513954025 -868 -0.0173325086944974 -869 -0.00890051108382059 -870 0.0333845873727604 -871 0.0544120911411167 -872 -0.0112929673408612 -873 -0.0180526419713337 -874 -0.0167143497616369 -875 -0.0157948604767141 -876 -0.0130148291547908 -877 -0.0066614174930643 -878 0.0306666725820053 -879 0.0540685898200517 -880 -0.0179887040186856 -881 -0.0155749350538922 -882 -0.015542452853135 -883 -0.0149949065113926 -884 -0.0134739305361601 -885 -0.0082822064674981 -886 0.0415180058769115 -887 0.037756025074253 -888 -0.0148899027592997 -889 -0.013090094291838 -890 -0.0153014397425967 -891 -0.0135012972355123 -892 -0.015585448733386 -893 -0.00788737374502331 -894 0.0535415797928148 -895 0.0217926147381109 -896 -0.01363175489377 -897 -0.012354773771845 -898 -0.0155285058724365 -899 -0.0135036893080631 -900 -0.0125236766180776 -901 -0.00637080628552419 -902 0.0605226042557018 -903 0.0112303280281208 -904 -0.0133912061642023 -905 -0.0124502459337457 -906 -0.0142998634027549 -907 -0.0099981269727546 -908 -0.0122633402331702 -909 -0.00567413706716593 -910 0.0595172409685727 -911 0.00326019370638518 -912 -0.0128841193059995 -913 -0.0102224824574885 -914 -0.0116469346046309 -915 -0.00776357295252222 -916 -0.0118848925539363 -917 -0.00433896685705348 -918 0.0567076341120711 -919 -0.00300835870741313 -920 -0.0107647074857665 -921 -0.00845164093060122 -922 -0.0106818140369162 -923 -0.00761048402311565 -924 -0.0114674108324614 -925 -0.00417421313051504 -926 0.0598773670187433 -927 -0.00747931723570069 -928 -0.00927920131574313 -929 -0.00986810999500912 -930 -0.0104075730217127 -931 -0.00695169167094114 -932 -0.0109784274186893 -933 0.00811872232461237 -934 0.0430158981401019 -935 -0.00722859498851006 -936 -0.00990312674945696 -937 -0.00920124918803136 -938 -0.00908355760957161 -939 -0.00496962170124263 -940 -0.00878291146198605 -941 0.0194043242975934 -942 0.0256780783722546 -943 -0.00897052689874001 -944 -0.00954900138754423 -945 -0.00713164082441335 -946 -0.00673138670048183 -947 -0.00311543034312673 -948 -0.00793377494765913 -949 0.0199694046973212 -950 0.0180051634303271 -951 -0.00731841589233604 -952 -0.0061524475893558 -953 -0.00552246177877621 -954 -0.00405347414382562 -955 -0.00502519204794434 -956 -0.00735520719380658 -957 0.0201391483118552 -958 0.0115351551478785 -959 -0.00595396340022971 -960 -0.0044658313778136 -961 -0.00466635333434365 -962 -0.00505971330517482 -963 -0.00426347088471071 -964 -0.00630201264403959 -965 0.0226924063931286 -966 0.00532856864375404 -967 -0.00456693836529996 -968 -0.00500848518452319 -969 -0.00521286355162228 -970 -0.00466691800162192 -971 -0.00261192567994811 -972 -0.00365801738266432 -973 0.0244751515715762 -974 -0.00293671804465107 -975 -0.0036023990997325 -976 -0.00448873920500162 -977 -0.00365131282800052 -978 -0.00180880871887979 -979 -0.00132104428035144 -980 0.00742840409816276 -981 0.00626148410583357 -982 -0.00316720508921753 -983 -0.00304702341715472 -984 -0.0023682711547723 -985 -0.00118323799369014 -986 -3.66599346965767e-05 -987 -0.000324399710172427 -988 0.00733954118289635 -989 -0.00225809776707784 -990 -0.00133635779017759 -991 -0.00134850512655973 -992 -0.000434310902574387 -993 -0.000233992853297238 -994 0.000360461316321191 -995 -0.000531725699132137 -996 -0.000471000549829534 -997 0.000486792668870103 -998 0.000364177523187972 -999 0.000256019411210032 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat deleted file mode 100644 index e51dc44f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.0337560176849365 0.0300000000000011 0.0300000000000011 0.0 1 -2 0.0330429077148438 0.029999999999994 0.029999999999994 0.0 2 -3 0.0369691848754883 0.0400000000000063 0.0400000000000063 0.0 3 -4 0.0330410003662109 0.029999999999994 0.029999999999994 0.0 4 -5 0.0346219539642334 0.0400000000000063 0.0400000000000063 0.0 5 -6 0.0324759483337402 0.029999999999994 0.029999999999994 0.0 6 -7 0.0320150852203369 0.0300000000000011 0.0300000000000011 0.0 7 -8 0.0320718288421631 0.0300000000000011 0.0300000000000011 0.0 8 -9 0.0765988826751709 0.0799999999999983 0.0799999999999983 0.0 9 -10 0.0331180095672607 0.0300000000000011 0.0300000000000011 0.0 10 -11 0.0346410274505615 0.0399999999999991 0.0399999999999991 0.0 11 -12 0.0330672264099121 0.0300000000000011 0.0300000000000011 0.0 12 -13 0.0326869487762451 0.0300000000000011 0.0300000000000011 0.0 13 -14 0.0323951244354248 0.0399999999999991 0.0399999999999991 0.0 14 -15 0.0317728519439697 0.0300000000000011 0.0300000000000011 0.0 15 -16 0.0336828231811523 0.0300000000000011 0.0300000000000011 0.0 16 -17 0.0816280841827393 0.0799999999999983 0.0799999999999983 0.0 17 -18 0.0336179733276367 0.0399999999999991 0.0399999999999991 0.0 18 -19 0.0329349040985107 0.0300000000000011 0.0300000000000011 0.0 19 -20 0.0328211784362793 0.0300000000000011 0.0300000000000011 0.0 20 -21 0.0326688289642334 0.0300000000000011 0.0300000000000011 0.0 21 -22 0.0329129695892334 0.0399999999999991 0.0399999999999991 0.0 22 -23 0.0351161956787109 0.0300000000000011 0.0300000000000011 0.0 23 -24 0.073289155960083 0.0799999999999983 0.0799999999999983 0.0 24 -25 0.0333049297332764 0.0300000000000011 0.0300000000000011 0.0 25 -26 0.0327980518341064 0.029999999999994 0.029999999999994 0.0 26 -27 0.0333559513092041 0.0400000000000063 0.0400000000000063 0.0 27 -28 0.0331299304962158 0.029999999999994 0.029999999999994 0.0 28 -29 0.0361030101776123 0.0300000000000011 0.0300000000000011 0.0 29 -30 0.0326149463653564 0.0399999999999991 0.0399999999999991 0.0 30 -31 0.0354421138763428 0.0300000000000011 0.0300000000000011 0.0 31 -32 0.0737769603729248 0.0799999999999983 0.0799999999999983 0.0 32 -33 0.0334198474884033 0.0300000000000011 0.0300000000000011 0.0 33 -34 0.0328729152679443 0.0300000000000011 0.0300000000000011 0.0 34 -35 0.0363237857818604 0.0399999999999991 0.0399999999999991 0.0 35 -36 0.0331850051879883 0.0300000000000011 0.0300000000000011 0.0 36 -37 0.033970832824707 0.0399999999999991 0.0399999999999991 0.0 37 -38 0.0325729846954346 0.0300000000000011 0.0300000000000011 0.0 38 -39 0.0321781635284424 0.0300000000000011 0.0300000000000011 0.0 39 -40 0.0730009078979492 0.0700000000000003 0.0700000000000003 0.0 40 -41 0.0354671478271484 0.0399999999999991 0.0399999999999991 0.0 41 -42 0.0329980850219727 0.0300000000000011 0.0300000000000011 0.0 42 -43 0.0432839393615723 0.0499999999999972 0.0499999999999972 0.0 43 -44 0.0330131053924561 0.0300000000000011 0.0300000000000011 0.0 44 -45 0.032541036605835 0.0300000000000011 0.0300000000000011 0.0 45 -46 0.0323638916015625 0.0300000000000011 0.0300000000000011 0.0 46 -47 0.0322492122650146 0.0399999999999991 0.0399999999999991 0.0 47 -48 0.0752780437469482 0.0700000000000003 0.0700000000000003 0.0 48 -49 0.0334651470184326 0.0300000000000011 0.0300000000000011 0.0 49 -50 0.0330009460449219 0.0399999999999991 0.0399999999999991 0.0 50 -51 0.0331478118896484 0.0300000000000011 0.0300000000000011 0.0 51 -52 0.0328009128570557 0.029999999999994 0.029999999999994 0.0 52 -53 0.0326621532440186 0.0400000000000063 0.0400000000000063 0.0 53 -54 0.0325331687927246 0.029999999999994 0.029999999999994 0.0 54 -55 0.0355179309844971 0.0300000000000011 0.0300000000000011 0.0 55 -56 0.0758390426635742 0.0800000000000054 0.0800000000000054 0.0 56 -57 0.0330648422241211 0.029999999999994 0.029999999999994 0.0 57 -58 0.0333669185638428 0.0399999999999991 0.0399999999999991 0.0 58 -59 0.0331768989562988 0.0300000000000011 0.0300000000000011 0.0 59 -60 0.0326540470123291 0.0300000000000011 0.0300000000000011 0.0 60 -61 0.036034107208252 0.0399999999999991 0.0399999999999991 0.0 61 -62 0.0326058864593506 0.0300000000000011 0.0300000000000011 0.0 62 -63 0.032081127166748 0.0300000000000011 0.0300000000000011 0.0 63 -64 0.0732240676879883 0.0799999999999983 0.0799999999999983 0.0 64 -65 0.0332009792327881 0.0300000000000011 0.0300000000000011 0.0 65 -66 0.0333409309387207 0.0300000000000011 0.0300000000000011 0.0 66 -67 0.0352249145507812 0.0399999999999991 0.0399999999999991 0.0 67 -68 0.0328779220581055 0.0300000000000011 0.0300000000000011 0.0 68 -69 0.0408899784088135 0.0399999999999991 0.0399999999999991 0.0 69 -70 0.0330538749694824 0.0399999999999991 0.0399999999999991 0.0 70 -71 0.0315990447998047 0.0300000000000011 0.0300000000000011 0.0 71 -72 0.0723180770874023 0.0700000000000003 0.0700000000000003 0.0 72 -73 0.0360608100891113 0.0399999999999991 0.0399999999999991 0.0 73 -74 0.0332560539245605 0.0300000000000011 0.0300000000000011 0.0 74 -75 0.0337710380554199 0.0300000000000011 0.0300000000000011 0.0 75 -76 0.0330729484558105 0.0399999999999991 0.0399999999999991 0.0 76 -77 0.0325820446014404 0.0300000000000011 0.0300000000000011 0.0 77 -78 0.0323619842529297 0.029999999999994 0.029999999999994 0.0 78 -79 0.0319099426269531 0.0300000000000011 0.0300000000000011 0.0 79 -80 0.0756161212921143 0.0800000000000054 0.0800000000000054 0.0 80 -81 0.0331521034240723 0.029999999999994 0.029999999999994 0.0 81 -82 0.0353209972381592 0.0400000000000063 0.0400000000000063 0.0 82 -83 0.0330510139465332 0.029999999999994 0.029999999999994 0.0 83 -84 0.03314208984375 0.0300000000000011 0.0300000000000011 0.0 84 -85 0.03261399269104 0.0300000000000011 0.0300000000000011 0.0 85 -86 0.0322940349578857 0.0399999999999991 0.0399999999999991 0.0 86 -87 0.034559965133667 0.0300000000000011 0.0300000000000011 0.0 87 -88 0.0729730129241943 0.0700000000000003 0.0700000000000003 0.0 88 -89 0.033174991607666 0.0399999999999991 0.0399999999999991 0.0 89 -90 0.0331950187683105 0.0300000000000011 0.0300000000000011 0.0 90 -91 0.032789945602417 0.0300000000000011 0.0300000000000011 0.0 91 -92 0.032573938369751 0.0399999999999991 0.0399999999999991 0.0 92 -93 0.0352959632873535 0.0300000000000011 0.0300000000000011 0.0 93 -94 0.0322601795196533 0.0300000000000011 0.0300000000000011 0.0 94 -95 0.0399200916290283 0.0399999999999991 0.0399999999999991 0.0 95 -96 0.0733668804168701 0.0799999999999983 0.0799999999999983 0.0 96 -97 0.0330679416656494 0.0300000000000011 0.0300000000000011 0.0 97 -98 0.0331020355224609 0.0300000000000011 0.0300000000000011 0.0 98 -99 0.0338099002838135 0.0399999999999991 0.0399999999999991 0.0 99 -100 0.0351119041442871 0.0300000000000011 0.0300000000000011 0.0 100 -101 0.0325391292572021 0.0399999999999991 0.0399999999999991 0.0 101 -102 0.0326120853424072 0.0300000000000011 0.0300000000000011 0.0 102 -103 0.0314269065856934 0.029999999999994 0.029999999999994 0.0 103 -104 0.0736079216003418 0.0700000000000003 0.0700000000000003 0.0 104 -105 0.0331168174743652 0.0399999999999991 0.0399999999999991 0.0 105 -106 0.0369949340820312 0.0300000000000011 0.0300000000000011 0.0 106 -107 0.033034086227417 0.0399999999999991 0.0399999999999991 0.0 107 -108 0.0347108840942383 0.0300000000000011 0.0300000000000011 0.0 108 -109 0.0326550006866455 0.0300000000000011 0.0300000000000011 0.0 109 -110 0.032649040222168 0.0399999999999991 0.0399999999999991 0.0 110 -111 0.0317308902740479 0.0300000000000011 0.0300000000000011 0.0 111 -112 0.075963020324707 0.0700000000000003 0.0700000000000003 0.0 112 -113 0.0332450866699219 0.0399999999999991 0.0399999999999991 0.0 113 -114 0.0340969562530518 0.0300000000000011 0.0300000000000011 0.0 114 -115 0.0331099033355713 0.0300000000000011 0.0300000000000011 0.0 115 -116 0.0326979160308838 0.0399999999999991 0.0399999999999991 0.0 116 -117 0.0322890281677246 0.0300000000000011 0.0300000000000011 0.0 117 -118 0.0321509838104248 0.0300000000000011 0.0300000000000011 0.0 118 -119 0.0315690040588379 0.029999999999994 0.029999999999994 0.0 119 -120 0.0853371620178223 0.0900000000000034 0.0900000000000034 0.0 120 -121 0.0338900089263916 0.0300000000000011 0.0300000000000011 0.0 121 -122 0.0330648422241211 0.0399999999999991 0.0399999999999991 0.0 122 -123 0.0330510139465332 0.0300000000000011 0.0300000000000011 0.0 123 -124 0.0327119827270508 0.0300000000000011 0.0300000000000011 0.0 124 -125 0.0324461460113525 0.029999999999994 0.029999999999994 0.0 125 -126 0.036160945892334 0.0400000000000063 0.0400000000000063 0.0 126 -127 0.0314981937408447 0.029999999999994 0.029999999999994 0.0 127 -128 0.073836088180542 0.0800000000000054 0.0800000000000054 0.0 128 -129 0.0328719615936279 0.029999999999994 0.029999999999994 0.0 129 -130 0.0332820415496826 0.0300000000000011 0.0300000000000011 0.0 130 -131 0.0329020023345947 0.0300000000000011 0.0300000000000011 0.0 131 -132 0.0362491607666016 0.0399999999999991 0.0399999999999991 0.0 132 -133 0.0325329303741455 0.0300000000000011 0.0300000000000011 0.0 133 -134 0.0340819358825684 0.0399999999999991 0.0399999999999991 0.0 134 -135 0.0319511890411377 0.0300000000000011 0.0300000000000011 0.0 135 -136 0.0739138126373291 0.0700000000000003 0.0700000000000003 0.0 136 -137 0.0330600738525391 0.0300000000000011 0.0300000000000011 0.0 137 -138 0.0359530448913574 0.0399999999999991 0.0399999999999991 0.0 138 -139 0.0330100059509277 0.0300000000000011 0.0300000000000011 0.0 139 -140 0.0330448150634766 0.0399999999999991 0.0399999999999991 0.0 140 -141 0.0330119132995605 0.0300000000000011 0.0300000000000011 0.0 141 -142 0.0321979522705078 0.0300000000000011 0.0300000000000011 0.0 142 -143 0.0314090251922607 0.029999999999994 0.029999999999994 0.0 143 -144 0.0762948989868164 0.0800000000000054 0.0800000000000054 0.0 144 -145 0.0330369472503662 0.0300000000000011 0.0300000000000011 0.0 145 -146 0.0413818359375 0.0399999999999991 0.0399999999999991 0.0 146 -147 0.0336639881134033 0.0399999999999991 0.0399999999999991 0.0 147 -148 0.032634973526001 0.0300000000000011 0.0300000000000011 0.0 148 -149 0.0324230194091797 0.029999999999994 0.029999999999994 0.0 149 -150 0.0322530269622803 0.0400000000000063 0.0400000000000063 0.0 150 -151 0.0314328670501709 0.029999999999994 0.029999999999994 0.0 151 -152 0.0764839649200439 0.0700000000000003 0.0700000000000003 0.0 152 -153 0.0351881980895996 0.0400000000000063 0.0400000000000063 0.0 153 -154 0.0330648422241211 0.029999999999994 0.029999999999994 0.0 154 -155 0.0328710079193115 0.0399999999999991 0.0399999999999991 0.0 155 -156 0.032764196395874 0.0300000000000011 0.0300000000000011 0.0 156 -157 0.0323169231414795 0.0300000000000011 0.0300000000000011 0.0 157 -158 0.0350921154022217 0.0399999999999991 0.0399999999999991 0.0 158 -159 0.0315439701080322 0.0300000000000011 0.0300000000000011 0.0 159 -160 0.0760791301727295 0.0700000000000003 0.0700000000000003 0.0 160 -161 0.0333390235900879 0.0399999999999991 0.0399999999999991 0.0 161 -162 0.0331790447235107 0.0300000000000011 0.0300000000000011 0.0 162 -163 0.0328421592712402 0.0300000000000011 0.0300000000000011 0.0 163 -164 0.0354018211364746 0.0399999999999991 0.0399999999999991 0.0 164 -165 0.0326108932495117 0.0300000000000011 0.0300000000000011 0.0 165 -166 0.0330290794372559 0.0300000000000011 0.0300000000000011 0.0 166 -167 0.0316469669342041 0.0300000000000011 0.0300000000000011 0.0 167 -168 0.0735650062561035 0.0799999999999983 0.0799999999999983 0.0 168 -169 0.0328128337860107 0.0300000000000011 0.0300000000000011 0.0 169 -170 0.034276008605957 0.0399999999999991 0.0399999999999991 0.0 170 -171 0.0350871086120605 0.0300000000000011 0.0300000000000011 0.0 171 -172 0.0402491092681885 0.0399999999999991 0.0399999999999991 0.0 172 -173 0.033289909362793 0.0300000000000011 0.0300000000000011 0.0 173 -174 0.0319631099700928 0.0399999999999991 0.0399999999999991 0.0 174 -175 0.0314111709594727 0.029999999999994 0.029999999999994 0.0 175 -176 0.0736920833587646 0.0700000000000003 0.0700000000000003 0.0 176 -177 0.0366611480712891 0.0400000000000063 0.0400000000000063 0.0 177 -178 0.0331029891967773 0.029999999999994 0.029999999999994 0.0 178 -179 0.0331480503082275 0.0300000000000011 0.0300000000000011 0.0 179 -180 0.0324270725250244 0.0399999999999991 0.0399999999999991 0.0 180 -181 0.0324950218200684 0.0300000000000011 0.0300000000000011 0.0 181 -182 0.032120943069458 0.0300000000000011 0.0300000000000011 0.0 182 -183 0.0316941738128662 0.0300000000000011 0.0300000000000011 0.0 183 -184 0.0764799118041992 0.0799999999999983 0.0799999999999983 0.0 184 -185 0.0351009368896484 0.0300000000000011 0.0300000000000011 0.0 185 -186 0.0331439971923828 0.0399999999999991 0.0399999999999991 0.0 186 -187 0.0333070755004883 0.0300000000000011 0.0300000000000011 0.0 187 -188 0.0326988697052002 0.0300000000000011 0.0300000000000011 0.0 188 -189 0.0324010848999023 0.0399999999999991 0.0399999999999991 0.0 189 -190 0.0343129634857178 0.0300000000000011 0.0300000000000011 0.0 190 -191 0.0317180156707764 0.0300000000000011 0.0300000000000011 0.0 191 -192 0.0754880905151367 0.0799999999999983 0.0799999999999983 0.0 192 -193 0.0328428745269775 0.0300000000000011 0.0300000000000011 0.0 193 -194 0.0328872203826904 0.029999999999994 0.029999999999994 0.0 194 -195 0.0326900482177734 0.0400000000000063 0.0400000000000063 0.0 195 -196 0.0326938629150391 0.029999999999994 0.029999999999994 0.0 196 -197 0.036156177520752 0.0400000000000063 0.0400000000000063 0.0 197 -198 0.0402121543884277 0.029999999999994 0.029999999999994 0.0 198 -199 0.0345208644866943 0.0400000000000063 0.0400000000000063 0.0 199 -200 0.0736300945281982 0.0699999999999932 0.0699999999999932 0.0 200 -201 0.0329070091247559 0.0400000000000063 0.0400000000000063 0.0 201 -202 0.0329358577728271 0.029999999999994 0.029999999999994 0.0 202 -203 0.0367400646209717 0.0400000000000063 0.0400000000000063 0.0 203 -204 0.0326740741729736 0.029999999999994 0.029999999999994 0.0 204 -205 0.0328309535980225 0.0300000000000011 0.0300000000000011 0.0 205 -206 0.0319180488586426 0.0300000000000011 0.0300000000000011 0.0 206 -207 0.0315039157867432 0.0300000000000011 0.0300000000000011 0.0 207 -208 0.073983907699585 0.0799999999999983 0.0799999999999983 0.0 208 -209 0.0354940891265869 0.0300000000000011 0.0300000000000011 0.0 209 -210 0.0329270362854004 0.0399999999999991 0.0399999999999991 0.0 210 -211 0.0364441871643066 0.0300000000000011 0.0300000000000011 0.0 211 -212 0.0326921939849854 0.0300000000000011 0.0300000000000011 0.0 212 -213 0.0329389572143555 0.0399999999999991 0.0399999999999991 0.0 213 -214 0.0320320129394531 0.0300000000000011 0.0300000000000011 0.0 214 -215 0.0314679145812988 0.0300000000000011 0.0300000000000011 0.0 215 -216 0.0766069889068604 0.0799999999999983 0.0799999999999983 0.0 216 -217 0.0343639850616455 0.0300000000000011 0.0300000000000011 0.0 217 -218 0.0331821441650391 0.0399999999999991 0.0399999999999991 0.0 218 -219 0.0328841209411621 0.0300000000000011 0.0300000000000011 0.0 219 -220 0.0324678421020508 0.029999999999994 0.029999999999994 0.0 220 -221 0.0323128700256348 0.0300000000000011 0.0300000000000011 0.0 221 -222 0.0320940017700195 0.0399999999999991 0.0399999999999991 0.0 222 -223 0.084298849105835 0.0800000000000054 0.0800000000000054 0.0 223 -224 0.0338959693908691 0.0300000000000011 0.0300000000000011 0.0 224 -225 0.0326578617095947 0.0399999999999991 0.0399999999999991 0.0 225 -226 0.0329980850219727 0.029999999999994 0.029999999999994 0.0 226 -227 0.0328388214111328 0.0300000000000011 0.0300000000000011 0.0 227 -228 0.0324342250823975 0.0399999999999991 0.0399999999999991 0.0 228 -229 0.0363619327545166 0.0300000000000011 0.0300000000000011 0.0 229 -230 0.0319449901580811 0.0300000000000011 0.0300000000000011 0.0 230 -231 0.0728111267089844 0.0799999999999983 0.0799999999999983 0.0 231 -232 0.0331339836120605 0.0300000000000011 0.0300000000000011 0.0 232 -233 0.0330288410186768 0.0300000000000011 0.0300000000000011 0.0 233 -234 0.0328319072723389 0.0399999999999991 0.0399999999999991 0.0 234 -235 0.0353119373321533 0.0300000000000011 0.0300000000000011 0.0 235 -236 0.0324058532714844 0.0300000000000011 0.0300000000000011 0.0 236 -237 0.0343661308288574 0.0399999999999991 0.0399999999999991 0.0 237 -238 0.0319287776947021 0.0300000000000011 0.0300000000000011 0.0 238 -239 0.0734179019927979 0.0700000000000003 0.0700000000000003 0.0 239 -240 0.0330750942230225 0.0399999999999991 0.0399999999999991 0.0 240 -241 0.0359859466552734 0.0300000000000011 0.0300000000000011 0.0 241 -242 0.0331950187683105 0.0399999999999991 0.0399999999999991 0.0 242 -243 0.0336649417877197 0.0300000000000011 0.0300000000000011 0.0 243 -244 0.0327489376068115 0.0300000000000011 0.0300000000000011 0.0 244 -245 0.0324509143829346 0.029999999999994 0.029999999999994 0.0 245 -246 0.0315418243408203 0.0399999999999991 0.0399999999999991 0.0 246 -247 0.0725250244140625 0.0700000000000003 0.0700000000000003 0.0 247 -248 0.0361208915710449 0.0300000000000011 0.0300000000000011 0.0 248 -249 0.040661096572876 0.0399999999999991 0.0399999999999991 0.0 249 -250 0.0346300601959229 0.0400000000000063 0.0400000000000063 0.0 250 -251 0.0325310230255127 0.029999999999994 0.029999999999994 0.0 251 -252 0.032663106918335 0.0300000000000011 0.0300000000000011 0.0 252 -253 0.0323901176452637 0.0399999999999991 0.0399999999999991 0.0 253 -254 0.0314888954162598 0.0300000000000011 0.0300000000000011 0.0 254 -255 0.0757758617401123 0.0700000000000003 0.0700000000000003 0.0 255 -256 0.0334639549255371 0.0399999999999991 0.0399999999999991 0.0 256 -257 0.032958984375 0.0300000000000011 0.0300000000000011 0.0 257 -258 0.0329427719116211 0.0300000000000011 0.0300000000000011 0.0 258 -259 0.0325839519500732 0.0399999999999991 0.0399999999999991 0.0 259 -260 0.0327038764953613 0.0300000000000011 0.0300000000000011 0.0 260 -261 0.0347969532012939 0.0300000000000011 0.0300000000000011 0.0 261 -262 0.0313179492950439 0.0399999999999991 0.0399999999999991 0.0 262 -263 0.0764021873474121 0.0700000000000003 0.0700000000000003 0.0 263 -264 0.0333998203277588 0.0300000000000011 0.0300000000000011 0.0 264 -265 0.0331900119781494 0.0399999999999991 0.0399999999999991 0.0 265 -266 0.0328788757324219 0.0300000000000011 0.0300000000000011 0.0 266 -267 0.0352470874786377 0.0399999999999991 0.0399999999999991 0.0 267 -268 0.0326640605926514 0.0300000000000011 0.0300000000000011 0.0 268 -269 0.0323259830474854 0.029999999999994 0.029999999999994 0.0 269 -270 0.0321478843688965 0.0300000000000011 0.0300000000000011 0.0 270 -271 0.0730900764465332 0.0799999999999983 0.0799999999999983 0.0 271 -272 0.032844066619873 0.0300000000000011 0.0300000000000011 0.0 272 -273 0.0331649780273438 0.0300000000000011 0.0300000000000011 0.0 273 -274 0.0364649295806885 0.0399999999999991 0.0399999999999991 0.0 274 -275 0.0396530628204346 0.0399999999999991 0.0399999999999991 0.0 275 -276 0.0334179401397705 0.0300000000000011 0.0300000000000011 0.0 276 -277 0.0320639610290527 0.0300000000000011 0.0300000000000011 0.0 277 -278 0.0313940048217773 0.0399999999999991 0.0399999999999991 0.0 278 -279 0.0731561183929443 0.0700000000000003 0.0700000000000003 0.0 279 -280 0.0364029407501221 0.0399999999999991 0.0399999999999991 0.0 280 -281 0.0330798625946045 0.0300000000000011 0.0300000000000011 0.0 281 -282 0.0338191986083984 0.0300000000000011 0.0300000000000011 0.0 282 -283 0.0326099395751953 0.0399999999999991 0.0399999999999991 0.0 283 -284 0.0324950218200684 0.0300000000000011 0.0300000000000011 0.0 284 -285 0.0321521759033203 0.0300000000000011 0.0300000000000011 0.0 285 -286 0.0321328639984131 0.0300000000000011 0.0300000000000011 0.0 286 -287 0.0761940479278564 0.0799999999999983 0.0799999999999983 0.0 287 -288 0.0365800857543945 0.0300000000000011 0.0300000000000011 0.0 288 -289 0.0353879928588867 0.0399999999999991 0.0399999999999991 0.0 289 -290 0.0333998203277588 0.0300000000000011 0.0300000000000011 0.0 290 -291 0.0328271389007568 0.029999999999994 0.029999999999994 0.0 291 -292 0.0326738357543945 0.0400000000000063 0.0400000000000063 0.0 292 -293 0.0339128971099854 0.029999999999994 0.029999999999994 0.0 293 -294 0.0325300693511963 0.0300000000000011 0.0300000000000011 0.0 294 -295 0.0739338397979736 0.0800000000000054 0.0800000000000054 0.0 295 -296 0.0328948497772217 0.029999999999994 0.029999999999994 0.0 296 -297 0.0328888893127441 0.0300000000000011 0.0300000000000011 0.0 297 -298 0.0327708721160889 0.0399999999999991 0.0399999999999991 0.0 298 -299 0.0325500965118408 0.0300000000000011 0.0300000000000011 0.0 299 -300 0.0354809761047363 0.0300000000000011 0.0300000000000011 0.0 300 -301 0.0396809577941895 0.0399999999999991 0.0399999999999991 0.0 301 -302 0.0334930419921875 0.0399999999999991 0.0399999999999991 0.0 302 -303 0.0734050273895264 0.0700000000000003 0.0700000000000003 0.0 303 -304 0.0328478813171387 0.0300000000000011 0.0300000000000011 0.0 304 -305 0.0329740047454834 0.0399999999999991 0.0399999999999991 0.0 305 -306 0.0364749431610107 0.0300000000000011 0.0300000000000011 0.0 306 -307 0.0326058864593506 0.0300000000000011 0.0300000000000011 0.0 307 -308 0.0327680110931396 0.0399999999999991 0.0399999999999991 0.0 308 -309 0.0319027900695801 0.0300000000000011 0.0300000000000011 0.0 309 -310 0.0315032005310059 0.0300000000000011 0.0300000000000011 0.0 310 -311 0.073652982711792 0.0700000000000003 0.0700000000000003 0.0 311 -312 0.0356411933898926 0.0399999999999991 0.0399999999999991 0.0 312 -313 0.0330371856689453 0.0300000000000011 0.0300000000000011 0.0 313 -314 0.0342891216278076 0.0399999999999991 0.0399999999999991 0.0 314 -315 0.0345110893249512 0.0300000000000011 0.0300000000000011 0.0 315 -316 0.032926082611084 0.029999999999994 0.029999999999994 0.0 316 -317 0.031851053237915 0.0399999999999991 0.0399999999999991 0.0 317 -318 0.0316848754882812 0.0300000000000011 0.0300000000000011 0.0 318 -319 0.0761759281158447 0.0700000000000003 0.0700000000000003 0.0 319 -320 0.0328528881072998 0.0399999999999991 0.0399999999999991 0.0 320 -321 0.0334789752960205 0.0300000000000011 0.0300000000000011 0.0 321 -322 0.0328638553619385 0.0300000000000011 0.0300000000000011 0.0 322 -323 0.0323901176452637 0.0399999999999991 0.0399999999999991 0.0 323 -324 0.0323100090026855 0.0300000000000011 0.0300000000000011 0.0 324 -325 0.0324501991271973 0.0300000000000011 0.0300000000000011 0.0 325 -326 0.0336298942565918 0.0300000000000011 0.0300000000000011 0.0 326 -327 0.0810260772705078 0.0899999999999963 0.0899999999999963 0.0 327 -328 0.0327072143554688 0.0300000000000011 0.0300000000000011 0.0 328 -329 0.0328741073608398 0.0300000000000011 0.0300000000000011 0.0 329 -330 0.0328249931335449 0.0300000000000011 0.0300000000000011 0.0 330 -331 0.0325191020965576 0.0399999999999991 0.0399999999999991 0.0 331 -332 0.0351779460906982 0.0300000000000011 0.0300000000000011 0.0 332 -333 0.0318300724029541 0.0300000000000011 0.0300000000000011 0.0 333 -334 0.075192928314209 0.0799999999999983 0.0799999999999983 0.0 334 -335 0.0331308841705322 0.0300000000000011 0.0300000000000011 0.0 335 -336 0.0328052043914795 0.029999999999994 0.029999999999994 0.0 336 -337 0.0331370830535889 0.0400000000000063 0.0400000000000063 0.0 337 -338 0.0356910228729248 0.029999999999994 0.029999999999994 0.0 338 -339 0.0324921607971191 0.0400000000000063 0.0400000000000063 0.0 339 -340 0.0324490070343018 0.029999999999994 0.029999999999994 0.0 340 -341 0.0341949462890625 0.0300000000000011 0.0300000000000011 0.0 341 -342 0.0734210014343262 0.0799999999999983 0.0799999999999983 0.0 342 -343 0.0332908630371094 0.0300000000000011 0.0300000000000011 0.0 343 -344 0.0332479476928711 0.0300000000000011 0.0300000000000011 0.0 344 -345 0.0360391139984131 0.0399999999999991 0.0399999999999991 0.0 345 -346 0.0328700542449951 0.0300000000000011 0.0300000000000011 0.0 346 -347 0.0346879959106445 0.0399999999999991 0.0399999999999991 0.0 347 -348 0.0322730541229248 0.0300000000000011 0.0300000000000011 0.0 348 -349 0.0316729545593262 0.0300000000000011 0.0300000000000011 0.0 349 -350 0.0730090141296387 0.0700000000000003 0.0700000000000003 0.0 350 -351 0.0364499092102051 0.0399999999999991 0.0399999999999991 0.0 351 -352 0.0416209697723389 0.0399999999999991 0.0399999999999991 0.0 352 -353 0.0340771675109863 0.0399999999999991 0.0399999999999991 0.0 353 -354 0.0326759815216064 0.0300000000000011 0.0300000000000011 0.0 354 -355 0.0324649810791016 0.0300000000000011 0.0300000000000011 0.0 355 -356 0.032310962677002 0.0300000000000011 0.0300000000000011 0.0 356 -357 0.0313961505889893 0.0300000000000011 0.0300000000000011 0.0 357 -358 0.0751090049743652 0.0799999999999983 0.0799999999999983 0.0 358 -359 0.0351879596710205 0.0399999999999991 0.0399999999999991 0.0 359 -360 0.0331299304962158 0.0300000000000011 0.0300000000000011 0.0 360 -361 0.0328550338745117 0.0300000000000011 0.0300000000000011 0.0 361 -362 0.0325639247894287 0.029999999999994 0.029999999999994 0.0 362 -363 0.0325849056243896 0.0400000000000063 0.0400000000000063 0.0 363 -364 0.0344219207763672 0.029999999999994 0.029999999999994 0.0 364 -365 0.0323021411895752 0.0300000000000011 0.0300000000000011 0.0 365 -366 0.0760447978973389 0.0800000000000054 0.0800000000000054 0.0 366 -367 0.0335848331451416 0.029999999999994 0.029999999999994 0.0 367 -368 0.0331020355224609 0.0399999999999991 0.0399999999999991 0.0 368 -369 0.0329232215881348 0.0300000000000011 0.0300000000000011 0.0 369 -370 0.0328400135040283 0.0300000000000011 0.0300000000000011 0.0 370 -371 0.0363020896911621 0.0399999999999991 0.0399999999999991 0.0 371 -372 0.0322511196136475 0.0300000000000011 0.0300000000000011 0.0 372 -373 0.0333948135375977 0.0300000000000011 0.0300000000000011 0.0 373 -374 0.0732510089874268 0.0799999999999983 0.0799999999999983 0.0 374 -375 0.032930850982666 0.0300000000000011 0.0300000000000011 0.0 375 -376 0.0330500602722168 0.0300000000000011 0.0300000000000011 0.0 376 -377 0.0361061096191406 0.0399999999999991 0.0399999999999991 0.0 377 -378 0.0395760536193848 0.0399999999999991 0.0399999999999991 0.0 378 -379 0.0334169864654541 0.0300000000000011 0.0300000000000011 0.0 379 -380 0.0320568084716797 0.0300000000000011 0.0300000000000011 0.0 380 -381 0.0315189361572266 0.0399999999999991 0.0399999999999991 0.0 381 -382 0.0733020305633545 0.0700000000000003 0.0700000000000003 0.0 382 -383 0.0355980396270752 0.0399999999999991 0.0399999999999991 0.0 383 -384 0.0331339836120605 0.0300000000000011 0.0300000000000011 0.0 384 -385 0.0331411361694336 0.0300000000000011 0.0300000000000011 0.0 385 -386 0.0324721336364746 0.0300000000000011 0.0300000000000011 0.0 386 -387 0.0324320793151855 0.0399999999999991 0.0399999999999991 0.0 387 -388 0.0321850776672363 0.029999999999994 0.029999999999994 0.0 388 -389 0.0315890312194824 0.0300000000000011 0.0300000000000011 0.0 389 -390 0.0761289596557617 0.0800000000000054 0.0800000000000054 0.0 390 -391 0.033301830291748 0.029999999999994 0.029999999999994 0.0 391 -392 0.035081148147583 0.0300000000000011 0.0300000000000011 0.0 392 -393 0.0335009098052979 0.0399999999999991 0.0399999999999991 0.0 393 -394 0.0326759815216064 0.0300000000000011 0.0300000000000011 0.0 394 -395 0.0327270030975342 0.0300000000000011 0.0300000000000011 0.0 395 -396 0.0323770046234131 0.0399999999999991 0.0399999999999991 0.0 396 -397 0.0347421169281006 0.0300000000000011 0.0300000000000011 0.0 397 -398 0.0752899646759033 0.0799999999999983 0.0799999999999983 0.0 398 -399 0.0327789783477783 0.0300000000000011 0.0300000000000011 0.0 399 -400 0.032951831817627 0.0300000000000011 0.0300000000000011 0.0 400 -401 0.03273606300354 0.0300000000000011 0.0300000000000011 0.0 401 -402 0.0324621200561523 0.0399999999999991 0.0399999999999991 0.0 402 -403 0.0350461006164551 0.0300000000000011 0.0300000000000011 0.0 403 -404 0.0376379489898682 0.0399999999999991 0.0399999999999991 0.0 404 -405 0.0354411602020264 0.0300000000000011 0.0300000000000011 0.0 405 -406 0.0734958648681641 0.0799999999999983 0.0799999999999983 0.0 406 -407 0.0329210758209229 0.0300000000000011 0.0300000000000011 0.0 407 -408 0.0329289436340332 0.0300000000000011 0.0300000000000011 0.0 408 -409 0.0354850292205811 0.0399999999999991 0.0399999999999991 0.0 409 -410 0.0325729846954346 0.0300000000000011 0.0300000000000011 0.0 410 -411 0.0327589511871338 0.0399999999999991 0.0399999999999991 0.0 411 -412 0.0319170951843262 0.0300000000000011 0.0300000000000011 0.0 412 -413 0.031519889831543 0.029999999999994 0.029999999999994 0.0 413 -414 0.0742340087890625 0.0700000000000003 0.0700000000000003 0.0 414 -415 0.0346739292144775 0.0399999999999991 0.0399999999999991 0.0 415 -416 0.0351288318634033 0.0300000000000011 0.0300000000000011 0.0 416 -417 0.0329630374908447 0.0399999999999991 0.0399999999999991 0.0 417 -418 0.0367558002471924 0.0300000000000011 0.0300000000000011 0.0 418 -419 0.0328981876373291 0.0300000000000011 0.0300000000000011 0.0 419 -420 0.0320210456848145 0.0399999999999991 0.0399999999999991 0.0 420 -421 0.031790018081665 0.0300000000000011 0.0300000000000011 0.0 421 -422 0.0784010887145996 0.0799999999999983 0.0799999999999983 0.0 422 -423 0.0330309867858887 0.0300000000000011 0.0300000000000011 0.0 423 -424 0.0335760116577148 0.0300000000000011 0.0300000000000011 0.0 424 -425 0.0327050685882568 0.0399999999999991 0.0399999999999991 0.0 425 -426 0.0326788425445557 0.0300000000000011 0.0300000000000011 0.0 426 -427 0.032289981842041 0.0300000000000011 0.0300000000000011 0.0 427 -428 0.0317809581756592 0.0300000000000011 0.0300000000000011 0.0 428 -429 0.0816869735717773 0.0899999999999963 0.0899999999999963 0.0 429 -430 0.035430908203125 0.0300000000000011 0.0300000000000011 0.0 430 -431 0.0327348709106445 0.0300000000000011 0.0300000000000011 0.0 431 -432 0.0328209400177002 0.0399999999999991 0.0399999999999991 0.0 432 -433 0.0328578948974609 0.0300000000000011 0.0300000000000011 0.0 433 -434 0.0324020385742188 0.0300000000000011 0.0300000000000011 0.0 434 -435 0.0351409912109375 0.0399999999999991 0.0399999999999991 0.0 435 -436 0.0321168899536133 0.0300000000000011 0.0300000000000011 0.0 436 -437 0.0726029872894287 0.0700000000000003 0.0700000000000003 0.0 437 -438 0.0331008434295654 0.029999999999994 0.029999999999994 0.0 438 -439 0.0328960418701172 0.0399999999999991 0.0399999999999991 0.0 439 -440 0.0328078269958496 0.0300000000000011 0.0300000000000011 0.0 440 -441 0.0326459407806396 0.0300000000000011 0.0300000000000011 0.0 441 -442 0.0361838340759277 0.0399999999999991 0.0399999999999991 0.0 442 -443 0.0322508811950684 0.0300000000000011 0.0300000000000011 0.0 443 -444 0.0355379581451416 0.0399999999999991 0.0399999999999991 0.0 444 -445 0.0736260414123535 0.0700000000000003 0.0700000000000003 0.0 445 -446 0.0333738327026367 0.0300000000000011 0.0300000000000011 0.0 446 -447 0.0333800315856934 0.0399999999999991 0.0399999999999991 0.0 447 -448 0.0369861125946045 0.0300000000000011 0.0300000000000011 0.0 448 -449 0.033034086227417 0.0399999999999991 0.0399999999999991 0.0 449 -450 0.034984827041626 0.0300000000000011 0.0300000000000011 0.0 450 -451 0.0323779582977295 0.0300000000000011 0.0300000000000011 0.0 451 -452 0.0319168567657471 0.0399999999999991 0.0399999999999991 0.0 452 -453 0.0730609893798828 0.0700000000000003 0.0700000000000003 0.0 453 -454 0.0357108116149902 0.0399999999999991 0.0399999999999991 0.0 454 -455 0.0403239727020264 0.0399999999999991 0.0399999999999991 0.0 455 -456 0.033923864364624 0.0300000000000011 0.0300000000000011 0.0 456 -457 0.0325479507446289 0.0300000000000011 0.0300000000000011 0.0 457 -458 0.0323481559753418 0.0300000000000011 0.0300000000000011 0.0 458 -459 0.0323350429534912 0.0399999999999991 0.0399999999999991 0.0 459 -460 0.0314900875091553 0.0300000000000011 0.0300000000000011 0.0 460 -461 0.075538158416748 0.0700000000000003 0.0700000000000003 0.0 461 -462 0.0340449810028076 0.0399999999999991 0.0399999999999991 0.0 462 -463 0.0331201553344727 0.0300000000000011 0.0300000000000011 0.0 463 -464 0.0330970287322998 0.029999999999994 0.029999999999994 0.0 464 -465 0.0326929092407227 0.0399999999999991 0.0399999999999991 0.0 465 -466 0.0326869487762451 0.0300000000000011 0.0300000000000011 0.0 466 -467 0.0325558185577393 0.0300000000000011 0.0300000000000011 0.0 467 -468 0.0355589389801025 0.0399999999999991 0.0399999999999991 0.0 468 -469 0.0771338939666748 0.0700000000000003 0.0700000000000003 0.0 469 -470 0.0334289073944092 0.0399999999999991 0.0399999999999991 0.0 470 -471 0.0330390930175781 0.0300000000000011 0.0300000000000011 0.0 471 -472 0.0329241752624512 0.0300000000000011 0.0300000000000011 0.0 472 -473 0.0327908992767334 0.0399999999999991 0.0399999999999991 0.0 473 -474 0.0363669395446777 0.0300000000000011 0.0300000000000011 0.0 474 -475 0.0322010517120361 0.0300000000000011 0.0300000000000011 0.0 475 -476 0.0328471660614014 0.0399999999999991 0.0399999999999991 0.0 476 -477 0.0735671520233154 0.0700000000000003 0.0700000000000003 0.0 477 -478 0.0327999591827393 0.0300000000000011 0.0300000000000011 0.0 478 -479 0.0329790115356445 0.0399999999999991 0.0399999999999991 0.0 479 -480 0.0350720882415771 0.0300000000000011 0.0300000000000011 0.0 480 -481 0.0392179489135742 0.0399999999999991 0.0399999999999991 0.0 481 -482 0.0342378616333008 0.0399999999999991 0.0399999999999991 0.0 482 -483 0.0319888591766357 0.0300000000000011 0.0300000000000011 0.0 483 -484 0.0314619541168213 0.0300000000000011 0.0300000000000011 0.0 484 -485 0.0736970901489258 0.0700000000000003 0.0700000000000003 0.0 485 -486 0.0357317924499512 0.0399999999999991 0.0399999999999991 0.0 486 -487 0.0331878662109375 0.0300000000000011 0.0300000000000011 0.0 487 -488 0.033804178237915 0.0399999999999991 0.0399999999999991 0.0 488 -489 0.0325119495391846 0.0300000000000011 0.0300000000000011 0.0 489 -490 0.0325300693511963 0.029999999999994 0.029999999999994 0.0 490 -491 0.0321159362792969 0.0300000000000011 0.0300000000000011 0.0 491 -492 0.0320580005645752 0.0399999999999991 0.0399999999999991 0.0 492 -493 0.075861930847168 0.0700000000000003 0.0700000000000003 0.0 493 -494 0.033599853515625 0.0399999999999991 0.0399999999999991 0.0 494 -495 0.0367560386657715 0.0300000000000011 0.0300000000000011 0.0 495 -496 0.0333199501037598 0.0300000000000011 0.0300000000000011 0.0 496 -497 0.0325191020965576 0.0399999999999991 0.0399999999999991 0.0 497 -498 0.0327298641204834 0.0300000000000011 0.0300000000000011 0.0 498 -499 0.0322799682617188 0.0300000000000011 0.0300000000000011 0.0 499 -500 0.0348708629608154 0.0399999999999991 0.0399999999999991 0.0 500 -501 0.0749578475952148 0.0700000000000003 0.0700000000000003 0.0 501 -502 0.0332460403442383 0.0399999999999991 0.0399999999999991 0.0 502 -503 0.0331079959869385 0.0300000000000011 0.0300000000000011 0.0 503 -504 0.0328578948974609 0.0300000000000011 0.0300000000000011 0.0 504 -505 0.032494068145752 0.0300000000000011 0.0300000000000011 0.0 505 -506 0.0351459980010986 0.0399999999999991 0.0399999999999991 0.0 506 -507 0.0394799709320068 0.0500000000000043 0.0399999999999991 0.01 507 -508 0.0342020988464355 0.0300000000000011 0.0300000000000011 0.0 508 -509 0.0742120742797852 0.0799999999999983 0.0799999999999983 0.0 509 -510 0.0330269336700439 0.0300000000000011 0.0300000000000011 0.0 510 -511 0.032991886138916 0.0300000000000011 0.0300000000000011 0.0 511 -512 0.0354578495025635 0.0399999999999991 0.0399999999999991 0.0 512 -513 0.0327198505401611 0.0300000000000011 0.0300000000000011 0.0 513 -514 0.0336050987243652 0.029999999999994 0.029999999999994 0.0 514 -515 0.0318880081176758 0.0400000000000063 0.0400000000000063 0.0 515 -516 0.0725610256195068 0.0699999999999932 0.0699999999999932 0.0 516 -517 0.0332450866699219 0.0300000000000011 0.0300000000000011 0.0 517 -518 0.0342578887939453 0.0399999999999991 0.0399999999999991 0.0 518 -519 0.035430908203125 0.0300000000000011 0.0300000000000011 0.0 519 -520 0.032912015914917 0.0399999999999991 0.0399999999999991 0.0 520 -521 0.0366041660308838 0.0300000000000011 0.0300000000000011 0.0 521 -522 0.0328991413116455 0.0300000000000011 0.0300000000000011 0.0 522 -523 0.0319130420684814 0.0399999999999991 0.0399999999999991 0.0 523 -524 0.07318115234375 0.0700000000000003 0.0700000000000003 0.0 524 -525 0.0363700389862061 0.0399999999999991 0.0399999999999991 0.0 525 -526 0.033411979675293 0.0300000000000011 0.0300000000000011 0.0 526 -527 0.0364720821380615 0.0399999999999991 0.0399999999999991 0.0 527 -528 0.0327281951904297 0.0300000000000011 0.0300000000000011 0.0 528 -529 0.0325851440429688 0.0300000000000011 0.0300000000000011 0.0 529 -530 0.0322520732879639 0.0300000000000011 0.0300000000000011 0.0 530 -531 0.0316128730773926 0.0399999999999991 0.0399999999999991 0.0 531 -532 0.0813291072845459 0.0799999999999983 0.0799999999999983 0.0 532 -533 0.0356478691101074 0.0300000000000011 0.0300000000000011 0.0 533 -534 0.0330061912536621 0.0300000000000011 0.0300000000000011 0.0 534 -535 0.0327270030975342 0.0399999999999991 0.0399999999999991 0.0 535 -536 0.032696008682251 0.0300000000000011 0.0300000000000011 0.0 536 -537 0.032243013381958 0.0300000000000011 0.0300000000000011 0.0 537 -538 0.0348541736602783 0.0399999999999991 0.0399999999999991 0.0 538 -539 0.031674861907959 0.0300000000000011 0.0300000000000011 0.0 539 -540 0.0754058361053467 0.0700000000000003 0.0700000000000003 0.0 540 -541 0.0328490734100342 0.0399999999999991 0.0399999999999991 0.0 541 -542 0.0332391262054443 0.029999999999994 0.029999999999994 0.0 542 -543 0.0331962108612061 0.0300000000000011 0.0300000000000011 0.0 543 -544 0.0350210666656494 0.0399999999999991 0.0399999999999991 0.0 544 -545 0.0324161052703857 0.0300000000000011 0.0300000000000011 0.0 545 -546 0.031865119934082 0.0300000000000011 0.0300000000000011 0.0 546 -547 0.0355000495910645 0.0399999999999991 0.0399999999999991 0.0 547 -548 0.0733621120452881 0.0700000000000003 0.0700000000000003 0.0 548 -549 0.0331029891967773 0.0300000000000011 0.0300000000000011 0.0 549 -550 0.0332908630371094 0.0399999999999991 0.0399999999999991 0.0 550 -551 0.0365278720855713 0.0300000000000011 0.0300000000000011 0.0 551 -552 0.0326669216156006 0.0399999999999991 0.0399999999999991 0.0 552 -553 0.0345711708068848 0.0300000000000011 0.0300000000000011 0.0 553 -554 0.0320999622344971 0.0300000000000011 0.0300000000000011 0.0 554 -555 0.0315120220184326 0.0300000000000011 0.0300000000000011 0.0 555 -556 0.0733709335327148 0.0700000000000003 0.0700000000000003 0.0 556 -557 0.0357170104980469 0.0300000000000011 0.0300000000000011 0.0 557 -558 0.0411560535430908 0.0399999999999991 0.0399999999999991 0.0 558 -559 0.0337309837341309 0.0399999999999991 0.0399999999999991 0.0 559 -560 0.0325090885162354 0.0300000000000011 0.0300000000000011 0.0 560 -561 0.0326089859008789 0.0300000000000011 0.0300000000000011 0.0 561 -562 0.032412052154541 0.029999999999994 0.029999999999994 0.0 562 -563 0.0314450263977051 0.0300000000000011 0.0300000000000011 0.0 563 -564 0.0781939029693604 0.0700000000000003 0.0700000000000003 0.0 564 -565 0.0359461307525635 0.0399999999999991 0.0399999999999991 0.0 565 -566 0.0339870452880859 0.0300000000000011 0.0300000000000011 0.0 566 -567 0.0329389572143555 0.0399999999999991 0.0399999999999991 0.0 567 -568 0.0336530208587646 0.029999999999994 0.029999999999994 0.0 568 -569 0.0326399803161621 0.0300000000000011 0.0300000000000011 0.0 569 -570 0.0351450443267822 0.0399999999999991 0.0399999999999991 0.0 570 -571 0.0314168930053711 0.0300000000000011 0.0300000000000011 0.0 571 -572 0.0775408744812012 0.0800000000000054 0.0800000000000054 0.0 572 -573 0.032926082611084 0.029999999999994 0.029999999999994 0.0 573 -574 0.0330569744110107 0.0300000000000011 0.0300000000000011 0.0 574 -575 0.0329349040985107 0.0300000000000011 0.0300000000000011 0.0 575 -576 0.0327939987182617 0.0399999999999991 0.0399999999999991 0.0 576 -577 0.035599946975708 0.0300000000000011 0.0300000000000011 0.0 577 -578 0.0321230888366699 0.0399999999999991 0.0399999999999991 0.0 578 -579 0.0320999622344971 0.0300000000000011 0.0300000000000011 0.0 579 -580 0.0739450454711914 0.0700000000000003 0.0700000000000003 0.0 580 -581 0.0332319736480713 0.0300000000000011 0.0300000000000011 0.0 581 -582 0.0331840515136719 0.0300000000000011 0.0300000000000011 0.0 582 -583 0.0358431339263916 0.0300000000000011 0.0300000000000011 0.0 583 -584 0.0413031578063965 0.0499999999999972 0.0499999999999972 0.0 584 -585 0.0345101356506348 0.0300000000000011 0.0300000000000011 0.0 585 -586 0.0317580699920654 0.0300000000000011 0.0300000000000011 0.0 586 -587 0.0729880332946777 0.0799999999999983 0.0799999999999983 0.0 587 -588 0.0332069396972656 0.0300000000000011 0.0300000000000011 0.0 588 -589 0.036264181137085 0.0300000000000011 0.0300000000000011 0.0 589 -590 0.0331530570983887 0.0399999999999991 0.0399999999999991 0.0 590 -591 0.0343399047851562 0.0300000000000011 0.0300000000000011 0.0 591 -592 0.0326418876647949 0.0300000000000011 0.0300000000000011 0.0 592 -593 0.0326697826385498 0.0300000000000011 0.0300000000000011 0.0 593 -594 0.0320968627929688 0.0299999999999869 0.029999999999994 0.0 594 -595 0.0752952098846436 0.0800000000000125 0.0800000000000054 0.0 595 -596 0.0330331325531006 0.0299999999999869 0.029999999999994 0.0 596 -597 0.0343711376190186 0.0300000000000011 0.0300000000000011 0.0 597 -598 0.035207986831665 0.0400000000000063 0.0400000000000063 0.0 598 -599 0.0326581001281738 0.0300000000000011 0.0300000000000011 0.0 599 -600 0.0325701236724854 0.0300000000000011 0.0300000000000011 0.0 600 -601 0.0330169200897217 0.039999999999992 0.039999999999992 0.0 601 -602 0.0319371223449707 0.0300000000000011 0.0300000000000011 0.0 602 -603 0.0774281024932861 0.0799999999999983 0.0799999999999983 0.0 603 -604 0.033113956451416 0.0300000000000011 0.0300000000000011 0.0 604 -605 0.0331709384918213 0.0300000000000011 0.0300000000000011 0.0 605 -606 0.0327689647674561 0.0300000000000011 0.0300000000000011 0.0 606 -607 0.0324411392211914 0.0400000000000063 0.0400000000000063 0.0 607 -608 0.0325808525085449 0.0299999999999869 0.0299999999999869 0.0 608 -609 0.0360062122344971 0.0400000000000063 0.0400000000000063 0.0 609 -610 0.041234016418457 0.0400000000000063 0.0400000000000063 0.0 610 -611 0.0736250877380371 0.0699999999999932 0.0699999999999932 0.0 611 -612 0.0329921245574951 0.0300000000000011 0.0300000000000011 0.0 612 -613 0.0332169532775879 0.0400000000000063 0.0400000000000063 0.0 613 -614 0.0327460765838623 0.0299999999999869 0.0299999999999869 0.0 614 -615 0.0364718437194824 0.0400000000000063 0.0400000000000063 0.0 615 -616 0.0324280261993408 0.0300000000000011 0.0300000000000011 0.0 616 -617 0.0323798656463623 0.0300000000000011 0.0300000000000011 0.0 617 -618 0.031386137008667 0.0300000000000011 0.0300000000000011 0.0 618 -619 0.0726630687713623 0.0799999999999983 0.0799999999999983 0.0 619 -620 0.0328989028930664 0.0300000000000011 0.0300000000000011 0.0 620 -621 0.0358729362487793 0.0300000000000011 0.0300000000000011 0.0 621 -622 0.0327029228210449 0.039999999999992 0.039999999999992 0.0 622 -623 0.0342001914978027 0.0300000000000011 0.0300000000000011 0.0 623 -624 0.0347521305084229 0.0400000000000063 0.0400000000000063 0.0 624 -625 0.0318779945373535 0.0300000000000011 0.0300000000000011 0.0 625 -626 0.0316078662872314 0.0300000000000011 0.0300000000000011 0.0 626 -627 0.0768020153045654 0.0699999999999932 0.0699999999999932 0.0 627 -628 0.0332560539245605 0.0400000000000063 0.0400000000000063 0.0 628 -629 0.0345439910888672 0.0300000000000011 0.0300000000000011 0.0 629 -630 0.033174991607666 0.039999999999992 0.039999999999992 0.0 630 -631 0.0327689647674561 0.0300000000000011 0.0300000000000011 0.0 631 -632 0.0324020385742188 0.0300000000000011 0.0300000000000011 0.0 632 -633 0.0320298671722412 0.0300000000000011 0.0300000000000011 0.0 633 -634 0.0313320159912109 0.0300000000000011 0.0300000000000011 0.0 634 -635 0.0831730365753174 0.0900000000000034 0.0900000000000034 0.0 635 -636 0.0344598293304443 0.0299999999999869 0.0299999999999869 0.0 636 -637 0.0330190658569336 0.0400000000000063 0.0400000000000063 0.0 637 -638 0.033113956451416 0.0300000000000011 0.0300000000000011 0.0 638 -639 0.032689094543457 0.0300000000000011 0.0300000000000011 0.0 639 -640 0.0323820114135742 0.0300000000000011 0.0300000000000011 0.0 640 -641 0.034714937210083 0.039999999999992 0.039999999999992 0.0 641 -642 0.0318310260772705 0.0300000000000011 0.0300000000000011 0.0 642 -643 0.0750701427459717 0.0700000000000074 0.0700000000000074 0.0 643 -644 0.0330171585083008 0.039999999999992 0.039999999999992 0.0 644 -645 0.0331709384918213 0.0300000000000011 0.0300000000000011 0.0 645 -646 0.0328099727630615 0.0300000000000011 0.0300000000000011 0.0 646 -647 0.0354018211364746 0.0400000000000063 0.0400000000000063 0.0 647 -648 0.0324749946594238 0.0300000000000011 0.0300000000000011 0.0 648 -649 0.0331239700317383 0.0300000000000011 0.0300000000000011 0.0 649 -650 0.0337600708007812 0.039999999999992 0.039999999999992 0.0 650 -651 0.0735490322113037 0.0700000000000074 0.0700000000000074 0.0 651 -652 0.0332188606262207 0.0300000000000011 0.0300000000000011 0.0 652 -653 0.0344240665435791 0.039999999999992 0.039999999999992 0.0 653 -654 0.0346159934997559 0.0300000000000011 0.0300000000000011 0.0 654 -655 0.0326159000396729 0.0400000000000063 0.0400000000000063 0.0 655 -656 0.0342769622802734 0.0299999999999869 0.0299999999999869 0.0 656 -657 0.0318350791931152 0.0300000000000011 0.0300000000000011 0.0 657 -658 0.0315489768981934 0.0300000000000011 0.0300000000000011 0.0 658 -659 0.0741128921508789 0.0799999999999983 0.0799999999999983 0.0 659 -660 0.0384690761566162 0.0400000000000063 0.0400000000000063 0.0 660 -661 0.0412099361419678 0.0400000000000063 0.0400000000000063 0.0 661 -662 0.0339169502258301 0.0299999999999869 0.0299999999999869 0.0 662 -663 0.0325090885162354 0.0300000000000011 0.0300000000000011 0.0 663 -664 0.0323750972747803 0.0400000000000063 0.0400000000000063 0.0 664 -665 0.0319221019744873 0.0300000000000011 0.0300000000000011 0.0 665 -666 0.0757949352264404 0.0699999999999932 0.0699999999999932 0.0 666 -667 0.0332348346710205 0.0400000000000063 0.0400000000000063 0.0 667 -668 0.0343492031097412 0.0300000000000011 0.0300000000000011 0.0 668 -669 0.0330471992492676 0.0300000000000011 0.0300000000000011 0.0 669 -670 0.0328240394592285 0.039999999999992 0.039999999999992 0.0 670 -671 0.0326519012451172 0.0300000000000011 0.0300000000000011 0.0 671 -672 0.0323309898376465 0.0300000000000011 0.0300000000000011 0.0 672 -673 0.0348069667816162 0.0400000000000063 0.0400000000000063 0.0 673 -674 0.0734519958496094 0.0699999999999932 0.0699999999999932 0.0 674 -675 0.0358669757843018 0.0400000000000063 0.0400000000000063 0.0 675 -676 0.0329530239105225 0.0300000000000011 0.0300000000000011 0.0 676 -677 0.033228874206543 0.0300000000000011 0.0300000000000011 0.0 677 -678 0.0329709053039551 0.039999999999992 0.039999999999992 0.0 678 -679 0.0349721908569336 0.0300000000000011 0.0300000000000011 0.0 679 -680 0.0329270362854004 0.0300000000000011 0.0300000000000011 0.0 680 -681 0.0317440032958984 0.0400000000000063 0.0400000000000063 0.0 681 -682 0.0737960338592529 0.0699999999999932 0.0699999999999932 0.0 682 -683 0.0329961776733398 0.0300000000000011 0.0300000000000011 0.0 683 -684 0.0329370498657227 0.0400000000000063 0.0400000000000063 0.0 684 -685 0.033027172088623 0.0299999999999869 0.0299999999999869 0.0 685 -686 0.0384509563446045 0.0400000000000063 0.0400000000000063 0.0 686 -687 0.0391240119934082 0.0400000000000063 0.0400000000000063 0.0 687 -688 0.0333750247955322 0.0299999999999869 0.0299999999999869 0.0 688 -689 0.0313661098480225 0.0300000000000011 0.0300000000000011 0.0 689 -690 0.0728821754455566 0.0700000000000074 0.0700000000000074 0.0 690 -691 0.0328829288482666 0.039999999999992 0.039999999999992 0.0 691 -692 0.0367858409881592 0.0300000000000011 0.0300000000000011 0.0 692 -693 0.032905101776123 0.0400000000000063 0.0400000000000063 0.0 693 -694 0.0336589813232422 0.0300000000000011 0.0300000000000011 0.0 694 -695 0.0322878360748291 0.0300000000000011 0.0300000000000011 0.0 695 -696 0.0319581031799316 0.0300000000000011 0.0300000000000011 0.0 696 -697 0.0315032005310059 0.039999999999992 0.039999999999992 0.0 697 -698 0.0756649971008301 0.0700000000000074 0.0700000000000074 0.0 698 -699 0.0332357883453369 0.039999999999992 0.039999999999992 0.0 699 -700 0.0345721244812012 0.0300000000000011 0.0300000000000011 0.0 700 -701 0.035128116607666 0.0300000000000011 0.0300000000000011 0.0 701 -702 0.0327088832855225 0.0400000000000063 0.0400000000000063 0.0 702 -703 0.032559871673584 0.0300000000000011 0.0300000000000011 0.0 703 -704 0.0327198505401611 0.0300000000000011 0.0300000000000011 0.0 704 -705 0.0315008163452148 0.0299999999999869 0.0299999999999869 0.0 705 -706 0.0784509181976318 0.0800000000000125 0.0800000000000125 0.0 706 -707 0.032890796661377 0.039999999999992 0.039999999999992 0.0 707 -708 0.0331568717956543 0.0300000000000011 0.0300000000000011 0.0 708 -709 0.0327529907226562 0.0300000000000011 0.0300000000000011 0.0 709 -710 0.0325257778167725 0.0300000000000011 0.0300000000000011 0.0 710 -711 0.0323739051818848 0.039999999999992 0.039999999999992 0.0 711 -712 0.0377719402313232 0.0300000000000011 0.0300000000000011 0.0 712 -713 0.0389621257781982 0.0400000000000063 0.0400000000000063 0.0 713 -714 0.0756630897521973 0.0799999999999983 0.0799999999999983 0.0 714 -715 0.0329148769378662 0.0300000000000011 0.0300000000000011 0.0 715 -716 0.0330750942230225 0.0400000000000063 0.0400000000000063 0.0 716 -717 0.0328159332275391 0.0299999999999869 0.0299999999999869 0.0 717 -718 0.0366039276123047 0.0300000000000011 0.0300000000000011 0.0 718 -719 0.032505989074707 0.0400000000000063 0.0400000000000063 0.0 719 -720 0.0332479476928711 0.0300000000000011 0.0300000000000011 0.0 720 -721 0.0314240455627441 0.0300000000000011 0.0300000000000011 0.0 721 -722 0.0737588405609131 0.0799999999999983 0.0799999999999983 0.0 722 -723 0.0348548889160156 0.0300000000000011 0.0300000000000011 0.0 723 -724 0.0358438491821289 0.0300000000000011 0.0300000000000011 0.0 724 -725 0.0327739715576172 0.0300000000000011 0.0300000000000011 0.0 725 -726 0.0338411331176758 0.0300000000000011 0.0300000000000011 0.0 726 -727 0.0345768928527832 0.0400000000000063 0.0400000000000063 0.0 727 -728 0.0319709777832031 0.0300000000000011 0.0300000000000011 0.0 728 -729 0.0316281318664551 0.0300000000000011 0.0300000000000011 0.0 729 -730 0.0774428844451904 0.0799999999999983 0.0799999999999983 0.0 730 -731 0.0331730842590332 0.0300000000000011 0.0300000000000011 0.0 731 -732 0.0344212055206299 0.0300000000000011 0.0300000000000011 0.0 732 -733 0.0328938961029053 0.039999999999992 0.039999999999992 0.0 733 -734 0.032724142074585 0.0300000000000011 0.0300000000000011 0.0 734 -735 0.0324850082397461 0.0300000000000011 0.0300000000000011 0.0 735 -736 0.031792163848877 0.0300000000000011 0.0300000000000011 0.0 736 -737 0.0799460411071777 0.0799999999999983 0.0799999999999983 0.0 737 -738 0.0354650020599365 0.0400000000000063 0.0400000000000063 0.0 738 -739 0.0343890190124512 0.0299999999999869 0.0299999999999869 0.0 739 -740 0.0328691005706787 0.0400000000000063 0.0400000000000063 0.0 740 -741 0.0328059196472168 0.0300000000000011 0.0300000000000011 0.0 741 -742 0.0325958728790283 0.0300000000000011 0.0300000000000011 0.0 742 -743 0.0322740077972412 0.039999999999992 0.039999999999992 0.0 743 -744 0.0356390476226807 0.0300000000000011 0.0300000000000011 0.0 744 -745 0.0736830234527588 0.0700000000000074 0.0700000000000074 0.0 745 -746 0.0331189632415771 0.0300000000000011 0.0300000000000011 0.0 746 -747 0.0331828594207764 0.0300000000000011 0.0300000000000011 0.0 747 -748 0.0329599380493164 0.0300000000000011 0.0300000000000011 0.0 748 -749 0.0325560569763184 0.0400000000000063 0.0400000000000063 0.0 749 -750 0.0352969169616699 0.0300000000000011 0.0300000000000011 0.0 750 -751 0.0321471691131592 0.0300000000000011 0.0300000000000011 0.0 751 -752 0.0331270694732666 0.039999999999992 0.039999999999992 0.0 752 -753 0.0755550861358643 0.0700000000000074 0.0700000000000074 0.0 753 -754 0.0331971645355225 0.039999999999992 0.039999999999992 0.0 754 -755 0.0333280563354492 0.0300000000000011 0.0300000000000011 0.0 755 -756 0.0349440574645996 0.0300000000000011 0.0300000000000011 0.0 756 -757 0.0327320098876953 0.0400000000000063 0.0400000000000063 0.0 757 -758 0.0337162017822266 0.0300000000000011 0.0300000000000011 0.0 758 -759 0.0320689678192139 0.0299999999999869 0.0299999999999869 0.0 759 -760 0.0315940380096436 0.0300000000000011 0.0300000000000011 0.0 760 -761 0.0736989974975586 0.0800000000000125 0.0800000000000125 0.0 761 -762 0.0331079959869385 0.0299999999999869 0.0299999999999869 0.0 762 -763 0.0434081554412842 0.0400000000000063 0.0400000000000063 0.0 763 -764 0.0350160598754883 0.0400000000000063 0.0400000000000063 0.0 764 -765 0.0333938598632812 0.0299999999999869 0.0299999999999869 0.0 765 -766 0.0325360298156738 0.0400000000000063 0.0400000000000063 0.0 766 -767 0.032012939453125 0.0300000000000011 0.0300000000000011 0.0 767 -768 0.031588077545166 0.0300000000000011 0.0300000000000011 0.0 768 -769 0.0773451328277588 0.0799999999999983 0.0799999999999983 0.0 769 -770 0.0328960418701172 0.0300000000000011 0.0300000000000011 0.0 770 -771 0.0350039005279541 0.0300000000000011 0.0300000000000011 0.0 771 -772 0.0326879024505615 0.039999999999992 0.039999999999992 0.0 772 -773 0.0326569080352783 0.0300000000000011 0.0300000000000011 0.0 773 -774 0.0326459407806396 0.0300000000000011 0.0300000000000011 0.0 774 -775 0.0321180820465088 0.0300000000000011 0.0300000000000011 0.0 775 -776 0.0343871116638184 0.0400000000000063 0.0400000000000063 0.0 776 -777 0.0758569240570068 0.0799999999999983 0.0799999999999983 0.0 777 -778 0.0349979400634766 0.0300000000000011 0.0300000000000011 0.0 778 -779 0.0329880714416504 0.0300000000000011 0.0300000000000011 0.0 779 -780 0.0330510139465332 0.039999999999992 0.039999999999992 0.0 780 -781 0.0328168869018555 0.0300000000000011 0.0300000000000011 0.0 781 -782 0.0347089767456055 0.0300000000000011 0.0300000000000011 0.0 782 -783 0.0322279930114746 0.0400000000000063 0.0400000000000063 0.0 783 -784 0.0752460956573486 0.0699999999999932 0.0699999999999932 0.0 784 -785 0.0333998203277588 0.0300000000000011 0.0300000000000011 0.0 785 -786 0.0327608585357666 0.0400000000000063 0.0400000000000063 0.0 786 -787 0.032987117767334 0.0300000000000011 0.0300000000000011 0.0 787 -788 0.0328860282897949 0.0299999999999869 0.0299999999999869 0.0 788 -789 0.0421018600463867 0.0500000000000114 0.0500000000000114 0.0 789 -790 0.0354950428009033 0.0300000000000011 0.0300000000000011 0.0 790 -791 0.0326569080352783 0.0299999999999869 0.0299999999999869 0.0 791 -792 0.072484016418457 0.0800000000000125 0.0800000000000125 0.0 792 -793 0.0332272052764893 0.0300000000000011 0.0300000000000011 0.0 793 -794 0.0329101085662842 0.0299999999999869 0.0299999999999869 0.0 794 -795 0.0368521213531494 0.0400000000000063 0.0400000000000063 0.0 795 -796 0.0328860282897949 0.0300000000000011 0.0300000000000011 0.0 796 -797 0.0351109504699707 0.039999999999992 0.039999999999992 0.0 797 -798 0.0322809219360352 0.0300000000000011 0.0300000000000011 0.0 798 -799 0.0317561626434326 0.0300000000000011 0.0300000000000011 0.0 799 -800 0.0744378566741943 0.0799999999999983 0.0799999999999983 0.0 800 -801 0.0369539260864258 0.0300000000000011 0.0300000000000011 0.0 801 -802 0.0338389873504639 0.0400000000000063 0.0400000000000063 0.0 802 -803 0.0353808403015137 0.0300000000000011 0.0300000000000011 0.0 803 -804 0.0346858501434326 0.039999999999992 0.039999999999992 0.0 804 -805 0.0324549674987793 0.0300000000000011 0.0300000000000011 0.0 805 -806 0.0338549613952637 0.0300000000000011 0.0300000000000011 0.0 806 -807 0.0316150188446045 0.0300000000000011 0.0300000000000011 0.0 807 -808 0.0747511386871338 0.0799999999999983 0.0799999999999983 0.0 808 -809 0.0340969562530518 0.0300000000000011 0.0300000000000011 0.0 809 -810 0.0330560207366943 0.0300000000000011 0.0300000000000011 0.0 810 -811 0.0328769683837891 0.0400000000000063 0.0400000000000063 0.0 811 -812 0.0325078964233398 0.0300000000000011 0.0300000000000011 0.0 812 -813 0.0323269367218018 0.0300000000000011 0.0300000000000011 0.0 813 -814 0.0345659255981445 0.039999999999992 0.039999999999992 0.0 814 -815 0.0393409729003906 0.0300000000000011 0.0300000000000011 0.0 815 -816 0.0769538879394531 0.0799999999999983 0.0799999999999983 0.0 816 -817 0.0329430103302002 0.0300000000000011 0.0300000000000011 0.0 817 -818 0.033038854598999 0.0400000000000063 0.0400000000000063 0.0 818 -819 0.0329020023345947 0.0300000000000011 0.0300000000000011 0.0 819 -820 0.0346760749816895 0.0299999999999869 0.0299999999999869 0.0 820 -821 0.0338461399078369 0.0400000000000063 0.0400000000000063 0.0 821 -822 0.0328898429870605 0.0300000000000011 0.0300000000000011 0.0 822 -823 0.0318491458892822 0.0300000000000011 0.0300000000000011 0.0 823 -824 0.0737371444702148 0.0799999999999983 0.0799999999999983 0.0 824 -825 0.032710075378418 0.0300000000000011 0.0300000000000011 0.0 825 -826 0.0330679416656494 0.0300000000000011 0.0300000000000011 0.0 826 -827 0.0366559028625488 0.039999999999992 0.039999999999992 0.0 827 -828 0.0327389240264893 0.0300000000000011 0.0300000000000011 0.0 828 -829 0.0343880653381348 0.0400000000000063 0.0400000000000063 0.0 829 -830 0.0338549613952637 0.0300000000000011 0.0300000000000011 0.0 830 -831 0.0315511226654053 0.0300000000000011 0.0300000000000011 0.0 831 -832 0.0741341114044189 0.0699999999999932 0.0699999999999932 0.0 832 -833 0.0351898670196533 0.0400000000000063 0.0400000000000063 0.0 833 -834 0.0331771373748779 0.0300000000000011 0.0300000000000011 0.0 834 -835 0.0344979763031006 0.039999999999992 0.039999999999992 0.0 835 -836 0.0324339866638184 0.0300000000000011 0.0300000000000011 0.0 836 -837 0.0324251651763916 0.0300000000000011 0.0300000000000011 0.0 837 -838 0.0322468280792236 0.0400000000000063 0.0400000000000063 0.0 838 -839 0.0315029621124268 0.0300000000000011 0.0300000000000011 0.0 839 -840 0.0842621326446533 0.0799999999999983 0.0799999999999983 0.0 840 -841 0.035271167755127 0.039999999999992 0.039999999999992 0.0 841 -842 0.0329780578613281 0.0300000000000011 0.0300000000000011 0.0 842 -843 0.0328261852264404 0.0300000000000011 0.0300000000000011 0.0 843 -844 0.032487154006958 0.0300000000000011 0.0300000000000011 0.0 844 -845 0.0325088500976562 0.0300000000000011 0.0300000000000011 0.0 845 -846 0.0327229499816895 0.0299999999999869 0.0299999999999869 0.0 846 -847 0.0770940780639648 0.0800000000000125 0.0800000000000125 0.0 847 -848 0.0332331657409668 0.0299999999999869 0.0299999999999869 0.0 848 -849 0.0330700874328613 0.0300000000000011 0.0300000000000011 0.0 849 -850 0.0333080291748047 0.0400000000000063 0.0400000000000063 0.0 850 -851 0.0327019691467285 0.0300000000000011 0.0300000000000011 0.0 851 -852 0.0325930118560791 0.0300000000000011 0.0300000000000011 0.0 852 -853 0.0363738536834717 0.039999999999992 0.039999999999992 0.0 853 -854 0.0318160057067871 0.0300000000000011 0.0300000000000011 0.0 854 -855 0.0756251811981201 0.0799999999999983 0.0799999999999983 0.0 855 -856 0.0331168174743652 0.0300000000000011 0.0300000000000011 0.0 856 -857 0.0332381725311279 0.0300000000000011 0.0300000000000011 0.0 857 -858 0.0331380367279053 0.0400000000000063 0.0400000000000063 0.0 858 -859 0.0359609127044678 0.0300000000000011 0.0300000000000011 0.0 859 -860 0.0326030254364014 0.0300000000000011 0.0300000000000011 0.0 860 -861 0.0326559543609619 0.039999999999992 0.039999999999992 0.0 861 -862 0.0313940048217773 0.0300000000000011 0.0300000000000011 0.0 862 -863 0.0721480846405029 0.0700000000000074 0.0700000000000074 0.0 863 -864 0.0329670906066895 0.0300000000000011 0.0300000000000011 0.0 864 -865 0.0358521938323975 0.039999999999992 0.039999999999992 0.0 865 -866 0.0417828559875488 0.0400000000000063 0.0400000000000063 0.0 866 -867 0.0335261821746826 0.039999999999992 0.039999999999992 0.0 867 -868 0.032412052154541 0.0300000000000011 0.0300000000000011 0.0 868 -869 0.0315959453582764 0.0300000000000011 0.0300000000000011 0.0 869 -870 0.0313148498535156 0.0300000000000011 0.0300000000000011 0.0 870 -871 0.0756919384002686 0.0799999999999983 0.0799999999999983 0.0 871 -872 0.033372163772583 0.0300000000000011 0.0300000000000011 0.0 872 -873 0.0342988967895508 0.0300000000000011 0.0300000000000011 0.0 873 -874 0.0328269004821777 0.039999999999992 0.039999999999992 0.0 874 -875 0.0327079296112061 0.0300000000000011 0.0300000000000011 0.0 875 -876 0.0325889587402344 0.0300000000000011 0.0300000000000011 0.0 876 -877 0.0320539474487305 0.0300000000000011 0.0300000000000011 0.0 877 -878 0.0315239429473877 0.0400000000000063 0.0400000000000063 0.0 878 -879 0.0760519504547119 0.0699999999999932 0.0699999999999932 0.0 879 -880 0.0334291458129883 0.0300000000000011 0.0300000000000011 0.0 880 -881 0.0349709987640381 0.0400000000000063 0.0400000000000063 0.0 881 -882 0.0328500270843506 0.0300000000000011 0.0300000000000011 0.0 882 -883 0.0326099395751953 0.0300000000000011 0.0300000000000011 0.0 883 -884 0.0326600074768066 0.039999999999992 0.039999999999992 0.0 884 -885 0.0347640514373779 0.0300000000000011 0.0300000000000011 0.0 885 -886 0.0317268371582031 0.0300000000000011 0.0300000000000011 0.0 886 -887 0.0741100311279297 0.0799999999999983 0.0799999999999983 0.0 887 -888 0.0328361988067627 0.0300000000000011 0.0300000000000011 0.0 888 -889 0.0330181121826172 0.0300000000000011 0.0300000000000011 0.0 889 -890 0.0327560901641846 0.0400000000000063 0.0400000000000063 0.0 890 -891 0.0344109535217285 0.0299999999999869 0.0299999999999869 0.0 891 -892 0.0412158966064453 0.0400000000000063 0.0400000000000063 0.0 892 -893 0.03265380859375 0.0400000000000063 0.0400000000000063 0.0 893 -894 0.0321509838104248 0.0299999999999869 0.0299999999999869 0.0 894 -895 0.0741260051727295 0.0700000000000074 0.0700000000000074 0.0 895 -896 0.0328559875488281 0.0300000000000011 0.0300000000000011 0.0 896 -897 0.0330810546875 0.039999999999992 0.039999999999992 0.0 897 -898 0.0366909503936768 0.0300000000000011 0.0300000000000011 0.0 898 -899 0.0327630043029785 0.0400000000000063 0.0400000000000063 0.0 899 -900 0.0326259136199951 0.0300000000000011 0.0300000000000011 0.0 900 -901 0.031965970993042 0.0300000000000011 0.0300000000000011 0.0 901 -902 0.0730900764465332 0.0699999999999932 0.0699999999999932 0.0 902 -903 0.0331590175628662 0.0400000000000063 0.0400000000000063 0.0 903 -904 0.0365490913391113 0.0300000000000011 0.0300000000000011 0.0 904 -905 0.0330300331115723 0.039999999999992 0.039999999999992 0.0 905 -906 0.0332710742950439 0.0300000000000011 0.0300000000000011 0.0 906 -907 0.0344429016113281 0.0300000000000011 0.0300000000000011 0.0 907 -908 0.032494068145752 0.0400000000000063 0.0400000000000063 0.0 908 -909 0.0318870544433594 0.0300000000000011 0.0300000000000011 0.0 909 -910 0.0748629570007324 0.0699999999999932 0.0699999999999932 0.0 910 -911 0.0334439277648926 0.0400000000000063 0.0400000000000063 0.0 911 -912 0.0351619720458984 0.0300000000000011 0.0300000000000011 0.0 912 -913 0.0328991413116455 0.039999999999992 0.039999999999992 0.0 913 -914 0.0326261520385742 0.0300000000000011 0.0300000000000011 0.0 914 -915 0.0323889255523682 0.0300000000000011 0.0300000000000011 0.0 915 -916 0.0323429107666016 0.0300000000000011 0.0300000000000011 0.0 916 -917 0.0321781635284424 0.039999999999992 0.039999999999992 0.0 917 -918 0.0845181941986084 0.0800000000000125 0.0800000000000125 0.0 918 -919 0.0327539443969727 0.0299999999999869 0.0299999999999869 0.0 919 -920 0.0328059196472168 0.0300000000000011 0.0300000000000011 0.0 920 -921 0.0324711799621582 0.0400000000000063 0.0400000000000063 0.0 921 -922 0.0323400497436523 0.0300000000000011 0.0300000000000011 0.0 922 -923 0.0321018695831299 0.0300000000000011 0.0300000000000011 0.0 923 -924 0.0361039638519287 0.039999999999992 0.039999999999992 0.0 924 -925 0.0316181182861328 0.0300000000000011 0.0300000000000011 0.0 925 -926 0.0748419761657715 0.0700000000000074 0.0700000000000074 0.0 926 -927 0.0332598686218262 0.039999999999992 0.039999999999992 0.0 927 -928 0.0332441329956055 0.0300000000000011 0.0300000000000011 0.0 928 -929 0.0330359935760498 0.0300000000000011 0.0300000000000011 0.0 929 -930 0.0358648300170898 0.0400000000000063 0.0400000000000063 0.0 930 -931 0.0327050685882568 0.0300000000000011 0.0300000000000011 0.0 931 -932 0.0349700450897217 0.039999999999992 0.039999999999992 0.0 932 -933 0.0338780879974365 0.0300000000000011 0.0300000000000011 0.0 933 -934 0.0738511085510254 0.0700000000000074 0.0700000000000074 0.0 934 -935 0.0332021713256836 0.039999999999992 0.039999999999992 0.0 935 -936 0.0359549522399902 0.0300000000000011 0.0300000000000011 0.0 936 -937 0.0331430435180664 0.0400000000000063 0.0400000000000063 0.0 937 -938 0.0340991020202637 0.0300000000000011 0.0300000000000011 0.0 938 -939 0.0326049327850342 0.0299999999999869 0.0299999999999869 0.0 939 -940 0.0325651168823242 0.0400000000000063 0.0400000000000063 0.0 940 -941 0.0317420959472656 0.0300000000000011 0.0300000000000011 0.0 941 -942 0.0775351524353027 0.0799999999999983 0.0799999999999983 0.0 942 -943 0.0417890548706055 0.0400000000000063 0.0400000000000063 0.0 943 -944 0.0358331203460693 0.0300000000000011 0.0300000000000011 0.0 944 -945 0.0328278541564941 0.039999999999992 0.039999999999992 0.0 945 -946 0.0325720310211182 0.0300000000000011 0.0300000000000011 0.0 946 -947 0.0324339866638184 0.0300000000000011 0.0300000000000011 0.0 947 -948 0.0318090915679932 0.0300000000000011 0.0300000000000011 0.0 948 -949 0.0755469799041748 0.0799999999999983 0.0799999999999983 0.0 949 -950 0.0346879959106445 0.0300000000000011 0.0300000000000011 0.0 950 -951 0.0329141616821289 0.039999999999992 0.039999999999992 0.0 951 -952 0.0330381393432617 0.0300000000000011 0.0300000000000011 0.0 952 -953 0.0330090522766113 0.0300000000000011 0.0300000000000011 0.0 953 -954 0.0340299606323242 0.0400000000000063 0.0400000000000063 0.0 954 -955 0.0325748920440674 0.0300000000000011 0.0300000000000011 0.0 955 -956 0.0356650352478027 0.039999999999992 0.039999999999992 0.0 956 -957 0.0749011039733887 0.0700000000000074 0.0700000000000074 0.0 957 -958 0.0347681045532227 0.0300000000000011 0.0300000000000011 0.0 958 -959 0.0330829620361328 0.039999999999992 0.039999999999992 0.0 959 -960 0.0334758758544922 0.0300000000000011 0.0300000000000011 0.0 960 -961 0.0329201221466064 0.0300000000000011 0.0300000000000011 0.0 961 -962 0.0358650684356689 0.0400000000000063 0.0400000000000063 0.0 962 -963 0.0327301025390625 0.0300000000000011 0.0300000000000011 0.0 963 -964 0.03354811668396 0.039999999999992 0.039999999999992 0.0 964 -965 0.0745160579681396 0.0700000000000074 0.0700000000000074 0.0 965 -966 0.0329270362854004 0.0300000000000011 0.0300000000000011 0.0 966 -967 0.0329809188842773 0.039999999999992 0.039999999999992 0.0 967 -968 0.0393757820129395 0.0300000000000011 0.0300000000000011 0.0 968 -969 0.0380401611328125 0.0300000000000011 0.0300000000000011 0.0 969 -970 0.0357730388641357 0.039999999999992 0.039999999999992 0.0 970 -971 0.0322329998016357 0.0300000000000011 0.0300000000000011 0.0 971 -972 0.0315341949462891 0.0300000000000011 0.0300000000000011 0.0 972 -973 0.0736370086669922 0.0799999999999983 0.0799999999999983 0.0 973 -974 0.0357208251953125 0.0300000000000011 0.0300000000000011 0.0 974 -975 0.0331871509552002 0.0400000000000063 0.0400000000000063 0.0 975 -976 0.0338621139526367 0.0300000000000011 0.0300000000000011 0.0 976 -977 0.03261399269104 0.0299999999999869 0.0299999999999869 0.0 977 -978 0.0324549674987793 0.0300000000000011 0.0300000000000011 0.0 978 -979 0.0323319435119629 0.0400000000000063 0.0400000000000063 0.0 979 -980 0.0314400196075439 0.0300000000000011 0.0300000000000011 0.0 980 -981 0.0762598514556885 0.0699999999999932 0.0699999999999932 0.0 981 -982 0.0347981452941895 0.0400000000000063 0.0400000000000063 0.0 982 -983 0.0366230010986328 0.0400000000000063 0.0300000000000011 0.01 983 -984 0.0328900814056396 0.039999999999992 0.039999999999992 0.0 984 -985 0.032588005065918 0.0300000000000011 0.0300000000000011 0.0 985 -986 0.0326781272888184 0.0300000000000011 0.0300000000000011 0.0 986 -987 0.0319411754608154 0.0300000000000011 0.0300000000000011 0.0 987 -988 0.0342800617218018 0.0400000000000063 0.0400000000000063 0.0 988 -989 0.0760009288787842 0.0699999999999932 0.0699999999999932 0.0 989 -990 0.0328078269958496 0.0400000000000063 0.0400000000000063 0.0 990 -991 0.0330369472503662 0.0300000000000011 0.0300000000000011 0.0 991 -992 0.0326659679412842 0.0300000000000011 0.0300000000000011 0.0 992 -993 0.0325169563293457 0.0300000000000011 0.0300000000000011 0.0 993 -994 0.0384469032287598 0.039999999999992 0.039999999999992 0.0 994 -995 0.035956859588623 0.0400000000000063 0.0400000000000063 0.0 995 -996 0.075498104095459 0.0699999999999932 0.0699999999999932 0.0 996 -997 0.0330910682678223 0.0300000000000011 0.0300000000000011 0.0 997 -998 0.0327069759368896 0.0300000000000011 0.0300000000000011 0.0 998 -999 0.0329201221466064 0.0300000000000011 0.0300000000000011 0.0 999 -1000 0.0352790355682373 0.039999999999992 0.039999999999992 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log deleted file mode 100644 index f349db14..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log +++ /dev/null @@ -1,82 +0,0 @@ -========================== 2009-04-01T16:46:56 CEST =========================== -Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux]. -Running 'ParserBenchmarkRails' for 1000 iterations/method (compare_time=real) -=============================================================================== - -This first run is only for warmup. -ParserBenchmarkRails#parser: - real total user system -sum 38.690086126 38.620000000 38.610000000 0.010000000 -min 0.031255007 0.030000000 0.030000000 0.000000000 -std- 0.025022178 0.024277709 0.024265187 -0.000306228 -mean 0.038690086 0.038620000 0.038610000 0.000010000 -std+ 0.052357994 0.052962291 0.052954813 0.000326228 -max 0.083594084 0.090000000 0.090000000 0.010000000 -std 0.013667908 0.014342291 0.014344813 0.000316228 -std% 35.326641197 37.136951469 37.153104057 3162.277660168 -harm 0.035964441 0.035345750 0.035335342 nan -geo 0.037048388 0.036703287 0.036692729 0.000000000 -q1 0.032610178 0.030000000 0.030000000 0.000000000 -med 0.033129930 0.030000000 0.030000000 0.000000000 -q3 0.035388470 0.040000000 0.040000000 0.000000000 - 1000 25.84641 0.038690086 - calls calls/sec secs/call - - 0.08098 -|* - 0.07574 -|***** - 0.07051 -|** - 0.06528 -| - 0.06004 -| - 0.05481 -| - 0.04957 -| - 0.04434 -|* - 0.03911 -|*** - 0.03387 -|************************************************** - -Outliers detected with box plot algo (median=0.03313, iqr=0.00278, factor=3.00): -high=47 very_high=124 - -Ljung-Box statistics: q=5276.52020 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -ParserBenchmarkRails#parser: - real total user system -sum 38.814780235 38.730000000 38.710000000 0.020000000 -min 0.031314850 0.030000000 0.030000000 0.000000000 -std- 0.024801114 0.023975177 0.023956914 -0.000426990 -mean 0.038814780 0.038730000 0.038710000 0.000020000 -std+ 0.052828447 0.053484823 0.053463086 0.000466990 -max 0.085337162 0.090000000 0.090000000 0.010000000 -std 0.014013666 0.014754823 0.014753086 0.000446990 -std% 36.103943796 38.096625621 38.111821850 2234.948544149 -harm 0.035975867 0.035320781 0.035304155 nan -geo 0.037101026 0.036725170 0.036706415 0.000000000 -q1 0.032611191 0.030000000 0.030000000 0.000000000 -med 0.033082008 0.030000000 0.030000000 0.000000000 -q3 0.035308182 0.040000000 0.040000000 0.000000000 - 1000 25.76338 0.038814780 - calls calls/sec secs/call - - 0.08264 -|* - 0.07723 -|*** - 0.07183 -|**** - 0.06643 -| - 0.06103 -| - 0.05562 -| - 0.05022 -| - 0.04482 -| - 0.03942 -|** - 0.03402 -|************************************************** - -Outliers detected with box plot algo (median=0.03308, iqr=0.00270, factor=3.00): -high=43 very_high=127 - -Ljung-Box statistics: q=3451.96535 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -========================== 2009-04-01T16:48:17 CEST =========================== - -Writing measurement data file '/data/scm/json/benchmarks/data/ParserBenchmarkRails#parser.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/ParserBenchmarkRails#parser-autocorrelation.dat'. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat deleted file mode 100644 index f32d17f6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.0162844496545126 -3 -0.0217599649154442 -4 -0.0158858309903125 -5 -0.0200808613960338 -6 -0.0259529053941171 -7 -0.0301975414696179 -8 -0.0250675870796551 -9 -0.0285985946623563 -10 -0.0307680893851068 -11 -0.0288265198488383 -12 -0.0271571829024007 -13 -0.0301250298936937 -14 -0.0226181132137933 -15 -0.0294060805772707 -16 -0.0337045155176462 -17 -0.0318194303001094 -18 -0.0292065217707409 -19 -0.0302440574139168 -20 -0.0358556403201638 -21 -0.0277391993235684 -22 -0.0302464277108834 -23 -0.0324555396059655 -24 -0.0281812881852202 -25 -0.022546962678309 -26 -0.0303404504420409 -27 -0.0284646539775073 -28 -0.028171618962038 -29 -0.028565092958004 -30 -0.0291690975621738 -31 -0.0281712395665202 -32 -0.0238379726807203 -33 -0.0294236975427878 -34 -0.0208882165043777 -35 -0.0209638384059497 -36 -0.0161683101478742 -37 -0.0198997973165107 -38 0.435257874984686 -39 0.458604874110641 -40 0.0237621756843474 -41 -0.0234662943892799 -42 -0.0132052112478708 -43 -0.0232550385773748 -44 -0.0265177529080711 -45 -0.0295042353148468 -46 -0.0248888514316335 -47 -0.0267548816775851 -48 -0.0301945196949619 -49 -0.0256866572019894 -50 -0.0261353739728522 -51 -0.0245073925246022 -52 -0.0267569882760944 -53 -0.0290607941928704 -54 -0.030612533159521 -55 -0.0324276179436348 -56 -0.0294828176269951 -57 -0.0302074451537584 -58 -0.0308924549200688 -59 -0.0272193925170758 -60 -0.0310943839021242 -61 -0.0282313865089381 -62 -0.0273610010809688 -63 -0.0250425898280312 -64 -0.0269825367863249 -65 -0.030293343792881 -66 -0.0285829676042798 -67 -0.0259669504450748 -68 -0.028423496235617 -69 -0.0286177493293173 -70 -0.0239113501418138 -71 -0.0226730211754719 -72 -0.0216274261753708 -73 -0.0175668930237053 -74 -0.016987706219544 -75 0.281860410751591 -76 0.25297384526533 -77 0.306701827698567 -78 0.0194414665764478 -79 -0.0243796783451221 -80 -0.0146952129609066 -81 -0.0229107323358625 -82 -0.02476592170182 -83 -0.0262150166126129 -84 -0.0233100425521956 -85 -0.0263455380004048 -86 -0.0253912832942502 -87 -0.0245622723440493 -88 -0.0225180917608497 -89 -0.0292400873158552 -90 -0.0255215645749941 -91 -0.02586826799364 -92 -0.0315849501291156 -93 -0.0319172083894574 -94 -0.0270097346640797 -95 -0.0278372423315524 -96 -0.0306627817548168 -97 -0.0258127345919013 -98 -0.0256340599415291 -99 -0.0270400681439884 -100 -0.0271863267200993 -101 -0.0223938908865392 -102 -0.0269881932444538 -103 -0.0286873034752439 -104 -0.0268085508356207 -105 -0.0250531313567446 -106 -0.0272655637793525 -107 -0.025337879180265 -108 -0.0187629329024022 -109 -0.0223207452723449 -110 -0.0185411706942619 -111 -0.0173591745979572 -112 0.212695002726406 -113 0.176100874201248 -114 0.181136796368959 -115 0.217985852640763 -116 0.0189775496631967 -117 -0.022070943088181 -118 -0.0198858953377023 -119 -0.0228614172431068 -120 -0.0222026156678026 -121 -0.026520195666479 -122 -0.0234557540286227 -123 -0.0222031583717324 -124 -0.0222512221835737 -125 -0.021957746397543 -126 -0.0268087376735115 -127 -0.0273093034119188 -128 -0.0245103124601919 -129 -0.0263347996406397 -130 -0.0312278911250281 -131 -0.0305253475957555 -132 -0.0261963547332742 -133 -0.0274617303870749 -134 -0.0243124109128202 -135 -0.0262235240356464 -136 -0.0239085429783869 -137 -0.0287564527494295 -138 -0.0249876754449911 -139 -0.0197254570216898 -140 -0.0266321665979349 -141 -0.0266120249498159 -142 -0.0248056589461695 -143 -0.0221257923724317 -144 -0.024933311620115 -145 -0.0196549868192828 -146 -0.0207328295283175 -147 -0.0200920805093202 -148 -0.0173063409154936 -149 0.175654369820573 -150 0.0996760311141833 -151 0.142600408151497 -152 0.175452601030937 -153 0.135092911757026 -154 0.015666937752102 -155 -0.0206532136473774 -156 -0.0225660207506427 -157 -0.0220914796170182 -158 -0.0212748341146881 -159 -0.0211831500010699 -160 -0.0199475712567065 -161 -0.0198090360921562 -162 -0.023406680899725 -163 -0.0238338433694836 -164 -0.0256046135139069 -165 -0.0242954498172123 -166 -0.0258660266004111 -167 -0.0269522804569596 -168 -0.0297189079034543 -169 -0.0286038809350082 -170 -0.0243084923873978 -171 -0.0257061323195295 -172 -0.0223670193406507 -173 -0.0230581197957092 -174 -0.0259009025367238 -175 -0.0257560518519552 -176 -0.023090387902458 -177 -0.0203272749388722 -178 -0.0249609826618749 -179 -0.0273749728570153 -180 -0.0232630581935224 -181 -0.0184293362184845 -182 -0.0227584354744901 -183 -0.0189661792281422 -184 -0.0231761259199879 -185 -0.0160634507453316 -186 0.135019288045276 -187 0.0659826079670161 -188 0.135226742645858 -189 0.0605819921567246 -190 0.212733971580529 -191 0.0594662500140067 -192 0.0196656779913871 -193 -0.0198404313214719 -194 -0.0234794798625044 -195 -0.020228110441232 -196 -0.0239711309581977 -197 -0.0213996457420545 -198 -0.0198198390682184 -199 -0.01837620236681 -200 -0.0252904949340885 -201 -0.0209512502626924 -202 -0.0221289412896572 -203 -0.027427908823154 -204 -0.0239458508129429 -205 -0.0247739743326578 -206 -0.0286549975885985 -207 -0.0274257626339078 -208 -0.0209339353182737 -209 -0.0217393583916566 -210 -0.0210676960785699 -211 -0.0244413756252707 -212 -0.0230553337146913 -213 -0.0249257698225569 -214 -0.0209961742884786 -215 -0.0187589223013789 -216 -0.0231441227112562 -217 -0.0256128148841961 -218 -0.0189996873737005 -219 -0.0186032704051841 -220 -0.024896664851184 -221 -0.0154586003532082 -222 -0.016622451190913 -223 0.10528876877612 -224 0.0616792976302413 -225 0.105381487366677 -226 0.0698781422585297 -227 0.0526859362556473 -228 0.252676201792791 -229 -0.0158777502042575 -230 0.0182465167560402 -231 -0.0189176416281867 -232 -0.0223947199370044 -233 -0.0187514827185257 -234 -0.0221421724471967 -235 -0.0189743029127782 -236 -0.0169132380201002 -237 -0.0244680755831848 -238 -0.0218734587520481 -239 -0.0186581914256442 -240 -0.026130481429307 -241 -0.0259336502285975 -242 -0.0243902837001253 -243 -0.0237554283001736 -244 -0.0260009623695832 -245 -0.0207407789914843 -246 -0.0195359028544637 -247 -0.0255947955165555 -248 -0.0192742650096326 -249 -0.02317092217707 -250 -0.0220804794353722 -251 -0.0231629589394634 -252 -0.01815715732966 -253 -0.0168380962328354 -254 -0.0240542649472067 -255 -0.0203501818767696 -256 -0.0171903409693322 -257 -0.0223563828072372 -258 -0.019940801207438 -259 -0.0169291109293721 -260 0.0608679690137956 -261 0.0647081802938391 -262 0.100717554509044 -263 0.0239520468414546 -264 0.0698991274638046 -265 0.0905559637290508 -266 0.178937593759438 -267 0.0219556620146547 -268 -0.0179147413001344 -269 -0.0178917963661612 -270 -0.0182758940871145 -271 -0.0193697306175885 -272 -0.0204671858114412 -273 -0.0171408579409368 -274 -0.0182409872271859 -275 -0.0211824035120345 -276 -0.0235000843866101 -277 -0.0202924958876639 -278 -0.0248505379989764 -279 -0.0220226888126351 -280 -0.0245762806223724 -281 -0.0252042782672907 -282 -0.0216801171879857 -283 -0.0210832689857307 -284 -0.0192213765705103 -285 -0.0220158312276208 -286 -0.0210439300781706 -287 -0.0209875936956392 -288 -0.0206630619760563 -289 -0.0216178400849402 -290 -0.0196909009290242 -291 -0.0174466524982222 -292 -0.0194381489522717 -293 -0.0214825111756293 -294 -0.0174953699462574 -295 -0.022683312446492 -296 -0.0180848133159409 -297 0.0254210486852796 -298 0.0654897828406648 -299 0.0986617374019184 -300 0.0211653698985848 -301 0.03519273754644 -302 0.0994229074199349 -303 0.0569927637089909 -304 0.144208154176788 -305 0.025634547369068 -306 -0.0192573217261146 -307 -0.0134291320771703 -308 -0.0186225883596377 -309 -0.0192924485153545 -310 -0.0212788468915268 -311 -0.0142437809504701 -312 -0.0164846225770394 -313 -0.0230149302918458 -314 -0.0226862925961795 -315 -0.0182027935965825 -316 -0.0223705185857763 -317 -0.0216288175818581 -318 -0.023788812144948 -319 -0.0211845254108688 -320 -0.0222450219207216 -321 -0.0187600056472826 -322 -0.0187902396176198 -323 -0.0195634679662719 -324 -0.0194501685935753 -325 -0.0190333705450752 -326 -0.0204687388385914 -327 -0.0200297119812042 -328 -0.0157733409782519 -329 -0.0164084747060388 -330 -0.0203726921633815 -331 -0.0190072727071644 -332 -0.018178093048503 -333 -0.0159556448940802 -334 -0.013791115173629 -335 0.066803434121925 -336 0.0987477853719105 -337 0.0244839447881098 -338 0.031202350625353 -339 0.0196479023204289 -340 0.141228694216934 -341 0.0175097275718119 -342 0.105954014939689 -343 0.0253759965520281 -344 -0.0116344384079018 -345 -0.0169720879403278 -346 -0.0193914989969224 -347 -0.019089553717436 -348 -0.0156466666300242 -349 -0.0156456435188142 -350 -0.0181150256079739 -351 -0.0223467109479219 -352 -0.0214801527438239 -353 -0.019082414276624 -354 -0.0178557951992504 -355 -0.0228090603341919 -356 -0.0204157042896649 -357 -0.0221410379160091 -358 -0.0199425390855694 -359 -0.018118375890382 -360 -0.0150454629858717 -361 -0.0183129793049915 -362 -0.0204645202101881 -363 -0.0174866608721183 -364 -0.0154096032136416 -365 -0.0179571796427601 -366 -0.0134888272478049 -367 -0.0176851479177383 -368 -0.0193002648975602 -369 -0.0189078544862062 -370 -0.0144320773947494 -371 -0.011260111407965 -372 0.0215572902035114 -373 0.100524914108148 -374 0.0219084872557524 -375 0.0354856193633486 -376 0.0229331908137013 -377 0.0626022532746132 -378 0.0969282134458387 -379 0.0189295482330605 -380 0.0617228180411101 -381 0.0425011894350961 -382 -0.0181588301030469 -383 -0.0171392718695313 -384 -0.0178324205119472 -385 -0.0156705733083666 -386 -0.0146663905947814 -387 -0.0173238224981501 -388 -0.0182073556277454 -389 -0.0204929470007114 -390 -0.0197959652809142 -391 -0.0178487074910014 -392 -0.0191264027449998 -393 -0.0190642154579731 -394 -0.0203166425576961 -395 -0.0188935352488649 -396 -0.0201224460748975 -397 -0.0141844683481906 -398 -0.0139898462786534 -399 -0.0198574924165857 -400 -0.0193966985699962 -401 -0.0164995946916847 -402 -0.0117403653932513 -403 -0.0158736541749091 -404 -0.0156974457240632 -405 -0.0181167763150603 -406 -0.0166788566307347 -407 -0.0180975807807039 -408 -0.0102853501517902 -409 -0.0153437162204268 -410 0.0979710078754703 -411 0.021440871598228 -412 0.0371454198455733 -413 0.0253571102027273 -414 0.0227276443059152 -415 0.101915236805497 -416 0.0635405858848997 -417 0.0221661378891733 -418 0.0270996559475876 -419 0.0299928379379863 -420 -0.0177873081118276 -421 -0.0176051191151391 -422 -0.0117281303593379 -423 -0.013306366759538 -424 -0.0189331445465995 -425 -0.015865418271051 -426 -0.0158088029122447 -427 -0.0187419731224742 -428 -0.0196315339939659 -429 -0.0154861746215526 -430 -0.0178360876528894 -431 -0.0193319397318428 -432 -0.0177297199409179 -433 -0.0183554889687674 -434 -0.0184208823533688 -435 -0.0122396577357641 -436 -0.0123492917667745 -437 -0.0175439953526604 -438 -0.0186111019818843 -439 -0.00971961709959576 -440 -0.0143165389296264 -441 -0.0164005922843576 -442 -0.0132806214338558 -443 -0.0153897804907211 -444 -0.0149226610955752 -445 -0.0161580725559834 -446 -0.0117152404534544 -447 0.0615441203316674 -448 0.0305601601558433 -449 0.0350768852591798 -450 0.026542742159402 -451 0.0220127678478309 -452 0.0626392669570081 -453 0.0651304401691263 -454 0.066454641622587 -455 0.0262150734837409 -456 -0.00708907991883236 -457 0.0224899268420003 -458 -0.0167773922489159 -459 -0.0122552342075114 -460 -0.00995490362784316 -461 -0.0177867736928084 -462 -0.018356900570592 -463 -0.0148615016520588 -464 -0.0148993799153167 -465 -0.0174924308469937 -466 -0.0139062884527871 -467 -0.0169155699762039 -468 -0.0176151358623509 -469 -0.018529629596926 -470 -0.0171234732753041 -471 -0.0168099527879603 -472 -0.0156260281448611 -473 -0.00797509847063728 -474 -0.0133340343499158 -475 -0.0168972023036313 -476 -0.0113479057717735 -477 -0.011961189414667 -478 -0.0152906312825423 -479 -0.0155644967932215 -480 -0.014521215308577 -481 -0.0128622749529332 -482 -0.0141888481401611 -483 -0.0161851374362205 -484 0.0249171103679042 -485 0.0252660269585891 -486 0.04058752667661 -487 0.0258186659046098 -488 0.0275225862715478 -489 0.0600609383170762 -490 0.0261628314767615 -491 0.0691832852264942 -492 0.0694273292329222 -493 -0.0138918138869676 -494 0.0281497919118445 -495 -0.0119297582637103 -496 -0.012445722104394 -497 -0.0152365517205078 -498 -0.0119682770076481 -499 -0.0168102415511826 -500 -0.0132602321806542 -501 -0.0162749170085761 -502 -0.0157874247447598 -503 -0.0143314681097962 -504 -0.0151373301279301 -505 -0.0162736515060562 -506 -0.0170997245763158 -507 -0.0169869002644868 -508 -0.0154802036412146 -509 -0.013854038240204 -510 -0.0151485070183504 -511 -0.00869753773999478 -512 -0.0140737135993086 -513 -0.0107650436900842 -514 -0.0132962323606625 -515 -0.0136429601231209 -516 -0.0155057052143115 -517 -0.0134332443796962 -518 -0.0123129109820222 -519 -0.0142180018449239 -520 -0.0150177576005828 -521 -0.0161252950528183 -522 0.0264250568660815 -523 0.0408783547796429 -524 0.031194610084782 -525 0.0288728641454938 -526 0.0641676357746677 -527 0.0239853005273055 -528 0.0300072680816552 -529 0.0736945294998491 -530 0.028012956538805 -531 0.0259732719006342 -532 -0.00990928630211568 -533 -0.0087387605842169 -534 -0.0137746654626445 -535 -0.0141412876283256 -536 -0.010029400862279 -537 -0.0150007749725246 -538 -0.0121537714685441 -539 -0.0144839491934252 -540 -0.0137950679588151 -541 -0.0155551392121605 -542 -0.0128911409577839 -543 -0.0152961676840741 -544 -0.0161369826243907 -545 -0.0148527760929147 -546 -0.013870773562618 -547 -0.0137226194734097 -548 -0.0113656379568685 -549 -0.00845176980813718 -550 -0.00933414448879775 -551 -0.0133281147011412 -552 -0.0122165348746803 -553 -0.0127303042014063 -554 -0.0128365256419083 -555 -0.0108554430140539 -556 -0.0130979026563391 -557 -0.0146601295923265 -558 -0.0142350683827201 -559 -0.0142543119821695 -560 0.0401428501979482 -561 0.0303680401593431 -562 0.0331394093682309 -563 0.0624790224369076 -564 0.0289179010523467 -565 0.0269736807010873 -566 0.0294760499995686 -567 0.0747760714226703 -568 -0.00997931599998069 -569 0.0266265362948006 -570 -0.00721129513546175 -571 -0.0127302032302545 -572 -0.0136267162889966 -573 -0.0142066353702017 -574 -0.00991164196188114 -575 -0.00996166830564141 -576 -0.0131573176468314 -577 -0.011434640474236 -578 -0.0148706383443339 -579 -0.0134129396964773 -580 -0.0113895405779604 -581 -0.0153189154780471 -582 -0.0150199426352393 -583 -0.0124159111813235 -584 -0.0113435779166304 -585 -0.00971798266945597 -586 -0.0123095479872052 -587 -0.00269803517441434 -588 -0.0127678761964892 -589 -0.0119102487047385 -590 -0.0115043060345689 -591 -0.0106658386617928 -592 -0.0106600448522206 -593 -0.011659738958058 -594 -0.01106663155357 -595 -0.0120386853981255 -596 -0.0127481791971609 -597 -0.00537363830084228 -598 0.0314689202072348 -599 0.032654353162099 -600 0.0639978451412954 -601 0.0283236694256126 -602 0.0317693531084274 -603 0.027542761382292 -604 0.02698217718116 -605 0.0361622659750207 -606 0.0320247155873757 -607 -0.00813391858463189 -608 -0.0089593887672382 -609 -0.0119010871906848 -610 -0.0124880990128273 -611 -0.0121364351320394 -612 -0.00971670182824936 -613 -0.0102177605462013 -614 -0.00898879705064074 -615 -0.013228009191572 -616 -0.012444080731119 -617 -0.0125819657984578 -618 -0.0106457926520048 -619 -0.0137483281342092 -620 -0.0135504808411789 -621 -0.0114612446080959 -622 -0.00821287310238534 -623 -0.0104378096847016 -624 -0.00593940096538122 -625 -0.00945814044610632 -626 -0.0101588782962685 -627 -0.0111243964828339 -628 -0.00950644868084363 -629 -0.00843830240019815 -630 -0.0122240327224205 -631 -0.0121911767968013 -632 -0.0106320087647656 -633 -0.0091538953720945 -634 -0.00833412226908421 -635 -0.00479924172227301 -636 0.0335905043465549 -637 0.0695170041831408 -638 0.0270790255635657 -639 0.0321106733648098 -640 0.0313560382377176 -641 0.0282951882582407 -642 0.0286246187371558 -643 -0.0063978013638528 -644 0.0304346790629898 -645 -0.0101048058759809 -646 -0.00730849974907403 -647 -0.010438994695384 -648 -0.0112449830718235 -649 -0.0113664024129399 -650 -0.00608318090180963 -651 -0.00840928737010642 -652 -0.0108644455614179 -653 -0.010794161792753 -654 -0.0114845408302525 -655 -0.0109919991005556 -656 -0.00951218627321188 -657 -0.0117973727840752 -658 -0.0116097431098058 -659 -0.00670996120713619 -660 -0.0087566923862707 -661 -0.00768893771119313 -662 -0.00792227368859181 -663 -0.0072108108823534 -664 -0.00863418502611649 -665 -0.00848535095588438 -666 -0.00750079906528092 -667 -0.00902829779223548 -668 -0.0104029286615084 -669 -0.00972615613411735 -670 -0.00909686229570264 -671 -0.00489514770930345 -672 -0.00695727933803365 -673 -0.00291923866250643 -674 0.0692585752006358 -675 0.0338324022772704 -676 0.0312432314045003 -677 0.0301206988202449 -678 0.0318944076704347 -679 0.0308282822415121 -680 -0.00918999100874598 -681 0.0315959820198552 -682 -0.00790274938593563 -683 -0.00905781884326524 -684 -0.00978094259623583 -685 -0.00713889275972127 -686 -0.00961735482798763 -687 -0.00462928907883874 -688 -0.00708992015115961 -689 -0.0103894616795413 -690 -0.00975021468154266 -691 -0.0104107842274988 -692 -0.00992064479267111 -693 -0.0101176695314485 -694 -0.0104463991054629 -695 -0.00746960217815067 -696 -0.00654218027790495 -697 -0.0072389149982618 -698 -0.00618599001631964 -699 -0.00987786436517789 -700 -0.00673370918278097 -701 -0.00741759762031304 -702 -0.00541549527991575 -703 -0.00791781857083014 -704 -0.00787381692952382 -705 -0.00794395001729855 -706 -0.00931768673974245 -707 -0.00885678465821695 -708 -0.0052821815238511 -709 -0.00521693921004783 -710 -0.00576093393541424 -711 0.0319052243530813 -712 0.0335565990727355 -713 0.0359823614765673 -714 0.0310776016839443 -715 0.0324813323954347 -716 0.0341278653693179 -717 -0.00771207564784067 -718 0.0276493611582263 -719 -0.00348763960636761 -720 -0.00758712167000528 -721 -0.00857064851604708 -722 -0.00851623359127258 -723 -0.00860306547563313 -724 -0.00613401688706074 -725 -0.00513329277378087 -726 -0.00905815149013341 -727 -0.00906250727280879 -728 -0.00928036762666381 -729 -0.00830114918655625 -730 -0.00888782794632727 -731 -0.00904256610543205 -732 -0.00874136315610037 -733 -0.00531018786452449 -734 -0.00629165130613466 -735 -0.00755517067228936 -736 -0.00836182239325517 -737 -0.00809350876481861 -738 -0.00404124535306633 -739 -0.00561644195626163 -740 -0.00642305805867293 -741 -0.00816305467996883 -742 -0.00843581049472936 -743 -0.00672325206596123 -744 -0.00617215358093702 -745 -0.00402751925690743 -746 -0.00479725155053775 -747 -0.00342071760962384 -748 -0.0076001254677333 -749 0.0344911275393927 -750 0.0357890953530814 -751 0.0369236838641285 -752 0.0337953594669526 -753 0.0341196656886643 -754 -0.00659802662549373 -755 0.0315371138736742 -756 -0.00562959157006591 -757 -0.00365306265936607 -758 -0.00637937791804702 -759 -0.00728163692006943 -760 -0.00728167255033979 -761 -0.00486863763712198 -762 -0.00700194438994883 -763 -0.00488445712486066 -764 -0.00785107429883577 -765 -0.00743663889427734 -766 -0.0075555414143233 -767 -0.0082175974779749 -768 -0.00762712314452127 -769 -0.00716801816399294 -770 -0.00420432905589099 -771 -0.00646377431872973 -772 -0.00627655191972345 -773 -0.0068281800863105 -774 -0.00646314628967681 -775 -0.00545387418053753 -776 -0.00272565261231244 -777 -0.00644191975512085 -778 -0.00690509982226062 -779 -0.00709925853315763 -780 -0.00694005333594523 -781 -0.00625875545170498 -782 -0.00292200977585102 -783 -0.00321016024715532 -784 -0.00336849507857711 -785 -0.00596633161271771 -786 -0.00616166058124168 -787 0.03411477548233 -788 0.03523911486873 -789 0.039313174460712 -790 0.0358510918513492 -791 -0.00378913539308921 -792 0.0304194265074042 -793 -0.0038004308918757 -794 -0.00607189262016905 -795 -0.00587612619804128 -796 -0.00189219359140836 -797 -0.00616375618998826 -798 -0.00388685360401677 -799 -0.00556254294258616 -800 -0.00661778351426878 -801 -0.00382440352172051 -802 -0.00647820073687594 -803 -0.00624655145167987 -804 -0.00667068925870065 -805 -0.00648578196572712 -806 -0.0051558107815927 -807 -0.00231291615968645 -808 -0.00505615473087768 -809 -0.00587295803700975 -810 -0.00558124863643099 -811 -0.00536491992472214 -812 -0.00398836838292933 -813 -0.00377202632549738 -814 -0.002354118299516 -815 -0.00450512819274966 -816 -0.0052767354763421 -817 -0.00524186198269607 -818 -0.00538929450465706 -819 -0.00531625688326681 -820 -0.00559074601189695 -821 -0.00531052145605409 -822 -0.00506016636387018 -823 -0.00558340516310152 -824 -0.00480493075033995 -825 0.0322805865937449 -826 0.0378874582814526 -827 0.0388905020209905 -828 0.00140630493053477 -829 0.0327652229435057 -830 -0.00223687990639532 -831 -0.00415072629779562 -832 -0.00449816632891999 -833 -0.00471900257056604 -834 -0.00380655567933039 -835 -0.00208013080352473 -836 -0.00399065266148802 -837 -0.00487092683399181 -838 -0.0050959015942598 -839 -0.00191592007441914 -840 -0.00461100733700934 -841 -0.00502472638398927 -842 -0.00505288732904903 -843 -0.00438730255591126 -844 -0.00306177948534003 -845 -0.00375916415653544 -846 -0.00446006819331235 -847 -0.00529861753336898 -848 -0.00366324407821308 -849 -0.00260207768467577 -850 -0.00307568973842944 -851 -0.00423298618954815 -852 -0.00402026548184328 -853 -0.00146181843080695 -854 -0.00349341567107831 -855 -0.00433554634082064 -856 -0.00410204223433599 -857 -0.00434967848256952 -858 -0.00421703547450881 -859 -0.00382881572564153 -860 -0.00423970806851707 -861 -0.00437449172653197 -862 -0.00400502122442197 -863 0.0346819215614161 -864 0.0348750856830455 -865 -0.00265543722265669 -866 0.0380644512814575 -867 -5.14244684871617e-05 -868 -0.0029850292925082 -869 -0.00280199446175912 -870 -0.00310596389994767 -871 -0.00343511488292023 -872 -0.000171378148703489 -873 -0.0024459240224584 -874 -0.00327675207097342 -875 -0.00348581260906698 -876 -0.00355868259309655 -877 -0.000312461719204031 -878 -0.00355336474543735 -879 -0.00357392139745643 -880 -0.00290172241076185 -881 -0.00208381746845654 -882 -0.00191420039525358 -883 -0.00288084255403359 -884 -0.00402165110428679 -885 -0.00363823711845451 -886 -0.00105719975984341 -887 -0.00194304900141352 -888 -0.0028117193732005 -889 -0.00272354659953838 -890 -0.00269119684418979 -891 -0.0024739833326293 -892 -0.00264720107421195 -893 -0.00266281337322763 -894 -0.00271486287490391 -895 -0.0025966883492992 -896 -0.00275998355842941 -897 -0.00285830804400797 -898 -0.00283220277180079 -899 -0.00268773055778214 -900 -0.00284073923200707 -901 0.0353145424004993 -902 -0.00160304708129049 -903 0.0348425254145825 -904 2.8677502125498e-05 -905 0.000437164769156674 -906 -0.000353406460783275 -907 -0.00195469155311098 -908 -0.00181504012345376 -909 0.000213017105712491 -910 -0.001310254306005 -911 -0.00211504011023419 -912 -0.00220453472901432 -913 -0.00221445718259423 -914 -0.0019385529058544 -915 -0.00242106879847995 -916 0.000515093602106525 -917 -0.00157522783064606 -918 -0.000809182215147043 -919 -0.00125292469032103 -920 -0.00240883966759777 -921 -0.0021786367875747 -922 -0.00240937489397921 -923 -0.00116795158553355 -924 -0.000727426386542781 -925 -0.00133194403721344 -926 -0.00124546108708765 -927 -0.00148107783605636 -928 -0.00142616980555449 -929 -0.00146243841366756 -930 -0.0015283737803334 -931 -0.00154540562504725 -932 -0.00155805559628689 -933 -0.00151938623493131 -934 -0.00165541232298659 -935 -0.00168144891364875 -936 -0.00132559687940882 -937 -0.00160394278309398 -938 -0.0017363807642805 -939 -0.00167995411949275 -940 0.0354478346047755 -941 0.00106969481951657 -942 -0.000561313854486038 -943 -0.000457998303574142 -944 -0.000583885106294125 -945 -0.000525159904309248 -946 -0.000517315333414318 -947 -0.000721221933781515 -948 -0.000829549124890304 -949 -8.82882583545919e-05 -950 -0.000766770294365053 -951 -0.000811881521540676 -952 -0.000891788154480318 -953 -0.000934560208414364 -954 -0.00079422177360351 -955 -0.000838129010273254 -956 -0.000963325512884482 -957 -0.00102235934683932 -958 -0.00106440392780229 -959 -0.000989883649450528 -960 0.000386274557612681 -961 -0.000389777489444674 -962 -0.00118692846255399 -963 -5.09408200005586e-06 -964 -5.89078730563787e-05 -965 -1.47060551334381e-05 -966 -0.000136166417132319 -967 -0.000121512032975118 -968 -0.00017156987502174 -969 -0.000156708081095913 -970 -0.000153840321519638 -971 -0.000310390758729453 -972 -0.000312404884024801 -973 -0.000200418566814807 -974 -0.000375662527155661 -975 -0.000354596399099672 -976 -0.000424295858947903 -977 -4.46088202453899e-06 -978 0.00224800854296348 -979 0.000523082860817624 -980 0.00048326199320117 -981 0.000448693340206397 -982 0.000421635212488891 -983 0.000437949926365211 -984 0.000428040241678261 -985 0.000391002232599501 -986 0.00036566913933478 -987 0.000381018446039441 -988 0.000321514512415979 -989 0.000287957422008028 -990 0.000255617051800765 -991 0.000221662354369779 -992 0.000188701605125869 -993 0.00016002049297156 -994 0.000127317707925566 -995 9.31667901426005e-05 -996 6.3380231067732e-05 -997 3.423275902354e-05 -998 -2.14223799528709e-06 -999 -3.67741480724576e-05 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat deleted file mode 100644 index 484b9470..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.00562119483947754 0.00999999999999979 0.00999999999999979 0.0 1 -2 0.00404691696166992 0.0 0.0 0.0 2 -3 0.00373387336730957 0.00999999999999979 0.00999999999999979 0.0 3 -4 0.00375699996948242 0.0 0.0 0.0 4 -5 0.00371694564819336 0.0 0.0 0.0 5 -6 0.00381088256835938 0.0100000000000007 0.0100000000000007 0.0 6 -7 0.00370693206787109 0.0 0.0 0.0 7 -8 0.00368213653564453 0.00999999999999979 0.00999999999999979 0.0 8 -9 0.0037529468536377 0.0 0.0 0.0 9 -10 0.00371718406677246 0.0 0.0 0.0 10 -11 0.00370693206787109 0.00999999999999979 0.00999999999999979 0.0 11 -12 0.00371503829956055 0.0 0.0 0.0 12 -13 0.00367999076843262 0.0 0.0 0.0 13 -14 0.0037379264831543 0.00999999999999979 0.00999999999999979 0.0 14 -15 0.00368285179138184 0.0 0.0 0.0 15 -16 0.0036928653717041 0.00999999999999979 0.00999999999999979 0.0 16 -17 0.00363802909851074 0.0 0.0 0.0 17 -18 0.00420713424682617 0.0 0.0 0.0 18 -19 0.0046851634979248 0.0100000000000007 0.0100000000000007 0.0 19 -20 0.00365090370178223 0.0 0.0 0.0 20 -21 0.0036470890045166 0.00999999999999979 0.00999999999999979 0.0 21 -22 0.00363302230834961 0.0 0.0 0.0 22 -23 0.00362706184387207 0.0 0.0 0.0 23 -24 0.00369381904602051 0.00999999999999979 0.00999999999999979 0.0 24 -25 0.00363802909851074 0.0 0.0 0.0 25 -26 0.00362586975097656 0.0 0.0 0.0 26 -27 0.0036308765411377 0.00999999999999979 0.00999999999999979 0.0 27 -28 0.00364899635314941 0.0 0.0 0.0 28 -29 0.00363993644714355 0.0100000000000007 0.0100000000000007 0.0 29 -30 0.0036160945892334 0.0 0.0 0.0 30 -31 0.00362014770507812 0.0 0.0 0.0 31 -32 0.0036470890045166 0.00999999999999979 0.00999999999999979 0.0 32 -33 0.00372695922851562 0.0 0.0 0.0 33 -34 0.00366806983947754 0.0 0.0 0.0 34 -35 0.00362205505371094 0.00999999999999979 0.00999999999999979 0.0 35 -36 0.00366711616516113 0.0 0.0 0.0 36 -37 0.00369906425476074 0.00999999999999979 0.00999999999999979 0.0 37 -38 0.00364184379577637 0.0 0.0 0.0 38 -39 0.0289762020111084 0.0300000000000002 0.0300000000000002 0.0 39 -40 0.00372695922851562 0.0 0.0 0.0 40 -41 0.00367403030395508 0.00999999999999979 0.00999999999999979 0.0 41 -42 0.00373101234436035 0.0 0.0 0.0 42 -43 0.00379014015197754 0.0 0.0 0.0 43 -44 0.00367498397827148 0.0100000000000007 0.0100000000000007 0.0 44 -45 0.00369691848754883 0.0 0.0 0.0 45 -46 0.00368881225585938 0.0 0.0 0.0 46 -47 0.00369405746459961 0.00999999999999979 0.00999999999999979 0.0 47 -48 0.00369095802307129 0.0 0.0 0.0 48 -49 0.00370192527770996 0.00999999999999979 0.00999999999999979 0.0 49 -50 0.00373387336730957 0.0 0.0 0.0 50 -51 0.00370502471923828 0.0 0.0 0.0 51 -52 0.00367999076843262 0.00999999999999979 0.00999999999999979 0.0 52 -53 0.00374007225036621 0.0 0.0 0.0 53 -54 0.00364995002746582 0.0 0.0 0.0 54 -55 0.00367188453674316 0.0100000000000007 0.0100000000000007 0.0 55 -56 0.00363993644714355 0.0 0.0 0.0 56 -57 0.00365900993347168 0.00999999999999979 0.00999999999999979 0.0 57 -58 0.0036160945892334 0.0 0.0 0.0 58 -59 0.00369095802307129 0.0 0.0 0.0 59 -60 0.00452899932861328 0.00999999999999979 0.00999999999999979 0.0 60 -61 0.00462913513183594 0.0 0.0 0.0 61 -62 0.00413894653320312 0.00999999999999979 0.00999999999999979 0.0 62 -63 0.0036470890045166 0.0 0.0 0.0 63 -64 0.00361418724060059 0.0 0.0 0.0 64 -65 0.00383710861206055 0.0100000000000007 0.0100000000000007 0.0 65 -66 0.00362491607666016 0.0 0.0 0.0 66 -67 0.0036318302154541 0.0 0.0 0.0 67 -68 0.0036311149597168 0.00999999999999979 0.00999999999999979 0.0 68 -69 0.00365900993347168 0.0 0.0 0.0 69 -70 0.00515103340148926 0.00999999999999979 0.00999999999999979 0.0 70 -71 0.00363993644714355 0.0 0.0 0.0 71 -72 0.00365900993347168 0.0 0.0 0.0 72 -73 0.00374507904052734 0.00999999999999979 0.00999999999999979 0.0 73 -74 0.00366497039794922 0.0 0.0 0.0 74 -75 0.00367498397827148 0.00999999999999979 0.00999999999999979 0.0 75 -76 0.0036470890045166 0.0 0.0 0.0 76 -77 0.00451517105102539 0.0 0.0 0.0 77 -78 0.0300049781799316 0.0300000000000002 0.0300000000000002 0.0 78 -79 0.00374197959899902 0.00999999999999979 0.00999999999999979 0.0 79 -80 0.00371098518371582 0.0 0.0 0.0 80 -81 0.00372600555419922 0.0 0.0 0.0 81 -82 0.00376200675964355 0.0100000000000007 0.0100000000000007 0.0 82 -83 0.00369596481323242 0.0 0.0 0.0 83 -84 0.00372099876403809 0.00999999999999979 0.00999999999999979 0.0 84 -85 0.00370216369628906 0.0 0.0 0.0 85 -86 0.00374007225036621 0.0 0.0 0.0 86 -87 0.00369381904602051 0.00999999999999979 0.00999999999999979 0.0 87 -88 0.00372195243835449 0.0 0.0 0.0 88 -89 0.00368881225585938 0.0 0.0 0.0 89 -90 0.00371909141540527 0.00999999999999979 0.00999999999999979 0.0 90 -91 0.00371909141540527 0.0 0.0 0.0 91 -92 0.00366497039794922 0.0100000000000007 0.0100000000000007 0.0 92 -93 0.00366401672363281 0.0 0.0 0.0 93 -94 0.00378704071044922 0.0 0.0 0.0 94 -95 0.00365710258483887 0.00999999999999979 0.00999999999999979 0.0 95 -96 0.00405406951904297 0.0 0.0 0.0 96 -97 0.00365591049194336 0.0 0.0 0.0 97 -98 0.00371098518371582 0.00999999999999979 0.00999999999999979 0.0 98 -99 0.00363802909851074 0.0 0.0 0.0 99 -100 0.0036461353302002 0.00999999999999979 0.00999999999999979 0.0 100 -101 0.00359797477722168 0.0 0.0 0.0 101 -102 0.00361990928649902 0.0 0.0 0.0 102 -103 0.00364899635314941 0.0100000000000007 0.0100000000000007 0.0 103 -104 0.00359296798706055 0.0 0.0 0.0 104 -105 0.00363802909851074 0.0 0.0 0.0 105 -106 0.00417685508728027 0.00999999999999979 0.00999999999999979 0.0 106 -107 0.00371980667114258 0.0 0.0 0.0 107 -108 0.0036470890045166 0.00999999999999979 0.00999999999999979 0.0 108 -109 0.00368213653564453 0.0 0.0 0.0 109 -110 0.00360202789306641 0.0 0.0 0.0 110 -111 0.00362992286682129 0.00999999999999979 0.00999999999999979 0.0 111 -112 0.0036311149597168 0.0 0.0 0.0 112 -113 0.00362801551818848 0.0 0.0 0.0 113 -114 0.00364995002746582 0.0100000000000007 0.0100000000000007 0.0 114 -115 0.00370001792907715 0.0 0.0 0.0 115 -116 0.0305509567260742 0.0299999999999994 0.0299999999999994 0.0 116 -117 0.00376200675964355 0.0100000000000007 0.0100000000000007 0.0 117 -118 0.0038001537322998 0.0 0.0 0.0 118 -119 0.00374984741210938 0.0 0.0 0.0 119 -120 0.00397920608520508 0.00999999999999979 0.00999999999999979 0.0 120 -121 0.00372481346130371 0.0 0.0 0.0 121 -122 0.00369715690612793 0.0 0.0 0.0 122 -123 0.00371694564819336 0.00999999999999979 0.00999999999999979 0.0 123 -124 0.00372195243835449 0.0 0.0 0.0 124 -125 0.00375914573669434 0.00999999999999979 0.00999999999999979 0.0 125 -126 0.00368499755859375 0.0 0.0 0.0 126 -127 0.00371503829956055 0.0 0.0 0.0 127 -128 0.00380897521972656 0.00999999999999979 0.00999999999999979 0.0 128 -129 0.00403499603271484 0.0 0.0 0.0 129 -130 0.00370502471923828 0.0100000000000007 0.0100000000000007 0.0 130 -131 0.00371289253234863 0.0 0.0 0.0 131 -132 0.00365591049194336 0.0 0.0 0.0 132 -133 0.00368094444274902 0.00999999999999979 0.00999999999999979 0.0 133 -134 0.0036768913269043 0.0 0.0 0.0 134 -135 0.00362706184387207 0.0 0.0 0.0 135 -136 0.00366616249084473 0.00999999999999979 0.00999999999999979 0.0 136 -137 0.0036470890045166 0.0 0.0 0.0 137 -138 0.00362181663513184 0.0 0.0 0.0 138 -139 0.00364089012145996 0.00999999999999979 0.00999999999999979 0.0 139 -140 0.00363707542419434 0.0 0.0 0.0 140 -141 0.00359892845153809 0.0100000000000007 0.0100000000000007 0.0 141 -142 0.00361514091491699 0.0 0.0 0.0 142 -143 0.00365495681762695 0.0 0.0 0.0 143 -144 0.00371885299682617 0.00999999999999979 0.00999999999999979 0.0 144 -145 0.00364208221435547 0.0 0.0 0.0 145 -146 0.00365304946899414 0.0 0.0 0.0 146 -147 0.00368404388427734 0.00999999999999979 0.00999999999999979 0.0 147 -148 0.00365900993347168 0.0 0.0 0.0 148 -149 0.00368785858154297 0.00999999999999979 0.00999999999999979 0.0 149 -150 0.003662109375 0.0 0.0 0.0 150 -151 0.00363397598266602 0.0 0.0 0.0 151 -152 0.00362491607666016 0.0100000000000007 0.0100000000000007 0.0 152 -153 0.00366687774658203 0.0 0.0 0.0 153 -154 0.0295231342315674 0.0299999999999994 0.0299999999999994 0.0 154 -155 0.00366806983947754 0.0 0.0 0.0 155 -156 0.00370311737060547 0.0100000000000007 0.0100000000000007 0.0 156 -157 0.0037238597869873 0.0 0.0 0.0 157 -158 0.00376701354980469 0.00999999999999979 0.00999999999999979 0.0 158 -159 0.0036771297454834 0.0 0.0 0.0 159 -160 0.00372195243835449 0.0 0.0 0.0 160 -161 0.00371599197387695 0.00999999999999979 0.00999999999999979 0.0 161 -162 0.00371003150939941 0.0 0.0 0.0 162 -163 0.00369811058044434 0.0 0.0 0.0 163 -164 0.00378203392028809 0.00999999999999979 0.00999999999999979 0.0 164 -165 0.00370502471923828 0.0 0.0 0.0 165 -166 0.00371003150939941 0.0100000000000007 0.0100000000000007 0.0 166 -167 0.00371599197387695 0.0 0.0 0.0 167 -168 0.00370192527770996 0.0 0.0 0.0 168 -169 0.00369501113891602 0.00999999999999979 0.00999999999999979 0.0 169 -170 0.00369691848754883 0.0 0.0 0.0 170 -171 0.00400686264038086 0.0 0.0 0.0 171 -172 0.00524497032165527 0.00999999999999979 0.00999999999999979 0.0 172 -173 0.00366020202636719 0.0 0.0 0.0 173 -174 0.00366806983947754 0.00999999999999979 0.00999999999999979 0.0 174 -175 0.00367379188537598 0.0 0.0 0.0 175 -176 0.00362706184387207 0.0 0.0 0.0 176 -177 0.00365996360778809 0.0100000000000007 0.0100000000000007 0.0 177 -178 0.00365900993347168 0.0 0.0 0.0 178 -179 0.00363492965698242 0.00999999999999979 0.00999999999999979 0.0 179 -180 0.00363397598266602 0.0 0.0 0.0 180 -181 0.00366401672363281 0.0 0.0 0.0 181 -182 0.00363302230834961 0.00999999999999979 0.00999999999999979 0.0 182 -183 0.00364494323730469 0.0 0.0 0.0 183 -184 0.00361990928649902 0.0 0.0 0.0 184 -185 0.00379490852355957 0.00999999999999979 0.00999999999999979 0.0 185 -186 0.0036468505859375 0.0 0.0 0.0 186 -187 0.00370502471923828 0.00999999999999979 0.00999999999999979 0.0 187 -188 0.00387907028198242 0.0 0.0 0.0 188 -189 0.00541114807128906 0.0 0.0 0.0 189 -190 0.00428199768066406 0.0100000000000007 0.0100000000000007 0.0 190 -191 0.00368618965148926 0.0 0.0 0.0 191 -192 0.0293948650360107 0.0299999999999994 0.0299999999999994 0.0 192 -193 0.00434708595275879 0.0100000000000007 0.0100000000000007 0.0 193 -194 0.00372600555419922 0.0 0.0 0.0 194 -195 0.00628900527954102 0.00999999999999979 0.00999999999999979 0.0 195 -196 0.00624394416809082 0.0 0.0 0.0 196 -197 0.00649094581604004 0.00999999999999979 0.00999999999999979 0.0 197 -198 0.00419712066650391 0.0 0.0 0.0 198 -199 0.00371003150939941 0.00999999999999979 0.00999999999999979 0.0 199 -200 0.0037531852722168 0.0 0.0 0.0 200 -201 0.00369119644165039 0.0 0.0 0.0 201 -202 0.00369000434875488 0.0100000000000007 0.0100000000000007 0.0 202 -203 0.00372099876403809 0.0 0.0 0.0 203 -204 0.00369000434875488 0.00999999999999979 0.00999999999999979 0.0 204 -205 0.00371885299682617 0.0 0.0 0.0 205 -206 0.00367903709411621 0.0 0.0 0.0 206 -207 0.00364303588867188 0.00999999999999979 0.00999999999999979 0.0 207 -208 0.0037541389465332 0.0 0.0 0.0 208 -209 0.00364303588867188 0.0 0.0 0.0 209 -210 0.00363898277282715 0.00999999999999979 0.00999999999999979 0.0 210 -211 0.00363588333129883 0.0 0.0 0.0 211 -212 0.00367999076843262 0.0100000000000007 0.0100000000000007 0.0 212 -213 0.00364208221435547 0.0 0.0 0.0 213 -214 0.00365614891052246 0.0 0.0 0.0 214 -215 0.00363779067993164 0.00999999999999979 0.00999999999999979 0.0 215 -216 0.00362610816955566 0.0 0.0 0.0 216 -217 0.0036470890045166 0.0 0.0 0.0 217 -218 0.00366711616516113 0.00999999999999979 0.00999999999999979 0.0 218 -219 0.00364995002746582 0.0 0.0 0.0 219 -220 0.0036308765411377 0.0 0.0 0.0 220 -221 0.0036308765411377 0.00999999999999979 0.00999999999999979 0.0 221 -222 0.00362896919250488 0.0 0.0 0.0 222 -223 0.00364899635314941 0.0100000000000007 0.0100000000000007 0.0 223 -224 0.00365805625915527 0.0 0.0 0.0 224 -225 0.00364589691162109 0.0 0.0 0.0 225 -226 0.00363683700561523 0.00999999999999979 0.00999999999999979 0.0 226 -227 0.00364995002746582 0.0 0.0 0.0 227 -228 0.00421810150146484 0.0 0.0 0.0 228 -229 0.00510215759277344 0.00999999999999979 0.00999999999999979 0.0 229 -230 0.0295019149780273 0.0300000000000002 0.0300000000000002 0.0 230 -231 0.00370287895202637 0.0 0.0 0.0 231 -232 0.00370287895202637 0.00999999999999979 0.00999999999999979 0.0 232 -233 0.00372409820556641 0.0 0.0 0.0 233 -234 0.00373697280883789 0.0 0.0 0.0 234 -235 0.00371003150939941 0.00999999999999979 0.00999999999999979 0.0 235 -236 0.00374388694763184 0.0 0.0 0.0 236 -237 0.00366711616516113 0.00999999999999979 0.00999999999999979 0.0 237 -238 0.00371408462524414 0.0 0.0 0.0 238 -239 0.0048530101776123 0.0 0.0 0.0 239 -240 0.00423502922058105 0.0100000000000007 0.0100000000000007 0.0 240 -241 0.00370502471923828 0.0 0.0 0.0 241 -242 0.00370383262634277 0.00999999999999979 0.00999999999999979 0.0 242 -243 0.00366306304931641 0.0 0.0 0.0 243 -244 0.00367593765258789 0.0 0.0 0.0 244 -245 0.00371599197387695 0.00999999999999979 0.00999999999999979 0.0 245 -246 0.00369501113891602 0.0 0.0 0.0 246 -247 0.00366902351379395 0.0 0.0 0.0 247 -248 0.00362110137939453 0.00999999999999979 0.00999999999999979 0.0 248 -249 0.00362896919250488 0.0 0.0 0.0 249 -250 0.00362896919250488 0.0100000000000007 0.0100000000000007 0.0 250 -251 0.00362205505371094 0.0 0.0 0.0 251 -252 0.00364923477172852 0.0 0.0 0.0 252 -253 0.00362801551818848 0.00999999999999979 0.00999999999999979 0.0 253 -254 0.00369715690612793 0.0 0.0 0.0 254 -255 0.00363993644714355 0.0 0.0 0.0 255 -256 0.00364518165588379 0.00999999999999979 0.00999999999999979 0.0 256 -257 0.00360393524169922 0.0 0.0 0.0 257 -258 0.00365090370178223 0.00999999999999979 0.00999999999999979 0.0 258 -259 0.00365996360778809 0.0 0.0 0.0 259 -260 0.00363016128540039 0.0 0.0 0.0 260 -261 0.00363707542419434 0.0100000000000007 0.0100000000000007 0.0 261 -262 0.00364112854003906 0.0 0.0 0.0 262 -263 0.00367903709411621 0.0 0.0 0.0 263 -264 0.00365304946899414 0.00999999999999979 0.00999999999999979 0.0 264 -265 0.00365900993347168 0.0 0.0 0.0 265 -266 0.00364804267883301 0.00999999999999979 0.00999999999999979 0.0 266 -267 0.00368404388427734 0.0 0.0 0.0 267 -268 0.02935791015625 0.0300000000000002 0.0300000000000002 0.0 268 -269 0.00368499755859375 0.0 0.0 0.0 269 -270 0.00371789932250977 0.00999999999999979 0.00999999999999979 0.0 270 -271 0.0037848949432373 0.0 0.0 0.0 271 -272 0.00371384620666504 0.0 0.0 0.0 272 -273 0.00371098518371582 0.00999999999999979 0.00999999999999979 0.0 273 -274 0.00377702713012695 0.0 0.0 0.0 274 -275 0.00371503829956055 0.0 0.0 0.0 275 -276 0.00372791290283203 0.0100000000000007 0.0100000000000007 0.0 276 -277 0.00372004508972168 0.0 0.0 0.0 277 -278 0.00366806983947754 0.00999999999999979 0.00999999999999979 0.0 278 -279 0.00369620323181152 0.0 0.0 0.0 279 -280 0.00374603271484375 0.0 0.0 0.0 280 -281 0.00559902191162109 0.00999999999999979 0.00999999999999979 0.0 281 -282 0.00370311737060547 0.0 0.0 0.0 282 -283 0.00371289253234863 0.00999999999999979 0.00999999999999979 0.0 283 -284 0.00368905067443848 0.0 0.0 0.0 284 -285 0.0037989616394043 0.0 0.0 0.0 285 -286 0.00368595123291016 0.00999999999999979 0.0100000000000007 0.0 286 -287 0.00365710258483887 0.0 0.0 0.0 287 -288 0.00366306304931641 0.00999999999999979 0.00999999999999979 0.0 288 -289 0.00366091728210449 0.0 0.0 0.0 289 -290 0.00363683700561523 0.0 0.0 0.0 290 -291 0.00508499145507812 0.00999999999999979 0.00999999999999979 0.0 291 -292 0.00364899635314941 0.0 0.0 0.0 292 -293 0.00364184379577637 0.0 0.0 0.0 293 -294 0.00365900993347168 0.00999999999999979 0.00999999999999979 0.0 294 -295 0.00361919403076172 0.0 0.0 0.0 295 -296 0.00365996360778809 0.00999999999999979 0.00999999999999979 0.0 296 -297 0.00385499000549316 0.0 0.0 0.0 297 -298 0.00486421585083008 0.0 0.0 0.0 298 -299 0.00370907783508301 0.00999999999999979 0.00999999999999979 0.0 299 -300 0.00366020202636719 0.0 0.0 0.0 300 -301 0.00364780426025391 0.00999999999999979 0.00999999999999979 0.0 301 -302 0.00360703468322754 0.0 0.0 0.0 302 -303 0.00366711616516113 0.0 0.0 0.0 303 -304 0.00365304946899414 0.0100000000000016 0.0100000000000016 0.0 304 -305 0.0293490886688232 0.0299999999999994 0.0299999999999994 0.0 305 -306 0.00373411178588867 0.0 0.0 0.0 306 -307 0.00367593765258789 0.0 0.0 0.0 307 -308 0.0037379264831543 0.00999999999999979 0.00999999999999979 0.0 308 -309 0.00373697280883789 0.0 0.0 0.0 309 -310 0.00374507904052734 0.0 0.0 0.0 310 -311 0.00374889373779297 0.00999999999999979 0.00999999999999979 0.0 311 -312 0.00372195243835449 0.0 0.0 0.0 312 -313 0.00367879867553711 0.00999999999999979 0.00999999999999979 0.0 313 -314 0.00386714935302734 0.0 0.0 0.0 314 -315 0.00381088256835938 0.0 0.0 0.0 315 -316 0.00370597839355469 0.00999999999999979 0.00999999999999979 0.0 316 -317 0.00370287895202637 0.0 0.0 0.0 317 -318 0.00370883941650391 0.0 0.0 0.0 318 -319 0.0037989616394043 0.0100000000000016 0.0100000000000016 0.0 319 -320 0.00371098518371582 0.0 0.0 0.0 320 -321 0.00366806983947754 0.00999999999999979 0.00999999999999979 0.0 321 -322 0.00365209579467773 0.0 0.0 0.0 322 -323 0.00365400314331055 0.0 0.0 0.0 323 -324 0.00365710258483887 0.00999999999999979 0.00999999999999979 0.0 324 -325 0.00365400314331055 0.0 0.0 0.0 325 -326 0.00417399406433105 0.00999999999999979 0.00999999999999979 0.0 326 -327 0.00363588333129883 0.0 0.0 0.0 327 -328 0.00362396240234375 0.0 0.0 0.0 328 -329 0.00364899635314941 0.00999999999999979 0.00999999999999979 0.0 329 -330 0.0036461353302002 0.0 0.0 0.0 330 -331 0.00362610816955566 0.0 0.0 0.0 331 -332 0.00365710258483887 0.00999999999999979 0.00999999999999979 0.0 332 -333 0.00365900993347168 0.0 0.0 0.0 333 -334 0.00363802909851074 0.0 0.0 0.0 334 -335 0.00365495681762695 0.00999999999999979 0.00999999999999979 0.0 335 -336 0.0036931037902832 0.0 0.0 0.0 336 -337 0.00366592407226562 0.00999999999999979 0.00999999999999979 0.0 337 -338 0.0036778450012207 0.0 0.0 0.0 338 -339 0.00438904762268066 0.0 0.0 0.0 339 -340 0.00471091270446777 0.0100000000000016 0.0100000000000016 0.0 340 -341 0.00389599800109863 0.0 0.0 0.0 341 -342 0.00366497039794922 0.00999999999999979 0.00999999999999979 0.0 342 -343 0.0298199653625488 0.0299999999999994 0.0299999999999994 0.0 343 -344 0.00373697280883789 0.0 0.0 0.0 344 -345 0.00366497039794922 0.0 0.0 0.0 345 -346 0.00375890731811523 0.00999999999999979 0.00999999999999979 0.0 346 -347 0.00376486778259277 0.0 0.0 0.0 347 -348 0.00379490852355957 0.00999999999999979 0.00999999999999979 0.0 348 -349 0.00371098518371582 0.0 0.0 0.0 349 -350 0.00410985946655273 0.0 0.0 0.0 350 -351 0.00371313095092773 0.00999999999999979 0.00999999999999979 0.0 351 -352 0.00372481346130371 0.0 0.0 0.0 352 -353 0.00371789932250977 0.0 0.0 0.0 353 -354 0.00374507904052734 0.00999999999999979 0.00999999999999979 0.0 354 -355 0.00374102592468262 0.0 0.0 0.0 355 -356 0.00371098518371582 0.0100000000000016 0.0100000000000016 0.0 356 -357 0.00369906425476074 0.0 0.0 0.0 357 -358 0.00367617607116699 0.0 0.0 0.0 358 -359 0.00366997718811035 0.00999999999999979 0.00999999999999979 0.0 359 -360 0.00365996360778809 0.0 0.0 0.0 360 -361 0.00363588333129883 0.0 0.0 0.0 361 -362 0.00361990928649902 0.00999999999999979 0.00999999999999979 0.0 362 -363 0.00364589691162109 0.0 0.0 0.0 363 -364 0.00363492965698242 0.00999999999999979 0.00999999999999979 0.0 364 -365 0.00372695922851562 0.0 0.0 0.0 365 -366 0.00362396240234375 0.0 0.0 0.0 366 -367 0.00363707542419434 0.00999999999999979 0.00999999999999979 0.0 367 -368 0.0036921501159668 0.0 0.0 0.0 368 -369 0.00365710258483887 0.0 0.0 0.0 369 -370 0.00361800193786621 0.00999999999999979 0.00999999999999979 0.0 370 -371 0.00367903709411621 0.0 0.0 0.0 371 -372 0.00365805625915527 0.00999999999999979 0.00999999999999979 0.0 372 -373 0.00367999076843262 0.0 0.0 0.0 373 -374 0.00368404388427734 0.0 0.0 0.0 374 -375 0.00368690490722656 0.00999999999999979 0.00999999999999979 0.0 375 -376 0.00374794006347656 0.0 0.0 0.0 376 -377 0.00366997718811035 0.0 0.0 0.0 377 -378 0.00365018844604492 0.0100000000000016 0.0100000000000016 0.0 378 -379 0.0036780834197998 0.0 0.0 0.0 379 -380 0.00370216369628906 0.00999999999999979 0.00999999999999979 0.0 380 -381 0.0293450355529785 0.0199999999999996 0.0199999999999996 0.0 381 -382 0.00373005867004395 0.00999999999999979 0.00999999999999979 0.0 382 -383 0.00366306304931641 0.0 0.0 0.0 383 -384 0.00376296043395996 0.00999999999999979 0.00999999999999979 0.0 384 -385 0.00380301475524902 0.0 0.0 0.0 385 -386 0.00372815132141113 0.0 0.0 0.0 386 -387 0.00371193885803223 0.00999999999999979 0.00999999999999979 0.0 387 -388 0.00368499755859375 0.0 0.0 0.0 388 -389 0.00373601913452148 0.0 0.0 0.0 389 -390 0.00371694564819336 0.00999999999999979 0.00999999999999979 0.0 390 -391 0.00372791290283203 0.0 0.0 0.0 391 -392 0.00531101226806641 0.0100000000000016 0.0100000000000016 0.0 392 -393 0.00371789932250977 0.0 0.0 0.0 393 -394 0.00370097160339355 0.00999999999999979 0.00999999999999979 0.0 394 -395 0.00369906425476074 0.0 0.0 0.0 395 -396 0.00373601913452148 0.0 0.0 0.0 396 -397 0.00371694564819336 0.00999999999999979 0.00999999999999979 0.0 397 -398 0.00365591049194336 0.0 0.0 0.0 398 -399 0.00403714179992676 0.0 0.0 0.0 399 -400 0.00364208221435547 0.00999999999999979 0.00999999999999979 0.0 400 -401 0.00365400314331055 0.0 0.0 0.0 401 -402 0.00364089012145996 0.00999999999999979 0.00999999999999979 0.0 402 -403 0.00363302230834961 0.0 0.0 0.0 403 -404 0.00365090370178223 0.0 0.0 0.0 404 -405 0.00374603271484375 0.00999999999999979 0.00999999999999979 0.0 405 -406 0.00363278388977051 0.0 0.0 0.0 406 -407 0.00362515449523926 0.0 0.0 0.0 407 -408 0.00372409820556641 0.00999999999999979 0.00999999999999979 0.0 408 -409 0.00486588478088379 0.0 0.0 0.0 409 -410 0.00364303588867188 0.00999999999999979 0.00999999999999979 0.0 410 -411 0.00371599197387695 0.0 0.0 0.0 411 -412 0.0036618709564209 0.0 0.0 0.0 412 -413 0.00363707542419434 0.00999999999999979 0.00999999999999979 0.0 413 -414 0.00367593765258789 0.0 0.0 0.0 414 -415 0.00361990928649902 0.0 0.0 0.0 415 -416 0.00365900993347168 0.0100000000000016 0.0100000000000016 0.0 416 -417 0.00365614891052246 0.0 0.0 0.0 417 -418 0.00370597839355469 0.00999999999999979 0.00999999999999979 0.0 418 -419 0.0359270572662354 0.0299999999999994 0.0299999999999994 0.0 419 -420 0.00371479988098145 0.00999999999999979 0.00999999999999979 0.0 420 -421 0.00369119644165039 0.0 0.0 0.0 421 -422 0.00375699996948242 0.0 0.0 0.0 422 -423 0.00374388694763184 0.00999999999999979 0.00999999999999979 0.0 423 -424 0.00373291969299316 0.0 0.0 0.0 424 -425 0.00372982025146484 0.0 0.0 0.0 425 -426 0.00370216369628906 0.00999999999999979 0.00999999999999979 0.0 426 -427 0.00371408462524414 0.0 0.0 0.0 427 -428 0.0037078857421875 0.0100000000000016 0.0100000000000016 0.0 428 -429 0.00379300117492676 0.0 0.0 0.0 429 -430 0.00373482704162598 0.0 0.0 0.0 430 -431 0.00374007225036621 0.00999999999999979 0.00999999999999979 0.0 431 -432 0.00367999076843262 0.0 0.0 0.0 432 -433 0.00372695922851562 0.0 0.0 0.0 433 -434 0.00371384620666504 0.00999999999999979 0.00999999999999979 0.0 434 -435 0.0036170482635498 0.0 0.0 0.0 435 -436 0.00364899635314941 0.00999999999999979 0.00999999999999979 0.0 436 -437 0.00367283821105957 0.0 0.0 0.0 437 -438 0.0036160945892334 0.0 0.0 0.0 438 -439 0.00362205505371094 0.00999999999999979 0.00999999999999979 0.0 439 -440 0.00364518165588379 0.0 0.0 0.0 440 -441 0.0036780834197998 0.0 0.0 0.0 441 -442 0.00361800193786621 0.00999999999999979 0.00999999999999979 0.0 442 -443 0.00362396240234375 0.0 0.0 0.0 443 -444 0.00362610816955566 0.00999999999999979 0.00999999999999979 0.0 444 -445 0.00364804267883301 0.0 0.0 0.0 445 -446 0.00360488891601562 0.0 0.0 0.0 446 -447 0.00363397598266602 0.00999999999999979 0.00999999999999979 0.0 447 -448 0.00361299514770508 0.0 0.0 0.0 448 -449 0.00390100479125977 0.0 0.0 0.0 449 -450 0.00565385818481445 0.0100000000000016 0.0100000000000016 0.0 450 -451 0.00366592407226562 0.0 0.0 0.0 451 -452 0.00364398956298828 0.00999999999999979 0.00999999999999979 0.0 452 -453 0.00362896919250488 0.0 0.0 0.0 453 -454 0.0036618709564209 0.0 0.0 0.0 454 -455 0.00370502471923828 0.00999999999999979 0.00999999999999979 0.0 455 -456 0.00375580787658691 0.0 0.0 0.0 456 -457 0.029231071472168 0.0299999999999994 0.0299999999999994 0.0 457 -458 0.00371885299682617 0.0 0.0 0.0 458 -459 0.00371003150939941 0.0 0.0 0.0 459 -460 0.00493097305297852 0.0 0.0 0.0 460 -461 0.00378513336181641 0.00999999999999979 0.00999999999999979 0.0 461 -462 0.0037388801574707 0.0 0.0 0.0 462 -463 0.00383710861206055 0.0 0.0 0.0 463 -464 0.00370407104492188 0.00999999999999979 0.00999999999999979 0.0 464 -465 0.0037388801574707 0.0 0.0 0.0 465 -466 0.00373196601867676 0.0100000000000016 0.0100000000000016 0.0 466 -467 0.00371599197387695 0.0 0.0 0.0 467 -468 0.00373697280883789 0.0 0.0 0.0 468 -469 0.00368809700012207 0.00999999999999979 0.00999999999999979 0.0 469 -470 0.00370502471923828 0.0 0.0 0.0 470 -471 0.0036771297454834 0.0 0.0 0.0 471 -472 0.00364899635314941 0.00999999999999979 0.00999999999999979 0.0 472 -473 0.00366902351379395 0.0 0.0 0.0 473 -474 0.00365710258483887 0.00999999999999979 0.00999999999999979 0.0 474 -475 0.00371217727661133 0.0 0.0 0.0 475 -476 0.00365495681762695 0.0 0.0 0.0 476 -477 0.0036308765411377 0.00999999999999979 0.00999999999999979 0.0 477 -478 0.00365710258483887 0.0 0.0 0.0 478 -479 0.00364899635314941 0.0 0.0 0.0 479 -480 0.00360703468322754 0.00999999999999979 0.00999999999999979 0.0 480 -481 0.0036318302154541 0.0 0.0 0.0 481 -482 0.00359702110290527 0.0 0.0 0.0 482 -483 0.00360584259033203 0.00999999999999979 0.00999999999999979 0.0 483 -484 0.00364303588867188 0.0 0.0 0.0 484 -485 0.00361490249633789 0.00999999999999979 0.00999999999999979 0.0 485 -486 0.00365281105041504 0.0 0.0 0.0 486 -487 0.00365591049194336 0.0 0.0 0.0 487 -488 0.00358986854553223 0.0100000000000016 0.0100000000000016 0.0 488 -489 0.00365304946899414 0.0 0.0 0.0 489 -490 0.00380802154541016 0.0 0.0 0.0 490 -491 0.00366997718811035 0.00999999999999979 0.00999999999999979 0.0 491 -492 0.00363612174987793 0.0 0.0 0.0 492 -493 0.003662109375 0.00999999999999979 0.00999999999999979 0.0 493 -494 0.00367617607116699 0.0 0.0 0.0 494 -495 0.0286951065063477 0.0299999999999994 0.0299999999999994 0.0 495 -496 0.00378203392028809 0.0 0.0 0.0 496 -497 0.00374603271484375 0.00999999999999979 0.00999999999999979 0.0 497 -498 0.00373005867004395 0.0 0.0 0.0 498 -499 0.00371003150939941 0.0 0.0 0.0 499 -500 0.00367212295532227 0.00999999999999979 0.00999999999999979 0.0 500 -501 0.00379490852355957 0.0 0.0 0.0 501 -502 0.00532388687133789 0.0100000000000016 0.0100000000000016 0.0 502 -503 0.00412988662719727 0.0 0.0 0.0 503 -504 0.00371408462524414 0.0 0.0 0.0 504 -505 0.00367403030395508 0.00999999999999979 0.00999999999999979 0.0 505 -506 0.00383114814758301 0.0 0.0 0.0 506 -507 0.00376319885253906 0.00999999999999979 0.00999999999999979 0.0 507 -508 0.00370383262634277 0.0 0.0 0.0 508 -509 0.00366592407226562 0.0 0.0 0.0 509 -510 0.00369906425476074 0.00999999999999979 0.00999999999999979 0.0 510 -511 0.00367116928100586 0.0 0.0 0.0 511 -512 0.00511002540588379 0.0 0.0 0.0 512 -513 0.00360512733459473 0.00999999999999979 0.00999999999999979 0.0 513 -514 0.00369119644165039 0.0 0.0 0.0 514 -515 0.0036311149597168 0.00999999999999979 0.00999999999999979 0.0 515 -516 0.0036771297454834 0.0 0.0 0.0 516 -517 0.00361800193786621 0.0 0.0 0.0 517 -518 0.0038139820098877 0.00999999999999979 0.00999999999999979 0.0 518 -519 0.00537514686584473 0.0 0.0 0.0 519 -520 0.00412893295288086 0.00999999999999979 0.00999999999999979 0.0 520 -521 0.00373005867004395 0.0 0.0 0.0 521 -522 0.00365996360778809 0.0 0.0 0.0 522 -523 0.00364303588867188 0.00999999999999979 0.00999999999999979 0.0 523 -524 0.00367403030395508 0.0 0.0 0.0 524 -525 0.00364589691162109 0.0100000000000016 0.0100000000000016 0.0 525 -526 0.00364398956298828 0.0 0.0 0.0 526 -527 0.00363898277282715 0.0 0.0 0.0 527 -528 0.00362682342529297 0.00999999999999979 0.00999999999999979 0.0 528 -529 0.00360894203186035 0.0 0.0 0.0 529 -530 0.00366091728210449 0.0 0.0 0.0 530 -531 0.00367999076843262 0.00999999999999979 0.00999999999999979 0.0 531 -532 0.0291500091552734 0.0299999999999994 0.0299999999999994 0.0 532 -533 0.00369596481323242 0.0 0.0 0.0 533 -534 0.00374984741210938 0.0 0.0 0.0 534 -535 0.00383186340332031 0.00999999999999979 0.00999999999999979 0.0 535 -536 0.00389409065246582 0.0 0.0 0.0 536 -537 0.00370407104492188 0.00999999999999979 0.00999999999999979 0.0 537 -538 0.0037238597869873 0.0 0.0 0.0 538 -539 0.00371479988098145 0.0 0.0 0.0 539 -540 0.00371289253234863 0.0100000000000016 0.0100000000000016 0.0 540 -541 0.00380897521972656 0.0 0.0 0.0 541 -542 0.00371193885803223 0.0 0.0 0.0 542 -543 0.0036928653717041 0.00999999999999979 0.00999999999999979 0.0 543 -544 0.00368285179138184 0.0 0.0 0.0 544 -545 0.00370407104492188 0.00999999999999979 0.00999999999999979 0.0 545 -546 0.00371193885803223 0.0 0.0 0.0 546 -547 0.00420904159545898 0.0 0.0 0.0 547 -548 0.00372791290283203 0.00999999999999979 0.00999999999999979 0.0 548 -549 0.0037071704864502 0.0 0.0 0.0 549 -550 0.00366401672363281 0.00999999999999979 0.00999999999999979 0.0 550 -551 0.00365710258483887 0.0 0.0 0.0 551 -552 0.00364494323730469 0.0 0.0 0.0 552 -553 0.00368499755859375 0.00999999999999979 0.00999999999999979 0.0 553 -554 0.00366806983947754 0.0 0.0 0.0 554 -555 0.00361418724060059 0.0 0.0 0.0 555 -556 0.00361394882202148 0.00999999999999979 0.00999999999999979 0.0 556 -557 0.00365090370178223 0.0 0.0 0.0 557 -558 0.00361990928649902 0.0 0.0 0.0 558 -559 0.0036468505859375 0.00999999999999979 0.00999999999999979 0.0 559 -560 0.0040891170501709 0.0 0.0 0.0 560 -561 0.00469303131103516 0.0100000000000016 0.0100000000000016 0.0 561 -562 0.00363516807556152 0.0 0.0 0.0 562 -563 0.00363516807556152 0.0 0.0 0.0 563 -564 0.00361895561218262 0.00999999999999979 0.00999999999999979 0.0 564 -565 0.00365996360778809 0.0 0.0 0.0 565 -566 0.00366783142089844 0.00999999999999979 0.00999999999999979 0.0 566 -567 0.00374007225036621 0.0 0.0 0.0 567 -568 0.00392389297485352 0.0 0.0 0.0 568 -569 0.0294678211212158 0.0299999999999994 0.0299999999999994 0.0 569 -570 0.00389218330383301 0.00999999999999979 0.00999999999999979 0.0 570 -571 0.00545501708984375 0.0 0.0 0.0 571 -572 0.00444793701171875 0.00999999999999979 0.00999999999999979 0.0 572 -573 0.00378513336181641 0.0 0.0 0.0 573 -574 0.00372600555419922 0.0 0.0 0.0 574 -575 0.00369596481323242 0.00999999999999979 0.00999999999999979 0.0 575 -576 0.00376510620117188 0.0 0.0 0.0 576 -577 0.00368714332580566 0.0100000000000016 0.0100000000000016 0.0 577 -578 0.00371885299682617 0.0 0.0 0.0 578 -579 0.00372505187988281 0.0 0.0 0.0 579 -580 0.00372815132141113 0.00999999999999979 0.00999999999999979 0.0 580 -581 0.00370502471923828 0.0 0.0 0.0 581 -582 0.00371503829956055 0.0 0.0 0.0 582 -583 0.00371503829956055 0.00999999999999979 0.00999999999999979 0.0 583 -584 0.00370287895202637 0.0 0.0 0.0 584 -585 0.00371599197387695 0.00999999999999979 0.00999999999999979 0.0 585 -586 0.00377798080444336 0.0 0.0 0.0 586 -587 0.00368595123291016 0.0 0.0 0.0 587 -588 0.00366497039794922 0.00999999999999979 0.00999999999999979 0.0 588 -589 0.00367999076843262 0.0 0.0 0.0 589 -590 0.0036320686340332 0.0 0.0 0.0 590 -591 0.00362491607666016 0.00999999999999979 0.00999999999999979 0.0 591 -592 0.00367593765258789 0.0 0.0 0.0 592 -593 0.0036461353302002 0.00999999999999979 0.00999999999999979 0.0 593 -594 0.00365996360778809 0.0 0.0 0.0 594 -595 0.003662109375 0.0 0.0 0.0 595 -596 0.00364398956298828 0.00999999999999979 0.00999999999999979 0.0 596 -597 0.00371479988098145 0.0 0.0 0.0 597 -598 0.00362610816955566 0.0 0.0 0.0 598 -599 0.00365614891052246 0.0100000000000016 0.0100000000000016 0.0 599 -600 0.00365400314331055 0.0 0.0 0.0 600 -601 0.00364089012145996 0.00999999999999979 0.00999999999999979 0.0 601 -602 0.00363492965698242 0.0 0.0 0.0 602 -603 0.0036320686340332 0.0 0.0 0.0 603 -604 0.00364089012145996 0.00999999999999979 0.00999999999999979 0.0 604 -605 0.00368785858154297 0.0 0.0 0.0 605 -606 0.00367999076843262 0.0 0.0 0.0 606 -607 0.0295491218566895 0.0299999999999994 0.0299999999999994 0.0 607 -608 0.00367212295532227 0.00999999999999979 0.00999999999999979 0.0 608 -609 0.00368118286132812 0.0 0.0 0.0 609 -610 0.00368499755859375 0.0 0.0 0.0 610 -611 0.00374102592468262 0.00999999999999979 0.00999999999999979 0.0 611 -612 0.00428009033203125 0.0 0.0 0.0 612 -613 0.00475502014160156 0.0100000000000016 0.0100000000000016 0.0 613 -614 0.00373005867004395 0.0 0.0 0.0 614 -615 0.00372791290283203 0.00999999999999979 0.00999999999999979 0.0 615 -616 0.00373196601867676 0.0 0.0 0.0 616 -617 0.00375008583068848 0.0 0.0 0.0 617 -618 0.00374102592468262 0.00999999999999979 0.00999999999999979 0.0 618 -619 0.00374102592468262 0.0 0.0 0.0 619 -620 0.00369095802307129 0.0 0.0 0.0 620 -621 0.00368785858154297 0.00999999999999979 0.00999999999999979 0.0 621 -622 0.00369095802307129 0.0 0.0 0.0 622 -623 0.0036778450012207 0.00999999999999979 0.00999999999999979 0.0 623 -624 0.0036468505859375 0.0 0.0 0.0 624 -625 0.00369906425476074 0.0 0.0 0.0 625 -626 0.00376510620117188 0.00999999999999979 0.00999999999999979 0.0 626 -627 0.00364899635314941 0.0 0.0 0.0 627 -628 0.00363397598266602 0.0 0.0 0.0 628 -629 0.00383210182189941 0.00999999999999979 0.00999999999999979 0.0 629 -630 0.00394892692565918 0.0 0.0 0.0 630 -631 0.00367307662963867 0.00999999999999979 0.00999999999999979 0.0 631 -632 0.0036311149597168 0.0 0.0 0.0 632 -633 0.00366497039794922 0.0 0.0 0.0 633 -634 0.00363707542419434 0.00999999999999979 0.00999999999999979 0.0 634 -635 0.0036308765411377 0.0 0.0 0.0 635 -636 0.00362706184387207 0.0 0.0 0.0 636 -637 0.00366306304931641 0.0100000000000016 0.0100000000000016 0.0 637 -638 0.0036468505859375 0.0 0.0 0.0 638 -639 0.00365710258483887 0.0 0.0 0.0 639 -640 0.00370287895202637 0.00999999999999979 0.00999999999999979 0.0 640 -641 0.00424313545227051 0.0 0.0 0.0 641 -642 0.00360798835754395 0.00999999999999979 0.00999999999999979 0.0 642 -643 0.00641298294067383 0.0 0.0 0.0 643 -644 0.0336699485778809 0.0399999999999991 0.0399999999999991 0.0 644 -645 0.00376391410827637 0.0 0.0 0.0 645 -646 0.00372314453125 0.0 0.0 0.0 646 -647 0.00375103950500488 0.00999999999999979 0.00999999999999979 0.0 647 -648 0.00373101234436035 0.0 0.0 0.0 648 -649 0.00373196601867676 0.0 0.0 0.0 649 -650 0.00368499755859375 0.0100000000000016 0.0100000000000016 0.0 650 -651 0.00377416610717773 0.0 0.0 0.0 651 -652 0.00371193885803223 0.00999999999999979 0.00999999999999979 0.0 652 -653 0.0036919116973877 0.0 0.0 0.0 653 -654 0.00371813774108887 0.0 0.0 0.0 654 -655 0.00372219085693359 0.00999999999999979 0.00999999999999979 0.0 655 -656 0.00370907783508301 0.0 0.0 0.0 656 -657 0.00366401672363281 0.0 0.0 0.0 657 -658 0.00366806983947754 0.00999999999999979 0.00999999999999979 0.0 658 -659 0.00368309020996094 0.0 0.0 0.0 659 -660 0.00367307662963867 0.00999999999999979 0.00999999999999979 0.0 660 -661 0.00363898277282715 0.0 0.0 0.0 661 -662 0.003662109375 0.0 0.0 0.0 662 -663 0.00363707542419434 0.00999999999999979 0.00999999999999979 0.0 663 -664 0.00363302230834961 0.0 0.0 0.0 664 -665 0.00366091728210449 0.0 0.0 0.0 665 -666 0.0036771297454834 0.00999999999999979 0.00999999999999979 0.0 666 -667 0.00365710258483887 0.0 0.0 0.0 667 -668 0.00360703468322754 0.00999999999999979 0.00999999999999979 0.0 668 -669 0.00365900993347168 0.0 0.0 0.0 669 -670 0.00479602813720703 0.0 0.0 0.0 670 -671 0.0047600269317627 0.0100000000000016 0.0100000000000016 0.0 671 -672 0.00367999076843262 0.0 0.0 0.0 672 -673 0.00362992286682129 0.00999999999999979 0.00999999999999979 0.0 673 -674 0.00359392166137695 0.0 0.0 0.0 674 -675 0.00365710258483887 0.0 0.0 0.0 675 -676 0.00364899635314941 0.00999999999999979 0.00999999999999979 0.0 676 -677 0.00373482704162598 0.0 0.0 0.0 677 -678 0.00359201431274414 0.0 0.0 0.0 678 -679 0.00365900993347168 0.00999999999999979 0.00999999999999979 0.0 679 -680 0.0036919116973877 0.0 0.0 0.0 680 -681 0.00368595123291016 0.00999999999999979 0.00999999999999979 0.0 681 -682 0.0298888683319092 0.0299999999999994 0.0299999999999994 0.0 682 -683 0.00371694564819336 0.0 0.0 0.0 683 -684 0.00372409820556641 0.0 0.0 0.0 684 -685 0.00371193885803223 0.00999999999999979 0.00999999999999979 0.0 685 -686 0.00372695922851562 0.0 0.0 0.0 686 -687 0.00368809700012207 0.0 0.0 0.0 687 -688 0.0036931037902832 0.0100000000000016 0.0100000000000016 0.0 688 -689 0.00371003150939941 0.0 0.0 0.0 689 -690 0.00369119644165039 0.0 0.0 0.0 690 -691 0.00370192527770996 0.0 0.0 0.0 691 -692 0.00372600555419922 0.0 0.0 0.0 692 -693 0.00372099876403809 0.00999999999999979 0.00999999999999979 0.0 693 -694 0.00371193885803223 0.0 0.0 0.0 694 -695 0.00369095802307129 0.0 0.0 0.0 695 -696 0.00366783142089844 0.00999999999999979 0.00999999999999979 0.0 696 -697 0.00373601913452148 0.0 0.0 0.0 697 -698 0.00366497039794922 0.0 0.0 0.0 698 -699 0.00366806983947754 0.0 0.0 0.0 699 -700 0.00364398956298828 0.0 0.0 0.0 700 -701 0.00358295440673828 0.00999999999999979 0.00999999999999979 0.0 701 -702 0.00363898277282715 0.0 0.0 0.0 702 -703 0.00365304946899414 0.0 0.0 0.0 703 -704 0.00369596481323242 0.00999999999999979 0.00999999999999979 0.0 704 -705 0.00362300872802734 0.0 0.0 0.0 705 -706 0.00362801551818848 0.0 0.0 0.0 706 -707 0.00364899635314941 0.00999999999999979 0.00999999999999979 0.0 707 -708 0.00362491607666016 0.0 0.0 0.0 708 -709 0.00363707542419434 0.0100000000000016 0.0100000000000016 0.0 709 -710 0.00364804267883301 0.0 0.0 0.0 710 -711 0.00362610816955566 0.0 0.0 0.0 711 -712 0.00368213653564453 0.00999999999999979 0.00999999999999979 0.0 712 -713 0.00364398956298828 0.0 0.0 0.0 713 -714 0.00365400314331055 0.0 0.0 0.0 714 -715 0.00364518165588379 0.00999999999999979 0.00999999999999979 0.0 715 -716 0.00361394882202148 0.0 0.0 0.0 716 -717 0.00368309020996094 0.00999999999999979 0.00999999999999979 0.0 717 -718 0.00363492965698242 0.0 0.0 0.0 718 -719 0.0291500091552734 0.0299999999999994 0.0299999999999994 0.0 719 -720 0.00372695922851562 0.0 0.0 0.0 720 -721 0.00369691848754883 0.00999999999999979 0.00999999999999979 0.0 721 -722 0.0036919116973877 0.0 0.0 0.0 722 -723 0.00575518608093262 0.0100000000000016 0.0100000000000016 0.0 723 -724 0.00409793853759766 0.0 0.0 0.0 724 -725 0.00376510620117188 0.0 0.0 0.0 725 -726 0.00382494926452637 0.00999999999999979 0.00999999999999979 0.0 726 -727 0.00373482704162598 0.0 0.0 0.0 727 -728 0.00375699996948242 0.0 0.0 0.0 728 -729 0.00374197959899902 0.00999999999999979 0.00999999999999979 0.0 729 -730 0.00372695922851562 0.0 0.0 0.0 730 -731 0.00370311737060547 0.00999999999999979 0.00999999999999979 0.0 731 -732 0.00367593765258789 0.0 0.0 0.0 732 -733 0.00520992279052734 0.0 0.0 0.0 733 -734 0.00372195243835449 0.00999999999999979 0.00999999999999979 0.0 734 -735 0.00368905067443848 0.0 0.0 0.0 735 -736 0.00366616249084473 0.00999999999999979 0.00999999999999979 0.0 736 -737 0.00368809700012207 0.0 0.0 0.0 737 -738 0.00368499755859375 0.0 0.0 0.0 738 -739 0.00387406349182129 0.00999999999999979 0.00999999999999979 0.0 739 -740 0.00513005256652832 0.0 0.0 0.0 740 -741 0.0036470890045166 0.00999999999999979 0.00999999999999979 0.0 741 -742 0.00371885299682617 0.0 0.0 0.0 742 -743 0.00364398956298828 0.0 0.0 0.0 743 -744 0.00364589691162109 0.00999999999999979 0.00999999999999979 0.0 744 -745 0.00363993644714355 0.0 0.0 0.0 745 -746 0.00364089012145996 0.0 0.0 0.0 746 -747 0.00361490249633789 0.0100000000000016 0.0100000000000016 0.0 747 -748 0.00366783142089844 0.0 0.0 0.0 748 -749 0.00363898277282715 0.0 0.0 0.0 749 -750 0.00363612174987793 0.00999999999999979 0.00999999999999979 0.0 750 -751 0.0036470890045166 0.0 0.0 0.0 751 -752 0.00362300872802734 0.00999999999999979 0.00999999999999979 0.0 752 -753 0.00365209579467773 0.0 0.0 0.0 753 -754 0.00367999076843262 0.0 0.0 0.0 754 -755 0.0036628246307373 0.00999999999999979 0.00999999999999979 0.0 755 -756 0.0293610095977783 0.0299999999999994 0.0299999999999994 0.0 756 -757 0.00370907783508301 0.0 0.0 0.0 757 -758 0.00370001792907715 0.0 0.0 0.0 758 -759 0.00371313095092773 0.00999999999999979 0.00999999999999979 0.0 759 -760 0.00373601913452148 0.0 0.0 0.0 760 -761 0.00375699996948242 0.0100000000000016 0.0100000000000016 0.0 761 -762 0.00379014015197754 0.0 0.0 0.0 762 -763 0.00373101234436035 0.0 0.0 0.0 763 -764 0.00369596481323242 0.00999999999999979 0.00999999999999979 0.0 764 -765 0.00373291969299316 0.0 0.0 0.0 765 -766 0.0037081241607666 0.0 0.0 0.0 766 -767 0.00425601005554199 0.00999999999999979 0.00999999999999979 0.0 767 -768 0.00375699996948242 0.0 0.0 0.0 768 -769 0.0037529468536377 0.00999999999999979 0.00999999999999979 0.0 769 -770 0.00371789932250977 0.0 0.0 0.0 770 -771 0.0037229061126709 0.0 0.0 0.0 771 -772 0.00371003150939941 0.00999999999999979 0.00999999999999979 0.0 772 -773 0.00370311737060547 0.0 0.0 0.0 773 -774 0.00365304946899414 0.0 0.0 0.0 774 -775 0.00366783142089844 0.00999999999999979 0.00999999999999979 0.0 775 -776 0.00362801551818848 0.0 0.0 0.0 776 -777 0.00360703468322754 0.00999999999999979 0.00999999999999979 0.0 777 -778 0.00365209579467773 0.0 0.0 0.0 778 -779 0.00366592407226562 0.0 0.0 0.0 779 -780 0.0036308765411377 0.00999999999999979 0.00999999999999979 0.0 780 -781 0.00458216667175293 0.0 0.0 0.0 781 -782 0.00462603569030762 0.0100000000000016 0.0100000000000016 0.0 782 -783 0.00362300872802734 0.0 0.0 0.0 783 -784 0.00360298156738281 0.0 0.0 0.0 784 -785 0.00363993644714355 0.00999999999999979 0.00999999999999979 0.0 785 -786 0.00367403030395508 0.0 0.0 0.0 786 -787 0.00365209579467773 0.0 0.0 0.0 787 -788 0.00373411178588867 0.00999999999999979 0.00999999999999979 0.0 788 -789 0.0038609504699707 0.0 0.0 0.0 789 -790 0.00365781784057617 0.00999999999999979 0.00999999999999979 0.0 790 -791 0.00362110137939453 0.0 0.0 0.0 791 -792 0.00369000434875488 0.0 0.0 0.0 792 -793 0.0307409763336182 0.0299999999999994 0.0299999999999994 0.0 793 -794 0.00374913215637207 0.00999999999999979 0.00999999999999979 0.0 794 -795 0.00369882583618164 0.0 0.0 0.0 795 -796 0.00370097160339355 0.00999999999999979 0.00999999999999979 0.0 796 -797 0.00375890731811523 0.0 0.0 0.0 797 -798 0.00378894805908203 0.0 0.0 0.0 798 -799 0.00387096405029297 0.0100000000000016 0.0100000000000016 0.0 799 -800 0.00368213653564453 0.0 0.0 0.0 800 -801 0.00372719764709473 0.0 0.0 0.0 801 -802 0.00373101234436035 0.00999999999999979 0.00999999999999979 0.0 802 -803 0.00372600555419922 0.0 0.0 0.0 803 -804 0.00373411178588867 0.00999999999999979 0.00999999999999979 0.0 804 -805 0.00366687774658203 0.0 0.0 0.0 805 -806 0.00370907783508301 0.0 0.0 0.0 806 -807 0.0036921501159668 0.00999999999999979 0.00999999999999979 0.0 807 -808 0.00377511978149414 0.0 0.0 0.0 808 -809 0.00365090370178223 0.0 0.0 0.0 809 -810 0.00374388694763184 0.00999999999999979 0.00999999999999979 0.0 810 -811 0.0036778450012207 0.0 0.0 0.0 811 -812 0.0036780834197998 0.00999999999999979 0.00999999999999979 0.0 812 -813 0.00362801551818848 0.0 0.0 0.0 813 -814 0.00365304946899414 0.0 0.0 0.0 814 -815 0.00363516807556152 0.00999999999999979 0.00999999999999979 0.0 815 -816 0.00369000434875488 0.0 0.0 0.0 816 -817 0.00373196601867676 0.0 0.0 0.0 817 -818 0.00360512733459473 0.00999999999999979 0.00999999999999979 0.0 818 -819 0.00361204147338867 0.0 0.0 0.0 819 -820 0.00362610816955566 0.0100000000000016 0.0100000000000016 0.0 820 -821 0.00365090370178223 0.0 0.0 0.0 821 -822 0.00360703468322754 0.0 0.0 0.0 822 -823 0.00362896919250488 0.00999999999999979 0.00999999999999979 0.0 823 -824 0.0036468505859375 0.0 0.0 0.0 824 -825 0.0036320686340332 0.0 0.0 0.0 825 -826 0.00362610816955566 0.00999999999999979 0.00999999999999979 0.0 826 -827 0.00365090370178223 0.0 0.0 0.0 827 -828 0.00363516807556152 0.00999999999999979 0.00999999999999979 0.0 828 -829 0.00368213653564453 0.0 0.0 0.0 829 -830 0.0292301177978516 0.0299999999999994 0.0299999999999994 0.0 830 -831 0.0037531852722168 0.0 0.0 0.0 831 -832 0.00371718406677246 0.00999999999999979 0.00999999999999979 0.0 832 -833 0.0037989616394043 0.0 0.0 0.0 833 -834 0.00615215301513672 0.0100000000000016 0.0100000000000016 0.0 834 -835 0.00377607345581055 0.0 0.0 0.0 835 -836 0.00370907783508301 0.0 0.0 0.0 836 -837 0.00371098518371582 0.00999999999999979 0.00999999999999979 0.0 837 -838 0.00375103950500488 0.0 0.0 0.0 838 -839 0.00372099876403809 0.0 0.0 0.0 839 -840 0.00375795364379883 0.00999999999999979 0.00999999999999979 0.0 840 -841 0.00370502471923828 0.0 0.0 0.0 841 -842 0.00369787216186523 0.00999999999999979 0.00999999999999979 0.0 842 -843 0.00369501113891602 0.0 0.0 0.0 843 -844 0.00370883941650391 0.0 0.0 0.0 844 -845 0.00371408462524414 0.00999999999999979 0.00999999999999979 0.0 845 -846 0.00368404388427734 0.0 0.0 0.0 846 -847 0.0038149356842041 0.0 0.0 0.0 847 -848 0.00367403030395508 0.00999999999999979 0.00999999999999979 0.0 848 -849 0.00365686416625977 0.0 0.0 0.0 849 -850 0.00383400917053223 0.00999999999999979 0.00999999999999979 0.0 850 -851 0.00394606590270996 0.0 0.0 0.0 851 -852 0.00365996360778809 0.0 0.0 0.0 852 -853 0.00365495681762695 0.00999999999999979 0.00999999999999979 0.0 853 -854 0.00370621681213379 0.0 0.0 0.0 854 -855 0.0036461353302002 0.0 0.0 0.0 855 -856 0.00365281105041504 0.00999999999999979 0.00999999999999979 0.0 856 -857 0.00365686416625977 0.0 0.0 0.0 857 -858 0.00365400314331055 0.0100000000000016 0.0100000000000016 0.0 858 -859 0.00363683700561523 0.0 0.0 0.0 859 -860 0.00365209579467773 0.0 0.0 0.0 860 -861 0.00365614891052246 0.00999999999999979 0.00999999999999979 0.0 861 -862 0.00419211387634277 0.0 0.0 0.0 862 -863 0.00362920761108398 0.0 0.0 0.0 863 -864 0.0062098503112793 0.0 0.0 0.0 864 -865 0.00613093376159668 0.00999999999999979 0.00999999999999979 0.0 865 -866 0.00604104995727539 0.0 0.0 0.0 866 -867 0.0290992259979248 0.0299999999999994 0.0299999999999994 0.0 867 -868 0.00398516654968262 0.00999999999999979 0.00999999999999979 0.0 868 -869 0.00370597839355469 0.0 0.0 0.0 869 -870 0.00374913215637207 0.0 0.0 0.0 870 -871 0.00371384620666504 0.0100000000000016 0.0100000000000016 0.0 871 -872 0.00374984741210938 0.0 0.0 0.0 872 -873 0.00371623039245605 0.00999999999999979 0.00999999999999979 0.0 873 -874 0.00370502471923828 0.0 0.0 0.0 874 -875 0.00371003150939941 0.0 0.0 0.0 875 -876 0.00368094444274902 0.00999999999999979 0.00999999999999979 0.0 876 -877 0.00372886657714844 0.0 0.0 0.0 877 -878 0.00374293327331543 0.0 0.0 0.0 878 -879 0.00372195243835449 0.00999999999999979 0.00999999999999979 0.0 879 -880 0.00373101234436035 0.0 0.0 0.0 880 -881 0.00373005867004395 0.00999999999999979 0.00999999999999979 0.0 881 -882 0.00367903709411621 0.0 0.0 0.0 882 -883 0.00371694564819336 0.0 0.0 0.0 883 -884 0.00383996963500977 0.00999999999999979 0.00999999999999979 0.0 884 -885 0.00367379188537598 0.0 0.0 0.0 885 -886 0.00366806983947754 0.0 0.0 0.0 886 -887 0.0036468505859375 0.00999999999999979 0.00999999999999979 0.0 887 -888 0.00361895561218262 0.0 0.0 0.0 888 -889 0.00358295440673828 0.00999999999999979 0.00999999999999979 0.0 889 -890 0.00368213653564453 0.0 0.0 0.0 890 -891 0.0056309700012207 0.0 0.0 0.0 891 -892 0.00402593612670898 0.0 0.0 0.0 892 -893 0.00361013412475586 0.0 0.0 0.0 893 -894 0.00365805625915527 0.00999999999999979 0.00999999999999979 0.0 894 -895 0.00363683700561523 0.0 0.0 0.0 895 -896 0.00369787216186523 0.0 0.0 0.0 896 -897 0.00366902351379395 0.00999999999999979 0.00999999999999979 0.0 897 -898 0.00373387336730957 0.0 0.0 0.0 898 -899 0.00364398956298828 0.00999999999999979 0.00999999999999979 0.0 899 -900 0.00363802909851074 0.0 0.0 0.0 900 -901 0.00359702110290527 0.0 0.0 0.0 901 -902 0.00368213653564453 0.00999999999999979 0.00999999999999979 0.0 902 -903 0.00368189811706543 0.0 0.0 0.0 903 -904 0.0309450626373291 0.0299999999999994 0.0299999999999994 0.0 904 -905 0.00368690490722656 0.0 0.0 0.0 905 -906 0.00371503829956055 0.00999999999999979 0.00999999999999979 0.0 906 -907 0.00382113456726074 0.0 0.0 0.0 907 -908 0.00382494926452637 0.0100000000000016 0.0100000000000016 0.0 908 -909 0.00365877151489258 0.0 0.0 0.0 909 -910 0.00371003150939941 0.0 0.0 0.0 910 -911 0.00370597839355469 0.00999999999999979 0.00999999999999979 0.0 911 -912 0.00368905067443848 0.0 0.0 0.0 912 -913 0.00370502471923828 0.0 0.0 0.0 913 -914 0.00374197959899902 0.00999999999999979 0.00999999999999979 0.0 914 -915 0.00374484062194824 0.0 0.0 0.0 915 -916 0.00371503829956055 0.00999999999999979 0.00999999999999979 0.0 916 -917 0.00371503829956055 0.0 0.0 0.0 917 -918 0.00377702713012695 0.0 0.0 0.0 918 -919 0.00374889373779297 0.00999999999999979 0.00999999999999979 0.0 919 -920 0.00369787216186523 0.0 0.0 0.0 920 -921 0.00368094444274902 0.0 0.0 0.0 921 -922 0.00360298156738281 0.0 0.0 0.0 922 -923 0.00363612174987793 0.0 0.0 0.0 923 -924 0.00366091728210449 0.00999999999999979 0.00999999999999979 0.0 924 -925 0.00364089012145996 0.0 0.0 0.0 925 -926 0.0036780834197998 0.0 0.0 0.0 926 -927 0.00362300872802734 0.00999999999999979 0.00999999999999979 0.0 927 -928 0.00365400314331055 0.0 0.0 0.0 928 -929 0.00363397598266602 0.0 0.0 0.0 929 -930 0.00364303588867188 0.0100000000000016 0.0100000000000016 0.0 930 -931 0.00363302230834961 0.0 0.0 0.0 931 -932 0.0036160945892334 0.00999999999999979 0.00999999999999979 0.0 932 -933 0.00370216369628906 0.0 0.0 0.0 933 -934 0.00365400314331055 0.0 0.0 0.0 934 -935 0.00365090370178223 0.00999999999999979 0.00999999999999979 0.0 935 -936 0.00369095802307129 0.0 0.0 0.0 936 -937 0.00361013412475586 0.0 0.0 0.0 937 -938 0.00361990928649902 0.00999999999999979 0.00999999999999979 0.0 938 -939 0.0036778450012207 0.0 0.0 0.0 939 -940 0.00370097160339355 0.00999999999999979 0.00999999999999979 0.0 940 -941 0.0296061038970947 0.0199999999999996 0.0199999999999996 0.0 941 -942 0.00377488136291504 0.00999999999999979 0.00999999999999979 0.0 942 -943 0.00529098510742188 0.0 0.0 0.0 943 -944 0.0046539306640625 0.0100000000000016 0.0100000000000016 0.0 944 -945 0.00372815132141113 0.0 0.0 0.0 945 -946 0.00383687019348145 0.00999999999999979 0.00999999999999979 0.0 946 -947 0.00372600555419922 0.0 0.0 0.0 947 -948 0.00372004508972168 0.0 0.0 0.0 948 -949 0.00370407104492188 0.00999999999999979 0.00999999999999979 0.0 949 -950 0.00370383262634277 0.0 0.0 0.0 950 -951 0.0037238597869873 0.00999999999999979 0.00999999999999979 0.0 951 -952 0.00373983383178711 0.00999999999999979 0.0 0.01 952 -953 0.00368404388427734 0.0 0.0 0.0 953 -954 0.00569581985473633 0.00999999999999979 0.00999999999999979 0.0 954 -955 0.00375699996948242 0.0 0.0 0.0 955 -956 0.00373697280883789 0.0 0.0 0.0 956 -957 0.00367903709411621 0.00999999999999979 0.00999999999999979 0.0 957 -958 0.00369405746459961 0.0 0.0 0.0 958 -959 0.00399684906005859 0.00999999999999979 0.00999999999999979 0.0 959 -960 0.00383996963500977 0.0 0.0 0.0 960 -961 0.00363612174987793 0.0 0.0 0.0 961 -962 0.00361013412475586 0.00999999999999979 0.00999999999999979 0.0 962 -963 0.00373411178588867 0.0 0.0 0.0 963 -964 0.00365495681762695 0.0 0.0 0.0 964 -965 0.0036311149597168 0.00999999999999979 0.00999999999999979 0.0 965 -966 0.00362300872802734 0.0 0.0 0.0 966 -967 0.00367403030395508 0.0100000000000016 0.0100000000000016 0.0 967 -968 0.00365304946899414 0.0 0.0 0.0 968 -969 0.00368213653564453 0.0 0.0 0.0 969 -970 0.0036468505859375 0.00999999999999979 0.00999999999999979 0.0 970 -971 0.00365900993347168 0.0 0.0 0.0 971 -972 0.00365519523620605 0.0 0.0 0.0 972 -973 0.00365710258483887 0.00999999999999979 0.00999999999999979 0.0 973 -974 0.00362801551818848 0.0 0.0 0.0 974 -975 0.00365090370178223 0.0 0.0 0.0 975 -976 0.00363993644714355 0.0 0.0 0.0 976 -977 0.00367403030395508 0.0 0.0 0.0 977 -978 0.0291531085968018 0.0299999999999994 0.0299999999999994 0.0 978 -979 0.00371599197387695 0.00999999999999979 0.00999999999999979 0.0 979 -980 0.00370097160339355 0.0 0.0 0.0 980 -981 0.00372910499572754 0.0 0.0 0.0 981 -982 0.00373220443725586 0.0100000000000016 0.0100000000000016 0.0 982 -983 0.00378298759460449 0.0 0.0 0.0 983 -984 0.00374412536621094 0.0 0.0 0.0 984 -985 0.00372099876403809 0.00999999999999979 0.00999999999999979 0.0 985 -986 0.00369501113891602 0.0 0.0 0.0 986 -987 0.0042259693145752 0.00999999999999979 0.00999999999999979 0.0 987 -988 0.00376200675964355 0.0 0.0 0.0 988 -989 0.00373697280883789 0.0 0.0 0.0 989 -990 0.00372409820556641 0.00999999999999979 0.00999999999999979 0.0 990 -991 0.00370192527770996 0.0 0.0 0.0 991 -992 0.00368189811706543 0.0 0.0 0.0 992 -993 0.00370502471923828 0.00999999999999979 0.00999999999999979 0.0 993 -994 0.00371217727661133 0.0 0.0 0.0 994 -995 0.0036919116973877 0.00999999999999979 0.00999999999999979 0.0 995 -996 0.00366711616516113 0.0 0.0 0.0 996 -997 0.00371313095092773 0.0 0.0 0.0 997 -998 0.00365209579467773 0.00999999999999979 0.00999999999999979 0.0 998 -999 0.00362896919250488 0.0 0.0 0.0 999 -1000 0.00367307662963867 0.0 0.0 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log deleted file mode 100644 index d8a6aa31..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log +++ /dev/null @@ -1,82 +0,0 @@ -========================== 2009-04-01T16:46:41 CEST =========================== -Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux]. -Running 'ParserBenchmarkYAML' for 1000 iterations/method (compare_time=real) -=============================================================================== - -This first run is only for warmup. -ParserBenchmarkYAML#parser: - real total user system -sum 4.506546021 4.490000000 4.480000000 0.010000000 -min 0.003598928 0.000000000 0.000000000 0.000000000 -std- 0.000288588 -0.001817113 -0.001826296 -0.000306228 -mean 0.004506546 0.004490000 0.004480000 0.000010000 -std+ 0.008724504 0.010797113 0.010786296 0.000326228 -max 0.042540073 0.040000000 0.040000000 0.010000000 -std 0.004217958 0.006307113 0.006306296 0.000316228 -std% 93.596247306 140.470232048 140.765535944 3162.277660168 -harm 0.003882332 nan nan nan -geo 0.004019118 0.000000000 0.000000000 0.000000000 -q1 0.003660917 0.000000000 0.000000000 0.000000000 -med 0.003705978 0.000000000 0.000000000 0.000000000 -q3 0.003748715 0.010000000 0.010000000 0.000000000 - 1000 221.89943 0.004506546 - calls calls/sec secs/call - - 0.04059 -| - 0.03670 -| - 0.03280 -| - 0.02891 -|* - 0.02502 -| - 0.02112 -| - 0.01723 -| - 0.01333 -| - 0.00944 -| - 0.00555 -|************************************************** - -Outliers detected with box plot algo (median=0.00371, iqr=0.00009, factor=3.00): -high=56 very_high=119 - -Ljung-Box statistics: q=433.20488 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -ParserBenchmarkYAML#parser: - real total user system -sum 4.454077959 4.430000000 4.420000000 0.010000000 -min 0.003582954 0.000000000 0.000000000 0.000000000 -std- 0.000263948 -0.001903657 -0.001912749 -0.000306228 -mean 0.004454078 0.004430000 0.004420000 0.000010000 -std+ 0.008644208 0.010763657 0.010752749 0.000326228 -max 0.035927057 0.040000000 0.040000000 0.010000000 -std 0.004190130 0.006333657 0.006332749 0.000316228 -std% 94.074019869 142.971948832 143.274853190 3162.277660168 -harm 0.003836471 nan nan nan -geo 0.003968258 0.000000000 0.000000000 0.000000000 -q1 0.003650367 0.000000000 0.000000000 0.000000000 -med 0.003690004 0.000000000 0.000000000 0.000000000 -q3 0.003731966 0.010000000 0.010000000 0.000000000 - 1000 224.51336 0.004454078 - calls calls/sec secs/call - - 0.03431 -| - 0.03108 -|* - 0.02784 -|* - 0.02461 -| - 0.02137 -| - 0.01814 -| - 0.01490 -| - 0.01167 -| - 0.00843 -| - 0.00520 -|************************************************** - -Outliers detected with box plot algo (median=0.00369, iqr=0.00008, factor=3.00): -high=58 very_high=100 - -Ljung-Box statistics: q=451.12745 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -========================== 2009-04-01T16:46:54 CEST =========================== - -Writing measurement data file '/data/scm/json/benchmarks/data/ParserBenchmarkYAML#parser.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/ParserBenchmarkYAML#parser-autocorrelation.dat'. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/generator_benchmark.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/generator_benchmark.rb deleted file mode 100755 index 1d29e631..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/generator_benchmark.rb +++ /dev/null @@ -1,165 +0,0 @@ -#!/usr/bin/env ruby -# CODING: UTF-8 - -require 'rbconfig' -RUBY_PATH=File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']) -RAKE_PATH=File.join(Config::CONFIG['bindir'], 'rake') -require 'bullshit' -case ARGV.first -when 'ext' - require 'json/ext' -when 'pure' - require 'json/pure' -when 'rails' - require 'active_support' -end - -module JSON - def self.[](*) end -end - -module GeneratorBenchmarkCommon - include JSON - - def setup - a = [ nil, false, true, "fÖßÄr", [ "n€st€d", true ], { "fooß" => "bär", "quux" => true } ] - puts a.to_json - @big = a * 100 - end - - def generic_reset_method - @result and @result.size > 2 + 6 * @big.size or raise @result.to_s - end -end - -module JSONGeneratorCommon - include GeneratorBenchmarkCommon - - def benchmark_generator_fast - @result = JSON.fast_generate(@big) - end - - alias reset_benchmark_generator_fast generic_reset_method - - def benchmark_generator_safe - @result = JSON.generate(@big) - end - - alias reset_benchmark_generator_safe generic_reset_method - - def benchmark_generator_pretty - @result = JSON.pretty_generate(@big) - end - - alias reset_benchmark_generator_pretty generic_reset_method -end - -class GeneratorBenchmarkExt < Bullshit::RepeatCase - include JSONGeneratorCommon - - warmup yes - iterations 1000 - - truncate_data do - alpha_level 0.05 - window_size 50 - slope_angle 0.1 - end - - autocorrelation do - alpha_level 0.05 - max_lags 50 - file yes - end - - - output_dir File.join(File.dirname(__FILE__), 'data') - output_filename benchmark_name + '.log' - data_file yes - histogram yes -end - -class GeneratorBenchmarkPure < Bullshit::RepeatCase - include JSONGeneratorCommon - - warmup yes - iterations 1000 - - truncate_data do - alpha_level 0.05 - window_size 50 - slope_angle 0.1 - end - - autocorrelation do - alpha_level 0.05 - max_lags 50 - file yes - end - - output_dir File.join(File.dirname(__FILE__), 'data') - output_filename benchmark_name + '.log' - data_file yes - histogram yes -end - -class GeneratorBenchmarkRails < Bullshit::RepeatCase - include GeneratorBenchmarkCommon - - warmup yes - iterations 1000 - - truncate_data do - alpha_level 0.05 - window_size 50 - slope_angle 0.1 - end - - autocorrelation do - alpha_level 0.05 - max_lags 50 - file yes - end - - output_dir File.join(File.dirname(__FILE__), 'data') - output_filename benchmark_name + '.log' - data_file yes - histogram yes - - def benchmark_generator - @result = @big.to_json - end - - alias reset_benchmark_generator generic_reset_method -end - -if $0 == __FILE__ - Bullshit::Case.autorun false - - case ARGV.first - when 'ext' - GeneratorBenchmarkExt.run - when 'pure' - GeneratorBenchmarkPure.run - when 'rails' - GeneratorBenchmarkRails.run - else - system "#{RAKE_PATH} clean" - system "#{RUBY_PATH} #$0 rails" - system "#{RUBY_PATH} #$0 pure" - system "#{RAKE_PATH} compile_ext" - system "#{RUBY_PATH} #$0 ext" - Bullshit.compare do - output_filename File.join(File.dirname(__FILE__), 'data', 'GeneratorBenchmarkComparison.log') - - benchmark GeneratorBenchmarkExt, :generator_fast, :load => yes - benchmark GeneratorBenchmarkExt, :generator_safe, :load => yes - benchmark GeneratorBenchmarkExt, :generator_pretty, :load => yes - benchmark GeneratorBenchmarkPure, :generator_fast, :load => yes - benchmark GeneratorBenchmarkPure, :generator_safe, :load => yes - benchmark GeneratorBenchmarkPure, :generator_pretty, :load => yes - benchmark GeneratorBenchmarkRails, :generator, :load => yes - end - end -end - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/parser_benchmark.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/parser_benchmark.rb deleted file mode 100755 index 38af54d1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/benchmarks/parser_benchmark.rb +++ /dev/null @@ -1,197 +0,0 @@ -#!/usr/bin/env ruby -# CODING: UTF-8 - -require 'rbconfig' -RUBY_PATH=File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']) -RAKE_PATH=File.join(Config::CONFIG['bindir'], 'rake') -require 'bullshit' -case ARGV.first -when 'ext' - require 'json/ext' -when 'pure' - require 'json/pure' -when 'yaml' - require 'yaml' - require 'json/pure' -when 'rails' - require 'active_support' - require 'json/pure' -else - require 'json/pure' -end - -module ParserBenchmarkCommon - include JSON - - def setup - a = [ nil, false, true, "fÖß\nÄr", [ "n€st€d", true ], { "fooß" => "bär", "qu\r\nux" => true } ] - @big = a * 100 - @json = JSON.generate(@big) - end - - def generic_reset_method - @result == @big or raise "not equal" - end -end - -class ParserBenchmarkExt < Bullshit::RepeatCase - include ParserBenchmarkCommon - - warmup yes - iterations 1000 - - truncate_data do - alpha_level 0.05 - window_size 50 - slope_angle 0.1 - end - - autocorrelation do - alpha_level 0.05 - max_lags 50 - file yes - end - - output_dir File.join(File.dirname(__FILE__), 'data') - output_filename benchmark_name + '.log' - data_file yes - histogram yes - - def benchmark_parser - @result = JSON.parse(@json) - end - - alias reset_parser generic_reset_method -end - -class ParserBenchmarkPure < Bullshit::RepeatCase - include ParserBenchmarkCommon - - warmup yes - iterations 1000 - - truncate_data do - alpha_level 0.05 - window_size 50 - slope_angle 0.1 - end - - autocorrelation do - alpha_level 0.05 - max_lags 50 - file yes - end - - output_dir File.join(File.dirname(__FILE__), 'data') - output_filename benchmark_name + '.log' - data_file yes - histogram yes - - def benchmark_parser - @result = JSON.parse(@json) - end - - alias reset_parser generic_reset_method -end - -class ParserBenchmarkYAML < Bullshit::RepeatCase - warmup yes - iterations 1000 - - truncate_data do - alpha_level 0.05 - window_size 50 - slope_angle 0.1 - end - - autocorrelation do - alpha_level 0.05 - max_lags 50 - file yes - end - - output_dir File.join(File.dirname(__FILE__), 'data') - output_filename benchmark_name + '.log' - data_file yes - histogram yes - - def setup - a = [ nil, false, true, "fÖß\nÄr", [ "n€st€d", true ], { "fooß" => "bär", "qu\r\nux" => true } ] - @big = a * 100 - @json = JSON.pretty_generate(@big) - end - - def benchmark_parser - @result = YAML.load(@json) - end - - def generic_reset_method - @result == @big or raise "not equal" - end -end - -class ParserBenchmarkRails < Bullshit::RepeatCase - warmup yes - iterations 1000 - - truncate_data do - alpha_level 0.05 - window_size 50 - slope_angle 0.1 - end - - autocorrelation do - alpha_level 0.05 - max_lags 50 - file yes - end - - output_dir File.join(File.dirname(__FILE__), 'data') - output_filename benchmark_name + '.log' - data_file yes - histogram yes - - def setup - a = [ nil, false, true, "fÖß\nÄr", [ "n€st€d", true ], { "fooß" => "bär", "qu\r\nux" => true } ] - @big = a * 100 - @json = JSON.generate(@big) - end - - def benchmark_parser - @result = ActiveSupport::JSON.decode(@json) - end - - def generic_reset_method - @result == @big or raise "not equal" - end -end - -if $0 == __FILE__ - Bullshit::Case.autorun false - - case ARGV.first - when 'ext' - ParserBenchmarkExt.run - when 'pure' - ParserBenchmarkPure.run - when 'yaml' - ParserBenchmarkYAML.run - when 'rails' - ParserBenchmarkRails.run - else - system "#{RAKE_PATH} clean" - system "#{RUBY_PATH} #$0 yaml" - system "#{RUBY_PATH} #$0 rails" - system "#{RUBY_PATH} #$0 pure" - system "#{RAKE_PATH} compile_ext" - system "#{RUBY_PATH} #$0 ext" - Bullshit.compare do - output_filename File.join(File.dirname(__FILE__), 'data', 'ParserBenchmarkComparison.log') - - benchmark ParserBenchmarkExt, :parser, :load => yes - benchmark ParserBenchmarkPure, :parser, :load => yes - benchmark ParserBenchmarkYAML, :parser, :load => yes - benchmark ParserBenchmarkRails, :parser, :load => yes - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/bin/edit_json.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/bin/edit_json.rb deleted file mode 100755 index 04a8189d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/bin/edit_json.rb +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env ruby -require 'json/editor' - -filename, encoding = ARGV -JSON::Editor.start(encoding) do |window| - if filename - window.file_open(filename) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/bin/prettify_json.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/bin/prettify_json.rb deleted file mode 100755 index 5e1f8062..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/bin/prettify_json.rb +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env ruby - -require 'json' -require 'fileutils' -include FileUtils - -# Parses the argument array _args_, according to the pattern _s_, to -# retrieve the single character command line options from it. If _s_ is -# 'xy:' an option '-x' without an option argument is searched, and an -# option '-y foo' with an option argument ('foo'). -# -# An option hash is returned with all found options set to true or the -# found option argument. -def go(s, args = ARGV) - b, v = s.scan(/(.)(:?)/).inject([{},{}]) { |t,(o,a)| - t[a.empty? ? 0 : 1][o] = a.empty? ? false : nil - t - } - while a = args.shift - a !~ /\A-(.+)/ and args.unshift a and break - p = $1 - until p == '' - o = p.slice!(0, 1) - if v.key?(o) - v[o] = if p == '' then args.shift or break 1 else p end - break - elsif b.key?(o) - b[o] = true - else - args.unshift a - break 1 - end - end and break - end - b.merge(v) -end - -opts = go 'slhi:', args = ARGV.dup -if opts['h'] || opts['l'] && opts['s'] - puts < - - - Javascript Example - - - - - -

        Fetching object from server

        -
        - Wait...
        - -
        - - - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/data/prototype.js b/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/data/prototype.js deleted file mode 100644 index 5c734629..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json-1.2.0/data/prototype.js +++ /dev/null @@ -1,4184 +0,0 @@ -/* Prototype JavaScript framework, version 1.6.0 - * (c) 2005-2007 Sam Stephenson - * - * Prototype is freely distributable under the terms of an MIT-style license. - * For details, see the Prototype web site: http://www.prototypejs.org/ - * - *--------------------------------------------------------------------------*/ - -var Prototype = { - Version: '1.6.0', - - Browser: { - IE: !!(window.attachEvent && !window.opera), - Opera: !!window.opera, - WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, - Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1, - MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) - }, - - BrowserFeatures: { - XPath: !!document.evaluate, - ElementExtensions: !!window.HTMLElement, - SpecificElementExtensions: - document.createElement('div').__proto__ && - document.createElement('div').__proto__ !== - document.createElement('form').__proto__ - }, - - ScriptFragment: ']*>([\\S\\s]*?)<\/script>', - JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, - - emptyFunction: function() { }, - K: function(x) { return x } -}; - -if (Prototype.Browser.MobileSafari) - Prototype.BrowserFeatures.SpecificElementExtensions = false; - -if (Prototype.Browser.WebKit) - Prototype.BrowserFeatures.XPath = false; - -/* Based on Alex Arnell's inheritance implementation. */ -var Class = { - create: function() { - var parent = null, properties = $A(arguments); - if (Object.isFunction(properties[0])) - parent = properties.shift(); - - function klass() { - this.initialize.apply(this, arguments); - } - - Object.extend(klass, Class.Methods); - klass.superclass = parent; - klass.subclasses = []; - - if (parent) { - var subclass = function() { }; - subclass.prototype = parent.prototype; - klass.prototype = new subclass; - parent.subclasses.push(klass); - } - - for (var i = 0; i < properties.length; i++) - klass.addMethods(properties[i]); - - if (!klass.prototype.initialize) - klass.prototype.initialize = Prototype.emptyFunction; - - klass.prototype.constructor = klass; - - return klass; - } -}; - -Class.Methods = { - addMethods: function(source) { - var ancestor = this.superclass && this.superclass.prototype; - var properties = Object.keys(source); - - if (!Object.keys({ toString: true }).length) - properties.push("toString", "valueOf"); - - for (var i = 0, length = properties.length; i < length; i++) { - var property = properties[i], value = source[property]; - if (ancestor && Object.isFunction(value) && - value.argumentNames().first() == "$super") { - var method = value, value = Object.extend((function(m) { - return function() { return ancestor[m].apply(this, arguments) }; - })(property).wrap(method), { - valueOf: function() { return method }, - toString: function() { return method.toString() } - }); - } - this.prototype[property] = value; - } - - return this; - } -}; - -var Abstract = { }; - -Object.extend = function(destination, source) { - for (var property in source) - destination[property] = source[property]; - return destination; -}; - -Object.extend(Object, { - inspect: function(object) { - try { - if (object === undefined) return 'undefined'; - if (object === null) return 'null'; - return object.inspect ? object.inspect() : object.toString(); - } catch (e) { - if (e instanceof RangeError) return '...'; - throw e; - } - }, - - toJSON: function(object) { - var type = typeof object; - switch (type) { - case 'undefined': - case 'function': - case 'unknown': return; - case 'boolean': return object.toString(); - } - - if (object === null) return 'null'; - if (object.toJSON) return object.toJSON(); - if (Object.isElement(object)) return; - - var results = []; - for (var property in object) { - var value = Object.toJSON(object[property]); - if (value !== undefined) - results.push(property.toJSON() + ': ' + value); - } - - return '{' + results.join(', ') + '}'; - }, - - toQueryString: function(object) { - return $H(object).toQueryString(); - }, - - toHTML: function(object) { - return object && object.toHTML ? object.toHTML() : String.interpret(object); - }, - - keys: function(object) { - var keys = []; - for (var property in object) - keys.push(property); - return keys; - }, - - values: function(object) { - var values = []; - for (var property in object) - values.push(object[property]); - return values; - }, - - clone: function(object) { - return Object.extend({ }, object); - }, - - isElement: function(object) { - return object && object.nodeType == 1; - }, - - isArray: function(object) { - return object && object.constructor === Array; - }, - - isHash: function(object) { - return object instanceof Hash; - }, - - isFunction: function(object) { - return typeof object == "function"; - }, - - isString: function(object) { - return typeof object == "string"; - }, - - isNumber: function(object) { - return typeof object == "number"; - }, - - isUndefined: function(object) { - return typeof object == "undefined"; - } -}); - -Object.extend(Function.prototype, { - argumentNames: function() { - var names = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip"); - return names.length == 1 && !names[0] ? [] : names; - }, - - bind: function() { - if (arguments.length < 2 && arguments[0] === undefined) return this; - var __method = this, args = $A(arguments), object = args.shift(); - return function() { - return __method.apply(object, args.concat($A(arguments))); - } - }, - - bindAsEventListener: function() { - var __method = this, args = $A(arguments), object = args.shift(); - return function(event) { - return __method.apply(object, [event || window.event].concat(args)); - } - }, - - curry: function() { - if (!arguments.length) return this; - var __method = this, args = $A(arguments); - return function() { - return __method.apply(this, args.concat($A(arguments))); - } - }, - - delay: function() { - var __method = this, args = $A(arguments), timeout = args.shift() * 1000; - return window.setTimeout(function() { - return __method.apply(__method, args); - }, timeout); - }, - - wrap: function(wrapper) { - var __method = this; - return function() { - return wrapper.apply(this, [__method.bind(this)].concat($A(arguments))); - } - }, - - methodize: function() { - if (this._methodized) return this._methodized; - var __method = this; - return this._methodized = function() { - return __method.apply(null, [this].concat($A(arguments))); - }; - } -}); - -Function.prototype.defer = Function.prototype.delay.curry(0.01); - -Date.prototype.toJSON = function() { - return '"' + this.getUTCFullYear() + '-' + - (this.getUTCMonth() + 1).toPaddedString(2) + '-' + - this.getUTCDate().toPaddedString(2) + 'T' + - this.getUTCHours().toPaddedString(2) + ':' + - this.getUTCMinutes().toPaddedString(2) + ':' + - this.getUTCSeconds().toPaddedString(2) + 'Z"'; -}; - -var Try = { - these: function() { - var returnValue; - - for (var i = 0, length = arguments.length; i < length; i++) { - var lambda = arguments[i]; - try { - returnValue = lambda(); - break; - } catch (e) { } - } - - return returnValue; - } -}; - -RegExp.prototype.match = RegExp.prototype.test; - -RegExp.escape = function(str) { - return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); -}; - -/*--------------------------------------------------------------------------*/ - -var PeriodicalExecuter = Class.create({ - initialize: function(callback, frequency) { - this.callback = callback; - this.frequency = frequency; - this.currentlyExecuting = false; - - this.registerCallback(); - }, - - registerCallback: function() { - this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); - }, - - execute: function() { - this.callback(this); - }, - - stop: function() { - if (!this.timer) return; - clearInterval(this.timer); - this.timer = null; - }, - - onTimerEvent: function() { - if (!this.currentlyExecuting) { - try { - this.currentlyExecuting = true; - this.execute(); - } finally { - this.currentlyExecuting = false; - } - } - } -}); -Object.extend(String, { - interpret: function(value) { - return value == null ? '' : String(value); - }, - specialChar: { - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '\\': '\\\\' - } -}); - -Object.extend(String.prototype, { - gsub: function(pattern, replacement) { - var result = '', source = this, match; - replacement = arguments.callee.prepareReplacement(replacement); - - while (source.length > 0) { - if (match = source.match(pattern)) { - result += source.slice(0, match.index); - result += String.interpret(replacement(match)); - source = source.slice(match.index + match[0].length); - } else { - result += source, source = ''; - } - } - return result; - }, - - sub: function(pattern, replacement, count) { - replacement = this.gsub.prepareReplacement(replacement); - count = count === undefined ? 1 : count; - - return this.gsub(pattern, function(match) { - if (--count < 0) return match[0]; - return replacement(match); - }); - }, - - scan: function(pattern, iterator) { - this.gsub(pattern, iterator); - return String(this); - }, - - truncate: function(length, truncation) { - length = length || 30; - truncation = truncation === undefined ? '...' : truncation; - return this.length > length ? - this.slice(0, length - truncation.length) + truncation : String(this); - }, - - strip: function() { - return this.replace(/^\s+/, '').replace(/\s+$/, ''); - }, - - stripTags: function() { - return this.replace(/<\/?[^>]+>/gi, ''); - }, - - stripScripts: function() { - return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); - }, - - extractScripts: function() { - var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); - var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); - return (this.match(matchAll) || []).map(function(scriptTag) { - return (scriptTag.match(matchOne) || ['', ''])[1]; - }); - }, - - evalScripts: function() { - return this.extractScripts().map(function(script) { return eval(script) }); - }, - - escapeHTML: function() { - var self = arguments.callee; - self.text.data = this; - return self.div.innerHTML; - }, - - unescapeHTML: function() { - var div = new Element('div'); - div.innerHTML = this.stripTags(); - return div.childNodes[0] ? (div.childNodes.length > 1 ? - $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) : - div.childNodes[0].nodeValue) : ''; - }, - - toQueryParams: function(separator) { - var match = this.strip().match(/([^?#]*)(#.*)?$/); - if (!match) return { }; - - return match[1].split(separator || '&').inject({ }, function(hash, pair) { - if ((pair = pair.split('='))[0]) { - var key = decodeURIComponent(pair.shift()); - var value = pair.length > 1 ? pair.join('=') : pair[0]; - if (value != undefined) value = decodeURIComponent(value); - - if (key in hash) { - if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; - hash[key].push(value); - } - else hash[key] = value; - } - return hash; - }); - }, - - toArray: function() { - return this.split(''); - }, - - succ: function() { - return this.slice(0, this.length - 1) + - String.fromCharCode(this.charCodeAt(this.length - 1) + 1); - }, - - times: function(count) { - return count < 1 ? '' : new Array(count + 1).join(this); - }, - - camelize: function() { - var parts = this.split('-'), len = parts.length; - if (len == 1) return parts[0]; - - var camelized = this.charAt(0) == '-' - ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) - : parts[0]; - - for (var i = 1; i < len; i++) - camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1); - - return camelized; - }, - - capitalize: function() { - return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); - }, - - underscore: function() { - return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase(); - }, - - dasherize: function() { - return this.gsub(/_/,'-'); - }, - - inspect: function(useDoubleQuotes) { - var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) { - var character = String.specialChar[match[0]]; - return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16); - }); - if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; - return "'" + escapedString.replace(/'/g, '\\\'') + "'"; - }, - - toJSON: function() { - return this.inspect(true); - }, - - unfilterJSON: function(filter) { - return this.sub(filter || Prototype.JSONFilter, '#{1}'); - }, - - isJSON: function() { - var str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); - return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); - }, - - evalJSON: function(sanitize) { - var json = this.unfilterJSON(); - try { - if (!sanitize || json.isJSON()) return eval('(' + json + ')'); - } catch (e) { } - throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); - }, - - include: function(pattern) { - return this.indexOf(pattern) > -1; - }, - - startsWith: function(pattern) { - return this.indexOf(pattern) === 0; - }, - - endsWith: function(pattern) { - var d = this.length - pattern.length; - return d >= 0 && this.lastIndexOf(pattern) === d; - }, - - empty: function() { - return this == ''; - }, - - blank: function() { - return /^\s*$/.test(this); - }, - - interpolate: function(object, pattern) { - return new Template(this, pattern).evaluate(object); - } -}); - -if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, { - escapeHTML: function() { - return this.replace(/&/g,'&').replace(//g,'>'); - }, - unescapeHTML: function() { - return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>'); - } -}); - -String.prototype.gsub.prepareReplacement = function(replacement) { - if (Object.isFunction(replacement)) return replacement; - var template = new Template(replacement); - return function(match) { return template.evaluate(match) }; -}; - -String.prototype.parseQuery = String.prototype.toQueryParams; - -Object.extend(String.prototype.escapeHTML, { - div: document.createElement('div'), - text: document.createTextNode('') -}); - -with (String.prototype.escapeHTML) div.appendChild(text); - -var Template = Class.create({ - initialize: function(template, pattern) { - this.template = template.toString(); - this.pattern = pattern || Template.Pattern; - }, - - evaluate: function(object) { - if (Object.isFunction(object.toTemplateReplacements)) - object = object.toTemplateReplacements(); - - return this.template.gsub(this.pattern, function(match) { - if (object == null) return ''; - - var before = match[1] || ''; - if (before == '\\') return match[2]; - - var ctx = object, expr = match[3]; - var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/, match = pattern.exec(expr); - if (match == null) return before; - - while (match != null) { - var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1]; - ctx = ctx[comp]; - if (null == ctx || '' == match[3]) break; - expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); - match = pattern.exec(expr); - } - - return before + String.interpret(ctx); - }.bind(this)); - } -}); -Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; - -var $break = { }; - -var Enumerable = { - each: function(iterator, context) { - var index = 0; - iterator = iterator.bind(context); - try { - this._each(function(value) { - iterator(value, index++); - }); - } catch (e) { - if (e != $break) throw e; - } - return this; - }, - - eachSlice: function(number, iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var index = -number, slices = [], array = this.toArray(); - while ((index += number) < array.length) - slices.push(array.slice(index, index+number)); - return slices.collect(iterator, context); - }, - - all: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result = true; - this.each(function(value, index) { - result = result && !!iterator(value, index); - if (!result) throw $break; - }); - return result; - }, - - any: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result = false; - this.each(function(value, index) { - if (result = !!iterator(value, index)) - throw $break; - }); - return result; - }, - - collect: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var results = []; - this.each(function(value, index) { - results.push(iterator(value, index)); - }); - return results; - }, - - detect: function(iterator, context) { - iterator = iterator.bind(context); - var result; - this.each(function(value, index) { - if (iterator(value, index)) { - result = value; - throw $break; - } - }); - return result; - }, - - findAll: function(iterator, context) { - iterator = iterator.bind(context); - var results = []; - this.each(function(value, index) { - if (iterator(value, index)) - results.push(value); - }); - return results; - }, - - grep: function(filter, iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var results = []; - - if (Object.isString(filter)) - filter = new RegExp(filter); - - this.each(function(value, index) { - if (filter.match(value)) - results.push(iterator(value, index)); - }); - return results; - }, - - include: function(object) { - if (Object.isFunction(this.indexOf)) - if (this.indexOf(object) != -1) return true; - - var found = false; - this.each(function(value) { - if (value == object) { - found = true; - throw $break; - } - }); - return found; - }, - - inGroupsOf: function(number, fillWith) { - fillWith = fillWith === undefined ? null : fillWith; - return this.eachSlice(number, function(slice) { - while(slice.length < number) slice.push(fillWith); - return slice; - }); - }, - - inject: function(memo, iterator, context) { - iterator = iterator.bind(context); - this.each(function(value, index) { - memo = iterator(memo, value, index); - }); - return memo; - }, - - invoke: function(method) { - var args = $A(arguments).slice(1); - return this.map(function(value) { - return value[method].apply(value, args); - }); - }, - - max: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result; - this.each(function(value, index) { - value = iterator(value, index); - if (result == undefined || value >= result) - result = value; - }); - return result; - }, - - min: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result; - this.each(function(value, index) { - value = iterator(value, index); - if (result == undefined || value < result) - result = value; - }); - return result; - }, - - partition: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var trues = [], falses = []; - this.each(function(value, index) { - (iterator(value, index) ? - trues : falses).push(value); - }); - return [trues, falses]; - }, - - pluck: function(property) { - var results = []; - this.each(function(value) { - results.push(value[property]); - }); - return results; - }, - - reject: function(iterator, context) { - iterator = iterator.bind(context); - var results = []; - this.each(function(value, index) { - if (!iterator(value, index)) - results.push(value); - }); - return results; - }, - - sortBy: function(iterator, context) { - iterator = iterator.bind(context); - return this.map(function(value, index) { - return {value: value, criteria: iterator(value, index)}; - }).sort(function(left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - }).pluck('value'); - }, - - toArray: function() { - return this.map(); - }, - - zip: function() { - var iterator = Prototype.K, args = $A(arguments); - if (Object.isFunction(args.last())) - iterator = args.pop(); - - var collections = [this].concat(args).map($A); - return this.map(function(value, index) { - return iterator(collections.pluck(index)); - }); - }, - - size: function() { - return this.toArray().length; - }, - - inspect: function() { - return '#'; - } -}; - -Object.extend(Enumerable, { - map: Enumerable.collect, - find: Enumerable.detect, - select: Enumerable.findAll, - filter: Enumerable.findAll, - member: Enumerable.include, - entries: Enumerable.toArray, - every: Enumerable.all, - some: Enumerable.any -}); -function $A(iterable) { - if (!iterable) return []; - if (iterable.toArray) return iterable.toArray(); - var length = iterable.length, results = new Array(length); - while (length--) results[length] = iterable[length]; - return results; -} - -if (Prototype.Browser.WebKit) { - function $A(iterable) { - if (!iterable) return []; - if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') && - iterable.toArray) return iterable.toArray(); - var length = iterable.length, results = new Array(length); - while (length--) results[length] = iterable[length]; - return results; - } -} - -Array.from = $A; - -Object.extend(Array.prototype, Enumerable); - -if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse; - -Object.extend(Array.prototype, { - _each: function(iterator) { - for (var i = 0, length = this.length; i < length; i++) - iterator(this[i]); - }, - - clear: function() { - this.length = 0; - return this; - }, - - first: function() { - return this[0]; - }, - - last: function() { - return this[this.length - 1]; - }, - - compact: function() { - return this.select(function(value) { - return value != null; - }); - }, - - flatten: function() { - return this.inject([], function(array, value) { - return array.concat(Object.isArray(value) ? - value.flatten() : [value]); - }); - }, - - without: function() { - var values = $A(arguments); - return this.select(function(value) { - return !values.include(value); - }); - }, - - reverse: function(inline) { - return (inline !== false ? this : this.toArray())._reverse(); - }, - - reduce: function() { - return this.length > 1 ? this : this[0]; - }, - - uniq: function(sorted) { - return this.inject([], function(array, value, index) { - if (0 == index || (sorted ? array.last() != value : !array.include(value))) - array.push(value); - return array; - }); - }, - - intersect: function(array) { - return this.uniq().findAll(function(item) { - return array.detect(function(value) { return item === value }); - }); - }, - - clone: function() { - return [].concat(this); - }, - - size: function() { - return this.length; - }, - - inspect: function() { - return '[' + this.map(Object.inspect).join(', ') + ']'; - }, - - toJSON: function() { - var results = []; - this.each(function(object) { - var value = Object.toJSON(object); - if (value !== undefined) results.push(value); - }); - return '[' + results.join(', ') + ']'; - } -}); - -// use native browser JS 1.6 implementation if available -if (Object.isFunction(Array.prototype.forEach)) - Array.prototype._each = Array.prototype.forEach; - -if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) { - i || (i = 0); - var length = this.length; - if (i < 0) i = length + i; - for (; i < length; i++) - if (this[i] === item) return i; - return -1; -}; - -if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) { - i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; - var n = this.slice(0, i).reverse().indexOf(item); - return (n < 0) ? n : i - n - 1; -}; - -Array.prototype.toArray = Array.prototype.clone; - -function $w(string) { - if (!Object.isString(string)) return []; - string = string.strip(); - return string ? string.split(/\s+/) : []; -} - -if (Prototype.Browser.Opera){ - Array.prototype.concat = function() { - var array = []; - for (var i = 0, length = this.length; i < length; i++) array.push(this[i]); - for (var i = 0, length = arguments.length; i < length; i++) { - if (Object.isArray(arguments[i])) { - for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++) - array.push(arguments[i][j]); - } else { - array.push(arguments[i]); - } - } - return array; - }; -} -Object.extend(Number.prototype, { - toColorPart: function() { - return this.toPaddedString(2, 16); - }, - - succ: function() { - return this + 1; - }, - - times: function(iterator) { - $R(0, this, true).each(iterator); - return this; - }, - - toPaddedString: function(length, radix) { - var string = this.toString(radix || 10); - return '0'.times(length - string.length) + string; - }, - - toJSON: function() { - return isFinite(this) ? this.toString() : 'null'; - } -}); - -$w('abs round ceil floor').each(function(method){ - Number.prototype[method] = Math[method].methodize(); -}); -function $H(object) { - return new Hash(object); -}; - -var Hash = Class.create(Enumerable, (function() { - if (function() { - var i = 0, Test = function(value) { this.key = value }; - Test.prototype.key = 'foo'; - for (var property in new Test('bar')) i++; - return i > 1; - }()) { - function each(iterator) { - var cache = []; - for (var key in this._object) { - var value = this._object[key]; - if (cache.include(key)) continue; - cache.push(key); - var pair = [key, value]; - pair.key = key; - pair.value = value; - iterator(pair); - } - } - } else { - function each(iterator) { - for (var key in this._object) { - var value = this._object[key], pair = [key, value]; - pair.key = key; - pair.value = value; - iterator(pair); - } - } - } - - function toQueryPair(key, value) { - if (Object.isUndefined(value)) return key; - return key + '=' + encodeURIComponent(String.interpret(value)); - } - - return { - initialize: function(object) { - this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); - }, - - _each: each, - - set: function(key, value) { - return this._object[key] = value; - }, - - get: function(key) { - return this._object[key]; - }, - - unset: function(key) { - var value = this._object[key]; - delete this._object[key]; - return value; - }, - - toObject: function() { - return Object.clone(this._object); - }, - - keys: function() { - return this.pluck('key'); - }, - - values: function() { - return this.pluck('value'); - }, - - index: function(value) { - var match = this.detect(function(pair) { - return pair.value === value; - }); - return match && match.key; - }, - - merge: function(object) { - return this.clone().update(object); - }, - - update: function(object) { - return new Hash(object).inject(this, function(result, pair) { - result.set(pair.key, pair.value); - return result; - }); - }, - - toQueryString: function() { - return this.map(function(pair) { - var key = encodeURIComponent(pair.key), values = pair.value; - - if (values && typeof values == 'object') { - if (Object.isArray(values)) - return values.map(toQueryPair.curry(key)).join('&'); - } - return toQueryPair(key, values); - }).join('&'); - }, - - inspect: function() { - return '#'; - }, - - toJSON: function() { - return Object.toJSON(this.toObject()); - }, - - clone: function() { - return new Hash(this); - } - } -})()); - -Hash.prototype.toTemplateReplacements = Hash.prototype.toObject; -Hash.from = $H; -var ObjectRange = Class.create(Enumerable, { - initialize: function(start, end, exclusive) { - this.start = start; - this.end = end; - this.exclusive = exclusive; - }, - - _each: function(iterator) { - var value = this.start; - while (this.include(value)) { - iterator(value); - value = value.succ(); - } - }, - - include: function(value) { - if (value < this.start) - return false; - if (this.exclusive) - return value < this.end; - return value <= this.end; - } -}); - -var $R = function(start, end, exclusive) { - return new ObjectRange(start, end, exclusive); -}; - -var Ajax = { - getTransport: function() { - return Try.these( - function() {return new XMLHttpRequest()}, - function() {return new ActiveXObject('Msxml2.XMLHTTP')}, - function() {return new ActiveXObject('Microsoft.XMLHTTP')} - ) || false; - }, - - activeRequestCount: 0 -}; - -Ajax.Responders = { - responders: [], - - _each: function(iterator) { - this.responders._each(iterator); - }, - - register: function(responder) { - if (!this.include(responder)) - this.responders.push(responder); - }, - - unregister: function(responder) { - this.responders = this.responders.without(responder); - }, - - dispatch: function(callback, request, transport, json) { - this.each(function(responder) { - if (Object.isFunction(responder[callback])) { - try { - responder[callback].apply(responder, [request, transport, json]); - } catch (e) { } - } - }); - } -}; - -Object.extend(Ajax.Responders, Enumerable); - -Ajax.Responders.register({ - onCreate: function() { Ajax.activeRequestCount++ }, - onComplete: function() { Ajax.activeRequestCount-- } -}); - -Ajax.Base = Class.create({ - initialize: function(options) { - this.options = { - method: 'post', - asynchronous: true, - contentType: 'application/x-www-form-urlencoded', - encoding: 'UTF-8', - parameters: '', - evalJSON: true, - evalJS: true - }; - Object.extend(this.options, options || { }); - - this.options.method = this.options.method.toLowerCase(); - if (Object.isString(this.options.parameters)) - this.options.parameters = this.options.parameters.toQueryParams(); - } -}); - -Ajax.Request = Class.create(Ajax.Base, { - _complete: false, - - initialize: function($super, url, options) { - $super(options); - this.transport = Ajax.getTransport(); - this.request(url); - }, - - request: function(url) { - this.url = url; - this.method = this.options.method; - var params = Object.clone(this.options.parameters); - - if (!['get', 'post'].include(this.method)) { - // simulate other verbs over post - params['_method'] = this.method; - this.method = 'post'; - } - - this.parameters = params; - - if (params = Object.toQueryString(params)) { - // when GET, append parameters to URL - if (this.method == 'get') - this.url += (this.url.include('?') ? '&' : '?') + params; - else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) - params += '&_='; - } - - try { - var response = new Ajax.Response(this); - if (this.options.onCreate) this.options.onCreate(response); - Ajax.Responders.dispatch('onCreate', this, response); - - this.transport.open(this.method.toUpperCase(), this.url, - this.options.asynchronous); - - if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); - - this.transport.onreadystatechange = this.onStateChange.bind(this); - this.setRequestHeaders(); - - this.body = this.method == 'post' ? (this.options.postBody || params) : null; - this.transport.send(this.body); - - /* Force Firefox to handle ready state 4 for synchronous requests */ - if (!this.options.asynchronous && this.transport.overrideMimeType) - this.onStateChange(); - - } - catch (e) { - this.dispatchException(e); - } - }, - - onStateChange: function() { - var readyState = this.transport.readyState; - if (readyState > 1 && !((readyState == 4) && this._complete)) - this.respondToReadyState(this.transport.readyState); - }, - - setRequestHeaders: function() { - var headers = { - 'X-Requested-With': 'XMLHttpRequest', - 'X-Prototype-Version': Prototype.Version, - 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' - }; - - if (this.method == 'post') { - headers['Content-type'] = this.options.contentType + - (this.options.encoding ? '; charset=' + this.options.encoding : ''); - - /* Force "Connection: close" for older Mozilla browsers to work - * around a bug where XMLHttpRequest sends an incorrect - * Content-length header. See Mozilla Bugzilla #246651. - */ - if (this.transport.overrideMimeType && - (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) - headers['Connection'] = 'close'; - } - - // user-defined headers - if (typeof this.options.requestHeaders == 'object') { - var extras = this.options.requestHeaders; - - if (Object.isFunction(extras.push)) - for (var i = 0, length = extras.length; i < length; i += 2) - headers[extras[i]] = extras[i+1]; - else - $H(extras).each(function(pair) { headers[pair.key] = pair.value }); - } - - for (var name in headers) - this.transport.setRequestHeader(name, headers[name]); - }, - - success: function() { - var status = this.getStatus(); - return !status || (status >= 200 && status < 300); - }, - - getStatus: function() { - try { - return this.transport.status || 0; - } catch (e) { return 0 } - }, - - respondToReadyState: function(readyState) { - var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); - - if (state == 'Complete') { - try { - this._complete = true; - (this.options['on' + response.status] - || this.options['on' + (this.success() ? 'Success' : 'Failure')] - || Prototype.emptyFunction)(response, response.headerJSON); - } catch (e) { - this.dispatchException(e); - } - - var contentType = response.getHeader('Content-type'); - if (this.options.evalJS == 'force' - || (this.options.evalJS && contentType - && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) - this.evalResponse(); - } - - try { - (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); - Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); - } catch (e) { - this.dispatchException(e); - } - - if (state == 'Complete') { - // avoid memory leak in MSIE: clean up - this.transport.onreadystatechange = Prototype.emptyFunction; - } - }, - - getHeader: function(name) { - try { - return this.transport.getResponseHeader(name); - } catch (e) { return null } - }, - - evalResponse: function() { - try { - return eval((this.transport.responseText || '').unfilterJSON()); - } catch (e) { - this.dispatchException(e); - } - }, - - dispatchException: function(exception) { - (this.options.onException || Prototype.emptyFunction)(this, exception); - Ajax.Responders.dispatch('onException', this, exception); - } -}); - -Ajax.Request.Events = - ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; - -Ajax.Response = Class.create({ - initialize: function(request){ - this.request = request; - var transport = this.transport = request.transport, - readyState = this.readyState = transport.readyState; - - if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { - this.status = this.getStatus(); - this.statusText = this.getStatusText(); - this.responseText = String.interpret(transport.responseText); - this.headerJSON = this._getHeaderJSON(); - } - - if(readyState == 4) { - var xml = transport.responseXML; - this.responseXML = xml === undefined ? null : xml; - this.responseJSON = this._getResponseJSON(); - } - }, - - status: 0, - statusText: '', - - getStatus: Ajax.Request.prototype.getStatus, - - getStatusText: function() { - try { - return this.transport.statusText || ''; - } catch (e) { return '' } - }, - - getHeader: Ajax.Request.prototype.getHeader, - - getAllHeaders: function() { - try { - return this.getAllResponseHeaders(); - } catch (e) { return null } - }, - - getResponseHeader: function(name) { - return this.transport.getResponseHeader(name); - }, - - getAllResponseHeaders: function() { - return this.transport.getAllResponseHeaders(); - }, - - _getHeaderJSON: function() { - var json = this.getHeader('X-JSON'); - if (!json) return null; - json = decodeURIComponent(escape(json)); - try { - return json.evalJSON(this.request.options.sanitizeJSON); - } catch (e) { - this.request.dispatchException(e); - } - }, - - _getResponseJSON: function() { - var options = this.request.options; - if (!options.evalJSON || (options.evalJSON != 'force' && - !(this.getHeader('Content-type') || '').include('application/json'))) - return null; - try { - return this.transport.responseText.evalJSON(options.sanitizeJSON); - } catch (e) { - this.request.dispatchException(e); - } - } -}); - -Ajax.Updater = Class.create(Ajax.Request, { - initialize: function($super, container, url, options) { - this.container = { - success: (container.success || container), - failure: (container.failure || (container.success ? null : container)) - }; - - options = options || { }; - var onComplete = options.onComplete; - options.onComplete = (function(response, param) { - this.updateContent(response.responseText); - if (Object.isFunction(onComplete)) onComplete(response, param); - }).bind(this); - - $super(url, options); - }, - - updateContent: function(responseText) { - var receiver = this.container[this.success() ? 'success' : 'failure'], - options = this.options; - - if (!options.evalScripts) responseText = responseText.stripScripts(); - - if (receiver = $(receiver)) { - if (options.insertion) { - if (Object.isString(options.insertion)) { - var insertion = { }; insertion[options.insertion] = responseText; - receiver.insert(insertion); - } - else options.insertion(receiver, responseText); - } - else receiver.update(responseText); - } - - if (this.success()) { - if (this.onComplete) this.onComplete.bind(this).defer(); - } - } -}); - -Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { - initialize: function($super, container, url, options) { - $super(options); - this.onComplete = this.options.onComplete; - - this.frequency = (this.options.frequency || 2); - this.decay = (this.options.decay || 1); - - this.updater = { }; - this.container = container; - this.url = url; - - this.start(); - }, - - start: function() { - this.options.onComplete = this.updateComplete.bind(this); - this.onTimerEvent(); - }, - - stop: function() { - this.updater.options.onComplete = undefined; - clearTimeout(this.timer); - (this.onComplete || Prototype.emptyFunction).apply(this, arguments); - }, - - updateComplete: function(response) { - if (this.options.decay) { - this.decay = (response.responseText == this.lastText ? - this.decay * this.options.decay : 1); - - this.lastText = response.responseText; - } - this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); - }, - - onTimerEvent: function() { - this.updater = new Ajax.Updater(this.container, this.url, this.options); - } -}); -function $(element) { - if (arguments.length > 1) { - for (var i = 0, elements = [], length = arguments.length; i < length; i++) - elements.push($(arguments[i])); - return elements; - } - if (Object.isString(element)) - element = document.getElementById(element); - return Element.extend(element); -} - -if (Prototype.BrowserFeatures.XPath) { - document._getElementsByXPath = function(expression, parentElement) { - var results = []; - var query = document.evaluate(expression, $(parentElement) || document, - null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); - for (var i = 0, length = query.snapshotLength; i < length; i++) - results.push(Element.extend(query.snapshotItem(i))); - return results; - }; -} - -/*--------------------------------------------------------------------------*/ - -if (!window.Node) var Node = { }; - -if (!Node.ELEMENT_NODE) { - // DOM level 2 ECMAScript Language Binding - Object.extend(Node, { - ELEMENT_NODE: 1, - ATTRIBUTE_NODE: 2, - TEXT_NODE: 3, - CDATA_SECTION_NODE: 4, - ENTITY_REFERENCE_NODE: 5, - ENTITY_NODE: 6, - PROCESSING_INSTRUCTION_NODE: 7, - COMMENT_NODE: 8, - DOCUMENT_NODE: 9, - DOCUMENT_TYPE_NODE: 10, - DOCUMENT_FRAGMENT_NODE: 11, - NOTATION_NODE: 12 - }); -} - -(function() { - var element = this.Element; - this.Element = function(tagName, attributes) { - attributes = attributes || { }; - tagName = tagName.toLowerCase(); - var cache = Element.cache; - if (Prototype.Browser.IE && attributes.name) { - tagName = '<' + tagName + ' name="' + attributes.name + '">'; - delete attributes.name; - return Element.writeAttribute(document.createElement(tagName), attributes); - } - if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); - return Element.writeAttribute(cache[tagName].cloneNode(false), attributes); - }; - Object.extend(this.Element, element || { }); -}).call(window); - -Element.cache = { }; - -Element.Methods = { - visible: function(element) { - return $(element).style.display != 'none'; - }, - - toggle: function(element) { - element = $(element); - Element[Element.visible(element) ? 'hide' : 'show'](element); - return element; - }, - - hide: function(element) { - $(element).style.display = 'none'; - return element; - }, - - show: function(element) { - $(element).style.display = ''; - return element; - }, - - remove: function(element) { - element = $(element); - element.parentNode.removeChild(element); - return element; - }, - - update: function(element, content) { - element = $(element); - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) return element.update().insert(content); - content = Object.toHTML(content); - element.innerHTML = content.stripScripts(); - content.evalScripts.bind(content).defer(); - return element; - }, - - replace: function(element, content) { - element = $(element); - if (content && content.toElement) content = content.toElement(); - else if (!Object.isElement(content)) { - content = Object.toHTML(content); - var range = element.ownerDocument.createRange(); - range.selectNode(element); - content.evalScripts.bind(content).defer(); - content = range.createContextualFragment(content.stripScripts()); - } - element.parentNode.replaceChild(content, element); - return element; - }, - - insert: function(element, insertions) { - element = $(element); - - if (Object.isString(insertions) || Object.isNumber(insertions) || - Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) - insertions = {bottom:insertions}; - - var content, t, range; - - for (position in insertions) { - content = insertions[position]; - position = position.toLowerCase(); - t = Element._insertionTranslations[position]; - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - t.insert(element, content); - continue; - } - - content = Object.toHTML(content); - - range = element.ownerDocument.createRange(); - t.initializeRange(element, range); - t.insert(element, range.createContextualFragment(content.stripScripts())); - - content.evalScripts.bind(content).defer(); - } - - return element; - }, - - wrap: function(element, wrapper, attributes) { - element = $(element); - if (Object.isElement(wrapper)) - $(wrapper).writeAttribute(attributes || { }); - else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); - else wrapper = new Element('div', wrapper); - if (element.parentNode) - element.parentNode.replaceChild(wrapper, element); - wrapper.appendChild(element); - return wrapper; - }, - - inspect: function(element) { - element = $(element); - var result = '<' + element.tagName.toLowerCase(); - $H({'id': 'id', 'className': 'class'}).each(function(pair) { - var property = pair.first(), attribute = pair.last(); - var value = (element[property] || '').toString(); - if (value) result += ' ' + attribute + '=' + value.inspect(true); - }); - return result + '>'; - }, - - recursivelyCollect: function(element, property) { - element = $(element); - var elements = []; - while (element = element[property]) - if (element.nodeType == 1) - elements.push(Element.extend(element)); - return elements; - }, - - ancestors: function(element) { - return $(element).recursivelyCollect('parentNode'); - }, - - descendants: function(element) { - return $A($(element).getElementsByTagName('*')).each(Element.extend); - }, - - firstDescendant: function(element) { - element = $(element).firstChild; - while (element && element.nodeType != 1) element = element.nextSibling; - return $(element); - }, - - immediateDescendants: function(element) { - if (!(element = $(element).firstChild)) return []; - while (element && element.nodeType != 1) element = element.nextSibling; - if (element) return [element].concat($(element).nextSiblings()); - return []; - }, - - previousSiblings: function(element) { - return $(element).recursivelyCollect('previousSibling'); - }, - - nextSiblings: function(element) { - return $(element).recursivelyCollect('nextSibling'); - }, - - siblings: function(element) { - element = $(element); - return element.previousSiblings().reverse().concat(element.nextSiblings()); - }, - - match: function(element, selector) { - if (Object.isString(selector)) - selector = new Selector(selector); - return selector.match($(element)); - }, - - up: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(element.parentNode); - var ancestors = element.ancestors(); - return expression ? Selector.findElement(ancestors, expression, index) : - ancestors[index || 0]; - }, - - down: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return element.firstDescendant(); - var descendants = element.descendants(); - return expression ? Selector.findElement(descendants, expression, index) : - descendants[index || 0]; - }, - - previous: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element)); - var previousSiblings = element.previousSiblings(); - return expression ? Selector.findElement(previousSiblings, expression, index) : - previousSiblings[index || 0]; - }, - - next: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element)); - var nextSiblings = element.nextSiblings(); - return expression ? Selector.findElement(nextSiblings, expression, index) : - nextSiblings[index || 0]; - }, - - select: function() { - var args = $A(arguments), element = $(args.shift()); - return Selector.findChildElements(element, args); - }, - - adjacent: function() { - var args = $A(arguments), element = $(args.shift()); - return Selector.findChildElements(element.parentNode, args).without(element); - }, - - identify: function(element) { - element = $(element); - var id = element.readAttribute('id'), self = arguments.callee; - if (id) return id; - do { id = 'anonymous_element_' + self.counter++ } while ($(id)); - element.writeAttribute('id', id); - return id; - }, - - readAttribute: function(element, name) { - element = $(element); - if (Prototype.Browser.IE) { - var t = Element._attributeTranslations.read; - if (t.values[name]) return t.values[name](element, name); - if (t.names[name]) name = t.names[name]; - if (name.include(':')) { - return (!element.attributes || !element.attributes[name]) ? null : - element.attributes[name].value; - } - } - return element.getAttribute(name); - }, - - writeAttribute: function(element, name, value) { - element = $(element); - var attributes = { }, t = Element._attributeTranslations.write; - - if (typeof name == 'object') attributes = name; - else attributes[name] = value === undefined ? true : value; - - for (var attr in attributes) { - var name = t.names[attr] || attr, value = attributes[attr]; - if (t.values[attr]) name = t.values[attr](element, value); - if (value === false || value === null) - element.removeAttribute(name); - else if (value === true) - element.setAttribute(name, name); - else element.setAttribute(name, value); - } - return element; - }, - - getHeight: function(element) { - return $(element).getDimensions().height; - }, - - getWidth: function(element) { - return $(element).getDimensions().width; - }, - - classNames: function(element) { - return new Element.ClassNames(element); - }, - - hasClassName: function(element, className) { - if (!(element = $(element))) return; - var elementClassName = element.className; - return (elementClassName.length > 0 && (elementClassName == className || - new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); - }, - - addClassName: function(element, className) { - if (!(element = $(element))) return; - if (!element.hasClassName(className)) - element.className += (element.className ? ' ' : '') + className; - return element; - }, - - removeClassName: function(element, className) { - if (!(element = $(element))) return; - element.className = element.className.replace( - new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); - return element; - }, - - toggleClassName: function(element, className) { - if (!(element = $(element))) return; - return element[element.hasClassName(className) ? - 'removeClassName' : 'addClassName'](className); - }, - - // removes whitespace-only text node children - cleanWhitespace: function(element) { - element = $(element); - var node = element.firstChild; - while (node) { - var nextNode = node.nextSibling; - if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) - element.removeChild(node); - node = nextNode; - } - return element; - }, - - empty: function(element) { - return $(element).innerHTML.blank(); - }, - - descendantOf: function(element, ancestor) { - element = $(element), ancestor = $(ancestor); - - if (element.compareDocumentPosition) - return (element.compareDocumentPosition(ancestor) & 8) === 8; - - if (element.sourceIndex && !Prototype.Browser.Opera) { - var e = element.sourceIndex, a = ancestor.sourceIndex, - nextAncestor = ancestor.nextSibling; - if (!nextAncestor) { - do { ancestor = ancestor.parentNode; } - while (!(nextAncestor = ancestor.nextSibling) && ancestor.parentNode); - } - if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex); - } - - while (element = element.parentNode) - if (element == ancestor) return true; - return false; - }, - - scrollTo: function(element) { - element = $(element); - var pos = element.cumulativeOffset(); - window.scrollTo(pos[0], pos[1]); - return element; - }, - - getStyle: function(element, style) { - element = $(element); - style = style == 'float' ? 'cssFloat' : style.camelize(); - var value = element.style[style]; - if (!value) { - var css = document.defaultView.getComputedStyle(element, null); - value = css ? css[style] : null; - } - if (style == 'opacity') return value ? parseFloat(value) : 1.0; - return value == 'auto' ? null : value; - }, - - getOpacity: function(element) { - return $(element).getStyle('opacity'); - }, - - setStyle: function(element, styles) { - element = $(element); - var elementStyle = element.style, match; - if (Object.isString(styles)) { - element.style.cssText += ';' + styles; - return styles.include('opacity') ? - element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; - } - for (var property in styles) - if (property == 'opacity') element.setOpacity(styles[property]); - else - elementStyle[(property == 'float' || property == 'cssFloat') ? - (elementStyle.styleFloat === undefined ? 'cssFloat' : 'styleFloat') : - property] = styles[property]; - - return element; - }, - - setOpacity: function(element, value) { - element = $(element); - element.style.opacity = (value == 1 || value === '') ? '' : - (value < 0.00001) ? 0 : value; - return element; - }, - - getDimensions: function(element) { - element = $(element); - var display = $(element).getStyle('display'); - if (display != 'none' && display != null) // Safari bug - return {width: element.offsetWidth, height: element.offsetHeight}; - - // All *Width and *Height properties give 0 on elements with display none, - // so enable the element temporarily - var els = element.style; - var originalVisibility = els.visibility; - var originalPosition = els.position; - var originalDisplay = els.display; - els.visibility = 'hidden'; - els.position = 'absolute'; - els.display = 'block'; - var originalWidth = element.clientWidth; - var originalHeight = element.clientHeight; - els.display = originalDisplay; - els.position = originalPosition; - els.visibility = originalVisibility; - return {width: originalWidth, height: originalHeight}; - }, - - makePositioned: function(element) { - element = $(element); - var pos = Element.getStyle(element, 'position'); - if (pos == 'static' || !pos) { - element._madePositioned = true; - element.style.position = 'relative'; - // Opera returns the offset relative to the positioning context, when an - // element is position relative but top and left have not been defined - if (window.opera) { - element.style.top = 0; - element.style.left = 0; - } - } - return element; - }, - - undoPositioned: function(element) { - element = $(element); - if (element._madePositioned) { - element._madePositioned = undefined; - element.style.position = - element.style.top = - element.style.left = - element.style.bottom = - element.style.right = ''; - } - return element; - }, - - makeClipping: function(element) { - element = $(element); - if (element._overflow) return element; - element._overflow = Element.getStyle(element, 'overflow') || 'auto'; - if (element._overflow !== 'hidden') - element.style.overflow = 'hidden'; - return element; - }, - - undoClipping: function(element) { - element = $(element); - if (!element._overflow) return element; - element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; - element._overflow = null; - return element; - }, - - cumulativeOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - positionedOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - if (element) { - if (element.tagName == 'BODY') break; - var p = Element.getStyle(element, 'position'); - if (p == 'relative' || p == 'absolute') break; - } - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - absolutize: function(element) { - element = $(element); - if (element.getStyle('position') == 'absolute') return; - // Position.prepare(); // To be done manually by Scripty when it needs it. - - var offsets = element.positionedOffset(); - var top = offsets[1]; - var left = offsets[0]; - var width = element.clientWidth; - var height = element.clientHeight; - - element._originalLeft = left - parseFloat(element.style.left || 0); - element._originalTop = top - parseFloat(element.style.top || 0); - element._originalWidth = element.style.width; - element._originalHeight = element.style.height; - - element.style.position = 'absolute'; - element.style.top = top + 'px'; - element.style.left = left + 'px'; - element.style.width = width + 'px'; - element.style.height = height + 'px'; - return element; - }, - - relativize: function(element) { - element = $(element); - if (element.getStyle('position') == 'relative') return; - // Position.prepare(); // To be done manually by Scripty when it needs it. - - element.style.position = 'relative'; - var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); - var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); - - element.style.top = top + 'px'; - element.style.left = left + 'px'; - element.style.height = element._originalHeight; - element.style.width = element._originalWidth; - return element; - }, - - cumulativeScrollOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.scrollTop || 0; - valueL += element.scrollLeft || 0; - element = element.parentNode; - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - getOffsetParent: function(element) { - if (element.offsetParent) return $(element.offsetParent); - if (element == document.body) return $(element); - - while ((element = element.parentNode) && element != document.body) - if (Element.getStyle(element, 'position') != 'static') - return $(element); - - return $(document.body); - }, - - viewportOffset: function(forElement) { - var valueT = 0, valueL = 0; - - var element = forElement; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - - // Safari fix - if (element.offsetParent == document.body && - Element.getStyle(element, 'position') == 'absolute') break; - - } while (element = element.offsetParent); - - element = forElement; - do { - if (!Prototype.Browser.Opera || element.tagName == 'BODY') { - valueT -= element.scrollTop || 0; - valueL -= element.scrollLeft || 0; - } - } while (element = element.parentNode); - - return Element._returnOffset(valueL, valueT); - }, - - clonePosition: function(element, source) { - var options = Object.extend({ - setLeft: true, - setTop: true, - setWidth: true, - setHeight: true, - offsetTop: 0, - offsetLeft: 0 - }, arguments[2] || { }); - - // find page position of source - source = $(source); - var p = source.viewportOffset(); - - // find coordinate system to use - element = $(element); - var delta = [0, 0]; - var parent = null; - // delta [0,0] will do fine with position: fixed elements, - // position:absolute needs offsetParent deltas - if (Element.getStyle(element, 'position') == 'absolute') { - parent = element.getOffsetParent(); - delta = parent.viewportOffset(); - } - - // correct by body offsets (fixes Safari) - if (parent == document.body) { - delta[0] -= document.body.offsetLeft; - delta[1] -= document.body.offsetTop; - } - - // set position - if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; - if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; - if (options.setWidth) element.style.width = source.offsetWidth + 'px'; - if (options.setHeight) element.style.height = source.offsetHeight + 'px'; - return element; - } -}; - -Element.Methods.identify.counter = 1; - -Object.extend(Element.Methods, { - getElementsBySelector: Element.Methods.select, - childElements: Element.Methods.immediateDescendants -}); - -Element._attributeTranslations = { - write: { - names: { - className: 'class', - htmlFor: 'for' - }, - values: { } - } -}; - - -if (!document.createRange || Prototype.Browser.Opera) { - Element.Methods.insert = function(element, insertions) { - element = $(element); - - if (Object.isString(insertions) || Object.isNumber(insertions) || - Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) - insertions = { bottom: insertions }; - - var t = Element._insertionTranslations, content, position, pos, tagName; - - for (position in insertions) { - content = insertions[position]; - position = position.toLowerCase(); - pos = t[position]; - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - pos.insert(element, content); - continue; - } - - content = Object.toHTML(content); - tagName = ((position == 'before' || position == 'after') - ? element.parentNode : element).tagName.toUpperCase(); - - if (t.tags[tagName]) { - var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); - if (position == 'top' || position == 'after') fragments.reverse(); - fragments.each(pos.insert.curry(element)); - } - else element.insertAdjacentHTML(pos.adjacency, content.stripScripts()); - - content.evalScripts.bind(content).defer(); - } - - return element; - }; -} - -if (Prototype.Browser.Opera) { - Element.Methods._getStyle = Element.Methods.getStyle; - Element.Methods.getStyle = function(element, style) { - switch(style) { - case 'left': - case 'top': - case 'right': - case 'bottom': - if (Element._getStyle(element, 'position') == 'static') return null; - default: return Element._getStyle(element, style); - } - }; - Element.Methods._readAttribute = Element.Methods.readAttribute; - Element.Methods.readAttribute = function(element, attribute) { - if (attribute == 'title') return element.title; - return Element._readAttribute(element, attribute); - }; -} - -else if (Prototype.Browser.IE) { - $w('positionedOffset getOffsetParent viewportOffset').each(function(method) { - Element.Methods[method] = Element.Methods[method].wrap( - function(proceed, element) { - element = $(element); - var position = element.getStyle('position'); - if (position != 'static') return proceed(element); - element.setStyle({ position: 'relative' }); - var value = proceed(element); - element.setStyle({ position: position }); - return value; - } - ); - }); - - Element.Methods.getStyle = function(element, style) { - element = $(element); - style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); - var value = element.style[style]; - if (!value && element.currentStyle) value = element.currentStyle[style]; - - if (style == 'opacity') { - if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) - if (value[1]) return parseFloat(value[1]) / 100; - return 1.0; - } - - if (value == 'auto') { - if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) - return element['offset' + style.capitalize()] + 'px'; - return null; - } - return value; - }; - - Element.Methods.setOpacity = function(element, value) { - function stripAlpha(filter){ - return filter.replace(/alpha\([^\)]*\)/gi,''); - } - element = $(element); - var currentStyle = element.currentStyle; - if ((currentStyle && !currentStyle.hasLayout) || - (!currentStyle && element.style.zoom == 'normal')) - element.style.zoom = 1; - - var filter = element.getStyle('filter'), style = element.style; - if (value == 1 || value === '') { - (filter = stripAlpha(filter)) ? - style.filter = filter : style.removeAttribute('filter'); - return element; - } else if (value < 0.00001) value = 0; - style.filter = stripAlpha(filter) + - 'alpha(opacity=' + (value * 100) + ')'; - return element; - }; - - Element._attributeTranslations = { - read: { - names: { - 'class': 'className', - 'for': 'htmlFor' - }, - values: { - _getAttr: function(element, attribute) { - return element.getAttribute(attribute, 2); - }, - _getAttrNode: function(element, attribute) { - var node = element.getAttributeNode(attribute); - return node ? node.value : ""; - }, - _getEv: function(element, attribute) { - var attribute = element.getAttribute(attribute); - return attribute ? attribute.toString().slice(23, -2) : null; - }, - _flag: function(element, attribute) { - return $(element).hasAttribute(attribute) ? attribute : null; - }, - style: function(element) { - return element.style.cssText.toLowerCase(); - }, - title: function(element) { - return element.title; - } - } - } - }; - - Element._attributeTranslations.write = { - names: Object.clone(Element._attributeTranslations.read.names), - values: { - checked: function(element, value) { - element.checked = !!value; - }, - - style: function(element, value) { - element.style.cssText = value ? value : ''; - } - } - }; - - Element._attributeTranslations.has = {}; - - $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + - 'encType maxLength readOnly longDesc').each(function(attr) { - Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; - Element._attributeTranslations.has[attr.toLowerCase()] = attr; - }); - - (function(v) { - Object.extend(v, { - href: v._getAttr, - src: v._getAttr, - type: v._getAttr, - action: v._getAttrNode, - disabled: v._flag, - checked: v._flag, - readonly: v._flag, - multiple: v._flag, - onload: v._getEv, - onunload: v._getEv, - onclick: v._getEv, - ondblclick: v._getEv, - onmousedown: v._getEv, - onmouseup: v._getEv, - onmouseover: v._getEv, - onmousemove: v._getEv, - onmouseout: v._getEv, - onfocus: v._getEv, - onblur: v._getEv, - onkeypress: v._getEv, - onkeydown: v._getEv, - onkeyup: v._getEv, - onsubmit: v._getEv, - onreset: v._getEv, - onselect: v._getEv, - onchange: v._getEv - }); - })(Element._attributeTranslations.read.values); -} - -else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { - Element.Methods.setOpacity = function(element, value) { - element = $(element); - element.style.opacity = (value == 1) ? 0.999999 : - (value === '') ? '' : (value < 0.00001) ? 0 : value; - return element; - }; -} - -else if (Prototype.Browser.WebKit) { - Element.Methods.setOpacity = function(element, value) { - element = $(element); - element.style.opacity = (value == 1 || value === '') ? '' : - (value < 0.00001) ? 0 : value; - - if (value == 1) - if(element.tagName == 'IMG' && element.width) { - element.width++; element.width--; - } else try { - var n = document.createTextNode(' '); - element.appendChild(n); - element.removeChild(n); - } catch (e) { } - - return element; - }; - - // Safari returns margins on body which is incorrect if the child is absolutely - // positioned. For performance reasons, redefine Position.cumulativeOffset for - // KHTML/WebKit only. - Element.Methods.cumulativeOffset = function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - if (element.offsetParent == document.body) - if (Element.getStyle(element, 'position') == 'absolute') break; - - element = element.offsetParent; - } while (element); - - return Element._returnOffset(valueL, valueT); - }; -} - -if (Prototype.Browser.IE || Prototype.Browser.Opera) { - // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements - Element.Methods.update = function(element, content) { - element = $(element); - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) return element.update().insert(content); - - content = Object.toHTML(content); - var tagName = element.tagName.toUpperCase(); - - if (tagName in Element._insertionTranslations.tags) { - $A(element.childNodes).each(function(node) { element.removeChild(node) }); - Element._getContentFromAnonymousElement(tagName, content.stripScripts()) - .each(function(node) { element.appendChild(node) }); - } - else element.innerHTML = content.stripScripts(); - - content.evalScripts.bind(content).defer(); - return element; - }; -} - -if (document.createElement('div').outerHTML) { - Element.Methods.replace = function(element, content) { - element = $(element); - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - element.parentNode.replaceChild(content, element); - return element; - } - - content = Object.toHTML(content); - var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); - - if (Element._insertionTranslations.tags[tagName]) { - var nextSibling = element.next(); - var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); - parent.removeChild(element); - if (nextSibling) - fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); - else - fragments.each(function(node) { parent.appendChild(node) }); - } - else element.outerHTML = content.stripScripts(); - - content.evalScripts.bind(content).defer(); - return element; - }; -} - -Element._returnOffset = function(l, t) { - var result = [l, t]; - result.left = l; - result.top = t; - return result; -}; - -Element._getContentFromAnonymousElement = function(tagName, html) { - var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; - div.innerHTML = t[0] + html + t[1]; - t[2].times(function() { div = div.firstChild }); - return $A(div.childNodes); -}; - -Element._insertionTranslations = { - before: { - adjacency: 'beforeBegin', - insert: function(element, node) { - element.parentNode.insertBefore(node, element); - }, - initializeRange: function(element, range) { - range.setStartBefore(element); - } - }, - top: { - adjacency: 'afterBegin', - insert: function(element, node) { - element.insertBefore(node, element.firstChild); - }, - initializeRange: function(element, range) { - range.selectNodeContents(element); - range.collapse(true); - } - }, - bottom: { - adjacency: 'beforeEnd', - insert: function(element, node) { - element.appendChild(node); - } - }, - after: { - adjacency: 'afterEnd', - insert: function(element, node) { - element.parentNode.insertBefore(node, element.nextSibling); - }, - initializeRange: function(element, range) { - range.setStartAfter(element); - } - }, - tags: { - TABLE: ['', '
        ', 1], - TBODY: ['', '
        ', 2], - TR: ['', '
        ', 3], - TD: ['
        ', '
        ', 4], - SELECT: ['', 1] - } -}; - -(function() { - this.bottom.initializeRange = this.top.initializeRange; - Object.extend(this.tags, { - THEAD: this.tags.TBODY, - TFOOT: this.tags.TBODY, - TH: this.tags.TD - }); -}).call(Element._insertionTranslations); - -Element.Methods.Simulated = { - hasAttribute: function(element, attribute) { - attribute = Element._attributeTranslations.has[attribute] || attribute; - var node = $(element).getAttributeNode(attribute); - return node && node.specified; - } -}; - -Element.Methods.ByTag = { }; - -Object.extend(Element, Element.Methods); - -if (!Prototype.BrowserFeatures.ElementExtensions && - document.createElement('div').__proto__) { - window.HTMLElement = { }; - window.HTMLElement.prototype = document.createElement('div').__proto__; - Prototype.BrowserFeatures.ElementExtensions = true; -} - -Element.extend = (function() { - if (Prototype.BrowserFeatures.SpecificElementExtensions) - return Prototype.K; - - var Methods = { }, ByTag = Element.Methods.ByTag; - - var extend = Object.extend(function(element) { - if (!element || element._extendedByPrototype || - element.nodeType != 1 || element == window) return element; - - var methods = Object.clone(Methods), - tagName = element.tagName, property, value; - - // extend methods for specific tags - if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); - - for (property in methods) { - value = methods[property]; - if (Object.isFunction(value) && !(property in element)) - element[property] = value.methodize(); - } - - element._extendedByPrototype = Prototype.emptyFunction; - return element; - - }, { - refresh: function() { - // extend methods for all tags (Safari doesn't need this) - if (!Prototype.BrowserFeatures.ElementExtensions) { - Object.extend(Methods, Element.Methods); - Object.extend(Methods, Element.Methods.Simulated); - } - } - }); - - extend.refresh(); - return extend; -})(); - -Element.hasAttribute = function(element, attribute) { - if (element.hasAttribute) return element.hasAttribute(attribute); - return Element.Methods.Simulated.hasAttribute(element, attribute); -}; - -Element.addMethods = function(methods) { - var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; - - if (!methods) { - Object.extend(Form, Form.Methods); - Object.extend(Form.Element, Form.Element.Methods); - Object.extend(Element.Methods.ByTag, { - "FORM": Object.clone(Form.Methods), - "INPUT": Object.clone(Form.Element.Methods), - "SELECT": Object.clone(Form.Element.Methods), - "TEXTAREA": Object.clone(Form.Element.Methods) - }); - } - - if (arguments.length == 2) { - var tagName = methods; - methods = arguments[1]; - } - - if (!tagName) Object.extend(Element.Methods, methods || { }); - else { - if (Object.isArray(tagName)) tagName.each(extend); - else extend(tagName); - } - - function extend(tagName) { - tagName = tagName.toUpperCase(); - if (!Element.Methods.ByTag[tagName]) - Element.Methods.ByTag[tagName] = { }; - Object.extend(Element.Methods.ByTag[tagName], methods); - } - - function copy(methods, destination, onlyIfAbsent) { - onlyIfAbsent = onlyIfAbsent || false; - for (var property in methods) { - var value = methods[property]; - if (!Object.isFunction(value)) continue; - if (!onlyIfAbsent || !(property in destination)) - destination[property] = value.methodize(); - } - } - - function findDOMClass(tagName) { - var klass; - var trans = { - "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", - "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", - "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", - "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", - "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": - "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": - "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": - "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": - "FrameSet", "IFRAME": "IFrame" - }; - if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; - if (window[klass]) return window[klass]; - klass = 'HTML' + tagName + 'Element'; - if (window[klass]) return window[klass]; - klass = 'HTML' + tagName.capitalize() + 'Element'; - if (window[klass]) return window[klass]; - - window[klass] = { }; - window[klass].prototype = document.createElement(tagName).__proto__; - return window[klass]; - } - - if (F.ElementExtensions) { - copy(Element.Methods, HTMLElement.prototype); - copy(Element.Methods.Simulated, HTMLElement.prototype, true); - } - - if (F.SpecificElementExtensions) { - for (var tag in Element.Methods.ByTag) { - var klass = findDOMClass(tag); - if (Object.isUndefined(klass)) continue; - copy(T[tag], klass.prototype); - } - } - - Object.extend(Element, Element.Methods); - delete Element.ByTag; - - if (Element.extend.refresh) Element.extend.refresh(); - Element.cache = { }; -}; - -document.viewport = { - getDimensions: function() { - var dimensions = { }; - $w('width height').each(function(d) { - var D = d.capitalize(); - dimensions[d] = self['inner' + D] || - (document.documentElement['client' + D] || document.body['client' + D]); - }); - return dimensions; - }, - - getWidth: function() { - return this.getDimensions().width; - }, - - getHeight: function() { - return this.getDimensions().height; - }, - - getScrollOffsets: function() { - return Element._returnOffset( - window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, - window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); - } -}; -/* Portions of the Selector class are derived from Jack Slocum’s DomQuery, - * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style - * license. Please see http://www.yui-ext.com/ for more information. */ - -var Selector = Class.create({ - initialize: function(expression) { - this.expression = expression.strip(); - this.compileMatcher(); - }, - - compileMatcher: function() { - // Selectors with namespaced attributes can't use the XPath version - if (Prototype.BrowserFeatures.XPath && !(/(\[[\w-]*?:|:checked)/).test(this.expression)) - return this.compileXPathMatcher(); - - var e = this.expression, ps = Selector.patterns, h = Selector.handlers, - c = Selector.criteria, le, p, m; - - if (Selector._cache[e]) { - this.matcher = Selector._cache[e]; - return; - } - - this.matcher = ["this.matcher = function(root) {", - "var r = root, h = Selector.handlers, c = false, n;"]; - - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - p = ps[i]; - if (m = e.match(p)) { - this.matcher.push(Object.isFunction(c[i]) ? c[i](m) : - new Template(c[i]).evaluate(m)); - e = e.replace(m[0], ''); - break; - } - } - } - - this.matcher.push("return h.unique(n);\n}"); - eval(this.matcher.join('\n')); - Selector._cache[this.expression] = this.matcher; - }, - - compileXPathMatcher: function() { - var e = this.expression, ps = Selector.patterns, - x = Selector.xpath, le, m; - - if (Selector._cache[e]) { - this.xpath = Selector._cache[e]; return; - } - - this.matcher = ['.//*']; - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - if (m = e.match(ps[i])) { - this.matcher.push(Object.isFunction(x[i]) ? x[i](m) : - new Template(x[i]).evaluate(m)); - e = e.replace(m[0], ''); - break; - } - } - } - - this.xpath = this.matcher.join(''); - Selector._cache[this.expression] = this.xpath; - }, - - findElements: function(root) { - root = root || document; - if (this.xpath) return document._getElementsByXPath(this.xpath, root); - return this.matcher(root); - }, - - match: function(element) { - this.tokens = []; - - var e = this.expression, ps = Selector.patterns, as = Selector.assertions; - var le, p, m; - - while (e && le !== e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - p = ps[i]; - if (m = e.match(p)) { - // use the Selector.assertions methods unless the selector - // is too complex. - if (as[i]) { - this.tokens.push([i, Object.clone(m)]); - e = e.replace(m[0], ''); - } else { - // reluctantly do a document-wide search - // and look for a match in the array - return this.findElements(document).include(element); - } - } - } - } - - var match = true, name, matches; - for (var i = 0, token; token = this.tokens[i]; i++) { - name = token[0], matches = token[1]; - if (!Selector.assertions[name](element, matches)) { - match = false; break; - } - } - - return match; - }, - - toString: function() { - return this.expression; - }, - - inspect: function() { - return "#"; - } -}); - -Object.extend(Selector, { - _cache: { }, - - xpath: { - descendant: "//*", - child: "/*", - adjacent: "/following-sibling::*[1]", - laterSibling: '/following-sibling::*', - tagName: function(m) { - if (m[1] == '*') return ''; - return "[local-name()='" + m[1].toLowerCase() + - "' or local-name()='" + m[1].toUpperCase() + "']"; - }, - className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", - id: "[@id='#{1}']", - attrPresence: "[@#{1}]", - attr: function(m) { - m[3] = m[5] || m[6]; - return new Template(Selector.xpath.operators[m[2]]).evaluate(m); - }, - pseudo: function(m) { - var h = Selector.xpath.pseudos[m[1]]; - if (!h) return ''; - if (Object.isFunction(h)) return h(m); - return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); - }, - operators: { - '=': "[@#{1}='#{3}']", - '!=': "[@#{1}!='#{3}']", - '^=': "[starts-with(@#{1}, '#{3}')]", - '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']", - '*=': "[contains(@#{1}, '#{3}')]", - '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", - '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" - }, - pseudos: { - 'first-child': '[not(preceding-sibling::*)]', - 'last-child': '[not(following-sibling::*)]', - 'only-child': '[not(preceding-sibling::* or following-sibling::*)]', - 'empty': "[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]", - 'checked': "[@checked]", - 'disabled': "[@disabled]", - 'enabled': "[not(@disabled)]", - 'not': function(m) { - var e = m[6], p = Selector.patterns, - x = Selector.xpath, le, m, v; - - var exclusion = []; - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in p) { - if (m = e.match(p[i])) { - v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m); - exclusion.push("(" + v.substring(1, v.length - 1) + ")"); - e = e.replace(m[0], ''); - break; - } - } - } - return "[not(" + exclusion.join(" and ") + ")]"; - }, - 'nth-child': function(m) { - return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m); - }, - 'nth-last-child': function(m) { - return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m); - }, - 'nth-of-type': function(m) { - return Selector.xpath.pseudos.nth("position() ", m); - }, - 'nth-last-of-type': function(m) { - return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m); - }, - 'first-of-type': function(m) { - m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m); - }, - 'last-of-type': function(m) { - m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m); - }, - 'only-of-type': function(m) { - var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m); - }, - nth: function(fragment, m) { - var mm, formula = m[6], predicate; - if (formula == 'even') formula = '2n+0'; - if (formula == 'odd') formula = '2n+1'; - if (mm = formula.match(/^(\d+)$/)) // digit only - return '[' + fragment + "= " + mm[1] + ']'; - if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b - if (mm[1] == "-") mm[1] = -1; - var a = mm[1] ? Number(mm[1]) : 1; - var b = mm[2] ? Number(mm[2]) : 0; - predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " + - "((#{fragment} - #{b}) div #{a} >= 0)]"; - return new Template(predicate).evaluate({ - fragment: fragment, a: a, b: b }); - } - } - } - }, - - criteria: { - tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;', - className: 'n = h.className(n, r, "#{1}", c); c = false;', - id: 'n = h.id(n, r, "#{1}", c); c = false;', - attrPresence: 'n = h.attrPresence(n, r, "#{1}"); c = false;', - attr: function(m) { - m[3] = (m[5] || m[6]); - return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = false;').evaluate(m); - }, - pseudo: function(m) { - if (m[6]) m[6] = m[6].replace(/"/g, '\\"'); - return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m); - }, - descendant: 'c = "descendant";', - child: 'c = "child";', - adjacent: 'c = "adjacent";', - laterSibling: 'c = "laterSibling";' - }, - - patterns: { - // combinators must be listed first - // (and descendant needs to be last combinator) - laterSibling: /^\s*~\s*/, - child: /^\s*>\s*/, - adjacent: /^\s*\+\s*/, - descendant: /^\s/, - - // selectors follow - tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, - id: /^#([\w\-\*]+)(\b|$)/, - className: /^\.([\w\-\*]+)(\b|$)/, - pseudo: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s)|(?=:))/, - attrPresence: /^\[([\w]+)\]/, - attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/ - }, - - // for Selector.match and Element#match - assertions: { - tagName: function(element, matches) { - return matches[1].toUpperCase() == element.tagName.toUpperCase(); - }, - - className: function(element, matches) { - return Element.hasClassName(element, matches[1]); - }, - - id: function(element, matches) { - return element.id === matches[1]; - }, - - attrPresence: function(element, matches) { - return Element.hasAttribute(element, matches[1]); - }, - - attr: function(element, matches) { - var nodeValue = Element.readAttribute(element, matches[1]); - return Selector.operators[matches[2]](nodeValue, matches[3]); - } - }, - - handlers: { - // UTILITY FUNCTIONS - // joins two collections - concat: function(a, b) { - for (var i = 0, node; node = b[i]; i++) - a.push(node); - return a; - }, - - // marks an array of nodes for counting - mark: function(nodes) { - for (var i = 0, node; node = nodes[i]; i++) - node._counted = true; - return nodes; - }, - - unmark: function(nodes) { - for (var i = 0, node; node = nodes[i]; i++) - node._counted = undefined; - return nodes; - }, - - // mark each child node with its position (for nth calls) - // "ofType" flag indicates whether we're indexing for nth-of-type - // rather than nth-child - index: function(parentNode, reverse, ofType) { - parentNode._counted = true; - if (reverse) { - for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) { - var node = nodes[i]; - if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++; - } - } else { - for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++) - if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++; - } - }, - - // filters out duplicates and extends all nodes - unique: function(nodes) { - if (nodes.length == 0) return nodes; - var results = [], n; - for (var i = 0, l = nodes.length; i < l; i++) - if (!(n = nodes[i])._counted) { - n._counted = true; - results.push(Element.extend(n)); - } - return Selector.handlers.unmark(results); - }, - - // COMBINATOR FUNCTIONS - descendant: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - h.concat(results, node.getElementsByTagName('*')); - return results; - }, - - child: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) { - for (var j = 0, children = [], child; child = node.childNodes[j]; j++) - if (child.nodeType == 1 && child.tagName != '!') results.push(child); - } - return results; - }, - - adjacent: function(nodes) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - var next = this.nextElementSibling(node); - if (next) results.push(next); - } - return results; - }, - - laterSibling: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - h.concat(results, Element.nextSiblings(node)); - return results; - }, - - nextElementSibling: function(node) { - while (node = node.nextSibling) - if (node.nodeType == 1) return node; - return null; - }, - - previousElementSibling: function(node) { - while (node = node.previousSibling) - if (node.nodeType == 1) return node; - return null; - }, - - // TOKEN FUNCTIONS - tagName: function(nodes, root, tagName, combinator) { - tagName = tagName.toUpperCase(); - var results = [], h = Selector.handlers; - if (nodes) { - if (combinator) { - // fastlane for ordinary descendant combinators - if (combinator == "descendant") { - for (var i = 0, node; node = nodes[i]; i++) - h.concat(results, node.getElementsByTagName(tagName)); - return results; - } else nodes = this[combinator](nodes); - if (tagName == "*") return nodes; - } - for (var i = 0, node; node = nodes[i]; i++) - if (node.tagName.toUpperCase() == tagName) results.push(node); - return results; - } else return root.getElementsByTagName(tagName); - }, - - id: function(nodes, root, id, combinator) { - var targetNode = $(id), h = Selector.handlers; - if (!targetNode) return []; - if (!nodes && root == document) return [targetNode]; - if (nodes) { - if (combinator) { - if (combinator == 'child') { - for (var i = 0, node; node = nodes[i]; i++) - if (targetNode.parentNode == node) return [targetNode]; - } else if (combinator == 'descendant') { - for (var i = 0, node; node = nodes[i]; i++) - if (Element.descendantOf(targetNode, node)) return [targetNode]; - } else if (combinator == 'adjacent') { - for (var i = 0, node; node = nodes[i]; i++) - if (Selector.handlers.previousElementSibling(targetNode) == node) - return [targetNode]; - } else nodes = h[combinator](nodes); - } - for (var i = 0, node; node = nodes[i]; i++) - if (node == targetNode) return [targetNode]; - return []; - } - return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : []; - }, - - className: function(nodes, root, className, combinator) { - if (nodes && combinator) nodes = this[combinator](nodes); - return Selector.handlers.byClassName(nodes, root, className); - }, - - byClassName: function(nodes, root, className) { - if (!nodes) nodes = Selector.handlers.descendant([root]); - var needle = ' ' + className + ' '; - for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) { - nodeClassName = node.className; - if (nodeClassName.length == 0) continue; - if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle)) - results.push(node); - } - return results; - }, - - attrPresence: function(nodes, root, attr) { - if (!nodes) nodes = root.getElementsByTagName("*"); - var results = []; - for (var i = 0, node; node = nodes[i]; i++) - if (Element.hasAttribute(node, attr)) results.push(node); - return results; - }, - - attr: function(nodes, root, attr, value, operator) { - if (!nodes) nodes = root.getElementsByTagName("*"); - var handler = Selector.operators[operator], results = []; - for (var i = 0, node; node = nodes[i]; i++) { - var nodeValue = Element.readAttribute(node, attr); - if (nodeValue === null) continue; - if (handler(nodeValue, value)) results.push(node); - } - return results; - }, - - pseudo: function(nodes, name, value, root, combinator) { - if (nodes && combinator) nodes = this[combinator](nodes); - if (!nodes) nodes = root.getElementsByTagName("*"); - return Selector.pseudos[name](nodes, value, root); - } - }, - - pseudos: { - 'first-child': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - if (Selector.handlers.previousElementSibling(node)) continue; - results.push(node); - } - return results; - }, - 'last-child': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - if (Selector.handlers.nextElementSibling(node)) continue; - results.push(node); - } - return results; - }, - 'only-child': function(nodes, value, root) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!h.previousElementSibling(node) && !h.nextElementSibling(node)) - results.push(node); - return results; - }, - 'nth-child': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root); - }, - 'nth-last-child': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, true); - }, - 'nth-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, false, true); - }, - 'nth-last-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, true, true); - }, - 'first-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, "1", root, false, true); - }, - 'last-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, "1", root, true, true); - }, - 'only-of-type': function(nodes, formula, root) { - var p = Selector.pseudos; - return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root); - }, - - // handles the an+b logic - getIndices: function(a, b, total) { - if (a == 0) return b > 0 ? [b] : []; - return $R(1, total).inject([], function(memo, i) { - if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i); - return memo; - }); - }, - - // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type - nth: function(nodes, formula, root, reverse, ofType) { - if (nodes.length == 0) return []; - if (formula == 'even') formula = '2n+0'; - if (formula == 'odd') formula = '2n+1'; - var h = Selector.handlers, results = [], indexed = [], m; - h.mark(nodes); - for (var i = 0, node; node = nodes[i]; i++) { - if (!node.parentNode._counted) { - h.index(node.parentNode, reverse, ofType); - indexed.push(node.parentNode); - } - } - if (formula.match(/^\d+$/)) { // just a number - formula = Number(formula); - for (var i = 0, node; node = nodes[i]; i++) - if (node.nodeIndex == formula) results.push(node); - } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b - if (m[1] == "-") m[1] = -1; - var a = m[1] ? Number(m[1]) : 1; - var b = m[2] ? Number(m[2]) : 0; - var indices = Selector.pseudos.getIndices(a, b, nodes.length); - for (var i = 0, node, l = indices.length; node = nodes[i]; i++) { - for (var j = 0; j < l; j++) - if (node.nodeIndex == indices[j]) results.push(node); - } - } - h.unmark(nodes); - h.unmark(indexed); - return results; - }, - - 'empty': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - // IE treats comments as element nodes - if (node.tagName == '!' || (node.firstChild && !node.innerHTML.match(/^\s*$/))) continue; - results.push(node); - } - return results; - }, - - 'not': function(nodes, selector, root) { - var h = Selector.handlers, selectorType, m; - var exclusions = new Selector(selector).findElements(root); - h.mark(exclusions); - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!node._counted) results.push(node); - h.unmark(exclusions); - return results; - }, - - 'enabled': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!node.disabled) results.push(node); - return results; - }, - - 'disabled': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (node.disabled) results.push(node); - return results; - }, - - 'checked': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (node.checked) results.push(node); - return results; - } - }, - - operators: { - '=': function(nv, v) { return nv == v; }, - '!=': function(nv, v) { return nv != v; }, - '^=': function(nv, v) { return nv.startsWith(v); }, - '$=': function(nv, v) { return nv.endsWith(v); }, - '*=': function(nv, v) { return nv.include(v); }, - '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); }, - '|=': function(nv, v) { return ('-' + nv.toUpperCase() + '-').include('-' + v.toUpperCase() + '-'); } - }, - - matchElements: function(elements, expression) { - var matches = new Selector(expression).findElements(), h = Selector.handlers; - h.mark(matches); - for (var i = 0, results = [], element; element = elements[i]; i++) - if (element._counted) results.push(element); - h.unmark(matches); - return results; - }, - - findElement: function(elements, expression, index) { - if (Object.isNumber(expression)) { - index = expression; expression = false; - } - return Selector.matchElements(elements, expression || '*')[index || 0]; - }, - - findChildElements: function(element, expressions) { - var exprs = expressions.join(','), expressions = []; - exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { - expressions.push(m[1].strip()); - }); - var results = [], h = Selector.handlers; - for (var i = 0, l = expressions.length, selector; i < l; i++) { - selector = new Selector(expressions[i].strip()); - h.concat(results, selector.findElements(element)); - } - return (l > 1) ? h.unique(results) : results; - } -}); - -function $$() { - return Selector.findChildElements(document, $A(arguments)); -} -var Form = { - reset: function(form) { - $(form).reset(); - return form; - }, - - serializeElements: function(elements, options) { - if (typeof options != 'object') options = { hash: !!options }; - else if (options.hash === undefined) options.hash = true; - var key, value, submitted = false, submit = options.submit; - - var data = elements.inject({ }, function(result, element) { - if (!element.disabled && element.name) { - key = element.name; value = $(element).getValue(); - if (value != null && (element.type != 'submit' || (!submitted && - submit !== false && (!submit || key == submit) && (submitted = true)))) { - if (key in result) { - // a key is already present; construct an array of values - if (!Object.isArray(result[key])) result[key] = [result[key]]; - result[key].push(value); - } - else result[key] = value; - } - } - return result; - }); - - return options.hash ? data : Object.toQueryString(data); - } -}; - -Form.Methods = { - serialize: function(form, options) { - return Form.serializeElements(Form.getElements(form), options); - }, - - getElements: function(form) { - return $A($(form).getElementsByTagName('*')).inject([], - function(elements, child) { - if (Form.Element.Serializers[child.tagName.toLowerCase()]) - elements.push(Element.extend(child)); - return elements; - } - ); - }, - - getInputs: function(form, typeName, name) { - form = $(form); - var inputs = form.getElementsByTagName('input'); - - if (!typeName && !name) return $A(inputs).map(Element.extend); - - for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { - var input = inputs[i]; - if ((typeName && input.type != typeName) || (name && input.name != name)) - continue; - matchingInputs.push(Element.extend(input)); - } - - return matchingInputs; - }, - - disable: function(form) { - form = $(form); - Form.getElements(form).invoke('disable'); - return form; - }, - - enable: function(form) { - form = $(form); - Form.getElements(form).invoke('enable'); - return form; - }, - - findFirstElement: function(form) { - var elements = $(form).getElements().findAll(function(element) { - return 'hidden' != element.type && !element.disabled; - }); - var firstByIndex = elements.findAll(function(element) { - return element.hasAttribute('tabIndex') && element.tabIndex >= 0; - }).sortBy(function(element) { return element.tabIndex }).first(); - - return firstByIndex ? firstByIndex : elements.find(function(element) { - return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); - }); - }, - - focusFirstElement: function(form) { - form = $(form); - form.findFirstElement().activate(); - return form; - }, - - request: function(form, options) { - form = $(form), options = Object.clone(options || { }); - - var params = options.parameters, action = form.readAttribute('action') || ''; - if (action.blank()) action = window.location.href; - options.parameters = form.serialize(true); - - if (params) { - if (Object.isString(params)) params = params.toQueryParams(); - Object.extend(options.parameters, params); - } - - if (form.hasAttribute('method') && !options.method) - options.method = form.method; - - return new Ajax.Request(action, options); - } -}; - -/*--------------------------------------------------------------------------*/ - -Form.Element = { - focus: function(element) { - $(element).focus(); - return element; - }, - - select: function(element) { - $(element).select(); - return element; - } -}; - -Form.Element.Methods = { - serialize: function(element) { - element = $(element); - if (!element.disabled && element.name) { - var value = element.getValue(); - if (value != undefined) { - var pair = { }; - pair[element.name] = value; - return Object.toQueryString(pair); - } - } - return ''; - }, - - getValue: function(element) { - element = $(element); - var method = element.tagName.toLowerCase(); - return Form.Element.Serializers[method](element); - }, - - setValue: function(element, value) { - element = $(element); - var method = element.tagName.toLowerCase(); - Form.Element.Serializers[method](element, value); - return element; - }, - - clear: function(element) { - $(element).value = ''; - return element; - }, - - present: function(element) { - return $(element).value != ''; - }, - - activate: function(element) { - element = $(element); - try { - element.focus(); - if (element.select && (element.tagName.toLowerCase() != 'input' || - !['button', 'reset', 'submit'].include(element.type))) - element.select(); - } catch (e) { } - return element; - }, - - disable: function(element) { - element = $(element); - element.blur(); - element.disabled = true; - return element; - }, - - enable: function(element) { - element = $(element); - element.disabled = false; - return element; - } -}; - -/*--------------------------------------------------------------------------*/ - -var Field = Form.Element; -var $F = Form.Element.Methods.getValue; - -/*--------------------------------------------------------------------------*/ - -Form.Element.Serializers = { - input: function(element, value) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - return Form.Element.Serializers.inputSelector(element, value); - default: - return Form.Element.Serializers.textarea(element, value); - } - }, - - inputSelector: function(element, value) { - if (value === undefined) return element.checked ? element.value : null; - else element.checked = !!value; - }, - - textarea: function(element, value) { - if (value === undefined) return element.value; - else element.value = value; - }, - - select: function(element, index) { - if (index === undefined) - return this[element.type == 'select-one' ? - 'selectOne' : 'selectMany'](element); - else { - var opt, value, single = !Object.isArray(index); - for (var i = 0, length = element.length; i < length; i++) { - opt = element.options[i]; - value = this.optionValue(opt); - if (single) { - if (value == index) { - opt.selected = true; - return; - } - } - else opt.selected = index.include(value); - } - } - }, - - selectOne: function(element) { - var index = element.selectedIndex; - return index >= 0 ? this.optionValue(element.options[index]) : null; - }, - - selectMany: function(element) { - var values, length = element.length; - if (!length) return null; - - for (var i = 0, values = []; i < length; i++) { - var opt = element.options[i]; - if (opt.selected) values.push(this.optionValue(opt)); - } - return values; - }, - - optionValue: function(opt) { - // extend element because hasAttribute may not be native - return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text; - } -}; - -/*--------------------------------------------------------------------------*/ - -Abstract.TimedObserver = Class.create(PeriodicalExecuter, { - initialize: function($super, element, frequency, callback) { - $super(callback, frequency); - this.element = $(element); - this.lastValue = this.getValue(); - }, - - execute: function() { - var value = this.getValue(); - if (Object.isString(this.lastValue) && Object.isString(value) ? - this.lastValue != value : String(this.lastValue) != String(value)) { - this.callback(this.element, value); - this.lastValue = value; - } - } -}); - -Form.Element.Observer = Class.create(Abstract.TimedObserver, { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.Observer = Class.create(Abstract.TimedObserver, { - getValue: function() { - return Form.serialize(this.element); - } -}); - -/*--------------------------------------------------------------------------*/ - -Abstract.EventObserver = Class.create({ - initialize: function(element, callback) { - this.element = $(element); - this.callback = callback; - - this.lastValue = this.getValue(); - if (this.element.tagName.toLowerCase() == 'form') - this.registerFormCallbacks(); - else - this.registerCallback(this.element); - }, - - onElementEvent: function() { - var value = this.getValue(); - if (this.lastValue != value) { - this.callback(this.element, value); - this.lastValue = value; - } - }, - - registerFormCallbacks: function() { - Form.getElements(this.element).each(this.registerCallback, this); - }, - - registerCallback: function(element) { - if (element.type) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - Event.observe(element, 'click', this.onElementEvent.bind(this)); - break; - default: - Event.observe(element, 'change', this.onElementEvent.bind(this)); - break; - } - } - } -}); - -Form.Element.EventObserver = Class.create(Abstract.EventObserver, { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.EventObserver = Class.create(Abstract.EventObserver, { - getValue: function() { - return Form.serialize(this.element); - } -}); -if (!window.Event) var Event = { }; - -Object.extend(Event, { - KEY_BACKSPACE: 8, - KEY_TAB: 9, - KEY_RETURN: 13, - KEY_ESC: 27, - KEY_LEFT: 37, - KEY_UP: 38, - KEY_RIGHT: 39, - KEY_DOWN: 40, - KEY_DELETE: 46, - KEY_HOME: 36, - KEY_END: 35, - KEY_PAGEUP: 33, - KEY_PAGEDOWN: 34, - KEY_INSERT: 45, - - cache: { }, - - relatedTarget: function(event) { - var element; - switch(event.type) { - case 'mouseover': element = event.fromElement; break; - case 'mouseout': element = event.toElement; break; - default: return null; - } - return Element.extend(element); - } -}); - -Event.Methods = (function() { - var isButton; - - if (Prototype.Browser.IE) { - var buttonMap = { 0: 1, 1: 4, 2: 2 }; - isButton = function(event, code) { - return event.button == buttonMap[code]; - }; - - } else if (Prototype.Browser.WebKit) { - isButton = function(event, code) { - switch (code) { - case 0: return event.which == 1 && !event.metaKey; - case 1: return event.which == 1 && event.metaKey; - default: return false; - } - }; - - } else { - isButton = function(event, code) { - return event.which ? (event.which === code + 1) : (event.button === code); - }; - } - - return { - isLeftClick: function(event) { return isButton(event, 0) }, - isMiddleClick: function(event) { return isButton(event, 1) }, - isRightClick: function(event) { return isButton(event, 2) }, - - element: function(event) { - var node = Event.extend(event).target; - return Element.extend(node.nodeType == Node.TEXT_NODE ? node.parentNode : node); - }, - - findElement: function(event, expression) { - var element = Event.element(event); - return element.match(expression) ? element : element.up(expression); - }, - - pointer: function(event) { - return { - x: event.pageX || (event.clientX + - (document.documentElement.scrollLeft || document.body.scrollLeft)), - y: event.pageY || (event.clientY + - (document.documentElement.scrollTop || document.body.scrollTop)) - }; - }, - - pointerX: function(event) { return Event.pointer(event).x }, - pointerY: function(event) { return Event.pointer(event).y }, - - stop: function(event) { - Event.extend(event); - event.preventDefault(); - event.stopPropagation(); - event.stopped = true; - } - }; -})(); - -Event.extend = (function() { - var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { - m[name] = Event.Methods[name].methodize(); - return m; - }); - - if (Prototype.Browser.IE) { - Object.extend(methods, { - stopPropagation: function() { this.cancelBubble = true }, - preventDefault: function() { this.returnValue = false }, - inspect: function() { return "[object Event]" } - }); - - return function(event) { - if (!event) return false; - if (event._extendedByPrototype) return event; - - event._extendedByPrototype = Prototype.emptyFunction; - var pointer = Event.pointer(event); - Object.extend(event, { - target: event.srcElement, - relatedTarget: Event.relatedTarget(event), - pageX: pointer.x, - pageY: pointer.y - }); - return Object.extend(event, methods); - }; - - } else { - Event.prototype = Event.prototype || document.createEvent("HTMLEvents").__proto__; - Object.extend(Event.prototype, methods); - return Prototype.K; - } -})(); - -Object.extend(Event, (function() { - var cache = Event.cache; - - function getEventID(element) { - if (element._eventID) return element._eventID; - arguments.callee.id = arguments.callee.id || 1; - return element._eventID = ++arguments.callee.id; - } - - function getDOMEventName(eventName) { - if (eventName && eventName.include(':')) return "dataavailable"; - return eventName; - } - - function getCacheForID(id) { - return cache[id] = cache[id] || { }; - } - - function getWrappersForEventName(id, eventName) { - var c = getCacheForID(id); - return c[eventName] = c[eventName] || []; - } - - function createWrapper(element, eventName, handler) { - var id = getEventID(element); - var c = getWrappersForEventName(id, eventName); - if (c.pluck("handler").include(handler)) return false; - - var wrapper = function(event) { - if (!Event || !Event.extend || - (event.eventName && event.eventName != eventName)) - return false; - - Event.extend(event); - handler.call(element, event) - }; - - wrapper.handler = handler; - c.push(wrapper); - return wrapper; - } - - function findWrapper(id, eventName, handler) { - var c = getWrappersForEventName(id, eventName); - return c.find(function(wrapper) { return wrapper.handler == handler }); - } - - function destroyWrapper(id, eventName, handler) { - var c = getCacheForID(id); - if (!c[eventName]) return false; - c[eventName] = c[eventName].without(findWrapper(id, eventName, handler)); - } - - function destroyCache() { - for (var id in cache) - for (var eventName in cache[id]) - cache[id][eventName] = null; - } - - if (window.attachEvent) { - window.attachEvent("onunload", destroyCache); - } - - return { - observe: function(element, eventName, handler) { - element = $(element); - var name = getDOMEventName(eventName); - - var wrapper = createWrapper(element, eventName, handler); - if (!wrapper) return element; - - if (element.addEventListener) { - element.addEventListener(name, wrapper, false); - } else { - element.attachEvent("on" + name, wrapper); - } - - return element; - }, - - stopObserving: function(element, eventName, handler) { - element = $(element); - var id = getEventID(element), name = getDOMEventName(eventName); - - if (!handler && eventName) { - getWrappersForEventName(id, eventName).each(function(wrapper) { - element.stopObserving(eventName, wrapper.handler); - }); - return element; - - } else if (!eventName) { - Object.keys(getCacheForID(id)).each(function(eventName) { - element.stopObserving(eventName); - }); - return element; - } - - var wrapper = findWrapper(id, eventName, handler); - if (!wrapper) return element; - - if (element.removeEventListener) { - element.removeEventListener(name, wrapper, false); - } else { - element.detachEvent("on" + name, wrapper); - } - - destroyWrapper(id, eventName, handler); - - return element; - }, - - fire: function(element, eventName, memo) { - element = $(element); - if (element == document && document.createEvent && !element.dispatchEvent) - element = document.documentElement; - - if (document.createEvent) { - var event = document.createEvent("HTMLEvents"); - event.initEvent("dataavailable", true, true); - } else { - var event = document.createEventObject(); - event.eventType = "ondataavailable"; - } - - event.eventName = eventName; - event.memo = memo || { }; - - if (document.createEvent) { - element.dispatchEvent(event); - } else { - element.fireEvent(event.eventType, event); - } - - return event; - } - }; -})()); - -Object.extend(Event, Event.Methods); - -Element.addMethods({ - fire: Event.fire, - observe: Event.observe, - stopObserving: Event.stopObserving -}); - -Object.extend(document, { - fire: Element.Methods.fire.methodize(), - observe: Element.Methods.observe.methodize(), - stopObserving: Element.Methods.stopObserving.methodize() -}); - -(function() { - /* Support for the DOMContentLoaded event is based on work by Dan Webb, - Matthias Miller, Dean Edwards and John Resig. */ - - var timer, fired = false; - - function fireContentLoadedEvent() { - if (fired) return; - if (timer) window.clearInterval(timer); - document.fire("dom:loaded"); - fired = true; - } - - if (document.addEventListener) { - if (Prototype.Browser.WebKit) { - timer = window.setInterval(function() { - if (/loaded|complete/.test(document.readyState)) - fireContentLoadedEvent(); - }, 0); - - Event.observe(window, "load", fireContentLoadedEvent); - - } else { - document.addEventListener("DOMContentLoaded", - fireContentLoadedEvent, false); - } - - } else { - document.write(" - - - -

        Fetching object from server

        -
        - Wait...
        - -
        - - - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/data/prototype.js b/lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/data/prototype.js deleted file mode 100644 index 5c734629..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/json_pure-1.2.0/data/prototype.js +++ /dev/null @@ -1,4184 +0,0 @@ -/* Prototype JavaScript framework, version 1.6.0 - * (c) 2005-2007 Sam Stephenson - * - * Prototype is freely distributable under the terms of an MIT-style license. - * For details, see the Prototype web site: http://www.prototypejs.org/ - * - *--------------------------------------------------------------------------*/ - -var Prototype = { - Version: '1.6.0', - - Browser: { - IE: !!(window.attachEvent && !window.opera), - Opera: !!window.opera, - WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, - Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1, - MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) - }, - - BrowserFeatures: { - XPath: !!document.evaluate, - ElementExtensions: !!window.HTMLElement, - SpecificElementExtensions: - document.createElement('div').__proto__ && - document.createElement('div').__proto__ !== - document.createElement('form').__proto__ - }, - - ScriptFragment: ']*>([\\S\\s]*?)<\/script>', - JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, - - emptyFunction: function() { }, - K: function(x) { return x } -}; - -if (Prototype.Browser.MobileSafari) - Prototype.BrowserFeatures.SpecificElementExtensions = false; - -if (Prototype.Browser.WebKit) - Prototype.BrowserFeatures.XPath = false; - -/* Based on Alex Arnell's inheritance implementation. */ -var Class = { - create: function() { - var parent = null, properties = $A(arguments); - if (Object.isFunction(properties[0])) - parent = properties.shift(); - - function klass() { - this.initialize.apply(this, arguments); - } - - Object.extend(klass, Class.Methods); - klass.superclass = parent; - klass.subclasses = []; - - if (parent) { - var subclass = function() { }; - subclass.prototype = parent.prototype; - klass.prototype = new subclass; - parent.subclasses.push(klass); - } - - for (var i = 0; i < properties.length; i++) - klass.addMethods(properties[i]); - - if (!klass.prototype.initialize) - klass.prototype.initialize = Prototype.emptyFunction; - - klass.prototype.constructor = klass; - - return klass; - } -}; - -Class.Methods = { - addMethods: function(source) { - var ancestor = this.superclass && this.superclass.prototype; - var properties = Object.keys(source); - - if (!Object.keys({ toString: true }).length) - properties.push("toString", "valueOf"); - - for (var i = 0, length = properties.length; i < length; i++) { - var property = properties[i], value = source[property]; - if (ancestor && Object.isFunction(value) && - value.argumentNames().first() == "$super") { - var method = value, value = Object.extend((function(m) { - return function() { return ancestor[m].apply(this, arguments) }; - })(property).wrap(method), { - valueOf: function() { return method }, - toString: function() { return method.toString() } - }); - } - this.prototype[property] = value; - } - - return this; - } -}; - -var Abstract = { }; - -Object.extend = function(destination, source) { - for (var property in source) - destination[property] = source[property]; - return destination; -}; - -Object.extend(Object, { - inspect: function(object) { - try { - if (object === undefined) return 'undefined'; - if (object === null) return 'null'; - return object.inspect ? object.inspect() : object.toString(); - } catch (e) { - if (e instanceof RangeError) return '...'; - throw e; - } - }, - - toJSON: function(object) { - var type = typeof object; - switch (type) { - case 'undefined': - case 'function': - case 'unknown': return; - case 'boolean': return object.toString(); - } - - if (object === null) return 'null'; - if (object.toJSON) return object.toJSON(); - if (Object.isElement(object)) return; - - var results = []; - for (var property in object) { - var value = Object.toJSON(object[property]); - if (value !== undefined) - results.push(property.toJSON() + ': ' + value); - } - - return '{' + results.join(', ') + '}'; - }, - - toQueryString: function(object) { - return $H(object).toQueryString(); - }, - - toHTML: function(object) { - return object && object.toHTML ? object.toHTML() : String.interpret(object); - }, - - keys: function(object) { - var keys = []; - for (var property in object) - keys.push(property); - return keys; - }, - - values: function(object) { - var values = []; - for (var property in object) - values.push(object[property]); - return values; - }, - - clone: function(object) { - return Object.extend({ }, object); - }, - - isElement: function(object) { - return object && object.nodeType == 1; - }, - - isArray: function(object) { - return object && object.constructor === Array; - }, - - isHash: function(object) { - return object instanceof Hash; - }, - - isFunction: function(object) { - return typeof object == "function"; - }, - - isString: function(object) { - return typeof object == "string"; - }, - - isNumber: function(object) { - return typeof object == "number"; - }, - - isUndefined: function(object) { - return typeof object == "undefined"; - } -}); - -Object.extend(Function.prototype, { - argumentNames: function() { - var names = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip"); - return names.length == 1 && !names[0] ? [] : names; - }, - - bind: function() { - if (arguments.length < 2 && arguments[0] === undefined) return this; - var __method = this, args = $A(arguments), object = args.shift(); - return function() { - return __method.apply(object, args.concat($A(arguments))); - } - }, - - bindAsEventListener: function() { - var __method = this, args = $A(arguments), object = args.shift(); - return function(event) { - return __method.apply(object, [event || window.event].concat(args)); - } - }, - - curry: function() { - if (!arguments.length) return this; - var __method = this, args = $A(arguments); - return function() { - return __method.apply(this, args.concat($A(arguments))); - } - }, - - delay: function() { - var __method = this, args = $A(arguments), timeout = args.shift() * 1000; - return window.setTimeout(function() { - return __method.apply(__method, args); - }, timeout); - }, - - wrap: function(wrapper) { - var __method = this; - return function() { - return wrapper.apply(this, [__method.bind(this)].concat($A(arguments))); - } - }, - - methodize: function() { - if (this._methodized) return this._methodized; - var __method = this; - return this._methodized = function() { - return __method.apply(null, [this].concat($A(arguments))); - }; - } -}); - -Function.prototype.defer = Function.prototype.delay.curry(0.01); - -Date.prototype.toJSON = function() { - return '"' + this.getUTCFullYear() + '-' + - (this.getUTCMonth() + 1).toPaddedString(2) + '-' + - this.getUTCDate().toPaddedString(2) + 'T' + - this.getUTCHours().toPaddedString(2) + ':' + - this.getUTCMinutes().toPaddedString(2) + ':' + - this.getUTCSeconds().toPaddedString(2) + 'Z"'; -}; - -var Try = { - these: function() { - var returnValue; - - for (var i = 0, length = arguments.length; i < length; i++) { - var lambda = arguments[i]; - try { - returnValue = lambda(); - break; - } catch (e) { } - } - - return returnValue; - } -}; - -RegExp.prototype.match = RegExp.prototype.test; - -RegExp.escape = function(str) { - return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); -}; - -/*--------------------------------------------------------------------------*/ - -var PeriodicalExecuter = Class.create({ - initialize: function(callback, frequency) { - this.callback = callback; - this.frequency = frequency; - this.currentlyExecuting = false; - - this.registerCallback(); - }, - - registerCallback: function() { - this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); - }, - - execute: function() { - this.callback(this); - }, - - stop: function() { - if (!this.timer) return; - clearInterval(this.timer); - this.timer = null; - }, - - onTimerEvent: function() { - if (!this.currentlyExecuting) { - try { - this.currentlyExecuting = true; - this.execute(); - } finally { - this.currentlyExecuting = false; - } - } - } -}); -Object.extend(String, { - interpret: function(value) { - return value == null ? '' : String(value); - }, - specialChar: { - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '\\': '\\\\' - } -}); - -Object.extend(String.prototype, { - gsub: function(pattern, replacement) { - var result = '', source = this, match; - replacement = arguments.callee.prepareReplacement(replacement); - - while (source.length > 0) { - if (match = source.match(pattern)) { - result += source.slice(0, match.index); - result += String.interpret(replacement(match)); - source = source.slice(match.index + match[0].length); - } else { - result += source, source = ''; - } - } - return result; - }, - - sub: function(pattern, replacement, count) { - replacement = this.gsub.prepareReplacement(replacement); - count = count === undefined ? 1 : count; - - return this.gsub(pattern, function(match) { - if (--count < 0) return match[0]; - return replacement(match); - }); - }, - - scan: function(pattern, iterator) { - this.gsub(pattern, iterator); - return String(this); - }, - - truncate: function(length, truncation) { - length = length || 30; - truncation = truncation === undefined ? '...' : truncation; - return this.length > length ? - this.slice(0, length - truncation.length) + truncation : String(this); - }, - - strip: function() { - return this.replace(/^\s+/, '').replace(/\s+$/, ''); - }, - - stripTags: function() { - return this.replace(/<\/?[^>]+>/gi, ''); - }, - - stripScripts: function() { - return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); - }, - - extractScripts: function() { - var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); - var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); - return (this.match(matchAll) || []).map(function(scriptTag) { - return (scriptTag.match(matchOne) || ['', ''])[1]; - }); - }, - - evalScripts: function() { - return this.extractScripts().map(function(script) { return eval(script) }); - }, - - escapeHTML: function() { - var self = arguments.callee; - self.text.data = this; - return self.div.innerHTML; - }, - - unescapeHTML: function() { - var div = new Element('div'); - div.innerHTML = this.stripTags(); - return div.childNodes[0] ? (div.childNodes.length > 1 ? - $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) : - div.childNodes[0].nodeValue) : ''; - }, - - toQueryParams: function(separator) { - var match = this.strip().match(/([^?#]*)(#.*)?$/); - if (!match) return { }; - - return match[1].split(separator || '&').inject({ }, function(hash, pair) { - if ((pair = pair.split('='))[0]) { - var key = decodeURIComponent(pair.shift()); - var value = pair.length > 1 ? pair.join('=') : pair[0]; - if (value != undefined) value = decodeURIComponent(value); - - if (key in hash) { - if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; - hash[key].push(value); - } - else hash[key] = value; - } - return hash; - }); - }, - - toArray: function() { - return this.split(''); - }, - - succ: function() { - return this.slice(0, this.length - 1) + - String.fromCharCode(this.charCodeAt(this.length - 1) + 1); - }, - - times: function(count) { - return count < 1 ? '' : new Array(count + 1).join(this); - }, - - camelize: function() { - var parts = this.split('-'), len = parts.length; - if (len == 1) return parts[0]; - - var camelized = this.charAt(0) == '-' - ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) - : parts[0]; - - for (var i = 1; i < len; i++) - camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1); - - return camelized; - }, - - capitalize: function() { - return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); - }, - - underscore: function() { - return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase(); - }, - - dasherize: function() { - return this.gsub(/_/,'-'); - }, - - inspect: function(useDoubleQuotes) { - var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) { - var character = String.specialChar[match[0]]; - return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16); - }); - if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; - return "'" + escapedString.replace(/'/g, '\\\'') + "'"; - }, - - toJSON: function() { - return this.inspect(true); - }, - - unfilterJSON: function(filter) { - return this.sub(filter || Prototype.JSONFilter, '#{1}'); - }, - - isJSON: function() { - var str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); - return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); - }, - - evalJSON: function(sanitize) { - var json = this.unfilterJSON(); - try { - if (!sanitize || json.isJSON()) return eval('(' + json + ')'); - } catch (e) { } - throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); - }, - - include: function(pattern) { - return this.indexOf(pattern) > -1; - }, - - startsWith: function(pattern) { - return this.indexOf(pattern) === 0; - }, - - endsWith: function(pattern) { - var d = this.length - pattern.length; - return d >= 0 && this.lastIndexOf(pattern) === d; - }, - - empty: function() { - return this == ''; - }, - - blank: function() { - return /^\s*$/.test(this); - }, - - interpolate: function(object, pattern) { - return new Template(this, pattern).evaluate(object); - } -}); - -if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, { - escapeHTML: function() { - return this.replace(/&/g,'&').replace(//g,'>'); - }, - unescapeHTML: function() { - return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>'); - } -}); - -String.prototype.gsub.prepareReplacement = function(replacement) { - if (Object.isFunction(replacement)) return replacement; - var template = new Template(replacement); - return function(match) { return template.evaluate(match) }; -}; - -String.prototype.parseQuery = String.prototype.toQueryParams; - -Object.extend(String.prototype.escapeHTML, { - div: document.createElement('div'), - text: document.createTextNode('') -}); - -with (String.prototype.escapeHTML) div.appendChild(text); - -var Template = Class.create({ - initialize: function(template, pattern) { - this.template = template.toString(); - this.pattern = pattern || Template.Pattern; - }, - - evaluate: function(object) { - if (Object.isFunction(object.toTemplateReplacements)) - object = object.toTemplateReplacements(); - - return this.template.gsub(this.pattern, function(match) { - if (object == null) return ''; - - var before = match[1] || ''; - if (before == '\\') return match[2]; - - var ctx = object, expr = match[3]; - var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/, match = pattern.exec(expr); - if (match == null) return before; - - while (match != null) { - var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1]; - ctx = ctx[comp]; - if (null == ctx || '' == match[3]) break; - expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); - match = pattern.exec(expr); - } - - return before + String.interpret(ctx); - }.bind(this)); - } -}); -Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; - -var $break = { }; - -var Enumerable = { - each: function(iterator, context) { - var index = 0; - iterator = iterator.bind(context); - try { - this._each(function(value) { - iterator(value, index++); - }); - } catch (e) { - if (e != $break) throw e; - } - return this; - }, - - eachSlice: function(number, iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var index = -number, slices = [], array = this.toArray(); - while ((index += number) < array.length) - slices.push(array.slice(index, index+number)); - return slices.collect(iterator, context); - }, - - all: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result = true; - this.each(function(value, index) { - result = result && !!iterator(value, index); - if (!result) throw $break; - }); - return result; - }, - - any: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result = false; - this.each(function(value, index) { - if (result = !!iterator(value, index)) - throw $break; - }); - return result; - }, - - collect: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var results = []; - this.each(function(value, index) { - results.push(iterator(value, index)); - }); - return results; - }, - - detect: function(iterator, context) { - iterator = iterator.bind(context); - var result; - this.each(function(value, index) { - if (iterator(value, index)) { - result = value; - throw $break; - } - }); - return result; - }, - - findAll: function(iterator, context) { - iterator = iterator.bind(context); - var results = []; - this.each(function(value, index) { - if (iterator(value, index)) - results.push(value); - }); - return results; - }, - - grep: function(filter, iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var results = []; - - if (Object.isString(filter)) - filter = new RegExp(filter); - - this.each(function(value, index) { - if (filter.match(value)) - results.push(iterator(value, index)); - }); - return results; - }, - - include: function(object) { - if (Object.isFunction(this.indexOf)) - if (this.indexOf(object) != -1) return true; - - var found = false; - this.each(function(value) { - if (value == object) { - found = true; - throw $break; - } - }); - return found; - }, - - inGroupsOf: function(number, fillWith) { - fillWith = fillWith === undefined ? null : fillWith; - return this.eachSlice(number, function(slice) { - while(slice.length < number) slice.push(fillWith); - return slice; - }); - }, - - inject: function(memo, iterator, context) { - iterator = iterator.bind(context); - this.each(function(value, index) { - memo = iterator(memo, value, index); - }); - return memo; - }, - - invoke: function(method) { - var args = $A(arguments).slice(1); - return this.map(function(value) { - return value[method].apply(value, args); - }); - }, - - max: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result; - this.each(function(value, index) { - value = iterator(value, index); - if (result == undefined || value >= result) - result = value; - }); - return result; - }, - - min: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result; - this.each(function(value, index) { - value = iterator(value, index); - if (result == undefined || value < result) - result = value; - }); - return result; - }, - - partition: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var trues = [], falses = []; - this.each(function(value, index) { - (iterator(value, index) ? - trues : falses).push(value); - }); - return [trues, falses]; - }, - - pluck: function(property) { - var results = []; - this.each(function(value) { - results.push(value[property]); - }); - return results; - }, - - reject: function(iterator, context) { - iterator = iterator.bind(context); - var results = []; - this.each(function(value, index) { - if (!iterator(value, index)) - results.push(value); - }); - return results; - }, - - sortBy: function(iterator, context) { - iterator = iterator.bind(context); - return this.map(function(value, index) { - return {value: value, criteria: iterator(value, index)}; - }).sort(function(left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - }).pluck('value'); - }, - - toArray: function() { - return this.map(); - }, - - zip: function() { - var iterator = Prototype.K, args = $A(arguments); - if (Object.isFunction(args.last())) - iterator = args.pop(); - - var collections = [this].concat(args).map($A); - return this.map(function(value, index) { - return iterator(collections.pluck(index)); - }); - }, - - size: function() { - return this.toArray().length; - }, - - inspect: function() { - return '#'; - } -}; - -Object.extend(Enumerable, { - map: Enumerable.collect, - find: Enumerable.detect, - select: Enumerable.findAll, - filter: Enumerable.findAll, - member: Enumerable.include, - entries: Enumerable.toArray, - every: Enumerable.all, - some: Enumerable.any -}); -function $A(iterable) { - if (!iterable) return []; - if (iterable.toArray) return iterable.toArray(); - var length = iterable.length, results = new Array(length); - while (length--) results[length] = iterable[length]; - return results; -} - -if (Prototype.Browser.WebKit) { - function $A(iterable) { - if (!iterable) return []; - if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') && - iterable.toArray) return iterable.toArray(); - var length = iterable.length, results = new Array(length); - while (length--) results[length] = iterable[length]; - return results; - } -} - -Array.from = $A; - -Object.extend(Array.prototype, Enumerable); - -if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse; - -Object.extend(Array.prototype, { - _each: function(iterator) { - for (var i = 0, length = this.length; i < length; i++) - iterator(this[i]); - }, - - clear: function() { - this.length = 0; - return this; - }, - - first: function() { - return this[0]; - }, - - last: function() { - return this[this.length - 1]; - }, - - compact: function() { - return this.select(function(value) { - return value != null; - }); - }, - - flatten: function() { - return this.inject([], function(array, value) { - return array.concat(Object.isArray(value) ? - value.flatten() : [value]); - }); - }, - - without: function() { - var values = $A(arguments); - return this.select(function(value) { - return !values.include(value); - }); - }, - - reverse: function(inline) { - return (inline !== false ? this : this.toArray())._reverse(); - }, - - reduce: function() { - return this.length > 1 ? this : this[0]; - }, - - uniq: function(sorted) { - return this.inject([], function(array, value, index) { - if (0 == index || (sorted ? array.last() != value : !array.include(value))) - array.push(value); - return array; - }); - }, - - intersect: function(array) { - return this.uniq().findAll(function(item) { - return array.detect(function(value) { return item === value }); - }); - }, - - clone: function() { - return [].concat(this); - }, - - size: function() { - return this.length; - }, - - inspect: function() { - return '[' + this.map(Object.inspect).join(', ') + ']'; - }, - - toJSON: function() { - var results = []; - this.each(function(object) { - var value = Object.toJSON(object); - if (value !== undefined) results.push(value); - }); - return '[' + results.join(', ') + ']'; - } -}); - -// use native browser JS 1.6 implementation if available -if (Object.isFunction(Array.prototype.forEach)) - Array.prototype._each = Array.prototype.forEach; - -if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) { - i || (i = 0); - var length = this.length; - if (i < 0) i = length + i; - for (; i < length; i++) - if (this[i] === item) return i; - return -1; -}; - -if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) { - i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; - var n = this.slice(0, i).reverse().indexOf(item); - return (n < 0) ? n : i - n - 1; -}; - -Array.prototype.toArray = Array.prototype.clone; - -function $w(string) { - if (!Object.isString(string)) return []; - string = string.strip(); - return string ? string.split(/\s+/) : []; -} - -if (Prototype.Browser.Opera){ - Array.prototype.concat = function() { - var array = []; - for (var i = 0, length = this.length; i < length; i++) array.push(this[i]); - for (var i = 0, length = arguments.length; i < length; i++) { - if (Object.isArray(arguments[i])) { - for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++) - array.push(arguments[i][j]); - } else { - array.push(arguments[i]); - } - } - return array; - }; -} -Object.extend(Number.prototype, { - toColorPart: function() { - return this.toPaddedString(2, 16); - }, - - succ: function() { - return this + 1; - }, - - times: function(iterator) { - $R(0, this, true).each(iterator); - return this; - }, - - toPaddedString: function(length, radix) { - var string = this.toString(radix || 10); - return '0'.times(length - string.length) + string; - }, - - toJSON: function() { - return isFinite(this) ? this.toString() : 'null'; - } -}); - -$w('abs round ceil floor').each(function(method){ - Number.prototype[method] = Math[method].methodize(); -}); -function $H(object) { - return new Hash(object); -}; - -var Hash = Class.create(Enumerable, (function() { - if (function() { - var i = 0, Test = function(value) { this.key = value }; - Test.prototype.key = 'foo'; - for (var property in new Test('bar')) i++; - return i > 1; - }()) { - function each(iterator) { - var cache = []; - for (var key in this._object) { - var value = this._object[key]; - if (cache.include(key)) continue; - cache.push(key); - var pair = [key, value]; - pair.key = key; - pair.value = value; - iterator(pair); - } - } - } else { - function each(iterator) { - for (var key in this._object) { - var value = this._object[key], pair = [key, value]; - pair.key = key; - pair.value = value; - iterator(pair); - } - } - } - - function toQueryPair(key, value) { - if (Object.isUndefined(value)) return key; - return key + '=' + encodeURIComponent(String.interpret(value)); - } - - return { - initialize: function(object) { - this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); - }, - - _each: each, - - set: function(key, value) { - return this._object[key] = value; - }, - - get: function(key) { - return this._object[key]; - }, - - unset: function(key) { - var value = this._object[key]; - delete this._object[key]; - return value; - }, - - toObject: function() { - return Object.clone(this._object); - }, - - keys: function() { - return this.pluck('key'); - }, - - values: function() { - return this.pluck('value'); - }, - - index: function(value) { - var match = this.detect(function(pair) { - return pair.value === value; - }); - return match && match.key; - }, - - merge: function(object) { - return this.clone().update(object); - }, - - update: function(object) { - return new Hash(object).inject(this, function(result, pair) { - result.set(pair.key, pair.value); - return result; - }); - }, - - toQueryString: function() { - return this.map(function(pair) { - var key = encodeURIComponent(pair.key), values = pair.value; - - if (values && typeof values == 'object') { - if (Object.isArray(values)) - return values.map(toQueryPair.curry(key)).join('&'); - } - return toQueryPair(key, values); - }).join('&'); - }, - - inspect: function() { - return '#'; - }, - - toJSON: function() { - return Object.toJSON(this.toObject()); - }, - - clone: function() { - return new Hash(this); - } - } -})()); - -Hash.prototype.toTemplateReplacements = Hash.prototype.toObject; -Hash.from = $H; -var ObjectRange = Class.create(Enumerable, { - initialize: function(start, end, exclusive) { - this.start = start; - this.end = end; - this.exclusive = exclusive; - }, - - _each: function(iterator) { - var value = this.start; - while (this.include(value)) { - iterator(value); - value = value.succ(); - } - }, - - include: function(value) { - if (value < this.start) - return false; - if (this.exclusive) - return value < this.end; - return value <= this.end; - } -}); - -var $R = function(start, end, exclusive) { - return new ObjectRange(start, end, exclusive); -}; - -var Ajax = { - getTransport: function() { - return Try.these( - function() {return new XMLHttpRequest()}, - function() {return new ActiveXObject('Msxml2.XMLHTTP')}, - function() {return new ActiveXObject('Microsoft.XMLHTTP')} - ) || false; - }, - - activeRequestCount: 0 -}; - -Ajax.Responders = { - responders: [], - - _each: function(iterator) { - this.responders._each(iterator); - }, - - register: function(responder) { - if (!this.include(responder)) - this.responders.push(responder); - }, - - unregister: function(responder) { - this.responders = this.responders.without(responder); - }, - - dispatch: function(callback, request, transport, json) { - this.each(function(responder) { - if (Object.isFunction(responder[callback])) { - try { - responder[callback].apply(responder, [request, transport, json]); - } catch (e) { } - } - }); - } -}; - -Object.extend(Ajax.Responders, Enumerable); - -Ajax.Responders.register({ - onCreate: function() { Ajax.activeRequestCount++ }, - onComplete: function() { Ajax.activeRequestCount-- } -}); - -Ajax.Base = Class.create({ - initialize: function(options) { - this.options = { - method: 'post', - asynchronous: true, - contentType: 'application/x-www-form-urlencoded', - encoding: 'UTF-8', - parameters: '', - evalJSON: true, - evalJS: true - }; - Object.extend(this.options, options || { }); - - this.options.method = this.options.method.toLowerCase(); - if (Object.isString(this.options.parameters)) - this.options.parameters = this.options.parameters.toQueryParams(); - } -}); - -Ajax.Request = Class.create(Ajax.Base, { - _complete: false, - - initialize: function($super, url, options) { - $super(options); - this.transport = Ajax.getTransport(); - this.request(url); - }, - - request: function(url) { - this.url = url; - this.method = this.options.method; - var params = Object.clone(this.options.parameters); - - if (!['get', 'post'].include(this.method)) { - // simulate other verbs over post - params['_method'] = this.method; - this.method = 'post'; - } - - this.parameters = params; - - if (params = Object.toQueryString(params)) { - // when GET, append parameters to URL - if (this.method == 'get') - this.url += (this.url.include('?') ? '&' : '?') + params; - else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) - params += '&_='; - } - - try { - var response = new Ajax.Response(this); - if (this.options.onCreate) this.options.onCreate(response); - Ajax.Responders.dispatch('onCreate', this, response); - - this.transport.open(this.method.toUpperCase(), this.url, - this.options.asynchronous); - - if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); - - this.transport.onreadystatechange = this.onStateChange.bind(this); - this.setRequestHeaders(); - - this.body = this.method == 'post' ? (this.options.postBody || params) : null; - this.transport.send(this.body); - - /* Force Firefox to handle ready state 4 for synchronous requests */ - if (!this.options.asynchronous && this.transport.overrideMimeType) - this.onStateChange(); - - } - catch (e) { - this.dispatchException(e); - } - }, - - onStateChange: function() { - var readyState = this.transport.readyState; - if (readyState > 1 && !((readyState == 4) && this._complete)) - this.respondToReadyState(this.transport.readyState); - }, - - setRequestHeaders: function() { - var headers = { - 'X-Requested-With': 'XMLHttpRequest', - 'X-Prototype-Version': Prototype.Version, - 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' - }; - - if (this.method == 'post') { - headers['Content-type'] = this.options.contentType + - (this.options.encoding ? '; charset=' + this.options.encoding : ''); - - /* Force "Connection: close" for older Mozilla browsers to work - * around a bug where XMLHttpRequest sends an incorrect - * Content-length header. See Mozilla Bugzilla #246651. - */ - if (this.transport.overrideMimeType && - (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) - headers['Connection'] = 'close'; - } - - // user-defined headers - if (typeof this.options.requestHeaders == 'object') { - var extras = this.options.requestHeaders; - - if (Object.isFunction(extras.push)) - for (var i = 0, length = extras.length; i < length; i += 2) - headers[extras[i]] = extras[i+1]; - else - $H(extras).each(function(pair) { headers[pair.key] = pair.value }); - } - - for (var name in headers) - this.transport.setRequestHeader(name, headers[name]); - }, - - success: function() { - var status = this.getStatus(); - return !status || (status >= 200 && status < 300); - }, - - getStatus: function() { - try { - return this.transport.status || 0; - } catch (e) { return 0 } - }, - - respondToReadyState: function(readyState) { - var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); - - if (state == 'Complete') { - try { - this._complete = true; - (this.options['on' + response.status] - || this.options['on' + (this.success() ? 'Success' : 'Failure')] - || Prototype.emptyFunction)(response, response.headerJSON); - } catch (e) { - this.dispatchException(e); - } - - var contentType = response.getHeader('Content-type'); - if (this.options.evalJS == 'force' - || (this.options.evalJS && contentType - && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) - this.evalResponse(); - } - - try { - (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); - Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); - } catch (e) { - this.dispatchException(e); - } - - if (state == 'Complete') { - // avoid memory leak in MSIE: clean up - this.transport.onreadystatechange = Prototype.emptyFunction; - } - }, - - getHeader: function(name) { - try { - return this.transport.getResponseHeader(name); - } catch (e) { return null } - }, - - evalResponse: function() { - try { - return eval((this.transport.responseText || '').unfilterJSON()); - } catch (e) { - this.dispatchException(e); - } - }, - - dispatchException: function(exception) { - (this.options.onException || Prototype.emptyFunction)(this, exception); - Ajax.Responders.dispatch('onException', this, exception); - } -}); - -Ajax.Request.Events = - ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; - -Ajax.Response = Class.create({ - initialize: function(request){ - this.request = request; - var transport = this.transport = request.transport, - readyState = this.readyState = transport.readyState; - - if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { - this.status = this.getStatus(); - this.statusText = this.getStatusText(); - this.responseText = String.interpret(transport.responseText); - this.headerJSON = this._getHeaderJSON(); - } - - if(readyState == 4) { - var xml = transport.responseXML; - this.responseXML = xml === undefined ? null : xml; - this.responseJSON = this._getResponseJSON(); - } - }, - - status: 0, - statusText: '', - - getStatus: Ajax.Request.prototype.getStatus, - - getStatusText: function() { - try { - return this.transport.statusText || ''; - } catch (e) { return '' } - }, - - getHeader: Ajax.Request.prototype.getHeader, - - getAllHeaders: function() { - try { - return this.getAllResponseHeaders(); - } catch (e) { return null } - }, - - getResponseHeader: function(name) { - return this.transport.getResponseHeader(name); - }, - - getAllResponseHeaders: function() { - return this.transport.getAllResponseHeaders(); - }, - - _getHeaderJSON: function() { - var json = this.getHeader('X-JSON'); - if (!json) return null; - json = decodeURIComponent(escape(json)); - try { - return json.evalJSON(this.request.options.sanitizeJSON); - } catch (e) { - this.request.dispatchException(e); - } - }, - - _getResponseJSON: function() { - var options = this.request.options; - if (!options.evalJSON || (options.evalJSON != 'force' && - !(this.getHeader('Content-type') || '').include('application/json'))) - return null; - try { - return this.transport.responseText.evalJSON(options.sanitizeJSON); - } catch (e) { - this.request.dispatchException(e); - } - } -}); - -Ajax.Updater = Class.create(Ajax.Request, { - initialize: function($super, container, url, options) { - this.container = { - success: (container.success || container), - failure: (container.failure || (container.success ? null : container)) - }; - - options = options || { }; - var onComplete = options.onComplete; - options.onComplete = (function(response, param) { - this.updateContent(response.responseText); - if (Object.isFunction(onComplete)) onComplete(response, param); - }).bind(this); - - $super(url, options); - }, - - updateContent: function(responseText) { - var receiver = this.container[this.success() ? 'success' : 'failure'], - options = this.options; - - if (!options.evalScripts) responseText = responseText.stripScripts(); - - if (receiver = $(receiver)) { - if (options.insertion) { - if (Object.isString(options.insertion)) { - var insertion = { }; insertion[options.insertion] = responseText; - receiver.insert(insertion); - } - else options.insertion(receiver, responseText); - } - else receiver.update(responseText); - } - - if (this.success()) { - if (this.onComplete) this.onComplete.bind(this).defer(); - } - } -}); - -Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { - initialize: function($super, container, url, options) { - $super(options); - this.onComplete = this.options.onComplete; - - this.frequency = (this.options.frequency || 2); - this.decay = (this.options.decay || 1); - - this.updater = { }; - this.container = container; - this.url = url; - - this.start(); - }, - - start: function() { - this.options.onComplete = this.updateComplete.bind(this); - this.onTimerEvent(); - }, - - stop: function() { - this.updater.options.onComplete = undefined; - clearTimeout(this.timer); - (this.onComplete || Prototype.emptyFunction).apply(this, arguments); - }, - - updateComplete: function(response) { - if (this.options.decay) { - this.decay = (response.responseText == this.lastText ? - this.decay * this.options.decay : 1); - - this.lastText = response.responseText; - } - this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); - }, - - onTimerEvent: function() { - this.updater = new Ajax.Updater(this.container, this.url, this.options); - } -}); -function $(element) { - if (arguments.length > 1) { - for (var i = 0, elements = [], length = arguments.length; i < length; i++) - elements.push($(arguments[i])); - return elements; - } - if (Object.isString(element)) - element = document.getElementById(element); - return Element.extend(element); -} - -if (Prototype.BrowserFeatures.XPath) { - document._getElementsByXPath = function(expression, parentElement) { - var results = []; - var query = document.evaluate(expression, $(parentElement) || document, - null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); - for (var i = 0, length = query.snapshotLength; i < length; i++) - results.push(Element.extend(query.snapshotItem(i))); - return results; - }; -} - -/*--------------------------------------------------------------------------*/ - -if (!window.Node) var Node = { }; - -if (!Node.ELEMENT_NODE) { - // DOM level 2 ECMAScript Language Binding - Object.extend(Node, { - ELEMENT_NODE: 1, - ATTRIBUTE_NODE: 2, - TEXT_NODE: 3, - CDATA_SECTION_NODE: 4, - ENTITY_REFERENCE_NODE: 5, - ENTITY_NODE: 6, - PROCESSING_INSTRUCTION_NODE: 7, - COMMENT_NODE: 8, - DOCUMENT_NODE: 9, - DOCUMENT_TYPE_NODE: 10, - DOCUMENT_FRAGMENT_NODE: 11, - NOTATION_NODE: 12 - }); -} - -(function() { - var element = this.Element; - this.Element = function(tagName, attributes) { - attributes = attributes || { }; - tagName = tagName.toLowerCase(); - var cache = Element.cache; - if (Prototype.Browser.IE && attributes.name) { - tagName = '<' + tagName + ' name="' + attributes.name + '">'; - delete attributes.name; - return Element.writeAttribute(document.createElement(tagName), attributes); - } - if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); - return Element.writeAttribute(cache[tagName].cloneNode(false), attributes); - }; - Object.extend(this.Element, element || { }); -}).call(window); - -Element.cache = { }; - -Element.Methods = { - visible: function(element) { - return $(element).style.display != 'none'; - }, - - toggle: function(element) { - element = $(element); - Element[Element.visible(element) ? 'hide' : 'show'](element); - return element; - }, - - hide: function(element) { - $(element).style.display = 'none'; - return element; - }, - - show: function(element) { - $(element).style.display = ''; - return element; - }, - - remove: function(element) { - element = $(element); - element.parentNode.removeChild(element); - return element; - }, - - update: function(element, content) { - element = $(element); - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) return element.update().insert(content); - content = Object.toHTML(content); - element.innerHTML = content.stripScripts(); - content.evalScripts.bind(content).defer(); - return element; - }, - - replace: function(element, content) { - element = $(element); - if (content && content.toElement) content = content.toElement(); - else if (!Object.isElement(content)) { - content = Object.toHTML(content); - var range = element.ownerDocument.createRange(); - range.selectNode(element); - content.evalScripts.bind(content).defer(); - content = range.createContextualFragment(content.stripScripts()); - } - element.parentNode.replaceChild(content, element); - return element; - }, - - insert: function(element, insertions) { - element = $(element); - - if (Object.isString(insertions) || Object.isNumber(insertions) || - Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) - insertions = {bottom:insertions}; - - var content, t, range; - - for (position in insertions) { - content = insertions[position]; - position = position.toLowerCase(); - t = Element._insertionTranslations[position]; - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - t.insert(element, content); - continue; - } - - content = Object.toHTML(content); - - range = element.ownerDocument.createRange(); - t.initializeRange(element, range); - t.insert(element, range.createContextualFragment(content.stripScripts())); - - content.evalScripts.bind(content).defer(); - } - - return element; - }, - - wrap: function(element, wrapper, attributes) { - element = $(element); - if (Object.isElement(wrapper)) - $(wrapper).writeAttribute(attributes || { }); - else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); - else wrapper = new Element('div', wrapper); - if (element.parentNode) - element.parentNode.replaceChild(wrapper, element); - wrapper.appendChild(element); - return wrapper; - }, - - inspect: function(element) { - element = $(element); - var result = '<' + element.tagName.toLowerCase(); - $H({'id': 'id', 'className': 'class'}).each(function(pair) { - var property = pair.first(), attribute = pair.last(); - var value = (element[property] || '').toString(); - if (value) result += ' ' + attribute + '=' + value.inspect(true); - }); - return result + '>'; - }, - - recursivelyCollect: function(element, property) { - element = $(element); - var elements = []; - while (element = element[property]) - if (element.nodeType == 1) - elements.push(Element.extend(element)); - return elements; - }, - - ancestors: function(element) { - return $(element).recursivelyCollect('parentNode'); - }, - - descendants: function(element) { - return $A($(element).getElementsByTagName('*')).each(Element.extend); - }, - - firstDescendant: function(element) { - element = $(element).firstChild; - while (element && element.nodeType != 1) element = element.nextSibling; - return $(element); - }, - - immediateDescendants: function(element) { - if (!(element = $(element).firstChild)) return []; - while (element && element.nodeType != 1) element = element.nextSibling; - if (element) return [element].concat($(element).nextSiblings()); - return []; - }, - - previousSiblings: function(element) { - return $(element).recursivelyCollect('previousSibling'); - }, - - nextSiblings: function(element) { - return $(element).recursivelyCollect('nextSibling'); - }, - - siblings: function(element) { - element = $(element); - return element.previousSiblings().reverse().concat(element.nextSiblings()); - }, - - match: function(element, selector) { - if (Object.isString(selector)) - selector = new Selector(selector); - return selector.match($(element)); - }, - - up: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(element.parentNode); - var ancestors = element.ancestors(); - return expression ? Selector.findElement(ancestors, expression, index) : - ancestors[index || 0]; - }, - - down: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return element.firstDescendant(); - var descendants = element.descendants(); - return expression ? Selector.findElement(descendants, expression, index) : - descendants[index || 0]; - }, - - previous: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element)); - var previousSiblings = element.previousSiblings(); - return expression ? Selector.findElement(previousSiblings, expression, index) : - previousSiblings[index || 0]; - }, - - next: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element)); - var nextSiblings = element.nextSiblings(); - return expression ? Selector.findElement(nextSiblings, expression, index) : - nextSiblings[index || 0]; - }, - - select: function() { - var args = $A(arguments), element = $(args.shift()); - return Selector.findChildElements(element, args); - }, - - adjacent: function() { - var args = $A(arguments), element = $(args.shift()); - return Selector.findChildElements(element.parentNode, args).without(element); - }, - - identify: function(element) { - element = $(element); - var id = element.readAttribute('id'), self = arguments.callee; - if (id) return id; - do { id = 'anonymous_element_' + self.counter++ } while ($(id)); - element.writeAttribute('id', id); - return id; - }, - - readAttribute: function(element, name) { - element = $(element); - if (Prototype.Browser.IE) { - var t = Element._attributeTranslations.read; - if (t.values[name]) return t.values[name](element, name); - if (t.names[name]) name = t.names[name]; - if (name.include(':')) { - return (!element.attributes || !element.attributes[name]) ? null : - element.attributes[name].value; - } - } - return element.getAttribute(name); - }, - - writeAttribute: function(element, name, value) { - element = $(element); - var attributes = { }, t = Element._attributeTranslations.write; - - if (typeof name == 'object') attributes = name; - else attributes[name] = value === undefined ? true : value; - - for (var attr in attributes) { - var name = t.names[attr] || attr, value = attributes[attr]; - if (t.values[attr]) name = t.values[attr](element, value); - if (value === false || value === null) - element.removeAttribute(name); - else if (value === true) - element.setAttribute(name, name); - else element.setAttribute(name, value); - } - return element; - }, - - getHeight: function(element) { - return $(element).getDimensions().height; - }, - - getWidth: function(element) { - return $(element).getDimensions().width; - }, - - classNames: function(element) { - return new Element.ClassNames(element); - }, - - hasClassName: function(element, className) { - if (!(element = $(element))) return; - var elementClassName = element.className; - return (elementClassName.length > 0 && (elementClassName == className || - new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); - }, - - addClassName: function(element, className) { - if (!(element = $(element))) return; - if (!element.hasClassName(className)) - element.className += (element.className ? ' ' : '') + className; - return element; - }, - - removeClassName: function(element, className) { - if (!(element = $(element))) return; - element.className = element.className.replace( - new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); - return element; - }, - - toggleClassName: function(element, className) { - if (!(element = $(element))) return; - return element[element.hasClassName(className) ? - 'removeClassName' : 'addClassName'](className); - }, - - // removes whitespace-only text node children - cleanWhitespace: function(element) { - element = $(element); - var node = element.firstChild; - while (node) { - var nextNode = node.nextSibling; - if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) - element.removeChild(node); - node = nextNode; - } - return element; - }, - - empty: function(element) { - return $(element).innerHTML.blank(); - }, - - descendantOf: function(element, ancestor) { - element = $(element), ancestor = $(ancestor); - - if (element.compareDocumentPosition) - return (element.compareDocumentPosition(ancestor) & 8) === 8; - - if (element.sourceIndex && !Prototype.Browser.Opera) { - var e = element.sourceIndex, a = ancestor.sourceIndex, - nextAncestor = ancestor.nextSibling; - if (!nextAncestor) { - do { ancestor = ancestor.parentNode; } - while (!(nextAncestor = ancestor.nextSibling) && ancestor.parentNode); - } - if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex); - } - - while (element = element.parentNode) - if (element == ancestor) return true; - return false; - }, - - scrollTo: function(element) { - element = $(element); - var pos = element.cumulativeOffset(); - window.scrollTo(pos[0], pos[1]); - return element; - }, - - getStyle: function(element, style) { - element = $(element); - style = style == 'float' ? 'cssFloat' : style.camelize(); - var value = element.style[style]; - if (!value) { - var css = document.defaultView.getComputedStyle(element, null); - value = css ? css[style] : null; - } - if (style == 'opacity') return value ? parseFloat(value) : 1.0; - return value == 'auto' ? null : value; - }, - - getOpacity: function(element) { - return $(element).getStyle('opacity'); - }, - - setStyle: function(element, styles) { - element = $(element); - var elementStyle = element.style, match; - if (Object.isString(styles)) { - element.style.cssText += ';' + styles; - return styles.include('opacity') ? - element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; - } - for (var property in styles) - if (property == 'opacity') element.setOpacity(styles[property]); - else - elementStyle[(property == 'float' || property == 'cssFloat') ? - (elementStyle.styleFloat === undefined ? 'cssFloat' : 'styleFloat') : - property] = styles[property]; - - return element; - }, - - setOpacity: function(element, value) { - element = $(element); - element.style.opacity = (value == 1 || value === '') ? '' : - (value < 0.00001) ? 0 : value; - return element; - }, - - getDimensions: function(element) { - element = $(element); - var display = $(element).getStyle('display'); - if (display != 'none' && display != null) // Safari bug - return {width: element.offsetWidth, height: element.offsetHeight}; - - // All *Width and *Height properties give 0 on elements with display none, - // so enable the element temporarily - var els = element.style; - var originalVisibility = els.visibility; - var originalPosition = els.position; - var originalDisplay = els.display; - els.visibility = 'hidden'; - els.position = 'absolute'; - els.display = 'block'; - var originalWidth = element.clientWidth; - var originalHeight = element.clientHeight; - els.display = originalDisplay; - els.position = originalPosition; - els.visibility = originalVisibility; - return {width: originalWidth, height: originalHeight}; - }, - - makePositioned: function(element) { - element = $(element); - var pos = Element.getStyle(element, 'position'); - if (pos == 'static' || !pos) { - element._madePositioned = true; - element.style.position = 'relative'; - // Opera returns the offset relative to the positioning context, when an - // element is position relative but top and left have not been defined - if (window.opera) { - element.style.top = 0; - element.style.left = 0; - } - } - return element; - }, - - undoPositioned: function(element) { - element = $(element); - if (element._madePositioned) { - element._madePositioned = undefined; - element.style.position = - element.style.top = - element.style.left = - element.style.bottom = - element.style.right = ''; - } - return element; - }, - - makeClipping: function(element) { - element = $(element); - if (element._overflow) return element; - element._overflow = Element.getStyle(element, 'overflow') || 'auto'; - if (element._overflow !== 'hidden') - element.style.overflow = 'hidden'; - return element; - }, - - undoClipping: function(element) { - element = $(element); - if (!element._overflow) return element; - element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; - element._overflow = null; - return element; - }, - - cumulativeOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - positionedOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - if (element) { - if (element.tagName == 'BODY') break; - var p = Element.getStyle(element, 'position'); - if (p == 'relative' || p == 'absolute') break; - } - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - absolutize: function(element) { - element = $(element); - if (element.getStyle('position') == 'absolute') return; - // Position.prepare(); // To be done manually by Scripty when it needs it. - - var offsets = element.positionedOffset(); - var top = offsets[1]; - var left = offsets[0]; - var width = element.clientWidth; - var height = element.clientHeight; - - element._originalLeft = left - parseFloat(element.style.left || 0); - element._originalTop = top - parseFloat(element.style.top || 0); - element._originalWidth = element.style.width; - element._originalHeight = element.style.height; - - element.style.position = 'absolute'; - element.style.top = top + 'px'; - element.style.left = left + 'px'; - element.style.width = width + 'px'; - element.style.height = height + 'px'; - return element; - }, - - relativize: function(element) { - element = $(element); - if (element.getStyle('position') == 'relative') return; - // Position.prepare(); // To be done manually by Scripty when it needs it. - - element.style.position = 'relative'; - var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); - var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); - - element.style.top = top + 'px'; - element.style.left = left + 'px'; - element.style.height = element._originalHeight; - element.style.width = element._originalWidth; - return element; - }, - - cumulativeScrollOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.scrollTop || 0; - valueL += element.scrollLeft || 0; - element = element.parentNode; - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - getOffsetParent: function(element) { - if (element.offsetParent) return $(element.offsetParent); - if (element == document.body) return $(element); - - while ((element = element.parentNode) && element != document.body) - if (Element.getStyle(element, 'position') != 'static') - return $(element); - - return $(document.body); - }, - - viewportOffset: function(forElement) { - var valueT = 0, valueL = 0; - - var element = forElement; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - - // Safari fix - if (element.offsetParent == document.body && - Element.getStyle(element, 'position') == 'absolute') break; - - } while (element = element.offsetParent); - - element = forElement; - do { - if (!Prototype.Browser.Opera || element.tagName == 'BODY') { - valueT -= element.scrollTop || 0; - valueL -= element.scrollLeft || 0; - } - } while (element = element.parentNode); - - return Element._returnOffset(valueL, valueT); - }, - - clonePosition: function(element, source) { - var options = Object.extend({ - setLeft: true, - setTop: true, - setWidth: true, - setHeight: true, - offsetTop: 0, - offsetLeft: 0 - }, arguments[2] || { }); - - // find page position of source - source = $(source); - var p = source.viewportOffset(); - - // find coordinate system to use - element = $(element); - var delta = [0, 0]; - var parent = null; - // delta [0,0] will do fine with position: fixed elements, - // position:absolute needs offsetParent deltas - if (Element.getStyle(element, 'position') == 'absolute') { - parent = element.getOffsetParent(); - delta = parent.viewportOffset(); - } - - // correct by body offsets (fixes Safari) - if (parent == document.body) { - delta[0] -= document.body.offsetLeft; - delta[1] -= document.body.offsetTop; - } - - // set position - if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; - if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; - if (options.setWidth) element.style.width = source.offsetWidth + 'px'; - if (options.setHeight) element.style.height = source.offsetHeight + 'px'; - return element; - } -}; - -Element.Methods.identify.counter = 1; - -Object.extend(Element.Methods, { - getElementsBySelector: Element.Methods.select, - childElements: Element.Methods.immediateDescendants -}); - -Element._attributeTranslations = { - write: { - names: { - className: 'class', - htmlFor: 'for' - }, - values: { } - } -}; - - -if (!document.createRange || Prototype.Browser.Opera) { - Element.Methods.insert = function(element, insertions) { - element = $(element); - - if (Object.isString(insertions) || Object.isNumber(insertions) || - Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) - insertions = { bottom: insertions }; - - var t = Element._insertionTranslations, content, position, pos, tagName; - - for (position in insertions) { - content = insertions[position]; - position = position.toLowerCase(); - pos = t[position]; - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - pos.insert(element, content); - continue; - } - - content = Object.toHTML(content); - tagName = ((position == 'before' || position == 'after') - ? element.parentNode : element).tagName.toUpperCase(); - - if (t.tags[tagName]) { - var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); - if (position == 'top' || position == 'after') fragments.reverse(); - fragments.each(pos.insert.curry(element)); - } - else element.insertAdjacentHTML(pos.adjacency, content.stripScripts()); - - content.evalScripts.bind(content).defer(); - } - - return element; - }; -} - -if (Prototype.Browser.Opera) { - Element.Methods._getStyle = Element.Methods.getStyle; - Element.Methods.getStyle = function(element, style) { - switch(style) { - case 'left': - case 'top': - case 'right': - case 'bottom': - if (Element._getStyle(element, 'position') == 'static') return null; - default: return Element._getStyle(element, style); - } - }; - Element.Methods._readAttribute = Element.Methods.readAttribute; - Element.Methods.readAttribute = function(element, attribute) { - if (attribute == 'title') return element.title; - return Element._readAttribute(element, attribute); - }; -} - -else if (Prototype.Browser.IE) { - $w('positionedOffset getOffsetParent viewportOffset').each(function(method) { - Element.Methods[method] = Element.Methods[method].wrap( - function(proceed, element) { - element = $(element); - var position = element.getStyle('position'); - if (position != 'static') return proceed(element); - element.setStyle({ position: 'relative' }); - var value = proceed(element); - element.setStyle({ position: position }); - return value; - } - ); - }); - - Element.Methods.getStyle = function(element, style) { - element = $(element); - style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); - var value = element.style[style]; - if (!value && element.currentStyle) value = element.currentStyle[style]; - - if (style == 'opacity') { - if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) - if (value[1]) return parseFloat(value[1]) / 100; - return 1.0; - } - - if (value == 'auto') { - if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) - return element['offset' + style.capitalize()] + 'px'; - return null; - } - return value; - }; - - Element.Methods.setOpacity = function(element, value) { - function stripAlpha(filter){ - return filter.replace(/alpha\([^\)]*\)/gi,''); - } - element = $(element); - var currentStyle = element.currentStyle; - if ((currentStyle && !currentStyle.hasLayout) || - (!currentStyle && element.style.zoom == 'normal')) - element.style.zoom = 1; - - var filter = element.getStyle('filter'), style = element.style; - if (value == 1 || value === '') { - (filter = stripAlpha(filter)) ? - style.filter = filter : style.removeAttribute('filter'); - return element; - } else if (value < 0.00001) value = 0; - style.filter = stripAlpha(filter) + - 'alpha(opacity=' + (value * 100) + ')'; - return element; - }; - - Element._attributeTranslations = { - read: { - names: { - 'class': 'className', - 'for': 'htmlFor' - }, - values: { - _getAttr: function(element, attribute) { - return element.getAttribute(attribute, 2); - }, - _getAttrNode: function(element, attribute) { - var node = element.getAttributeNode(attribute); - return node ? node.value : ""; - }, - _getEv: function(element, attribute) { - var attribute = element.getAttribute(attribute); - return attribute ? attribute.toString().slice(23, -2) : null; - }, - _flag: function(element, attribute) { - return $(element).hasAttribute(attribute) ? attribute : null; - }, - style: function(element) { - return element.style.cssText.toLowerCase(); - }, - title: function(element) { - return element.title; - } - } - } - }; - - Element._attributeTranslations.write = { - names: Object.clone(Element._attributeTranslations.read.names), - values: { - checked: function(element, value) { - element.checked = !!value; - }, - - style: function(element, value) { - element.style.cssText = value ? value : ''; - } - } - }; - - Element._attributeTranslations.has = {}; - - $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + - 'encType maxLength readOnly longDesc').each(function(attr) { - Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; - Element._attributeTranslations.has[attr.toLowerCase()] = attr; - }); - - (function(v) { - Object.extend(v, { - href: v._getAttr, - src: v._getAttr, - type: v._getAttr, - action: v._getAttrNode, - disabled: v._flag, - checked: v._flag, - readonly: v._flag, - multiple: v._flag, - onload: v._getEv, - onunload: v._getEv, - onclick: v._getEv, - ondblclick: v._getEv, - onmousedown: v._getEv, - onmouseup: v._getEv, - onmouseover: v._getEv, - onmousemove: v._getEv, - onmouseout: v._getEv, - onfocus: v._getEv, - onblur: v._getEv, - onkeypress: v._getEv, - onkeydown: v._getEv, - onkeyup: v._getEv, - onsubmit: v._getEv, - onreset: v._getEv, - onselect: v._getEv, - onchange: v._getEv - }); - })(Element._attributeTranslations.read.values); -} - -else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { - Element.Methods.setOpacity = function(element, value) { - element = $(element); - element.style.opacity = (value == 1) ? 0.999999 : - (value === '') ? '' : (value < 0.00001) ? 0 : value; - return element; - }; -} - -else if (Prototype.Browser.WebKit) { - Element.Methods.setOpacity = function(element, value) { - element = $(element); - element.style.opacity = (value == 1 || value === '') ? '' : - (value < 0.00001) ? 0 : value; - - if (value == 1) - if(element.tagName == 'IMG' && element.width) { - element.width++; element.width--; - } else try { - var n = document.createTextNode(' '); - element.appendChild(n); - element.removeChild(n); - } catch (e) { } - - return element; - }; - - // Safari returns margins on body which is incorrect if the child is absolutely - // positioned. For performance reasons, redefine Position.cumulativeOffset for - // KHTML/WebKit only. - Element.Methods.cumulativeOffset = function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - if (element.offsetParent == document.body) - if (Element.getStyle(element, 'position') == 'absolute') break; - - element = element.offsetParent; - } while (element); - - return Element._returnOffset(valueL, valueT); - }; -} - -if (Prototype.Browser.IE || Prototype.Browser.Opera) { - // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements - Element.Methods.update = function(element, content) { - element = $(element); - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) return element.update().insert(content); - - content = Object.toHTML(content); - var tagName = element.tagName.toUpperCase(); - - if (tagName in Element._insertionTranslations.tags) { - $A(element.childNodes).each(function(node) { element.removeChild(node) }); - Element._getContentFromAnonymousElement(tagName, content.stripScripts()) - .each(function(node) { element.appendChild(node) }); - } - else element.innerHTML = content.stripScripts(); - - content.evalScripts.bind(content).defer(); - return element; - }; -} - -if (document.createElement('div').outerHTML) { - Element.Methods.replace = function(element, content) { - element = $(element); - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - element.parentNode.replaceChild(content, element); - return element; - } - - content = Object.toHTML(content); - var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); - - if (Element._insertionTranslations.tags[tagName]) { - var nextSibling = element.next(); - var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); - parent.removeChild(element); - if (nextSibling) - fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); - else - fragments.each(function(node) { parent.appendChild(node) }); - } - else element.outerHTML = content.stripScripts(); - - content.evalScripts.bind(content).defer(); - return element; - }; -} - -Element._returnOffset = function(l, t) { - var result = [l, t]; - result.left = l; - result.top = t; - return result; -}; - -Element._getContentFromAnonymousElement = function(tagName, html) { - var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; - div.innerHTML = t[0] + html + t[1]; - t[2].times(function() { div = div.firstChild }); - return $A(div.childNodes); -}; - -Element._insertionTranslations = { - before: { - adjacency: 'beforeBegin', - insert: function(element, node) { - element.parentNode.insertBefore(node, element); - }, - initializeRange: function(element, range) { - range.setStartBefore(element); - } - }, - top: { - adjacency: 'afterBegin', - insert: function(element, node) { - element.insertBefore(node, element.firstChild); - }, - initializeRange: function(element, range) { - range.selectNodeContents(element); - range.collapse(true); - } - }, - bottom: { - adjacency: 'beforeEnd', - insert: function(element, node) { - element.appendChild(node); - } - }, - after: { - adjacency: 'afterEnd', - insert: function(element, node) { - element.parentNode.insertBefore(node, element.nextSibling); - }, - initializeRange: function(element, range) { - range.setStartAfter(element); - } - }, - tags: { - TABLE: ['', '
        ', 1], - TBODY: ['', '
        ', 2], - TR: ['', '
        ', 3], - TD: ['
        ', '
        ', 4], - SELECT: ['', 1] - } -}; - -(function() { - this.bottom.initializeRange = this.top.initializeRange; - Object.extend(this.tags, { - THEAD: this.tags.TBODY, - TFOOT: this.tags.TBODY, - TH: this.tags.TD - }); -}).call(Element._insertionTranslations); - -Element.Methods.Simulated = { - hasAttribute: function(element, attribute) { - attribute = Element._attributeTranslations.has[attribute] || attribute; - var node = $(element).getAttributeNode(attribute); - return node && node.specified; - } -}; - -Element.Methods.ByTag = { }; - -Object.extend(Element, Element.Methods); - -if (!Prototype.BrowserFeatures.ElementExtensions && - document.createElement('div').__proto__) { - window.HTMLElement = { }; - window.HTMLElement.prototype = document.createElement('div').__proto__; - Prototype.BrowserFeatures.ElementExtensions = true; -} - -Element.extend = (function() { - if (Prototype.BrowserFeatures.SpecificElementExtensions) - return Prototype.K; - - var Methods = { }, ByTag = Element.Methods.ByTag; - - var extend = Object.extend(function(element) { - if (!element || element._extendedByPrototype || - element.nodeType != 1 || element == window) return element; - - var methods = Object.clone(Methods), - tagName = element.tagName, property, value; - - // extend methods for specific tags - if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); - - for (property in methods) { - value = methods[property]; - if (Object.isFunction(value) && !(property in element)) - element[property] = value.methodize(); - } - - element._extendedByPrototype = Prototype.emptyFunction; - return element; - - }, { - refresh: function() { - // extend methods for all tags (Safari doesn't need this) - if (!Prototype.BrowserFeatures.ElementExtensions) { - Object.extend(Methods, Element.Methods); - Object.extend(Methods, Element.Methods.Simulated); - } - } - }); - - extend.refresh(); - return extend; -})(); - -Element.hasAttribute = function(element, attribute) { - if (element.hasAttribute) return element.hasAttribute(attribute); - return Element.Methods.Simulated.hasAttribute(element, attribute); -}; - -Element.addMethods = function(methods) { - var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; - - if (!methods) { - Object.extend(Form, Form.Methods); - Object.extend(Form.Element, Form.Element.Methods); - Object.extend(Element.Methods.ByTag, { - "FORM": Object.clone(Form.Methods), - "INPUT": Object.clone(Form.Element.Methods), - "SELECT": Object.clone(Form.Element.Methods), - "TEXTAREA": Object.clone(Form.Element.Methods) - }); - } - - if (arguments.length == 2) { - var tagName = methods; - methods = arguments[1]; - } - - if (!tagName) Object.extend(Element.Methods, methods || { }); - else { - if (Object.isArray(tagName)) tagName.each(extend); - else extend(tagName); - } - - function extend(tagName) { - tagName = tagName.toUpperCase(); - if (!Element.Methods.ByTag[tagName]) - Element.Methods.ByTag[tagName] = { }; - Object.extend(Element.Methods.ByTag[tagName], methods); - } - - function copy(methods, destination, onlyIfAbsent) { - onlyIfAbsent = onlyIfAbsent || false; - for (var property in methods) { - var value = methods[property]; - if (!Object.isFunction(value)) continue; - if (!onlyIfAbsent || !(property in destination)) - destination[property] = value.methodize(); - } - } - - function findDOMClass(tagName) { - var klass; - var trans = { - "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", - "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", - "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", - "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", - "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": - "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": - "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": - "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": - "FrameSet", "IFRAME": "IFrame" - }; - if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; - if (window[klass]) return window[klass]; - klass = 'HTML' + tagName + 'Element'; - if (window[klass]) return window[klass]; - klass = 'HTML' + tagName.capitalize() + 'Element'; - if (window[klass]) return window[klass]; - - window[klass] = { }; - window[klass].prototype = document.createElement(tagName).__proto__; - return window[klass]; - } - - if (F.ElementExtensions) { - copy(Element.Methods, HTMLElement.prototype); - copy(Element.Methods.Simulated, HTMLElement.prototype, true); - } - - if (F.SpecificElementExtensions) { - for (var tag in Element.Methods.ByTag) { - var klass = findDOMClass(tag); - if (Object.isUndefined(klass)) continue; - copy(T[tag], klass.prototype); - } - } - - Object.extend(Element, Element.Methods); - delete Element.ByTag; - - if (Element.extend.refresh) Element.extend.refresh(); - Element.cache = { }; -}; - -document.viewport = { - getDimensions: function() { - var dimensions = { }; - $w('width height').each(function(d) { - var D = d.capitalize(); - dimensions[d] = self['inner' + D] || - (document.documentElement['client' + D] || document.body['client' + D]); - }); - return dimensions; - }, - - getWidth: function() { - return this.getDimensions().width; - }, - - getHeight: function() { - return this.getDimensions().height; - }, - - getScrollOffsets: function() { - return Element._returnOffset( - window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, - window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); - } -}; -/* Portions of the Selector class are derived from Jack Slocum’s DomQuery, - * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style - * license. Please see http://www.yui-ext.com/ for more information. */ - -var Selector = Class.create({ - initialize: function(expression) { - this.expression = expression.strip(); - this.compileMatcher(); - }, - - compileMatcher: function() { - // Selectors with namespaced attributes can't use the XPath version - if (Prototype.BrowserFeatures.XPath && !(/(\[[\w-]*?:|:checked)/).test(this.expression)) - return this.compileXPathMatcher(); - - var e = this.expression, ps = Selector.patterns, h = Selector.handlers, - c = Selector.criteria, le, p, m; - - if (Selector._cache[e]) { - this.matcher = Selector._cache[e]; - return; - } - - this.matcher = ["this.matcher = function(root) {", - "var r = root, h = Selector.handlers, c = false, n;"]; - - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - p = ps[i]; - if (m = e.match(p)) { - this.matcher.push(Object.isFunction(c[i]) ? c[i](m) : - new Template(c[i]).evaluate(m)); - e = e.replace(m[0], ''); - break; - } - } - } - - this.matcher.push("return h.unique(n);\n}"); - eval(this.matcher.join('\n')); - Selector._cache[this.expression] = this.matcher; - }, - - compileXPathMatcher: function() { - var e = this.expression, ps = Selector.patterns, - x = Selector.xpath, le, m; - - if (Selector._cache[e]) { - this.xpath = Selector._cache[e]; return; - } - - this.matcher = ['.//*']; - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - if (m = e.match(ps[i])) { - this.matcher.push(Object.isFunction(x[i]) ? x[i](m) : - new Template(x[i]).evaluate(m)); - e = e.replace(m[0], ''); - break; - } - } - } - - this.xpath = this.matcher.join(''); - Selector._cache[this.expression] = this.xpath; - }, - - findElements: function(root) { - root = root || document; - if (this.xpath) return document._getElementsByXPath(this.xpath, root); - return this.matcher(root); - }, - - match: function(element) { - this.tokens = []; - - var e = this.expression, ps = Selector.patterns, as = Selector.assertions; - var le, p, m; - - while (e && le !== e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - p = ps[i]; - if (m = e.match(p)) { - // use the Selector.assertions methods unless the selector - // is too complex. - if (as[i]) { - this.tokens.push([i, Object.clone(m)]); - e = e.replace(m[0], ''); - } else { - // reluctantly do a document-wide search - // and look for a match in the array - return this.findElements(document).include(element); - } - } - } - } - - var match = true, name, matches; - for (var i = 0, token; token = this.tokens[i]; i++) { - name = token[0], matches = token[1]; - if (!Selector.assertions[name](element, matches)) { - match = false; break; - } - } - - return match; - }, - - toString: function() { - return this.expression; - }, - - inspect: function() { - return "#"; - } -}); - -Object.extend(Selector, { - _cache: { }, - - xpath: { - descendant: "//*", - child: "/*", - adjacent: "/following-sibling::*[1]", - laterSibling: '/following-sibling::*', - tagName: function(m) { - if (m[1] == '*') return ''; - return "[local-name()='" + m[1].toLowerCase() + - "' or local-name()='" + m[1].toUpperCase() + "']"; - }, - className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", - id: "[@id='#{1}']", - attrPresence: "[@#{1}]", - attr: function(m) { - m[3] = m[5] || m[6]; - return new Template(Selector.xpath.operators[m[2]]).evaluate(m); - }, - pseudo: function(m) { - var h = Selector.xpath.pseudos[m[1]]; - if (!h) return ''; - if (Object.isFunction(h)) return h(m); - return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); - }, - operators: { - '=': "[@#{1}='#{3}']", - '!=': "[@#{1}!='#{3}']", - '^=': "[starts-with(@#{1}, '#{3}')]", - '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']", - '*=': "[contains(@#{1}, '#{3}')]", - '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", - '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" - }, - pseudos: { - 'first-child': '[not(preceding-sibling::*)]', - 'last-child': '[not(following-sibling::*)]', - 'only-child': '[not(preceding-sibling::* or following-sibling::*)]', - 'empty': "[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]", - 'checked': "[@checked]", - 'disabled': "[@disabled]", - 'enabled': "[not(@disabled)]", - 'not': function(m) { - var e = m[6], p = Selector.patterns, - x = Selector.xpath, le, m, v; - - var exclusion = []; - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in p) { - if (m = e.match(p[i])) { - v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m); - exclusion.push("(" + v.substring(1, v.length - 1) + ")"); - e = e.replace(m[0], ''); - break; - } - } - } - return "[not(" + exclusion.join(" and ") + ")]"; - }, - 'nth-child': function(m) { - return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m); - }, - 'nth-last-child': function(m) { - return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m); - }, - 'nth-of-type': function(m) { - return Selector.xpath.pseudos.nth("position() ", m); - }, - 'nth-last-of-type': function(m) { - return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m); - }, - 'first-of-type': function(m) { - m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m); - }, - 'last-of-type': function(m) { - m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m); - }, - 'only-of-type': function(m) { - var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m); - }, - nth: function(fragment, m) { - var mm, formula = m[6], predicate; - if (formula == 'even') formula = '2n+0'; - if (formula == 'odd') formula = '2n+1'; - if (mm = formula.match(/^(\d+)$/)) // digit only - return '[' + fragment + "= " + mm[1] + ']'; - if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b - if (mm[1] == "-") mm[1] = -1; - var a = mm[1] ? Number(mm[1]) : 1; - var b = mm[2] ? Number(mm[2]) : 0; - predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " + - "((#{fragment} - #{b}) div #{a} >= 0)]"; - return new Template(predicate).evaluate({ - fragment: fragment, a: a, b: b }); - } - } - } - }, - - criteria: { - tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;', - className: 'n = h.className(n, r, "#{1}", c); c = false;', - id: 'n = h.id(n, r, "#{1}", c); c = false;', - attrPresence: 'n = h.attrPresence(n, r, "#{1}"); c = false;', - attr: function(m) { - m[3] = (m[5] || m[6]); - return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = false;').evaluate(m); - }, - pseudo: function(m) { - if (m[6]) m[6] = m[6].replace(/"/g, '\\"'); - return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m); - }, - descendant: 'c = "descendant";', - child: 'c = "child";', - adjacent: 'c = "adjacent";', - laterSibling: 'c = "laterSibling";' - }, - - patterns: { - // combinators must be listed first - // (and descendant needs to be last combinator) - laterSibling: /^\s*~\s*/, - child: /^\s*>\s*/, - adjacent: /^\s*\+\s*/, - descendant: /^\s/, - - // selectors follow - tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, - id: /^#([\w\-\*]+)(\b|$)/, - className: /^\.([\w\-\*]+)(\b|$)/, - pseudo: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s)|(?=:))/, - attrPresence: /^\[([\w]+)\]/, - attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/ - }, - - // for Selector.match and Element#match - assertions: { - tagName: function(element, matches) { - return matches[1].toUpperCase() == element.tagName.toUpperCase(); - }, - - className: function(element, matches) { - return Element.hasClassName(element, matches[1]); - }, - - id: function(element, matches) { - return element.id === matches[1]; - }, - - attrPresence: function(element, matches) { - return Element.hasAttribute(element, matches[1]); - }, - - attr: function(element, matches) { - var nodeValue = Element.readAttribute(element, matches[1]); - return Selector.operators[matches[2]](nodeValue, matches[3]); - } - }, - - handlers: { - // UTILITY FUNCTIONS - // joins two collections - concat: function(a, b) { - for (var i = 0, node; node = b[i]; i++) - a.push(node); - return a; - }, - - // marks an array of nodes for counting - mark: function(nodes) { - for (var i = 0, node; node = nodes[i]; i++) - node._counted = true; - return nodes; - }, - - unmark: function(nodes) { - for (var i = 0, node; node = nodes[i]; i++) - node._counted = undefined; - return nodes; - }, - - // mark each child node with its position (for nth calls) - // "ofType" flag indicates whether we're indexing for nth-of-type - // rather than nth-child - index: function(parentNode, reverse, ofType) { - parentNode._counted = true; - if (reverse) { - for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) { - var node = nodes[i]; - if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++; - } - } else { - for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++) - if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++; - } - }, - - // filters out duplicates and extends all nodes - unique: function(nodes) { - if (nodes.length == 0) return nodes; - var results = [], n; - for (var i = 0, l = nodes.length; i < l; i++) - if (!(n = nodes[i])._counted) { - n._counted = true; - results.push(Element.extend(n)); - } - return Selector.handlers.unmark(results); - }, - - // COMBINATOR FUNCTIONS - descendant: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - h.concat(results, node.getElementsByTagName('*')); - return results; - }, - - child: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) { - for (var j = 0, children = [], child; child = node.childNodes[j]; j++) - if (child.nodeType == 1 && child.tagName != '!') results.push(child); - } - return results; - }, - - adjacent: function(nodes) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - var next = this.nextElementSibling(node); - if (next) results.push(next); - } - return results; - }, - - laterSibling: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - h.concat(results, Element.nextSiblings(node)); - return results; - }, - - nextElementSibling: function(node) { - while (node = node.nextSibling) - if (node.nodeType == 1) return node; - return null; - }, - - previousElementSibling: function(node) { - while (node = node.previousSibling) - if (node.nodeType == 1) return node; - return null; - }, - - // TOKEN FUNCTIONS - tagName: function(nodes, root, tagName, combinator) { - tagName = tagName.toUpperCase(); - var results = [], h = Selector.handlers; - if (nodes) { - if (combinator) { - // fastlane for ordinary descendant combinators - if (combinator == "descendant") { - for (var i = 0, node; node = nodes[i]; i++) - h.concat(results, node.getElementsByTagName(tagName)); - return results; - } else nodes = this[combinator](nodes); - if (tagName == "*") return nodes; - } - for (var i = 0, node; node = nodes[i]; i++) - if (node.tagName.toUpperCase() == tagName) results.push(node); - return results; - } else return root.getElementsByTagName(tagName); - }, - - id: function(nodes, root, id, combinator) { - var targetNode = $(id), h = Selector.handlers; - if (!targetNode) return []; - if (!nodes && root == document) return [targetNode]; - if (nodes) { - if (combinator) { - if (combinator == 'child') { - for (var i = 0, node; node = nodes[i]; i++) - if (targetNode.parentNode == node) return [targetNode]; - } else if (combinator == 'descendant') { - for (var i = 0, node; node = nodes[i]; i++) - if (Element.descendantOf(targetNode, node)) return [targetNode]; - } else if (combinator == 'adjacent') { - for (var i = 0, node; node = nodes[i]; i++) - if (Selector.handlers.previousElementSibling(targetNode) == node) - return [targetNode]; - } else nodes = h[combinator](nodes); - } - for (var i = 0, node; node = nodes[i]; i++) - if (node == targetNode) return [targetNode]; - return []; - } - return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : []; - }, - - className: function(nodes, root, className, combinator) { - if (nodes && combinator) nodes = this[combinator](nodes); - return Selector.handlers.byClassName(nodes, root, className); - }, - - byClassName: function(nodes, root, className) { - if (!nodes) nodes = Selector.handlers.descendant([root]); - var needle = ' ' + className + ' '; - for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) { - nodeClassName = node.className; - if (nodeClassName.length == 0) continue; - if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle)) - results.push(node); - } - return results; - }, - - attrPresence: function(nodes, root, attr) { - if (!nodes) nodes = root.getElementsByTagName("*"); - var results = []; - for (var i = 0, node; node = nodes[i]; i++) - if (Element.hasAttribute(node, attr)) results.push(node); - return results; - }, - - attr: function(nodes, root, attr, value, operator) { - if (!nodes) nodes = root.getElementsByTagName("*"); - var handler = Selector.operators[operator], results = []; - for (var i = 0, node; node = nodes[i]; i++) { - var nodeValue = Element.readAttribute(node, attr); - if (nodeValue === null) continue; - if (handler(nodeValue, value)) results.push(node); - } - return results; - }, - - pseudo: function(nodes, name, value, root, combinator) { - if (nodes && combinator) nodes = this[combinator](nodes); - if (!nodes) nodes = root.getElementsByTagName("*"); - return Selector.pseudos[name](nodes, value, root); - } - }, - - pseudos: { - 'first-child': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - if (Selector.handlers.previousElementSibling(node)) continue; - results.push(node); - } - return results; - }, - 'last-child': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - if (Selector.handlers.nextElementSibling(node)) continue; - results.push(node); - } - return results; - }, - 'only-child': function(nodes, value, root) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!h.previousElementSibling(node) && !h.nextElementSibling(node)) - results.push(node); - return results; - }, - 'nth-child': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root); - }, - 'nth-last-child': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, true); - }, - 'nth-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, false, true); - }, - 'nth-last-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, true, true); - }, - 'first-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, "1", root, false, true); - }, - 'last-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, "1", root, true, true); - }, - 'only-of-type': function(nodes, formula, root) { - var p = Selector.pseudos; - return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root); - }, - - // handles the an+b logic - getIndices: function(a, b, total) { - if (a == 0) return b > 0 ? [b] : []; - return $R(1, total).inject([], function(memo, i) { - if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i); - return memo; - }); - }, - - // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type - nth: function(nodes, formula, root, reverse, ofType) { - if (nodes.length == 0) return []; - if (formula == 'even') formula = '2n+0'; - if (formula == 'odd') formula = '2n+1'; - var h = Selector.handlers, results = [], indexed = [], m; - h.mark(nodes); - for (var i = 0, node; node = nodes[i]; i++) { - if (!node.parentNode._counted) { - h.index(node.parentNode, reverse, ofType); - indexed.push(node.parentNode); - } - } - if (formula.match(/^\d+$/)) { // just a number - formula = Number(formula); - for (var i = 0, node; node = nodes[i]; i++) - if (node.nodeIndex == formula) results.push(node); - } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b - if (m[1] == "-") m[1] = -1; - var a = m[1] ? Number(m[1]) : 1; - var b = m[2] ? Number(m[2]) : 0; - var indices = Selector.pseudos.getIndices(a, b, nodes.length); - for (var i = 0, node, l = indices.length; node = nodes[i]; i++) { - for (var j = 0; j < l; j++) - if (node.nodeIndex == indices[j]) results.push(node); - } - } - h.unmark(nodes); - h.unmark(indexed); - return results; - }, - - 'empty': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - // IE treats comments as element nodes - if (node.tagName == '!' || (node.firstChild && !node.innerHTML.match(/^\s*$/))) continue; - results.push(node); - } - return results; - }, - - 'not': function(nodes, selector, root) { - var h = Selector.handlers, selectorType, m; - var exclusions = new Selector(selector).findElements(root); - h.mark(exclusions); - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!node._counted) results.push(node); - h.unmark(exclusions); - return results; - }, - - 'enabled': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!node.disabled) results.push(node); - return results; - }, - - 'disabled': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (node.disabled) results.push(node); - return results; - }, - - 'checked': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (node.checked) results.push(node); - return results; - } - }, - - operators: { - '=': function(nv, v) { return nv == v; }, - '!=': function(nv, v) { return nv != v; }, - '^=': function(nv, v) { return nv.startsWith(v); }, - '$=': function(nv, v) { return nv.endsWith(v); }, - '*=': function(nv, v) { return nv.include(v); }, - '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); }, - '|=': function(nv, v) { return ('-' + nv.toUpperCase() + '-').include('-' + v.toUpperCase() + '-'); } - }, - - matchElements: function(elements, expression) { - var matches = new Selector(expression).findElements(), h = Selector.handlers; - h.mark(matches); - for (var i = 0, results = [], element; element = elements[i]; i++) - if (element._counted) results.push(element); - h.unmark(matches); - return results; - }, - - findElement: function(elements, expression, index) { - if (Object.isNumber(expression)) { - index = expression; expression = false; - } - return Selector.matchElements(elements, expression || '*')[index || 0]; - }, - - findChildElements: function(element, expressions) { - var exprs = expressions.join(','), expressions = []; - exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { - expressions.push(m[1].strip()); - }); - var results = [], h = Selector.handlers; - for (var i = 0, l = expressions.length, selector; i < l; i++) { - selector = new Selector(expressions[i].strip()); - h.concat(results, selector.findElements(element)); - } - return (l > 1) ? h.unique(results) : results; - } -}); - -function $$() { - return Selector.findChildElements(document, $A(arguments)); -} -var Form = { - reset: function(form) { - $(form).reset(); - return form; - }, - - serializeElements: function(elements, options) { - if (typeof options != 'object') options = { hash: !!options }; - else if (options.hash === undefined) options.hash = true; - var key, value, submitted = false, submit = options.submit; - - var data = elements.inject({ }, function(result, element) { - if (!element.disabled && element.name) { - key = element.name; value = $(element).getValue(); - if (value != null && (element.type != 'submit' || (!submitted && - submit !== false && (!submit || key == submit) && (submitted = true)))) { - if (key in result) { - // a key is already present; construct an array of values - if (!Object.isArray(result[key])) result[key] = [result[key]]; - result[key].push(value); - } - else result[key] = value; - } - } - return result; - }); - - return options.hash ? data : Object.toQueryString(data); - } -}; - -Form.Methods = { - serialize: function(form, options) { - return Form.serializeElements(Form.getElements(form), options); - }, - - getElements: function(form) { - return $A($(form).getElementsByTagName('*')).inject([], - function(elements, child) { - if (Form.Element.Serializers[child.tagName.toLowerCase()]) - elements.push(Element.extend(child)); - return elements; - } - ); - }, - - getInputs: function(form, typeName, name) { - form = $(form); - var inputs = form.getElementsByTagName('input'); - - if (!typeName && !name) return $A(inputs).map(Element.extend); - - for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { - var input = inputs[i]; - if ((typeName && input.type != typeName) || (name && input.name != name)) - continue; - matchingInputs.push(Element.extend(input)); - } - - return matchingInputs; - }, - - disable: function(form) { - form = $(form); - Form.getElements(form).invoke('disable'); - return form; - }, - - enable: function(form) { - form = $(form); - Form.getElements(form).invoke('enable'); - return form; - }, - - findFirstElement: function(form) { - var elements = $(form).getElements().findAll(function(element) { - return 'hidden' != element.type && !element.disabled; - }); - var firstByIndex = elements.findAll(function(element) { - return element.hasAttribute('tabIndex') && element.tabIndex >= 0; - }).sortBy(function(element) { return element.tabIndex }).first(); - - return firstByIndex ? firstByIndex : elements.find(function(element) { - return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); - }); - }, - - focusFirstElement: function(form) { - form = $(form); - form.findFirstElement().activate(); - return form; - }, - - request: function(form, options) { - form = $(form), options = Object.clone(options || { }); - - var params = options.parameters, action = form.readAttribute('action') || ''; - if (action.blank()) action = window.location.href; - options.parameters = form.serialize(true); - - if (params) { - if (Object.isString(params)) params = params.toQueryParams(); - Object.extend(options.parameters, params); - } - - if (form.hasAttribute('method') && !options.method) - options.method = form.method; - - return new Ajax.Request(action, options); - } -}; - -/*--------------------------------------------------------------------------*/ - -Form.Element = { - focus: function(element) { - $(element).focus(); - return element; - }, - - select: function(element) { - $(element).select(); - return element; - } -}; - -Form.Element.Methods = { - serialize: function(element) { - element = $(element); - if (!element.disabled && element.name) { - var value = element.getValue(); - if (value != undefined) { - var pair = { }; - pair[element.name] = value; - return Object.toQueryString(pair); - } - } - return ''; - }, - - getValue: function(element) { - element = $(element); - var method = element.tagName.toLowerCase(); - return Form.Element.Serializers[method](element); - }, - - setValue: function(element, value) { - element = $(element); - var method = element.tagName.toLowerCase(); - Form.Element.Serializers[method](element, value); - return element; - }, - - clear: function(element) { - $(element).value = ''; - return element; - }, - - present: function(element) { - return $(element).value != ''; - }, - - activate: function(element) { - element = $(element); - try { - element.focus(); - if (element.select && (element.tagName.toLowerCase() != 'input' || - !['button', 'reset', 'submit'].include(element.type))) - element.select(); - } catch (e) { } - return element; - }, - - disable: function(element) { - element = $(element); - element.blur(); - element.disabled = true; - return element; - }, - - enable: function(element) { - element = $(element); - element.disabled = false; - return element; - } -}; - -/*--------------------------------------------------------------------------*/ - -var Field = Form.Element; -var $F = Form.Element.Methods.getValue; - -/*--------------------------------------------------------------------------*/ - -Form.Element.Serializers = { - input: function(element, value) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - return Form.Element.Serializers.inputSelector(element, value); - default: - return Form.Element.Serializers.textarea(element, value); - } - }, - - inputSelector: function(element, value) { - if (value === undefined) return element.checked ? element.value : null; - else element.checked = !!value; - }, - - textarea: function(element, value) { - if (value === undefined) return element.value; - else element.value = value; - }, - - select: function(element, index) { - if (index === undefined) - return this[element.type == 'select-one' ? - 'selectOne' : 'selectMany'](element); - else { - var opt, value, single = !Object.isArray(index); - for (var i = 0, length = element.length; i < length; i++) { - opt = element.options[i]; - value = this.optionValue(opt); - if (single) { - if (value == index) { - opt.selected = true; - return; - } - } - else opt.selected = index.include(value); - } - } - }, - - selectOne: function(element) { - var index = element.selectedIndex; - return index >= 0 ? this.optionValue(element.options[index]) : null; - }, - - selectMany: function(element) { - var values, length = element.length; - if (!length) return null; - - for (var i = 0, values = []; i < length; i++) { - var opt = element.options[i]; - if (opt.selected) values.push(this.optionValue(opt)); - } - return values; - }, - - optionValue: function(opt) { - // extend element because hasAttribute may not be native - return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text; - } -}; - -/*--------------------------------------------------------------------------*/ - -Abstract.TimedObserver = Class.create(PeriodicalExecuter, { - initialize: function($super, element, frequency, callback) { - $super(callback, frequency); - this.element = $(element); - this.lastValue = this.getValue(); - }, - - execute: function() { - var value = this.getValue(); - if (Object.isString(this.lastValue) && Object.isString(value) ? - this.lastValue != value : String(this.lastValue) != String(value)) { - this.callback(this.element, value); - this.lastValue = value; - } - } -}); - -Form.Element.Observer = Class.create(Abstract.TimedObserver, { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.Observer = Class.create(Abstract.TimedObserver, { - getValue: function() { - return Form.serialize(this.element); - } -}); - -/*--------------------------------------------------------------------------*/ - -Abstract.EventObserver = Class.create({ - initialize: function(element, callback) { - this.element = $(element); - this.callback = callback; - - this.lastValue = this.getValue(); - if (this.element.tagName.toLowerCase() == 'form') - this.registerFormCallbacks(); - else - this.registerCallback(this.element); - }, - - onElementEvent: function() { - var value = this.getValue(); - if (this.lastValue != value) { - this.callback(this.element, value); - this.lastValue = value; - } - }, - - registerFormCallbacks: function() { - Form.getElements(this.element).each(this.registerCallback, this); - }, - - registerCallback: function(element) { - if (element.type) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - Event.observe(element, 'click', this.onElementEvent.bind(this)); - break; - default: - Event.observe(element, 'change', this.onElementEvent.bind(this)); - break; - } - } - } -}); - -Form.Element.EventObserver = Class.create(Abstract.EventObserver, { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.EventObserver = Class.create(Abstract.EventObserver, { - getValue: function() { - return Form.serialize(this.element); - } -}); -if (!window.Event) var Event = { }; - -Object.extend(Event, { - KEY_BACKSPACE: 8, - KEY_TAB: 9, - KEY_RETURN: 13, - KEY_ESC: 27, - KEY_LEFT: 37, - KEY_UP: 38, - KEY_RIGHT: 39, - KEY_DOWN: 40, - KEY_DELETE: 46, - KEY_HOME: 36, - KEY_END: 35, - KEY_PAGEUP: 33, - KEY_PAGEDOWN: 34, - KEY_INSERT: 45, - - cache: { }, - - relatedTarget: function(event) { - var element; - switch(event.type) { - case 'mouseover': element = event.fromElement; break; - case 'mouseout': element = event.toElement; break; - default: return null; - } - return Element.extend(element); - } -}); - -Event.Methods = (function() { - var isButton; - - if (Prototype.Browser.IE) { - var buttonMap = { 0: 1, 1: 4, 2: 2 }; - isButton = function(event, code) { - return event.button == buttonMap[code]; - }; - - } else if (Prototype.Browser.WebKit) { - isButton = function(event, code) { - switch (code) { - case 0: return event.which == 1 && !event.metaKey; - case 1: return event.which == 1 && event.metaKey; - default: return false; - } - }; - - } else { - isButton = function(event, code) { - return event.which ? (event.which === code + 1) : (event.button === code); - }; - } - - return { - isLeftClick: function(event) { return isButton(event, 0) }, - isMiddleClick: function(event) { return isButton(event, 1) }, - isRightClick: function(event) { return isButton(event, 2) }, - - element: function(event) { - var node = Event.extend(event).target; - return Element.extend(node.nodeType == Node.TEXT_NODE ? node.parentNode : node); - }, - - findElement: function(event, expression) { - var element = Event.element(event); - return element.match(expression) ? element : element.up(expression); - }, - - pointer: function(event) { - return { - x: event.pageX || (event.clientX + - (document.documentElement.scrollLeft || document.body.scrollLeft)), - y: event.pageY || (event.clientY + - (document.documentElement.scrollTop || document.body.scrollTop)) - }; - }, - - pointerX: function(event) { return Event.pointer(event).x }, - pointerY: function(event) { return Event.pointer(event).y }, - - stop: function(event) { - Event.extend(event); - event.preventDefault(); - event.stopPropagation(); - event.stopped = true; - } - }; -})(); - -Event.extend = (function() { - var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { - m[name] = Event.Methods[name].methodize(); - return m; - }); - - if (Prototype.Browser.IE) { - Object.extend(methods, { - stopPropagation: function() { this.cancelBubble = true }, - preventDefault: function() { this.returnValue = false }, - inspect: function() { return "[object Event]" } - }); - - return function(event) { - if (!event) return false; - if (event._extendedByPrototype) return event; - - event._extendedByPrototype = Prototype.emptyFunction; - var pointer = Event.pointer(event); - Object.extend(event, { - target: event.srcElement, - relatedTarget: Event.relatedTarget(event), - pageX: pointer.x, - pageY: pointer.y - }); - return Object.extend(event, methods); - }; - - } else { - Event.prototype = Event.prototype || document.createEvent("HTMLEvents").__proto__; - Object.extend(Event.prototype, methods); - return Prototype.K; - } -})(); - -Object.extend(Event, (function() { - var cache = Event.cache; - - function getEventID(element) { - if (element._eventID) return element._eventID; - arguments.callee.id = arguments.callee.id || 1; - return element._eventID = ++arguments.callee.id; - } - - function getDOMEventName(eventName) { - if (eventName && eventName.include(':')) return "dataavailable"; - return eventName; - } - - function getCacheForID(id) { - return cache[id] = cache[id] || { }; - } - - function getWrappersForEventName(id, eventName) { - var c = getCacheForID(id); - return c[eventName] = c[eventName] || []; - } - - function createWrapper(element, eventName, handler) { - var id = getEventID(element); - var c = getWrappersForEventName(id, eventName); - if (c.pluck("handler").include(handler)) return false; - - var wrapper = function(event) { - if (!Event || !Event.extend || - (event.eventName && event.eventName != eventName)) - return false; - - Event.extend(event); - handler.call(element, event) - }; - - wrapper.handler = handler; - c.push(wrapper); - return wrapper; - } - - function findWrapper(id, eventName, handler) { - var c = getWrappersForEventName(id, eventName); - return c.find(function(wrapper) { return wrapper.handler == handler }); - } - - function destroyWrapper(id, eventName, handler) { - var c = getCacheForID(id); - if (!c[eventName]) return false; - c[eventName] = c[eventName].without(findWrapper(id, eventName, handler)); - } - - function destroyCache() { - for (var id in cache) - for (var eventName in cache[id]) - cache[id][eventName] = null; - } - - if (window.attachEvent) { - window.attachEvent("onunload", destroyCache); - } - - return { - observe: function(element, eventName, handler) { - element = $(element); - var name = getDOMEventName(eventName); - - var wrapper = createWrapper(element, eventName, handler); - if (!wrapper) return element; - - if (element.addEventListener) { - element.addEventListener(name, wrapper, false); - } else { - element.attachEvent("on" + name, wrapper); - } - - return element; - }, - - stopObserving: function(element, eventName, handler) { - element = $(element); - var id = getEventID(element), name = getDOMEventName(eventName); - - if (!handler && eventName) { - getWrappersForEventName(id, eventName).each(function(wrapper) { - element.stopObserving(eventName, wrapper.handler); - }); - return element; - - } else if (!eventName) { - Object.keys(getCacheForID(id)).each(function(eventName) { - element.stopObserving(eventName); - }); - return element; - } - - var wrapper = findWrapper(id, eventName, handler); - if (!wrapper) return element; - - if (element.removeEventListener) { - element.removeEventListener(name, wrapper, false); - } else { - element.detachEvent("on" + name, wrapper); - } - - destroyWrapper(id, eventName, handler); - - return element; - }, - - fire: function(element, eventName, memo) { - element = $(element); - if (element == document && document.createEvent && !element.dispatchEvent) - element = document.documentElement; - - if (document.createEvent) { - var event = document.createEvent("HTMLEvents"); - event.initEvent("dataavailable", true, true); - } else { - var event = document.createEventObject(); - event.eventType = "ondataavailable"; - } - - event.eventName = eventName; - event.memo = memo || { }; - - if (document.createEvent) { - element.dispatchEvent(event); - } else { - element.fireEvent(event.eventType, event); - } - - return event; - } - }; -})()); - -Object.extend(Event, Event.Methods); - -Element.addMethods({ - fire: Event.fire, - observe: Event.observe, - stopObserving: Event.stopObserving -}); - -Object.extend(document, { - fire: Element.Methods.fire.methodize(), - observe: Element.Methods.observe.methodize(), - stopObserving: Element.Methods.stopObserving.methodize() -}); - -(function() { - /* Support for the DOMContentLoaded event is based on work by Dan Webb, - Matthias Miller, Dean Edwards and John Resig. */ - - var timer, fired = false; - - function fireContentLoadedEvent() { - if (fired) return; - if (timer) window.clearInterval(timer); - document.fire("dom:loaded"); - fired = true; - } - - if (document.addEventListener) { - if (Prototype.Browser.WebKit) { - timer = window.setInterval(function() { - if (/loaded|complete/.test(document.readyState)) - fireContentLoadedEvent(); - }, 0); - - Event.observe(window, "load", fireContentLoadedEvent); - - } else { - document.addEventListener("DOMContentLoaded", - fireContentLoadedEvent, false); - } - - } else { - document.write(" - - - -
        -

        <%=h exception.class %> at <%=h path %>

        -

        <%=h exception.message %>

        - - - - - - -
        Ruby<%=h frames.first.filename %>: in <%=h frames.first.function %>, line <%=h frames.first.lineno %>
        Web<%=h req.request_method %> <%=h(req.host + path)%>
        - -

        Jump to:

        - -
        - -
        -

        Traceback (innermost first)

        -
          -<% frames.each { |frame| %> -
        • - <%=h frame.filename %>: in <%=h frame.function %> - - <% if frame.context_line %> -
          - <% if frame.pre_context %> -
            - <% frame.pre_context.each { |line| %> -
          1. <%=h line %>
          2. - <% } %> -
          - <% end %> - -
            -
          1. <%=h frame.context_line %>...
          - - <% if frame.post_context %> -
            - <% frame.post_context.each { |line| %> -
          1. <%=h line %>
          2. - <% } %> -
          - <% end %> -
          - <% end %> -
        • -<% } %> -
        -
        - -
        -

        Request information

        - -

        GET

        - <% unless req.GET.empty? %> - - - - - - - - - <% req.GET.sort_by { |k, v| k.to_s }.each { |key, val| %> - - - - - <% } %> - -
        VariableValue
        <%=h key %>
        <%=h val.inspect %>
        - <% else %> -

        No GET data.

        - <% end %> - -

        POST

        - <% unless req.POST.empty? %> - - - - - - - - - <% req.POST.sort_by { |k, v| k.to_s }.each { |key, val| %> - - - - - <% } %> - -
        VariableValue
        <%=h key %>
        <%=h val.inspect %>
        - <% else %> -

        No POST data.

        - <% end %> - - - - <% unless req.cookies.empty? %> - - - - - - - - - <% req.cookies.each { |key, val| %> - - - - - <% } %> - -
        VariableValue
        <%=h key %>
        <%=h val.inspect %>
        - <% else %> -

        No cookie data.

        - <% end %> - -

        Rack ENV

        - - - - - - - - - <% env.sort_by { |k, v| k.to_s }.each { |key, val| %> - - - - - <% } %> - -
        VariableValue
        <%=h key %>
        <%=h val %>
        - -
        - -
        -

        - You're seeing this error because you use Rack::ShowExceptions. -

        -
        - - - -HTML - - # :startdoc: - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/showstatus.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/showstatus.rb deleted file mode 100644 index 28258c7c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/showstatus.rb +++ /dev/null @@ -1,106 +0,0 @@ -require 'erb' -require 'rack/request' -require 'rack/utils' - -module Rack - # Rack::ShowStatus catches all empty responses the app it wraps and - # replaces them with a site explaining the error. - # - # Additional details can be put into rack.showstatus.detail - # and will be shown as HTML. If such details exist, the error page - # is always rendered, even if the reply was not empty. - - class ShowStatus - def initialize(app) - @app = app - @template = ERB.new(TEMPLATE) - end - - def call(env) - status, headers, body = @app.call(env) - headers = Utils::HeaderHash.new(headers) - empty = headers['Content-Length'].to_i <= 0 - - # client or server error, or explicit message - if (status.to_i >= 400 && empty) || env["rack.showstatus.detail"] - req = Rack::Request.new(env) - message = Rack::Utils::HTTP_STATUS_CODES[status.to_i] || status.to_s - detail = env["rack.showstatus.detail"] || message - body = @template.result(binding) - size = Rack::Utils.bytesize(body) - [status, headers.merge("Content-Type" => "text/html", "Content-Length" => size.to_s), [body]] - else - [status, headers, body] - end - end - - def h(obj) # :nodoc: - case obj - when String - Utils.escape_html(obj) - else - Utils.escape_html(obj.inspect) - end - end - - # :stopdoc: - -# adapted from Django -# Copyright (c) 2005, the Lawrence Journal-World -# Used under the modified BSD license: -# http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5 -TEMPLATE = <<'HTML' - - - - - <%=h message %> at <%=h req.script_name + req.path_info %> - - - - -
        -

        <%=h message %> (<%= status.to_i %>)

        - - - - - - - - - -
        Request Method:<%=h req.request_method %>
        Request URL:<%=h req.url %>
        -
        -
        -

        <%= detail %>

        -
        - -
        -

        - You're seeing this error because you use Rack::ShowStatus. -

        -
        - - -HTML - - # :startdoc: - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/static.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/static.rb deleted file mode 100644 index 168e8f83..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/static.rb +++ /dev/null @@ -1,38 +0,0 @@ -module Rack - - # The Rack::Static middleware intercepts requests for static files - # (javascript files, images, stylesheets, etc) based on the url prefixes - # passed in the options, and serves them using a Rack::File object. This - # allows a Rack stack to serve both static and dynamic content. - # - # Examples: - # use Rack::Static, :urls => ["/media"] - # will serve all requests beginning with /media from the "media" folder - # located in the current directory (ie media/*). - # - # use Rack::Static, :urls => ["/css", "/images"], :root => "public" - # will serve all requests beginning with /css or /images from the folder - # "public" in the current directory (ie public/css/* and public/images/*) - - class Static - - def initialize(app, options={}) - @app = app - @urls = options[:urls] || ["/favicon.ico"] - root = options[:root] || Dir.pwd - @file_server = Rack::File.new(root) - end - - def call(env) - path = env["PATH_INFO"] - can_serve = @urls.any? { |url| path.index(url) == 0 } - - if can_serve - @file_server.call(env) - else - @app.call(env) - end - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/urlmap.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/urlmap.rb deleted file mode 100644 index b699d35b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/urlmap.rb +++ /dev/null @@ -1,56 +0,0 @@ -module Rack - # Rack::URLMap takes a hash mapping urls or paths to apps, and - # dispatches accordingly. Support for HTTP/1.1 host names exists if - # the URLs start with http:// or https://. - # - # URLMap modifies the SCRIPT_NAME and PATH_INFO such that the part - # relevant for dispatch is in the SCRIPT_NAME, and the rest in the - # PATH_INFO. This should be taken care of when you need to - # reconstruct the URL in order to create links. - # - # URLMap dispatches in such a way that the longest paths are tried - # first, since they are most specific. - - class URLMap - def initialize(map = {}) - remap(map) - end - - def remap(map) - @mapping = map.map { |location, app| - if location =~ %r{\Ahttps?://(.*?)(/.*)} - host, location = $1, $2 - else - host = nil - end - - unless location[0] == ?/ - raise ArgumentError, "paths need to start with /" - end - location = location.chomp('/') - match = Regexp.new("^#{Regexp.quote(location).gsub('/', '/+')}(.*)", nil, 'n') - - [host, location, match, app] - }.sort_by { |(h, l, m, a)| [h ? -h.size : (-1.0 / 0.0), -l.size] } # Longest path first - end - - def call(env) - path = env["PATH_INFO"].to_s - script_name = env['SCRIPT_NAME'] - hHost, sName, sPort = env.values_at('HTTP_HOST','SERVER_NAME','SERVER_PORT') - @mapping.each { |host, location, match, app| - next unless (hHost == host || sName == host \ - || (host.nil? && (hHost == sName || hHost == sName+':'+sPort))) - next unless path =~ match && rest = $1 - next unless rest.empty? || rest[0] == ?/ - - return app.call( - env.merge( - 'SCRIPT_NAME' => (script_name + location), - 'PATH_INFO' => rest)) - } - [404, {"Content-Type" => "text/plain", "X-Cascade" => "pass"}, ["Not Found: #{path}"]] - end - end -end - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/utils.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/utils.rb deleted file mode 100644 index 68fd6ace..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/lib/rack/utils.rb +++ /dev/null @@ -1,620 +0,0 @@ -# -*- encoding: binary -*- - -require 'set' -require 'tempfile' - -module Rack - # Rack::Utils contains a grab-bag of useful methods for writing web - # applications adopted from all kinds of Ruby libraries. - - module Utils - # Performs URI escaping so that you can construct proper - # query strings faster. Use this rather than the cgi.rb - # version since it's faster. (Stolen from Camping). - def escape(s) - s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/n) { - '%'+$1.unpack('H2'*bytesize($1)).join('%').upcase - }.tr(' ', '+') - end - module_function :escape - - # Unescapes a URI escaped string. (Stolen from Camping). - def unescape(s) - s.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n){ - [$1.delete('%')].pack('H*') - } - end - module_function :unescape - - DEFAULT_SEP = /[&;] */n - - # Stolen from Mongrel, with some small modifications: - # Parses a query string by breaking it up at the '&' - # and ';' characters. You can also use this to parse - # cookies by changing the characters used in the second - # parameter (which defaults to '&;'). - def parse_query(qs, d = nil) - params = {} - - (qs || '').split(d ? /[#{d}] */n : DEFAULT_SEP).each do |p| - k, v = p.split('=', 2).map { |x| unescape(x) } - if v =~ /^("|')(.*)\1$/ - v = $2.gsub('\\'+$1, $1) - end - if cur = params[k] - if cur.class == Array - params[k] << v - else - params[k] = [cur, v] - end - else - params[k] = v - end - end - - return params - end - module_function :parse_query - - def parse_nested_query(qs, d = nil) - params = {} - - (qs || '').split(d ? /[#{d}] */n : DEFAULT_SEP).each do |p| - k, v = unescape(p).split('=', 2) - normalize_params(params, k, v) - end - - return params - end - module_function :parse_nested_query - - def normalize_params(params, name, v = nil) - if v and v =~ /^("|')(.*)\1$/ - v = $2.gsub('\\'+$1, $1) - end - name =~ %r(\A[\[\]]*([^\[\]]+)\]*) - k = $1 || '' - after = $' || '' - - return if k.empty? - - if after == "" - params[k] = v - elsif after == "[]" - params[k] ||= [] - raise TypeError, "expected Array (got #{params[k].class.name}) for param `#{k}'" unless params[k].is_a?(Array) - params[k] << v - elsif after =~ %r(^\[\]\[([^\[\]]+)\]$) || after =~ %r(^\[\](.+)$) - child_key = $1 - params[k] ||= [] - raise TypeError, "expected Array (got #{params[k].class.name}) for param `#{k}'" unless params[k].is_a?(Array) - if params[k].last.is_a?(Hash) && !params[k].last.key?(child_key) - normalize_params(params[k].last, child_key, v) - else - params[k] << normalize_params({}, child_key, v) - end - else - params[k] ||= {} - raise TypeError, "expected Hash (got #{params[k].class.name}) for param `#{k}'" unless params[k].is_a?(Hash) - params[k] = normalize_params(params[k], after, v) - end - - return params - end - module_function :normalize_params - - def build_query(params) - params.map { |k, v| - if v.class == Array - build_query(v.map { |x| [k, x] }) - else - "#{escape(k)}=#{escape(v)}" - end - }.join("&") - end - module_function :build_query - - def build_nested_query(value, prefix = nil) - case value - when Array - value.map { |v| - build_nested_query(v, "#{prefix}[]") - }.join("&") - when Hash - value.map { |k, v| - build_nested_query(v, prefix ? "#{prefix}[#{escape(k)}]" : escape(k)) - }.join("&") - when String - raise ArgumentError, "value must be a Hash" if prefix.nil? - "#{prefix}=#{escape(value)}" - else - prefix - end - end - module_function :build_nested_query - - # Escape ampersands, brackets and quotes to their HTML/XML entities. - def escape_html(string) - string.to_s.gsub("&", "&"). - gsub("<", "<"). - gsub(">", ">"). - gsub("'", "'"). - gsub('"', """) - end - module_function :escape_html - - def select_best_encoding(available_encodings, accept_encoding) - # http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html - - expanded_accept_encoding = - accept_encoding.map { |m, q| - if m == "*" - (available_encodings - accept_encoding.map { |m2, _| m2 }).map { |m2| [m2, q] } - else - [[m, q]] - end - }.inject([]) { |mem, list| - mem + list - } - - encoding_candidates = expanded_accept_encoding.sort_by { |_, q| -q }.map { |m, _| m } - - unless encoding_candidates.include?("identity") - encoding_candidates.push("identity") - end - - expanded_accept_encoding.find_all { |m, q| - q == 0.0 - }.each { |m, _| - encoding_candidates.delete(m) - } - - return (encoding_candidates & available_encodings)[0] - end - module_function :select_best_encoding - - def set_cookie_header!(header, key, value) - case value - when Hash - domain = "; domain=" + value[:domain] if value[:domain] - path = "; path=" + value[:path] if value[:path] - # According to RFC 2109, we need dashes here. - # N.B.: cgi.rb uses spaces... - expires = "; expires=" + value[:expires].clone.gmtime. - strftime("%a, %d-%b-%Y %H:%M:%S GMT") if value[:expires] - secure = "; secure" if value[:secure] - httponly = "; HttpOnly" if value[:httponly] - value = value[:value] - end - value = [value] unless Array === value - cookie = escape(key) + "=" + - value.map { |v| escape v }.join("&") + - "#{domain}#{path}#{expires}#{secure}#{httponly}" - - case header["Set-Cookie"] - when Array - header["Set-Cookie"] << cookie - when String - header["Set-Cookie"] = [header["Set-Cookie"], cookie] - when nil - header["Set-Cookie"] = cookie - end - - nil - end - module_function :set_cookie_header! - - def delete_cookie_header!(header, key, value = {}) - unless Array === header["Set-Cookie"] - header["Set-Cookie"] = [header["Set-Cookie"]].compact - end - - header["Set-Cookie"].reject! { |cookie| - cookie =~ /\A#{escape(key)}=/ - } - - set_cookie_header!(header, key, - {:value => '', :path => nil, :domain => nil, - :expires => Time.at(0) }.merge(value)) - - nil - end - module_function :delete_cookie_header! - - # Return the bytesize of String; uses String#length under Ruby 1.8 and - # String#bytesize under 1.9. - if ''.respond_to?(:bytesize) - def bytesize(string) - string.bytesize - end - else - def bytesize(string) - string.size - end - end - module_function :bytesize - - # Context allows the use of a compatible middleware at different points - # in a request handling stack. A compatible middleware must define - # #context which should take the arguments env and app. The first of which - # would be the request environment. The second of which would be the rack - # application that the request would be forwarded to. - class Context - attr_reader :for, :app - - def initialize(app_f, app_r) - raise 'running context does not respond to #context' unless app_f.respond_to? :context - @for, @app = app_f, app_r - end - - def call(env) - @for.context(env, @app) - end - - def recontext(app) - self.class.new(@for, app) - end - - def context(env, app=@app) - recontext(app).call(env) - end - end - - # A case-insensitive Hash that preserves the original case of a - # header when set. - class HeaderHash < Hash - def self.new(hash={}) - HeaderHash === hash ? hash : super(hash) - end - - def initialize(hash={}) - super() - @names = {} - hash.each { |k, v| self[k] = v } - end - - def each - super do |k, v| - yield(k, v.respond_to?(:to_ary) ? v.to_ary.join("\n") : v) - end - end - - def to_hash - inject({}) do |hash, (k,v)| - if v.respond_to? :to_ary - hash[k] = v.to_ary.join("\n") - else - hash[k] = v - end - hash - end - end - - def [](k) - super(@names[k] ||= @names[k.downcase]) - end - - def []=(k, v) - delete k - @names[k] = @names[k.downcase] = k - super k, v - end - - def delete(k) - canonical = k.downcase - result = super @names.delete(canonical) - @names.delete_if { |name,| name.downcase == canonical } - result - end - - def include?(k) - @names.include?(k) || @names.include?(k.downcase) - end - - alias_method :has_key?, :include? - alias_method :member?, :include? - alias_method :key?, :include? - - def merge!(other) - other.each { |k, v| self[k] = v } - self - end - - def merge(other) - hash = dup - hash.merge! other - end - - def replace(other) - clear - other.each { |k, v| self[k] = v } - self - end - end - - # Every standard HTTP code mapped to the appropriate message. - # Generated with: - # curl -s http://www.iana.org/assignments/http-status-codes | \ - # ruby -ane 'm = /^(\d{3}) +(\S[^\[(]+)/.match($_) and - # puts " #{m[1]} => \x27#{m[2].strip}x27,"' - HTTP_STATUS_CODES = { - 100 => 'Continue', - 101 => 'Switching Protocols', - 102 => 'Processing', - 200 => 'OK', - 201 => 'Created', - 202 => 'Accepted', - 203 => 'Non-Authoritative Information', - 204 => 'No Content', - 205 => 'Reset Content', - 206 => 'Partial Content', - 207 => 'Multi-Status', - 226 => 'IM Used', - 300 => 'Multiple Choices', - 301 => 'Moved Permanently', - 302 => 'Found', - 303 => 'See Other', - 304 => 'Not Modified', - 305 => 'Use Proxy', - 306 => 'Reserved', - 307 => 'Temporary Redirect', - 400 => 'Bad Request', - 401 => 'Unauthorized', - 402 => 'Payment Required', - 403 => 'Forbidden', - 404 => 'Not Found', - 405 => 'Method Not Allowed', - 406 => 'Not Acceptable', - 407 => 'Proxy Authentication Required', - 408 => 'Request Timeout', - 409 => 'Conflict', - 410 => 'Gone', - 411 => 'Length Required', - 412 => 'Precondition Failed', - 413 => 'Request Entity Too Large', - 414 => 'Request-URI Too Long', - 415 => 'Unsupported Media Type', - 416 => 'Requested Range Not Satisfiable', - 417 => 'Expectation Failed', - 422 => 'Unprocessable Entity', - 423 => 'Locked', - 424 => 'Failed Dependency', - 426 => 'Upgrade Required', - 500 => 'Internal Server Error', - 501 => 'Not Implemented', - 502 => 'Bad Gateway', - 503 => 'Service Unavailable', - 504 => 'Gateway Timeout', - 505 => 'HTTP Version Not Supported', - 506 => 'Variant Also Negotiates', - 507 => 'Insufficient Storage', - 510 => 'Not Extended', - } - - # Responses with HTTP status codes that should not have an entity body - STATUS_WITH_NO_ENTITY_BODY = Set.new((100..199).to_a << 204 << 304) - - SYMBOL_TO_STATUS_CODE = HTTP_STATUS_CODES.inject({}) { |hash, (code, message)| - hash[message.downcase.gsub(/\s|-/, '_').to_sym] = code - hash - } - - def status_code(status) - if status.is_a?(Symbol) - SYMBOL_TO_STATUS_CODE[status] || 500 - else - status.to_i - end - end - module_function :status_code - - # A multipart form data parser, adapted from IOWA. - # - # Usually, Rack::Request#POST takes care of calling this. - - module Multipart - class UploadedFile - # The filename, *not* including the path, of the "uploaded" file - attr_reader :original_filename - - # The content type of the "uploaded" file - attr_accessor :content_type - - def initialize(path, content_type = "text/plain", binary = false) - raise "#{path} file does not exist" unless ::File.exist?(path) - @content_type = content_type - @original_filename = ::File.basename(path) - @tempfile = Tempfile.new(@original_filename) - @tempfile.set_encoding(Encoding::BINARY) if @tempfile.respond_to?(:set_encoding) - @tempfile.binmode if binary - FileUtils.copy_file(path, @tempfile.path) - end - - def path - @tempfile.path - end - alias_method :local_path, :path - - def method_missing(method_name, *args, &block) #:nodoc: - @tempfile.__send__(method_name, *args, &block) - end - end - - EOL = "\r\n" - MULTIPART_BOUNDARY = "AaB03x" - - def self.parse_multipart(env) - unless env['CONTENT_TYPE'] =~ - %r|\Amultipart/.*boundary=\"?([^\";,]+)\"?|n - nil - else - boundary = "--#{$1}" - - params = {} - buf = "" - content_length = env['CONTENT_LENGTH'].to_i - input = env['rack.input'] - input.rewind - - boundary_size = Utils.bytesize(boundary) + EOL.size - bufsize = 16384 - - content_length -= boundary_size - - read_buffer = '' - - status = input.read(boundary_size, read_buffer) - raise EOFError, "bad content body" unless status == boundary + EOL - - rx = /(?:#{EOL})?#{Regexp.quote boundary}(#{EOL}|--)/n - - loop { - head = nil - body = '' - filename = content_type = name = nil - - until head && buf =~ rx - if !head && i = buf.index(EOL+EOL) - head = buf.slice!(0, i+2) # First \r\n - buf.slice!(0, 2) # Second \r\n - - filename = head[/Content-Disposition:.* filename=(?:"((?:\\.|[^\"])*)"|([^;\s]*))/ni, 1] - content_type = head[/Content-Type: (.*)#{EOL}/ni, 1] - name = head[/Content-Disposition:.*\s+name="?([^\";]*)"?/ni, 1] || head[/Content-ID:\s*([^#{EOL}]*)/ni, 1] - - if content_type || filename - body = Tempfile.new("RackMultipart") - body.binmode if body.respond_to?(:binmode) - end - - next - end - - # Save the read body part. - if head && (boundary_size+4 < buf.size) - body << buf.slice!(0, buf.size - (boundary_size+4)) - end - - c = input.read(bufsize < content_length ? bufsize : content_length, read_buffer) - raise EOFError, "bad content body" if c.nil? || c.empty? - buf << c - content_length -= c.size - end - - # Save the rest. - if i = buf.index(rx) - body << buf.slice!(0, i) - buf.slice!(0, boundary_size+2) - - content_length = -1 if $1 == "--" - end - - if filename == "" - # filename is blank which means no file has been selected - data = nil - elsif filename - body.rewind - - # Take the basename of the upload's original filename. - # This handles the full Windows paths given by Internet Explorer - # (and perhaps other broken user agents) without affecting - # those which give the lone filename. - filename =~ /^(?:.*[:\\\/])?(.*)/m - filename = $1 - - data = {:filename => filename, :type => content_type, - :name => name, :tempfile => body, :head => head} - elsif !filename && content_type - body.rewind - - # Generic multipart cases, not coming from a form - data = {:type => content_type, - :name => name, :tempfile => body, :head => head} - else - data = body - end - - Utils.normalize_params(params, name, data) unless data.nil? - - # break if we're at the end of a buffer, but not if it is the end of a field - break if (buf.empty? && $1 != EOL) || content_length == -1 - } - - input.rewind - - params - end - end - - def self.build_multipart(params, first = true) - if first - unless params.is_a?(Hash) - raise ArgumentError, "value must be a Hash" - end - - multipart = false - query = lambda { |value| - case value - when Array - value.each(&query) - when Hash - value.values.each(&query) - when UploadedFile - multipart = true - end - } - params.values.each(&query) - return nil unless multipart - end - - flattened_params = Hash.new - - params.each do |key, value| - k = first ? key.to_s : "[#{key}]" - - case value - when Array - value.map { |v| - build_multipart(v, false).each { |subkey, subvalue| - flattened_params["#{k}[]#{subkey}"] = subvalue - } - } - when Hash - build_multipart(value, false).each { |subkey, subvalue| - flattened_params[k + subkey] = subvalue - } - else - flattened_params[k] = value - end - end - - if first - flattened_params.map { |name, file| - if file.respond_to?(:original_filename) - ::File.open(file.path, "rb") do |f| - f.set_encoding(Encoding::BINARY) if f.respond_to?(:set_encoding) -<<-EOF ---#{MULTIPART_BOUNDARY}\r -Content-Disposition: form-data; name="#{name}"; filename="#{Utils.escape(file.original_filename)}"\r -Content-Type: #{file.content_type}\r -Content-Length: #{::File.stat(file.path).size}\r -\r -#{f.read}\r -EOF - end - else -<<-EOF ---#{MULTIPART_BOUNDARY}\r -Content-Disposition: form-data; name="#{name}"\r -\r -#{file}\r -EOF - end - }.join + "--#{MULTIPART_BOUNDARY}--\r" - else - flattened_params - end - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/rack.gemspec b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/rack.gemspec deleted file mode 100644 index e28b9bb2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/rack.gemspec +++ /dev/null @@ -1,38 +0,0 @@ -Gem::Specification.new do |s| - s.name = "rack" - s.version = "1.1.0" - s.platform = Gem::Platform::RUBY - s.summary = "a modular Ruby webserver interface" - - s.description = <<-EOF -Rack provides minimal, modular and adaptable interface for developing -web applications in Ruby. By wrapping HTTP requests and responses in -the simplest way possible, it unifies and distills the API for web -servers, web frameworks, and software in between (the so-called -middleware) into a single method call. - -Also see http://rack.rubyforge.org. -EOF - - s.files = Dir['{bin/*,contrib/*,example/*,lib/**/*}'] + - %w(COPYING KNOWN-ISSUES rack.gemspec RDOX README SPEC) - s.bindir = 'bin' - s.executables << 'rackup' - s.require_path = 'lib' - s.has_rdoc = true - s.extra_rdoc_files = ['README', 'SPEC', 'KNOWN-ISSUES'] - s.test_files = Dir['test/{test,spec}_*.rb'] - - s.author = 'Christian Neukirchen' - s.email = 'chneukirchen@gmail.com' - s.homepage = 'http://rack.rubyforge.org' - s.rubyforge_project = 'rack' - - s.add_development_dependency 'test-spec' - - s.add_development_dependency 'camping' - s.add_development_dependency 'fcgi' - s.add_development_dependency 'memcache-client' - s.add_development_dependency 'mongrel' - s.add_development_dependency 'thin' -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_auth_basic.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_auth_basic.rb deleted file mode 100644 index 0176efc8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_auth_basic.rb +++ /dev/null @@ -1,73 +0,0 @@ -require 'test/spec' - -require 'rack/auth/basic' -require 'rack/mock' - -context 'Rack::Auth::Basic' do - - def realm - 'WallysWorld' - end - - def unprotected_app - lambda { |env| [ 200, {'Content-Type' => 'text/plain'}, ["Hi #{env['REMOTE_USER']}"] ] } - end - - def protected_app - app = Rack::Auth::Basic.new(unprotected_app) { |username, password| 'Boss' == username } - app.realm = realm - app - end - - setup do - @request = Rack::MockRequest.new(protected_app) - end - - def request_with_basic_auth(username, password, &block) - request 'HTTP_AUTHORIZATION' => 'Basic ' + ["#{username}:#{password}"].pack("m*"), &block - end - - def request(headers = {}) - yield @request.get('/', headers) - end - - def assert_basic_auth_challenge(response) - response.should.be.a.client_error - response.status.should.equal 401 - response.should.include 'WWW-Authenticate' - response.headers['WWW-Authenticate'].should =~ /Basic realm="#{Regexp.escape(realm)}"/ - response.body.should.be.empty - end - - specify 'should challenge correctly when no credentials are specified' do - request do |response| - assert_basic_auth_challenge response - end - end - - specify 'should rechallenge if incorrect credentials are specified' do - request_with_basic_auth 'joe', 'password' do |response| - assert_basic_auth_challenge response - end - end - - specify 'should return application output if correct credentials are specified' do - request_with_basic_auth 'Boss', 'password' do |response| - response.status.should.equal 200 - response.body.to_s.should.equal 'Hi Boss' - end - end - - specify 'should return 400 Bad Request if different auth scheme used' do - request 'HTTP_AUTHORIZATION' => 'Digest params' do |response| - response.should.be.a.client_error - response.status.should.equal 400 - response.should.not.include 'WWW-Authenticate' - end - end - - specify 'realm as optional constructor arg' do - app = Rack::Auth::Basic.new(unprotected_app, realm) { true } - assert_equal realm, app.realm - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_auth_digest.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_auth_digest.rb deleted file mode 100644 index a980acc8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_auth_digest.rb +++ /dev/null @@ -1,226 +0,0 @@ -require 'test/spec' - -require 'rack/auth/digest/md5' -require 'rack/mock' - -context 'Rack::Auth::Digest::MD5' do - - def realm - 'WallysWorld' - end - - def unprotected_app - lambda do |env| - [ 200, {'Content-Type' => 'text/plain'}, ["Hi #{env['REMOTE_USER']}"] ] - end - end - - def protected_app - app = Rack::Auth::Digest::MD5.new(unprotected_app) do |username| - { 'Alice' => 'correct-password' }[username] - end - app.realm = realm - app.opaque = 'this-should-be-secret' - app - end - - def protected_app_with_hashed_passwords - app = Rack::Auth::Digest::MD5.new(unprotected_app) do |username| - username == 'Alice' ? Digest::MD5.hexdigest("Alice:#{realm}:correct-password") : nil - end - app.realm = realm - app.opaque = 'this-should-be-secret' - app.passwords_hashed = true - app - end - - def partially_protected_app - Rack::URLMap.new({ - '/' => unprotected_app, - '/protected' => protected_app - }) - end - - def protected_app_with_method_override - Rack::MethodOverride.new(protected_app) - end - - setup do - @request = Rack::MockRequest.new(protected_app) - end - - def request(method, path, headers = {}, &block) - response = @request.request(method, path, headers) - block.call(response) if block - return response - end - - class MockDigestRequest - def initialize(params) - @params = params - end - def method_missing(sym) - if @params.has_key? k = sym.to_s - return @params[k] - end - super - end - def method - @params['method'] - end - def response(password) - Rack::Auth::Digest::MD5.new(nil).send :digest, self, password - end - end - - def request_with_digest_auth(method, path, username, password, options = {}, &block) - request_options = {} - request_options[:input] = options.delete(:input) if options.include? :input - - response = request(method, path, request_options) - - return response unless response.status == 401 - - if wait = options.delete(:wait) - sleep wait - end - - challenge = response['WWW-Authenticate'].split(' ', 2).last - - params = Rack::Auth::Digest::Params.parse(challenge) - - params['username'] = username - params['nc'] = '00000001' - params['cnonce'] = 'nonsensenonce' - params['uri'] = path - - params['method'] = method - - params.update options - - params['response'] = MockDigestRequest.new(params).response(password) - - request(method, path, request_options.merge('HTTP_AUTHORIZATION' => "Digest #{params}"), &block) - end - - def assert_digest_auth_challenge(response) - response.should.be.a.client_error - response.status.should.equal 401 - response.should.include 'WWW-Authenticate' - response.headers['WWW-Authenticate'].should =~ /^Digest / - response.body.should.be.empty - end - - def assert_bad_request(response) - response.should.be.a.client_error - response.status.should.equal 400 - response.should.not.include 'WWW-Authenticate' - end - - specify 'should challenge when no credentials are specified' do - request 'GET', '/' do |response| - assert_digest_auth_challenge response - end - end - - specify 'should return application output if correct credentials given' do - request_with_digest_auth 'GET', '/', 'Alice', 'correct-password' do |response| - response.status.should.equal 200 - response.body.to_s.should.equal 'Hi Alice' - end - end - - specify 'should return application output if correct credentials given (hashed passwords)' do - @request = Rack::MockRequest.new(protected_app_with_hashed_passwords) - - request_with_digest_auth 'GET', '/', 'Alice', 'correct-password' do |response| - response.status.should.equal 200 - response.body.to_s.should.equal 'Hi Alice' - end - end - - specify 'should rechallenge if incorrect username given' do - request_with_digest_auth 'GET', '/', 'Bob', 'correct-password' do |response| - assert_digest_auth_challenge response - end - end - - specify 'should rechallenge if incorrect password given' do - request_with_digest_auth 'GET', '/', 'Alice', 'wrong-password' do |response| - assert_digest_auth_challenge response - end - end - - specify 'should rechallenge with stale parameter if nonce is stale' do - begin - Rack::Auth::Digest::Nonce.time_limit = 1 - - request_with_digest_auth 'GET', '/', 'Alice', 'correct-password', :wait => 2 do |response| - assert_digest_auth_challenge response - response.headers['WWW-Authenticate'].should =~ /\bstale=true\b/ - end - ensure - Rack::Auth::Digest::Nonce.time_limit = nil - end - end - - specify 'should return 400 Bad Request if incorrect qop given' do - request_with_digest_auth 'GET', '/', 'Alice', 'correct-password', 'qop' => 'auth-int' do |response| - assert_bad_request response - end - end - - specify 'should return 400 Bad Request if incorrect uri given' do - request_with_digest_auth 'GET', '/', 'Alice', 'correct-password', 'uri' => '/foo' do |response| - assert_bad_request response - end - end - - specify 'should return 400 Bad Request if different auth scheme used' do - request 'GET', '/', 'HTTP_AUTHORIZATION' => 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==' do |response| - assert_bad_request response - end - end - - specify 'should not require credentials for unprotected path' do - @request = Rack::MockRequest.new(partially_protected_app) - request 'GET', '/' do |response| - response.should.be.ok - end - end - - specify 'should challenge when no credentials are specified for protected path' do - @request = Rack::MockRequest.new(partially_protected_app) - request 'GET', '/protected' do |response| - assert_digest_auth_challenge response - end - end - - specify 'should return application output if correct credentials given for protected path' do - @request = Rack::MockRequest.new(partially_protected_app) - request_with_digest_auth 'GET', '/protected', 'Alice', 'correct-password' do |response| - response.status.should.equal 200 - response.body.to_s.should.equal 'Hi Alice' - end - end - - specify 'should return application output if correct credentials given for POST' do - request_with_digest_auth 'POST', '/', 'Alice', 'correct-password' do |response| - response.status.should.equal 200 - response.body.to_s.should.equal 'Hi Alice' - end - end - - specify 'should return application output if correct credentials given for PUT (using method override of POST)' do - @request = Rack::MockRequest.new(protected_app_with_method_override) - request_with_digest_auth 'POST', '/', 'Alice', 'correct-password', :input => "_method=put" do |response| - response.status.should.equal 200 - response.body.to_s.should.equal 'Hi Alice' - end - end - - specify 'realm as optional constructor arg' do - app = Rack::Auth::Digest::MD5.new(unprotected_app, realm) { true } - assert_equal realm, app.realm - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_builder.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_builder.rb deleted file mode 100644 index 3fad9810..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_builder.rb +++ /dev/null @@ -1,84 +0,0 @@ -require 'test/spec' - -require 'rack/builder' -require 'rack/mock' -require 'rack/showexceptions' -require 'rack/auth/basic' - -context "Rack::Builder" do - specify "chains apps by default" do - app = Rack::Builder.new do - use Rack::ShowExceptions - run lambda { |env| raise "bzzzt" } - end.to_app - - Rack::MockRequest.new(app).get("/").should.be.server_error - Rack::MockRequest.new(app).get("/").should.be.server_error - Rack::MockRequest.new(app).get("/").should.be.server_error - end - - specify "has implicit #to_app" do - app = Rack::Builder.new do - use Rack::ShowExceptions - run lambda { |env| raise "bzzzt" } - end - - Rack::MockRequest.new(app).get("/").should.be.server_error - Rack::MockRequest.new(app).get("/").should.be.server_error - Rack::MockRequest.new(app).get("/").should.be.server_error - end - - specify "supports blocks on use" do - app = Rack::Builder.new do - use Rack::ShowExceptions - use Rack::Auth::Basic do |username, password| - 'secret' == password - end - - run lambda { |env| [200, {}, ['Hi Boss']] } - end - - response = Rack::MockRequest.new(app).get("/") - response.should.be.client_error - response.status.should.equal 401 - - # with auth... - response = Rack::MockRequest.new(app).get("/", - 'HTTP_AUTHORIZATION' => 'Basic ' + ["joe:secret"].pack("m*")) - response.status.should.equal 200 - response.body.to_s.should.equal 'Hi Boss' - end - - specify "has explicit #to_app" do - app = Rack::Builder.app do - use Rack::ShowExceptions - run lambda { |env| raise "bzzzt" } - end - - Rack::MockRequest.new(app).get("/").should.be.server_error - Rack::MockRequest.new(app).get("/").should.be.server_error - Rack::MockRequest.new(app).get("/").should.be.server_error - end - - specify "apps are initialized once" do - app = Rack::Builder.new do - class AppClass - def initialize - @called = 0 - end - def call(env) - raise "bzzzt" if @called > 0 - @called += 1 - [200, {'Content-Type' => 'text/plain'}, ['OK']] - end - end - - use Rack::ShowExceptions - run AppClass.new - end - - Rack::MockRequest.new(app).get("/").status.should.equal 200 - Rack::MockRequest.new(app).get("/").should.be.server_error - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_camping.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_camping.rb deleted file mode 100644 index bed11710..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_camping.rb +++ /dev/null @@ -1,51 +0,0 @@ -require 'test/spec' -require 'stringio' -require 'uri' - -begin - require 'rack/mock' - - $-w, w = nil, $-w # yuck - require 'camping' - require 'rack/adapter/camping' - - Camping.goes :CampApp - module CampApp - module Controllers - class HW < R('/') - def get - @headers["X-Served-By"] = URI("http://rack.rubyforge.org") - "Camping works!" - end - - def post - "Data: #{input.foo}" - end - end - end - end - $-w = w - - context "Rack::Adapter::Camping" do - specify "works with GET" do - res = Rack::MockRequest.new(Rack::Adapter::Camping.new(CampApp)). - get("/") - - res.should.be.ok - res["Content-Type"].should.equal "text/html" - res["X-Served-By"].should.equal "http://rack.rubyforge.org" - - res.body.should.equal "Camping works!" - end - - specify "works with POST" do - res = Rack::MockRequest.new(Rack::Adapter::Camping.new(CampApp)). - post("/", :input => "foo=bar") - - res.should.be.ok - res.body.should.equal "Data: bar" - end - end -rescue LoadError - $stderr.puts "Skipping Rack::Adapter::Camping tests (Camping is required). `gem install camping` and try again." -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_cascade.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_cascade.rb deleted file mode 100644 index cf3c29b4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_cascade.rb +++ /dev/null @@ -1,48 +0,0 @@ -require 'test/spec' - -require 'rack/cascade' -require 'rack/mock' - -require 'rack/urlmap' -require 'rack/file' - -context "Rack::Cascade" do - docroot = File.expand_path(File.dirname(__FILE__)) - app1 = Rack::File.new(docroot) - - app2 = Rack::URLMap.new("/crash" => lambda { |env| raise "boom" }) - - app3 = Rack::URLMap.new("/foo" => lambda { |env| - [200, { "Content-Type" => "text/plain"}, [""]]}) - - specify "should dispatch onward on 404 by default" do - cascade = Rack::Cascade.new([app1, app2, app3]) - Rack::MockRequest.new(cascade).get("/cgi/test").should.be.ok - Rack::MockRequest.new(cascade).get("/foo").should.be.ok - Rack::MockRequest.new(cascade).get("/toobad").should.be.not_found - Rack::MockRequest.new(cascade).get("/cgi/../bla").should.be.forbidden - end - - specify "should dispatch onward on whatever is passed" do - cascade = Rack::Cascade.new([app1, app2, app3], [404, 403]) - Rack::MockRequest.new(cascade).get("/cgi/../bla").should.be.not_found - end - - specify "should return 404 if empty" do - Rack::MockRequest.new(Rack::Cascade.new([])).get('/').should.be.not_found - end - - specify "should append new app" do - cascade = Rack::Cascade.new([], [404, 403]) - Rack::MockRequest.new(cascade).get('/').should.be.not_found - cascade << app2 - Rack::MockRequest.new(cascade).get('/cgi/test').should.be.not_found - Rack::MockRequest.new(cascade).get('/cgi/../bla').should.be.not_found - cascade << app1 - Rack::MockRequest.new(cascade).get('/cgi/test').should.be.ok - Rack::MockRequest.new(cascade).get('/cgi/../bla').should.be.forbidden - Rack::MockRequest.new(cascade).get('/foo').should.be.not_found - cascade << app3 - Rack::MockRequest.new(cascade).get('/foo').should.be.ok - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_cgi.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_cgi.rb deleted file mode 100644 index 59500cd7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_cgi.rb +++ /dev/null @@ -1,89 +0,0 @@ -require 'test/spec' -require 'testrequest' - -context "Rack::Handler::CGI" do - include TestRequest::Helpers - - setup do - @host = '0.0.0.0' - @port = 9203 - end - - # Keep this first. - specify "startup" do - $pid = fork { - Dir.chdir(File.join(File.dirname(__FILE__), "..", "test", "cgi")) - exec "lighttpd -D -f lighttpd.conf" - } - end - - specify "should respond" do - sleep 1 - lambda { - GET("/test") - }.should.not.raise - end - - specify "should be a lighttpd" do - GET("/test") - status.should.be 200 - response["SERVER_SOFTWARE"].should =~ /lighttpd/ - response["HTTP_VERSION"].should.equal "HTTP/1.1" - response["SERVER_PROTOCOL"].should.equal "HTTP/1.1" - response["SERVER_PORT"].should.equal @port.to_s - response["SERVER_NAME"].should =~ @host - end - - specify "should have rack headers" do - GET("/test") - response["rack.version"].should.equal [1,1] - response["rack.multithread"].should.be false - response["rack.multiprocess"].should.be true - response["rack.run_once"].should.be true - end - - specify "should have CGI headers on GET" do - GET("/test") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/" - response["PATH_INFO"].should.equal "" - response["QUERY_STRING"].should.equal "" - response["test.postdata"].should.equal "" - - GET("/test/foo?quux=1") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/" - response["PATH_INFO"].should.equal "/foo" - response["QUERY_STRING"].should.equal "quux=1" - end - - specify "should have CGI headers on POST" do - POST("/test", {"rack-form-data" => "23"}, {'X-test-header' => '42'}) - status.should.equal 200 - response["REQUEST_METHOD"].should.equal "POST" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/" - response["QUERY_STRING"].should.equal "" - response["HTTP_X_TEST_HEADER"].should.equal "42" - response["test.postdata"].should.equal "rack-form-data=23" - end - - specify "should support HTTP auth" do - GET("/test", {:user => "ruth", :passwd => "secret"}) - response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ=" - end - - specify "should set status" do - GET("/test?secret") - status.should.equal 403 - response["rack.url_scheme"].should.equal "http" - end - - # Keep this last. - specify "shutdown" do - Process.kill 15, $pid - Process.wait($pid).should.equal $pid - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_chunked.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_chunked.rb deleted file mode 100644 index 39eea482..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_chunked.rb +++ /dev/null @@ -1,62 +0,0 @@ -require 'rack/mock' -require 'rack/chunked' -require 'rack/utils' - -context "Rack::Chunked" do - - before do - @env = Rack::MockRequest. - env_for('/', 'HTTP_VERSION' => '1.1', 'REQUEST_METHOD' => 'GET') - end - - specify 'chunks responses with no Content-Length' do - app = lambda { |env| [200, {}, ['Hello', ' ', 'World!']] } - response = Rack::MockResponse.new(*Rack::Chunked.new(app).call(@env)) - response.headers.should.not.include 'Content-Length' - response.headers['Transfer-Encoding'].should.equal 'chunked' - response.body.should.equal "5\r\nHello\r\n1\r\n \r\n6\r\nWorld!\r\n0\r\n\r\n" - end - - specify 'chunks empty bodies properly' do - app = lambda { |env| [200, {}, []] } - response = Rack::MockResponse.new(*Rack::Chunked.new(app).call(@env)) - response.headers.should.not.include 'Content-Length' - response.headers['Transfer-Encoding'].should.equal 'chunked' - response.body.should.equal "0\r\n\r\n" - end - - specify 'does not modify response when Content-Length header present' do - app = lambda { |env| [200, {'Content-Length'=>'12'}, ['Hello', ' ', 'World!']] } - status, headers, body = Rack::Chunked.new(app).call(@env) - status.should.equal 200 - headers.should.not.include 'Transfer-Encoding' - headers.should.include 'Content-Length' - body.join.should.equal 'Hello World!' - end - - specify 'does not modify response when client is HTTP/1.0' do - app = lambda { |env| [200, {}, ['Hello', ' ', 'World!']] } - @env['HTTP_VERSION'] = 'HTTP/1.0' - status, headers, body = Rack::Chunked.new(app).call(@env) - status.should.equal 200 - headers.should.not.include 'Transfer-Encoding' - body.join.should.equal 'Hello World!' - end - - specify 'does not modify response when Transfer-Encoding header already present' do - app = lambda { |env| [200, {'Transfer-Encoding' => 'identity'}, ['Hello', ' ', 'World!']] } - status, headers, body = Rack::Chunked.new(app).call(@env) - status.should.equal 200 - headers['Transfer-Encoding'].should.equal 'identity' - body.join.should.equal 'Hello World!' - end - - [100, 204, 304].each do |status_code| - specify "does not modify response when status code is #{status_code}" do - app = lambda { |env| [status_code, {}, []] } - status, headers, body = Rack::Chunked.new(app).call(@env) - status.should.equal status_code - headers.should.not.include 'Transfer-Encoding' - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_commonlogger.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_commonlogger.rb deleted file mode 100644 index 46a72e86..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_commonlogger.rb +++ /dev/null @@ -1,61 +0,0 @@ -require 'test/spec' -require 'stringio' - -require 'rack/commonlogger' -require 'rack/lobster' -require 'rack/mock' - -context "Rack::CommonLogger" do - app = lambda { |env| - [200, - {"Content-Type" => "text/html", "Content-Length" => length.to_s}, - [obj]]} - app_without_length = lambda { |env| - [200, - {"Content-Type" => "text/html"}, - []]} - app_with_zero_length = lambda { |env| - [200, - {"Content-Type" => "text/html", "Content-Length" => "0"}, - []]} - - specify "should log to rack.errors by default" do - res = Rack::MockRequest.new(Rack::CommonLogger.new(app)).get("/") - - res.errors.should.not.be.empty - res.errors.should =~ /"GET \/ " 200 #{length} / - end - - specify "should log to anything with +write+" do - log = StringIO.new - res = Rack::MockRequest.new(Rack::CommonLogger.new(app, log)).get("/") - - log.string.should =~ /"GET \/ " 200 #{length} / - end - - specify "should log - content length if header is missing" do - res = Rack::MockRequest.new(Rack::CommonLogger.new(app_without_length)).get("/") - - res.errors.should.not.be.empty - res.errors.should =~ /"GET \/ " 200 - / - end - - specify "should log - content length if header is zero" do - res = Rack::MockRequest.new(Rack::CommonLogger.new(app_with_zero_length)).get("/") - - res.errors.should.not.be.empty - res.errors.should =~ /"GET \/ " 200 - / - end - - def length - self.class.length - end - - def self.length - 123 - end - - def self.obj - "hello world" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_conditionalget.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_conditionalget.rb deleted file mode 100644 index ca34cc92..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_conditionalget.rb +++ /dev/null @@ -1,41 +0,0 @@ -require 'test/spec' -require 'time' - -require 'rack/mock' -require 'rack/conditionalget' - -context "Rack::ConditionalGet" do - specify "should set a 304 status and truncate body when If-Modified-Since hits" do - timestamp = Time.now.httpdate - app = Rack::ConditionalGet.new(lambda { |env| - [200, {'Last-Modified'=>timestamp}, ['TEST']] }) - - response = Rack::MockRequest.new(app). - get("/", 'HTTP_IF_MODIFIED_SINCE' => timestamp) - - response.status.should.equal 304 - response.body.should.be.empty - end - - specify "should set a 304 status and truncate body when If-None-Match hits" do - app = Rack::ConditionalGet.new(lambda { |env| - [200, {'Etag'=>'1234'}, ['TEST']] }) - - response = Rack::MockRequest.new(app). - get("/", 'HTTP_IF_NONE_MATCH' => '1234') - - response.status.should.equal 304 - response.body.should.be.empty - end - - specify "should not affect non-GET/HEAD requests" do - app = Rack::ConditionalGet.new(lambda { |env| - [200, {'Etag'=>'1234'}, ['TEST']] }) - - response = Rack::MockRequest.new(app). - post("/", 'HTTP_IF_NONE_MATCH' => '1234') - - response.status.should.equal 200 - response.body.should.equal 'TEST' - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_config.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_config.rb deleted file mode 100644 index a508ea4b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_config.rb +++ /dev/null @@ -1,24 +0,0 @@ -require 'test/spec' -require 'rack/mock' -require 'rack/builder' -require 'rack/content_length' -require 'rack/config' - -context "Rack::Config" do - - specify "should accept a block that modifies the environment" do - app = Rack::Builder.new do - use Rack::Lint - use Rack::ContentLength - use Rack::Config do |env| - env['greeting'] = 'hello' - end - run lambda { |env| - [200, {'Content-Type' => 'text/plain'}, [env['greeting'] || '']] - } - end - response = Rack::MockRequest.new(app).get('/') - response.body.should.equal('hello') - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_content_length.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_content_length.rb deleted file mode 100644 index 7db9345f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_content_length.rb +++ /dev/null @@ -1,43 +0,0 @@ -require 'rack/mock' -require 'rack/content_length' - -context "Rack::ContentLength" do - specify "sets Content-Length on String bodies if none is set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] } - response = Rack::ContentLength.new(app).call({}) - response[1]['Content-Length'].should.equal '13' - end - - specify "sets Content-Length on Array bodies if none is set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]] } - response = Rack::ContentLength.new(app).call({}) - response[1]['Content-Length'].should.equal '13' - end - - specify "does not set Content-Length on variable length bodies" do - body = lambda { "Hello World!" } - def body.each ; yield call ; end - - app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, body] } - response = Rack::ContentLength.new(app).call({}) - response[1]['Content-Length'].should.be.nil - end - - specify "does not change Content-Length if it is already set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain', 'Content-Length' => '1'}, "Hello, World!"] } - response = Rack::ContentLength.new(app).call({}) - response[1]['Content-Length'].should.equal '1' - end - - specify "does not set Content-Length on 304 responses" do - app = lambda { |env| [304, {'Content-Type' => 'text/plain'}, []] } - response = Rack::ContentLength.new(app).call({}) - response[1]['Content-Length'].should.equal nil - end - - specify "does not set Content-Length when Transfer-Encoding is chunked" do - app = lambda { |env| [200, {'Transfer-Encoding' => 'chunked'}, []] } - response = Rack::ContentLength.new(app).call({}) - response[1]['Content-Length'].should.equal nil - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_content_type.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_content_type.rb deleted file mode 100644 index 9975b94d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_content_type.rb +++ /dev/null @@ -1,30 +0,0 @@ -require 'rack/mock' -require 'rack/content_type' - -context "Rack::ContentType" do - specify "sets Content-Type to default text/html if none is set" do - app = lambda { |env| [200, {}, "Hello, World!"] } - status, headers, body = Rack::ContentType.new(app).call({}) - headers['Content-Type'].should.equal 'text/html' - end - - specify "sets Content-Type to chosen default if none is set" do - app = lambda { |env| [200, {}, "Hello, World!"] } - status, headers, body = - Rack::ContentType.new(app, 'application/octet-stream').call({}) - headers['Content-Type'].should.equal 'application/octet-stream' - end - - specify "does not change Content-Type if it is already set" do - app = lambda { |env| [200, {'Content-Type' => 'foo/bar'}, "Hello, World!"] } - status, headers, body = Rack::ContentType.new(app).call({}) - headers['Content-Type'].should.equal 'foo/bar' - end - - specify "case insensitive detection of Content-Type" do - app = lambda { |env| [200, {'CONTENT-Type' => 'foo/bar'}, "Hello, World!"] } - status, headers, body = Rack::ContentType.new(app).call({}) - headers.to_a.select { |k,v| k.downcase == "content-type" }. - should.equal [["CONTENT-Type","foo/bar"]] - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_deflater.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_deflater.rb deleted file mode 100644 index c9bb3189..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_deflater.rb +++ /dev/null @@ -1,127 +0,0 @@ -require 'test/spec' - -require 'rack/mock' -require 'rack/deflater' -require 'stringio' -require 'time' # for Time#httpdate - -context "Rack::Deflater" do - def build_response(status, body, accept_encoding, headers = {}) - body = [body] if body.respond_to? :to_str - app = lambda { |env| [status, {}, body] } - request = Rack::MockRequest.env_for("", headers.merge("HTTP_ACCEPT_ENCODING" => accept_encoding)) - response = Rack::Deflater.new(app).call(request) - - return response - end - - specify "should be able to deflate bodies that respond to each" do - body = Object.new - class << body; def each; yield("foo"); yield("bar"); end; end - - response = build_response(200, body, "deflate") - - response[0].should.equal(200) - response[1].should.equal({ - "Content-Encoding" => "deflate", - "Vary" => "Accept-Encoding" - }) - buf = '' - response[2].each { |part| buf << part } - buf.should.equal("K\313\317OJ,\002\000") - end - - # TODO: This is really just a special case of the above... - specify "should be able to deflate String bodies" do - response = build_response(200, "Hello world!", "deflate") - - response[0].should.equal(200) - response[1].should.equal({ - "Content-Encoding" => "deflate", - "Vary" => "Accept-Encoding" - }) - buf = '' - response[2].each { |part| buf << part } - buf.should.equal("\363H\315\311\311W(\317/\312IQ\004\000") - end - - specify "should be able to gzip bodies that respond to each" do - body = Object.new - class << body; def each; yield("foo"); yield("bar"); end; end - - response = build_response(200, body, "gzip") - - response[0].should.equal(200) - response[1].should.equal({ - "Content-Encoding" => "gzip", - "Vary" => "Accept-Encoding", - }) - - buf = '' - response[2].each { |part| buf << part } - io = StringIO.new(buf) - gz = Zlib::GzipReader.new(io) - gz.read.should.equal("foobar") - gz.close - end - - specify "should be able to fallback to no deflation" do - response = build_response(200, "Hello world!", "superzip") - - response[0].should.equal(200) - response[1].should.equal({ "Vary" => "Accept-Encoding" }) - response[2].should.equal(["Hello world!"]) - end - - specify "should be able to skip when there is no response entity body" do - response = build_response(304, [], "gzip") - - response[0].should.equal(304) - response[1].should.equal({}) - response[2].should.equal([]) - end - - specify "should handle the lack of an acceptable encoding" do - response1 = build_response(200, "Hello world!", "identity;q=0", "PATH_INFO" => "/") - response1[0].should.equal(406) - response1[1].should.equal({"Content-Type" => "text/plain", "Content-Length" => "71"}) - response1[2].should.equal(["An acceptable encoding for the requested resource / could not be found."]) - - response2 = build_response(200, "Hello world!", "identity;q=0", "SCRIPT_NAME" => "/foo", "PATH_INFO" => "/bar") - response2[0].should.equal(406) - response2[1].should.equal({"Content-Type" => "text/plain", "Content-Length" => "78"}) - response2[2].should.equal(["An acceptable encoding for the requested resource /foo/bar could not be found."]) - end - - specify "should handle gzip response with Last-Modified header" do - last_modified = Time.now.httpdate - - app = lambda { |env| [200, { "Last-Modified" => last_modified }, ["Hello World!"]] } - request = Rack::MockRequest.env_for("", "HTTP_ACCEPT_ENCODING" => "gzip") - response = Rack::Deflater.new(app).call(request) - - response[0].should.equal(200) - response[1].should.equal({ - "Content-Encoding" => "gzip", - "Vary" => "Accept-Encoding", - "Last-Modified" => last_modified - }) - - buf = '' - response[2].each { |part| buf << part } - io = StringIO.new(buf) - gz = Zlib::GzipReader.new(io) - gz.read.should.equal("Hello World!") - gz.close - end - - specify "should do nothing when no-transform Cache-Control directive present" do - app = lambda { |env| [200, {'Cache-Control' => 'no-transform'}, ['Hello World!']] } - request = Rack::MockRequest.env_for("", "HTTP_ACCEPT_ENCODING" => "gzip") - response = Rack::Deflater.new(app).call(request) - - response[0].should.equal(200) - response[1].should.not.include "Content-Encoding" - response[2].join.should.equal("Hello World!") - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_directory.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_directory.rb deleted file mode 100644 index d255c91d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_directory.rb +++ /dev/null @@ -1,61 +0,0 @@ -require 'test/spec' - -require 'rack/directory' -require 'rack/lint' - -require 'rack/mock' - -context "Rack::Directory" do - DOCROOT = File.expand_path(File.dirname(__FILE__)) unless defined? DOCROOT - FILE_CATCH = proc{|env| [200, {'Content-Type'=>'text/plain', "Content-Length" => "7"}, ['passed!']] } - app = Rack::Directory.new DOCROOT, FILE_CATCH - - specify "serves directory indices" do - res = Rack::MockRequest.new(Rack::Lint.new(app)). - get("/cgi/") - - res.should.be.ok - res.should =~ // - end - - specify "passes to app if file found" do - res = Rack::MockRequest.new(Rack::Lint.new(app)). - get("/cgi/test") - - res.should.be.ok - res.should =~ /passed!/ - end - - specify "serves uri with URL encoded filenames" do - res = Rack::MockRequest.new(Rack::Lint.new(app)). - get("/%63%67%69/") # "/cgi/test" - - res.should.be.ok - res.should =~ // - - res = Rack::MockRequest.new(Rack::Lint.new(app)). - get("/cgi/%74%65%73%74") # "/cgi/test" - - res.should.be.ok - res.should =~ /passed!/ - end - - specify "does not allow directory traversal" do - res = Rack::MockRequest.new(Rack::Lint.new(app)). - get("/cgi/../test") - - res.should.be.forbidden - - res = Rack::MockRequest.new(Rack::Lint.new(app)). - get("/cgi/%2E%2E/test") - - res.should.be.forbidden - end - - specify "404s if it can't find the file" do - res = Rack::MockRequest.new(Rack::Lint.new(app)). - get("/cgi/blubb") - - res.should.be.not_found - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_etag.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_etag.rb deleted file mode 100644 index 73cd31ac..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_etag.rb +++ /dev/null @@ -1,17 +0,0 @@ -require 'test/spec' -require 'rack/mock' -require 'rack/etag' - -context "Rack::ETag" do - specify "sets ETag if none is set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]] } - response = Rack::ETag.new(app).call({}) - response[1]['ETag'].should.equal "\"65a8e27d8879283831b664bd8b7f0ad4\"" - end - - specify "does not change ETag if it is already set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain', 'ETag' => '"abc"'}, ["Hello, World!"]] } - response = Rack::ETag.new(app).call({}) - response[1]['ETag'].should.equal "\"abc\"" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_fastcgi.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_fastcgi.rb deleted file mode 100644 index 1ae55ace..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_fastcgi.rb +++ /dev/null @@ -1,89 +0,0 @@ -require 'test/spec' -require 'testrequest' - -context "Rack::Handler::FastCGI" do - include TestRequest::Helpers - - setup do - @host = '0.0.0.0' - @port = 9203 - end - - # Keep this first. - specify "startup" do - $pid = fork { - Dir.chdir(File.join(File.dirname(__FILE__), "..", "test", "cgi")) - exec "lighttpd -D -f lighttpd.conf" - } - end - - specify "should respond" do - sleep 1 - lambda { - GET("/test.fcgi") - }.should.not.raise - end - - specify "should be a lighttpd" do - GET("/test.fcgi") - status.should.be 200 - response["SERVER_SOFTWARE"].should =~ /lighttpd/ - response["HTTP_VERSION"].should.equal "HTTP/1.1" - response["SERVER_PROTOCOL"].should.equal "HTTP/1.1" - response["SERVER_PORT"].should.equal @port.to_s - response["SERVER_NAME"].should =~ @host - end - - specify "should have rack headers" do - GET("/test.fcgi") - response["rack.version"].should.equal [1,1] - response["rack.multithread"].should.be false - response["rack.multiprocess"].should.be true - response["rack.run_once"].should.be false - end - - specify "should have CGI headers on GET" do - GET("/test.fcgi") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test.fcgi" - response["REQUEST_PATH"].should.equal "/" - response["PATH_INFO"].should.equal "" - response["QUERY_STRING"].should.equal "" - response["test.postdata"].should.equal "" - - GET("/test.fcgi/foo?quux=1") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test.fcgi" - response["REQUEST_PATH"].should.equal "/" - response["PATH_INFO"].should.equal "/foo" - response["QUERY_STRING"].should.equal "quux=1" - end - - specify "should have CGI headers on POST" do - POST("/test.fcgi", {"rack-form-data" => "23"}, {'X-test-header' => '42'}) - status.should.equal 200 - response["REQUEST_METHOD"].should.equal "POST" - response["SCRIPT_NAME"].should.equal "/test.fcgi" - response["REQUEST_PATH"].should.equal "/" - response["QUERY_STRING"].should.equal "" - response["HTTP_X_TEST_HEADER"].should.equal "42" - response["test.postdata"].should.equal "rack-form-data=23" - end - - specify "should support HTTP auth" do - GET("/test.fcgi", {:user => "ruth", :passwd => "secret"}) - response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ=" - end - - specify "should set status" do - GET("/test.fcgi?secret") - status.should.equal 403 - response["rack.url_scheme"].should.equal "http" - end - - # Keep this last. - specify "shutdown" do - Process.kill 15, $pid - Process.wait($pid).should.equal $pid - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_file.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_file.rb deleted file mode 100644 index 0a2f8ee8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_file.rb +++ /dev/null @@ -1,75 +0,0 @@ -require 'test/spec' - -require 'rack/file' -require 'rack/lint' - -require 'rack/mock' - -context "Rack::File" do - DOCROOT = File.expand_path(File.dirname(__FILE__)) unless defined? DOCROOT - - specify "serves files" do - res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))). - get("/cgi/test") - - res.should.be.ok - res.should =~ /ruby/ - end - - specify "sets Last-Modified header" do - res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))). - get("/cgi/test") - - path = File.join(DOCROOT, "/cgi/test") - - res.should.be.ok - res["Last-Modified"].should.equal File.mtime(path).httpdate - end - - specify "serves files with URL encoded filenames" do - res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))). - get("/cgi/%74%65%73%74") # "/cgi/test" - - res.should.be.ok - res.should =~ /ruby/ - end - - specify "does not allow directory traversal" do - res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))). - get("/cgi/../test") - - res.should.be.forbidden - end - - specify "does not allow directory traversal with encoded periods" do - res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))). - get("/%2E%2E/README") - - res.should.be.forbidden - end - - specify "404s if it can't find the file" do - res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))). - get("/cgi/blubb") - - res.should.be.not_found - end - - specify "detects SystemCallErrors" do - res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))). - get("/cgi") - - res.should.be.not_found - end - - specify "returns bodies that respond to #to_path" do - env = Rack::MockRequest.env_for("/cgi/test") - status, headers, body = Rack::File.new(DOCROOT).call(env) - - path = File.join(DOCROOT, "/cgi/test") - - status.should.equal 200 - body.should.respond_to :to_path - body.to_path.should.equal path - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_handler.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_handler.rb deleted file mode 100644 index fcf19b78..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_handler.rb +++ /dev/null @@ -1,43 +0,0 @@ -require 'test/spec' - -require 'rack/handler' - -class Rack::Handler::Lobster; end -class RockLobster; end - -context "Rack::Handler" do - specify "has registered default handlers" do - Rack::Handler.get('cgi').should.equal Rack::Handler::CGI - Rack::Handler.get('fastcgi').should.equal Rack::Handler::FastCGI - Rack::Handler.get('mongrel').should.equal Rack::Handler::Mongrel - Rack::Handler.get('webrick').should.equal Rack::Handler::WEBrick - end - - specify "handler that doesn't exist should raise a NameError" do - lambda { - Rack::Handler.get('boom') - }.should.raise(NameError) - end - - specify "should get unregistered, but already required, handler by name" do - Rack::Handler.get('Lobster').should.equal Rack::Handler::Lobster - end - - specify "should register custom handler" do - Rack::Handler.register('rock_lobster', 'RockLobster') - Rack::Handler.get('rock_lobster').should.equal RockLobster - end - - specify "should not need registration for properly coded handlers even if not already required" do - begin - $:.push "test/unregistered_handler" - Rack::Handler.get('Unregistered').should.equal Rack::Handler::Unregistered - lambda { - Rack::Handler.get('UnRegistered') - }.should.raise(NameError) - Rack::Handler.get('UnregisteredLongOne').should.equal Rack::Handler::UnregisteredLongOne - ensure - $:.delete "test/unregistered_handler" - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_head.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_head.rb deleted file mode 100644 index 48d3f81f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_head.rb +++ /dev/null @@ -1,30 +0,0 @@ -require 'rack/head' -require 'rack/mock' - -context "Rack::Head" do - def test_response(headers = {}) - app = lambda { |env| [200, {"Content-type" => "test/plain", "Content-length" => "3"}, ["foo"]] } - request = Rack::MockRequest.env_for("/", headers) - response = Rack::Head.new(app).call(request) - - return response - end - - specify "passes GET, POST, PUT, DELETE, OPTIONS, TRACE requests" do - %w[GET POST PUT DELETE OPTIONS TRACE].each do |type| - resp = test_response("REQUEST_METHOD" => type) - - resp[0].should.equal(200) - resp[1].should.equal({"Content-type" => "test/plain", "Content-length" => "3"}) - resp[2].should.equal(["foo"]) - end - end - - specify "removes body from HEAD requests" do - resp = test_response("REQUEST_METHOD" => "HEAD") - - resp[0].should.equal(200) - resp[1].should.equal({"Content-type" => "test/plain", "Content-length" => "3"}) - resp[2].should.equal([]) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_lint.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_lint.rb deleted file mode 100644 index bbf75c17..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_lint.rb +++ /dev/null @@ -1,528 +0,0 @@ -require 'test/spec' -require 'stringio' - -require 'rack/lint' -require 'rack/mock' - -context "Rack::Lint" do - def env(*args) - Rack::MockRequest.env_for("/", *args) - end - - specify "passes valid request" do - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Content-type" => "test/plain", "Content-length" => "3"}, ["foo"]] - }).call(env({})) - }.should.not.raise - end - - specify "notices fatal errors" do - lambda { Rack::Lint.new(nil).call }.should.raise(Rack::Lint::LintError). - message.should.match(/No env given/) - end - - specify "notices environment errors" do - lambda { Rack::Lint.new(nil).call 5 }.should.raise(Rack::Lint::LintError). - message.should.match(/not a Hash/) - - lambda { - e = env - e.delete("REQUEST_METHOD") - Rack::Lint.new(nil).call(e) - }.should.raise(Rack::Lint::LintError). - message.should.match(/missing required key REQUEST_METHOD/) - - lambda { - e = env - e.delete("SERVER_NAME") - Rack::Lint.new(nil).call(e) - }.should.raise(Rack::Lint::LintError). - message.should.match(/missing required key SERVER_NAME/) - - - lambda { - Rack::Lint.new(nil).call(env("HTTP_CONTENT_TYPE" => "text/plain")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/contains HTTP_CONTENT_TYPE/) - - lambda { - Rack::Lint.new(nil).call(env("HTTP_CONTENT_LENGTH" => "42")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/contains HTTP_CONTENT_LENGTH/) - - lambda { - Rack::Lint.new(nil).call(env("FOO" => Object.new)) - }.should.raise(Rack::Lint::LintError). - message.should.match(/non-string value/) - - lambda { - Rack::Lint.new(nil).call(env("rack.version" => "0.2")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/must be an Array/) - - lambda { - Rack::Lint.new(nil).call(env("rack.url_scheme" => "gopher")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/url_scheme unknown/) - - lambda { - Rack::Lint.new(nil).call(env("rack.session" => [])) - }.should.raise(Rack::Lint::LintError). - message.should.equal("session [] must respond to store and []=") - - lambda { - Rack::Lint.new(nil).call(env("rack.logger" => [])) - }.should.raise(Rack::Lint::LintError). - message.should.equal("logger [] must respond to info") - - lambda { - Rack::Lint.new(nil).call(env("REQUEST_METHOD" => "FUCKUP?")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/REQUEST_METHOD/) - - lambda { - Rack::Lint.new(nil).call(env("SCRIPT_NAME" => "howdy")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/must start with/) - - lambda { - Rack::Lint.new(nil).call(env("PATH_INFO" => "../foo")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/must start with/) - - lambda { - Rack::Lint.new(nil).call(env("CONTENT_LENGTH" => "xcii")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/Invalid CONTENT_LENGTH/) - - lambda { - e = env - e.delete("PATH_INFO") - e.delete("SCRIPT_NAME") - Rack::Lint.new(nil).call(e) - }.should.raise(Rack::Lint::LintError). - message.should.match(/One of .* must be set/) - - lambda { - Rack::Lint.new(nil).call(env("SCRIPT_NAME" => "/")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/cannot be .* make it ''/) - end - - specify "notices input errors" do - lambda { - Rack::Lint.new(nil).call(env("rack.input" => "")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/does not respond to #gets/) - - lambda { - input = Object.new - def input.binmode? - false - end - Rack::Lint.new(nil).call(env("rack.input" => input)) - }.should.raise(Rack::Lint::LintError). - message.should.match(/is not opened in binary mode/) - - lambda { - input = Object.new - def input.external_encoding - result = Object.new - def result.name - "US-ASCII" - end - result - end - Rack::Lint.new(nil).call(env("rack.input" => input)) - }.should.raise(Rack::Lint::LintError). - message.should.match(/does not have ASCII-8BIT as its external encoding/) - end - - specify "notices error errors" do - lambda { - Rack::Lint.new(nil).call(env("rack.errors" => "")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/does not respond to #puts/) - end - - specify "notices status errors" do - lambda { - Rack::Lint.new(lambda { |env| - ["cc", {}, ""] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/must be >=100 seen as integer/) - - lambda { - Rack::Lint.new(lambda { |env| - [42, {}, ""] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/must be >=100 seen as integer/) - end - - specify "notices header errors" do - lambda { - Rack::Lint.new(lambda { |env| - [200, Object.new, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.equal("headers object should respond to #each, but doesn't (got Object as headers)") - - lambda { - Rack::Lint.new(lambda { |env| - [200, {true=>false}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.equal("header key must be a string, was TrueClass") - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Status" => "404"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/must not contain Status/) - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Content-Type:" => "text/plain"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/must not contain :/) - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Content-" => "text/plain"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/must not end/) - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"..%%quark%%.." => "text/plain"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.equal("invalid header name: ..%%quark%%..") - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Foo" => Object.new}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.equal("a header value must be a String, but the value of 'Foo' is a Object") - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Foo" => [1, 2, 3]}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.equal("a header value must be a String, but the value of 'Foo' is a Array") - - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Foo-Bar" => "text\000plain"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/invalid header/) - - # line ends (010) should be allowed in header values. - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Foo-Bar" => "one\ntwo\nthree", "Content-Length" => "0", "Content-Type" => "text/plain" }, []] - }).call(env({})) - }.should.not.raise(Rack::Lint::LintError) - end - - specify "notices content-type errors" do - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/No Content-Type/) - - [100, 101, 204, 304].each do |status| - lambda { - Rack::Lint.new(lambda { |env| - [status, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/Content-Type header found/) - end - end - - specify "notices content-length errors" do - [100, 101, 204, 304].each do |status| - lambda { - Rack::Lint.new(lambda { |env| - [status, {"Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/Content-Length header found/) - end - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Content-type" => "text/plain", "Content-Length" => "1"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/Content-Length header was 1, but should be 0/) - end - - specify "notices body errors" do - lambda { - status, header, body = Rack::Lint.new(lambda { |env| - [200, {"Content-type" => "text/plain","Content-length" => "3"}, [1,2,3]] - }).call(env({})) - body.each { |part| } - }.should.raise(Rack::Lint::LintError). - message.should.match(/yielded non-string/) - end - - specify "notices input handling errors" do - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].gets("\r\n") - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/gets called with arguments/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(1, 2, 3) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/read called with too many arguments/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read("foo") - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/read called with non-integer and non-nil length/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(-1) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/read called with a negative length/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(nil, nil) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/read called with non-String buffer/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(nil, 1) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/read called with non-String buffer/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].rewind(0) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/rewind called with arguments/) - - weirdio = Object.new - class << weirdio - def gets - 42 - end - - def read - 23 - end - - def each - yield 23 - yield 42 - end - - def rewind - raise Errno::ESPIPE, "Errno::ESPIPE" - end - end - - eof_weirdio = Object.new - class << eof_weirdio - def gets - nil - end - - def read(*args) - nil - end - - def each - end - - def rewind - end - end - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].gets - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env("rack.input" => weirdio)) - }.should.raise(Rack::Lint::LintError). - message.should.match(/gets didn't return a String/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].each { |x| } - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env("rack.input" => weirdio)) - }.should.raise(Rack::Lint::LintError). - message.should.match(/each didn't yield a String/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env("rack.input" => weirdio)) - }.should.raise(Rack::Lint::LintError). - message.should.match(/read didn't return nil or a String/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env("rack.input" => eof_weirdio)) - }.should.raise(Rack::Lint::LintError). - message.should.match(/read\(nil\) returned nil on EOF/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].rewind - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env("rack.input" => weirdio)) - }.should.raise(Rack::Lint::LintError). - message.should.match(/rewind raised Errno::ESPIPE/) - - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].close - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/close must not be called/) - end - - specify "notices error handling errors" do - lambda { - Rack::Lint.new(lambda { |env| - env["rack.errors"].write(42) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/write not called with a String/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.errors"].close - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/close must not be called/) - end - - specify "notices HEAD errors" do - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Content-type" => "test/plain", "Content-length" => "3"}, []] - }).call(env({"REQUEST_METHOD" => "HEAD"})) - }.should.not.raise - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Content-type" => "test/plain", "Content-length" => "3"}, ["foo"]] - }).call(env({"REQUEST_METHOD" => "HEAD"})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/body was given for HEAD/) - end - - specify "passes valid read calls" do - hello_str = "hello world" - hello_str.force_encoding("ASCII-8BIT") if hello_str.respond_to? :force_encoding - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({"rack.input" => StringIO.new(hello_str)})) - }.should.not.raise(Rack::Lint::LintError) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(0) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({"rack.input" => StringIO.new(hello_str)})) - }.should.not.raise(Rack::Lint::LintError) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(1) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({"rack.input" => StringIO.new(hello_str)})) - }.should.not.raise(Rack::Lint::LintError) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(nil) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({"rack.input" => StringIO.new(hello_str)})) - }.should.not.raise(Rack::Lint::LintError) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(nil, '') - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({"rack.input" => StringIO.new(hello_str)})) - }.should.not.raise(Rack::Lint::LintError) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(1, '') - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({"rack.input" => StringIO.new(hello_str)})) - }.should.not.raise(Rack::Lint::LintError) - end -end - -context "Rack::Lint::InputWrapper" do - specify "delegates :size to underlying IO object" do - class IOMock - def size - 101 - end - end - - wrapper = Rack::Lint::InputWrapper.new(IOMock.new) - wrapper.size.should == 101 - end - - specify "delegates :rewind to underlying IO object" do - io = StringIO.new("123") - wrapper = Rack::Lint::InputWrapper.new(io) - wrapper.read.should.equal "123" - wrapper.read.should.equal "" - wrapper.rewind - wrapper.read.should.equal "123" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_lobster.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_lobster.rb deleted file mode 100644 index 7be267a2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_lobster.rb +++ /dev/null @@ -1,45 +0,0 @@ -require 'test/spec' - -require 'rack/lobster' -require 'rack/mock' - -context "Rack::Lobster::LambdaLobster" do - specify "should be a single lambda" do - Rack::Lobster::LambdaLobster.should.be.kind_of Proc - end - - specify "should look like a lobster" do - res = Rack::MockRequest.new(Rack::Lobster::LambdaLobster).get("/") - res.should.be.ok - res.body.should.include "(,(,,(,,,(" - res.body.should.include "?flip" - end - - specify "should be flippable" do - res = Rack::MockRequest.new(Rack::Lobster::LambdaLobster).get("/?flip") - res.should.be.ok - res.body.should.include "(,,,(,,(,(" - end -end - -context "Rack::Lobster" do - specify "should look like a lobster" do - res = Rack::MockRequest.new(Rack::Lobster.new).get("/") - res.should.be.ok - res.body.should.include "(,(,,(,,,(" - res.body.should.include "?flip" - res.body.should.include "crash" - end - - specify "should be flippable" do - res = Rack::MockRequest.new(Rack::Lobster.new).get("/?flip=left") - res.should.be.ok - res.body.should.include "(,,,(,,(,(" - end - - specify "should provide crashing for testing purposes" do - lambda { - Rack::MockRequest.new(Rack::Lobster.new).get("/?flip=crash") - }.should.raise - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_lock.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_lock.rb deleted file mode 100644 index 18af2b23..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_lock.rb +++ /dev/null @@ -1,38 +0,0 @@ -require 'test/spec' - -require 'rack/mock' -require 'rack/lock' - -context "Rack::Lock" do - class Lock - attr_reader :synchronized - - def initialize - @synchronized = false - end - - def synchronize - @synchronized = true - yield - end - end - - specify "should call synchronize on lock" do - lock = Lock.new - env = Rack::MockRequest.env_for("/") - app = Rack::Lock.new(lambda { |env| }, lock) - lock.synchronized.should.equal false - app.call(env) - lock.synchronized.should.equal true - end - - specify "should set multithread flag to false" do - app = Rack::Lock.new(lambda { |env| env['rack.multithread'] }) - app.call(Rack::MockRequest.env_for("/")).should.equal false - end - - specify "should reset original multithread flag when exiting lock" do - app = Rack::Lock.new(lambda { |env| env }) - app.call(Rack::MockRequest.env_for("/"))['rack.multithread'].should.equal true - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_logger.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_logger.rb deleted file mode 100644 index d55b9c77..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_logger.rb +++ /dev/null @@ -1,21 +0,0 @@ -require 'rack/logger' -require 'rack/lint' -require 'stringio' - -context "Rack::Logger" do - specify "logs to rack.errors" do - app = lambda { |env| - log = env['rack.logger'] - log.debug("Created logger") - log.info("Program started") - log.warn("Nothing to do!") - - [200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]] - } - - errors = StringIO.new - Rack::Logger.new(app).call({'rack.errors' => errors}) - errors.string.should.match "INFO -- : Program started" - errors.string.should.match "WARN -- : Nothing to do" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_methodoverride.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_methodoverride.rb deleted file mode 100644 index 57452394..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_methodoverride.rb +++ /dev/null @@ -1,60 +0,0 @@ -require 'test/spec' - -require 'rack/mock' -require 'rack/methodoverride' -require 'stringio' - -context "Rack::MethodOverride" do - specify "should not affect GET requests" do - env = Rack::MockRequest.env_for("/?_method=delete", :method => "GET") - app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) }) - req = app.call(env) - - req.env["REQUEST_METHOD"].should.equal "GET" - end - - specify "_method parameter should modify REQUEST_METHOD for POST requests" do - env = Rack::MockRequest.env_for("/", :method => "POST", :input => "_method=put") - app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) }) - req = app.call(env) - - req.env["REQUEST_METHOD"].should.equal "PUT" - end - - specify "X-HTTP-Method-Override header should modify REQUEST_METHOD for POST requests" do - env = Rack::MockRequest.env_for("/", - :method => "POST", - "HTTP_X_HTTP_METHOD_OVERRIDE" => "PUT" - ) - app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) }) - req = app.call(env) - - req.env["REQUEST_METHOD"].should.equal "PUT" - end - - specify "should not modify REQUEST_METHOD if the method is unknown" do - env = Rack::MockRequest.env_for("/", :method => "POST", :input => "_method=foo") - app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) }) - req = app.call(env) - - req.env["REQUEST_METHOD"].should.equal "POST" - end - - specify "should not modify REQUEST_METHOD when _method is nil" do - env = Rack::MockRequest.env_for("/", :method => "POST", :input => "foo=bar") - app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) }) - req = app.call(env) - - req.env["REQUEST_METHOD"].should.equal "POST" - end - - specify "should store the original REQUEST_METHOD prior to overriding" do - env = Rack::MockRequest.env_for("/", - :method => "POST", - :input => "_method=options") - app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) }) - req = app.call(env) - - req.env["rack.methodoverride.original_method"].should.equal "POST" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_mock.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_mock.rb deleted file mode 100644 index a03bedc2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_mock.rb +++ /dev/null @@ -1,243 +0,0 @@ -require 'yaml' -require 'rack/mock' -require 'rack/request' -require 'rack/response' - -app = lambda { |env| - req = Rack::Request.new(env) - - env["mock.postdata"] = env["rack.input"].read - if req.GET["error"] - env["rack.errors"].puts req.GET["error"] - env["rack.errors"].flush - end - - Rack::Response.new(env.to_yaml, - req.GET["status"] || 200, - "Content-Type" => "text/yaml").finish -} - -context "Rack::MockRequest" do - specify "should return a MockResponse" do - res = Rack::MockRequest.new(app).get("") - res.should.be.kind_of Rack::MockResponse - end - - specify "should be able to only return the environment" do - env = Rack::MockRequest.env_for("") - env.should.be.kind_of Hash - env.should.include "rack.version" - end - - specify "should provide sensible defaults" do - res = Rack::MockRequest.new(app).request - - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "GET" - env["SERVER_NAME"].should.equal "example.org" - env["SERVER_PORT"].should.equal "80" - env["QUERY_STRING"].should.equal "" - env["PATH_INFO"].should.equal "/" - env["SCRIPT_NAME"].should.equal "" - env["rack.url_scheme"].should.equal "http" - env["mock.postdata"].should.be.empty - end - - specify "should allow GET/POST/PUT/DELETE" do - res = Rack::MockRequest.new(app).get("", :input => "foo") - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "GET" - - res = Rack::MockRequest.new(app).post("", :input => "foo") - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "POST" - - res = Rack::MockRequest.new(app).put("", :input => "foo") - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "PUT" - - res = Rack::MockRequest.new(app).delete("", :input => "foo") - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "DELETE" - - Rack::MockRequest.env_for("/", :method => "OPTIONS")["REQUEST_METHOD"]. - should.equal "OPTIONS" - end - - specify "should set content length" do - env = Rack::MockRequest.env_for("/", :input => "foo") - env["CONTENT_LENGTH"].should.equal "3" - end - - specify "should allow posting" do - res = Rack::MockRequest.new(app).get("", :input => "foo") - env = YAML.load(res.body) - env["mock.postdata"].should.equal "foo" - - res = Rack::MockRequest.new(app).post("", :input => StringIO.new("foo")) - env = YAML.load(res.body) - env["mock.postdata"].should.equal "foo" - end - - specify "should use all parts of an URL" do - res = Rack::MockRequest.new(app). - get("https://bla.example.org:9292/meh/foo?bar") - res.should.be.kind_of Rack::MockResponse - - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "GET" - env["SERVER_NAME"].should.equal "bla.example.org" - env["SERVER_PORT"].should.equal "9292" - env["QUERY_STRING"].should.equal "bar" - env["PATH_INFO"].should.equal "/meh/foo" - env["rack.url_scheme"].should.equal "https" - end - - specify "should set SSL port and HTTP flag on when using https" do - res = Rack::MockRequest.new(app). - get("https://example.org/foo") - res.should.be.kind_of Rack::MockResponse - - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "GET" - env["SERVER_NAME"].should.equal "example.org" - env["SERVER_PORT"].should.equal "443" - env["QUERY_STRING"].should.equal "" - env["PATH_INFO"].should.equal "/foo" - env["rack.url_scheme"].should.equal "https" - env["HTTPS"].should.equal "on" - end - - specify "should prepend slash to uri path" do - res = Rack::MockRequest.new(app). - get("foo") - res.should.be.kind_of Rack::MockResponse - - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "GET" - env["SERVER_NAME"].should.equal "example.org" - env["SERVER_PORT"].should.equal "80" - env["QUERY_STRING"].should.equal "" - env["PATH_INFO"].should.equal "/foo" - env["rack.url_scheme"].should.equal "http" - end - - specify "should properly convert method name to an uppercase string" do - res = Rack::MockRequest.new(app).request(:get) - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "GET" - end - - specify "should accept params and build query string for GET requests" do - res = Rack::MockRequest.new(app).get("/foo?baz=2", :params => {:foo => {:bar => "1"}}) - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "GET" - env["QUERY_STRING"].should.match "baz=2" - env["QUERY_STRING"].should.match "foo[bar]=1" - env["PATH_INFO"].should.equal "/foo" - env["mock.postdata"].should.equal "" - end - - specify "should accept raw input in params for GET requests" do - res = Rack::MockRequest.new(app).get("/foo?baz=2", :params => "foo[bar]=1") - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "GET" - env["QUERY_STRING"].should.match "baz=2" - env["QUERY_STRING"].should.match "foo[bar]=1" - env["PATH_INFO"].should.equal "/foo" - env["mock.postdata"].should.equal "" - end - - specify "should accept params and build url encoded params for POST requests" do - res = Rack::MockRequest.new(app).post("/foo", :params => {:foo => {:bar => "1"}}) - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "POST" - env["QUERY_STRING"].should.equal "" - env["PATH_INFO"].should.equal "/foo" - env["CONTENT_TYPE"].should.equal "application/x-www-form-urlencoded" - env["mock.postdata"].should.equal "foo[bar]=1" - end - - specify "should accept raw input in params for POST requests" do - res = Rack::MockRequest.new(app).post("/foo", :params => "foo[bar]=1") - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "POST" - env["QUERY_STRING"].should.equal "" - env["PATH_INFO"].should.equal "/foo" - env["CONTENT_TYPE"].should.equal "application/x-www-form-urlencoded" - env["mock.postdata"].should.equal "foo[bar]=1" - end - - specify "should accept params and build multipart encoded params for POST requests" do - files = Rack::Utils::Multipart::UploadedFile.new(File.join(File.dirname(__FILE__), "multipart", "file1.txt")) - res = Rack::MockRequest.new(app).post("/foo", :params => { "submit-name" => "Larry", "files" => files }) - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "POST" - env["QUERY_STRING"].should.equal "" - env["PATH_INFO"].should.equal "/foo" - env["CONTENT_TYPE"].should.equal "multipart/form-data; boundary=AaB03x" - env["mock.postdata"].length.should.equal 206 - end - - specify "should behave valid according to the Rack spec" do - lambda { - res = Rack::MockRequest.new(app). - get("https://bla.example.org:9292/meh/foo?bar", :lint => true) - }.should.not.raise(Rack::Lint::LintError) - end -end - -context "Rack::MockResponse" do - specify "should provide access to the HTTP status" do - res = Rack::MockRequest.new(app).get("") - res.should.be.successful - res.should.be.ok - - res = Rack::MockRequest.new(app).get("/?status=404") - res.should.not.be.successful - res.should.be.client_error - res.should.be.not_found - - res = Rack::MockRequest.new(app).get("/?status=501") - res.should.not.be.successful - res.should.be.server_error - - res = Rack::MockRequest.new(app).get("/?status=307") - res.should.be.redirect - - res = Rack::MockRequest.new(app).get("/?status=201", :lint => true) - res.should.be.empty - end - - specify "should provide access to the HTTP headers" do - res = Rack::MockRequest.new(app).get("") - res.should.include "Content-Type" - res.headers["Content-Type"].should.equal "text/yaml" - res.original_headers["Content-Type"].should.equal "text/yaml" - res["Content-Type"].should.equal "text/yaml" - res.content_type.should.equal "text/yaml" - res.content_length.should.be 414 # needs change often. - res.location.should.be.nil - end - - specify "should provide access to the HTTP body" do - res = Rack::MockRequest.new(app).get("") - res.body.should =~ /rack/ - res.should =~ /rack/ - res.should.match(/rack/) - res.should.satisfy { |r| r.match(/rack/) } - end - - specify "should provide access to the Rack errors" do - res = Rack::MockRequest.new(app).get("/?error=foo", :lint => true) - res.should.be.ok - res.errors.should.not.be.empty - res.errors.should.include "foo" - end - - specify "should optionally make Rack errors fatal" do - lambda { - Rack::MockRequest.new(app).get("/?error=foo", :fatal => true) - }.should.raise(Rack::MockRequest::FatalWarning) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_mongrel.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_mongrel.rb deleted file mode 100644 index 4b386891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_mongrel.rb +++ /dev/null @@ -1,189 +0,0 @@ -require 'test/spec' - -begin -require 'rack/handler/mongrel' -require 'rack/urlmap' -require 'rack/lint' -require 'testrequest' -require 'timeout' - -Thread.abort_on_exception = true -$tcp_defer_accept_opts = nil -$tcp_cork_opts = nil - -context "Rack::Handler::Mongrel" do - include TestRequest::Helpers - - setup do - server = Mongrel::HttpServer.new(@host='0.0.0.0', @port=9201) - server.register('/test', - Rack::Handler::Mongrel.new(Rack::Lint.new(TestRequest.new))) - server.register('/stream', - Rack::Handler::Mongrel.new(Rack::Lint.new(StreamingRequest))) - @acc = server.run - end - - specify "should respond" do - lambda { - GET("/test") - }.should.not.raise - end - - specify "should be a Mongrel" do - GET("/test") - status.should.be 200 - response["SERVER_SOFTWARE"].should =~ /Mongrel/ - response["HTTP_VERSION"].should.equal "HTTP/1.1" - response["SERVER_PROTOCOL"].should.equal "HTTP/1.1" - response["SERVER_PORT"].should.equal "9201" - response["SERVER_NAME"].should.equal "0.0.0.0" - end - - specify "should have rack headers" do - GET("/test") - response["rack.version"].should.equal [1,1] - response["rack.multithread"].should.be true - response["rack.multiprocess"].should.be false - response["rack.run_once"].should.be false - end - - specify "should have CGI headers on GET" do - GET("/test") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/test" - response["PATH_INFO"].should.be.equal "" - response["QUERY_STRING"].should.equal "" - response["test.postdata"].should.equal "" - - GET("/test/foo?quux=1") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/test/foo" - response["PATH_INFO"].should.equal "/foo" - response["QUERY_STRING"].should.equal "quux=1" - end - - specify "should have CGI headers on POST" do - POST("/test", {"rack-form-data" => "23"}, {'X-test-header' => '42'}) - status.should.equal 200 - response["REQUEST_METHOD"].should.equal "POST" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/test" - response["QUERY_STRING"].should.equal "" - response["HTTP_X_TEST_HEADER"].should.equal "42" - response["test.postdata"].should.equal "rack-form-data=23" - end - - specify "should support HTTP auth" do - GET("/test", {:user => "ruth", :passwd => "secret"}) - response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ=" - end - - specify "should set status" do - GET("/test?secret") - status.should.equal 403 - response["rack.url_scheme"].should.equal "http" - end - - specify "should provide a .run" do - block_ran = false - Thread.new { - Rack::Handler::Mongrel.run(lambda {}, {:Port => 9211}) { |server| - server.should.be.kind_of Mongrel::HttpServer - block_ran = true - } - } - sleep 1 - block_ran.should.be true - end - - specify "should provide a .run that maps a hash" do - block_ran = false - Thread.new { - map = {'/'=>lambda{},'/foo'=>lambda{}} - Rack::Handler::Mongrel.run(map, :map => true, :Port => 9221) { |server| - server.should.be.kind_of Mongrel::HttpServer - server.classifier.uris.size.should.be 2 - server.classifier.uris.should.not.include '/arf' - server.classifier.uris.should.include '/' - server.classifier.uris.should.include '/foo' - block_ran = true - } - } - sleep 1 - block_ran.should.be true - end - - specify "should provide a .run that maps a urlmap" do - block_ran = false - Thread.new { - map = Rack::URLMap.new({'/'=>lambda{},'/bar'=>lambda{}}) - Rack::Handler::Mongrel.run(map, {:map => true, :Port => 9231}) { |server| - server.should.be.kind_of Mongrel::HttpServer - server.classifier.uris.size.should.be 2 - server.classifier.uris.should.not.include '/arf' - server.classifier.uris.should.include '/' - server.classifier.uris.should.include '/bar' - block_ran = true - } - } - sleep 1 - block_ran.should.be true - end - - specify "should provide a .run that maps a urlmap restricting by host" do - block_ran = false - Thread.new { - map = Rack::URLMap.new({ - '/' => lambda{}, - '/foo' => lambda{}, - '/bar' => lambda{}, - 'http://localhost/' => lambda{}, - 'http://localhost/bar' => lambda{}, - 'http://falsehost/arf' => lambda{}, - 'http://falsehost/qux' => lambda{} - }) - opt = {:map => true, :Port => 9241, :Host => 'localhost'} - Rack::Handler::Mongrel.run(map, opt) { |server| - server.should.be.kind_of Mongrel::HttpServer - server.classifier.uris.should.include '/' - server.classifier.handler_map['/'].size.should.be 2 - server.classifier.uris.should.include '/foo' - server.classifier.handler_map['/foo'].size.should.be 1 - server.classifier.uris.should.include '/bar' - server.classifier.handler_map['/bar'].size.should.be 2 - server.classifier.uris.should.not.include '/qux' - server.classifier.uris.should.not.include '/arf' - server.classifier.uris.size.should.be 3 - block_ran = true - } - } - sleep 1 - block_ran.should.be true - end - - specify "should stream #each part of the response" do - body = '' - begin - Timeout.timeout(1) do - Net::HTTP.start(@host, @port) do |http| - get = Net::HTTP::Get.new('/stream') - http.request(get) do |response| - response.read_body { |part| body << part } - end - end - end - rescue Timeout::Error - end - body.should.not.be.empty - end - - teardown do - @acc.raise Mongrel::StopServer - end -end - -rescue LoadError - $stderr.puts "Skipping Rack::Handler::Mongrel tests (Mongrel is required). `gem install mongrel` and try again." -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_nulllogger.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_nulllogger.rb deleted file mode 100644 index b3c2bc9c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_nulllogger.rb +++ /dev/null @@ -1,13 +0,0 @@ -require 'rack/nulllogger' -require 'rack/lint' -require 'rack/mock' - -context "Rack::NullLogger" do - specify "acks as a nop logger" do - app = lambda { |env| - env['rack.logger'].warn "b00m" - [200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]] - } - Rack::NullLogger.new(app).call({}) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_recursive.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_recursive.rb deleted file mode 100644 index afc1a0d9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_recursive.rb +++ /dev/null @@ -1,77 +0,0 @@ -require 'test/spec' - -require 'rack/recursive' -require 'rack/urlmap' -require 'rack/response' -require 'rack/mock' - -context "Rack::Recursive" do - setup do - - @app1 = lambda { |env| - res = Rack::Response.new - res["X-Path-Info"] = env["PATH_INFO"] - res["X-Query-String"] = env["QUERY_STRING"] - res.finish do |res| - res.write "App1" - end - } - - @app2 = lambda { |env| - Rack::Response.new.finish do |res| - res.write "App2" - _, _, body = env['rack.recursive.include'].call(env, "/app1") - body.each { |b| - res.write b - } - end - } - - @app3 = lambda { |env| - raise Rack::ForwardRequest.new("/app1") - } - - @app4 = lambda { |env| - raise Rack::ForwardRequest.new("http://example.org/app1/quux?meh") - } - - end - - specify "should allow for subrequests" do - res = Rack::MockRequest.new(Rack::Recursive.new( - Rack::URLMap.new("/app1" => @app1, - "/app2" => @app2))). - get("/app2") - - res.should.be.ok - res.body.should.equal "App2App1" - end - - specify "should raise error on requests not below the app" do - app = Rack::URLMap.new("/app1" => @app1, - "/app" => Rack::Recursive.new( - Rack::URLMap.new("/1" => @app1, - "/2" => @app2))) - - lambda { - Rack::MockRequest.new(app).get("/app/2") - }.should.raise(ArgumentError). - message.should =~ /can only include below/ - end - - specify "should support forwarding" do - app = Rack::Recursive.new(Rack::URLMap.new("/app1" => @app1, - "/app3" => @app3, - "/app4" => @app4)) - - res = Rack::MockRequest.new(app).get("/app3") - res.should.be.ok - res.body.should.equal "App1" - - res = Rack::MockRequest.new(app).get("/app4") - res.should.be.ok - res.body.should.equal "App1" - res["X-Path-Info"].should.equal "/quux" - res["X-Query-String"].should.equal "meh" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_request.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_request.rb deleted file mode 100644 index fcdeb484..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_request.rb +++ /dev/null @@ -1,545 +0,0 @@ -require 'test/spec' -require 'stringio' - -require 'rack/request' -require 'rack/mock' - -context "Rack::Request" do - specify "wraps the rack variables" do - req = Rack::Request.new(Rack::MockRequest.env_for("http://example.com:8080/")) - - req.body.should.respond_to? :gets - req.scheme.should.equal "http" - req.request_method.should.equal "GET" - - req.should.be.get - req.should.not.be.post - req.should.not.be.put - req.should.not.be.delete - req.should.not.be.head - - req.script_name.should.equal "" - req.path_info.should.equal "/" - req.query_string.should.equal "" - - req.host.should.equal "example.com" - req.port.should.equal 8080 - - req.content_length.should.equal "0" - req.content_type.should.be.nil - end - - specify "can figure out the correct host" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", "HTTP_HOST" => "www2.example.org") - req.host.should.equal "www2.example.org" - - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", "SERVER_NAME" => "example.org", "SERVER_PORT" => "9292") - req.host.should.equal "example.org" - - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", "HTTP_HOST" => "localhost:81", "HTTP_X_FORWARDED_HOST" => "example.org:9292") - req.host.should.equal "example.org" - - env = Rack::MockRequest.env_for("/", "SERVER_ADDR" => "192.168.1.1", "SERVER_PORT" => "9292") - env.delete("SERVER_NAME") - req = Rack::Request.new(env) - req.host.should.equal "192.168.1.1" - - env = Rack::MockRequest.env_for("/") - env.delete("SERVER_NAME") - req = Rack::Request.new(env) - req.host.should.equal "" - end - - specify "can parse the query string" do - req = Rack::Request.new(Rack::MockRequest.env_for("/?foo=bar&quux=bla")) - req.query_string.should.equal "foo=bar&quux=bla" - req.GET.should.equal "foo" => "bar", "quux" => "bla" - req.POST.should.be.empty - req.params.should.equal "foo" => "bar", "quux" => "bla" - end - - specify "raises if rack.input is missing" do - req = Rack::Request.new({}) - lambda { req.POST }.should.raise(RuntimeError) - end - - specify "can parse POST data when method is POST and no Content-Type given" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/?foo=quux", - "REQUEST_METHOD" => 'POST', - :input => "foo=bar&quux=bla") - req.content_type.should.be.nil - req.media_type.should.be.nil - req.query_string.should.equal "foo=quux" - req.GET.should.equal "foo" => "quux" - req.POST.should.equal "foo" => "bar", "quux" => "bla" - req.params.should.equal "foo" => "bar", "quux" => "bla" - end - - specify "can parse POST data with explicit content type regardless of method" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", - "CONTENT_TYPE" => 'application/x-www-form-urlencoded;foo=bar', - :input => "foo=bar&quux=bla") - req.content_type.should.equal 'application/x-www-form-urlencoded;foo=bar' - req.media_type.should.equal 'application/x-www-form-urlencoded' - req.media_type_params['foo'].should.equal 'bar' - req.POST.should.equal "foo" => "bar", "quux" => "bla" - req.params.should.equal "foo" => "bar", "quux" => "bla" - end - - specify "does not parse POST data when media type is not form-data" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/?foo=quux", - "REQUEST_METHOD" => 'POST', - "CONTENT_TYPE" => 'text/plain;charset=utf-8', - :input => "foo=bar&quux=bla") - req.content_type.should.equal 'text/plain;charset=utf-8' - req.media_type.should.equal 'text/plain' - req.media_type_params['charset'].should.equal 'utf-8' - req.POST.should.be.empty - req.params.should.equal "foo" => "quux" - req.body.read.should.equal "foo=bar&quux=bla" - end - - specify "can parse POST data on PUT when media type is form-data" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/?foo=quux", - "REQUEST_METHOD" => 'PUT', - "CONTENT_TYPE" => 'application/x-www-form-urlencoded', - :input => "foo=bar&quux=bla") - req.POST.should.equal "foo" => "bar", "quux" => "bla" - req.body.read.should.equal "foo=bar&quux=bla" - end - - specify "rewinds input after parsing POST data" do - input = StringIO.new("foo=bar&quux=bla") - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", - "CONTENT_TYPE" => 'application/x-www-form-urlencoded;foo=bar', - :input => input) - req.params.should.equal "foo" => "bar", "quux" => "bla" - input.read.should.equal "foo=bar&quux=bla" - end - - specify "cleans up Safari's ajax POST body" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", - 'REQUEST_METHOD' => 'POST', :input => "foo=bar&quux=bla\0") - req.POST.should.equal "foo" => "bar", "quux" => "bla" - end - - specify "can get value by key from params with #[]" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("?foo=quux") - req['foo'].should.equal 'quux' - req[:foo].should.equal 'quux' - end - - specify "can set value to key on params with #[]=" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("?foo=duh") - req['foo'].should.equal 'duh' - req[:foo].should.equal 'duh' - req.params.should.equal 'foo' => 'duh' - - req['foo'] = 'bar' - req.params.should.equal 'foo' => 'bar' - req['foo'].should.equal 'bar' - req[:foo].should.equal 'bar' - - req[:foo] = 'jaz' - req.params.should.equal 'foo' => 'jaz' - req['foo'].should.equal 'jaz' - req[:foo].should.equal 'jaz' - end - - specify "values_at answers values by keys in order given" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("?foo=baz&wun=der&bar=ful") - req.values_at('foo').should.equal ['baz'] - req.values_at('foo', 'wun').should.equal ['baz', 'der'] - req.values_at('bar', 'foo', 'wun').should.equal ['ful', 'baz', 'der'] - end - - specify "referrer should be extracted correct" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", "HTTP_REFERER" => "/some/path") - req.referer.should.equal "/some/path" - - req = Rack::Request.new \ - Rack::MockRequest.env_for("/") - req.referer.should.equal "/" - end - - specify "user agent should be extracted correct" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", "HTTP_USER_AGENT" => "Mozilla/4.0 (compatible)") - req.user_agent.should.equal "Mozilla/4.0 (compatible)" - - req = Rack::Request.new \ - Rack::MockRequest.env_for("/") - req.user_agent.should.equal nil - end - - specify "can cache, but invalidates the cache" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/?foo=quux", - "CONTENT_TYPE" => "application/x-www-form-urlencoded", - :input => "foo=bar&quux=bla") - req.GET.should.equal "foo" => "quux" - req.GET.should.equal "foo" => "quux" - req.env["QUERY_STRING"] = "bla=foo" - req.GET.should.equal "bla" => "foo" - req.GET.should.equal "bla" => "foo" - - req.POST.should.equal "foo" => "bar", "quux" => "bla" - req.POST.should.equal "foo" => "bar", "quux" => "bla" - req.env["rack.input"] = StringIO.new("foo=bla&quux=bar") - req.POST.should.equal "foo" => "bla", "quux" => "bar" - req.POST.should.equal "foo" => "bla", "quux" => "bar" - end - - specify "can figure out if called via XHR" do - req = Rack::Request.new(Rack::MockRequest.env_for("")) - req.should.not.be.xhr - - req = Rack::Request.new \ - Rack::MockRequest.env_for("", "HTTP_X_REQUESTED_WITH" => "XMLHttpRequest") - req.should.be.xhr - end - - specify "can parse cookies" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("", "HTTP_COOKIE" => "foo=bar;quux=h&m") - req.cookies.should.equal "foo" => "bar", "quux" => "h&m" - req.cookies.should.equal "foo" => "bar", "quux" => "h&m" - req.env.delete("HTTP_COOKIE") - req.cookies.should.equal({}) - end - - specify "parses cookies according to RFC 2109" do - req = Rack::Request.new \ - Rack::MockRequest.env_for('', 'HTTP_COOKIE' => 'foo=bar;foo=car') - req.cookies.should.equal 'foo' => 'bar' - end - - specify "provides setters" do - req = Rack::Request.new(e=Rack::MockRequest.env_for("")) - req.script_name.should.equal "" - req.script_name = "/foo" - req.script_name.should.equal "/foo" - e["SCRIPT_NAME"].should.equal "/foo" - - req.path_info.should.equal "/" - req.path_info = "/foo" - req.path_info.should.equal "/foo" - e["PATH_INFO"].should.equal "/foo" - end - - specify "provides the original env" do - req = Rack::Request.new(e=Rack::MockRequest.env_for("")) - req.env.should.be e - end - - specify "can restore the URL" do - Rack::Request.new(Rack::MockRequest.env_for("")).url. - should.equal "http://example.org/" - Rack::Request.new(Rack::MockRequest.env_for("", "SCRIPT_NAME" => "/foo")).url. - should.equal "http://example.org/foo/" - Rack::Request.new(Rack::MockRequest.env_for("/foo")).url. - should.equal "http://example.org/foo" - Rack::Request.new(Rack::MockRequest.env_for("?foo")).url. - should.equal "http://example.org/?foo" - Rack::Request.new(Rack::MockRequest.env_for("http://example.org:8080/")).url. - should.equal "http://example.org:8080/" - Rack::Request.new(Rack::MockRequest.env_for("https://example.org/")).url. - should.equal "https://example.org/" - - Rack::Request.new(Rack::MockRequest.env_for("https://example.com:8080/foo?foo")).url. - should.equal "https://example.com:8080/foo?foo" - end - - specify "can restore the full path" do - Rack::Request.new(Rack::MockRequest.env_for("")).fullpath. - should.equal "/" - Rack::Request.new(Rack::MockRequest.env_for("", "SCRIPT_NAME" => "/foo")).fullpath. - should.equal "/foo/" - Rack::Request.new(Rack::MockRequest.env_for("/foo")).fullpath. - should.equal "/foo" - Rack::Request.new(Rack::MockRequest.env_for("?foo")).fullpath. - should.equal "/?foo" - Rack::Request.new(Rack::MockRequest.env_for("http://example.org:8080/")).fullpath. - should.equal "/" - Rack::Request.new(Rack::MockRequest.env_for("https://example.org/")).fullpath. - should.equal "/" - - Rack::Request.new(Rack::MockRequest.env_for("https://example.com:8080/foo?foo")).fullpath. - should.equal "/foo?foo" - end - - specify "can handle multiple media type parameters" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", - "CONTENT_TYPE" => 'text/plain; foo=BAR,baz=bizzle dizzle;BLING=bam') - req.should.not.be.form_data - req.media_type_params.should.include 'foo' - req.media_type_params['foo'].should.equal 'BAR' - req.media_type_params.should.include 'baz' - req.media_type_params['baz'].should.equal 'bizzle dizzle' - req.media_type_params.should.not.include 'BLING' - req.media_type_params.should.include 'bling' - req.media_type_params['bling'].should.equal 'bam' - end - - specify "can parse multipart form data" do - # Adapted from RFC 1867. - input = < "multipart/form-data, boundary=AaB03x", - "CONTENT_LENGTH" => input.size, - :input => input) - - req.POST.should.include "fileupload" - req.POST.should.include "reply" - - req.should.be.form_data - req.content_length.should.equal input.size - req.media_type.should.equal 'multipart/form-data' - req.media_type_params.should.include 'boundary' - req.media_type_params['boundary'].should.equal 'AaB03x' - - req.POST["reply"].should.equal "yes" - - f = req.POST["fileupload"] - f.should.be.kind_of Hash - f[:type].should.equal "image/jpeg" - f[:filename].should.equal "dj.jpg" - f.should.include :tempfile - f[:tempfile].size.should.equal 76 - end - - specify "can parse big multipart form data" do - input = < "multipart/form-data, boundary=AaB03x", - "CONTENT_LENGTH" => input.size, - :input => input) - - req.POST["huge"][:tempfile].size.should.equal 32768 - req.POST["mean"][:tempfile].size.should.equal 10 - req.POST["mean"][:tempfile].read.should.equal "--AaB03xha" - end - - specify "can detect invalid multipart form data" do - input = < "multipart/form-data, boundary=AaB03x", - "CONTENT_LENGTH" => input.size, - :input => input) - - lambda { req.POST }.should.raise(EOFError) - - input = < "multipart/form-data, boundary=AaB03x", - "CONTENT_LENGTH" => input.size, - :input => input) - - lambda { req.POST }.should.raise(EOFError) - - input = < "multipart/form-data, boundary=AaB03x", - "CONTENT_LENGTH" => input.size, - :input => input) - - lambda { req.POST }.should.raise(EOFError) - end - - specify "shouldn't try to interpret binary as utf8" do - begin - original_kcode = $KCODE - $KCODE='UTF8' - - input = < "multipart/form-data, boundary=AaB03x", - "CONTENT_LENGTH" => input.size, - :input => input) - - lambda{req.POST}.should.not.raise(EOFError) - req.POST["fileupload"][:tempfile].size.should.equal 4 - ensure - $KCODE = original_kcode - end - end - - - specify "should work around buggy 1.8.* Tempfile equality" do - input = < "multipart/form-data, boundary=AaB03x", - "CONTENT_LENGTH" => input.size, - :input => rack_input) - - lambda {req.POST}.should.not.raise - lambda {req.POST}.should.blaming("input re-processed!").not.raise - end - - specify "does conform to the Rack spec" do - app = lambda { |env| - content = Rack::Request.new(env).POST["file"].inspect - size = content.respond_to?(:bytesize) ? content.bytesize : content.size - [200, {"Content-Type" => "text/html", "Content-Length" => size.to_s}, [content]] - } - - input = < "multipart/form-data, boundary=AaB03x", - "CONTENT_LENGTH" => input.size.to_s, "rack.input" => StringIO.new(input) - - res.should.be.ok - end - - specify "should parse Accept-Encoding correctly" do - parser = lambda do |x| - Rack::Request.new(Rack::MockRequest.env_for("", "HTTP_ACCEPT_ENCODING" => x)).accept_encoding - end - - parser.call(nil).should.equal([]) - - parser.call("compress, gzip").should.equal([["compress", 1.0], ["gzip", 1.0]]) - parser.call("").should.equal([]) - parser.call("*").should.equal([["*", 1.0]]) - parser.call("compress;q=0.5, gzip;q=1.0").should.equal([["compress", 0.5], ["gzip", 1.0]]) - parser.call("gzip;q=1.0, identity; q=0.5, *;q=0").should.equal([["gzip", 1.0], ["identity", 0.5], ["*", 0] ]) - - lambda { parser.call("gzip ; q=1.0") }.should.raise(RuntimeError) - end - - specify 'should provide ip information' do - app = lambda { |env| - request = Rack::Request.new(env) - response = Rack::Response.new - response.write request.ip - response.finish - } - - mock = Rack::MockRequest.new(Rack::Lint.new(app)) - res = mock.get '/', 'REMOTE_ADDR' => '123.123.123.123' - res.body.should.equal '123.123.123.123' - - res = mock.get '/', - 'REMOTE_ADDR' => '123.123.123.123', - 'HTTP_X_FORWARDED_FOR' => '234.234.234.234' - - res.body.should.equal '234.234.234.234' - - res = mock.get '/', - 'REMOTE_ADDR' => '123.123.123.123', - 'HTTP_X_FORWARDED_FOR' => '234.234.234.234,212.212.212.212' - - res.body.should.equal '212.212.212.212' - end - - class MyRequest < Rack::Request - def params - {:foo => "bar"} - end - end - - specify "should allow subclass request to be instantiated after parent request" do - env = Rack::MockRequest.env_for("/?foo=bar") - - req1 = Rack::Request.new(env) - req1.GET.should.equal "foo" => "bar" - req1.params.should.equal "foo" => "bar" - - req2 = MyRequest.new(env) - req2.GET.should.equal "foo" => "bar" - req2.params.should.equal :foo => "bar" - end - - specify "should allow parent request to be instantiated after subclass request" do - env = Rack::MockRequest.env_for("/?foo=bar") - - req1 = MyRequest.new(env) - req1.GET.should.equal "foo" => "bar" - req1.params.should.equal :foo => "bar" - - req2 = Rack::Request.new(env) - req2.GET.should.equal "foo" => "bar" - req2.params.should.equal "foo" => "bar" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_response.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_response.rb deleted file mode 100644 index 7989013d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_response.rb +++ /dev/null @@ -1,221 +0,0 @@ -require 'test/spec' -require 'set' - -require 'rack/response' - -context "Rack::Response" do - specify "has sensible default values" do - response = Rack::Response.new - status, header, body = response.finish - status.should.equal 200 - header.should.equal "Content-Type" => "text/html" - body.each { |part| - part.should.equal "" - } - - response = Rack::Response.new - status, header, body = *response - status.should.equal 200 - header.should.equal "Content-Type" => "text/html" - body.each { |part| - part.should.equal "" - } - end - - specify "can be written to" do - response = Rack::Response.new - - status, header, body = response.finish do - response.write "foo" - response.write "bar" - response.write "baz" - end - - parts = [] - body.each { |part| parts << part } - - parts.should.equal ["foo", "bar", "baz"] - end - - specify "can set and read headers" do - response = Rack::Response.new - response["Content-Type"].should.equal "text/html" - response["Content-Type"] = "text/plain" - response["Content-Type"].should.equal "text/plain" - end - - specify "can set cookies" do - response = Rack::Response.new - - response.set_cookie "foo", "bar" - response["Set-Cookie"].should.equal "foo=bar" - response.set_cookie "foo2", "bar2" - response["Set-Cookie"].should.equal ["foo=bar", "foo2=bar2"] - response.set_cookie "foo3", "bar3" - response["Set-Cookie"].should.equal ["foo=bar", "foo2=bar2", "foo3=bar3"] - end - - specify "formats the Cookie expiration date accordingly to RFC 2109" do - response = Rack::Response.new - - response.set_cookie "foo", {:value => "bar", :expires => Time.now+10} - response["Set-Cookie"].should.match( - /expires=..., \d\d-...-\d\d\d\d \d\d:\d\d:\d\d .../) - end - - specify "can set secure cookies" do - response = Rack::Response.new - response.set_cookie "foo", {:value => "bar", :secure => true} - response["Set-Cookie"].should.equal "foo=bar; secure" - end - - specify "can set http only cookies" do - response = Rack::Response.new - response.set_cookie "foo", {:value => "bar", :httponly => true} - response["Set-Cookie"].should.equal "foo=bar; HttpOnly" - end - - specify "can delete cookies" do - response = Rack::Response.new - response.set_cookie "foo", "bar" - response.set_cookie "foo2", "bar2" - response.delete_cookie "foo" - response["Set-Cookie"].should.equal ["foo2=bar2", - "foo=; expires=Thu, 01-Jan-1970 00:00:00 GMT"] - end - - specify "can do redirects" do - response = Rack::Response.new - response.redirect "/foo" - status, header, body = response.finish - - status.should.equal 302 - header["Location"].should.equal "/foo" - - response = Rack::Response.new - response.redirect "/foo", 307 - status, header, body = response.finish - - status.should.equal 307 - end - - specify "has a useful constructor" do - r = Rack::Response.new("foo") - status, header, body = r.finish - str = ""; body.each { |part| str << part } - str.should.equal "foo" - - r = Rack::Response.new(["foo", "bar"]) - status, header, body = r.finish - str = ""; body.each { |part| str << part } - str.should.equal "foobar" - - r = Rack::Response.new(["foo", "bar"].to_set) - r.write "foo" - status, header, body = r.finish - str = ""; body.each { |part| str << part } - str.should.equal "foobarfoo" - - r = Rack::Response.new([], 500) - r.status.should.equal 500 - - r = Rack::Response.new([], "200 OK") - r.status.should.equal 200 - end - - specify "has a constructor that can take a block" do - r = Rack::Response.new { |res| - res.status = 404 - res.write "foo" - } - status, header, body = r.finish - str = ""; body.each { |part| str << part } - str.should.equal "foo" - status.should.equal 404 - end - - specify "doesn't return invalid responses" do - r = Rack::Response.new(["foo", "bar"], 204) - status, header, body = r.finish - str = ""; body.each { |part| str << part } - str.should.be.empty - header["Content-Type"].should.equal nil - - lambda { - Rack::Response.new(Object.new) - }.should.raise(TypeError). - message.should =~ /stringable or iterable required/ - end - - specify "knows if it's empty" do - r = Rack::Response.new - r.should.be.empty - r.write "foo" - r.should.not.be.empty - - r = Rack::Response.new - r.should.be.empty - r.finish - r.should.be.empty - - r = Rack::Response.new - r.should.be.empty - r.finish { } - r.should.not.be.empty - end - - specify "should provide access to the HTTP status" do - res = Rack::Response.new - res.status = 200 - res.should.be.successful - res.should.be.ok - - res.status = 404 - res.should.not.be.successful - res.should.be.client_error - res.should.be.not_found - - res.status = 501 - res.should.not.be.successful - res.should.be.server_error - - res.status = 307 - res.should.be.redirect - end - - specify "should provide access to the HTTP headers" do - res = Rack::Response.new - res["Content-Type"] = "text/yaml" - - res.should.include "Content-Type" - res.headers["Content-Type"].should.equal "text/yaml" - res["Content-Type"].should.equal "text/yaml" - res.content_type.should.equal "text/yaml" - res.content_length.should.be.nil - res.location.should.be.nil - end - - specify "does not add or change Content-Length when #finish()ing" do - res = Rack::Response.new - res.status = 200 - res.finish - res.headers["Content-Length"].should.be.nil - - res = Rack::Response.new - res.status = 200 - res.headers["Content-Length"] = "10" - res.finish - res.headers["Content-Length"].should.equal "10" - end - - specify "updates Content-Length when body appended to using #write" do - res = Rack::Response.new - res.status = 200 - res.headers["Content-Length"].should.be.nil - res.write "Hi" - res.headers["Content-Length"].should.equal "2" - res.write " there" - res.headers["Content-Length"].should.equal "8" - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_rewindable_input.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_rewindable_input.rb deleted file mode 100644 index 78bebfc9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_rewindable_input.rb +++ /dev/null @@ -1,118 +0,0 @@ -require 'test/spec' -require 'stringio' -require 'rack/rewindable_input' - -shared_context "a rewindable IO object" do - setup do - @rio = Rack::RewindableInput.new(@io) - end - - teardown do - @rio.close - end - - specify "should be able to handle to read()" do - @rio.read.should.equal "hello world" - end - - specify "should be able to handle to read(nil)" do - @rio.read(nil).should.equal "hello world" - end - - specify "should be able to handle to read(length)" do - @rio.read(1).should.equal "h" - end - - specify "should be able to handle to read(length, buffer)" do - buffer = "" - result = @rio.read(1, buffer) - result.should.equal "h" - result.object_id.should.equal buffer.object_id - end - - specify "should be able to handle to read(nil, buffer)" do - buffer = "" - result = @rio.read(nil, buffer) - result.should.equal "hello world" - result.object_id.should.equal buffer.object_id - end - - specify "should rewind to the beginning when #rewind is called" do - @rio.read(1) - @rio.rewind - @rio.read.should.equal "hello world" - end - - specify "should be able to handle gets" do - @rio.gets.should == "hello world" - end - - specify "should be able to handle each" do - array = [] - @rio.each do |data| - array << data - end - array.should.equal(["hello world"]) - end - - specify "should not buffer into a Tempfile if no data has been read yet" do - @rio.instance_variable_get(:@rewindable_io).should.be.nil - end - - specify "should buffer into a Tempfile when data has been consumed for the first time" do - @rio.read(1) - tempfile = @rio.instance_variable_get(:@rewindable_io) - tempfile.should.not.be.nil - @rio.read(1) - tempfile2 = @rio.instance_variable_get(:@rewindable_io) - tempfile2.should.equal tempfile - end - - specify "should close the underlying tempfile upon calling #close" do - @rio.read(1) - tempfile = @rio.instance_variable_get(:@rewindable_io) - @rio.close - tempfile.should.be.closed - end - - specify "should be possibel to call #close when no data has been buffered yet" do - @rio.close - end - - specify "should be possible to call #close multiple times" do - @rio.close - @rio.close - end -end - -context "Rack::RewindableInput" do - context "given an IO object that is already rewindable" do - setup do - @io = StringIO.new("hello world") - end - - it_should_behave_like "a rewindable IO object" - end - - context "given an IO object that is not rewindable" do - setup do - @io = StringIO.new("hello world") - @io.instance_eval do - undef :rewind - end - end - - it_should_behave_like "a rewindable IO object" - end - - context "given an IO object whose rewind method raises Errno::ESPIPE" do - setup do - @io = StringIO.new("hello world") - def @io.rewind - raise Errno::ESPIPE, "You can't rewind this!" - end - end - - it_should_behave_like "a rewindable IO object" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_runtime.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_runtime.rb deleted file mode 100644 index 62d80956..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_runtime.rb +++ /dev/null @@ -1,35 +0,0 @@ -require 'test/spec' -require 'rack/mock' -require 'rack/runtime' - -context "Rack::Runtime" do - specify "sets X-Runtime is none is set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] } - response = Rack::Runtime.new(app).call({}) - response[1]['X-Runtime'].should =~ /[\d\.]+/ - end - - specify "does not set the X-Runtime if it is already set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain', "X-Runtime" => "foobar"}, "Hello, World!"] } - response = Rack::Runtime.new(app).call({}) - response[1]['X-Runtime'].should == "foobar" - end - - specify "should allow a suffix to be set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] } - response = Rack::Runtime.new(app, "Test").call({}) - response[1]['X-Runtime-Test'].should =~ /[\d\.]+/ - end - - specify "should allow multiple timers to be set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] } - runtime1 = Rack::Runtime.new(app, "App") - runtime2 = Rack::Runtime.new(runtime1, "All") - response = runtime2.call({}) - - response[1]['X-Runtime-App'].should =~ /[\d\.]+/ - response[1]['X-Runtime-All'].should =~ /[\d\.]+/ - - Float(response[1]['X-Runtime-All']).should > Float(response[1]['X-Runtime-App']) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_sendfile.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_sendfile.rb deleted file mode 100644 index 8cfe2017..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_sendfile.rb +++ /dev/null @@ -1,86 +0,0 @@ -require 'test/spec' -require 'rack/mock' -require 'rack/sendfile' - -context "Rack::File" do - specify "should respond to #to_path" do - Rack::File.new(Dir.pwd).should.respond_to :to_path - end -end - -context "Rack::Sendfile" do - def sendfile_body - res = ['Hello World'] - def res.to_path ; "/tmp/hello.txt" ; end - res - end - - def simple_app(body=sendfile_body) - lambda { |env| [200, {'Content-Type' => 'text/plain'}, body] } - end - - def sendfile_app(body=sendfile_body) - Rack::Sendfile.new(simple_app(body)) - end - - setup do - @request = Rack::MockRequest.new(sendfile_app) - end - - def request(headers={}) - yield @request.get('/', headers) - end - - specify "does nothing when no X-Sendfile-Type header present" do - request do |response| - response.should.be.ok - response.body.should.equal 'Hello World' - response.headers.should.not.include 'X-Sendfile' - end - end - - specify "sets X-Sendfile response header and discards body" do - request 'HTTP_X_SENDFILE_TYPE' => 'X-Sendfile' do |response| - response.should.be.ok - response.body.should.be.empty - response.headers['X-Sendfile'].should.equal '/tmp/hello.txt' - end - end - - specify "sets X-Lighttpd-Send-File response header and discards body" do - request 'HTTP_X_SENDFILE_TYPE' => 'X-Lighttpd-Send-File' do |response| - response.should.be.ok - response.body.should.be.empty - response.headers['X-Lighttpd-Send-File'].should.equal '/tmp/hello.txt' - end - end - - specify "sets X-Accel-Redirect response header and discards body" do - headers = { - 'HTTP_X_SENDFILE_TYPE' => 'X-Accel-Redirect', - 'HTTP_X_ACCEL_MAPPING' => '/tmp/=/foo/bar/' - } - request headers do |response| - response.should.be.ok - response.body.should.be.empty - response.headers['X-Accel-Redirect'].should.equal '/foo/bar/hello.txt' - end - end - - specify 'writes to rack.error when no X-Accel-Mapping is specified' do - request 'HTTP_X_SENDFILE_TYPE' => 'X-Accel-Redirect' do |response| - response.should.be.ok - response.body.should.equal 'Hello World' - response.headers.should.not.include 'X-Accel-Redirect' - response.errors.should.include 'X-Accel-Mapping' - end - end - - specify 'does nothing when body does not respond to #to_path' do - @request = Rack::MockRequest.new(sendfile_app(['Not a file...'])) - request 'HTTP_X_SENDFILE_TYPE' => 'X-Sendfile' do |response| - response.body.should.equal 'Not a file...' - response.headers.should.not.include 'X-Sendfile' - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_session_cookie.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_session_cookie.rb deleted file mode 100644 index fba3f83b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_session_cookie.rb +++ /dev/null @@ -1,73 +0,0 @@ -require 'test/spec' - -require 'rack/session/cookie' -require 'rack/mock' -require 'rack/response' - -context "Rack::Session::Cookie" do - incrementor = lambda { |env| - env["rack.session"]["counter"] ||= 0 - env["rack.session"]["counter"] += 1 - Rack::Response.new(env["rack.session"].inspect).to_a - } - - specify "creates a new cookie" do - res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)).get("/") - res["Set-Cookie"].should.match("rack.session=") - res.body.should.equal '{"counter"=>1}' - end - - specify "loads from a cookie" do - res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)).get("/") - cookie = res["Set-Cookie"] - res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)). - get("/", "HTTP_COOKIE" => cookie) - res.body.should.equal '{"counter"=>2}' - cookie = res["Set-Cookie"] - res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)). - get("/", "HTTP_COOKIE" => cookie) - res.body.should.equal '{"counter"=>3}' - end - - specify "survives broken cookies" do - res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)). - get("/", "HTTP_COOKIE" => "rack.session=blarghfasel") - res.body.should.equal '{"counter"=>1}' - end - - bigcookie = lambda { |env| - env["rack.session"]["cookie"] = "big" * 3000 - Rack::Response.new(env["rack.session"].inspect).to_a - } - - specify "barks on too big cookies" do - lambda { - Rack::MockRequest.new(Rack::Session::Cookie.new(bigcookie)). - get("/", :fatal => true) - }.should.raise(Rack::MockRequest::FatalWarning) - end - - specify "loads from a cookie wih integrity hash" do - res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor, :secret => 'test')).get("/") - cookie = res["Set-Cookie"] - res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor, :secret => 'test')). - get("/", "HTTP_COOKIE" => cookie) - res.body.should.equal '{"counter"=>2}' - cookie = res["Set-Cookie"] - res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor, :secret => 'test')). - get("/", "HTTP_COOKIE" => cookie) - res.body.should.equal '{"counter"=>3}' - end - - specify "ignores tampered with session cookies" do - app = Rack::Session::Cookie.new(incrementor, :secret => 'test') - response1 = Rack::MockRequest.new(app).get("/") - _, digest = response1["Set-Cookie"].split("--") - tampered_with_cookie = "hackerman-was-here" + "--" + digest - response2 = Rack::MockRequest.new(app).get("/", "HTTP_COOKIE" => - tampered_with_cookie) - - # The tampered-with cookie is ignored, so we get back an identical Set-Cookie - response2["Set-Cookie"].should.equal(response1["Set-Cookie"]) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_session_memcache.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_session_memcache.rb deleted file mode 100644 index faac796e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_session_memcache.rb +++ /dev/null @@ -1,273 +0,0 @@ -require 'test/spec' - -begin - require 'rack/session/memcache' - require 'rack/mock' - require 'rack/response' - require 'thread' - - context "Rack::Session::Memcache" do - session_key = Rack::Session::Memcache::DEFAULT_OPTIONS[:key] - session_match = /#{session_key}=([0-9a-fA-F]+);/ - incrementor = lambda do |env| - env["rack.session"]["counter"] ||= 0 - env["rack.session"]["counter"] += 1 - Rack::Response.new(env["rack.session"].inspect).to_a - end - drop_session = proc do |env| - env['rack.session.options'][:drop] = true - incrementor.call(env) - end - renew_session = proc do |env| - env['rack.session.options'][:renew] = true - incrementor.call(env) - end - defer_session = proc do |env| - env['rack.session.options'][:defer] = true - incrementor.call(env) - end - - specify "faults on no connection" do - if RUBY_VERSION < "1.9" - lambda do - Rack::Session::Memcache.new incrementor, :memcache_server => 'nosuchserver' - end.should.raise - else - lambda do - Rack::Session::Memcache.new incrementor, :memcache_server => 'nosuchserver' - end.should.raise ArgumentError - end - end - - specify "connect to existing server" do - test_pool = MemCache.new incrementor, :namespace => 'test:rack:session' - end - - specify "creates a new cookie" do - pool = Rack::Session::Memcache.new(incrementor) - res = Rack::MockRequest.new(pool).get("/") - res["Set-Cookie"].should.match("#{session_key}=") - res.body.should.equal '{"counter"=>1}' - end - - specify "determines session from a cookie" do - pool = Rack::Session::Memcache.new(incrementor) - req = Rack::MockRequest.new(pool) - res = req.get("/") - cookie = res["Set-Cookie"] - req.get("/", "HTTP_COOKIE" => cookie). - body.should.equal '{"counter"=>2}' - req.get("/", "HTTP_COOKIE" => cookie). - body.should.equal '{"counter"=>3}' - end - - specify "survives nonexistant cookies" do - bad_cookie = "rack.session=blarghfasel" - pool = Rack::Session::Memcache.new(incrementor) - res = Rack::MockRequest.new(pool). - get("/", "HTTP_COOKIE" => bad_cookie) - res.body.should.equal '{"counter"=>1}' - cookie = res["Set-Cookie"][session_match] - cookie.should.not.match(/#{bad_cookie}/) - end - - specify "maintains freshness" do - pool = Rack::Session::Memcache.new(incrementor, :expire_after => 3) - res = Rack::MockRequest.new(pool).get('/') - res.body.should.include '"counter"=>1' - cookie = res["Set-Cookie"] - res = Rack::MockRequest.new(pool).get('/', "HTTP_COOKIE" => cookie) - res["Set-Cookie"].should.equal cookie - res.body.should.include '"counter"=>2' - puts 'Sleeping to expire session' if $DEBUG - sleep 4 - res = Rack::MockRequest.new(pool).get('/', "HTTP_COOKIE" => cookie) - res["Set-Cookie"].should.not.equal cookie - res.body.should.include '"counter"=>1' - end - - specify "deletes cookies with :drop option" do - pool = Rack::Session::Memcache.new(incrementor) - req = Rack::MockRequest.new(pool) - drop = Rack::Utils::Context.new(pool, drop_session) - dreq = Rack::MockRequest.new(drop) - - res0 = req.get("/") - session = (cookie = res0["Set-Cookie"])[session_match] - res0.body.should.equal '{"counter"=>1}' - - res1 = req.get("/", "HTTP_COOKIE" => cookie) - res1["Set-Cookie"][session_match].should.equal session - res1.body.should.equal '{"counter"=>2}' - - res2 = dreq.get("/", "HTTP_COOKIE" => cookie) - res2["Set-Cookie"].should.equal nil - res2.body.should.equal '{"counter"=>3}' - - res3 = req.get("/", "HTTP_COOKIE" => cookie) - res3["Set-Cookie"][session_match].should.not.equal session - res3.body.should.equal '{"counter"=>1}' - end - - specify "provides new session id with :renew option" do - pool = Rack::Session::Memcache.new(incrementor) - req = Rack::MockRequest.new(pool) - renew = Rack::Utils::Context.new(pool, renew_session) - rreq = Rack::MockRequest.new(renew) - - res0 = req.get("/") - session = (cookie = res0["Set-Cookie"])[session_match] - res0.body.should.equal '{"counter"=>1}' - - res1 = req.get("/", "HTTP_COOKIE" => cookie) - res1["Set-Cookie"][session_match].should.equal session - res1.body.should.equal '{"counter"=>2}' - - res2 = rreq.get("/", "HTTP_COOKIE" => cookie) - new_cookie = res2["Set-Cookie"] - new_session = new_cookie[session_match] - new_session.should.not.equal session - res2.body.should.equal '{"counter"=>3}' - - res3 = req.get("/", "HTTP_COOKIE" => new_cookie) - res3["Set-Cookie"][session_match].should.equal new_session - res3.body.should.equal '{"counter"=>4}' - end - - specify "omits cookie with :defer option" do - pool = Rack::Session::Memcache.new(incrementor) - req = Rack::MockRequest.new(pool) - defer = Rack::Utils::Context.new(pool, defer_session) - dreq = Rack::MockRequest.new(defer) - - res0 = req.get("/") - session = (cookie = res0["Set-Cookie"])[session_match] - res0.body.should.equal '{"counter"=>1}' - - res1 = req.get("/", "HTTP_COOKIE" => cookie) - res1["Set-Cookie"][session_match].should.equal session - res1.body.should.equal '{"counter"=>2}' - - res2 = dreq.get("/", "HTTP_COOKIE" => cookie) - res2["Set-Cookie"].should.equal nil - res2.body.should.equal '{"counter"=>3}' - - res3 = req.get("/", "HTTP_COOKIE" => cookie) - res3["Set-Cookie"][session_match].should.equal session - res3.body.should.equal '{"counter"=>4}' - end - - specify "deep hashes are correctly updated" do - store = nil - hash_check = proc do |env| - session = env['rack.session'] - unless session.include? 'test' - session.update :a => :b, :c => { :d => :e }, - :f => { :g => { :h => :i} }, 'test' => true - else - session[:f][:g][:h] = :j - end - [200, {}, session.inspect] - end - pool = Rack::Session::Memcache.new(hash_check) - req = Rack::MockRequest.new(pool) - - res0 = req.get("/") - session_id = (cookie = res0["Set-Cookie"])[session_match, 1] - ses0 = pool.pool.get(session_id, true) - - res1 = req.get("/", "HTTP_COOKIE" => cookie) - ses1 = pool.pool.get(session_id, true) - - ses1.should.not.equal ses0 - end - - # anyone know how to do this better? - specify "multithread: should cleanly merge sessions" do - next unless $DEBUG - warn 'Running multithread test for Session::Memcache' - pool = Rack::Session::Memcache.new(incrementor) - req = Rack::MockRequest.new(pool) - - res = req.get('/') - res.body.should.equal '{"counter"=>1}' - cookie = res["Set-Cookie"] - session_id = cookie[session_match, 1] - - delta_incrementor = lambda do |env| - # emulate disconjoinment of threading - env['rack.session'] = env['rack.session'].dup - Thread.stop - env['rack.session'][(Time.now.usec*rand).to_i] = true - incrementor.call(env) - end - tses = Rack::Utils::Context.new pool, delta_incrementor - treq = Rack::MockRequest.new(tses) - tnum = rand(7).to_i+5 - r = Array.new(tnum) do - Thread.new(treq) do |run| - run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true) - end - end.reverse.map{|t| t.run.join.value } - r.each do |request| - request['Set-Cookie'].should.equal cookie - request.body.should.include '"counter"=>2' - end - - session = pool.pool.get(session_id) - session.size.should.be tnum+1 # counter - session['counter'].should.be 2 # meeeh - - tnum = rand(7).to_i+5 - r = Array.new(tnum) do |i| - delta_time = proc do |env| - env['rack.session'][i] = Time.now - Thread.stop - env['rack.session'] = env['rack.session'].dup - env['rack.session'][i] -= Time.now - incrementor.call(env) - end - app = Rack::Utils::Context.new pool, time_delta - req = Rack::MockRequest.new app - Thread.new(req) do |run| - run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true) - end - end.reverse.map{|t| t.run.join.value } - r.each do |request| - request['Set-Cookie'].should.equal cookie - request.body.should.include '"counter"=>3' - end - - session = pool.pool.get(session_id) - session.size.should.be tnum+1 - session['counter'].should.be 3 - - drop_counter = proc do |env| - env['rack.session'].delete 'counter' - env['rack.session']['foo'] = 'bar' - [200, {'Content-Type'=>'text/plain'}, env['rack.session'].inspect] - end - tses = Rack::Utils::Context.new pool, drop_counter - treq = Rack::MockRequest.new(tses) - tnum = rand(7).to_i+5 - r = Array.new(tnum) do - Thread.new(treq) do |run| - run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true) - end - end.reverse.map{|t| t.run.join.value } - r.each do |request| - request['Set-Cookie'].should.equal cookie - request.body.should.include '"foo"=>"bar"' - end - - session = pool.pool.get(session_id) - session.size.should.be r.size+1 - session['counter'].should.be.nil? - session['foo'].should.equal 'bar' - end - end -rescue RuntimeError - $stderr.puts "Skipping Rack::Session::Memcache tests. Start memcached and try again." -rescue LoadError - $stderr.puts "Skipping Rack::Session::Memcache tests (Memcache is required). `gem install memcache-client` and try again." -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_session_pool.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_session_pool.rb deleted file mode 100644 index 6be382ec..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_session_pool.rb +++ /dev/null @@ -1,172 +0,0 @@ -require 'test/spec' - -require 'rack/session/pool' -require 'rack/mock' -require 'rack/response' -require 'thread' - -context "Rack::Session::Pool" do - session_key = Rack::Session::Pool::DEFAULT_OPTIONS[:key] - session_match = /#{session_key}=[0-9a-fA-F]+;/ - incrementor = lambda do |env| - env["rack.session"]["counter"] ||= 0 - env["rack.session"]["counter"] += 1 - Rack::Response.new(env["rack.session"].inspect).to_a - end - drop_session = proc do |env| - env['rack.session.options'][:drop] = true - incrementor.call(env) - end - renew_session = proc do |env| - env['rack.session.options'][:renew] = true - incrementor.call(env) - end - defer_session = proc do |env| - env['rack.session.options'][:defer] = true - incrementor.call(env) - end - - specify "creates a new cookie" do - pool = Rack::Session::Pool.new(incrementor) - res = Rack::MockRequest.new(pool).get("/") - res["Set-Cookie"].should.match session_match - res.body.should.equal '{"counter"=>1}' - end - - specify "determines session from a cookie" do - pool = Rack::Session::Pool.new(incrementor) - req = Rack::MockRequest.new(pool) - cookie = req.get("/")["Set-Cookie"] - req.get("/", "HTTP_COOKIE" => cookie). - body.should.equal '{"counter"=>2}' - req.get("/", "HTTP_COOKIE" => cookie). - body.should.equal '{"counter"=>3}' - end - - specify "survives nonexistant cookies" do - pool = Rack::Session::Pool.new(incrementor) - res = Rack::MockRequest.new(pool). - get("/", "HTTP_COOKIE" => "#{session_key}=blarghfasel") - res.body.should.equal '{"counter"=>1}' - end - - specify "deletes cookies with :drop option" do - pool = Rack::Session::Pool.new(incrementor) - req = Rack::MockRequest.new(pool) - drop = Rack::Utils::Context.new(pool, drop_session) - dreq = Rack::MockRequest.new(drop) - - res0 = req.get("/") - session = (cookie = res0["Set-Cookie"])[session_match] - res0.body.should.equal '{"counter"=>1}' - pool.pool.size.should.be 1 - - res1 = req.get("/", "HTTP_COOKIE" => cookie) - res1["Set-Cookie"][session_match].should.equal session - res1.body.should.equal '{"counter"=>2}' - pool.pool.size.should.be 1 - - res2 = dreq.get("/", "HTTP_COOKIE" => cookie) - res2["Set-Cookie"].should.equal nil - res2.body.should.equal '{"counter"=>3}' - pool.pool.size.should.be 0 - - res3 = req.get("/", "HTTP_COOKIE" => cookie) - res3["Set-Cookie"][session_match].should.not.equal session - res3.body.should.equal '{"counter"=>1}' - pool.pool.size.should.be 1 - end - - specify "provides new session id with :renew option" do - pool = Rack::Session::Pool.new(incrementor) - req = Rack::MockRequest.new(pool) - renew = Rack::Utils::Context.new(pool, renew_session) - rreq = Rack::MockRequest.new(renew) - - res0 = req.get("/") - session = (cookie = res0["Set-Cookie"])[session_match] - res0.body.should.equal '{"counter"=>1}' - pool.pool.size.should.be 1 - - res1 = req.get("/", "HTTP_COOKIE" => cookie) - res1["Set-Cookie"][session_match].should.equal session - res1.body.should.equal '{"counter"=>2}' - pool.pool.size.should.be 1 - - res2 = rreq.get("/", "HTTP_COOKIE" => cookie) - new_cookie = res2["Set-Cookie"] - new_session = new_cookie[session_match] - new_session.should.not.equal session - res2.body.should.equal '{"counter"=>3}' - pool.pool.size.should.be 1 - - res3 = req.get("/", "HTTP_COOKIE" => new_cookie) - res3["Set-Cookie"][session_match].should.equal new_session - res3.body.should.equal '{"counter"=>4}' - pool.pool.size.should.be 1 - end - - specify "omits cookie with :defer option" do - pool = Rack::Session::Pool.new(incrementor) - req = Rack::MockRequest.new(pool) - defer = Rack::Utils::Context.new(pool, defer_session) - dreq = Rack::MockRequest.new(defer) - - res0 = req.get("/") - session = (cookie = res0["Set-Cookie"])[session_match] - res0.body.should.equal '{"counter"=>1}' - pool.pool.size.should.be 1 - - res1 = req.get("/", "HTTP_COOKIE" => cookie) - res1["Set-Cookie"][session_match].should.equal session - res1.body.should.equal '{"counter"=>2}' - pool.pool.size.should.be 1 - - res2 = dreq.get("/", "HTTP_COOKIE" => cookie) - res2["Set-Cookie"].should.equal nil - res2.body.should.equal '{"counter"=>3}' - pool.pool.size.should.be 1 - - res3 = req.get("/", "HTTP_COOKIE" => cookie) - res3["Set-Cookie"][session_match].should.equal session - res3.body.should.equal '{"counter"=>4}' - pool.pool.size.should.be 1 - end - - # anyone know how to do this better? - specify "multithread: should merge sessions" do - next unless $DEBUG - warn 'Running multithread tests for Session::Pool' - pool = Rack::Session::Pool.new(incrementor) - req = Rack::MockRequest.new(pool) - - res = req.get('/') - res.body.should.equal '{"counter"=>1}' - cookie = res["Set-Cookie"] - sess_id = cookie[/#{pool.key}=([^,;]+)/,1] - - delta_incrementor = lambda do |env| - # emulate disconjoinment of threading - env['rack.session'] = env['rack.session'].dup - Thread.stop - env['rack.session'][(Time.now.usec*rand).to_i] = true - incrementor.call(env) - end - tses = Rack::Utils::Context.new pool, delta_incrementor - treq = Rack::MockRequest.new(tses) - tnum = rand(7).to_i+5 - r = Array.new(tnum) do - Thread.new(treq) do |run| - run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true) - end - end.reverse.map{|t| t.run.join.value } - r.each do |res| - res['Set-Cookie'].should.equal cookie - res.body.should.include '"counter"=>2' - end - - session = pool.pool[sess_id] - session.size.should.be tnum+1 # counter - session['counter'].should.be 2 # meeeh - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_showexceptions.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_showexceptions.rb deleted file mode 100644 index bdbc1201..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_showexceptions.rb +++ /dev/null @@ -1,21 +0,0 @@ -require 'test/spec' - -require 'rack/showexceptions' -require 'rack/mock' - -context "Rack::ShowExceptions" do - specify "catches exceptions" do - res = nil - req = Rack::MockRequest.new(Rack::ShowExceptions.new(lambda { |env| - raise RuntimeError - })) - lambda { - res = req.get("/") - }.should.not.raise - res.should.be.a.server_error - res.status.should.equal 500 - - res.should =~ /RuntimeError/ - res.should =~ /ShowExceptions/ - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_showstatus.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_showstatus.rb deleted file mode 100644 index 78700134..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_showstatus.rb +++ /dev/null @@ -1,72 +0,0 @@ -require 'test/spec' - -require 'rack/showstatus' -require 'rack/mock' - -context "Rack::ShowStatus" do - specify "should provide a default status message" do - req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env| - [404, {"Content-Type" => "text/plain", "Content-Length" => "0"}, []] - })) - - res = req.get("/", :lint => true) - res.should.be.not_found - res.should.be.not.empty - - res["Content-Type"].should.equal("text/html") - res.should =~ /404/ - res.should =~ /Not Found/ - end - - specify "should let the app provide additional information" do - req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env| - env["rack.showstatus.detail"] = "gone too meta." - [404, {"Content-Type" => "text/plain", "Content-Length" => "0"}, []] - })) - - res = req.get("/", :lint => true) - res.should.be.not_found - res.should.be.not.empty - - res["Content-Type"].should.equal("text/html") - res.should =~ /404/ - res.should =~ /Not Found/ - res.should =~ /too meta/ - end - - specify "should not replace existing messages" do - req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env| - [404, {"Content-Type" => "text/plain", "Content-Length" => "4"}, ["foo!"]] - })) - res = req.get("/", :lint => true) - res.should.be.not_found - - res.body.should == "foo!" - end - - specify "should pass on original headers" do - headers = {"WWW-Authenticate" => "Basic blah"} - - req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env| [401, headers, []] })) - res = req.get("/", :lint => true) - - res["WWW-Authenticate"].should.equal("Basic blah") - end - - specify "should replace existing messages if there is detail" do - req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env| - env["rack.showstatus.detail"] = "gone too meta." - [404, {"Content-Type" => "text/plain", "Content-Length" => "4"}, ["foo!"]] - })) - - res = req.get("/", :lint => true) - res.should.be.not_found - res.should.be.not.empty - - res["Content-Type"].should.equal("text/html") - res["Content-Length"].should.not.equal("4") - res.should =~ /404/ - res.should =~ /too meta/ - res.body.should.not =~ /foo/ - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_static.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_static.rb deleted file mode 100644 index 19d2ecb7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_static.rb +++ /dev/null @@ -1,37 +0,0 @@ -require 'test/spec' - -require 'rack/static' -require 'rack/mock' - -class DummyApp - def call(env) - [200, {}, ["Hello World"]] - end -end - -context "Rack::Static" do - root = File.expand_path(File.dirname(__FILE__)) - OPTIONS = {:urls => ["/cgi"], :root => root} - - setup do - @request = Rack::MockRequest.new(Rack::Static.new(DummyApp.new, OPTIONS)) - end - - specify "serves files" do - res = @request.get("/cgi/test") - res.should.be.ok - res.body.should =~ /ruby/ - end - - specify "404s if url root is known but it can't find the file" do - res = @request.get("/cgi/foo") - res.should.be.not_found - end - - specify "calls down the chain if url root is not known" do - res = @request.get("/something/else") - res.should.be.ok - res.body.should == "Hello World" - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_thin.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_thin.rb deleted file mode 100644 index 324f6498..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_thin.rb +++ /dev/null @@ -1,91 +0,0 @@ -require 'test/spec' - -begin -require 'rack/handler/thin' -require 'testrequest' -require 'timeout' - -context "Rack::Handler::Thin" do - include TestRequest::Helpers - - setup do - @app = Rack::Lint.new(TestRequest.new) - @server = nil - Thin::Logging.silent = true - @thread = Thread.new do - Rack::Handler::Thin.run(@app, :Host => @host='0.0.0.0', :Port => @port=9204) do |server| - @server = server - end - end - Thread.pass until @server && @server.running? - end - - specify "should respond" do - lambda { - GET("/") - }.should.not.raise - end - - specify "should be a Thin" do - GET("/") - status.should.be 200 - response["SERVER_SOFTWARE"].should =~ /thin/ - response["HTTP_VERSION"].should.equal "HTTP/1.1" - response["SERVER_PROTOCOL"].should.equal "HTTP/1.1" - response["SERVER_PORT"].should.equal "9204" - response["SERVER_NAME"].should.equal "0.0.0.0" - end - - specify "should have rack headers" do - GET("/") - response["rack.version"].should.equal [0,3] - response["rack.multithread"].should.be false - response["rack.multiprocess"].should.be false - response["rack.run_once"].should.be false - end - - specify "should have CGI headers on GET" do - GET("/") - response["REQUEST_METHOD"].should.equal "GET" - response["REQUEST_PATH"].should.equal "/" - response["PATH_INFO"].should.be.equal "/" - response["QUERY_STRING"].should.equal "" - response["test.postdata"].should.equal "" - - GET("/test/foo?quux=1") - response["REQUEST_METHOD"].should.equal "GET" - response["REQUEST_PATH"].should.equal "/test/foo" - response["PATH_INFO"].should.equal "/test/foo" - response["QUERY_STRING"].should.equal "quux=1" - end - - specify "should have CGI headers on POST" do - POST("/", {"rack-form-data" => "23"}, {'X-test-header' => '42'}) - status.should.equal 200 - response["REQUEST_METHOD"].should.equal "POST" - response["REQUEST_PATH"].should.equal "/" - response["QUERY_STRING"].should.equal "" - response["HTTP_X_TEST_HEADER"].should.equal "42" - response["test.postdata"].should.equal "rack-form-data=23" - end - - specify "should support HTTP auth" do - GET("/test", {:user => "ruth", :passwd => "secret"}) - response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ=" - end - - specify "should set status" do - GET("/test?secret") - status.should.equal 403 - response["rack.url_scheme"].should.equal "http" - end - - teardown do - @server.stop! - @thread.kill - end -end - -rescue LoadError - $stderr.puts "Skipping Rack::Handler::Thin tests (Thin is required). `gem install thin` and try again." -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_urlmap.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_urlmap.rb deleted file mode 100644 index 3d8fe605..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_urlmap.rb +++ /dev/null @@ -1,215 +0,0 @@ -require 'test/spec' - -require 'rack/urlmap' -require 'rack/mock' - -context "Rack::URLMap" do - specify "dispatches paths correctly" do - app = lambda { |env| - [200, { - 'X-ScriptName' => env['SCRIPT_NAME'], - 'X-PathInfo' => env['PATH_INFO'], - 'Content-Type' => 'text/plain' - }, [""]] - } - map = Rack::URLMap.new({ - 'http://foo.org/bar' => app, - '/foo' => app, - '/foo/bar' => app - }) - - res = Rack::MockRequest.new(map).get("/") - res.should.be.not_found - - res = Rack::MockRequest.new(map).get("/qux") - res.should.be.not_found - - res = Rack::MockRequest.new(map).get("/foo") - res.should.be.ok - res["X-ScriptName"].should.equal "/foo" - res["X-PathInfo"].should.equal "" - - res = Rack::MockRequest.new(map).get("/foo/") - res.should.be.ok - res["X-ScriptName"].should.equal "/foo" - res["X-PathInfo"].should.equal "/" - - res = Rack::MockRequest.new(map).get("/foo/bar") - res.should.be.ok - res["X-ScriptName"].should.equal "/foo/bar" - res["X-PathInfo"].should.equal "" - - res = Rack::MockRequest.new(map).get("/foo/bar/") - res.should.be.ok - res["X-ScriptName"].should.equal "/foo/bar" - res["X-PathInfo"].should.equal "/" - - res = Rack::MockRequest.new(map).get("/foo///bar//quux") - res.status.should.equal 200 - res.should.be.ok - res["X-ScriptName"].should.equal "/foo/bar" - res["X-PathInfo"].should.equal "//quux" - - res = Rack::MockRequest.new(map).get("/foo/quux", "SCRIPT_NAME" => "/bleh") - res.should.be.ok - res["X-ScriptName"].should.equal "/bleh/foo" - res["X-PathInfo"].should.equal "/quux" - - res = Rack::MockRequest.new(map).get("/bar", 'HTTP_HOST' => 'foo.org') - res.should.be.ok - res["X-ScriptName"].should.equal "/bar" - res["X-PathInfo"].should.be.empty - - res = Rack::MockRequest.new(map).get("/bar/", 'HTTP_HOST' => 'foo.org') - res.should.be.ok - res["X-ScriptName"].should.equal "/bar" - res["X-PathInfo"].should.equal '/' - end - - - specify "dispatches hosts correctly" do - map = Rack::URLMap.new("http://foo.org/" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "foo.org", - "X-Host" => env["HTTP_HOST"] || env["SERVER_NAME"], - }, [""]]}, - "http://subdomain.foo.org/" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "subdomain.foo.org", - "X-Host" => env["HTTP_HOST"] || env["SERVER_NAME"], - }, [""]]}, - "http://bar.org/" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "bar.org", - "X-Host" => env["HTTP_HOST"] || env["SERVER_NAME"], - }, [""]]}, - "/" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "default.org", - "X-Host" => env["HTTP_HOST"] || env["SERVER_NAME"], - }, [""]]} - ) - - res = Rack::MockRequest.new(map).get("/") - res.should.be.ok - res["X-Position"].should.equal "default.org" - - res = Rack::MockRequest.new(map).get("/", "HTTP_HOST" => "bar.org") - res.should.be.ok - res["X-Position"].should.equal "bar.org" - - res = Rack::MockRequest.new(map).get("/", "HTTP_HOST" => "foo.org") - res.should.be.ok - res["X-Position"].should.equal "foo.org" - - res = Rack::MockRequest.new(map).get("/", "HTTP_HOST" => "subdomain.foo.org", "SERVER_NAME" => "foo.org") - res.should.be.ok - res["X-Position"].should.equal "subdomain.foo.org" - - res = Rack::MockRequest.new(map).get("http://foo.org/") - res.should.be.ok - res["X-Position"].should.equal "default.org" - - res = Rack::MockRequest.new(map).get("/", "HTTP_HOST" => "example.org") - res.should.be.ok - res["X-Position"].should.equal "default.org" - - res = Rack::MockRequest.new(map).get("/", - "HTTP_HOST" => "example.org:9292", - "SERVER_PORT" => "9292") - res.should.be.ok - res["X-Position"].should.equal "default.org" - end - - specify "should be nestable" do - map = Rack::URLMap.new("/foo" => - Rack::URLMap.new("/bar" => - Rack::URLMap.new("/quux" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "/foo/bar/quux", - "X-PathInfo" => env["PATH_INFO"], - "X-ScriptName" => env["SCRIPT_NAME"], - }, [""]]} - ))) - - res = Rack::MockRequest.new(map).get("/foo/bar") - res.should.be.not_found - - res = Rack::MockRequest.new(map).get("/foo/bar/quux") - res.should.be.ok - res["X-Position"].should.equal "/foo/bar/quux" - res["X-PathInfo"].should.equal "" - res["X-ScriptName"].should.equal "/foo/bar/quux" - end - - specify "should route root apps correctly" do - map = Rack::URLMap.new("/" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "root", - "X-PathInfo" => env["PATH_INFO"], - "X-ScriptName" => env["SCRIPT_NAME"] - }, [""]]}, - "/foo" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "foo", - "X-PathInfo" => env["PATH_INFO"], - "X-ScriptName" => env["SCRIPT_NAME"] - }, [""]]} - ) - - res = Rack::MockRequest.new(map).get("/foo/bar") - res.should.be.ok - res["X-Position"].should.equal "foo" - res["X-PathInfo"].should.equal "/bar" - res["X-ScriptName"].should.equal "/foo" - - res = Rack::MockRequest.new(map).get("/foo") - res.should.be.ok - res["X-Position"].should.equal "foo" - res["X-PathInfo"].should.equal "" - res["X-ScriptName"].should.equal "/foo" - - res = Rack::MockRequest.new(map).get("/bar") - res.should.be.ok - res["X-Position"].should.equal "root" - res["X-PathInfo"].should.equal "/bar" - res["X-ScriptName"].should.equal "" - - res = Rack::MockRequest.new(map).get("") - res.should.be.ok - res["X-Position"].should.equal "root" - res["X-PathInfo"].should.equal "/" - res["X-ScriptName"].should.equal "" - end - - specify "should not squeeze slashes" do - map = Rack::URLMap.new("/" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "root", - "X-PathInfo" => env["PATH_INFO"], - "X-ScriptName" => env["SCRIPT_NAME"] - }, [""]]}, - "/foo" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "foo", - "X-PathInfo" => env["PATH_INFO"], - "X-ScriptName" => env["SCRIPT_NAME"] - }, [""]]} - ) - - res = Rack::MockRequest.new(map).get("/http://example.org/bar") - res.should.be.ok - res["X-Position"].should.equal "root" - res["X-PathInfo"].should.equal "/http://example.org/bar" - res["X-ScriptName"].should.equal "" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_utils.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_utils.rb deleted file mode 100644 index 269a52bd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_utils.rb +++ /dev/null @@ -1,552 +0,0 @@ -require 'test/spec' - -require 'rack/utils' -require 'rack/lint' -require 'rack/mock' - -context "Rack::Utils" do - specify "should escape correctly" do - Rack::Utils.escape("fobar").should.equal "fo%3Co%3Ebar" - Rack::Utils.escape("a space").should.equal "a+space" - Rack::Utils.escape("q1!2\"'w$5&7/z8)?\\"). - should.equal "q1%212%22%27w%245%267%2Fz8%29%3F%5C" - end - - specify "should escape correctly for multibyte characters" do - matz_name = "\xE3\x81\xBE\xE3\x81\xA4\xE3\x82\x82\xE3\x81\xA8".unpack("a*")[0] # Matsumoto - matz_name.force_encoding("UTF-8") if matz_name.respond_to? :force_encoding - Rack::Utils.escape(matz_name).should.equal '%E3%81%BE%E3%81%A4%E3%82%82%E3%81%A8' - matz_name_sep = "\xE3\x81\xBE\xE3\x81\xA4 \xE3\x82\x82\xE3\x81\xA8".unpack("a*")[0] # Matsu moto - matz_name_sep.force_encoding("UTF-8") if matz_name_sep.respond_to? :force_encoding - Rack::Utils.escape(matz_name_sep).should.equal '%E3%81%BE%E3%81%A4+%E3%82%82%E3%81%A8' - end - - specify "should unescape correctly" do - Rack::Utils.unescape("fo%3Co%3Ebar").should.equal "fobar" - Rack::Utils.unescape("a+space").should.equal "a space" - Rack::Utils.unescape("a%20space").should.equal "a space" - Rack::Utils.unescape("q1%212%22%27w%245%267%2Fz8%29%3F%5C"). - should.equal "q1!2\"'w$5&7/z8)?\\" - end - - specify "should parse query strings correctly" do - Rack::Utils.parse_query("foo=bar"). - should.equal "foo" => "bar" - Rack::Utils.parse_query("foo=\"bar\""). - should.equal "foo" => "bar" - Rack::Utils.parse_query("foo=bar&foo=quux"). - should.equal "foo" => ["bar", "quux"] - Rack::Utils.parse_query("foo=1&bar=2"). - should.equal "foo" => "1", "bar" => "2" - Rack::Utils.parse_query("my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F"). - should.equal "my weird field" => "q1!2\"'w$5&7/z8)?" - Rack::Utils.parse_query("foo%3Dbaz=bar").should.equal "foo=baz" => "bar" - end - - specify "should parse nested query strings correctly" do - Rack::Utils.parse_nested_query("foo"). - should.equal "foo" => nil - Rack::Utils.parse_nested_query("foo="). - should.equal "foo" => "" - Rack::Utils.parse_nested_query("foo=bar"). - should.equal "foo" => "bar" - Rack::Utils.parse_nested_query("foo=\"bar\""). - should.equal "foo" => "bar" - - Rack::Utils.parse_nested_query("foo=bar&foo=quux"). - should.equal "foo" => "quux" - Rack::Utils.parse_nested_query("foo&foo="). - should.equal "foo" => "" - Rack::Utils.parse_nested_query("foo=1&bar=2"). - should.equal "foo" => "1", "bar" => "2" - Rack::Utils.parse_nested_query("&foo=1&&bar=2"). - should.equal "foo" => "1", "bar" => "2" - Rack::Utils.parse_nested_query("foo&bar="). - should.equal "foo" => nil, "bar" => "" - Rack::Utils.parse_nested_query("foo=bar&baz="). - should.equal "foo" => "bar", "baz" => "" - Rack::Utils.parse_nested_query("my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F"). - should.equal "my weird field" => "q1!2\"'w$5&7/z8)?" - - Rack::Utils.parse_nested_query("foo[]"). - should.equal "foo" => [nil] - Rack::Utils.parse_nested_query("foo[]="). - should.equal "foo" => [""] - Rack::Utils.parse_nested_query("foo[]=bar"). - should.equal "foo" => ["bar"] - - Rack::Utils.parse_nested_query("foo[]=1&foo[]=2"). - should.equal "foo" => ["1", "2"] - Rack::Utils.parse_nested_query("foo=bar&baz[]=1&baz[]=2&baz[]=3"). - should.equal "foo" => "bar", "baz" => ["1", "2", "3"] - Rack::Utils.parse_nested_query("foo[]=bar&baz[]=1&baz[]=2&baz[]=3"). - should.equal "foo" => ["bar"], "baz" => ["1", "2", "3"] - - Rack::Utils.parse_nested_query("x[y][z]=1"). - should.equal "x" => {"y" => {"z" => "1"}} - Rack::Utils.parse_nested_query("x[y][z][]=1"). - should.equal "x" => {"y" => {"z" => ["1"]}} - Rack::Utils.parse_nested_query("x[y][z]=1&x[y][z]=2"). - should.equal "x" => {"y" => {"z" => "2"}} - Rack::Utils.parse_nested_query("x[y][z][]=1&x[y][z][]=2"). - should.equal "x" => {"y" => {"z" => ["1", "2"]}} - - Rack::Utils.parse_nested_query("x[y][][z]=1"). - should.equal "x" => {"y" => [{"z" => "1"}]} - Rack::Utils.parse_nested_query("x[y][][z][]=1"). - should.equal "x" => {"y" => [{"z" => ["1"]}]} - Rack::Utils.parse_nested_query("x[y][][z]=1&x[y][][w]=2"). - should.equal "x" => {"y" => [{"z" => "1", "w" => "2"}]} - - Rack::Utils.parse_nested_query("x[y][][v][w]=1"). - should.equal "x" => {"y" => [{"v" => {"w" => "1"}}]} - Rack::Utils.parse_nested_query("x[y][][z]=1&x[y][][v][w]=2"). - should.equal "x" => {"y" => [{"z" => "1", "v" => {"w" => "2"}}]} - - Rack::Utils.parse_nested_query("x[y][][z]=1&x[y][][z]=2"). - should.equal "x" => {"y" => [{"z" => "1"}, {"z" => "2"}]} - Rack::Utils.parse_nested_query("x[y][][z]=1&x[y][][w]=a&x[y][][z]=2&x[y][][w]=3"). - should.equal "x" => {"y" => [{"z" => "1", "w" => "a"}, {"z" => "2", "w" => "3"}]} - - lambda { Rack::Utils.parse_nested_query("x[y]=1&x[y]z=2") }. - should.raise(TypeError). - message.should.equal "expected Hash (got String) for param `y'" - - lambda { Rack::Utils.parse_nested_query("x[y]=1&x[]=1") }. - should.raise(TypeError). - message.should.equal "expected Array (got Hash) for param `x'" - - lambda { Rack::Utils.parse_nested_query("x[y]=1&x[y][][w]=2") }. - should.raise(TypeError). - message.should.equal "expected Array (got String) for param `y'" - end - - specify "should build query strings correctly" do - Rack::Utils.build_query("foo" => "bar").should.equal "foo=bar" - Rack::Utils.build_query("foo" => ["bar", "quux"]). - should.equal "foo=bar&foo=quux" - Rack::Utils.build_query("foo" => "1", "bar" => "2"). - should.equal "foo=1&bar=2" - Rack::Utils.build_query("my weird field" => "q1!2\"'w$5&7/z8)?"). - should.equal "my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F" - end - - specify "should build nested query strings correctly" do - Rack::Utils.build_nested_query("foo" => nil).should.equal "foo" - Rack::Utils.build_nested_query("foo" => "").should.equal "foo=" - Rack::Utils.build_nested_query("foo" => "bar").should.equal "foo=bar" - - Rack::Utils.build_nested_query("foo" => "1", "bar" => "2"). - should.equal "foo=1&bar=2" - Rack::Utils.build_nested_query("my weird field" => "q1!2\"'w$5&7/z8)?"). - should.equal "my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F" - - Rack::Utils.build_nested_query("foo" => [nil]). - should.equal "foo[]" - Rack::Utils.build_nested_query("foo" => [""]). - should.equal "foo[]=" - Rack::Utils.build_nested_query("foo" => ["bar"]). - should.equal "foo[]=bar" - - # The ordering of the output query string is unpredictable with 1.8's - # unordered hash. Test that build_nested_query performs the inverse - # function of parse_nested_query. - [{"foo" => nil, "bar" => ""}, - {"foo" => "bar", "baz" => ""}, - {"foo" => ["1", "2"]}, - {"foo" => "bar", "baz" => ["1", "2", "3"]}, - {"foo" => ["bar"], "baz" => ["1", "2", "3"]}, - {"foo" => ["1", "2"]}, - {"foo" => "bar", "baz" => ["1", "2", "3"]}, - {"x" => {"y" => {"z" => "1"}}}, - {"x" => {"y" => {"z" => ["1"]}}}, - {"x" => {"y" => {"z" => ["1", "2"]}}}, - {"x" => {"y" => [{"z" => "1"}]}}, - {"x" => {"y" => [{"z" => ["1"]}]}}, - {"x" => {"y" => [{"z" => "1", "w" => "2"}]}}, - {"x" => {"y" => [{"v" => {"w" => "1"}}]}}, - {"x" => {"y" => [{"z" => "1", "v" => {"w" => "2"}}]}}, - {"x" => {"y" => [{"z" => "1"}, {"z" => "2"}]}}, - {"x" => {"y" => [{"z" => "1", "w" => "a"}, {"z" => "2", "w" => "3"}]}} - ].each { |params| - qs = Rack::Utils.build_nested_query(params) - Rack::Utils.parse_nested_query(qs).should.equal params - } - - lambda { Rack::Utils.build_nested_query("foo=bar") }. - should.raise(ArgumentError). - message.should.equal "value must be a Hash" - end - - specify "should figure out which encodings are acceptable" do - helper = lambda do |a, b| - request = Rack::Request.new(Rack::MockRequest.env_for("", "HTTP_ACCEPT_ENCODING" => a)) - Rack::Utils.select_best_encoding(a, b) - end - - helper.call(%w(), [["x", 1]]).should.equal(nil) - helper.call(%w(identity), [["identity", 0.0]]).should.equal(nil) - helper.call(%w(identity), [["*", 0.0]]).should.equal(nil) - - helper.call(%w(identity), [["compress", 1.0], ["gzip", 1.0]]).should.equal("identity") - - helper.call(%w(compress gzip identity), [["compress", 1.0], ["gzip", 1.0]]).should.equal("compress") - helper.call(%w(compress gzip identity), [["compress", 0.5], ["gzip", 1.0]]).should.equal("gzip") - - helper.call(%w(foo bar identity), []).should.equal("identity") - helper.call(%w(foo bar identity), [["*", 1.0]]).should.equal("foo") - helper.call(%w(foo bar identity), [["*", 1.0], ["foo", 0.9]]).should.equal("bar") - - helper.call(%w(foo bar identity), [["foo", 0], ["bar", 0]]).should.equal("identity") - helper.call(%w(foo bar baz identity), [["*", 0], ["identity", 0.1]]).should.equal("identity") - end - - specify "should return the bytesize of String" do - Rack::Utils.bytesize("FOO\xE2\x82\xAC").should.equal 6 - end - - specify "should return status code for integer" do - Rack::Utils.status_code(200).should.equal 200 - end - - specify "should return status code for string" do - Rack::Utils.status_code("200").should.equal 200 - end - - specify "should return status code for symbol" do - Rack::Utils.status_code(:ok).should.equal 200 - end -end - -context "Rack::Utils::HeaderHash" do - specify "should retain header case" do - h = Rack::Utils::HeaderHash.new("Content-MD5" => "d5ff4e2a0 ...") - h['ETag'] = 'Boo!' - h.to_hash.should.equal "Content-MD5" => "d5ff4e2a0 ...", "ETag" => 'Boo!' - end - - specify "should check existence of keys case insensitively" do - h = Rack::Utils::HeaderHash.new("Content-MD5" => "d5ff4e2a0 ...") - h.should.include 'content-md5' - h.should.not.include 'ETag' - end - - specify "should merge case-insensitively" do - h = Rack::Utils::HeaderHash.new("ETag" => 'HELLO', "content-length" => '123') - merged = h.merge("Etag" => 'WORLD', 'Content-Length' => '321', "Foo" => 'BAR') - merged.should.equal "Etag"=>'WORLD', "Content-Length"=>'321', "Foo"=>'BAR' - end - - specify "should overwrite case insensitively and assume the new key's case" do - h = Rack::Utils::HeaderHash.new("Foo-Bar" => "baz") - h["foo-bar"] = "bizzle" - h["FOO-BAR"].should.equal "bizzle" - h.length.should.equal 1 - h.to_hash.should.equal "foo-bar" => "bizzle" - end - - specify "should be converted to real Hash" do - h = Rack::Utils::HeaderHash.new("foo" => "bar") - h.to_hash.should.be.instance_of Hash - end - - specify "should convert Array values to Strings when converting to Hash" do - h = Rack::Utils::HeaderHash.new("foo" => ["bar", "baz"]) - h.to_hash.should.equal({ "foo" => "bar\nbaz" }) - end - - specify "should replace hashes correctly" do - h = Rack::Utils::HeaderHash.new("Foo-Bar" => "baz") - j = {"foo" => "bar"} - h.replace(j) - h["foo"].should.equal "bar" - end - - specify "should be able to delete the given key case-sensitively" do - h = Rack::Utils::HeaderHash.new("foo" => "bar") - h.delete("foo") - h["foo"].should.be.nil - h["FOO"].should.be.nil - end - - specify "should be able to delete the given key case-insensitively" do - h = Rack::Utils::HeaderHash.new("foo" => "bar") - h.delete("FOO") - h["foo"].should.be.nil - h["FOO"].should.be.nil - end - - specify "should return the deleted value when #delete is called on an existing key" do - h = Rack::Utils::HeaderHash.new("foo" => "bar") - h.delete("Foo").should.equal("bar") - end - - specify "should return nil when #delete is called on a non-existant key" do - h = Rack::Utils::HeaderHash.new("foo" => "bar") - h.delete("Hello").should.be.nil - end - - specify "should avoid unnecessary object creation if possible" do - a = Rack::Utils::HeaderHash.new("foo" => "bar") - b = Rack::Utils::HeaderHash.new(a) - b.object_id.should.equal(a.object_id) - b.should.equal(a) - end - - specify "should convert Array values to Strings when responding to #each" do - h = Rack::Utils::HeaderHash.new("foo" => ["bar", "baz"]) - h.each do |k,v| - k.should.equal("foo") - v.should.equal("bar\nbaz") - end - end - -end - -context "Rack::Utils::Context" do - class ContextTest - attr_reader :app - def initialize app; @app=app; end - def call env; context env; end - def context env, app=@app; app.call(env); end - end - test_target1 = proc{|e| e.to_s+' world' } - test_target2 = proc{|e| e.to_i+2 } - test_target3 = proc{|e| nil } - test_target4 = proc{|e| [200,{'Content-Type'=>'text/plain', 'Content-Length'=>'0'},['']] } - test_app = ContextTest.new test_target4 - - specify "should set context correctly" do - test_app.app.should.equal test_target4 - c1 = Rack::Utils::Context.new(test_app, test_target1) - c1.for.should.equal test_app - c1.app.should.equal test_target1 - c2 = Rack::Utils::Context.new(test_app, test_target2) - c2.for.should.equal test_app - c2.app.should.equal test_target2 - end - - specify "should alter app on recontexting" do - c1 = Rack::Utils::Context.new(test_app, test_target1) - c2 = c1.recontext(test_target2) - c2.for.should.equal test_app - c2.app.should.equal test_target2 - c3 = c2.recontext(test_target3) - c3.for.should.equal test_app - c3.app.should.equal test_target3 - end - - specify "should run different apps" do - c1 = Rack::Utils::Context.new test_app, test_target1 - c2 = c1.recontext test_target2 - c3 = c2.recontext test_target3 - c4 = c3.recontext test_target4 - a4 = Rack::Lint.new c4 - a5 = Rack::Lint.new test_app - r1 = c1.call('hello') - r1.should.equal 'hello world' - r2 = c2.call(2) - r2.should.equal 4 - r3 = c3.call(:misc_symbol) - r3.should.be.nil - r4 = Rack::MockRequest.new(a4).get('/') - r4.status.should.be 200 - r5 = Rack::MockRequest.new(a5).get('/') - r5.status.should.be 200 - r4.body.should.equal r5.body - end -end - -context "Rack::Utils::Multipart" do - specify "should return nil if content type is not multipart" do - env = Rack::MockRequest.env_for("/", - "CONTENT_TYPE" => 'application/x-www-form-urlencoded') - Rack::Utils::Multipart.parse_multipart(env).should.equal nil - end - - specify "should parse multipart upload with text file" do - env = Rack::MockRequest.env_for("/", multipart_fixture(:text)) - params = Rack::Utils::Multipart.parse_multipart(env) - params["submit-name"].should.equal "Larry" - params["files"][:type].should.equal "text/plain" - params["files"][:filename].should.equal "file1.txt" - params["files"][:head].should.equal "Content-Disposition: form-data; " + - "name=\"files\"; filename=\"file1.txt\"\r\n" + - "Content-Type: text/plain\r\n" - params["files"][:name].should.equal "files" - params["files"][:tempfile].read.should.equal "contents" - end - - specify "should parse multipart upload with nested parameters" do - env = Rack::MockRequest.env_for("/", multipart_fixture(:nested)) - params = Rack::Utils::Multipart.parse_multipart(env) - params["foo"]["submit-name"].should.equal "Larry" - params["foo"]["files"][:type].should.equal "text/plain" - params["foo"]["files"][:filename].should.equal "file1.txt" - params["foo"]["files"][:head].should.equal "Content-Disposition: form-data; " + - "name=\"foo[files]\"; filename=\"file1.txt\"\r\n" + - "Content-Type: text/plain\r\n" - params["foo"]["files"][:name].should.equal "foo[files]" - params["foo"]["files"][:tempfile].read.should.equal "contents" - end - - specify "should parse multipart upload with binary file" do - env = Rack::MockRequest.env_for("/", multipart_fixture(:binary)) - params = Rack::Utils::Multipart.parse_multipart(env) - params["submit-name"].should.equal "Larry" - params["files"][:type].should.equal "image/png" - params["files"][:filename].should.equal "rack-logo.png" - params["files"][:head].should.equal "Content-Disposition: form-data; " + - "name=\"files\"; filename=\"rack-logo.png\"\r\n" + - "Content-Type: image/png\r\n" - params["files"][:name].should.equal "files" - params["files"][:tempfile].read.length.should.equal 26473 - end - - specify "should parse multipart upload with empty file" do - env = Rack::MockRequest.env_for("/", multipart_fixture(:empty)) - params = Rack::Utils::Multipart.parse_multipart(env) - params["submit-name"].should.equal "Larry" - params["files"][:type].should.equal "text/plain" - params["files"][:filename].should.equal "file1.txt" - params["files"][:head].should.equal "Content-Disposition: form-data; " + - "name=\"files\"; filename=\"file1.txt\"\r\n" + - "Content-Type: text/plain\r\n" - params["files"][:name].should.equal "files" - params["files"][:tempfile].read.should.equal "" - end - - specify "should parse multipart upload with filename with semicolons" do - env = Rack::MockRequest.env_for("/", multipart_fixture(:semicolon)) - params = Rack::Utils::Multipart.parse_multipart(env) - params["files"][:type].should.equal "text/plain" - params["files"][:filename].should.equal "fi;le1.txt" - params["files"][:head].should.equal "Content-Disposition: form-data; " + - "name=\"files\"; filename=\"fi;le1.txt\"\r\n" + - "Content-Type: text/plain\r\n" - params["files"][:name].should.equal "files" - params["files"][:tempfile].read.should.equal "contents" - end - - specify "should not include file params if no file was selected" do - env = Rack::MockRequest.env_for("/", multipart_fixture(:none)) - params = Rack::Utils::Multipart.parse_multipart(env) - params["submit-name"].should.equal "Larry" - params["files"].should.equal nil - params.keys.should.not.include "files" - end - - specify "should parse IE multipart upload and clean up filename" do - env = Rack::MockRequest.env_for("/", multipart_fixture(:ie)) - params = Rack::Utils::Multipart.parse_multipart(env) - params["files"][:type].should.equal "text/plain" - params["files"][:filename].should.equal "file1.txt" - params["files"][:head].should.equal "Content-Disposition: form-data; " + - "name=\"files\"; " + - 'filename="C:\Documents and Settings\Administrator\Desktop\file1.txt"' + - "\r\nContent-Type: text/plain\r\n" - params["files"][:name].should.equal "files" - params["files"][:tempfile].read.should.equal "contents" - end - - specify "rewinds input after parsing upload" do - options = multipart_fixture(:text) - input = options[:input] - env = Rack::MockRequest.env_for("/", options) - params = Rack::Utils::Multipart.parse_multipart(env) - params["submit-name"].should.equal "Larry" - params["files"][:filename].should.equal "file1.txt" - input.read.length.should.equal 197 - end - - specify "builds multipart body" do - files = Rack::Utils::Multipart::UploadedFile.new(multipart_file("file1.txt")) - data = Rack::Utils::Multipart.build_multipart("submit-name" => "Larry", "files" => files) - - options = { - "CONTENT_TYPE" => "multipart/form-data; boundary=AaB03x", - "CONTENT_LENGTH" => data.length.to_s, - :input => StringIO.new(data) - } - env = Rack::MockRequest.env_for("/", options) - params = Rack::Utils::Multipart.parse_multipart(env) - params["submit-name"].should.equal "Larry" - params["files"][:filename].should.equal "file1.txt" - params["files"][:tempfile].read.should.equal "contents" - end - - specify "builds nested multipart body" do - files = Rack::Utils::Multipart::UploadedFile.new(multipart_file("file1.txt")) - data = Rack::Utils::Multipart.build_multipart("people" => [{"submit-name" => "Larry", "files" => files}]) - - options = { - "CONTENT_TYPE" => "multipart/form-data; boundary=AaB03x", - "CONTENT_LENGTH" => data.length.to_s, - :input => StringIO.new(data) - } - env = Rack::MockRequest.env_for("/", options) - params = Rack::Utils::Multipart.parse_multipart(env) - params["people"][0]["submit-name"].should.equal "Larry" - params["people"][0]["files"][:filename].should.equal "file1.txt" - params["people"][0]["files"][:tempfile].read.should.equal "contents" - end - - specify "can parse fields that end at the end of the buffer" do - input = File.read(multipart_file("bad_robots")) - - req = Rack::Request.new Rack::MockRequest.env_for("/", - "CONTENT_TYPE" => "multipart/form-data, boundary=1yy3laWhgX31qpiHinh67wJXqKalukEUTvqTzmon", - "CONTENT_LENGTH" => input.size, - :input => input) - - req.POST['file.path'].should.equal "/var/tmp/uploads/4/0001728414" - req.POST['addresses'].should.not.equal nil - end - - specify "builds complete params with the chunk size of 16384 slicing exactly on boundary" do - data = File.open(multipart_file("fail_16384_nofile")) { |f| f.read }.gsub(/\n/, "\r\n") - options = { - "CONTENT_TYPE" => "multipart/form-data; boundary=----WebKitFormBoundaryWsY0GnpbI5U7ztzo", - "CONTENT_LENGTH" => data.length.to_s, - :input => StringIO.new(data) - } - env = Rack::MockRequest.env_for("/", options) - params = Rack::Utils::Multipart.parse_multipart(env) - - params.should.not.equal nil - params.keys.should.include "AAAAAAAAAAAAAAAAAAA" - params["AAAAAAAAAAAAAAAAAAA"].keys.should.include "PLAPLAPLA_MEMMEMMEMM_ATTRATTRER" - params["AAAAAAAAAAAAAAAAAAA"]["PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"].keys.should.include "new" - params["AAAAAAAAAAAAAAAAAAA"]["PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"]["new"].keys.should.include "-2" - params["AAAAAAAAAAAAAAAAAAA"]["PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"]["new"]["-2"].keys.should.include "ba_unit_id" - params["AAAAAAAAAAAAAAAAAAA"]["PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"]["new"]["-2"]["ba_unit_id"].should.equal "1017" - end - - specify "should return nil if no UploadedFiles were used" do - data = Rack::Utils::Multipart.build_multipart("people" => [{"submit-name" => "Larry", "files" => "contents"}]) - data.should.equal nil - end - - specify "should raise ArgumentError if params is not a Hash" do - lambda { Rack::Utils::Multipart.build_multipart("foo=bar") }. - should.raise(ArgumentError). - message.should.equal "value must be a Hash" - end - - private - def multipart_fixture(name) - file = multipart_file(name) - data = File.open(file, 'rb') { |io| io.read } - - type = "multipart/form-data; boundary=AaB03x" - length = data.respond_to?(:bytesize) ? data.bytesize : data.size - - { "CONTENT_TYPE" => type, - "CONTENT_LENGTH" => length.to_s, - :input => StringIO.new(data) } - end - - def multipart_file(name) - File.join(File.dirname(__FILE__), "multipart", name.to_s) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_webrick.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_webrick.rb deleted file mode 100644 index 599425c4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rack_webrick.rb +++ /dev/null @@ -1,130 +0,0 @@ -require 'test/spec' - -require 'rack/handler/webrick' -require 'rack/lint' -require 'rack/response' -require 'testrequest' - -Thread.abort_on_exception = true - -context "Rack::Handler::WEBrick" do - include TestRequest::Helpers - - setup do - @server = WEBrick::HTTPServer.new(:Host => @host='0.0.0.0', - :Port => @port=9202, - :Logger => WEBrick::Log.new(nil, WEBrick::BasicLog::WARN), - :AccessLog => []) - @server.mount "/test", Rack::Handler::WEBrick, - Rack::Lint.new(TestRequest.new) - Thread.new { @server.start } - trap(:INT) { @server.shutdown } - end - - specify "should respond" do - lambda { - GET("/test") - }.should.not.raise - end - - specify "should be a WEBrick" do - GET("/test") - status.should.be 200 - response["SERVER_SOFTWARE"].should =~ /WEBrick/ - response["HTTP_VERSION"].should.equal "HTTP/1.1" - response["SERVER_PROTOCOL"].should.equal "HTTP/1.1" - response["SERVER_PORT"].should.equal "9202" - response["SERVER_NAME"].should.equal "0.0.0.0" - end - - specify "should have rack headers" do - GET("/test") - response["rack.version"].should.equal [1,1] - response["rack.multithread"].should.be true - response["rack.multiprocess"].should.be false - response["rack.run_once"].should.be false - end - - specify "should have CGI headers on GET" do - GET("/test") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/" - response["PATH_INFO"].should.be.equal "" - response["QUERY_STRING"].should.equal "" - response["test.postdata"].should.equal "" - - GET("/test/foo?quux=1") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/" - response["PATH_INFO"].should.equal "/foo" - response["QUERY_STRING"].should.equal "quux=1" - - GET("/test/foo%25encoding?quux=1") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/" - response["PATH_INFO"].should.equal "/foo%25encoding" - response["QUERY_STRING"].should.equal "quux=1" - end - - specify "should have CGI headers on POST" do - POST("/test", {"rack-form-data" => "23"}, {'X-test-header' => '42'}) - status.should.equal 200 - response["REQUEST_METHOD"].should.equal "POST" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/" - response["QUERY_STRING"].should.equal "" - response["HTTP_X_TEST_HEADER"].should.equal "42" - response["test.postdata"].should.equal "rack-form-data=23" - end - - specify "should support HTTP auth" do - GET("/test", {:user => "ruth", :passwd => "secret"}) - response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ=" - end - - specify "should set status" do - GET("/test?secret") - status.should.equal 403 - response["rack.url_scheme"].should.equal "http" - end - - specify "should correctly set cookies" do - @server.mount "/cookie-test", Rack::Handler::WEBrick, - Rack::Lint.new(lambda { |req| - res = Rack::Response.new - res.set_cookie "one", "1" - res.set_cookie "two", "2" - res.finish - }) - - Net::HTTP.start(@host, @port) { |http| - res = http.get("/cookie-test") - res.code.to_i.should.equal 200 - res.get_fields("set-cookie").should.equal ["one=1", "two=2"] - } - end - - specify "should provide a .run" do - block_ran = false - catch(:done) { - Rack::Handler::WEBrick.run(lambda {}, - {:Port => 9210, - :Logger => WEBrick::Log.new(nil, WEBrick::BasicLog::WARN), - :AccessLog => []}) { |server| - block_ran = true - server.should.be.kind_of WEBrick::HTTPServer - @s = server - throw :done - } - } - block_ran.should.be true - @s.shutdown - end - - teardown do - @server.shutdown - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rackup.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rackup.rb deleted file mode 100644 index d9926fda..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-1.1.0/test/spec_rackup.rb +++ /dev/null @@ -1,154 +0,0 @@ -require 'test/spec' -require 'testrequest' -require 'rack/server' -require 'open3' - -begin -require "mongrel" - -context "rackup" do - include TestRequest::Helpers - - def run_rackup(*args) - options = args.last.is_a?(Hash) ? args.pop : {} - flags = args.first - @host = options[:host] || "0.0.0.0" - @port = options[:port] || 9292 - - Dir.chdir("#{root}/test/rackup") do - @in, @rackup, @err = Open3.popen3("#{Gem.ruby} -S #{rackup} #{flags}") - end - - return if options[:port] == false - - # Wait until the server is available - begin - GET("/") - rescue - sleep 0.05 - retry - end - end - - def output - @rackup.read - end - - after do - # This doesn't actually return a response, so we rescue - GET "/die" rescue nil - - Dir["#{root}/**/*.pid"].each do |file| - File.delete(file) - end - - File.delete("#{root}/log_output") if File.exist?("#{root}/log_output") - end - - specify "rackup" do - run_rackup - response["PATH_INFO"].should.equal '/' - response["test.$DEBUG"].should.be false - response["test.$EVAL"].should.be nil - response["test.$VERBOSE"].should.be false - response["test.Ping"].should.be nil - response["SERVER_SOFTWARE"].should.not =~ /webrick/ - end - - specify "rackup --help" do - run_rackup "--help", :port => false - output.should.match /--port/ - end - - specify "rackup --port" do - run_rackup "--port 9000", :port => 9000 - response["SERVER_PORT"].should.equal "9000" - end - - specify "rackup --debug" do - run_rackup "--debug" - response["test.$DEBUG"].should.be true - end - - specify "rackup --eval" do - run_rackup %{--eval "BUKKIT = 'BUKKIT'"} - response["test.$EVAL"].should.equal "BUKKIT" - end - - specify "rackup --warn" do - run_rackup %{--warn} - response["test.$VERBOSE"].should.be true - end - - specify "rackup --include" do - run_rackup %{--include /foo/bar} - response["test.$LOAD_PATH"].should.include "/foo/bar" - end - - specify "rackup --require" do - run_rackup %{--require ping} - response["test.Ping"].should.equal "constant" - end - - specify "rackup --server" do - run_rackup %{--server webrick} - response["SERVER_SOFTWARE"].should =~ /webrick/i - end - - specify "rackup --host" do - run_rackup %{--host 127.0.0.1}, :host => "127.0.0.1" - response["REMOTE_ADDR"].should.equal "127.0.0.1" - end - - specify "rackup --daemonize --pid" do - run_rackup %{--daemonize --pid testing.pid} - status.should.be 200 - @rackup.should.be.eof? - Dir["#{root}/**/testing.pid"].should.not.be.empty? - end - - specify "rackup --pid" do - run_rackup %{--pid testing.pid} - status.should.be 200 - Dir["#{root}/**/testing.pid"].should.not.be.empty? - end - - specify "rackup --version" do - run_rackup %{--version}, :port => false - output.should =~ /1.0/ - end - - specify "rackup --env development includes lint" do - run_rackup - GET("/broken_lint") - status.should.be 500 - end - - specify "rackup --env deployment does not include lint" do - run_rackup %{--env deployment} - GET("/broken_lint") - status.should.be 200 - end - - specify "rackup --env none does not include lint" do - run_rackup %{--env none} - GET("/broken_lint") - status.should.be 200 - end - - specify "rackup --env deployment does log" do - run_rackup %{--env deployment} - log = File.read(response["test.stderr"]) - log.should.be.empty? - end - - specify "rackup --env none does not log" do - run_rackup %{--env none} - GET("/") - log = File.read(response["test.stderr"]) - log.should.be.empty? - end -end -rescue LoadError - $stderr.puts "Skipping rackup --server tests (mongrel is required). `gem install thin` and try again." -end \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/.document b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/.document deleted file mode 100644 index fa1ded68..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/.document +++ /dev/null @@ -1,4 +0,0 @@ -README.rdoc -lib/**/*.rb -History.txt -MIT-LICENSE.txt diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/.gitignore b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/.gitignore deleted file mode 100644 index 68dc26ad..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -pkg -doc -coverage -VERSION diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/History.txt b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/History.txt deleted file mode 100644 index 60d4d357..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/History.txt +++ /dev/null @@ -1,107 +0,0 @@ -== 0.5.3 / 2009-11-27 - -* Bug fixes - - * Fix cookie matching for subdomains (Marcin Kulik) - -== 0.5.2 / 2009-11-13 - -* Bug fixes - - * Call close on response body after iteration, not before (Simon Rozet) - * Add missing require for time in cookie_jar.rb (Jerry West) - -== 0.5.1 / 2009-10-27 - -* Bug fixes - - * Escape cookie values (John Pignata) - * Close the response body after each request, as per the Rack spec (Elomar França) - -== 0.5.0 / 2009-09-19 - -* Bug fixes - - * Set HTTP_X_REQUESTED_WITH in the Rack env when a request is made with :xhr => true (Ben Sales) - * Set headers in the Rack env in HTTP_USER_AGENT form - * Rack::Test now generates no Ruby warnings - -== 0.4.2 / 2009-09-01 - -* Minor enhancements - - * Merge in rack/master's build_multipart method which covers additional cases - * Accept raw :params string input and merge it with the query string - * Stringify and upcase request method (e.g. :post => "POST") (Josh Peek) - -* Bug fixes - - * Properly convert hashes with nil values (e.g. :foo => nil becomes simply "foo", not "foo=") - * Prepend a slash to the URI path if it doesn't start with one (Josh Peek) - * Requiring Rack-Test never modifies the Ruby load path anymore (Josh Peek) - * Fixed using multiple cookies in a string on Ruby 1.8 (Tuomas Kareinen and Hermanni Hyytiälä) - -== 0.4.1 / 2009-08-06 - -* Minor enhancements - - * Support initializing a Rack::Test::Session with an app in addition to - a Rack::MockSession - * Allow CONTENT_TYPE to be specified in the env and not overwritten when - sending a POST or PUT - -== 0.4.0 / 2009-06-25 - -* Minor enhancements - - * Expose hook for building Rack::MockSessions for frameworks that need - to configure them before use - * Support passing in arrays of raw cookies in addition to a newline - separated string - * Support after_request callbacks in MockSession for things like running - background jobs - * Allow multiple named sessions using with_session - * Initialize Rack::Test::Sessions with Rack::MockSessions instead of apps. - This change should help integration with other Ruby web frameworks - (like Merb). - * Support sending bodies for PUT requests (Larry Diehl) - -== 0.3.0 / 2009-05-17 - -* Major enhancements - - * Ruby 1.9 compatible (Simon Rozet, Michael Fellinger) - -* Minor enhancements - - * Add CookieJar#[] and CookieJar#[]= methods - * Make the default host configurable - * Use Rack::Lint and fix errors (Simon Rozet) - * Extract Rack::MockSession from Rack::Test::Session to handle tracking - the last request and response and the cookie jar - * Add #set_cookie and #clear_cookies methods - * Rename #authorize to #basic_authorize (#authorize remains as an alias) - (Simon Rozet) - -== 0.2.0 / 2009-04-26 - -Because #last_response is now a MockResponse instead of a Rack::Response, -#last_response.body now returns a string instead of an array. - -* Major enhancements - - * Support multipart requests via the UploadedFile class (thanks, Rails) - -* Minor enhancements - - * Updated for Rack 1.0 - * Don't require rubygems (See http://gist.github.com/54177) - * Support HTTP Digest authentication with the #digest_authorize method - * #last_response returns a MockResponse instead of a Response - (Michael Fellinger) - -== 0.1.0 / 2009-03-02 - -* 1 major enhancement - - * Birthday! diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/MIT-LICENSE.txt b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/MIT-LICENSE.txt deleted file mode 100644 index f387441c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/MIT-LICENSE.txt +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2008-2009 Bryan Helmkamp, Engine Yard Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/README.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/README.rdoc deleted file mode 100644 index 43c54abc..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/README.rdoc +++ /dev/null @@ -1,57 +0,0 @@ -= Rack::Test - -- Code: http://github.com/brynary/rack-test -- Build: http://runcoderun.com/brynary/rack-test - -== Description - -Rack::Test is a small, simple testing API for Rack apps. It can be used on its -own or as a reusable starting point for Web frameworks and testing libraries -to build on. Most of its initial functionality is an extraction of Merb 1.0's -request helpers feature. - -== Features - -* Maintains a cookie jar across requests -* Easily follow redirects when desired -* Set request headers to be used by all subsequent requests -* Small footprint. Approximately 200 LOC - -== Example - - require "rack/test" - - class HomepageTest < Test::Unit::TestCase - include Rack::Test::Methods - - def app - MyApp.new - end - - def test_redirect_logged_in_users_to_dashboard - authorize "bryan", "secret" - get "/" - follow_redirect! - - assert_equal "http://example.org/redirected", last_request.url - assert last_response.ok? - end - - end - -== Install - -To install the latest release as a gem: - - sudo gem install rack-test - -== Authors - -- Maintained by {Bryan Helmkamp}[mailto:bryan@brynary.com] -- Contributions from Simon Rozet and Pat Nakajima -- Much of the original code was extracted from Merb 1.0's request helper - -== License - -Copyright (c) 2008-2009 Bryan Helmkamp, Engine Yard Inc. -See MIT-LICENSE.txt in this directory. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/Rakefile deleted file mode 100644 index f4a29a15..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/Rakefile +++ /dev/null @@ -1,39 +0,0 @@ -require "rubygems" - -begin - require "spec/rake/spectask" -rescue LoadError - desc "Run specs" - task(:spec) { $stderr.puts '`gem install rspec` to run specs' } -else - Spec::Rake::SpecTask.new do |t| - t.spec_opts = ['--options', "\"#{File.dirname(__FILE__)}/spec/spec.opts\""] - t.libs << 'lib' - t.libs << 'spec' - t.warning = true - end - - task :default => :spec - - desc "Run all specs in spec directory with RCov" - Spec::Rake::SpecTask.new(:rcov) do |t| - t.spec_opts = ['--options', "\"#{File.dirname(__FILE__)}/spec/spec.opts\""] - t.libs << 'lib' - t.libs << 'spec' - t.warning = true - t.rcov = true - t.rcov_opts = ['-x spec'] - end -end - -desc "Generate RDoc" -task :docs do - FileUtils.rm_rf("doc") - require "rack/test" - system "hanna --title 'Rack::Test #{Rack::Test::VERSION} API Documentation'" -end - -desc 'Removes trailing whitespace' -task :whitespace do - sh %{find . -name '*.rb' -exec sed -i '' 's/ *$//g' {} \\;} -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/Thorfile b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/Thorfile deleted file mode 100644 index dc9aaa9a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/Thorfile +++ /dev/null @@ -1,114 +0,0 @@ -module GemHelpers - - def generate_gemspec - $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), "lib"))) - require "rack/test" - - Gem::Specification.new do |s| - s.name = "rack-test" - s.version = Rack::Test::VERSION - s.author = "Bryan Helmkamp" - s.email = "bryan@brynary.com" - s.homepage = "http://github.com/brynary/rack-test" - s.summary = "Simple testing API built on Rack" - s.description = <<-EOS.strip -Rack::Test is a small, simple testing API for Rack apps. It can be used on its -own or as a reusable starting point for Web frameworks and testing libraries -to build on. Most of its initial functionality is an extraction of Merb 1.0's -request helpers feature. - EOS - s.rubyforge_project = "rack-test" - - require "git" - repo = Git.open(".") - - s.files = normalize_files(repo.ls_files.keys - repo.lib.ignored_files) - s.test_files = normalize_files(Dir['spec/**/*.rb'] - repo.lib.ignored_files) - - s.has_rdoc = true - s.extra_rdoc_files = %w[README.rdoc MIT-LICENSE.txt] - - s.add_dependency "rack", ">= 1.0" - end - end - - def normalize_files(array) - # only keep files, no directories, and sort - array.select do |path| - File.file?(path) - end.sort - end - - # Adds extra space when outputting an array. This helps create better version - # control diffs, because otherwise it is all on the same line. - def prettyify_array(gemspec_ruby, array_name) - gemspec_ruby.gsub(/s\.#{array_name.to_s} = \[.+?\]/) do |match| - leadin, files = match[0..-2].split("[") - leadin + "[\n #{files.split(",").join(",\n ")}\n ]" - end - end - - def read_gemspec - @read_gemspec ||= eval(File.read("rack-test.gemspec")) - end - - def sh(command) - puts command - system command - end -end - -class Default < Thor - include GemHelpers - - desc "gemspec", "Regenerate rack-test.gemspec" - def gemspec - File.open("rack-test.gemspec", "w") do |file| - gemspec_ruby = generate_gemspec.to_ruby - gemspec_ruby = prettyify_array(gemspec_ruby, :files) - gemspec_ruby = prettyify_array(gemspec_ruby, :test_files) - gemspec_ruby = prettyify_array(gemspec_ruby, :extra_rdoc_files) - - file.write gemspec_ruby - end - - puts "Wrote gemspec to rack-test.gemspec" - read_gemspec.validate - end - - desc "build", "Build a rack-test gem" - def build - sh "gem build rack-test.gemspec" - FileUtils.mkdir_p "pkg" - FileUtils.mv read_gemspec.file_name, "pkg" - end - - desc "install", "Install the latest built gem" - def install - sh "gem install --local pkg/#{read_gemspec.file_name}" - end - - desc "release", "Release the current branch to GitHub and Gemcutter" - def release - gemspec - build - Release.new.tag - Release.new.gem - end -end - -class Release < Thor - include GemHelpers - - desc "tag", "Tag the gem on the origin server" - def tag - release_tag = "v#{read_gemspec.version}" - sh "git tag -a #{release_tag} -m 'Tagging #{release_tag}'" - sh "git push origin #{release_tag}" - end - - desc "gem", "Push the gem to Gemcutter" - def gem - sh "gem push pkg/#{read_gemspec.file_name}" - end -end \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/mock_session.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/mock_session.rb deleted file mode 100644 index a3f509db..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/mock_session.rb +++ /dev/null @@ -1,61 +0,0 @@ -module Rack - - class MockSession # :nodoc: - attr_writer :cookie_jar - attr_reader :default_host - - def initialize(app, default_host = Rack::Test::DEFAULT_HOST) - @app = app - @after_request = [] - @default_host = default_host - @last_request = nil - @last_response = nil - end - - def after_request(&block) - @after_request << block - end - - def clear_cookies - @cookie_jar = Rack::Test::CookieJar.new([], @default_host) - end - - def set_cookie(cookie, uri = nil) - cookie_jar.merge(cookie, uri) - end - - def request(uri, env) - env["HTTP_COOKIE"] ||= cookie_jar.for(uri) - @last_request = Rack::Request.new(env) - status, headers, body = @app.call(@last_request.env) - - @last_response = MockResponse.new(status, headers, body, env["rack.errors"].flush) - body.close if body.respond_to?(:close) - - cookie_jar.merge(last_response.headers["Set-Cookie"], uri) - - @after_request.each { |hook| hook.call } - @last_response - end - - # Return the last request issued in the session. Raises an error if no - # requests have been sent yet. - def last_request - raise Rack::Test::Error.new("No request yet. Request a page first.") unless @last_request - @last_request - end - - # Return the last response received in the session. Raises an error if - # no requests have been sent yet. - def last_response - raise Rack::Test::Error.new("No response yet. Request a page first.") unless @last_response - @last_response - end - - def cookie_jar - @cookie_jar ||= Rack::Test::CookieJar.new([], @default_host) - end - - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test.rb deleted file mode 100644 index ad25c6a4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test.rb +++ /dev/null @@ -1,276 +0,0 @@ -require "uri" -require "rack" -require "rack/mock_session" -require "rack/test/cookie_jar" -require "rack/test/mock_digest_request" -require "rack/test/utils" -require "rack/test/methods" -require "rack/test/uploaded_file" - -module Rack - module Test - VERSION = "0.5.3" - - DEFAULT_HOST = "example.org" - MULTIPART_BOUNDARY = "----------XnJLe9ZIbbGUYtzPQJ16u1" - - # The common base class for exceptions raised by Rack::Test - class Error < StandardError; end - - # This class represents a series of requests issued to a Rack app, sharing - # a single cookie jar - # - # Rack::Test::Session's methods are most often called through Rack::Test::Methods, - # which will automatically build a session when it's first used. - class Session - extend Forwardable - include Rack::Test::Utils - - def_delegators :@rack_mock_session, :clear_cookies, :set_cookie, :last_response, :last_request - - # Creates a Rack::Test::Session for a given Rack app or Rack::MockSession. - # - # Note: Generally, you won't need to initialize a Rack::Test::Session directly. - # Instead, you should include Rack::Test::Methods into your testing context. - # (See README.rdoc for an example) - def initialize(mock_session) - @headers = {} - - if mock_session.is_a?(MockSession) - @rack_mock_session = mock_session - else - @rack_mock_session = MockSession.new(mock_session) - end - - @default_host = @rack_mock_session.default_host - end - - # Issue a GET request for the given URI with the given params and Rack - # environment. Stores the issues request object in #last_request and - # the app's response in #last_response. Yield #last_response to a block - # if given. - # - # Example: - # get "/" - def get(uri, params = {}, env = {}, &block) - env = env_for(uri, env.merge(:method => "GET", :params => params)) - process_request(uri, env, &block) - end - - # Issue a POST request for the given URI. See #get - # - # Example: - # post "/signup", "name" => "Bryan" - def post(uri, params = {}, env = {}, &block) - env = env_for(uri, env.merge(:method => "POST", :params => params)) - process_request(uri, env, &block) - end - - # Issue a PUT request for the given URI. See #get - # - # Example: - # put "/" - def put(uri, params = {}, env = {}, &block) - env = env_for(uri, env.merge(:method => "PUT", :params => params)) - process_request(uri, env, &block) - end - - # Issue a DELETE request for the given URI. See #get - # - # Example: - # delete "/" - def delete(uri, params = {}, env = {}, &block) - env = env_for(uri, env.merge(:method => "DELETE", :params => params)) - process_request(uri, env, &block) - end - - # Issue a HEAD request for the given URI. See #get - # - # Example: - # head "/" - def head(uri, params = {}, env = {}, &block) - env = env_for(uri, env.merge(:method => "HEAD", :params => params)) - process_request(uri, env, &block) - end - - # Issue a request to the Rack app for the given URI and optional Rack - # environment. Stores the issues request object in #last_request and - # the app's response in #last_response. Yield #last_response to a block - # if given. - # - # Example: - # request "/" - def request(uri, env = {}, &block) - env = env_for(uri, env) - process_request(uri, env, &block) - end - - # Set a header to be included on all subsequent requests through the - # session. Use a value of nil to remove a previously configured header. - # - # In accordance with the Rack spec, headers will be included in the Rack - # environment hash in HTTP_USER_AGENT form. - # - # Example: - # header "User-Agent", "Firefox" - def header(name, value) - if value.nil? - @headers.delete(name) - else - @headers[name] = value - end - end - - # Set the username and password for HTTP Basic authorization, to be - # included in subsequent requests in the HTTP_AUTHORIZATION header. - # - # Example: - # basic_authorize "bryan", "secret" - def basic_authorize(username, password) - encoded_login = ["#{username}:#{password}"].pack("m*") - header('Authorization', "Basic #{encoded_login}") - end - - alias_method :authorize, :basic_authorize - - # Set the username and password for HTTP Digest authorization, to be - # included in subsequent requests in the HTTP_AUTHORIZATION header. - # - # Example: - # digest_authorize "bryan", "secret" - def digest_authorize(username, password) - @digest_username = username - @digest_password = password - end - - # Rack::Test will not follow any redirects automatically. This method - # will follow the redirect returned in the last response. If the last - # response was not a redirect, an error will be raised. - def follow_redirect! - unless last_response.redirect? - raise Error.new("Last response was not a redirect. Cannot follow_redirect!") - end - - get(last_response["Location"]) - end - - private - - def env_for(path, env) - uri = URI.parse(path) - uri.path = "/#{uri.path}" unless uri.path[0] == ?/ - uri.host ||= @default_host - - env = default_env.merge(env) - - env.update("HTTPS" => "on") if URI::HTTPS === uri - env["HTTP_X_REQUESTED_WITH"] = "XMLHttpRequest" if env[:xhr] - - # TODO: Remove this after Rack 1.1 has been released. - # Stringifying and upcasing methods has be commit upstream - env["REQUEST_METHOD"] ||= env[:method] ? env[:method].to_s.upcase : "GET" - - if env["REQUEST_METHOD"] == "GET" - params = env[:params] || {} - params = parse_nested_query(params) if params.is_a?(String) - params.update(parse_query(uri.query)) - uri.query = build_nested_query(params) - elsif !env.has_key?(:input) - env["CONTENT_TYPE"] ||= "application/x-www-form-urlencoded" - - if env[:params].is_a?(Hash) - if data = build_multipart(env[:params]) - env[:input] = data - env["CONTENT_LENGTH"] ||= data.length.to_s - env["CONTENT_TYPE"] = "multipart/form-data; boundary=#{MULTIPART_BOUNDARY}" - else - env[:input] = params_to_string(env[:params]) - end - else - env[:input] = env[:params] - end - end - - env.delete(:params) - - if env.has_key?(:cookie) - set_cookie(env.delete(:cookie), uri) - end - - Rack::MockRequest.env_for(uri.to_s, env) - end - - def process_request(uri, env) - uri = URI.parse(uri) - uri.host ||= @default_host - - @rack_mock_session.request(uri, env) - - if retry_with_digest_auth?(env) - auth_env = env.merge({ - "HTTP_AUTHORIZATION" => digest_auth_header, - "rack-test.digest_auth_retry" => true - }) - auth_env.delete('rack.request') - process_request(uri.path, auth_env) - else - yield last_response if block_given? - - last_response - end - end - - def digest_auth_header - challenge = last_response["WWW-Authenticate"].split(" ", 2).last - params = Rack::Auth::Digest::Params.parse(challenge) - - params.merge!({ - "username" => @digest_username, - "nc" => "00000001", - "cnonce" => "nonsensenonce", - "uri" => last_request.path_info, - "method" => last_request.env["REQUEST_METHOD"], - }) - - params["response"] = MockDigestRequest.new(params).response(@digest_password) - - "Digest #{params}" - end - - def retry_with_digest_auth?(env) - last_response.status == 401 && - digest_auth_configured? && - !env["rack-test.digest_auth_retry"] - end - - def digest_auth_configured? - @digest_username - end - - def default_env - { "rack.test" => true, "REMOTE_ADDR" => "127.0.0.1" }.merge(headers_for_env) - end - - def headers_for_env - converted_headers = {} - - @headers.each do |name, value| - env_key = "HTTP_" + name.upcase.gsub("-", "_") - converted_headers[env_key] = value - end - - converted_headers - end - - def params_to_string(params) - case params - when Hash then build_nested_query(params) - when nil then "" - else params - end - end - - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/cookie_jar.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/cookie_jar.rb deleted file mode 100644 index 8f274020..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/cookie_jar.rb +++ /dev/null @@ -1,172 +0,0 @@ -require "uri" -require "time" - -module Rack - module Test - - class Cookie # :nodoc: - include Rack::Utils - - # :api: private - attr_reader :name, :value - - # :api: private - def initialize(raw, uri = nil, default_host = DEFAULT_HOST) - @default_host = default_host - uri ||= default_uri - - # separate the name / value pair from the cookie options - @name_value_raw, options = raw.split(/[;,] */n, 2) - - @name, @value = parse_query(@name_value_raw, ';').to_a.first - @options = parse_query(options, ';') - - @options["domain"] ||= (uri.host || default_host) - @options["path"] ||= uri.path.sub(/\/[^\/]*\Z/, "") - end - - def replaces?(other) - [name.downcase, domain, path] == [other.name.downcase, other.domain, other.path] - end - - # :api: private - def raw - @name_value_raw - end - - # :api: private - def empty? - @value.nil? || @value.empty? - end - - # :api: private - def domain - @options["domain"] - end - - def secure? - @options.has_key?("secure") - end - - # :api: private - def path - @options["path"].strip || "/" - end - - # :api: private - def expires - Time.parse(@options["expires"]) if @options["expires"] - end - - # :api: private - def expired? - expires && expires < Time.now - end - - # :api: private - def valid?(uri) - uri ||= default_uri - - if uri.host.nil? - uri.host = @default_host - end - - real_domain = domain =~ /^\./ ? domain[1..-1] : domain - (!secure? || (secure? && uri.scheme == "https")) && - uri.host =~ Regexp.new("#{Regexp.escape(real_domain)}$", Regexp::IGNORECASE) && - uri.path =~ Regexp.new("^#{Regexp.escape(path)}") - end - - # :api: private - def matches?(uri) - ! expired? && valid?(uri) - end - - # :api: private - def <=>(other) - # Orders the cookies from least specific to most - [name, path, domain.reverse] <=> [other.name, other.path, other.domain.reverse] - end - - protected - - def default_uri - URI.parse("//" + @default_host + "/") - end - - end - - class CookieJar # :nodoc: - - # :api: private - def initialize(cookies = [], default_host = DEFAULT_HOST) - @default_host = default_host - @cookies = cookies - @cookies.sort! - end - - def [](name) - cookies = hash_for(nil) - # TODO: Should be case insensitive - cookies[name] && cookies[name].value - end - - def []=(name, value) - merge("#{name}=#{Rack::Utils.escape(value)}") - end - - def merge(raw_cookies, uri = nil) - return unless raw_cookies - - raw_cookies = raw_cookies.split("\n") if raw_cookies.is_a? String - raw_cookies.each do |raw_cookie| - cookie = Cookie.new(raw_cookie, uri, @default_host) - self << cookie if cookie.valid?(uri) - end - end - - def <<(new_cookie) - @cookies.reject! do |existing_cookie| - new_cookie.replaces?(existing_cookie) - end - - @cookies << new_cookie - @cookies.sort! - end - - # :api: private - def for(uri) - hash_for(uri).values.map { |c| c.raw }.join(';') - end - - def to_hash - cookies = {} - - hash_for(nil).each do |name, cookie| - cookies[name] = cookie.value - end - - return cookies - end - - protected - - def hash_for(uri = nil) - cookies = {} - - # The cookies are sorted by most specific first. So, we loop through - # all the cookies in order and add it to a hash by cookie name if - # the cookie can be sent to the current URI. It's added to the hash - # so that when we are done, the cookies will be unique by name and - # we'll have grabbed the most specific to the URI. - @cookies.each do |cookie| - cookies[cookie.name] = cookie if cookie.matches?(uri) - end - - return cookies - end - - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/methods.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/methods.rb deleted file mode 100644 index f79669fd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/methods.rb +++ /dev/null @@ -1,80 +0,0 @@ -require "forwardable" - -module Rack - module Test - - # This module serves as the primary integration point for using Rack::Test - # in a testing environment. It depends on an app method being defined in the - # same context, and provides the Rack::Test API methods (see Rack::Test::Session - # for their documentation). - # - # Example: - # - # class HomepageTest < Test::Unit::TestCase - # include Rack::Test::Methods - # - # def app - # MyApp.new - # end - # end - module Methods - extend Forwardable - - def rack_mock_session(name = :default) # :nodoc: - return build_rack_mock_session unless name - - @_rack_mock_sessions ||= {} - @_rack_mock_sessions[name] ||= build_rack_mock_session - end - - def build_rack_mock_session # :nodoc: - Rack::MockSession.new(app) - end - - def rack_test_session(name = :default) # :nodoc: - return build_rack_test_session(name) unless name - - @_rack_test_sessions ||= {} - @_rack_test_sessions[name] ||= build_rack_test_session(name) - end - - def build_rack_test_session(name) # :nodoc: - Rack::Test::Session.new(rack_mock_session(name)) - end - - def current_session # :nodoc: - rack_test_session(_current_session_names.last) - end - - def with_session(name) # :nodoc: - _current_session_names.push(name) - yield rack_test_session(name) - _current_session_names.pop - end - - def _current_session_names # :nodoc: - @_current_session_names ||= [:default] - end - - METHODS = [ - :request, - :get, - :post, - :put, - :delete, - :head, - :follow_redirect!, - :header, - :set_cookie, - :clear_cookies, - :authorize, - :basic_authorize, - :digest_authorize, - :last_response, - :last_request - ] - - def_delegators :current_session, *METHODS - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/mock_digest_request.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/mock_digest_request.rb deleted file mode 100644 index b5764930..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/mock_digest_request.rb +++ /dev/null @@ -1,29 +0,0 @@ -module Rack - module Test - - class MockDigestRequest # :nodoc: - - def initialize(params) - @params = params - end - - def method_missing(sym) - if @params.has_key? k = sym.to_s - return @params[k] - end - - super - end - - def method - @params['method'] - end - - def response(password) - Rack::Auth::Digest::MD5.new(nil).send :digest, self, password - end - - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/uploaded_file.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/uploaded_file.rb deleted file mode 100644 index cd49f26a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/uploaded_file.rb +++ /dev/null @@ -1,46 +0,0 @@ -require "tempfile" -require "fileutils" - -module Rack - module Test - - # Wraps a Tempfile with a content type. Including one or more UploadedFile's - # in the params causes Rack::Test to build and issue a multipart request. - # - # Example: - # post "/photos", "file" => Rack::Test::UploadedFile.new("me.jpg", "image/jpeg") - class UploadedFile - - # The filename, *not* including the path, of the "uploaded" file - attr_reader :original_filename - - # The content type of the "uploaded" file - attr_accessor :content_type - - def initialize(path, content_type = "text/plain", binary = false) - raise "#{path} file does not exist" unless ::File.exist?(path) - - @content_type = content_type - @original_filename = ::File.basename(path) - - @tempfile = Tempfile.new(@original_filename) - @tempfile.set_encoding(Encoding::BINARY) if @tempfile.respond_to?(:set_encoding) - @tempfile.binmode if binary - - FileUtils.copy_file(path, @tempfile.path) - end - - def path - @tempfile.path - end - - alias_method :local_path, :path - - def method_missing(method_name, *args, &block) #:nodoc: - @tempfile.__send__(method_name, *args, &block) - end - - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/utils.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/utils.rb deleted file mode 100644 index 4b8ba177..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/lib/rack/test/utils.rb +++ /dev/null @@ -1,101 +0,0 @@ -module Rack - module Test - - module Utils # :nodoc: - include Rack::Utils - - def build_nested_query(value, prefix = nil) - case value - when Array - value.map do |v| - build_nested_query(v, "#{prefix}[]") - end.join("&") - when Hash - value.map do |k, v| - build_nested_query(v, prefix ? "#{prefix}[#{escape(k)}]" : escape(k)) - end.join("&") - when NilClass - prefix.to_s - else - "#{prefix}=#{escape(value)}" - end - end - - module_function :build_nested_query - - def build_multipart(params, first = true) - if first - unless params.is_a?(Hash) - raise ArgumentError, "value must be a Hash" - end - - multipart = false - query = lambda { |value| - case value - when Array - value.each(&query) - when Hash - value.values.each(&query) - when UploadedFile - multipart = true - end - } - params.values.each(&query) - return nil unless multipart - end - - flattened_params = Hash.new - - params.each do |key, value| - k = first ? key.to_s : "[#{key}]" - - case value - when Array - value.map { |v| - build_multipart(v, false).each { |subkey, subvalue| - flattened_params["#{k}[]#{subkey}"] = subvalue - } - } - when Hash - build_multipart(value, false).each { |subkey, subvalue| - flattened_params[k + subkey] = subvalue - } - else - flattened_params[k] = value - end - end - - if first - flattened_params.map { |name, file| - if file.respond_to?(:original_filename) - ::File.open(file.path, "rb") do |f| - f.set_encoding(Encoding::BINARY) if f.respond_to?(:set_encoding) -<<-EOF ---#{MULTIPART_BOUNDARY}\r -Content-Disposition: form-data; name="#{name}"; filename="#{escape(file.original_filename)}"\r -Content-Type: #{file.content_type}\r -Content-Length: #{::File.stat(file.path).size}\r -\r -#{f.read}\r -EOF - end - else -<<-EOF ---#{MULTIPART_BOUNDARY}\r -Content-Disposition: form-data; name="#{name}"\r -\r -#{file}\r -EOF - end - }.join + "--#{MULTIPART_BOUNDARY}--\r" - else - flattened_params - end - end - - module_function :build_multipart - - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/rack-test.gemspec b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/rack-test.gemspec deleted file mode 100644 index 2588a365..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/rack-test.gemspec +++ /dev/null @@ -1,73 +0,0 @@ -# -*- encoding: utf-8 -*- - -Gem::Specification.new do |s| - s.name = %q{rack-test} - s.version = "0.5.3" - - s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= - s.authors = ["Bryan Helmkamp"] - s.date = %q{2009-11-27} - s.description = %q{Rack::Test is a small, simple testing API for Rack apps. It can be used on its -own or as a reusable starting point for Web frameworks and testing libraries -to build on. Most of its initial functionality is an extraction of Merb 1.0's -request helpers feature.} - s.email = %q{bryan@brynary.com} - s.extra_rdoc_files = [ - "README.rdoc", - "MIT-LICENSE.txt" - ] - s.files = [ - ".document", - ".gitignore", - "History.txt", - "MIT-LICENSE.txt", - "README.rdoc", - "Rakefile", - "Thorfile", - "lib/rack/mock_session.rb", - "lib/rack/test.rb", - "lib/rack/test/cookie_jar.rb", - "lib/rack/test/methods.rb", - "lib/rack/test/mock_digest_request.rb", - "lib/rack/test/uploaded_file.rb", - "lib/rack/test/utils.rb", - "rack-test.gemspec", - "spec/fixtures/config.ru", - "spec/fixtures/fake_app.rb", - "spec/fixtures/foo.txt", - "spec/rack/test/cookie_spec.rb", - "spec/rack/test/digest_auth_spec.rb", - "spec/rack/test/multipart_spec.rb", - "spec/rack/test/utils_spec.rb", - "spec/rack/test_spec.rb", - "spec/spec.opts", - "spec/spec_helper.rb" - ] - s.homepage = %q{http://github.com/brynary/rack-test} - s.require_paths = ["lib"] - s.rubyforge_project = %q{rack-test} - s.rubygems_version = %q{1.3.5} - s.summary = %q{Simple testing API built on Rack} - s.test_files = [ - "spec/fixtures/fake_app.rb", - "spec/rack/test/cookie_spec.rb", - "spec/rack/test/digest_auth_spec.rb", - "spec/rack/test/multipart_spec.rb", - "spec/rack/test/utils_spec.rb", - "spec/rack/test_spec.rb", - "spec/spec_helper.rb" - ] - - if s.respond_to? :specification_version then - current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION - s.specification_version = 3 - - if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then - s.add_runtime_dependency(%q, [">= 1.0"]) - else - s.add_dependency(%q, [">= 1.0"]) - end - else - s.add_dependency(%q, [">= 1.0"]) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/fixtures/config.ru b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/fixtures/config.ru deleted file mode 100644 index 407c9b94..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/fixtures/config.ru +++ /dev/null @@ -1,3 +0,0 @@ -require "fake_app" - -run Rack::Test::FakeApp diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/fixtures/fake_app.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/fixtures/fake_app.rb deleted file mode 100644 index cb1041df..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/fixtures/fake_app.rb +++ /dev/null @@ -1,123 +0,0 @@ -require "sinatra/base" - -module Rack - module Test - - class FakeApp < Sinatra::Default - head "/" do - "meh" - end - - get "/" do - "Hello, GET: #{params.inspect}" - end - - get "/redirect" do - redirect "/redirected" - end - - get "/redirected" do - "You've been redirected" - end - - get "/void" do - [200, {}, ""] - end - - get "/cookies/show" do - request.cookies.inspect - end - - get "/COOKIES/show" do - request.cookies.inspect - end - - get "/not-cookies/show" do - request.cookies.inspect - end - - get "/cookies/set-secure" do - raise if params["value"].nil? - - response.set_cookie("secure-cookie", :value => params["value"], :secure => true) - "Set" - end - - get "/cookies/set-simple" do - raise if params["value"].nil? - - response.set_cookie "simple", params["value"] - "Set" - end - - get "/cookies/delete" do - response.delete_cookie "value" - end - - get "/cookies/count" do - old_value = request.cookies["count"].to_i || 0 - new_value = (old_value + 1).to_s - - response.set_cookie("count", :value => new_value) - new_value - end - - get "/cookies/set" do - raise if params["value"].nil? - - response.set_cookie("value", { - :value => params["value"], - :path => "/cookies", - :expires => Time.now + 10 - }) - "Set" - end - - get "/cookies/domain" do - old_value = request.cookies["count"].to_i || 0 - new_value = (old_value + 1).to_s - - response.set_cookie("count", :value => new_value, :domain => "localhost.com") - new_value - end - - get "/cookies/subdomain" do - old_value = request.cookies["count"].to_i || 0 - new_value = (old_value + 1).to_s - - response.set_cookie("count", :value => new_value, :domain => ".example.org") - new_value - end - - get "/cookies/set-uppercase" do - raise if params["value"].nil? - - response.set_cookie("VALUE", { - :value => params["value"], - :path => "/cookies", - :expires => Time.now + 10 - }) - "Set" - end - - get "/cookies/set-multiple" do - response.set_cookie("key1", :value => "value1") - response.set_cookie("key2", :value => "value2") - "Set" - end - - post "/" do - "Hello, POST: #{params.inspect}" - end - - put "/" do - "Hello, PUT: #{params.inspect}" - end - - delete "/" do - "Hello, DELETE: #{params.inspect}" - end - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/fixtures/foo.txt b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/fixtures/foo.txt deleted file mode 100644 index 5716ca59..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/fixtures/foo.txt +++ /dev/null @@ -1 +0,0 @@ -bar diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test/cookie_spec.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test/cookie_spec.rb deleted file mode 100644 index 998be11c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test/cookie_spec.rb +++ /dev/null @@ -1,199 +0,0 @@ -require "spec_helper" - -describe Rack::Test::Session do - def have_body(string) - simple_matcher "have body #{string.inspect}" do |response| - response.body.should == string - end - end - - context "cookies" do - it "keeps a cookie jar" do - get "/cookies/show" - check last_request.cookies.should == {} - - get "/cookies/set", "value" => "1" - get "/cookies/show" - last_request.cookies.should == { "value" => "1" } - end - - it "doesn't send expired cookies" do - get "/cookies/set", "value" => "1" - now = Time.now - Time.stub!(:now => now + 60) - get "/cookies/show" - last_request.cookies.should == {} - end - - it "escapes cookie values" do - jar = Rack::Test::CookieJar.new - jar["value"] = "foo;abc" - jar["value"].should == "foo;abc" - end - - it "doesn't send cookies with the wrong domain" do - get "http://www.example.com/cookies/set", "value" => "1" - get "http://www.other.example/cookies/show" - last_request.cookies.should == {} - end - - it "doesn't send cookies with the wrong path" do - get "/cookies/set", "value" => "1" - get "/not-cookies/show" - last_request.cookies.should == {} - end - - it "persists cookies across requests that don't return any cookie headers" do - get "/cookies/set", "value" => "1" - get "/void" - get "/cookies/show" - last_request.cookies.should == { "value" => "1" } - end - - it "deletes cookies" do - get "/cookies/set", "value" => "1" - get "/cookies/delete" - get "/cookies/show" - last_request.cookies.should == { } - end - - it "respects cookie domains when no domain is explicitly set" do - pending "FIXME: www.example.org should not get the first cookie" do - request("http://example.org/cookies/count").should have_body("1") - request("http://www.example.org/cookies/count").should have_body("1") - request("http://example.org/cookies/count").should have_body("2") - request("http://www.example.org/cookies/count").should have_body("2") - end - end - - it "treats domains case insensitively" do - get "http://example.com/cookies/set", "value" => "1" - get "http://EXAMPLE.COM/cookies/show" - last_request.cookies.should == { "value" => "1" } - end - - it "treats paths case sensitively" do - get "/cookies/set", "value" => "1" - get "/COOKIES/show" - last_request.cookies.should == {} - end - - it "prefers more specific cookies" do - get "http://example.com/cookies/set", "value" => "domain" - get "http://sub.example.com/cookies/set", "value" => "sub" - - get "http://sub.example.com/cookies/show" - check last_request.cookies.should == { "value" => "sub" } - - get "http://example.com/cookies/show" - last_request.cookies.should == { "value" => "domain" } - end - - it "treats cookie names case insensitively" do - get "/cookies/set", "value" => "lowercase" - get "/cookies/set-uppercase", "value" => "UPPERCASE" - get "/cookies/show" - last_request.cookies.should == { "VALUE" => "UPPERCASE" } - end - - it "defaults the domain to the request domain" do - get "http://example.com/cookies/set-simple", "value" => "cookie" - get "http://example.com/cookies/show" - check last_request.cookies.should == { "simple" => "cookie" } - - get "http://other.example/cookies/show" - last_request.cookies.should == {} - end - - it "defaults the domain to the request path up to the last slash" do - get "/cookies/set-simple", "value" => "1" - get "/not-cookies/show" - last_request.cookies.should == {} - end - - it "supports secure cookies" do - get "https://example.com/cookies/set-secure", "value" => "set" - get "http://example.com/cookies/show" - check last_request.cookies.should == {} - - get "https://example.com/cookies/show" - last_request.cookies.should == { "secure-cookie" => "set" } - end - - it "keeps separate cookie jars for different domains" do - get "http://example.com/cookies/set", "value" => "example" - get "http://example.com/cookies/show" - check last_request.cookies.should == { "value" => "example" } - - get "http://other.example/cookies/set", "value" => "other" - get "http://other.example/cookies/show" - check last_request.cookies.should == { "value" => "other" } - - get "http://example.com/cookies/show" - last_request.cookies.should == { "value" => "example" } - end - - it "keeps one cookie jar for domain and its subdomains" do - get "http://example.org/cookies/subdomain" - get "http://example.org/cookies/subdomain" - last_request.cookies.should == { "count" => "1" } - - get "http://foo.example.org/cookies/subdomain" - last_request.cookies.should == { "count" => "2" } - end - - it "allows cookies to be cleared" do - get "/cookies/set", "value" => "1" - clear_cookies - get "/cookies/show" - last_request.cookies.should == {} - end - - it "allow cookies to be set" do - set_cookie "value=10" - get "/cookies/show" - last_request.cookies.should == { "value" => "10" } - end - - it "allows an array of cookies to be set" do - set_cookie ["value=10", "foo=bar"] - get "/cookies/show" - last_request.cookies.should == { "value" => "10", "foo" => "bar" } - end - - it "parses multiple cookies properly" do - get "/cookies/set-multiple" - get "/cookies/show" - last_request.cookies.should == { "key1" => "value1", "key2" => "value2" } - end - - it "supports multiple sessions" do - with_session(:first) do - get "/cookies/set", "value" => "1" - get "/cookies/show" - last_request.cookies.should == { "value" => "1" } - end - - with_session(:second) do - get "/cookies/show" - last_request.cookies.should == { } - end - end - - it "uses :default as the default session name" do - get "/cookies/set", "value" => "1" - get "/cookies/show" - check last_request.cookies.should == { "value" => "1" } - - with_session(:default) do - get "/cookies/show" - last_request.cookies.should == { "value" => "1" } - end - end - - it "accepts explicitly provided cookies" do - request "/cookies/show", :cookie => "value=1" - last_request.cookies.should == { "value" => "1" } - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test/digest_auth_spec.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test/digest_auth_spec.rb deleted file mode 100644 index 474ec323..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test/digest_auth_spec.rb +++ /dev/null @@ -1,48 +0,0 @@ -require "spec_helper" - -describe Rack::Test::Session do - context "HTTP Digest authentication" do - - def app - app = Rack::Auth::Digest::MD5.new(Rack::Test::FakeApp.new) do |username| - { 'alice' => 'correct-password' }[username] - end - app.realm = 'WallysWorld' - app.opaque = 'this-should-be-secret' - app - end - - def be_challenge - simple_matcher "a HTTP Digest challenge response" do |response| - response.status == 401 && - response['WWW-Authenticate'] =~ /^Digest / && - response.body.empty? - end - end - - it 'incorrectly authenticates GETs' do - digest_authorize 'foo', 'bar' - get '/' - last_response.should be_challenge - end - - it "correctly authenticates GETs" do - digest_authorize "alice", "correct-password" - response = get "/" - response.should be_ok - end - - it "correctly authenticates POSTs" do - digest_authorize "alice", "correct-password" - response = post "/" - response.should be_ok - end - - it "returns a re-challenge if authenticating incorrectly" do - digest_authorize "alice", "incorrect-password" - response = get "/" - response.should be_challenge - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test/multipart_spec.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test/multipart_spec.rb deleted file mode 100644 index d0e7005e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test/multipart_spec.rb +++ /dev/null @@ -1,87 +0,0 @@ -require "spec_helper" - -describe Rack::Test::Session do - - def test_file_path - File.dirname(__FILE__) + "/../../fixtures/foo.txt" - end - - def uploaded_file - Rack::Test::UploadedFile.new(test_file_path) - end - - context "uploading a file" do - it "sends the multipart/form-data content type" do - post "/", "photo" => uploaded_file - last_request.env["CONTENT_TYPE"].should include("multipart/form-data;") - end - - it "sends regular params" do - post "/", "photo" => uploaded_file, "foo" => "bar" - last_request.POST["foo"].should == "bar" - end - - it "sends nested params" do - post "/", "photo" => uploaded_file, "foo" => {"bar" => "baz"} - last_request.POST["foo"]["bar"].should == "baz" - end - - it "sends multiple nested params" do - post "/", "photo" => uploaded_file, "foo" => {"bar" => {"baz" => "bop"}} - last_request.POST["foo"]["bar"]["baz"].should == "bop" - end - - it "sends params with arrays" do - pending "FIXME: should work the same with and without multipart" do - post "/", "photo" => uploaded_file, "foo" => ["1", "2"] - last_request.POST["foo"].should == ["1", "2"] - end - end - - it "sends params with encoding sensitive values" do - post "/", "photo" => uploaded_file, "foo" => "bar? baz" - last_request.POST["foo"].should == "bar? baz" - end - - it "sends params with parens in names" do - post "/", "photo" => uploaded_file, "foo(1i)" => "bar" - last_request.POST["foo(1i)"].should == "bar" - end - - it "sends params with encoding sensitive names" do - post "/", "photo" => uploaded_file, "foo bar" => "baz" - last_request.POST["foo bar"].should == "baz" - end - - it "sends files with the filename" do - post "/", "photo" => uploaded_file - last_request.POST["photo"][:filename].should == "foo.txt" - end - - it "sends files with the text/plain MIME type by default" do - post "/", "photo" => uploaded_file - last_request.POST["photo"][:type].should == "text/plain" - end - - it "sends files with the right name" do - post "/", "photo" => uploaded_file - last_request.POST["photo"][:name].should == "photo" - end - - it "allows overriding the content type" do - post "/", "photo" => Rack::Test::UploadedFile.new(test_file_path, "image/jpeg") - last_request.POST["photo"][:type].should == "image/jpeg" - end - - it "sends files with a Content-Length in the header" do - post "/", "photo" => uploaded_file - last_request.POST["photo"][:head].should include("Content-Length: 4") - end - - it "sends files as Tempfiles" do - post "/", "photo" => uploaded_file - last_request.POST["photo"][:tempfile].should be_a(::Tempfile) - end - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test/utils_spec.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test/utils_spec.rb deleted file mode 100644 index 5a999699..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test/utils_spec.rb +++ /dev/null @@ -1,97 +0,0 @@ -require "spec_helper" - -describe Rack::Test::Utils do - include Rack::Test::Utils - - describe "build_nested_query" do - it "converts empty strings to =" do - build_nested_query("").should == "=" - end - - it "converts nil to an empty string" do - build_nested_query(nil).should == "" - end - - it "converts hashes with nil values" do - build_nested_query(:a => nil).should == "a" - end - - it "converts hashes" do - build_nested_query(:a => 1).should == "a=1" - end - - it "converts hashes with multiple keys" do - hash = { :a => 1, :b => 2 } - ["a=1&b=2", "b=2&a=1"].should include(build_nested_query(hash)) - end - - it "converts arrays with one element" do - build_nested_query(:a => [1]).should == "a[]=1" - end - - it "converts arrays with multiple elements" do - build_nested_query(:a => [1, 2]).should == "a[]=1&a[]=2" - end - - it "converts nested hashes" do - build_nested_query(:a => { :b => 1 }).should == "a[b]=1" - end - - it "converts arrays nested in a hash" do - build_nested_query(:a => { :b => [1, 2] }).should == "a[b][]=1&a[b][]=2" - end - - it "converts arrays of hashes" do - build_nested_query(:a => [{ :b => 2}, { :c => 3}]).should == "a[][b]=2&a[][c]=3" - end - end - - describe "build_multipart" do - it "builds multipart bodies" do - files = Rack::Test::UploadedFile.new(multipart_file("foo.txt")) - data = build_multipart("submit-name" => "Larry", "files" => files) - - options = { - "CONTENT_TYPE" => "multipart/form-data; boundary=#{Rack::Test::MULTIPART_BOUNDARY}", - "CONTENT_LENGTH" => data.length.to_s, - :input => StringIO.new(data) - } - env = Rack::MockRequest.env_for("/", options) - params = Rack::Utils::Multipart.parse_multipart(env) - check params["submit-name"].should == "Larry" - check params["files"][:filename].should == "foo.txt" - params["files"][:tempfile].read.should == "bar\n" - end - - it "builds nested multipart bodies" do - files = Rack::Test::UploadedFile.new(multipart_file("foo.txt")) - data = build_multipart("people" => [{"submit-name" => "Larry", "files" => files}]) - - options = { - "CONTENT_TYPE" => "multipart/form-data; boundary=#{Rack::Test::MULTIPART_BOUNDARY}", - "CONTENT_LENGTH" => data.length.to_s, - :input => StringIO.new(data) - } - env = Rack::MockRequest.env_for("/", options) - params = Rack::Utils::Multipart.parse_multipart(env) - check params["people"][0]["submit-name"].should == "Larry" - check params["people"][0]["files"][:filename].should == "foo.txt" - params["people"][0]["files"][:tempfile].read.should == "bar\n" - end - - it "should return nil if no UploadedFiles were used" do - data = build_multipart("people" => [{"submit-name" => "Larry", "files" => "contents"}]) - data.should be_nil - end - - it "raises ArgumentErrors if params is not a Hash" do - lambda { - build_multipart("foo=bar") - }.should raise_error(ArgumentError, "value must be a Hash") - end - - def multipart_file(name) - File.join(File.dirname(__FILE__), "..", "..", "fixtures", name.to_s) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test_spec.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test_spec.rb deleted file mode 100644 index b0aaa61d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/rack/test_spec.rb +++ /dev/null @@ -1,443 +0,0 @@ -require "spec_helper" - -describe Rack::Test::Session do - describe "initialization" do - it "supports being initialized with a Rack::MockSession app" do - session = Rack::Test::Session.new(Rack::MockSession.new(app)) - session.request("/").should be_ok - end - - it "supports being initialized with an app" do - session = Rack::Test::Session.new(app) - session.request("/").should be_ok - end - end - - describe "#request" do - it "requests the URI using GET by default" do - request "/" - last_request.should be_get - last_response.should be_ok - end - - it "returns a response" do - request("/").should be_ok - end - - it "uses the provided env" do - request "/", "X-Foo" => "bar" - last_request.env["X-Foo"].should == "bar" - end - - it "defaults to GET" do - request "/" - last_request.env["REQUEST_METHOD"].should == "GET" - end - - it "defaults the REMOTE_ADDR to 127.0.0.1" do - request "/" - last_request.env["REMOTE_ADDR"].should == "127.0.0.1" - end - - it "sets rack.test to true in the env" do - request "/" - last_request.env["rack.test"].should == true - end - - it "defaults to port 80" do - request "/" - last_request.env["SERVER_PORT"].should == "80" - end - - it "defaults to example.org" do - request "/" - last_request.env["SERVER_NAME"].should == "example.org" - end - - it "yields the response to a given block" do - request "/" do |response| - response.should be_ok - end - end - - it "supports sending :params" do - request "/", :params => { "foo" => "bar" } - last_request.GET["foo"].should == "bar" - end - - it "doesn't follow redirects by default" do - request "/redirect" - last_response.should be_redirect - last_response.body.should be_empty - end - - it "allows passing :input in for POSTs" do - request "/", :method => :post, :input => "foo" - last_request.env["rack.input"].read.should == "foo" - end - - it "converts method names to a uppercase strings" do - request "/", :method => :put - last_request.env["REQUEST_METHOD"].should == "PUT" - end - - it "prepends a slash to the URI path" do - request "foo" - last_request.env["PATH_INFO"].should == "/foo" - end - - it "accepts params and builds query strings for GET requests" do - request "/foo?baz=2", :params => {:foo => {:bar => "1"}} - last_request.GET.should == { "baz" => "2", "foo" => { "bar" => "1" }} - end - - it "accepts raw input in params for GET requests" do - request "/foo?baz=2", :params => "foo[bar]=1" - last_request.GET.should == { "baz" => "2", "foo" => { "bar" => "1" }} - end - - it "accepts params and builds url encoded params for POST requests" do - request "/foo", :method => :post, :params => {:foo => {:bar => "1"}} - last_request.env["rack.input"].read.should == "foo[bar]=1" - end - - it "accepts raw input in params for POST requests" do - request "/foo", :method => :post, :params => "foo[bar]=1" - last_request.env["rack.input"].read.should == "foo[bar]=1" - end - - context "when the response body responds_to?(:close)" do - class CloseableBody - def initialize - @closed = false - end - - def each - return if @closed - yield "Hello, World!" - end - - def close - @closed = true - end - end - - it "closes response's body" do - body = CloseableBody.new - body.should_receive(:close) - - app = lambda do |env| - [200, {"Content-Type" => "text/html", "Content-Length" => "13"}, body] - end - - session = Rack::Test::Session.new(Rack::MockSession.new(app)) - session.request("/") - end - - it "closes response's body after iteration" do - app = lambda do |env| - [200, {"Content-Type" => "text/html", "Content-Length" => "13"}, CloseableBody.new] - end - - session = Rack::Test::Session.new(Rack::MockSession.new(app)) - session.request("/") - session.last_response.body.should == "Hello, World!" - end - end - - context "when input is given" do - it "should send the input" do - request "/", :method => "POST", :input => "foo" - last_request.env["rack.input"].read.should == "foo" - end - - it "should not send a multipart request" do - request "/", :method => "POST", :input => "foo" - last_request.env["CONTENT_TYPE"].should_not == "application/x-www-form-urlencoded" - end - end - - context "for a POST specified with :method" do - it "uses application/x-www-form-urlencoded as the CONTENT_TYPE" do - request "/", :method => "POST" - last_request.env["CONTENT_TYPE"].should == "application/x-www-form-urlencoded" - end - end - - context "for a POST specified with REQUEST_METHOD" do - it "uses application/x-www-form-urlencoded as the CONTENT_TYPE" do - request "/", "REQUEST_METHOD" => "POST" - last_request.env["CONTENT_TYPE"].should == "application/x-www-form-urlencoded" - end - end - - context "when CONTENT_TYPE is specified in the env" do - it "does not overwrite the CONTENT_TYPE" do - request "/", "CONTENT_TYPE" => "application/xml" - last_request.env["CONTENT_TYPE"].should == "application/xml" - end - end - - context "when the URL is https://" do - it "sets rack.url_scheme to https" do - get "https://example.org/" - last_request.env["rack.url_scheme"].should == "https" - end - - it "sets SERVER_PORT to 443" do - get "https://example.org/" - last_request.env["SERVER_PORT"].should == "443" - end - - it "sets HTTPS to on" do - get "https://example.org/" - last_request.env["HTTPS"].should == "on" - end - end - - context "for a XHR" do - it "sends XMLHttpRequest for the X-Requested-With header" do - request "/", :xhr => true - last_request.env["HTTP_X_REQUESTED_WITH"].should == "XMLHttpRequest" - last_request.should be_xhr - end - end - end - - describe "#header" do - it "sets a header to be sent with requests" do - header "User-Agent", "Firefox" - request "/" - - last_request.env["HTTP_USER_AGENT"].should == "Firefox" - end - - it "persists across multiple requests" do - header "User-Agent", "Firefox" - request "/" - request "/" - - last_request.env["HTTP_USER_AGENT"].should == "Firefox" - end - - it "overwrites previously set headers" do - header "User-Agent", "Firefox" - header "User-Agent", "Safari" - request "/" - - last_request.env["HTTP_USER_AGENT"].should == "Safari" - end - - it "can be used to clear a header" do - header "User-Agent", "Firefox" - header "User-Agent", nil - request "/" - - last_request.env.should_not have_key("HTTP_USER_AGENT") - end - - it "is overridden by headers sent during the request" do - header "User-Agent", "Firefox" - request "/", "HTTP_USER_AGENT" => "Safari" - - last_request.env["HTTP_USER_AGENT"].should == "Safari" - end - end - - describe "#authorize" do - it "sets the HTTP_AUTHORIZATION header" do - authorize "bryan", "secret" - request "/" - - last_request.env["HTTP_AUTHORIZATION"].should == "Basic YnJ5YW46c2VjcmV0\n" - end - - it "includes the header for subsequent requests" do - basic_authorize "bryan", "secret" - request "/" - request "/" - - last_request.env["HTTP_AUTHORIZATION"].should == "Basic YnJ5YW46c2VjcmV0\n" - end - end - - describe "follow_redirect!" do - it "follows redirects" do - get "/redirect" - follow_redirect! - - last_response.should_not be_redirect - last_response.body.should == "You've been redirected" - end - - it "does not include params when following the redirect" do - get "/redirect", { "foo" => "bar" } - follow_redirect! - - last_request.GET.should == {} - end - - it "raises an error if the last_response is not set" do - lambda { - follow_redirect! - }.should raise_error(Rack::Test::Error) - end - - it "raises an error if the last_response is not a redirect" do - get "/" - - lambda { - follow_redirect! - }.should raise_error(Rack::Test::Error) - end - end - - describe "#last_request" do - it "returns the most recent request" do - request "/" - last_request.env["PATH_INFO"].should == "/" - end - - it "raises an error if no requests have been issued" do - lambda { - last_request - }.should raise_error(Rack::Test::Error) - end - end - - describe "#last_response" do - it "returns the most recent response" do - request "/" - last_response["Content-Type"].should == "text/html" - end - - it "raises an error if no requests have been issued" do - lambda { - last_response - }.should raise_error - end - end - - describe "after_request" do - it "runs callbacks after each request" do - ran = false - - rack_mock_session.after_request do - ran = true - end - - get "/" - ran.should == true - end - - it "runs multiple callbacks" do - count = 0 - - 2.times do - rack_mock_session.after_request do - count += 1 - end - end - - get "/" - count.should == 2 - end - end - - describe "#get" do - it_should_behave_like "any #verb methods" - - def verb - "get" - end - - it "uses the provided params hash" do - get "/", :foo => "bar" - last_request.GET.should == { "foo" => "bar" } - end - - it "sends params with parens in names" do - get "/", "foo(1i)" => "bar" - last_request.GET["foo(1i)"].should == "bar" - end - - it "supports params with encoding sensitive names" do - get "/", "foo bar" => "baz" - last_request.GET["foo bar"].should == "baz" - end - - it "supports params with nested encoding sensitive names" do - get "/", "boo" => {"foo bar" => "baz"} - last_request.GET.should == {"boo" => {"foo bar" => "baz"}} - end - - it "accepts params in the path" do - get "/?foo=bar" - last_request.GET.should == { "foo" => "bar" } - end - end - - describe "#head" do - it_should_behave_like "any #verb methods" - - def verb - "head" - end - end - - describe "#post" do - it_should_behave_like "any #verb methods" - - def verb - "post" - end - - it "uses the provided params hash" do - post "/", :foo => "bar" - last_request.POST.should == { "foo" => "bar" } - end - - it "supports params with encoding sensitive names" do - post "/", "foo bar" => "baz" - last_request.POST["foo bar"].should == "baz" - end - - it "uses application/x-www-form-urlencoded as the CONTENT_TYPE" do - post "/" - last_request.env["CONTENT_TYPE"].should == "application/x-www-form-urlencoded" - end - - it "accepts a body" do - post "/", "Lobsterlicious!" - last_request.body.read.should == "Lobsterlicious!" - end - - context "when CONTENT_TYPE is specified in the env" do - it "does not overwrite the CONTENT_TYPE" do - post "/", {}, { "CONTENT_TYPE" => "application/xml" } - last_request.env["CONTENT_TYPE"].should == "application/xml" - end - end - end - - describe "#put" do - it_should_behave_like "any #verb methods" - - def verb - "put" - end - - it "accepts a body" do - put "/", "Lobsterlicious!" - last_request.body.read.should == "Lobsterlicious!" - end - end - - describe "#delete" do - it_should_behave_like "any #verb methods" - - def verb - "delete" - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/spec.opts b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/spec.opts deleted file mode 100644 index 7bfa3f20..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/spec.opts +++ /dev/null @@ -1,2 +0,0 @@ ---color --fs diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/spec_helper.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/spec_helper.rb deleted file mode 100644 index 7c31b98b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rack-test-0.5.3/spec/spec_helper.rb +++ /dev/null @@ -1,52 +0,0 @@ -require "rubygems" -require "spec" - -gem "rack", "~> 1.0.0" - -require "rack/test" -require File.dirname(__FILE__) + "/fixtures/fake_app" - -Spec::Runner.configure do |config| - config.include Rack::Test::Methods - - def app - Rack::Lint.new(Rack::Test::FakeApp.new) - end - - def check(*args) - end - -end - -describe "any #verb methods", :shared => true do - it "requests the URL using VERB" do - send(verb, "/") - - check last_request.env["REQUEST_METHOD"].should == verb.upcase - last_response.should be_ok - end - - it "uses the provided env" do - send(verb, "/", {}, { "HTTP_USER_AGENT" => "Rack::Test" }) - last_request.env["HTTP_USER_AGENT"].should == "Rack::Test" - end - - it "yields the response to a given block" do - yielded = false - - send(verb, "/") do |response| - response.should be_ok - yielded = true - end - - yielded.should be_true - end - - context "for a XHR" do - it "sends XMLHttpRequest for the X-Requested-With header" do - send(verb, "/", {}, { :xhr => true }) - last_request.env["HTTP_X_REQUESTED_WITH"].should == "XMLHttpRequest" - last_request.should be_xhr - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/CHANGES b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/CHANGES deleted file mode 100644 index 3b1a02b8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/CHANGES +++ /dev/null @@ -1,440 +0,0 @@ - -= Rake Changelog - -== Version 0.8.7 - -* Fixed EXEEXT for JRuby on windows. - -== Version 0.8.6 - -* Minor fixes to the RDoc generation (removed dependency on darkfish - and removed inline source option). - -== Version 0.8.5 - -* Better support for the system command on Windows. - -== Version 0.8.4 - -* Preserve case when locating rakefiles (patch from James - M. Lawrence/quix) - -* Better support for windows paths in the test task (patch from Simon - Chiang/bahuvrihi) - -* Windows system dir search order is now: HOME, HOMEDRIVE + HOMEPATH, - APPDATA, USERPROFILE (patch from Luis Lavena) - -* MingGW is now recognized as a windows platform. (patch from Luis - Lavena) - -* Numerous fixes to the windows test suite (patch from Luis Lavena). - -* Improved Rakefile case insensitivity testing (patch from Luis - Lavena). - -* Fixed stray ARGV option problem that was interfering with - Test::Unit::Runner. - -* Fixed default verbose mode (was accidently changed to false). - -* Removed reference to manage_gem to fix the warning produced by the - gem package task. - -== Version 0.8.3 - -* Enhanced the system directory detection in windows. We now check - HOMEDRIVE/HOMEPATH and USERPROFILE if APPDATA isn't found. (Patch - supplied by James Tucker). Rake no long aborts if it can't find the - directory. - -* Added fix to handle ruby installations in directories with spaces in - their name. - -== Version 0.8.2 - -* Fixed bug in package task so that it will include the subdir - directory in the package for testing. (Bug found by Adam Majer) - -* Added ENV var to rakefile to prevent OS X from including extended - attribute junk in a tar file. (Bug found by Adam Majer) - -* Fixed filename dependency order bug in test_inspect_pending and - test_to_s_pending. (Bug found by Adam Majer) - -* Fixed check for file utils options to make them immune to the - symbol/string differences. (Patch supplied by Edwin Pratomo) - -* Fixed bug with rules involving multiple source (Patch supplied by - Emanuel Indermhle) - -* Switched from getoptlong to optparse (patches supplied by Edwin - Pratomo) - -* The -T option will now attempt to dynamically sense the size of the - terminal. RAKE_COLUMNS will override any dynamic sensing. - -* FileList#clone and FileList#dup have better sematics w.r.t. taint - and freeze. - -* Added ability clear prerequisites, and/or actions from an existing - task. - -* Added the ability to reenable a task to be invoked a second time. - -* Changed RDoc test task to have no default template. This makes it - easier for the tempate to pick up the template from the environment. - -* Changed from using Mutex to Monitor. Evidently Mutex causes thread - join errors when Ruby is compiled with -disable-pthreads. (Patch - supplied by Ittay Dror) - -* Fixed bug in makefile parser that had problems with extra spaces in - file task names. (Patch supplied by Ittay Dror) - -* Added a performance patch for reading large makefile dependency - files. (Patch supplied by Ittay Dror) - -* Default values for task arguments can easily be specified with the - :with_defaults method. (Idea for default argument merging supplied - by (Adam Q. Salter) - -* The -T output will only self-truncate if the output is a tty. - However, if RAKE_COLUMNS is explicitly set, it will be honored in - any case. (Patch provided by Gavin Stark). - -* Numerous fixes for running under windows. A big thanks to Bheeshmar - Redheendran for spending a good part of the afternoon at the - Lonestar Ruby Conference to help me work out these issues. - -== Version 0.8.1 - -* Removed requires on parsedate.rb (in Ftptools) -* Removed ftools from rake.rb. Made it options in sys.rb - -== Version 0.8.0 - -* Added task parameters (e.g. "rake build[version7]") -* Made task parameters passable to prerequisites. -* Comments are limited to 80 columns or so (suggested by Jamis Buck). -* Added -D to display full comments (suggested by Jamis Buck). -* The rake program will set the status value used in any explicit - exit(n) calls. (patch provided by Stephen Touset) -* Fixed error in functional tests that were not including session (and - silently skipping the functionl tests. -* Removed --usage and make -h the same as -H. -* Make a prettier inspect for tasks. - -== Version 0.7.3 - -* Added existing and existing! methods to FileList -* FileLists now claim to be Arrays (via is_a?) to get better support - from the FileUtil module. -* Added init and top_level for custom rake applications. - -== Version 0.7.2 - -* Error messages are now send to stderr rather than stdout (from - Payton Quackenbush). -* Better error handling on invalid command line arguments (from Payton - Quackenbush). -* Added rcov task and updated unit testing for better code coverage. -* Fixed some bugs where the application object was going to the global - appliation instead of using its own data. -* Added square and curly bracket patterns to FileList#include (Tilman - Sauerbeck). -* Added plain filename support to rule dependents (suggested by Nobu - Nakada). -* Added pathmap support to rule dependents. -* Added a 'tasks' method to a namespace to get a list of tasks - associated with the namespace. -* Fixed the method name leak from FileUtils (bug found by Glenn - Vanderburg). -* Added rake_extension to handle detection of extension collisions. -* Added test for noop, bad_option and verbose flags to sh command. -* Removed dependency on internal fu_xxx functions from FileUtils. -* Added a 'shame' task to the Rakefile. -* Added tar_command and zip_command options to the Package task. -* Added a description to the gem task in GemPackageTask. -* Fixed a bug when rules have multiple prerequisites (patch by Joel - VanderWerf) -* Added a protected 'require "rubygems"' to test/test_application to - unbreak cruisecontrol.rb. -* Added the handful of RakeFileUtils to the private method as well. -* Added block based exclusion. -* The clean task will no longer delete 'core' if it is a directory. -* Removed rake_dup. Now we just simply rescue a bad dup. -* Refactored the FileList reject logic to remove duplication. -* Removed if __FILE__ at the end of the rake.rb file. - -== Version 0.7.1 - -* Added optional filter parameter to the --tasks command line option. -* Added flatten to allow rule transform procs to return lists of - prereqs (Joel VanderWerf provided patch). -* Added pathmap to String and FileList. -* The -r option will now load .rake files (but a straight require - doesn't yet). NOTE: This is experimental ... it may be - discontinued. -* The -f option without a value will disable the search for a - Rakefile. The assumption is that the -r files are adequate. -* Fixed the safe_ln function to fall back to cp in more error - scenarios. - -== Version 0.7.0 - -* Added Rake.original_dir to return the original starting directory of - the rake application. -* Added safe_ln support for openAFS (from Ludvig Omholt). -* Added --trace reminder on short exception messages (David Heinemeier - Hansson suggestion). -* Added multitask declaration that executes prerequisites in - parallel. (Doug Young providied an initial implementation). -* Fixed missing_const hack to be compatible with Rails. (Jamis Buck - supplied test case). -* Made the RDoc task default to internal (in-process) RDoc formatting. - The old behavior is still available by setting the +external+ flag - to true. -* Rakefiles are now loaded with the expanded path to prevent - accidental polution from the Ruby load path. -* The +namespace+ command now returns a NameSpace object that can be - used to lookup tasks defined in that namespace. This allows for - better anonymous namespace behavior. -* Task objects my now be used in prerequisite lists directly. - -== Version 0.6.1 - -* Rebuilt 0.6.0 gem without signing. - -== Version 0.6.0 - -* Fixed file creation bug in the unit tests (caused infinite loop on - windows). -* Fixed bug where session based functional tests were run under - windows. -* Fixed bug in directory tasks so that updating a directory will not - retrigger file tasks depending on the directory (see - FileCreationTask and EarlyTime). -* Added egrep to FileList -* ruby command now runs same ruby version as rake. -* Added investigation to task object. (suggested by Martin Fowler) -* Added ruby_opts to the test task to allow arbitrary ruby options to - be passed to the test script. (Greg Fast) -* Fixed the test loader to ignore options. (Greg Fast) -* Moved Task, FileTask, FileCreationTask and RakeApp into the Rake - module namespace. Old style namespace behavior can be invoked via - the --classic-namespace option. (requested by Kelly Felkins). -* GemTask is now sensitive to the gem platform (Masao Mutoh). -* A non-existing file prerequisite will no longer cause an exception - (Philipp Neubeck). -* Multiple prerequisites on Rake rules now allowed (initial patch - supplied by Stuart Jansen). - -== Version 0.5.4 - -* Added double quotes to the test runner. -* Added .svn to default ignore list. -* Updated FileList#include to support nested arrays and filelists. - -== Version 0.5.3 - -* Added support for importing Rakefile and other dependencies. -* Fixed bug so that now rules can chain off of existing tasks as well - as existing files. -* Fixed verbose flag bug in the testing task. Shortened some failure - messages. -* Make FileUtils methods private at the top level module to avoid - accidental method leaking into other objects. -* Added test loader option to test task. "testrb" is no longer the - default test loader. It is now eating syntax errors that should - halt the unit tests. -* Revamped FileList so that it works more like and array (addressed - flatten bug). Added many tests around file list. -* Added +ext+ method to both String and FileList. - -== Version 0.5.0 - -* Fixed documentation that was lacking the Rake module name (Tilman - Sauerbeck). -* Added tar.gz and tar.bz2 support to package task (Tilman Sauerbeck). -* Recursive rules are now supported (Tilman Sauerbeck). -* Added warning option for the Test Task (requested by Eric Hodel). -* The jamis rdoc template is only used if it exists. -* Added fix for Ruby 1.8.2 test/unit and rails problem. -* Added contributed rake man file (Jani Monoses). -* Added Brian Candler's fix for problems in --trace and --dry-run - mode. - -== Version 0.4.15 - -* Fixed a bug that prevented the TESTOPTS flag from working with the - revised for 1.8.2 test task. -* Updated the docs on --trace to indicate that it also enables a full - backtrace on errors. - -== Version 0.4.14 - -* Modified the TestTask to workaround the Ruby 1.8.2 change in - autoexecuting unit tests. - -== Version 0.4.13 - -* Fixed the dry-run flag so it is operating again. -* Multiple arguments to sh and ruby commands will not be interpreted - by the shell (patch provided by Jonathan Paisley). - -== Version 0.4.12 - -* Added --silent (-s) to suppress the (in directory) rake message. - -== Version 0.4.11 - -* Changed the "don't know how to rake" message (finally) -* Changes references to a literal "Rakefile" to reference the global - variable $rakefile (which contains the actual name of the rakefile). - -== Version 0.4.10 - -* Added block support to the "sh" command, allowing users to take - special actions on the result of the system call. E.g. - - sh "shell_command" do |ok, res| - puts "Program returned #{res.exitstatus}" if ! ok - end - -== Version 0.4.9 - -* Switched to Jamis Buck's RDoc template. -* Removed autorequire from Rake's gem spec. This prevents the Rake - libraries from loading while using rails. - -== Version 0.4.8 - -* Added support for .rb versions of Rakefile. -* Removed \\\n's from test task. -* Fixed Ruby 1.9 compatibility issue with FileList. - -== Version 0.4.7 - -* Fixed problem in FileList that caused Ruby 1.9 to go into infinite - recursion. Since to_a was removed from Object, it does not need to - added back into the list of methods to rewrite in FileList. (Thanks - to Kent Sibilev for pointing this out). - -== Version 0.4.6 -* Removed test version of ln in FileUtils that prevented safe_ln from - using ln. - -== Version 0.4.5 -* Upgraded comments in TestTask. -* FileList to_s and inspect now automatically resolve pending changes. -* FileList#exclude properly returns the FileList. - -== Version 0.4.4 -* Fixed initialization problem with @comment. -* Now using multi -r technique in TestTask. Switch Rakefile back to - using the built-in test task macros because the rake runtime is no - longer needed. -* Added 'TEST=filename' and 'TESTOPTS=options' to the Test Task - macros. -* Allow a +test_files+ attribute in test tasks. This allows more - flexibility in specifying test files. - -== Version 0.4.3 -* Fixed Comment leakage. - -== Version 0.4.2 -* Added safe_ln that falls back to a copy if a file link is not supported. -* Package builder now uses safe_ln. - -== Version 0.4.1 -* Task comments are now additive, combined with "/". -* Works with (soon to be released) rubygems 0.6.2 (or 0.7.0) - -== Version 0.4.0 -* FileList now uses deferred loading. The file system is not searched - until the first call that needs the file names. -* VAR=VALUE options are now accepted on the command line and are - treated like environment variables. The values may be tested in a - Rakefile by referencing ENV['VAR']. -* File.mtime is now used (instead of File.new().mtime). - -== Version 0.3.2.x - -* Removed some hidden dependencies on rubygems. Tests now will test - gems only if they are installed. -* Removed Sys from some example files. I believe that is that last - reference to Sys outside of the contrib area. -* Updated all copyright notices to include 2004. - -== Version 0.3.2 - -* GEM Installation now works with the application stub. - -== Version 0.3.1 - -* FileLists now automatically ignore CVS, .bak, ! -* GEM Installation now works. - -== Version 0.3.0 - -Promoted 0.2.10. - -== Version 0.2.10 -General - -* Added title to Rake's rdocs -* Contrib packages are no longer included in the documentation. - -RDoc Issues - -* Removed default for the '--main' option -* Fixed rendering of the rdoc options -* Fixed clean/clobber confusion with rerdoc -* 'title' attribute added - -Package Task Library Issues - -* Version (or explicit :noversion) is required. -* +package_file+ attribute is now writable - -FileList Issues - -* Dropped bang version of exclude. Now using ant-like include/exclude semantics. -* Enabled the "yield self" idiom in FileList#initialize. - -== Version 0.2.9 - -This version contains numerous changes as the RubyConf.new(2003) -presentation was being prepared. The changes include: - -* The monolithic rubyapp task library is in the process of being - dropped in favor of lighter weight task libraries. - -== Version 0.2.7 - -* Added "desc" for task descriptions. -* -T will now display tasks with descriptions. -* -P will display tasks and prerequisites. -* Dropped the Sys module in favor of the 1.8.x FileUtils module. Sys - is still supported in the contrib area. - -== Version 0.2.6 - -* Moved to RubyForge - -== Version 0.2.5 - -* Switched to standard ruby app builder. -* Added no_match option to file matcher. - -== Version 0.2.4 - -* Fixed indir, which neglected to actually change directories. - -== Version 0.2.3 - -* Added rake module for a help target -* Added 'for_files' to Sys -* Added a $rakefile constant -* Added test for selecting proper rule with multiple targets. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/MIT-LICENSE b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/MIT-LICENSE deleted file mode 100644 index 72734753..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/MIT-LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2003, 2004 Jim Weirich - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/README b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/README deleted file mode 100644 index 41668dd7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/README +++ /dev/null @@ -1,196 +0,0 @@ -= RAKE -- Ruby Make - -Supporting Rake version: 0.8.6 - -This package contains Rake, a simple ruby build program with -capabilities similar to make. - -Rake has the following features: - -* Rakefiles (rake's version of Makefiles) are completely defined in - standard Ruby syntax. No XML files to edit. No quirky Makefile - syntax to worry about (is that a tab or a space?) - -* Users can specify tasks with prerequisites. - -* Rake supports rule patterns to synthesize implicit tasks. - -* Flexible FileLists that act like arrays but know about manipulating - file names and paths. - -* A library of prepackaged tasks to make building rakefiles easier. For example, - tasks for building tarballs, gems and RDoc output are provided. - -* Supports parallel execution of tasks. - - -== Installation - -=== Gem Installation - -Download and install rake with the following. - - gem install rake - -=== Normal Installation - -You can download the source tarball of the latest version of Rake from - -* http://rubyforge.org/project/showfiles.php?group_id=50 - -Extract the tarball and run - - % ruby install.rb - -from its distribution directory. - -== Usage - -=== Simple Example - -First, you must write a "Rakefile" file which contains the build rules. Here's -a simple example: - - task :default => [:test] - - task :test do - ruby "test/unittest.rb" - end - -This Rakefile has two tasks: - -* A task named "test", which - upon invocation - will run a unit test file in - Ruby. -* A task named "default". This task does nothing by itself, but it has exactly - one dependency, namely the "test" task. Invoking the "default" task will - cause Rake to invoke the "test" task as well. - -Running the "rake" command without any options will cause it to run the -"default" task in the Rakefile: - - % ls - Rakefile test/ - % rake - (in /home/some_user/Projects/rake) - ruby test/unittest.rb - ....unit test output here... - -Type "rake --help" for all available options. - - -=== More Information - -* For details on Rake's command-line invocation, read - doc/command_line_usage.rdoc[http://rake.rubyforge.org/files/doc/command_line_usage_rdoc.html] -* For details on writing Rakefiles, see - doc/rakefile.rdoc[http://rake.rubyforge.org/files/doc/rakefile_rdoc.html]. -* For the original announcement of Rake, see - doc/rational.rdoc[http://rake.rubyforge.org/files/doc/rational_rdoc.html]. -* For a glossary of terms, see - doc/glossary.rdoc[http://rake.rubyforge.org/files/doc/glossary_rdoc.html]. - - -== Development - -=== Source Repository - -Rake is currently hosted at github. The github web page is -http://github.com/jimweirich/rake. The public git clone URL is - -* git://github.com/jimweirich/rake.git - -=== Running the Rake Test Suite - -If you wish to run the unit and functional tests that come with Rake: - -* Install the 'session' gem in order to run the functional tests. -* CD into the top project directory of rake. -* Type one of the following: - - rake # If you have a version of rake installed - ruby -Ilib bin/rake # If you do not have a version of rake installed. - -=== Issues and Bug Reports - -Bugs, features requests and other issues can be logged at - -* http://onestepback.org/redmine/projects/show/rake - -You will need an account to before you can post issues. Register at -http://onestepback.org/redmine/account/register. Or you can send me -an email (at jim dot weirich at gmail dot com) - - -== Online Resources - -=== Rake References - -* Rake Documentation Home: http://docs.rubyrake.org -* Rake Project Page: http://rubyforge.org/projects/rake -* Rake API Documents: http://rake.rubyforge.org -* Rake Source Code Repo: http://github.com/jimweirich/rake -* Rake Git Repo Clone URL: git://github.com/jimweirich/rake.git - -=== Presentations and Articles about Rake - -* Jim Weirich's 2003 RubyConf presentation: http://onestepback.org/articles/buildingwithrake/ -* Martin Fowler's article on Rake: http://martinfowler.com/articles/rake.html - -== Other Make Reinvisionings ... - -Rake is a late entry in the make replacement field. Here are links to -other projects with similar (and not so similar) goals. - -* http://directory.fsf.org/bras.html -- Bras, one of earliest - implementations of "make in a scripting language". -* http://www.a-a-p.org -- Make in Python -* http://www.aromatic.com/tools/jam.txt -- JAM, Java Automated Make -* http://ant.apache.org -- The Ant project -* http://ppt.perl.org/commands/make/index.html -- Make from the Perl - Power Tools implementation. -* http://search.cpan.org/search?query=PerlBuildSystem -- The Perl Build System -* http://make.rubyforge.org -- Rant, another Ruby make tool. - -== Credits - -[Ryan Dlugosz] For the initial conversation that sparked Rake. - -[nobu.nokada@softhome.net] For the initial patch for rule support. - -[Tilman Sauerbeck ] For the recursive rule patch. - -== License - -Rake is available under an MIT-style license. - -:include: MIT-LICENSE - -== Support - -The Rake homepage is http://rake.rubyforge.org. You can find the Rake -RubyForge page at http://rubyforge.org/projects/rake. - -Feel free to submit commits or feature requests. If you send a patch, -remember to update the corresponding unit tests. If fact, I prefer -new feature to be submitted in the form of new unit tests. - -For other information, feel free to ask on the ruby-talk mailing list -(which is mirrored to comp.lang.ruby) or contact -jim dot weirich at gmail.com. - ---- - -= Other stuff - -Author:: Jim Weirich -Requires:: Ruby 1.8.0 or later -License:: Copyright 2003-2008 by Jim Weirich. - Released under an MIT-style license. See the LICENSE file - included in the distribution. - -== Warranty - -This software is provided "as is" and without any express or -implied warranties, including, without limitation, the implied -warranties of merchantibility and fitness for a particular -purpose. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/Rakefile deleted file mode 100644 index 751ec983..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/Rakefile +++ /dev/null @@ -1,430 +0,0 @@ -# Rakefile for rake -*- ruby -*- - -# Copyright 2003, 2004, 2005 by Jim Weirich (jim@weirichhouse.org) -# All rights reserved. - -# This file may be distributed under an MIT style license. See -# MIT-LICENSE for details. - -begin - require 'rubygems' - require 'rake/gempackagetask' -rescue Exception - nil -end -require 'rake/clean' -require 'rake/testtask' -require 'rake/rdoctask' - -CLEAN.include('**/*.o', '*.dot', '**/.*.rbc') -CLOBBER.include('doc/example/main', 'testdata') -CLOBBER.include('test/data/**/temp_*') -CLOBBER.include('test/data/chains/play.*') -CLOBBER.include('test/data/file_creation_task/build') -CLOBBER.include('test/data/file_creation_task/src') -CLOBBER.include('TAGS') -CLOBBER.include('coverage', 'rcov_aggregate') - -# Prevent OS X from including extended attribute junk in the tar output -ENV['COPY_EXTENDED_ATTRIBUTES_DISABLE'] = 'true' - -def announce(msg='') - STDERR.puts msg -end - -# Determine the current version of the software - -if `ruby -Ilib ./bin/rake --version` =~ /rake, version ([0-9.]+)$/ - CURRENT_VERSION = $1 -else - CURRENT_VERSION = "0.0.0" -end - -$package_version = CURRENT_VERSION - -SRC_RB = FileList['lib/**/*.rb'] - -# The default task is run if rake is given no explicit arguments. - -desc "Default Task" -task :default => :test_all - -# Test Tasks --------------------------------------------------------- -task :dbg do |t| - puts "Arguments are: #{t.args.join(', ')}" -end - -# Common Abbreviations ... - -task :ta => :test_all -task :tf => :test_functional -task :tu => :test_units -task :tc => :test_contribs -task :test => :test_units - -Rake::TestTask.new(:test_all) do |t| - t.test_files = FileList[ - 'test/test*.rb', - 'test/contrib/test*.rb', - 'test/fun*.rb' - ] - t.warning = true - t.verbose = false -end - -Rake::TestTask.new(:test_units) do |t| - t.test_files = FileList['test/test*.rb'] - t.warning = true - t.verbose = false -end - -Rake::TestTask.new(:test_functional) do |t| - t.test_files = FileList['test/fun*.rb'] - t.warning = true - t.verbose = false -end - -Rake::TestTask.new(:test_contribs) do |t| - t.test_files = FileList['test/contrib/test*.rb'] - t.warning = true - t.verbose = false -end - -begin - require 'rcov/rcovtask' - - Rcov::RcovTask.new do |t| - t.libs << "test" - dot_rakes = - t.rcov_opts = [ - '-xRakefile', '-xrakefile', '-xpublish.rf', - '-xlib/rake/contrib', '-x/Library', - '--text-report', - '--sort coverage' - ] + FileList['rakelib/*.rake'].pathmap("-x%p") - t.test_files = FileList[ - 'test/test*.rb', 'test/functional.rb' - ] - t.output_dir = 'coverage' - t.verbose = true - end -rescue LoadError - puts "RCov is not available" -end - -directory 'testdata' -[:test_all, :test_units, :test_contribs, :test_functional].each do |t| - task t => ['testdata'] -end - -# CVS Tasks ---------------------------------------------------------- - -# Install rake using the standard install.rb script. - -desc "Install the application" -task :install do - ruby "install.rb" -end - -# Create a task to build the RDOC documentation tree. - -begin - require 'darkfish-rdoc' - DARKFISH_ENABLED = true -rescue LoadError => ex - DARKFISH_ENABLED = false -end - -BASE_RDOC_OPTIONS = [ - '--line-numbers', - '--main', 'README', - '--title', 'Rake -- Ruby Make', -] - -rd = Rake::RDocTask.new("rdoc") do |rdoc| - rdoc.rdoc_dir = 'html' - rdoc.template = 'doc/jamis.rb' - rdoc.title = "Rake -- Ruby Make" - rdoc.options = BASE_RDOC_OPTIONS.dup - rdoc.options << '-SHN' << '-f' << 'darkfish' if DARKFISH_ENABLED - - rdoc.rdoc_files.include('README', 'MIT-LICENSE', 'TODO', 'CHANGES') - rdoc.rdoc_files.include('lib/**/*.rb', 'doc/**/*.rdoc') - rdoc.rdoc_files.exclude(/\bcontrib\b/) -end - -# ==================================================================== -# Create a task that will package the Rake software into distributable -# tar, zip and gem files. - -PKG_FILES = FileList[ - 'install.rb', - '[A-Z]*', - 'bin/**/*', - 'lib/**/*.rb', - 'test/**/*.rb', - 'test/**/*.rf', - 'test/**/*.mf', - 'test/**/Rakefile', - 'test/**/subdir', - 'doc/**/*' -] -PKG_FILES.exclude('doc/example/*.o') -PKG_FILES.exclude('TAGS') -PKG_FILES.exclude(%r{doc/example/main$}) - -if ! defined?(Gem) - puts "Package Target requires RubyGEMs" -else - SPEC = Gem::Specification.new do |s| - - #### Basic information. - - s.name = 'rake' - s.version = $package_version - s.summary = "Ruby based make-like utility." - s.description = <<-EOF - Rake is a Make-like program implemented in Ruby. Tasks - and dependencies are specified in standard Ruby syntax. - EOF - - #### Dependencies and requirements. - - #s.add_dependency('log4r', '> 1.0.4') - #s.requirements << "" - - #### Which files are to be included in this gem? Everything! (Except CVS directories.) - - s.files = PKG_FILES.to_a - - #### C code extensions. - - #s.extensions << "ext/rmagic/extconf.rb" - - #### Load-time details: library and application (you will need one or both). - - s.require_path = 'lib' # Use these for libraries. - - s.bindir = "bin" # Use these for applications. - s.executables = ["rake"] - s.default_executable = "rake" - - #### Documentation and testing. - - s.has_rdoc = true - s.extra_rdoc_files = rd.rdoc_files.reject { |fn| fn =~ /\.rb$/ }.to_a - s.rdoc_options = BASE_RDOC_OPTIONS - - #### Author and project details. - - s.author = "Jim Weirich" - s.email = "jim@weirichhouse.org" - s.homepage = "http://rake.rubyforge.org" - s.rubyforge_project = "rake" -# if ENV['CERT_DIR'] -# s.signing_key = File.join(ENV['CERT_DIR'], 'gem-private_key.pem') -# s.cert_chain = [File.join(ENV['CERT_DIR'], 'gem-public_cert.pem')] -# end - end - - package_task = Rake::GemPackageTask.new(SPEC) do |pkg| - pkg.need_zip = true - pkg.need_tar = true - end - - file "rake.gemspec" => ["Rakefile", "lib/rake.rb"] do |t| - require 'yaml' - open(t.name, "w") { |f| f.puts SPEC.to_yaml } - end - - desc "Create a stand-alone gemspec" - task :gemspec => "rake.gemspec" -end - -# Misc tasks ========================================================= - -def count_lines(filename) - lines = 0 - codelines = 0 - open(filename) { |f| - f.each do |line| - lines += 1 - next if line =~ /^\s*$/ - next if line =~ /^\s*#/ - codelines += 1 - end - } - [lines, codelines] -end - -def show_line(msg, lines, loc) - printf "%6s %6s %s\n", lines.to_s, loc.to_s, msg -end - -desc "Count lines in the main rake file" -task :lines do - total_lines = 0 - total_code = 0 - show_line("File Name", "LINES", "LOC") - SRC_RB.each do |fn| - lines, codelines = count_lines(fn) - show_line(fn, lines, codelines) - total_lines += lines - total_code += codelines - end - show_line("TOTAL", total_lines, total_code) -end - -# Define an optional publish target in an external file. If the -# publish.rf file is not found, the publish targets won't be defined. - -load "publish.rf" if File.exist? "publish.rf" - -# Support Tasks ------------------------------------------------------ - -RUBY_FILES = FileList['**/*.rb'].exclude('pkg') - -desc "Look for TODO and FIXME tags in the code" -task :todo do - RUBY_FILES.egrep(/#.*(FIXME|TODO|TBD)/) -end - -desc "Look for Debugging print lines" -task :dbg do - RUBY_FILES.egrep(/\bDBG|\bbreakpoint\b/) -end - -desc "List all ruby files" -task :rubyfiles do - puts RUBY_FILES - puts FileList['bin/*'].exclude('bin/*.rb') -end -task :rf => :rubyfiles - -desc "Create a TAGS file" -task :tags => "TAGS" - -TAGS = 'xctags -e' - -file "TAGS" => RUBY_FILES do - puts "Makings TAGS" - sh "#{TAGS} #{RUBY_FILES}", :verbose => false -end - -# -------------------------------------------------------------------- -# Creating a release - -def plugin(plugin_name) - require "rake/plugins/#{plugin_name}" -end - -task :noop -#plugin "release_manager" - -desc "Make a new release" -task :release, :rel, :reuse, :reltest, - :needs => [ - :prerelease, - :clobber, - :test_all, - :update_version, - :package, - :tag - ] do - announce - announce "**************************************************************" - announce "* Release #{$package_version} Complete." - announce "* Packages ready to upload." - announce "**************************************************************" - announce -end - -# Validate that everything is ready to go for a release. -task :prerelease, :rel, :reuse, :reltest do |t, args| - $package_version = args.rel - announce - announce "**************************************************************" - announce "* Making RubyGem Release #{$package_version}" - announce "* (current version #{CURRENT_VERSION})" - announce "**************************************************************" - announce - - # Is a release number supplied? - unless args.rel - fail "Usage: rake release[X.Y.Z] [REUSE=tag_suffix]" - end - - # Is the release different than the current release. - # (or is REUSE set?) - if $package_version == CURRENT_VERSION && ! args.reuse - fail "Current version is #{$package_version}, must specify REUSE=tag_suffix to reuse version" - end - - # Are all source files checked in? - if args.reltest - announce "Release Task Testing, skipping checked-in file test" - else - announce "Checking for unchecked-in files..." - data = `svn st` - unless data =~ /^$/ - abort "svn status is not clean ... do you have unchecked-in files?" - end - announce "No outstanding checkins found ... OK" - end -end - -task :update_version, :rel, :reuse, :reltest, - :needs => [:prerelease] do |t, args| - if args.rel == CURRENT_VERSION - announce "No version change ... skipping version update" - else - announce "Updating Rake version to #{args.rel}" - open("lib/rake.rb") do |rakein| - open("lib/rake.rb.new", "w") do |rakeout| - rakein.each do |line| - if line =~ /^RAKEVERSION\s*=\s*/ - rakeout.puts "RAKEVERSION = '#{args.rel}'" - else - rakeout.puts line - end - end - end - end - mv "lib/rake.rb.new", "lib/rake.rb" - if args.reltest - announce "Release Task Testing, skipping commiting of new version" - else - sh %{svn commit -m "Updated to version #{args.rel}" lib/rake.rb} # " - end - end -end - -desc "Tag all the CVS files with the latest release number (REL=x.y.z)" -task :tag, :rel, :reuse, :reltest, - :needs => [:prerelease] do |t, args| - reltag = "REL_#{args.rel.gsub(/\./, '_')}" - reltag << args.reuse.gsub(/\./, '_') if args.reuse - announce "Tagging Repository with [#{reltag}]" - if args.reltest - announce "Release Task Testing, skipping CVS tagging" - else - sh %{svn copy svn+ssh://rubyforge.org/var/svn/rake/trunk svn+ssh://rubyforge.org/var/svn/rake/tags/#{reltag} -m 'Commiting release #{reltag}'} ###' - end -end - -desc "Install the jamis RDoc template" -task :install_jamis_template do - require 'rbconfig' - dest_dir = File.join(Config::CONFIG['rubylibdir'], "rdoc/generators/template/html") - fail "Unabled to write to #{dest_dir}" unless File.writable?(dest_dir) - install "doc/jamis.rb", dest_dir, :verbose => true -end - -# Require experimental XForge/Metaproject support. - -load 'xforge.rf' if File.exist?('xforge.rf') - -desc "Where is the current directory. This task displays\nthe current rake directory" -task :where_am_i do - puts Rake.original_dir -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/TODO b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/TODO deleted file mode 100644 index bd8a9694..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/TODO +++ /dev/null @@ -1,20 +0,0 @@ -= Rake Project -- To Do List - -Send suggestions for this list to mailto:jim@weirichhouse.org or on -the rake-devel@rubyforge.org mailing list. - -=== To Do -* Need a nice API for accessing tasks in namespaces, namespaces in an app, etc. -* Provide a way to disable -w warning mode. -* Define a set of default rules that work in the absense of any Rakefile -* What about cyclic dependencies? -* Java support utilities -* Installation support utilities - * Check out installpkg.rb -* Autogenerate Dependencies -* Rules should apply to existing tasks if no actions are defined. -* How to create multiple package tasks without task name collision? -* Trap "ln -s" commands that fail and use "cp" instead (SMB mounted - drives have problems with "ln -s". - -(moved DONE list to CHANGES file) diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/bin/rake b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/bin/rake deleted file mode 100755 index c9e95da6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/bin/rake +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env ruby - -#-- -# Copyright (c) 2003, 2004, 2005, 2006, 2007 Jim Weirich -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -#++ - -begin - require 'rake' -rescue LoadError - require 'rubygems' - require 'rake' -end -Rake.application.run diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/command_line_usage.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/command_line_usage.rdoc deleted file mode 100644 index c60e53f5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/command_line_usage.rdoc +++ /dev/null @@ -1,102 +0,0 @@ -= Rake Command Line Usage - -Rake is invoked from the command line using: - - % rake [options ...] [VAR=VALUE] [targets ...] - -Options are: - -[name=value] - Set the environment variable name to value - during the execution of the rake command. You can access - the value by using ENV['name']. - -[--classic-namespace (-n)] - Import the Task, FileTask, and FileCreateTask into the top-level - scope to be compatible with older versions of Rake. Alternatively - you can include the line require - 'rake/classic_namespace' in your Rakefile to get the - classic behavior. - -[--describe _pattern_ (-D)] - Describe the tasks (matching optional PATTERN), then exit. - -[--dry-run (-n)] - Do a dry run. Print the tasks invoked and executed, but do not - actually execute any of the actions. - -[--execute _code_ (-e)] - Execute some Ruby code and exit. - -[--execute-print _code_ (-p)] - Execute some Ruby code, print the result, and exit. - -[--execute-continue _code_ (-p)] - Execute some Ruby code, then continue with normal task processing. - -[--help (-H)] - Display some help text and exit. - -[--libdir _directory_ (-I)] - Add _directory_ to the list of directories searched for require. - -[--nosearch (-N)] - Do not search for a Rakefile in parent directories. - -[--prereqs (-P)] - Display a list of all tasks and their immediate prerequisites. - -[--quiet (-q)] - Do not echo commands from FileUtils. - -[--rakefile _filename_ (-f)] - Use _filename_ as the name of the rakefile. The default rakefile - names are +rakefile+ and +Rakefile+ (with +rakefile+ taking - precedence). If the rakefile is not found in the current - directory, +rake+ will search parent directories for a match. The - directory where the Rakefile is found will become the current - directory for the actions executed in the Rakefile. - -[--rakelibdir _rakelibdir_ (-R)] - Auto-import any .rake files in RAKELIBDIR. (default is 'rakelib') - -[--require _name_ (-r)] - Require _name_ before executing the Rakefile. - -[--rules] - Trace the rules resolution. - -[--silent (-s)] - Like --quiet, but also suppresses the 'in directory' announcement. - -[--system (-g)] - Use the system wide (global) rakefiles. The project Rakefile is - ignored. By default, the system wide rakefiles are used only if no - project Rakefile is found. On Unix-like system, the system wide - rake files are located in $HOME/.rake. On a windows system they - are stored in $APPDATA/Rake. - -[--no-system (-G)] - Use the project level Rakefile, ignoring the system-wide (global) - rakefiles. - -[--tasks (-T)] - Display a list of the major tasks and their comments. Comments - are defined using the "desc" command. - -[--trace (-t)] - Turn on invoke/execute tracing. Also enable full backtrace on - errors. - -[--usage (-h)] - Display a usage message and exit. - -[--verbose (-v)] - Echo the Sys commands to standard output. - -[--version (-V)] - Display the program version and exit. - -In addition, any command line option of the form -VAR=VALUE will be added to the environment hash -ENV and may be tested in the Rakefile. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/Rakefile1 b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/Rakefile1 deleted file mode 100644 index 39f8bcce..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/Rakefile1 +++ /dev/null @@ -1,38 +0,0 @@ -# Example Rakefile -*- ruby -*- - -task :default => [:main] - -file "a.o" => ["a.c"] do |t| - src = t.name.sub(/\.o$/, '.c') - sh "gcc #{src} -c -o #{t.name}" -end - -file "b.o" => ["b.c"] do |t| - src = t.name.sub(/\.o$/, '.c') - sh "gcc #{src} -c -o #{t.name}" -end - -file "main.o" => ["main.c"] do |t| - src = t.name.sub(/\.o$/, '.c') - sh "gcc #{src} -c -o #{t.name}" -end - -OBJFILES = ["a.o", "b.o", "main.o"] -task :obj => OBJFILES - -file "main" => OBJFILES do |t| - sh "gcc -o #{t.name} main.o a.o b.o" -end - -task :clean do - rm_f FileList['*.o'] - Dir['*~'].each { |fn| rm_f fn } -end - -task :clobber => [:clean] do - rm_f "main" -end - -task :run => ["main"] do - sh "./main" -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/Rakefile2 b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/Rakefile2 deleted file mode 100644 index 35310ece..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/Rakefile2 +++ /dev/null @@ -1,35 +0,0 @@ -# Example Rakefile -*- ruby -*- -# Using the power of Ruby - -task :default => [:main] - -def ext(fn, newext) - fn.sub(/\.[^.]+$/, newext) -end - -SRCFILES = Dir['*.c'] -OBJFILES = SRCFILES.collect { |fn| ext(fn,".o") } - -OBJFILES.each do |objfile| - srcfile = ext(objfile, ".c") - file objfile => [srcfile] do |t| - sh "gcc #{srcfile} -c -o #{t.name}" - end -end - -file "main" => OBJFILES do |t| - sh "gcc -o #{t.name} main.o a.o b.o" -end - -task :clean do - rm_f FileList['*.o'] - Dir['*~'].each { |fn| rm_f fn } -end - -task :clobber => [:clean] do - rm_f "main" -end - -task :run => ["main"] do - sh "./main" -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/a.c b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/a.c deleted file mode 100644 index 620e6f80..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/a.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -void a() -{ - printf ("In function a\n"); -} diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/b.c b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/b.c deleted file mode 100644 index 9b24aa12..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/b.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -void b() -{ - printf ("In function b\n"); -} diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/main.c b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/main.c deleted file mode 100644 index a04558a2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/example/main.c +++ /dev/null @@ -1,11 +0,0 @@ -#include - -extern void a(); -extern void b(); - -int main () -{ - a(); - b(); - return 0; -} diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/glossary.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/glossary.rdoc deleted file mode 100644 index 0ca18693..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/glossary.rdoc +++ /dev/null @@ -1,51 +0,0 @@ -= Glossary - -[action] - Code to be executed in order to perform a task. Actions in a - rakefile are specified in a code block (usually delimited by - +do+/+end+ pairs. - -[execute] - When a task is executed, all of its actions are performed, in - the order they were defined. Note that unlike - invoke, execute always executes the actions - (without invoking or executing the prerequisites). - -[file task (FileTask)] - A file task is a task whose purpose is to create a file - (which has the same name as the task). When invoked, a file - task will only execute if one or more of the following - conditions are true. - - 1. The associated file does not exist. - 2. A prerequisite has a later time stamp than the existing file. - - Because normal Tasks always have the current time as - timestamp, a FileTask that has a normal Task prerequisite - will always execute. - -[invoke] - When a task is invoked, first we check to see if it has been - invoked before. if it has been, then nothing else is done. - If this is the first time its been invoked, then we invoke - each of its prerequisites. Finally, we check to see if we - need to execute the actions of this task by calling - needed?. Finally, if the task is needed, we execute - its actions. - - NOTE: Currently prerequisites are invoked even if the task is - not needed. This may change in the future. - -[prerequisites] - Every task has a set (possiblity empty) of prerequisites. A - prerequisite P to Task T is itself a task that must be invoked - before Task T. - -[rule] - A rule is a recipe for synthesizing a task when no task is - explicitly defined. Rules generally synthesize file tasks. - -[task (Task)] - Basic unit of work in a rakefile. A task has a name, a set of - prerequisites and a list of actions to be performed. - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/jamis.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/jamis.rb deleted file mode 100644 index c7439d88..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/jamis.rb +++ /dev/null @@ -1,591 +0,0 @@ -module RDoc -module Page - -FONTS = "\"Bitstream Vera Sans\", Verdana, Arial, Helvetica, sans-serif" - -STYLE = < pre { - padding: 0.5em; - border: 1px dotted black; - background: #FFE; -} - -CSS - -XHTML_PREAMBLE = %{ - -} - -HEADER = XHTML_PREAMBLE + < - - %title% - - - - - - - -ENDHEADER - -FILE_PAGE = < - - - - -
        File
        %short_name%
        - - - - - - - - - -
        Path:%full_path% -IF:cvsurl -  (CVS) -ENDIF:cvsurl -
        Modified:%dtm_modified%
        -
        - -
        -HTML - -################################################################### - -CLASS_PAGE = < - %classmod%
        %full_name% - - - - - - -IF:parent - - - - -ENDIF:parent -
        In: -START:infiles -HREF:full_path_url:full_path: -IF:cvsurl - (CVS) -ENDIF:cvsurl -END:infiles -
        Parent: -IF:par_url - -ENDIF:par_url -%parent% -IF:par_url - -ENDIF:par_url -
        - - - -HTML - -################################################################### - -METHOD_LIST = < -IF:diagram -
        - %diagram% -
        -ENDIF:diagram - -IF:description -
        %description%
        -ENDIF:description - -IF:requires -
        Required Files
        -
          -START:requires -
        • HREF:aref:name:
        • -END:requires -
        -ENDIF:requires - -IF:toc -
        Contents
        - -ENDIF:toc - -IF:methods -
        Methods
        -
          -START:methods -
        • HREF:aref:name:
        • -END:methods -
        -ENDIF:methods - -IF:includes -
        Included Modules
        -
          -START:includes -
        • HREF:aref:name:
        • -END:includes -
        -ENDIF:includes - -START:sections -IF:sectitle - -IF:seccomment -
        -%seccomment% -
        -ENDIF:seccomment -ENDIF:sectitle - -IF:classlist -
        Classes and Modules
        - %classlist% -ENDIF:classlist - -IF:constants -
        Constants
        - -START:constants - - - - - -IF:desc - - - - -ENDIF:desc -END:constants -
        %name%=%value%
         %desc%
        -ENDIF:constants - -IF:attributes -
        Attributes
        - -START:attributes - - - - - -END:attributes -
        -IF:rw -[%rw%] -ENDIF:rw - %name%%a_desc%
        -ENDIF:attributes - -IF:method_list -START:method_list -IF:methods -
        %type% %category% methods
        -START:methods -
        -
        -IF:callseq - %callseq% -ENDIF:callseq -IFNOT:callseq - %name%%params% -ENDIF:callseq -IF:codeurl -[ source ] -ENDIF:codeurl -
        -IF:m_desc -
        - %m_desc% -
        -ENDIF:m_desc -IF:aka -
        - This method is also aliased as -START:aka - %name% -END:aka -
        -ENDIF:aka -IF:sourcecode -
        - -
        -
        -%sourcecode%
        -
        -
        -
        -ENDIF:sourcecode -
        -END:methods -ENDIF:methods -END:method_list -ENDIF:method_list -END:sections -
    -HTML - -FOOTER = < - -ENDFOOTER - -BODY = HEADER + < - -
    - #{METHOD_LIST} -
    - - #{FOOTER} -ENDBODY - -########################## Source code ########################## - -SRC_PAGE = XHTML_PREAMBLE + < -%title% - - - - -
    %code%
    - - -HTML - -########################## Index ################################ - -FR_INDEX_BODY = < - - - - - - - -
    -START:entries -%name%
    -END:entries -
    - -HTML - -CLASS_INDEX = FILE_INDEX -METHOD_INDEX = FILE_INDEX - -INDEX = XHTML_PREAMBLE + < - - %title% - - - - - - - - - -IF:inline_source - -ENDIF:inline_source -IFNOT:inline_source - - - - -ENDIF:inline_source - - <body bgcolor="white"> - Click <a href="html/index.html">here</a> for a non-frames - version of this page. - </body> - - - - -HTML - -end -end - - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/proto_rake.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/proto_rake.rdoc deleted file mode 100644 index 39b9b88c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/proto_rake.rdoc +++ /dev/null @@ -1,127 +0,0 @@ -= Original Prototype Rake - -This is the original 100 line prototype rake program. - ---- - #!/usr/bin/env ruby - - require 'ftools' - - class Task - TASKS = Hash.new - - attr_reader :prerequisites - - def initialize(task_name) - @name = task_name - @prerequisites = [] - @actions = [] - end - - def enhance(deps=nil, &block) - @prerequisites |= deps if deps - @actions << block if block_given? - self - end - - def name - @name.to_s - end - - def invoke - @prerequisites.each { |n| Task[n].invoke } - execute if needed? - end - - def execute - return if @triggered - @triggered = true - @actions.collect { |act| result = act.call(self) }.last - end - - def needed? - true - end - - def timestamp - Time.now - end - - class << self - def [](task_name) - TASKS[intern(task_name)] or fail "Don't know how to rake #{task_name}" - end - - def define_task(args, &block) - case args - when Hash - fail "Too Many Target Names: #{args.keys.join(' ')}" if args.size > 1 - fail "No Task Name Given" if args.size < 1 - task_name = args.keys[0] - deps = args[task_name] - else - task_name = args - deps = [] - end - deps = deps.collect {|d| intern(d) } - get(task_name).enhance(deps, &block) - end - - def get(task_name) - name = intern(task_name) - TASKS[name] ||= self.new(name) - end - - def intern(task_name) - (Symbol === task_name) ? task_name : task_name.intern - end - end - end - - class FileTask < Task - def needed? - return true unless File.exist?(name) - latest_prereq = @prerequisites.collect{|n| Task[n].timestamp}.max - return false if latest_prereq.nil? - timestamp < latest_prereq - end - - def timestamp - File.new(name.to_s).mtime - end - end - - def task(args, &block) - Task.define_task(args, &block) - end - - def file(args, &block) - FileTask.define_task(args, &block) - end - - def sys(cmd) - puts cmd - system(cmd) or fail "Command Failed: [#{cmd}]" - end - - def rake - begin - here = Dir.pwd - while ! File.exist?("Rakefile") - Dir.chdir("..") - fail "No Rakefile found" if Dir.pwd == here - here = Dir.pwd - end - puts "(in #{Dir.pwd})" - load "./Rakefile" - ARGV.push("default") if ARGV.size == 0 - ARGV.each { |task_name| Task[task_name].invoke } - rescue Exception => ex - puts "rake aborted ... #{ex.message}" - puts ex.backtrace.find {|str| str =~ /Rakefile/ } || "" - end - end - - if __FILE__ == $0 then - rake - end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/rake.1.gz b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/rake.1.gz deleted file mode 100644 index 02af4de4b50404e7a74f9495a78d3a2d4c42a312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1369 zcmV-f1*ZBRiwFph;1ogv19D+&WiBxQomSg!+eQ$5=T{8!5~-EwxImG@NZdHF0;}~! zkmNQ&-G?PPG&iPpnY~zHzrJUeq$~@0C~6qCyfb@d=FFK{r*|*tKYd+rJE7Ut*@x8$ zO@Ek@GP*3orz8c$M`^61Mi{YS$7Vv;XIHZc*-HDmpo~e>HRYnQ(R;i*iYW870 zzq#JOaXkHHLL1TIsuiLO4XPSn(sm8Ge*js(aWX zek1NV4OhFO^oA*tvJtt_c0#2NcS<&_az2Spsj3D-3u#4GGgWPa0Ag2KTD5}Uq9Be~x)ajms`tg`})3`Reb~yyLdQzvh;arw7-%htx@Vl`hS>3cHqa5<;HNH>95OMfS* zBs!kYRv(u0MNs76OO>#(@1+hZ3o0mCIB(dVB*_o7gbzqzOQYca(h?M7flIoitHC&q zI?Z)R*m2!bfpf(Lcu9z?LwAHJXz8<-Y^$93mJ(fS`gCowSmG#roE$)47m$*pPa}DL<_Qw$obcC$ot8v%i$+VnY$PrlMeMc zBQx*7Netf)y3t=S{TOq6hcdx`r$WZ{#bAv!7ThpI?i+9)J6C8@+EJ_m><1@6L=z%H zkq(Ok@!;<;6YNleb-W1~r;9}t=bAr}k2GN;g=-t#H4>_IaUx>2K_GYK`!`#}2rJ|C zu3UtXix_w1{JDWGHX^7*Vqrr>_N02$1rpQHa)}PbftAQm<`{#B1IaaE6+S{hY1HdY zlqz(+UL@0LVcMzjYJYi;rfQs=YqT9k3dWFbkOqI_+`AxW5w|Of?ocYOn}a7{G`#?d zv`q~T;(m-y8@9IFgz;i6vqGA;m-F}M^W|`HK2GK;uRTiZ4N^t6EDMuYK|oc%FJqSq z5L`f6yL6Q9J@?bOjzxv$?qINMAps!dP8$hM184{|4CnyZ>DoT8Z?Rt=_hS$`(1{9N z0^}sv6qv&p_F%{vvN<5@>n^)m-w!NxBQgv+I?(tXis@5)`*D6b8&Jw|g88I))UP0O zP)g6)+pC-N+y3HcYR1X3SA2h-aT!GW)bT?ci_gj(RAI--rNpT8MNY71u}5mF;|hQl zEq7VHL`MhW+m~QXX%AIz067Hc_&f-({-2yX6UO5J%#D+^H!93>n4||j>dFN!+)?yo z_kwx+N0N#BA>s_6KJ@4iw0g?W?<*a1oI#e)ogcy1Q@g*@Z5mwUv&3NPAhMrW6+o8+_hafRYFDR%G6u>Nu%nh^hg2oFt)={xe)9N7xvas>O4 z8J@_q+x5lGvU^&$klWTsY<8^XmVT2P`je%Rn6o!uHTpCe#`!k$%K718 bpixj|znYOw5kTV8VZrjh-^fVx). - - task :name => [:prereq1, :prereq2] - -NOTE: Although this syntax looks a little funky, it is legal -Ruby. We are constructing a hash where the key is :name and the value -for that key is the list of prerequisites. It is equivalent to the -following ... - - hash = Hash.new - hash[:name] = [:prereq1, :prereq2] - task(hash) - -=== Tasks with Actions - -Actions are defined by passing a block to the +task+ method. Any Ruby -code can be placed in the block. The block may reference the task -object via the block paramter.. - - task :name => [:prereq1, :prereq2] do |t| - # actions (may reference t) - end - -=== Multiple Definitions - -A task may be specified more than once. Each specification adds its -prerequisites and actions to the existing definition. This allows one -part of a rakefile to specify the actions and a different rakefile -(perhaps separately generated) to specify the dependencies. - -For example, the following is equivalent to the single task -specification given above. - - task :name - task :name => [:prereq1] - task :name => [:prereq2] - task :name do |t| - # actions - end - -== File Tasks - -Some tasks are designed to create a file from one or more other files. -Tasks that generate these files may be skipped if the file already -exists. File tasks are used to specify file creation tasks. - -File tasks are declared using the +file+ method (instead of the +task+ -method). In addition, file tasks are usually named with a string -rather than a symbol. - -The following file task creates a executable program (named +prog+) -given two object files name a.o and b.o. The tasks -for creating a.o and b.o are not shown. - - file "prog" => ["a.o", "b.o"] do |t| - sh "cc -o #{t.name} #{t.prerequisites.join(' ')}" - end - -== Directory Tasks - -It is common to need to create directories upon demand. The -+directory+ convenience method is a short-hand for creating a FileTask -that creates the directory. For example, the following declaration -... - - directory "testdata/examples/doc" - -is equivalent to ... - - file "testdata" do |t| mkdir t.name end - file "testdata/examples" do |t| mkdir t.name end - file "testdata/examples/doc" do |t| mkdir t.name end - -The +directory+ method does not accept prerequisites or actions, but -both prerequisites and actions can be added later. For example ... - - directory "testdata" - file "testdata" => ["otherdata"] - file "testdata" do - cp Dir["standard_data/*.data"], "testdata" - end - -== Tasks with Parallel Prerequisites - -Rake allows parallel execution of prerequisites using the following syntax: - - multitask :copy_files => [:copy_src, :copy_doc, :copy_bin] do - puts "All Copies Complete" - end - -In this example, +copy_files+ is a normal rake task. Its actions are -executed whereever all of its prerequisites are done. The big -difference is that the prerequisites (+copy_src+, +copy_bin+ and -+copy_doc+) are executed in parallel. Each of the prerequisites are -run in their own Ruby thread, possibly allowing faster overall runtime. - -=== Secondary Prerequisites - -If any of the primary prerequites of a multitask have common secondary -prerequisites, all of the primary/parallel prerequisites will wait -until the common prerequisites have been run. - -For example, if the copy_xxx tasks have the -following prerequisites: - - task :copy_src => [:prep_for_copy] - task :copy_bin => [:prep_for_copy] - task :copy_doc => [:prep_for_copy] - -Then the +prep_for_copy+ task is run before starting all the copies in -parallel. Once +prep_for_copy+ is complete, +copy_src+, +copy_bin+, -and +copy_doc+ are all run in parallel. Note that +prep_for_copy+ is -run only once, even though it is referenced in multiple threads. - -=== Thread Safety - -The Rake internal data structures are thread-safe with respect -to the multitask parallel execution, so there is no need for the user -to do extra synchronization for Rake's benefit. However, if there are -user data structures shared between the parallel prerequisites, the -user must do whatever is necessary to prevent race conditions. - -== Tasks with Arguments - -Prior to version 0.8.0, rake was only able to handle command line -arguments of the form NAME=VALUE that were passed into Rake via the -ENV hash. Many folks had asked for some kind of simple command line -arguments, perhaps using "--" to separate regular task names from -argument values on the command line. The problem is that there was no -easy way to associate positional arguments on the command line with -different tasks. Suppose both tasks :a and :b expect a command line -argument: does the first value go with :a? What if :b is run first? -Should it then get the first command line argument. - -Rake 0.8.0 solves this problem by explicitly passing values directly -to the tasks that need them. For example, if I had a release task -that required a version number, I could say: - - rake release[0.8.2] - -And the string "0.8.2" will be passed to the :release task. Multiple -arguments can be passed by separating them with a comma, for example: - - rake name[john,doe] - -Just a few words of caution. The rake task name and its arguments -need to be a single command line argument to rake. This generally -means no spaces. If spaces are needed, then the entire rake + -argument string should be quoted. Something like this: - - rake "name[billy bob, smith]" - -(Quoting rules vary between operating systems and shells, so make sure -you consult the proper docs for your OS/shell). - -=== Tasks that Expect Parameters - -Parameters are only given to tasks that are setup to expect them. In -order to handle named parameters, the task declaration syntax for -tasks has been extended slightly. - -For example, a task that needs a first name and last name might be -declared as: - - task :name, [:first_name, :last_name] - -The first argument is still the name of the task (:name in this case). -The next to argumements are the names of the parameters expected by -:name in an array (:first_name and :last_name in the example). - -To access the values of the paramters, the block defining the task -behaviour can now accept a second parameter: - - task :name, [:first_name, :last_name] do |t, args| - puts "First name is #{args.first_name}" - puts "Last name is #{args.last_name}" - end - -The first argument of the block "t" is always bound to the current -task object. The second argument "args" is an open-struct like object -that allows access to the task arguments. Extra command line -arguments to a task are ignored. Missing command line arguments are -given the nil value. - -If you wish to specify default values for the arguments, you can use -the with_defaults method in the task body. Here is the above example -where we specify default values for the first and last names: - - task :name, [:first_name, :last_name] do |t, args| - args.with_defaults(:first_name => "John", :last_name => "Dough") - puts "First name is #{args.first_name}" - puts "Last name is #{args.last_name}" - end - -=== Tasks that Expect Parameters and Have Prerequisites - -Tasks that use parameters have a slightly different format for -prerequisites. Use the arrow notation to indicate the prerequisites -for tasks with arguments. For example: - - task :name, [:first_name, :last_name] => [:pre_name] do |t, args| - args.with_defaults(:first_name => "John", :last_name => "Dough") - puts "First name is #{args.first_name}" - puts "Last name is #{args.last_name}" - end - -=== Deprecated Task Parameters Format - -There is an older format for declaring task parameters that omitted -the task argument array and used the :needs keyword to introduce the -dependencies. That format is still supported for compatibility, but -is not recommended for use. - -== Accessing Task Programatically - -Sometimes it is useful to manipulate tasks programatically in a -Rakefile. To find a task object, use the :[] operator on the -Rake::Task. - -=== Programmatic Task Example - -For example, the following Rakefile defines two tasks. The :doit task -simply prints a simple "DONE" message. The :dont class will lookup -the doit class and remove (clear) all of its prerequisites and -actions. - - task :doit do - puts "DONE" - end - - task :dont do - Rake::Task[:doit].clear - end - -Running this example: - - $ rake doit - (in /Users/jim/working/git/rake/x) - DONE - $ rake dont doit - (in /Users/jim/working/git/rake/x) - $ - -The ability to programmatically manipulate tasks gives rake very -powerful meta-programming capabilities w.r.t. task execution, but -should be used with cation. - -== Rules - -When a file is named as a prerequisite, but does not have a file task -defined for it, Rake will attempt to synthesize a task by looking at a -list of rules supplied in the Rakefile. - -Suppose we were trying to invoke task "mycode.o", but no task is -defined for it. But the rakefile has a rule that look like this ... - - rule '.o' => ['.c'] do |t| - sh "cc #{t.source} -c -o #{t.name}" - end - -This rule will synthesize any task that ends in ".o". It has a -prerequisite a source file with an extension of ".c" must exist. If -Rake is able to find a file named "mycode.c", it will automatically -create a task that builds "mycode.o" from "mycode.c". - -If the file "mycode.c" does not exist, rake will attempt -to recursively synthesize a rule for it. - -When a task is synthesized from a rule, the +source+ attribute of the -task is set to the matching source file. This allows us to write -rules with actions that reference the source file. - -=== Advanced Rules - -Any regular expression may be used as the rule pattern. Additionally, -a proc may be used to calculate the name of the source file. This -allows for complex patterns and sources. - -The following rule is equivalent to the example above. - - rule( /\.o$/ => [ - proc {|task_name| task_name.sub(/\.[^.]+$/, '.c') } - ]) do |t| - sh "cc #{t.source} -c -o #{t.name}" - end - -NOTE: Because of a _quirk_ in Ruby syntax, parenthesis are -required on *rule* when the first argument is a regular expression. - -The following rule might be used for Java files ... - - rule '.java' => [ - proc { |tn| tn.sub(/\.class$/, '.java').sub(/^classes\//, 'src/') } - ] do |t| - java_compile(t.source, t.name) - end - -NOTE: +java_compile+ is a hypothetical method that invokes the -java compiler. - -== Importing Dependencies - -Any ruby file (including other rakefiles) can be included with a -standard Ruby +require+ command. The rules and declarations in the -required file are just added to the definitions already accumulated. - -Because the files are loaded _before_ the rake targets are evaluated, -the loaded files must be "ready to go" when the rake command is -invoked. This make generated dependency files difficult to use. By -the time rake gets around to updating the dependencies file, it is too -late to load it. - -The +import+ command addresses this by specifying a file to be loaded -_after_ the main rakefile is loaded, but _before_ any targets on the -command line are specified. In addition, if the file name matches an -explicit task, that task is invoked before loading the file. This -allows dependency files to be generated and used in a single rake -command invocation. - -=== Example: - - require 'rake/loaders/makefile' - - file ".depends.mf" => [SRC_LIST] do |t| - sh "makedepend -f- -- #{CFLAGS} -- #{t.prerequisites} > #{t.name}" - end - - import ".depends.mf" - -If ".depends" does not exist, or is out of date w.r.t. the source -files, a new ".depends" file is generated using +makedepend+ before -loading. - -== Comments - -Standard Ruby comments (beginning with "#") can be used anywhere it is -legal in Ruby source code, including comments for tasks and rules. -However, if you wish a task to be described using the "-T" switch, -then you need to use the +desc+ command to describe the task. - -=== Example: - - desc "Create a distribution package" - task :package => [ ... ] do ... end - -The "-T" switch (or "--tasks" if you like to spell things out) will -display a list of tasks that have a defined comment. If you use -+desc+ to describe your major tasks, you have a semi-automatic way of -generating a summary of your Rake file. - - traken$ rake -T - (in /home/.../rake) - rake clean # Remove any temporary products. - rake clobber # Remove any generated file. - rake clobber_rdoc # Remove rdoc products - rake contrib_test # Run tests for contrib_test - rake default # Default Task - rake install # Install the application - rake lines # Count lines in the main rake file - rake rdoc # Build the rdoc HTML Files - rake rerdoc # Force a rebuild of the RDOC files - rake test # Run tests - rake testall # Run all test targets - -Only tasks with descriptions will be displayed with the "-T" switch. -Use "-P" (or "--prereqs") to get a list of all tasks and their -prerequisites. - -== Namespaces - -As projects grow (and along with it, the number of tasks), it is -common for task names to begin to clash. For example, if you might -have a main program and a set of sample programs built by a single -Rakefile. By placing the tasks related to the main program in one -namespace, and the tasks for building the sample programs in a -different namespace, the task names will not will not interfer with -each other. - -For example: - - namespace "main" - task :build do - # Build the main program - end - end - - namespace "samples" do - task :build do - # Build the sample programs - end - end - - task :build => ["main:build", "samples:build"] - -Referencing a task in a separate namespace can be achieved by -prefixing the task name with the namespace and a colon -(e.g. "main:build" refers to the :build task in the +main+ namespace). -Nested namespaces are supported, so - -Note that the name given in the +task+ command is always the unadorned -task name without any namespace prefixes. The +task+ command always -defines a task in the current namespace. - -=== FileTasks - -File task names are not scoped by the namespace command. Since the -name of a file task is the name of an actual file in the file system, -it makes little sense to include file task names in name space. -Directory tasks (created by the +directory+ command) are a type of -file task and are also not affected by namespaces. - -=== Name Resolution - -When looking up a task name, rake will start with the current -namespace and attempt to find the name there. If it fails to find a -name in the current namespace, it will search the parent namespaces -until a match is found (or an error occurs if there is no match). - -The "rake" namespace is a special implicit namespace that refers to -the toplevel names. - -If a task name begins with a "^" character, the name resolution will -start in the parent namespace. Multiple "^" characters are allowed. - -Here is an example file with multiple :run tasks and how various names -resolve in different locations. - - task :run - - namespace "one" do - task :run - - namespace "two" do - task :run - - # :run => "one:two:run" - # "two:run" => "one:two:run" - # "one:two:run" => "one:two:run" - # "one:run" => "one:run" - # "^run" => "one:run" - # "^^run" => "rake:run" (the top level task) - # "rake:run" => "rake:run" (the top level task) - end - - # :run => "one:run" - # "two:run" => "one:two:run" - # "^run" => "rake:run" - end - - # :run => "rake:run" - # "one:run" => "one:run" - # "one:two:run" => "one:two:run" - -== FileLists - -FileLists are the way Rake manages lists of files. You can treat a -FileList as an array of strings for the most part, but FileLists -support some additional operations. - -=== Creating a FileList - -Creating a file list is easy. Just give it the list of file names: - - fl = FileList['file1.rb', file2.rb'] - -Or give it a glob pattern: - - fl = FileList['*.rb'] - -== Odds and Ends - -=== do/end verses { } - -Blocks may be specified with either a +do+/+end+ pair, or with curly -braces in Ruby. We _strongly_ recommend using +do+/+end+ to specify the -actions for tasks and rules. Because the rakefile idiom tends to -leave off parenthesis on the task/file/rule methods, unusual -ambiguities can arise when using curly braces. - -For example, suppose that the method +object_files+ returns a list of -object files in a project. Now we use +object_files+ as the -prerequistes in a rule specified with actions in curly braces. - - # DON'T DO THIS! - file "prog" => object_files { - # Actions are expected here (but it doesn't work)! - } - -Because curly braces have a higher precedence than +do+/+end+, the -block is associated with the +object_files+ method rather than the -+file+ method. - -This is the proper way to specify the task ... - - # THIS IS FINE - file "prog" => object_files do - # Actions go here - end - ----- - -== See - -* README -- Main documentation for Rake. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/rational.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/rational.rdoc deleted file mode 100644 index f741e65b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/rational.rdoc +++ /dev/null @@ -1,151 +0,0 @@ -= Why rake? - -Ok, let me state from the beginning that I never intended to write this -code. I'm not convinced it is useful, and I'm not convinced anyone -would even be interested in it. All I can say is that Why's onion truck -must by been passing through the Ohio valley. - -What am I talking about? ... A Ruby version of Make. - -See, I can sense you cringing already, and I agree. The world certainly -doesn't need yet another reworking of the "make" program. I mean, we -already have "ant". Isn't that enough? - -It started yesterday. I was helping a coworker fix a problem in one of -the Makefiles we use in our project. Not a particularly tough problem, -but during the course of the conversation I began lamenting some of the -shortcomings of make. In particular, in one of my makefiles I wanted to -determine the name of a file dynamically and had to resort to some -simple scripting (in Ruby) to make it work. "Wouldn't it be nice if you -could just use Ruby inside a Makefile" I said. - -My coworker (a recent convert to Ruby) agreed, but wondered what it -would look like. So I sketched the following on the whiteboard... - - "What if you could specify the make tasks in Ruby, like this ..." - - task "build" do - java_compile(...args, etc ...) - end - - "The task function would register "build" as a target to be made, - and the block would be the action executed whenever the build - system determined that it was time to do the build target." - -We agreed that would be cool, but writing make from scratch would be WAY -too much work. And that was the end of that! - -... Except I couldn't get the thought out of my head. What exactly -would be needed to make the about syntax work as a make file? Hmmm, you -would need to register the tasks, you need some way of specifying -dependencies between tasks, and some way of kicking off the process. -Hey! What if we did ... and fifteen minutes later I had a working -prototype of Ruby make, complete with dependencies and actions. - -I showed the code to my coworker and we had a good laugh. It was just -about a page worth of code that reproduced an amazing amount of the -functionality of make. We were both truely stunned with the power of -Ruby. - -But it didn't do everything make did. In particular, it didn't have -timestamp based file dependencies (where a file is rebuilt if any of its -prerequisite files have a later timestamp). Obviously THAT would be a -pain to add and so Ruby Make would remain an interesting experiment. - -... Except as I walked back to my desk, I started thinking about what -file based dependecies would really need. Rats! I was hooked again, -and by adding a new class and two new methods, file/timestamp -dependencies were implemented. - -Ok, now I was really hooked. Last night (during CSI!) I massaged the -code and cleaned it up a bit. The result is a bare-bones replacement -for make in exactly 100 lines of code. - -For the curious, you can see it at ... -* doc/proto_rake.rdoc - -Oh, about the name. When I wrote the example Ruby Make task on my -whiteboard, my coworker exclaimed "Oh! I have the perfect name: Rake ... -Get it? Ruby-Make. Rake!" He said he envisioned the tasks as leaves -and Rake would clean them up ... or something like that. Anyways, the -name stuck. - -Some quick examples ... - -A simple task to delete backup files ... - - task :clean do - Dir['*~'].each {|fn| rm fn rescue nil} - end - -Note that task names are symbols (they are slightly easier to type -than quoted strings ... but you may use quoted string if you would -rather). Rake makes the methods of the FileUtils module directly -available, so we take advantage of the rm command. Also note -the use of "rescue nil" to trap and ignore errors in the rm -command. - -To run it, just type "rake clean". Rake will automatically find a -Rakefile in the current directory (or above!) and will invoke the -targets named on the command line. If there are no targets explicitly -named, rake will invoke the task "default". - -Here's another task with dependencies ... - - task :clobber => [:clean] do - rm_r "tempdir" - end - -Task :clobber depends upon task :clean, so :clean will be run before -:clobber is executed. - -Files are specified by using the "file" command. It is similar to the -task command, except that the task name represents a file, and the task -will be run only if the file doesn't exist, or if its modification time -is earlier than any of its prerequisites. - -Here is a file based dependency that will compile "hello.cc" to -"hello.o". - - file "hello.cc" - file "hello.o" => ["hello.cc"] do |t| - srcfile = t.name.sub(/\.o$/, ".cc") - sh %{g++ #{srcfile} -c -o #{t.name}} - end - -I normally specify file tasks with string (rather than symbols). Some -file names can't be represented by symbols. Plus it makes the -distinction between them more clear to the casual reader. - -Currently writing a task for each and every file in the project would be -tedious at best. I envision a set of libraries to make this job -easier. For instance, perhaps something like this ... - - require 'rake/ctools' - Dir['*.c'].each do |fn| - c_source_file(fn) - end - -where "c_source_file" will create all the tasks need to compile all the -C source files in a directory. Any number of useful libraries could be -created for rake. - -That's it. There's no documentation (other than whats in this -message). Does this sound interesting to anyone? If so, I'll continue -to clean it up and write it up and publish it on RAA. Otherwise, I'll -leave it as an interesting excerise and a tribute to the power of Ruby. - -Why /might/ rake be interesting to Ruby programmers. I don't know, -perhaps ... - -* No weird make syntax (only weird Ruby syntax :-) -* No need to edit or read XML (a la ant) -* Platform independent build scripts. -* Will run anywhere Ruby exists, so no need to have "make" installed. - If you stay away from the "sys" command and use things like - 'ftools', you can have a perfectly platform independent - build script. Also rake is only 100 lines of code, so it can - easily be packaged along with the rest of your code. - -So ... Sorry for the long rambling message. Like I said, I never -intended to write this code at all. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.4.14.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.4.14.rdoc deleted file mode 100644 index b2f1f84f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.4.14.rdoc +++ /dev/null @@ -1,23 +0,0 @@ -= Rake 0.4.14 Released - -== Changes - -Version 0.4.14 is a compatibility fix to allow Rake's test task to -work under Ruby 1.8.2. A change in the Test::Unit autorun feature -prevented Rake from running any tests. This release fixes the -problem. - -Rake 0.4.14 is the recommended release for anyone using Ruby 1.8.2. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.4.15.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.4.15.rdoc deleted file mode 100644 index 1d8afd94..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.4.15.rdoc +++ /dev/null @@ -1,35 +0,0 @@ -= Rake 0.4.15 Released - -== Changes - -Version 0.4.15 is a bug fix update for the Ruby 1.8.2 compatibility -changes. This release includes: - -* Fixed a bug that prevented the TESTOPTS flag from working with the - revised for 1.8.2 test task. - -* Updated the docs on --trace to indicate that it also enables a full - backtrace on errors. - -* Several fixes for new warnings generated. - -== Mini-Roadmap - -I will continue to issue Rake updates in the 0.4.xx series as new -Ruby-1.8.2 issues become manifest. Once the codebase stabilizes, I -will release a 0.5.0 version incorporating all the changes. If you -are not using Ruby-1.8.2 and wish to avoid version churn, I recommend -staying with a release prior to Rake-0.4.14. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.0.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.0.rdoc deleted file mode 100644 index 6b49d2a6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.0.rdoc +++ /dev/null @@ -1,53 +0,0 @@ -= Rake 0.5.0 Released - -It has been a long time in coming, but we finally have a new version -of Rake available. - -== Changes - -* Fixed bug where missing intermediate file dependencies could cause - an abort with --trace or --dry-run. (Brian Candler) - -* Recursive rules are now supported (Tilman Sauerbeck). - -* Added tar.gz and tar.bz2 support to package task (Tilman Sauerbeck). - -* Added warning option for the Test Task (requested by Eric Hodel). - -* The jamis rdoc template is only used if it exists. - -* Added fix for Ruby 1.8.2 test/unit and rails problem. - -* Added contributed rake man file. (Jani Monoses) - -* Fixed documentation that was lacking the Rake module name (Tilman - Sauerbeck). - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Thanks - -Lots of people provided input to this release. Thanks to Tilman -Sauerbeck for numerous patches, documentation fixes and suggestions. -And for also pushing me to get this release out. Also, thanks to -Brian Candler for the finding and fixing --trace/dry-run fix. That -was an obscure bug. Also to Eric Hodel for some good suggestions. - --- Jim Weirich - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.3.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.3.rdoc deleted file mode 100644 index be2919f5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.3.rdoc +++ /dev/null @@ -1,78 +0,0 @@ -= Rake 0.5.0 Released - -Although it has only been two weeks since the last release, we have -enough updates to the Rake program to make it time for another -release. - -== Changes - -Here are the changes for version 0.5.3 ... - -* FileLists have been extensively changed so that they mimic the - behavior of real arrays even more closely. In particular, - operations on FileLists that return a new collection (e.g. collect, - reject) will now return a FileList rather than an array. In - addition, several places where FileLists were not properly expanded - before use have been fixed. - -* A method (+ext+) to simplify the handling of file extensions was - added to String and to Array. - -* The 'testrb' script in test/unit tends to silently swallow syntax - errors in test suites. Because of that, the default test loader is - now a rake-provided script. You can still use 'testrb' by setting - the loader flag in the test task to :testrb. (See the API documents - for TestTask for all the loader flag values). - -* FileUtil methods (e.g. cp, mv, install) are now declared to be - private. This will cut down on the interference with user defined - methods of the same name. - -* Fixed the verbose flag in the TestTask so that the test code is - controlled by the flag. Also shortened up some failure messages. - (Thanks to Tobias Luetke for the suggestion). - -* Rules will now properly detect a task that can generate a source - file. Previously rules would only consider source files that were - already present. - -* Added an +import+ command that allows Rake to dynamically import - dependendencies into a running Rake session. The +import+ command - can run tasks to update the dependency file before loading them. - Dependency files can be in rake or make format, allowing rake to - work with tools designed to generate dependencies for make. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Thanks - -As usual, it was input from users that drove a alot of these changes. -Thanks to ... - -* Brian Gernhardt for the rules fix (especially for the patience to - explain the problem to me until I got what he was talking about). -* Stefan Lang for pointing out problems in the dark corners of the - FileList implementation. -* Alexey Verkhovsky pointing out the silently swallows syntax errors - in tests. -* Tobias Luetke for beautifying the test task output. -* Sam Roberts for some of the ideas behind dependency loading. - --- Jim Weirich - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.4.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.4.rdoc deleted file mode 100644 index 38dfbdda..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.5.4.rdoc +++ /dev/null @@ -1,46 +0,0 @@ -= Rake 0.5.4 Released - -Time for some minor bug fixes and small enhancements - -== Changes - -Here are the changes for version 0.5.3 ... - -* Added double quotes to the test runner. This allows the location of - the tests (and runner) to be in a directory path that contains - spaces (e.g. "C:/Program Files/ruby/bin"). - -* Added .svn to default ignore list. Now subversion project metadata - is automatically ignored by Rake's FileList. - -* Updated FileList#include to support nested arrays and filelists. - FileLists are flat lists of file names. Using a FileList in an - include will flatten out the nested file names. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Thanks - -As usual, it was input from users that drove a alot of these changes. -Thanks to ... - -* Tilman Sauerbeck for the nested FileList suggestion. -* Josh Knowles for pointing out the spaces in directory name problem. - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.6.0.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.6.0.rdoc deleted file mode 100644 index 340c07bf..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.6.0.rdoc +++ /dev/null @@ -1,141 +0,0 @@ -= Rake 0.6.0 Released - -Its time for some long requested enhancements and lots of bug fixes -... And a whole new web page. - -== New Web Page - -The primary documentation for rake has moved from the RubyForge based -wiki to its own Hieraki based web site. Constant spam on the wiki -made it a difficult to keep clean. The new site will be easier to -update and organize. - -Check out the new documentation at: http://docs.rubyrake.org - -We will be adding new documentation to the site as time goes on. - -In addition to the new docs page, make sure you check out Martin -Fowlers article on rake at http://martinfowler.com/articles/rake.html - -== Changes - -=== New Features - -* Multiple prerequisites on Rake rules now allowed. However, keep the - following in mind: - - 1. All the prerequisites of a rule must be available before a rule - is triggered, where "enabled" means (a) an existing file, (b) a - defined rule, or (c) another rule which also must be - trigger-able. - 2. Rules are checked in order of definition, so it is important to - order your rules properly. If a file can be created by two - different rules, put the more specific rule first (otherwise the - more general rule will trigger first and the specific one will - never be triggered). - 3. The source method now returns the name of the first - prerequisite listed in the rule. sources returns the - names of all the rule prerequisites, ordered as they are defined - in the rule. If the task has other prerequisites not defined in - the rule (but defined in an explicit task definition), then they - will _not_ be included in the sources list. - -* FileLists may now use the egrep command. This popular enhancement - is now a core part of the FileList object. If you want to get a - list of all your to-dos, fixmes and TBD comments, add the following - to your Rakefile. - - desc "Look for TODO and FIXME tags in the code" - task :todo do - FileList['**/*.rb'].egrep /#.*(FIXME|TODO|TBD)/ - end - -* The investigation method was added to task object to dump - out some important values. This makes it a bit easier to debug Rake - tasks. - - For example, if you are having problems with a particular task, just - print it out: - - task :huh do - puts Rake::Task['huh'].investigation - end - -* The Rake::TestTask class now supports a "ruby_opts" option to pass - arbitrary ruby options to a test subprocess. - -=== Some Incompatibilities - -* When using the ruby command to start a Ruby subprocess, the - Ruby interpreter that is currently running rake is used by default. - This makes it easier to use rake in an environment with multiple - ruby installation. (Previously, the first ruby command found in the - PATH was used). - - If you wish to chose a different Ruby interpreter, you can - explicitly choose the interpreter via the sh command. - -* The major rake classes (Task, FileTask, FileCreationTask, RakeApp) - have been moved out of the toplevel scope and are now accessible as - Rake::Task, Rake::FileTask, Rake::FileCreationTask and - Rake::Application. If your Rakefile - directly references any one of these tasks, you may: - - 1. Update your Rakefile to use the new classnames - 2. Use the --classic-namespace option on the rake command to get the - old behavior, - 3. Add require 'rake/classic_namespace' to the - Rakefile to get the old behavior. - - rake will print a rather annoying warning whenever a - deprecated class name is referenced without enabling classic - namespace. - -=== Bug Fixes - -* Several unit tests and functional tests were fixed to run better - under windows. - -* Directory tasks are now a specialized version of a File task. A - directory task will only be triggered if it doesn't exist. It will - not be triggered if it is out of date w.r.t. any of its - prerequisites. - -* Fixed a bug in the Rake::GemPackageTask class so that the gem now - properly contains the platform name. - -* Fixed a bug where a prerequisite on a file task would cause - an exception if the prerequisite did not exist. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Thanks - -As usual, it was input from users that drove a alot of these changes. -The following people either contributed patches, made suggestions or -made otherwise helpful comments. Thanks to ... - -* Greg Fast (better ruby_opt test options) -* Kelly Felkins (requested by better namespace support) -* Martin Fowler (suggested Task.investigation) -* Stuart Jansen (send initial patch for multiple prerequisites). -* Masao Mutch (better support for non-ruby Gem platforms) -* Philipp Neubeck (patch for file task exception fix) - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.0.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.0.rdoc deleted file mode 100644 index 9c07c7f5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.0.rdoc +++ /dev/null @@ -1,119 +0,0 @@ -= Rake 0.7.0 Released - -These changes for Rake have been brewing for a long time. Here they -are, I hope you enjoy them. - -== Changes - -=== New Features - -* Name space support for task names (see below). - -* Prerequisites can be executed in parallel (see below). - -* Added safe_ln support for openAFS (via Ludvig Omholt). - -* RDoc defaults to internal (in-process) invocation. The old behavior - is still available by setting the +external+ flag to true. - -* Rakefiles are now loaded with the expanded path to prevent - accidental polution from the Ruby load path. - -* Task objects my now be used in prerequisite lists directly. - -* Task objects (in addition to task names) may now be included in the - prerequisite list of a task. - -* Internals cleanup and refactoring. - -=== Bug Fixes - -* Compatibility fixes for Ruby 1.8.4 FileUtils changes. - -=== Namespaces - -Tasks can now be nested inside their own namespaces. Tasks within one -namespace will not accidently interfer with tasks named in a different -namespace. - -For example: - - namespace "main" do - task :build do - # Build the main program - end - end - - namespace "samples" do - task :build do - # Build the sample programs - end - end - - task :build_all => ["main:build", "samples:build"] - -Even though both tasks are named :build, they are separate tasks in -their own namespaces. The :build_all task (defined in the toplevel -namespace) references both build tasks in its prerequisites. - -You may invoke each of the individual build tasks with the following -commands: - - rake main:build - rake samples:build - -Or invoke both via the :build_all command: - - rake build_all - -Namespaces may be nested arbitrarily. Since the name of file tasks -correspond to the name of a file in the external file system, -FileTasks are not affected by the namespaces. - -See the Rakefile format documentation (in the Rake API documents) for -more information. - -=== Parallel Tasks - -Sometimes you have several tasks that can be executed in parallel. By -specifying these tasks as prerequisites to a +multitask+ task. - -In the following example the tasks copy_src, copy_doc and copy_bin -will all execute in parallel in their own thread. - - multitask :copy_files => [:copy_src, :copy_doc, :copy_bin] do - puts "All Copies Complete" - end - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Thanks - -As usual, it was input from users that drove a alot of these changes. -The following people either contributed patches, made suggestions or -made otherwise helpful comments. Thanks to ... - -* Doug Young (inspriation for the parallel task) - -* David Heinemeier Hansson (for --trace message enhancement and for - pushing for namespace support). - -* Ludvig Omholt (for the openAFS fix) - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.1.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.1.rdoc deleted file mode 100644 index c17088ee..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.1.rdoc +++ /dev/null @@ -1,59 +0,0 @@ -= Rake 0.7.1 Released - -Version 0.7.1 supplies a bug fix and a few minor enhancements. - -== Changes - -=== Bug Fixes in 0.7.1 - -* Changes in the exception reported for the FileUtils.ln caused - safe_ln to fail with a NotImplementedError. Rake 0.7.1 will now - catch that error or any StandardError and properly fall back to - using +cp+. - -=== New Features in 0.7.1 - -* You can filter the results of the --task option by supplying an - optional regular expression. This allows the user to easily find a - particular task name in a long list of possible names. - -* Transforming procs in a rule may now return a list of prerequisites. - This allows more flexible rule formation. - -* FileList and String now support a +pathmap+ melthod that makes the - transforming paths a bit easier. See the API docs for +pathmap+ for - details. - -* The -f option without a value will disable the search for a - Rakefile. This allows the Rakefile to be defined entirely in a - library (and loaded with the -r option). The current working - directory is not changed when this is done. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Thanks - -As usual, it was input from users that drove a alot of these changes. -The following people either contributed patches, made suggestions or -made otherwise helpful comments. Thanks to ... - -* James Britt and Assaph Mehr for reporting and helping to debug the - safe_ln issue. - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.2.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.2.rdoc deleted file mode 100644 index 2cc86bec..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.2.rdoc +++ /dev/null @@ -1,121 +0,0 @@ -= Rake 0.7.2 Released - -Version 0.7.2 supplies a bug fix and a few minor enhancements. In -particular, the new version fixes an incompatibility with the soon to -be released Ruby 1.8.6. We strongly recommend upgrading to Rake 0.7.2 -in order to be compatible with the new version of Ruby. - -== Changes - -=== Bug Fixes in 0.7.2 - -There are quite a number of bug fixes in the new 0.7.2 version of -Rake: - -* Removed dependency on internal fu_xxx functions from FileUtils. - -* Error messages are now send to stderr rather than stdout (from - Payton Quackenbush). - -* Better error handling on invalid command line arguments (from Payton - Quackenbush). - -* Fixed some bugs where the application object was going to the global - appliation instead of using its own data. - -* Fixed the method name leak from FileUtils (bug found by Glenn - Vanderburg). - -* Added test for noop, bad_option and verbose flags to sh command. - -* Added a description to the gem task in GemPackageTask. - -* Fixed a bug when rules have multiple prerequisites (patch by Joel - VanderWerf) - -* Added the handful of RakeFileUtils to the private method as well. - -=== New Features in 0.7.2 - -The following new features are available in Rake version 0.7.2: - -* Added square and curly bracket patterns to FileList#include (Tilman - Sauerbeck). - -* FileLists can now pass a block to FileList#exclude to exclude files - based on calculated values. - -* Added plain filename support to rule dependents (suggested by Nobu - Nakada). - -* Added pathmap support to rule dependents. In other words, if a - pathmap format (beginning with a '%') is given as a Rake rule - dependent, then the name of the depend will be the name of the - target with the pathmap format applied. - -* Added a 'tasks' method to a namespace to get a list of tasks - associated with the namespace. - -* Added tar_command and zip_command options to the Package task. - -* The clean task will no longer delete 'core' if it is a directory. - -=== Internal Rake Improvements - -The following changes will are mainly internal improvements and -refactorings and have little effect on the end user. But they may be -of interest to the general public. - -* Added rcov task and updated unit testing for better code coverage. - -* Added a 'shame' task to the Rakefile. - -* Added rake_extension to handle detection of extension collisions. - -* Added a protected 'require "rubygems"' to test/test_application to - unbreak cruisecontrol.rb. - -* Removed rake_dup. Now we just simply rescue a bad dup. - -* Refactored the FileList reject logic to remove duplication. - -* Removed if __FILE__ at the end of the rake.rb file. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Thanks - -As usual, it was input from users that drove a alot of these changes. -The following people either contributed patches, made suggestions or -made otherwise helpful comments. Thanks to ... - -* Payton Quackenbush -- For several error handling improvements. - -* Glenn Vanderburg -- For finding and fixing the method name leak from - FileUtils. - -* Joel VanderWerf -- for finding and fixing a bug in the handling of - multiple prerequisites. - -* Tilman Sauerbeck -- For some enhancing FileList to support more - advanced file globbing. - -* Nobu Nakada -- For suggesting plain file name support to rule dependents. - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.3.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.3.rdoc deleted file mode 100755 index 39e91bb9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.7.3.rdoc +++ /dev/null @@ -1,47 +0,0 @@ -= Rake 0.7.3 Released - -Rake version 0.7.3 is a minor release that includes some refactoring to better -support custom Rake applications. - -== Changes - -=== New Features in Version 0.7.3 - -* Added the +init+ and +top_level+ methods to make the creation of custom Rake applications a bit easier. E.g. - - gem 'rake', ">= 0.7.3" - require 'rake' - - Rake.application.init('myrake') - - task :default do - something_interesting - end - - Rake.application.top_level - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But instead of -cryptic make recipes, Rake uses standard Ruby code to declare tasks and -dependencies. You have the full power of a modern scripting language built -right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.0.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.0.rdoc deleted file mode 100644 index 05e5877f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.0.rdoc +++ /dev/null @@ -1,114 +0,0 @@ -= Rake 0.8.0/0.8.1 Released - -Rake version 0.8.0 is a new release of rake that includes serveral new -features. - -== Changes - -=== New Features in Version 0.8.0 - -* Tasks can now receive command line parameters. See the examples - below for more details. - -* Comments are limited to 80 columns on output, but full comments can - be seen by using the -D parameter. (feature suggested by Jamis - Buck). - -* Explicit exit(n) calls will now set the exit status to n. (patch - provided by Stephen Touset). - -* Rake is now compatible with Ruby 1.9. - -Version 0.8.1 is a minor update that includes additional Ruby 1.9 -compatibility fixes. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Task Argument Examples - -Prior to version 0.8.0, rake was only able to handle command line -arguments of the form NAME=VALUE that were passed into Rake via the -ENV hash. Many folks had asked for some kind of simple command line -arguments, perhaps using "--" to separate regular task names from -argument values on the command line. The problem is that there was no -easy way to associate positional arguments on the command line with -different tasks. Suppose both tasks :a and :b expect a command line -argument: does the first value go with :a? What if :b is run first? -Should it then get the first command line argument. - -Rake 0.8.0 solves this problem by explicitly passing values directly -to the tasks that need them. For example, if I had a release task -that required a version number, I could say: - - rake release[0.8.0] - -And the string "0.8.0" will be passed to the :release task. Multiple -arguments can be passed by separating them with a comma, for example: - - rake name[john,doe] - -Just a few words of caution. The rake task name and its arguments -need to be a single command line argument to rake. This generally -means no spaces. If spaces are needed, then the entire rake + -argument string should be quoted. Something like this: - - rake "name[billy bob, smith]" - -(Quoting rules vary between operating systems and shells, so make sure -you consult the proper docs for your OS/shell). - -=== Tasks that Expect Parameters - -Parameters are only given to tasks that are setup to expect them. In -order to handle named parameters, the task declaration syntax for -tasks has been extended slightly. - -For example, a task that needs a first name and last name might be -declared as: - - task :name, :first_name, :last_name - -The first argument is still the name of the task (:name in this case). -The next to argumements are the names of the parameters expected by -:name (:first_name and :last_name in the example). - -To access the values of the paramters, the block defining the task -behaviour can now accept a second parameter: - - task :name, :first_name, :last_name do |t, args| - puts "First name is #{args.first_name}" - puts "Last name is #{args.last_name}" - end - -The first argument of the block "t" is always bound to the current -task object. The second argument "args" is an open-struct like object -that allows access to the task arguments. Extra command line -arguments to a task are ignored. Missing command line arguments are -given the nil value. - -== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Jamis Buck (for comment formatting suggestions) -* Stephen Touset (for exit status patch). - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.2.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.2.rdoc deleted file mode 100644 index cfb99418..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.2.rdoc +++ /dev/null @@ -1,165 +0,0 @@ -= Rake 0.8.2 Released - -Rake version 0.8.2 is a new release of rake that includes a number of -new features and numerous bug fixes. - -== Changes - -=== New Features in Version 0.8.2 - -* Switched from getoptlong to optparse (patches supplied by Edwin - Pratomo). - -* The -T option will now attempt to dynamically sense the size of the - terminal. The -T output will only self-truncate if the output is a - tty. However, if RAKE_COLUMNS is explicitly set, it will be honored - in any case. (Patch provided by Gavin Stark). - -* The following public methods have been added to rake task objects: - - * task.clear -- Clear both the prerequisites and actions of the - target rake task. - * task.clear_prerequisites -- Clear all the existing prerequisites - from the target rake task. - * task.clear_actions -- Clear all the existing actions from the - target rake task. - * task.reenable -- Re-enable a task, allowing its actions to be - executed again if the task is invoked. - -* Changed RDoc test task to have no default template. This makes it - easier for the tempate to pick up the template from the environment. - -* Default values for task arguments can easily be specified with the - :with_defaults method. (Idea for default argument merging supplied - by (Adam Q. Salter) - -=== Bug Fixes in Version 0.8.2 - -* Fixed bug in package task so that it will include the subdir - directory in the package for testing. (Bug found by Adam Majer) - -* Fixed filename dependency order bug in test_inspect_pending and - test_to_s_pending. (Bug found by Adam Majer) - -* Fixed check for file utils options to make them immune to the - symbol/string differences. (Patch supplied by Edwin Pratomo) - -* Fixed bug with rules involving multiple source, where only the first - dependency of a rule has any effect (Patch supplied by Emanuel - Indermhle) - -* FileList#clone and FileList#dup have better sematics w.r.t. taint - and freeze. - -* Changed from using Mutex to Monitor. Evidently Mutex causes thread - join errors when Ruby is compiled with -disable-pthreads. (Patch - supplied by Ittay Dror) - -* Fixed bug in makefile parser that had problems with extra spaces in - file task names. (Patch supplied by Ittay Dror) - -== Other changes in Version 0.8.2 - -* Added ENV var to rake's own Rakefile to prevent OS X from including - extended attribute junk in the rake package tar file. (Bug found by - Adam Majer) - -* Added a performance patch for reading large makefile dependency - files. (Patch supplied by Ittay Dror) - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Task Argument Examples - -Prior to version 0.8.0, rake was only able to handle command line -arguments of the form NAME=VALUE that were passed into Rake via the -ENV hash. Many folks had asked for some kind of simple command line -arguments, perhaps using "--" to separate regular task names from -argument values on the command line. The problem is that there was no -easy way to associate positional arguments on the command line with -different tasks. Suppose both tasks :a and :b expect a command line -argument: does the first value go with :a? What if :b is run first? -Should it then get the first command line argument. - -Rake 0.8.0 solves this problem by explicitly passing values directly -to the tasks that need them. For example, if I had a release task -that required a version number, I could say: - - rake release[0.8.2] - -And the string "0.8.2" will be passed to the :release task. Multiple -arguments can be passed by separating them with a comma, for example: - - rake name[john,doe] - -Just a few words of caution. The rake task name and its arguments -need to be a single command line argument to rake. This generally -means no spaces. If spaces are needed, then the entire rake + -argument string should be quoted. Something like this: - - rake "name[billy bob, smith]" - -(Quoting rules vary between operating systems and shells, so make sure -you consult the proper docs for your OS/shell). - -=== Tasks that Expect Parameters - -Parameters are only given to tasks that are setup to expect them. In -order to handle named parameters, the task declaration syntax for -tasks has been extended slightly. - -For example, a task that needs a first name and last name might be -declared as: - - task :name, :first_name, :last_name - -The first argument is still the name of the task (:name in this case). -The next to argumements are the names of the parameters expected by -:name (:first_name and :last_name in the example). - -To access the values of the paramters, the block defining the task -behaviour can now accept a second parameter: - - task :name, :first_name, :last_name do |t, args| - puts "First name is #{args.first_name}" - puts "Last name is #{args.last_name}" - end - -The first argument of the block "t" is always bound to the current -task object. The second argument "args" is an open-struct like object -that allows access to the task arguments. Extra command line -arguments to a task are ignored. Missing command line arguments are -given the nil value. - -== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Edwin Pratomo -* Gavin Stark -* Adam Q. Salter -* Adam Majer -* Emanuel Indermhle -* Ittay Dror -* Bheeshmar Redheendran (for spending an afternoon with me debugging - windows issues) - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.3.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.3.rdoc deleted file mode 100644 index fefc8c07..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.3.rdoc +++ /dev/null @@ -1,112 +0,0 @@ -= Rake 0.8.3 Released - -Rake version 0.8.3 is a bug-fix release of rake. - -== Changes - -=== Bug Fixes in Version 0.8.3 - -* Enhanced the system directory detection in windows. We now check - HOMEDRIVE/HOMEPATH and USERPROFILE if APPDATA isn't found. (Patch - supplied by James Tucker). Rake no long aborts if it can't find the - directory. - -* Added fix to handle ruby installations in directories with spaces in - their name. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Task Argument Examples - -Prior to version 0.8.0, rake was only able to handle command line -arguments of the form NAME=VALUE that were passed into Rake via the -ENV hash. Many folks had asked for some kind of simple command line -arguments, perhaps using "--" to separate regular task names from -argument values on the command line. The problem is that there was no -easy way to associate positional arguments on the command line with -different tasks. Suppose both tasks :a and :b expect a command line -argument: does the first value go with :a? What if :b is run first? -Should it then get the first command line argument. - -Rake 0.8.0 solves this problem by explicitly passing values directly -to the tasks that need them. For example, if I had a release task -that required a version number, I could say: - - rake release[0.8.3] - -And the string "0.8.3" will be passed to the :release task. Multiple -arguments can be passed by separating them with a comma, for example: - - rake name[john,doe] - -Just a few words of caution. The rake task name and its arguments -need to be a single command line argument to rake. This generally -means no spaces. If spaces are needed, then the entire rake + -argument string should be quoted. Something like this: - - rake "name[billy bob, smith]" - -(Quoting rules vary between operating systems and shells, so make sure -you consult the proper docs for your OS/shell). - -=== Tasks that Expect Parameters - -Parameters are only given to tasks that are setup to expect them. In -order to handle named parameters, the task declaration syntax for -tasks has been extended slightly. - -For example, a task that needs a first name and last name might be -declared as: - - task :name, :first_name, :last_name - -The first argument is still the name of the task (:name in this case). -The next to argumements are the names of the parameters expected by -:name (:first_name and :last_name in the example). - -To access the values of the paramters, the block defining the task -behaviour can now accept a second parameter: - - task :name, :first_name, :last_name do |t, args| - puts "First name is #{args.first_name}" - puts "Last name is #{args.last_name}" - end - -The first argument of the block "t" is always bound to the current -task object. The second argument "args" is an open-struct like object -that allows access to the task arguments. Extra command line -arguments to a task are ignored. Missing command line arguments are -given the nil value. - -== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Edwin Pratomo -* Gavin Stark -* Adam Q. Salter -* Adam Majer -* Emanuel Indermhle -* Ittay Dror -* Bheeshmar Redheendran (for spending an afternoon with me debugging - windows issues) - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.4.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.4.rdoc deleted file mode 100644 index 8ccb1abc..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.4.rdoc +++ /dev/null @@ -1,147 +0,0 @@ -= Rake 0.8.4 Released - -Rake version 0.8.4 is a bug-fix release of rake. - -NOTE: The version of Rake that comes with Ruby 1.9 has diverged - slightly from the core Rake code base. Rake 0.8.4 will work - with Ruby 1.9, but is not a strict upgrade for the Rake that - comes with Ruby 1.9. A (near) future release of Rake will unify - those two codebases. - -== Letter Writing Campaign - -Thanks to Aaron Patterson (@tenderlove) and Eric Hodel (@drbrain) for -their encouraging support in organizing a letter writing campaign to -lobby for the "Warning Free" release of rake 0.8.4. A special callout -goes to Jonathan D. Lord, Sr (Dr. Wingnut) whose postcard was the -first to actually reach me. (see -http://tenderlovemaking.com/2009/02/26/we-need-a-new-version-of-rake/ -for details) - -== Changes - -=== New Features / Enhancements in Version 0.8.4 - -* Case is preserved on rakefile names. (patch from James - M. Lawrence/quix) - -* Improved Rakefile case insensitivity testing (patch from Luis - Lavena). - -* Windows system dir search order is now: HOME, HOMEDRIVE + HOMEPATH, - APPDATA, USERPROFILE (patch from Luis Lavena) - -* MingGW is now recognized as a windows platform. (patch from Luis - Lavena) - -=== Bug Fixes in Version 0.8.4 - -* Removed reference to manage_gem to fix the warning produced by the - gem package task. - -* Fixed stray ARGV option problem that was interfering with - Test::Unit::Runner. (patch from Pivotal Labs) - -=== Infrastructure Improvements in Version 0.8.4 - -* Numerous fixes to the windows test suite (patch from Luis Lavena). - -* Improved Rakefile case insensitivity testing (patch from Luis - Lavena). - -* Better support for windows paths in the test task (patch from Simon - Chiang/bahuvrihi) - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 -GitHub:: git://github.com/jimweirich/rake.git - -== Task Argument Examples - -Prior to version 0.8.0, rake was only able to handle command line -arguments of the form NAME=VALUE that were passed into Rake via the -ENV hash. Many folks had asked for some kind of simple command line -arguments, perhaps using "--" to separate regular task names from -argument values on the command line. The problem is that there was no -easy way to associate positional arguments on the command line with -different tasks. Suppose both tasks :a and :b expect a command line -argument: does the first value go with :a? What if :b is run first? -Should it then get the first command line argument. - -Rake 0.8.0 solves this problem by explicitly passing values directly -to the tasks that need them. For example, if I had a release task -that required a version number, I could say: - - rake release[0.8.4] - -And the string "0.8.4" will be passed to the :release task. Multiple -arguments can be passed by separating them with a comma, for example: - - rake name[john,doe] - -Just a few words of caution. The rake task name and its arguments -need to be a single command line argument to rake. This generally -means no spaces. If spaces are needed, then the entire rake + -argument string should be quoted. Something like this: - - rake "name[billy bob, smith]" - -(Quoting rules vary between operating systems and shells, so make sure -you consult the proper docs for your OS/shell). - -=== Tasks that Expect Parameters - -Parameters are only given to tasks that are setup to expect them. In -order to handle named parameters, the task declaration syntax for -tasks has been extended slightly. - -For example, a task that needs a first name and last name might be -declared as: - - task :name, :first_name, :last_name - -The first argument is still the name of the task (:name in this case). -The next to argumements are the names of the parameters expected by -:name (:first_name and :last_name in the example). - -To access the values of the paramters, the block defining the task -behaviour can now accept a second parameter: - - task :name, :first_name, :last_name do |t, args| - puts "First name is #{args.first_name}" - puts "Last name is #{args.last_name}" - end - -The first argument of the block "t" is always bound to the current -task object. The second argument "args" is an open-struct like object -that allows access to the task arguments. Extra command line -arguments to a task are ignored. Missing command line arguments are -given the nil value. - -== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* James M. Lawrence/quix -* Luis Lavena -* Pivotal Labs -* Simon Chiang/bahuvrihi - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.5.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.5.rdoc deleted file mode 100644 index 9c828cef..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.5.rdoc +++ /dev/null @@ -1,53 +0,0 @@ -= Rake 0.8.5 Released - -Rake version 0.8.5 is a new release of Rake with greatly improved -support for executing commands on Windows. The "sh" command now has -the same semantics on Windows that it has on Unix based platforms. - -== Changes - -=== New Features / Enhancements in Version 0.8.5 - -* Improved implementation of the Rake system command for Windows. - (patch from James M. Lawrence/quix) - -* Support for Ruby 1.9's improved system command. (patch from James - M. Lawrence/quix) - -* Rake now includes the configured extension when invoking an - executable (Config::CONFIG['EXEEXT]) - -=== Bug Fixes in Version 0.8.5 - -* Environment variable keys are now correctly cased (it matters in - some implementations). - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 -GitHub:: git://github.com/jimweirich/rake.git - -== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* James M. Lawrence/quix -* Luis Lavena - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.6.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.6.rdoc deleted file mode 100644 index e1031ad3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.6.rdoc +++ /dev/null @@ -1,55 +0,0 @@ -= Rake 0.8.6 Released - -Rake version 0.8.5 introduced greatly improved support for executing -commands on Windows. The "sh" command now has the same semantics on -Windows that it has on Unix based platforms. - -Rake version 0.8.6 includes minor fixes the the RDoc generation. - -== Changes - -=== New Features / Enhancements in Version 0.8.5 - -* Improved implementation of the Rake system command for Windows. - (patch from James M. Lawrence/quix) - -* Support for Ruby 1.9's improved system command. (patch from James - M. Lawrence/quix) - -* Rake now includes the configured extension when invoking an - executable (Config::CONFIG['EXEEXT]) - -=== Bug Fixes in Version 0.8.5 - -* Environment variable keys are now correctly cased (it matters in - some implementations). - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 -GitHub:: git://github.com/jimweirich/rake.git - -== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* James M. Lawrence/quix -* Luis Lavena - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.7.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.7.rdoc deleted file mode 100644 index fb0c5d4e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/doc/release_notes/rake-0.8.7.rdoc +++ /dev/null @@ -1,55 +0,0 @@ -= Rake 0.8.7 Released - -Rake version 0.8.5 introduced greatly improved support for executing -commands on Windows. The "sh" command now has the same semantics on -Windows that it has on Unix based platforms. - -Rake version 0.8.6 includes minor fixes the the RDoc generation. -Rake version 0.8.7 includes a minor fix for JRuby running on windows. - -== Changes - -=== New Features / Enhancements in Version 0.8.5 - -* Improved implementation of the Rake system command for Windows. - (patch from James M. Lawrence/quix) - -* Support for Ruby 1.9's improved system command. (patch from James - M. Lawrence/quix) - -* Rake now includes the configured extension when invoking an - executable (Config::CONFIG['EXEEXT]) - -=== Bug Fixes in Version 0.8.5 - -* Environment variable keys are now correctly cased (it matters in - some implementations). - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 -GitHub:: git://github.com/jimweirich/rake.git - -== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Charles Nutter - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/install.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/install.rb deleted file mode 100644 index 2d0dc619..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/install.rb +++ /dev/null @@ -1,88 +0,0 @@ -require 'rbconfig' -require 'find' -require 'ftools' - -include Config - -$ruby = CONFIG['ruby_install_name'] - -## -# Install a binary file. We patch in on the way through to -# insert a #! line. If this is a Unix install, we name -# the command (for example) 'rake' and let the shebang line -# handle running it. Under windows, we add a '.rb' extension -# and let file associations to their stuff -# - -def installBIN(from, opfile) - - tmp_dir = nil - for t in [".", "/tmp", "c:/temp", $bindir] - stat = File.stat(t) rescue next - if stat.directory? and stat.writable? - tmp_dir = t - break - end - end - - fail "Cannot find a temporary directory" unless tmp_dir - tmp_file = File.join(tmp_dir, "_tmp") - - File.open(from) do |ip| - File.open(tmp_file, "w") do |op| - ruby = File.join($realbindir, $ruby) - op.puts "#!#{ruby} -w" - op.write ip.read - end - end - - opfile += ".rb" if CONFIG["target_os"] =~ /mswin/i - File::install(tmp_file, File.join($bindir, opfile), 0755, true) - File::unlink(tmp_file) -end - -$sitedir = CONFIG["sitelibdir"] -unless $sitedir - version = CONFIG["MAJOR"]+"."+CONFIG["MINOR"] - $libdir = File.join(CONFIG["libdir"], "ruby", version) - $sitedir = $:.find {|x| x =~ /site_ruby/} - if !$sitedir - $sitedir = File.join($libdir, "site_ruby") - elsif $sitedir !~ Regexp.quote(version) - $sitedir = File.join($sitedir, version) - end -end - -$bindir = CONFIG["bindir"] - -$realbindir = $bindir - -bindir = CONFIG["bindir"] -if (destdir = ENV['DESTDIR']) - $bindir = destdir + $bindir - $sitedir = destdir + $sitedir - - File::makedirs($bindir) - File::makedirs($sitedir) -end - -rake_dest = File.join($sitedir, "rake") -File::makedirs(rake_dest, true) -File::chmod(0755, rake_dest) - -# The library files - -files = Dir.chdir('lib') { Dir['**/*.rb'] } - -for fn in files - fn_dir = File.dirname(fn) - target_dir = File.join($sitedir, fn_dir) - if ! File.exist?(target_dir) - File.makedirs(target_dir) - end - File::install(File.join('lib', fn), File.join($sitedir, fn), 0644, true) -end - -# and the executable - -installBIN("bin/rake", "rake") diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake.rb deleted file mode 100755 index 12928308..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake.rb +++ /dev/null @@ -1,2506 +0,0 @@ -#!/usr/bin/env ruby - -#-- - -# Copyright 2003, 2004, 2005, 2006, 2007, 2008 by Jim Weirich (jim@weirichhouse.org) -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -#++ -# -# = Rake -- Ruby Make -# -# This is the main file for the Rake application. Normally it is referenced -# as a library via a require statement, but it can be distributed -# independently as an application. - -RAKEVERSION = '0.8.7' - -require 'rbconfig' -require 'fileutils' -require 'singleton' -require 'monitor' -require 'optparse' -require 'ostruct' - -require 'rake/win32' - -$trace = false - -###################################################################### -# Rake extensions to Module. -# -class Module - # Check for an existing method in the current class before extending. IF - # the method already exists, then a warning is printed and the extension is - # not added. Otherwise the block is yielded and any definitions in the - # block will take effect. - # - # Usage: - # - # class String - # rake_extension("xyz") do - # def xyz - # ... - # end - # end - # end - # - def rake_extension(method) - if method_defined?(method) - $stderr.puts "WARNING: Possible conflict with Rake extension: #{self}##{method} already exists" - else - yield - end - end -end # module Module - - -###################################################################### -# User defined methods to be added to String. -# -class String - rake_extension("ext") do - # Replace the file extension with +newext+. If there is no extension on - # the string, append the new extension to the end. If the new extension - # is not given, or is the empty string, remove any existing extension. - # - # +ext+ is a user added method for the String class. - def ext(newext='') - return self.dup if ['.', '..'].include? self - if newext != '' - newext = (newext =~ /^\./) ? newext : ("." + newext) - end - self.chomp(File.extname(self)) << newext - end - end - - rake_extension("pathmap") do - # Explode a path into individual components. Used by +pathmap+. - def pathmap_explode - head, tail = File.split(self) - return [self] if head == self - return [tail] if head == '.' || tail == '/' - return [head, tail] if head == '/' - return head.pathmap_explode + [tail] - end - protected :pathmap_explode - - # Extract a partial path from the path. Include +n+ directories from the - # front end (left hand side) if +n+ is positive. Include |+n+| - # directories from the back end (right hand side) if +n+ is negative. - def pathmap_partial(n) - dirs = File.dirname(self).pathmap_explode - partial_dirs = - if n > 0 - dirs[0...n] - elsif n < 0 - dirs.reverse[0...-n].reverse - else - "." - end - File.join(partial_dirs) - end - protected :pathmap_partial - - # Preform the pathmap replacement operations on the given path. The - # patterns take the form 'pat1,rep1;pat2,rep2...'. - def pathmap_replace(patterns, &block) - result = self - patterns.split(';').each do |pair| - pattern, replacement = pair.split(',') - pattern = Regexp.new(pattern) - if replacement == '*' && block_given? - result = result.sub(pattern, &block) - elsif replacement - result = result.sub(pattern, replacement) - else - result = result.sub(pattern, '') - end - end - result - end - protected :pathmap_replace - - # Map the path according to the given specification. The specification - # controls the details of the mapping. The following special patterns are - # recognized: - # - # * %p -- The complete path. - # * %f -- The base file name of the path, with its file extension, - # but without any directories. - # * %n -- The file name of the path without its file extension. - # * %d -- The directory list of the path. - # * %x -- The file extension of the path. An empty string if there - # is no extension. - # * %X -- Everything *but* the file extension. - # * %s -- The alternate file separater if defined, otherwise use - # the standard file separator. - # * %% -- A percent sign. - # - # The %d specifier can also have a numeric prefix (e.g. '%2d'). If the - # number is positive, only return (up to) +n+ directories in the path, - # starting from the left hand side. If +n+ is negative, return (up to) - # |+n+| directories from the right hand side of the path. - # - # Examples: - # - # 'a/b/c/d/file.txt'.pathmap("%2d") => 'a/b' - # 'a/b/c/d/file.txt'.pathmap("%-2d") => 'c/d' - # - # Also the %d, %p, %f, %n, %x, and %X operators can take a - # pattern/replacement argument to perform simple string substititions on a - # particular part of the path. The pattern and replacement are speparated - # by a comma and are enclosed by curly braces. The replacement spec comes - # after the % character but before the operator letter. (e.g. - # "%{old,new}d"). Muliple replacement specs should be separated by - # semi-colons (e.g. "%{old,new;src,bin}d"). - # - # Regular expressions may be used for the pattern, and back refs may be - # used in the replacement text. Curly braces, commas and semi-colons are - # excluded from both the pattern and replacement text (let's keep parsing - # reasonable). - # - # For example: - # - # "src/org/onestepback/proj/A.java".pathmap("%{^src,bin}X.class") - # - # returns: - # - # "bin/org/onestepback/proj/A.class" - # - # If the replacement text is '*', then a block may be provided to perform - # some arbitrary calculation for the replacement. - # - # For example: - # - # "/path/to/file.TXT".pathmap("%X%{.*,*}x") { |ext| - # ext.downcase - # } - # - # Returns: - # - # "/path/to/file.txt" - # - def pathmap(spec=nil, &block) - return self if spec.nil? - result = '' - spec.scan(/%\{[^}]*\}-?\d*[sdpfnxX%]|%-?\d+d|%.|[^%]+/) do |frag| - case frag - when '%f' - result << File.basename(self) - when '%n' - result << File.basename(self).ext - when '%d' - result << File.dirname(self) - when '%x' - result << File.extname(self) - when '%X' - result << self.ext - when '%p' - result << self - when '%s' - result << (File::ALT_SEPARATOR || File::SEPARATOR) - when '%-' - # do nothing - when '%%' - result << "%" - when /%(-?\d+)d/ - result << pathmap_partial($1.to_i) - when /^%\{([^}]*)\}(\d*[dpfnxX])/ - patterns, operator = $1, $2 - result << pathmap('%' + operator).pathmap_replace(patterns, &block) - when /^%/ - fail ArgumentError, "Unknown pathmap specifier #{frag} in '#{spec}'" - else - result << frag - end - end - result - end - end -end # class String - -############################################################################## -module Rake - - # Errors ----------------------------------------------------------- - - # Error indicating an ill-formed task declaration. - class TaskArgumentError < ArgumentError - end - - # Error indicating a recursion overflow error in task selection. - class RuleRecursionOverflowError < StandardError - def initialize(*args) - super - @targets = [] - end - - def add_target(target) - @targets << target - end - - def message - super + ": [" + @targets.reverse.join(' => ') + "]" - end - end - - # -------------------------------------------------------------------------- - # Rake module singleton methods. - # - class << self - # Current Rake Application - def application - @application ||= Rake::Application.new - end - - # Set the current Rake application object. - def application=(app) - @application = app - end - - # Return the original directory where the Rake application was started. - def original_dir - application.original_dir - end - - end - - #################################################################### - # Mixin for creating easily cloned objects. - # - module Cloneable - # Clone an object by making a new object and setting all the instance - # variables to the same values. - def dup - sibling = self.class.new - instance_variables.each do |ivar| - value = self.instance_variable_get(ivar) - new_value = value.clone rescue value - sibling.instance_variable_set(ivar, new_value) - end - sibling.taint if tainted? - sibling - end - - def clone - sibling = dup - sibling.freeze if frozen? - sibling - end - end - - #################################################################### - # Exit status class for times the system just gives us a nil. - class PseudoStatus - attr_reader :exitstatus - def initialize(code=0) - @exitstatus = code - end - def to_i - @exitstatus << 8 - end - def >>(n) - to_i >> n - end - def stopped? - false - end - def exited? - true - end - end - - #################################################################### - # TaskAguments manage the arguments passed to a task. - # - class TaskArguments - include Enumerable - - attr_reader :names - - # Create a TaskArgument object with a list of named arguments - # (given by :names) and a set of associated values (given by - # :values). :parent is the parent argument object. - def initialize(names, values, parent=nil) - @names = names - @parent = parent - @hash = {} - names.each_with_index { |name, i| - @hash[name.to_sym] = values[i] unless values[i].nil? - } - end - - # Create a new argument scope using the prerequisite argument - # names. - def new_scope(names) - values = names.collect { |n| self[n] } - self.class.new(names, values, self) - end - - # Find an argument value by name or index. - def [](index) - lookup(index.to_sym) - end - - # Specify a hash of default values for task arguments. Use the - # defaults only if there is no specific value for the given - # argument. - def with_defaults(defaults) - @hash = defaults.merge(@hash) - end - - def each(&block) - @hash.each(&block) - end - - def method_missing(sym, *args, &block) - lookup(sym.to_sym) - end - - def to_hash - @hash - end - - def to_s - @hash.inspect - end - - def inspect - to_s - end - - protected - - def lookup(name) - if @hash.has_key?(name) - @hash[name] - elsif ENV.has_key?(name.to_s) - ENV[name.to_s] - elsif ENV.has_key?(name.to_s.upcase) - ENV[name.to_s.upcase] - elsif @parent - @parent.lookup(name) - end - end - end - - EMPTY_TASK_ARGS = TaskArguments.new([], []) - - #################################################################### - # InvocationChain tracks the chain of task invocations to detect - # circular dependencies. - class InvocationChain - def initialize(value, tail) - @value = value - @tail = tail - end - - def member?(obj) - @value == obj || @tail.member?(obj) - end - - def append(value) - if member?(value) - fail RuntimeError, "Circular dependency detected: #{to_s} => #{value}" - end - self.class.new(value, self) - end - - def to_s - "#{prefix}#{@value}" - end - - def self.append(value, chain) - chain.append(value) - end - - private - - def prefix - "#{@tail.to_s} => " - end - - class EmptyInvocationChain - def member?(obj) - false - end - def append(value) - InvocationChain.new(value, self) - end - def to_s - "TOP" - end - end - - EMPTY = EmptyInvocationChain.new - - end # class InvocationChain - -end # module Rake - -module Rake - - ########################################################################### - # A Task is the basic unit of work in a Rakefile. Tasks have associated - # actions (possibly more than one) and a list of prerequisites. When - # invoked, a task will first ensure that all of its prerequisites have an - # opportunity to run and then it will execute its own actions. - # - # Tasks are not usually created directly using the new method, but rather - # use the +file+ and +task+ convenience methods. - # - class Task - # List of prerequisites for a task. - attr_reader :prerequisites - - # List of actions attached to a task. - attr_reader :actions - - # Application owning this task. - attr_accessor :application - - # Comment for this task. Restricted to a single line of no more than 50 - # characters. - attr_reader :comment - - # Full text of the (possibly multi-line) comment. - attr_reader :full_comment - - # Array of nested namespaces names used for task lookup by this task. - attr_reader :scope - - # Return task name - def to_s - name - end - - def inspect - "<#{self.class} #{name} => [#{prerequisites.join(', ')}]>" - end - - # List of sources for task. - attr_writer :sources - def sources - @sources ||= [] - end - - # First source from a rule (nil if no sources) - def source - @sources.first if defined?(@sources) - end - - # Create a task named +task_name+ with no actions or prerequisites. Use - # +enhance+ to add actions and prerequisites. - def initialize(task_name, app) - @name = task_name.to_s - @prerequisites = [] - @actions = [] - @already_invoked = false - @full_comment = nil - @comment = nil - @lock = Monitor.new - @application = app - @scope = app.current_scope - @arg_names = nil - end - - # Enhance a task with prerequisites or actions. Returns self. - def enhance(deps=nil, &block) - @prerequisites |= deps if deps - @actions << block if block_given? - self - end - - # Name of the task, including any namespace qualifiers. - def name - @name.to_s - end - - # Name of task with argument list description. - def name_with_args # :nodoc: - if arg_description - "#{name}#{arg_description}" - else - name - end - end - - # Argument description (nil if none). - def arg_description # :nodoc: - @arg_names ? "[#{(arg_names || []).join(',')}]" : nil - end - - # Name of arguments for this task. - def arg_names - @arg_names || [] - end - - # Reenable the task, allowing its tasks to be executed if the task - # is invoked again. - def reenable - @already_invoked = false - end - - # Clear the existing prerequisites and actions of a rake task. - def clear - clear_prerequisites - clear_actions - self - end - - # Clear the existing prerequisites of a rake task. - def clear_prerequisites - prerequisites.clear - self - end - - # Clear the existing actions on a rake task. - def clear_actions - actions.clear - self - end - - # Invoke the task if it is needed. Prerequites are invoked first. - def invoke(*args) - task_args = TaskArguments.new(arg_names, args) - invoke_with_call_chain(task_args, InvocationChain::EMPTY) - end - - # Same as invoke, but explicitly pass a call chain to detect - # circular dependencies. - def invoke_with_call_chain(task_args, invocation_chain) # :nodoc: - new_chain = InvocationChain.append(self, invocation_chain) - @lock.synchronize do - if application.options.trace - puts "** Invoke #{name} #{format_trace_flags}" - end - return if @already_invoked - @already_invoked = true - invoke_prerequisites(task_args, new_chain) - execute(task_args) if needed? - end - end - protected :invoke_with_call_chain - - # Invoke all the prerequisites of a task. - def invoke_prerequisites(task_args, invocation_chain) # :nodoc: - @prerequisites.each { |n| - prereq = application[n, @scope] - prereq_args = task_args.new_scope(prereq.arg_names) - prereq.invoke_with_call_chain(prereq_args, invocation_chain) - } - end - - # Format the trace flags for display. - def format_trace_flags - flags = [] - flags << "first_time" unless @already_invoked - flags << "not_needed" unless needed? - flags.empty? ? "" : "(" + flags.join(", ") + ")" - end - private :format_trace_flags - - # Execute the actions associated with this task. - def execute(args=nil) - args ||= EMPTY_TASK_ARGS - if application.options.dryrun - puts "** Execute (dry run) #{name}" - return - end - if application.options.trace - puts "** Execute #{name}" - end - application.enhance_with_matching_rule(name) if @actions.empty? - @actions.each do |act| - case act.arity - when 1 - act.call(self) - else - act.call(self, args) - end - end - end - - # Is this task needed? - def needed? - true - end - - # Timestamp for this task. Basic tasks return the current time for their - # time stamp. Other tasks can be more sophisticated. - def timestamp - @prerequisites.collect { |p| application[p].timestamp }.max || Time.now - end - - # Add a description to the task. The description can consist of an option - # argument list (enclosed brackets) and an optional comment. - def add_description(description) - return if ! description - comment = description.strip - add_comment(comment) if comment && ! comment.empty? - end - - # Writing to the comment attribute is the same as adding a description. - def comment=(description) - add_description(description) - end - - # Add a comment to the task. If a comment alread exists, separate - # the new comment with " / ". - def add_comment(comment) - if @full_comment - @full_comment << " / " - else - @full_comment = '' - end - @full_comment << comment - if @full_comment =~ /\A([^.]+?\.)( |$)/ - @comment = $1 - else - @comment = @full_comment - end - end - private :add_comment - - # Set the names of the arguments for this task. +args+ should be - # an array of symbols, one for each argument name. - def set_arg_names(args) - @arg_names = args.map { |a| a.to_sym } - end - - # Return a string describing the internal state of a task. Useful for - # debugging. - def investigation - result = "------------------------------\n" - result << "Investigating #{name}\n" - result << "class: #{self.class}\n" - result << "task needed: #{needed?}\n" - result << "timestamp: #{timestamp}\n" - result << "pre-requisites: \n" - prereqs = @prerequisites.collect {|name| application[name]} - prereqs.sort! {|a,b| a.timestamp <=> b.timestamp} - prereqs.each do |p| - result << "--#{p.name} (#{p.timestamp})\n" - end - latest_prereq = @prerequisites.collect{|n| application[n].timestamp}.max - result << "latest-prerequisite time: #{latest_prereq}\n" - result << "................................\n\n" - return result - end - - # ---------------------------------------------------------------- - # Rake Module Methods - # - class << self - - # Clear the task list. This cause rake to immediately forget all the - # tasks that have been assigned. (Normally used in the unit tests.) - def clear - Rake.application.clear - end - - # List of all defined tasks. - def tasks - Rake.application.tasks - end - - # Return a task with the given name. If the task is not currently - # known, try to synthesize one from the defined rules. If no rules are - # found, but an existing file matches the task name, assume it is a file - # task with no dependencies or actions. - def [](task_name) - Rake.application[task_name] - end - - # TRUE if the task name is already defined. - def task_defined?(task_name) - Rake.application.lookup(task_name) != nil - end - - # Define a task given +args+ and an option block. If a rule with the - # given name already exists, the prerequisites and actions are added to - # the existing task. Returns the defined task. - def define_task(*args, &block) - Rake.application.define_task(self, *args, &block) - end - - # Define a rule for synthesizing tasks. - def create_rule(*args, &block) - Rake.application.create_rule(*args, &block) - end - - # Apply the scope to the task name according to the rules for - # this kind of task. Generic tasks will accept the scope as - # part of the name. - def scope_name(scope, task_name) - (scope + [task_name]).join(':') - end - - end # class << Rake::Task - end # class Rake::Task - - - ########################################################################### - # A FileTask is a task that includes time based dependencies. If any of a - # FileTask's prerequisites have a timestamp that is later than the file - # represented by this task, then the file must be rebuilt (using the - # supplied actions). - # - class FileTask < Task - - # Is this file task needed? Yes if it doesn't exist, or if its time stamp - # is out of date. - def needed? - ! File.exist?(name) || out_of_date?(timestamp) - end - - # Time stamp for file task. - def timestamp - if File.exist?(name) - File.mtime(name.to_s) - else - Rake::EARLY - end - end - - private - - # Are there any prerequisites with a later time than the given time stamp? - def out_of_date?(stamp) - @prerequisites.any? { |n| application[n].timestamp > stamp} - end - - # ---------------------------------------------------------------- - # Task class methods. - # - class << self - # Apply the scope to the task name according to the rules for this kind - # of task. File based tasks ignore the scope when creating the name. - def scope_name(scope, task_name) - task_name - end - end - end # class Rake::FileTask - - ########################################################################### - # A FileCreationTask is a file task that when used as a dependency will be - # needed if and only if the file has not been created. Once created, it is - # not re-triggered if any of its dependencies are newer, nor does trigger - # any rebuilds of tasks that depend on it whenever it is updated. - # - class FileCreationTask < FileTask - # Is this file task needed? Yes if it doesn't exist. - def needed? - ! File.exist?(name) - end - - # Time stamp for file creation task. This time stamp is earlier - # than any other time stamp. - def timestamp - Rake::EARLY - end - end - - ########################################################################### - # Same as a regular task, but the immediate prerequisites are done in - # parallel using Ruby threads. - # - class MultiTask < Task - private - def invoke_prerequisites(args, invocation_chain) - threads = @prerequisites.collect { |p| - Thread.new(p) { |r| application[r].invoke_with_call_chain(args, invocation_chain) } - } - threads.each { |t| t.join } - end - end -end # module Rake - -## ########################################################################### -# Task Definition Functions ... - -# Declare a basic task. -# -# Example: -# task :clobber => [:clean] do -# rm_rf "html" -# end -# -def task(*args, &block) - Rake::Task.define_task(*args, &block) -end - - -# Declare a file task. -# -# Example: -# file "config.cfg" => ["config.template"] do -# open("config.cfg", "w") do |outfile| -# open("config.template") do |infile| -# while line = infile.gets -# outfile.puts line -# end -# end -# end -# end -# -def file(*args, &block) - Rake::FileTask.define_task(*args, &block) -end - -# Declare a file creation task. -# (Mainly used for the directory command). -def file_create(args, &block) - Rake::FileCreationTask.define_task(args, &block) -end - -# Declare a set of files tasks to create the given directories on demand. -# -# Example: -# directory "testdata/doc" -# -def directory(dir) - Rake.each_dir_parent(dir) do |d| - file_create d do |t| - mkdir_p t.name if ! File.exist?(t.name) - end - end -end - -# Declare a task that performs its prerequisites in parallel. Multitasks does -# *not* guarantee that its prerequisites will execute in any given order -# (which is obvious when you think about it) -# -# Example: -# multitask :deploy => [:deploy_gem, :deploy_rdoc] -# -def multitask(args, &block) - Rake::MultiTask.define_task(args, &block) -end - -# Create a new rake namespace and use it for evaluating the given block. -# Returns a NameSpace object that can be used to lookup tasks defined in the -# namespace. -# -# E.g. -# -# ns = namespace "nested" do -# task :run -# end -# task_run = ns[:run] # find :run in the given namespace. -# -def namespace(name=nil, &block) - Rake.application.in_namespace(name, &block) -end - -# Declare a rule for auto-tasks. -# -# Example: -# rule '.o' => '.c' do |t| -# sh %{cc -o #{t.name} #{t.source}} -# end -# -def rule(*args, &block) - Rake::Task.create_rule(*args, &block) -end - -# Describe the next rake task. -# -# Example: -# desc "Run the Unit Tests" -# task :test => [:build] -# runtests -# end -# -def desc(description) - Rake.application.last_description = description -end - -# Import the partial Rakefiles +fn+. Imported files are loaded _after_ the -# current file is completely loaded. This allows the import statement to -# appear anywhere in the importing file, and yet allowing the imported files -# to depend on objects defined in the importing file. -# -# A common use of the import statement is to include files containing -# dependency declarations. -# -# See also the --rakelibdir command line option. -# -# Example: -# import ".depend", "my_rules" -# -def import(*fns) - fns.each do |fn| - Rake.application.add_import(fn) - end -end - -############################################################################# -# This a FileUtils extension that defines several additional commands to be -# added to the FileUtils utility functions. -# -module FileUtils - RUBY_EXT = ((Config::CONFIG['ruby_install_name'] =~ /\.(com|cmd|exe|bat|rb|sh)$/) ? - "" : - Config::CONFIG['EXEEXT']) - - RUBY = File.join( - Config::CONFIG['bindir'], - Config::CONFIG['ruby_install_name'] + RUBY_EXT). - sub(/.*\s.*/m, '"\&"') - - OPT_TABLE['sh'] = %w(noop verbose) - OPT_TABLE['ruby'] = %w(noop verbose) - - # Run the system command +cmd+. If multiple arguments are given the command - # is not run with the shell (same semantics as Kernel::exec and - # Kernel::system). - # - # Example: - # sh %{ls -ltr} - # - # sh 'ls', 'file with spaces' - # - # # check exit status after command runs - # sh %{grep pattern file} do |ok, res| - # if ! ok - # puts "pattern not found (status = #{res.exitstatus})" - # end - # end - # - def sh(*cmd, &block) - options = (Hash === cmd.last) ? cmd.pop : {} - unless block_given? - show_command = cmd.join(" ") - show_command = show_command[0,42] + "..." unless $trace - # TODO code application logic heref show_command.length > 45 - block = lambda { |ok, status| - ok or fail "Command failed with status (#{status.exitstatus}): [#{show_command}]" - } - end - if RakeFileUtils.verbose_flag == :default - options[:verbose] = true - else - options[:verbose] ||= RakeFileUtils.verbose_flag - end - options[:noop] ||= RakeFileUtils.nowrite_flag - rake_check_options options, :noop, :verbose - rake_output_message cmd.join(" ") if options[:verbose] - unless options[:noop] - res = rake_system(*cmd) - status = $? - status = PseudoStatus.new(1) if !res && status.nil? - block.call(res, status) - end - end - - def rake_system(*cmd) - Rake::AltSystem.system(*cmd) - end - private :rake_system - - # Run a Ruby interpreter with the given arguments. - # - # Example: - # ruby %{-pe '$_.upcase!' 1 then - sh(*([RUBY] + args + [options]), &block) - else - sh("#{RUBY} #{args.first}", options, &block) - end - end - - LN_SUPPORTED = [true] - - # Attempt to do a normal file link, but fall back to a copy if the link - # fails. - def safe_ln(*args) - unless LN_SUPPORTED[0] - cp(*args) - else - begin - ln(*args) - rescue StandardError, NotImplementedError => ex - LN_SUPPORTED[0] = false - cp(*args) - end - end - end - - # Split a file path into individual directory names. - # - # Example: - # split_all("a/b/c") => ['a', 'b', 'c'] - # - def split_all(path) - head, tail = File.split(path) - return [tail] if head == '.' || tail == '/' - return [head, tail] if head == '/' - return split_all(head) + [tail] - end -end - -############################################################################# -# RakeFileUtils provides a custom version of the FileUtils methods that -# respond to the verbose and nowrite commands. -# -module RakeFileUtils - include FileUtils - - class << self - attr_accessor :verbose_flag, :nowrite_flag - end - RakeFileUtils.verbose_flag = :default - RakeFileUtils.nowrite_flag = false - - $fileutils_verbose = true - $fileutils_nowrite = false - - FileUtils::OPT_TABLE.each do |name, opts| - default_options = [] - if opts.include?(:verbose) || opts.include?("verbose") - default_options << ':verbose => RakeFileUtils.verbose_flag' - end - if opts.include?(:noop) || opts.include?("noop") - default_options << ':noop => RakeFileUtils.nowrite_flag' - end - - next if default_options.empty? - module_eval(<<-EOS, __FILE__, __LINE__ + 1) - def #{name}( *args, &block ) - super( - *rake_merge_option(args, - #{default_options.join(', ')} - ), &block) - end - EOS - end - - # Get/set the verbose flag controlling output from the FileUtils utilities. - # If verbose is true, then the utility method is echoed to standard output. - # - # Examples: - # verbose # return the current value of the verbose flag - # verbose(v) # set the verbose flag to _v_. - # verbose(v) { code } # Execute code with the verbose flag set temporarily to _v_. - # # Return to the original value when code is done. - def verbose(value=nil) - oldvalue = RakeFileUtils.verbose_flag - RakeFileUtils.verbose_flag = value unless value.nil? - if block_given? - begin - yield - ensure - RakeFileUtils.verbose_flag = oldvalue - end - end - RakeFileUtils.verbose_flag - end - - # Get/set the nowrite flag controlling output from the FileUtils utilities. - # If verbose is true, then the utility method is echoed to standard output. - # - # Examples: - # nowrite # return the current value of the nowrite flag - # nowrite(v) # set the nowrite flag to _v_. - # nowrite(v) { code } # Execute code with the nowrite flag set temporarily to _v_. - # # Return to the original value when code is done. - def nowrite(value=nil) - oldvalue = RakeFileUtils.nowrite_flag - RakeFileUtils.nowrite_flag = value unless value.nil? - if block_given? - begin - yield - ensure - RakeFileUtils.nowrite_flag = oldvalue - end - end - oldvalue - end - - # Use this function to prevent protentially destructive ruby code from - # running when the :nowrite flag is set. - # - # Example: - # - # when_writing("Building Project") do - # project.build - # end - # - # The following code will build the project under normal conditions. If the - # nowrite(true) flag is set, then the example will print: - # DRYRUN: Building Project - # instead of actually building the project. - # - def when_writing(msg=nil) - if RakeFileUtils.nowrite_flag - puts "DRYRUN: #{msg}" if msg - else - yield - end - end - - # Merge the given options with the default values. - def rake_merge_option(args, defaults) - if Hash === args.last - defaults.update(args.last) - args.pop - end - args.push defaults - args - end - private :rake_merge_option - - # Send the message to the default rake output (which is $stderr). - def rake_output_message(message) - $stderr.puts(message) - end - private :rake_output_message - - # Check that the options do not contain options not listed in +optdecl+. An - # ArgumentError exception is thrown if non-declared options are found. - def rake_check_options(options, *optdecl) - h = options.dup - optdecl.each do |name| - h.delete name - end - raise ArgumentError, "no such option: #{h.keys.join(' ')}" unless h.empty? - end - private :rake_check_options - - extend self -end - -############################################################################# -# Include the FileUtils file manipulation functions in the top level module, -# but mark them private so that they don't unintentionally define methods on -# other objects. - -include RakeFileUtils -private(*FileUtils.instance_methods(false)) -private(*RakeFileUtils.instance_methods(false)) - -###################################################################### -module Rake - - ########################################################################### - # A FileList is essentially an array with a few helper methods defined to - # make file manipulation a bit easier. - # - # FileLists are lazy. When given a list of glob patterns for possible files - # to be included in the file list, instead of searching the file structures - # to find the files, a FileList holds the pattern for latter use. - # - # This allows us to define a number of FileList to match any number of - # files, but only search out the actual files when then FileList itself is - # actually used. The key is that the first time an element of the - # FileList/Array is requested, the pending patterns are resolved into a real - # list of file names. - # - class FileList - - include Cloneable - - # == Method Delegation - # - # The lazy evaluation magic of FileLists happens by implementing all the - # array specific methods to call +resolve+ before delegating the heavy - # lifting to an embedded array object (@items). - # - # In addition, there are two kinds of delegation calls. The regular kind - # delegates to the @items array and returns the result directly. Well, - # almost directly. It checks if the returned value is the @items object - # itself, and if so will return the FileList object instead. - # - # The second kind of delegation call is used in methods that normally - # return a new Array object. We want to capture the return value of these - # methods and wrap them in a new FileList object. We enumerate these - # methods in the +SPECIAL_RETURN+ list below. - - # List of array methods (that are not in +Object+) that need to be - # delegated. - ARRAY_METHODS = (Array.instance_methods - Object.instance_methods).map { |n| n.to_s } - - # List of additional methods that must be delegated. - MUST_DEFINE = %w[to_a inspect] - - # List of methods that should not be delegated here (we define special - # versions of them explicitly below). - MUST_NOT_DEFINE = %w[to_a to_ary partition *] - - # List of delegated methods that return new array values which need - # wrapping. - SPECIAL_RETURN = %w[ - map collect sort sort_by select find_all reject grep - compact flatten uniq values_at - + - & | - ] - - DELEGATING_METHODS = (ARRAY_METHODS + MUST_DEFINE - MUST_NOT_DEFINE).collect{ |s| s.to_s }.sort.uniq - - # Now do the delegation. - DELEGATING_METHODS.each_with_index do |sym, i| - if SPECIAL_RETURN.include?(sym) - ln = __LINE__+1 - class_eval %{ - def #{sym}(*args, &block) - resolve - result = @items.send(:#{sym}, *args, &block) - FileList.new.import(result) - end - }, __FILE__, ln - else - ln = __LINE__+1 - class_eval %{ - def #{sym}(*args, &block) - resolve - result = @items.send(:#{sym}, *args, &block) - result.object_id == @items.object_id ? self : result - end - }, __FILE__, ln - end - end - - # Create a file list from the globbable patterns given. If you wish to - # perform multiple includes or excludes at object build time, use the - # "yield self" pattern. - # - # Example: - # file_list = FileList.new('lib/**/*.rb', 'test/test*.rb') - # - # pkg_files = FileList.new('lib/**/*') do |fl| - # fl.exclude(/\bCVS\b/) - # end - # - def initialize(*patterns) - @pending_add = [] - @pending = false - @exclude_patterns = DEFAULT_IGNORE_PATTERNS.dup - @exclude_procs = DEFAULT_IGNORE_PROCS.dup - @exclude_re = nil - @items = [] - patterns.each { |pattern| include(pattern) } - yield self if block_given? - end - - # Add file names defined by glob patterns to the file list. If an array - # is given, add each element of the array. - # - # Example: - # file_list.include("*.java", "*.cfg") - # file_list.include %w( math.c lib.h *.o ) - # - def include(*filenames) - # TODO: check for pending - filenames.each do |fn| - if fn.respond_to? :to_ary - include(*fn.to_ary) - else - @pending_add << fn - end - end - @pending = true - self - end - alias :add :include - - # Register a list of file name patterns that should be excluded from the - # list. Patterns may be regular expressions, glob patterns or regular - # strings. In addition, a block given to exclude will remove entries that - # return true when given to the block. - # - # Note that glob patterns are expanded against the file system. If a file - # is explicitly added to a file list, but does not exist in the file - # system, then an glob pattern in the exclude list will not exclude the - # file. - # - # Examples: - # FileList['a.c', 'b.c'].exclude("a.c") => ['b.c'] - # FileList['a.c', 'b.c'].exclude(/^a/) => ['b.c'] - # - # If "a.c" is a file, then ... - # FileList['a.c', 'b.c'].exclude("a.*") => ['b.c'] - # - # If "a.c" is not a file, then ... - # FileList['a.c', 'b.c'].exclude("a.*") => ['a.c', 'b.c'] - # - def exclude(*patterns, &block) - patterns.each do |pat| - @exclude_patterns << pat - end - if block_given? - @exclude_procs << block - end - resolve_exclude if ! @pending - self - end - - - # Clear all the exclude patterns so that we exclude nothing. - def clear_exclude - @exclude_patterns = [] - @exclude_procs = [] - calculate_exclude_regexp if ! @pending - self - end - - # Define equality. - def ==(array) - to_ary == array - end - - # Return the internal array object. - def to_a - resolve - @items - end - - # Return the internal array object. - def to_ary - to_a - end - - # Lie about our class. - def is_a?(klass) - klass == Array || super(klass) - end - alias kind_of? is_a? - - # Redefine * to return either a string or a new file list. - def *(other) - result = @items * other - case result - when Array - FileList.new.import(result) - else - result - end - end - - # Resolve all the pending adds now. - def resolve - if @pending - @pending = false - @pending_add.each do |fn| resolve_add(fn) end - @pending_add = [] - resolve_exclude - end - self - end - - def calculate_exclude_regexp - ignores = [] - @exclude_patterns.each do |pat| - case pat - when Regexp - ignores << pat - when /[*?]/ - Dir[pat].each do |p| ignores << p end - else - ignores << Regexp.quote(pat) - end - end - if ignores.empty? - @exclude_re = /^$/ - else - re_str = ignores.collect { |p| "(" + p.to_s + ")" }.join("|") - @exclude_re = Regexp.new(re_str) - end - end - - def resolve_add(fn) - case fn - when %r{[*?\[\{]} - add_matching(fn) - else - self << fn - end - end - private :resolve_add - - def resolve_exclude - calculate_exclude_regexp - reject! { |fn| exclude?(fn) } - self - end - private :resolve_exclude - - # Return a new FileList with the results of running +sub+ against each - # element of the oringal list. - # - # Example: - # FileList['a.c', 'b.c'].sub(/\.c$/, '.o') => ['a.o', 'b.o'] - # - def sub(pat, rep) - inject(FileList.new) { |res, fn| res << fn.sub(pat,rep) } - end - - # Return a new FileList with the results of running +gsub+ against each - # element of the original list. - # - # Example: - # FileList['lib/test/file', 'x/y'].gsub(/\//, "\\") - # => ['lib\\test\\file', 'x\\y'] - # - def gsub(pat, rep) - inject(FileList.new) { |res, fn| res << fn.gsub(pat,rep) } - end - - # Same as +sub+ except that the oringal file list is modified. - def sub!(pat, rep) - each_with_index { |fn, i| self[i] = fn.sub(pat,rep) } - self - end - - # Same as +gsub+ except that the original file list is modified. - def gsub!(pat, rep) - each_with_index { |fn, i| self[i] = fn.gsub(pat,rep) } - self - end - - # Apply the pathmap spec to each of the included file names, returning a - # new file list with the modified paths. (See String#pathmap for - # details.) - def pathmap(spec=nil) - collect { |fn| fn.pathmap(spec) } - end - - # Return a new FileList with String#ext method applied - # to each member of the array. - # - # This method is a shortcut for: - # - # array.collect { |item| item.ext(newext) } - # - # +ext+ is a user added method for the Array class. - def ext(newext='') - collect { |fn| fn.ext(newext) } - end - - - # Grep each of the files in the filelist using the given pattern. If a - # block is given, call the block on each matching line, passing the file - # name, line number, and the matching line of text. If no block is given, - # a standard emac style file:linenumber:line message will be printed to - # standard out. - def egrep(pattern, *options) - each do |fn| - open(fn, "rb", *options) do |inf| - count = 0 - inf.each do |line| - count += 1 - if pattern.match(line) - if block_given? - yield fn, count, line - else - puts "#{fn}:#{count}:#{line}" - end - end - end - end - end - end - - # Return a new file list that only contains file names from the current - # file list that exist on the file system. - def existing - select { |fn| File.exist?(fn) } - end - - # Modify the current file list so that it contains only file name that - # exist on the file system. - def existing! - resolve - @items = @items.select { |fn| File.exist?(fn) } - self - end - - # FileList version of partition. Needed because the nested arrays should - # be FileLists in this version. - def partition(&block) # :nodoc: - resolve - result = @items.partition(&block) - [ - FileList.new.import(result[0]), - FileList.new.import(result[1]), - ] - end - - # Convert a FileList to a string by joining all elements with a space. - def to_s - resolve - self.join(' ') - end - - # Add matching glob patterns. - def add_matching(pattern) - Dir[pattern].each do |fn| - self << fn unless exclude?(fn) - end - end - private :add_matching - - # Should the given file name be excluded? - def exclude?(fn) - calculate_exclude_regexp unless @exclude_re - fn =~ @exclude_re || @exclude_procs.any? { |p| p.call(fn) } - end - - DEFAULT_IGNORE_PATTERNS = [ - /(^|[\/\\])CVS([\/\\]|$)/, - /(^|[\/\\])\.svn([\/\\]|$)/, - /\.bak$/, - /~$/ - ] - DEFAULT_IGNORE_PROCS = [ - proc { |fn| fn =~ /(^|[\/\\])core$/ && ! File.directory?(fn) } - ] -# @exclude_patterns = DEFAULT_IGNORE_PATTERNS.dup - - def import(array) - @items = array - self - end - - class << self - # Create a new file list including the files listed. Similar to: - # - # FileList.new(*args) - def [](*args) - new(*args) - end - end - end # FileList -end - -module Rake - class << self - - # Yield each file or directory component. - def each_dir_parent(dir) # :nodoc: - old_length = nil - while dir != '.' && dir.length != old_length - yield(dir) - old_length = dir.length - dir = File.dirname(dir) - end - end - end -end # module Rake - -# Alias FileList to be available at the top level. -FileList = Rake::FileList - -############################################################################# -module Rake - - # Default Rakefile loader used by +import+. - class DefaultLoader - def load(fn) - Kernel.load(File.expand_path(fn)) - end - end - - # EarlyTime is a fake timestamp that occurs _before_ any other time value. - class EarlyTime - include Comparable - include Singleton - - def <=>(other) - -1 - end - - def to_s - "" - end - end - - EARLY = EarlyTime.instance -end # module Rake - -############################################################################# -# Extensions to time to allow comparisons with an early time class. -# -class Time - alias rake_original_time_compare :<=> - def <=>(other) - if Rake::EarlyTime === other - - other.<=>(self) - else - rake_original_time_compare(other) - end - end -end # class Time - -module Rake - - #################################################################### - # The NameSpace class will lookup task names in the the scope - # defined by a +namespace+ command. - # - class NameSpace - - # Create a namespace lookup object using the given task manager - # and the list of scopes. - def initialize(task_manager, scope_list) - @task_manager = task_manager - @scope = scope_list.dup - end - - # Lookup a task named +name+ in the namespace. - def [](name) - @task_manager.lookup(name, @scope) - end - - # Return the list of tasks defined in this and nested namespaces. - def tasks - @task_manager.tasks_in_scope(@scope) - end - end # NameSpace - - - #################################################################### - # The TaskManager module is a mixin for managing tasks. - module TaskManager - # Track the last comment made in the Rakefile. - attr_accessor :last_description - alias :last_comment :last_description # Backwards compatibility - - def initialize - super - @tasks = Hash.new - @rules = Array.new - @scope = Array.new - @last_description = nil - end - - def create_rule(*args, &block) - pattern, arg_names, deps = resolve_args(args) - pattern = Regexp.new(Regexp.quote(pattern) + '$') if String === pattern - @rules << [pattern, deps, block] - end - - def define_task(task_class, *args, &block) - task_name, arg_names, deps = resolve_args(args) - task_name = task_class.scope_name(@scope, task_name) - deps = [deps] unless deps.respond_to?(:to_ary) - deps = deps.collect {|d| d.to_s } - task = intern(task_class, task_name) - task.set_arg_names(arg_names) unless arg_names.empty? - task.add_description(@last_description) - @last_description = nil - task.enhance(deps, &block) - task - end - - # Lookup a task. Return an existing task if found, otherwise - # create a task of the current type. - def intern(task_class, task_name) - @tasks[task_name.to_s] ||= task_class.new(task_name, self) - end - - # Find a matching task for +task_name+. - def [](task_name, scopes=nil) - task_name = task_name.to_s - self.lookup(task_name, scopes) or - enhance_with_matching_rule(task_name) or - synthesize_file_task(task_name) or - fail "Don't know how to build task '#{task_name}'" - end - - def synthesize_file_task(task_name) - return nil unless File.exist?(task_name) - define_task(Rake::FileTask, task_name) - end - - # Resolve the arguments for a task/rule. Returns a triplet of - # [task_name, arg_name_list, prerequisites]. - def resolve_args(args) - if args.last.is_a?(Hash) - deps = args.pop - resolve_args_with_dependencies(args, deps) - else - resolve_args_without_dependencies(args) - end - end - - # Resolve task arguments for a task or rule when there are no - # dependencies declared. - # - # The patterns recognized by this argument resolving function are: - # - # task :t - # task :t, [:a] - # task :t, :a (deprecated) - # - def resolve_args_without_dependencies(args) - task_name = args.shift - if args.size == 1 && args.first.respond_to?(:to_ary) - arg_names = args.first.to_ary - else - arg_names = args - end - [task_name, arg_names, []] - end - private :resolve_args_without_dependencies - - # Resolve task arguments for a task or rule when there are - # dependencies declared. - # - # The patterns recognized by this argument resolving function are: - # - # task :t => [:d] - # task :t, [a] => [:d] - # task :t, :needs => [:d] (deprecated) - # task :t, :a, :needs => [:d] (deprecated) - # - def resolve_args_with_dependencies(args, hash) # :nodoc: - fail "Task Argument Error" if hash.size != 1 - key, value = hash.map { |k, v| [k,v] }.first - if args.empty? - task_name = key - arg_names = [] - deps = value - elsif key == :needs - task_name = args.shift - arg_names = args - deps = value - else - task_name = args.shift - arg_names = key - deps = value - end - deps = [deps] unless deps.respond_to?(:to_ary) - [task_name, arg_names, deps] - end - private :resolve_args_with_dependencies - - # If a rule can be found that matches the task name, enhance the - # task with the prerequisites and actions from the rule. Set the - # source attribute of the task appropriately for the rule. Return - # the enhanced task or nil of no rule was found. - def enhance_with_matching_rule(task_name, level=0) - fail Rake::RuleRecursionOverflowError, - "Rule Recursion Too Deep" if level >= 16 - @rules.each do |pattern, extensions, block| - if md = pattern.match(task_name) - task = attempt_rule(task_name, extensions, block, level) - return task if task - end - end - nil - rescue Rake::RuleRecursionOverflowError => ex - ex.add_target(task_name) - fail ex - end - - # List of all defined tasks in this application. - def tasks - @tasks.values.sort_by { |t| t.name } - end - - # List of all the tasks defined in the given scope (and its - # sub-scopes). - def tasks_in_scope(scope) - prefix = scope.join(":") - tasks.select { |t| - /^#{prefix}:/ =~ t.name - } - end - - # Clear all tasks in this application. - def clear - @tasks.clear - @rules.clear - end - - # Lookup a task, using scope and the scope hints in the task name. - # This method performs straight lookups without trying to - # synthesize file tasks or rules. Special scope names (e.g. '^') - # are recognized. If no scope argument is supplied, use the - # current scope. Return nil if the task cannot be found. - def lookup(task_name, initial_scope=nil) - initial_scope ||= @scope - task_name = task_name.to_s - if task_name =~ /^rake:/ - scopes = [] - task_name = task_name.sub(/^rake:/, '') - elsif task_name =~ /^(\^+)/ - scopes = initial_scope[0, initial_scope.size - $1.size] - task_name = task_name.sub(/^(\^+)/, '') - else - scopes = initial_scope - end - lookup_in_scope(task_name, scopes) - end - - # Lookup the task name - def lookup_in_scope(name, scope) - n = scope.size - while n >= 0 - tn = (scope[0,n] + [name]).join(':') - task = @tasks[tn] - return task if task - n -= 1 - end - nil - end - private :lookup_in_scope - - # Return the list of scope names currently active in the task - # manager. - def current_scope - @scope.dup - end - - # Evaluate the block in a nested namespace named +name+. Create - # an anonymous namespace if +name+ is nil. - def in_namespace(name) - name ||= generate_name - @scope.push(name) - ns = NameSpace.new(self, @scope) - yield(ns) - ns - ensure - @scope.pop - end - - private - - # Generate an anonymous namespace name. - def generate_name - @seed ||= 0 - @seed += 1 - "_anon_#{@seed}" - end - - def trace_rule(level, message) - puts "#{" "*level}#{message}" if Rake.application.options.trace_rules - end - - # Attempt to create a rule given the list of prerequisites. - def attempt_rule(task_name, extensions, block, level) - sources = make_sources(task_name, extensions) - prereqs = sources.collect { |source| - trace_rule level, "Attempting Rule #{task_name} => #{source}" - if File.exist?(source) || Rake::Task.task_defined?(source) - trace_rule level, "(#{task_name} => #{source} ... EXIST)" - source - elsif parent = enhance_with_matching_rule(source, level+1) - trace_rule level, "(#{task_name} => #{source} ... ENHANCE)" - parent.name - else - trace_rule level, "(#{task_name} => #{source} ... FAIL)" - return nil - end - } - task = FileTask.define_task({task_name => prereqs}, &block) - task.sources = prereqs - task - end - - # Make a list of sources from the list of file name extensions / - # translation procs. - def make_sources(task_name, extensions) - extensions.collect { |ext| - case ext - when /%/ - task_name.pathmap(ext) - when %r{/} - ext - when /^\./ - task_name.ext(ext) - when String - ext - when Proc - if ext.arity == 1 - ext.call(task_name) - else - ext.call - end - else - fail "Don't know how to handle rule dependent: #{ext.inspect}" - end - }.flatten - end - - end # TaskManager - - ###################################################################### - # Rake main application object. When invoking +rake+ from the - # command line, a Rake::Application object is created and run. - # - class Application - include TaskManager - - # The name of the application (typically 'rake') - attr_reader :name - - # The original directory where rake was invoked. - attr_reader :original_dir - - # Name of the actual rakefile used. - attr_reader :rakefile - - # List of the top level task names (task names from the command line). - attr_reader :top_level_tasks - - DEFAULT_RAKEFILES = ['rakefile', 'Rakefile', 'rakefile.rb', 'Rakefile.rb'].freeze - - # Initialize a Rake::Application object. - def initialize - super - @name = 'rake' - @rakefiles = DEFAULT_RAKEFILES.dup - @rakefile = nil - @pending_imports = [] - @imported = [] - @loaders = {} - @default_loader = Rake::DefaultLoader.new - @original_dir = Dir.pwd - @top_level_tasks = [] - add_loader('rb', DefaultLoader.new) - add_loader('rf', DefaultLoader.new) - add_loader('rake', DefaultLoader.new) - @tty_output = STDOUT.tty? - end - - # Run the Rake application. The run method performs the following three steps: - # - # * Initialize the command line options (+init+). - # * Define the tasks (+load_rakefile+). - # * Run the top level tasks (+run_tasks+). - # - # If you wish to build a custom rake command, you should call +init+ on your - # application. The define any tasks. Finally, call +top_level+ to run your top - # level tasks. - def run - standard_exception_handling do - init - load_rakefile - top_level - end - end - - # Initialize the command line parameters and app name. - def init(app_name='rake') - standard_exception_handling do - @name = app_name - handle_options - collect_tasks - end - end - - # Find the rakefile and then load it and any pending imports. - def load_rakefile - standard_exception_handling do - raw_load_rakefile - end - end - - # Run the top level tasks of a Rake application. - def top_level - standard_exception_handling do - if options.show_tasks - display_tasks_and_comments - elsif options.show_prereqs - display_prerequisites - else - top_level_tasks.each { |task_name| invoke_task(task_name) } - end - end - end - - # Add a loader to handle imported files ending in the extension - # +ext+. - def add_loader(ext, loader) - ext = ".#{ext}" unless ext =~ /^\./ - @loaders[ext] = loader - end - - # Application options from the command line - def options - @options ||= OpenStruct.new - end - - # private ---------------------------------------------------------------- - - def invoke_task(task_string) - name, args = parse_task_string(task_string) - t = self[name] - t.invoke(*args) - end - - def parse_task_string(string) - if string =~ /^([^\[]+)(\[(.*)\])$/ - name = $1 - args = $3.split(/\s*,\s*/) - else - name = string - args = [] - end - [name, args] - end - - # Provide standard execption handling for the given block. - def standard_exception_handling - begin - yield - rescue SystemExit => ex - # Exit silently with current status - raise - rescue OptionParser::InvalidOption => ex - # Exit silently - exit(false) - rescue Exception => ex - # Exit with error message - $stderr.puts "#{name} aborted!" - $stderr.puts ex.message - if options.trace - $stderr.puts ex.backtrace.join("\n") - else - $stderr.puts ex.backtrace.find {|str| str =~ /#{@rakefile}/ } || "" - $stderr.puts "(See full trace by running task with --trace)" - end - exit(false) - end - end - - # True if one of the files in RAKEFILES is in the current directory. - # If a match is found, it is copied into @rakefile. - def have_rakefile - @rakefiles.each do |fn| - if File.exist?(fn) - others = Dir.glob(fn, File::FNM_CASEFOLD) - return others.size == 1 ? others.first : fn - elsif fn == '' - return fn - end - end - return nil - end - - # True if we are outputting to TTY, false otherwise - def tty_output? - @tty_output - end - - # Override the detected TTY output state (mostly for testing) - def tty_output=( tty_output_state ) - @tty_output = tty_output_state - end - - # We will truncate output if we are outputting to a TTY or if we've been - # given an explicit column width to honor - def truncate_output? - tty_output? || ENV['RAKE_COLUMNS'] - end - - # Display the tasks and comments. - def display_tasks_and_comments - displayable_tasks = tasks.select { |t| - t.comment && t.name =~ options.show_task_pattern - } - if options.full_description - displayable_tasks.each do |t| - puts "#{name} #{t.name_with_args}" - t.full_comment.split("\n").each do |line| - puts " #{line}" - end - puts - end - else - width = displayable_tasks.collect { |t| t.name_with_args.length }.max || 10 - max_column = truncate_output? ? terminal_width - name.size - width - 7 : nil - displayable_tasks.each do |t| - printf "#{name} %-#{width}s # %s\n", - t.name_with_args, max_column ? truncate(t.comment, max_column) : t.comment - end - end - end - - def terminal_width - if ENV['RAKE_COLUMNS'] - result = ENV['RAKE_COLUMNS'].to_i - else - result = unix? ? dynamic_width : 80 - end - (result < 10) ? 80 : result - rescue - 80 - end - - # Calculate the dynamic width of the - def dynamic_width - @dynamic_width ||= (dynamic_width_stty.nonzero? || dynamic_width_tput) - end - - def dynamic_width_stty - %x{stty size 2>/dev/null}.split[1].to_i - end - - def dynamic_width_tput - %x{tput cols 2>/dev/null}.to_i - end - - def unix? - RUBY_PLATFORM =~ /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i - end - - def windows? - Win32.windows? - end - - def truncate(string, width) - if string.length <= width - string - else - ( string[0, width-3] || "" ) + "..." - end - end - - # Display the tasks and prerequisites - def display_prerequisites - tasks.each do |t| - puts "#{name} #{t.name}" - t.prerequisites.each { |pre| puts " #{pre}" } - end - end - - # A list of all the standard options used in rake, suitable for - # passing to OptionParser. - def standard_rake_options - [ - ['--classic-namespace', '-C', "Put Task and FileTask in the top level namespace", - lambda { |value| - require 'rake/classic_namespace' - options.classic_namespace = true - } - ], - ['--describe', '-D [PATTERN]', "Describe the tasks (matching optional PATTERN), then exit.", - lambda { |value| - options.show_tasks = true - options.full_description = true - options.show_task_pattern = Regexp.new(value || '') - } - ], - ['--dry-run', '-n', "Do a dry run without executing actions.", - lambda { |value| - verbose(true) - nowrite(true) - options.dryrun = true - options.trace = true - } - ], - ['--execute', '-e CODE', "Execute some Ruby code and exit.", - lambda { |value| - eval(value) - exit - } - ], - ['--execute-print', '-p CODE', "Execute some Ruby code, print the result, then exit.", - lambda { |value| - puts eval(value) - exit - } - ], - ['--execute-continue', '-E CODE', - "Execute some Ruby code, then continue with normal task processing.", - lambda { |value| eval(value) } - ], - ['--libdir', '-I LIBDIR', "Include LIBDIR in the search path for required modules.", - lambda { |value| $:.push(value) } - ], - ['--prereqs', '-P', "Display the tasks and dependencies, then exit.", - lambda { |value| options.show_prereqs = true } - ], - ['--quiet', '-q', "Do not log messages to standard output.", - lambda { |value| verbose(false) } - ], - ['--rakefile', '-f [FILE]', "Use FILE as the rakefile.", - lambda { |value| - value ||= '' - @rakefiles.clear - @rakefiles << value - } - ], - ['--rakelibdir', '--rakelib', '-R RAKELIBDIR', - "Auto-import any .rake files in RAKELIBDIR. (default is 'rakelib')", - lambda { |value| options.rakelib = value.split(':') } - ], - ['--require', '-r MODULE', "Require MODULE before executing rakefile.", - lambda { |value| - begin - require value - rescue LoadError => ex - begin - rake_require value - rescue LoadError => ex2 - raise ex - end - end - } - ], - ['--rules', "Trace the rules resolution.", - lambda { |value| options.trace_rules = true } - ], - ['--no-search', '--nosearch', '-N', "Do not search parent directories for the Rakefile.", - lambda { |value| options.nosearch = true } - ], - ['--silent', '-s', "Like --quiet, but also suppresses the 'in directory' announcement.", - lambda { |value| - verbose(false) - options.silent = true - } - ], - ['--system', '-g', - "Using system wide (global) rakefiles (usually '~/.rake/*.rake').", - lambda { |value| options.load_system = true } - ], - ['--no-system', '--nosystem', '-G', - "Use standard project Rakefile search paths, ignore system wide rakefiles.", - lambda { |value| options.ignore_system = true } - ], - ['--tasks', '-T [PATTERN]', "Display the tasks (matching optional PATTERN) with descriptions, then exit.", - lambda { |value| - options.show_tasks = true - options.show_task_pattern = Regexp.new(value || '') - options.full_description = false - } - ], - ['--trace', '-t', "Turn on invoke/execute tracing, enable full backtrace.", - lambda { |value| - options.trace = true - verbose(true) - } - ], - ['--verbose', '-v', "Log message to standard output.", - lambda { |value| verbose(true) } - ], - ['--version', '-V', "Display the program version.", - lambda { |value| - puts "rake, version #{RAKEVERSION}" - exit - } - ] - ] - end - - # Read and handle the command line options. - def handle_options - options.rakelib = ['rakelib'] - - OptionParser.new do |opts| - opts.banner = "rake [-f rakefile] {options} targets..." - opts.separator "" - opts.separator "Options are ..." - - opts.on_tail("-h", "--help", "-H", "Display this help message.") do - puts opts - exit - end - - standard_rake_options.each { |args| opts.on(*args) } - end.parse! - - # If class namespaces are requested, set the global options - # according to the values in the options structure. - if options.classic_namespace - $show_tasks = options.show_tasks - $show_prereqs = options.show_prereqs - $trace = options.trace - $dryrun = options.dryrun - $silent = options.silent - end - end - - # Similar to the regular Ruby +require+ command, but will check - # for *.rake files in addition to *.rb files. - def rake_require(file_name, paths=$LOAD_PATH, loaded=$") - return false if loaded.include?(file_name) - paths.each do |path| - fn = file_name + ".rake" - full_path = File.join(path, fn) - if File.exist?(full_path) - load full_path - loaded << fn - return true - end - end - fail LoadError, "Can't find #{file_name}" - end - - def find_rakefile_location - here = Dir.pwd - while ! (fn = have_rakefile) - Dir.chdir("..") - if Dir.pwd == here || options.nosearch - return nil - end - here = Dir.pwd - end - [fn, here] - ensure - Dir.chdir(Rake.original_dir) - end - - def raw_load_rakefile # :nodoc: - rakefile, location = find_rakefile_location - if (! options.ignore_system) && - (options.load_system || rakefile.nil?) && - system_dir && File.directory?(system_dir) - puts "(in #{Dir.pwd})" unless options.silent - glob("#{system_dir}/*.rake") do |name| - add_import name - end - else - fail "No Rakefile found (looking for: #{@rakefiles.join(', ')})" if - rakefile.nil? - @rakefile = rakefile - Dir.chdir(location) - puts "(in #{Dir.pwd})" unless options.silent - $rakefile = @rakefile if options.classic_namespace - load File.expand_path(@rakefile) if @rakefile && @rakefile != '' - options.rakelib.each do |rlib| - glob("#{rlib}/*.rake") do |name| - add_import name - end - end - end - load_imports - end - - def glob(path, &block) - Dir[path.gsub("\\", '/')].each(&block) - end - private :glob - - # The directory path containing the system wide rakefiles. - def system_dir - @system_dir ||= - begin - if ENV['RAKE_SYSTEM'] - ENV['RAKE_SYSTEM'] - else - standard_system_dir - end - end - end - - # The standard directory containing system wide rake files. - if Win32.windows? - def standard_system_dir #:nodoc: - Win32.win32_system_dir - end - else - def standard_system_dir #:nodoc: - File.join(File.expand_path('~'), '.rake') - end - end - private :standard_system_dir - - # Collect the list of tasks on the command line. If no tasks are - # given, return a list containing only the default task. - # Environmental assignments are processed at this time as well. - def collect_tasks - @top_level_tasks = [] - ARGV.each do |arg| - if arg =~ /^(\w+)=(.*)$/ - ENV[$1] = $2 - else - @top_level_tasks << arg unless arg =~ /^-/ - end - end - @top_level_tasks.push("default") if @top_level_tasks.size == 0 - end - - # Add a file to the list of files to be imported. - def add_import(fn) - @pending_imports << fn - end - - # Load the pending list of imported files. - def load_imports - while fn = @pending_imports.shift - next if @imported.member?(fn) - if fn_task = lookup(fn) - fn_task.invoke - end - ext = File.extname(fn) - loader = @loaders[ext] || @default_loader - loader.load(fn) - @imported << fn - end - end - - # Warn about deprecated use of top level constant names. - def const_warning(const_name) - @const_warning ||= false - if ! @const_warning - $stderr.puts %{WARNING: Deprecated reference to top-level constant '#{const_name}' } + - %{found at: #{rakefile_location}} # ' - $stderr.puts %{ Use --classic-namespace on rake command} - $stderr.puts %{ or 'require "rake/classic_namespace"' in Rakefile} - end - @const_warning = true - end - - def rakefile_location - begin - fail - rescue RuntimeError => ex - ex.backtrace.find {|str| str =~ /#{@rakefile}/ } || "" - end - end - end -end - - -class Module - # Rename the original handler to make it available. - alias :rake_original_const_missing :const_missing - - # Check for deprecated uses of top level (i.e. in Object) uses of - # Rake class names. If someone tries to reference the constant - # name, display a warning and return the proper object. Using the - # --classic-namespace command line option will define these - # constants in Object and avoid this handler. - def const_missing(const_name) - case const_name - when :Task - Rake.application.const_warning(const_name) - Rake::Task - when :FileTask - Rake.application.const_warning(const_name) - Rake::FileTask - when :FileCreationTask - Rake.application.const_warning(const_name) - Rake::FileCreationTask - when :RakeApp - Rake.application.const_warning(const_name) - Rake::Application - else - rake_original_const_missing(const_name) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/alt_system.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/alt_system.rb deleted file mode 100644 index 510c40c9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/alt_system.rb +++ /dev/null @@ -1,108 +0,0 @@ -# -# Copyright (c) 2008 James M. Lawrence -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation files -# (the "Software"), to deal in the Software without restriction, -# including without limitation the rights to use, copy, modify, merge, -# publish, distribute, sublicense, and/or sell copies of the Software, -# and to permit persons to whom the Software is furnished to do so, -# subject to the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS -# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -# - -require 'rbconfig' - -# -# Alternate implementations of system() and backticks `` on Windows -# for ruby-1.8 and earlier. -# -module Rake::AltSystem - WINDOWS = Config::CONFIG["host_os"] =~ %r!(msdos|mswin|djgpp|mingw)! - - class << self - def define_module_function(name, &block) - define_method(name, &block) - module_function(name) - end - end - - if WINDOWS and RUBY_VERSION < "1.9.0" - RUNNABLE_EXTS = %w[com exe bat cmd] - RUNNABLE_PATTERN = %r!\.(#{RUNNABLE_EXTS.join('|')})\Z!i - - define_module_function :kernel_system, &Kernel.method(:system) - define_module_function :kernel_backticks, &Kernel.method(:'`') - - module_function - - def repair_command(cmd) - "call " + ( - if cmd =~ %r!\A\s*\".*?\"! - # already quoted - cmd - elsif match = cmd.match(%r!\A\s*(\S+)!) - if match[1] =~ %r!/! - # avoid x/y.bat interpretation as x with option /y - %Q!"#{match[1]}"! + match.post_match - else - # a shell command will fail if quoted - cmd - end - else - # empty or whitespace - cmd - end - ) - end - - def find_runnable(file) - if file =~ RUNNABLE_PATTERN - file - else - RUNNABLE_EXTS.each { |ext| - if File.exist?(test = "#{file}.#{ext}") - return test - end - } - nil - end - end - - def system(cmd, *args) - repaired = ( - if args.empty? - [repair_command(cmd)] - elsif runnable = find_runnable(cmd) - [File.expand_path(runnable), *args] - else - # non-existent file - [cmd, *args] - end - ) - kernel_system(*repaired) - end - - def backticks(cmd) - kernel_backticks(repair_command(cmd)) - end - - define_module_function :'`', &method(:backticks) - else - # Non-Windows or ruby-1.9+: same as Kernel versions - define_module_function :system, &Kernel.method(:system) - define_module_function :backticks, &Kernel.method(:'`') - define_module_function :'`', &Kernel.method(:'`') - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/classic_namespace.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/classic_namespace.rb deleted file mode 100644 index feb75699..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/classic_namespace.rb +++ /dev/null @@ -1,8 +0,0 @@ -# The following classes used to be in the top level namespace. -# Loading this file enables compatibility with older Rakefile that -# referenced Task from the top level. - -Task = Rake::Task -FileTask = Rake::FileTask -FileCreationTask = Rake::FileCreationTask -RakeApp = Rake::Application diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/clean.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/clean.rb deleted file mode 100644 index 4ee2c5ac..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/clean.rb +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env ruby - -# The 'rake/clean' file defines two file lists (CLEAN and CLOBBER) and -# two rake tasks (:clean and :clobber). -# -# [:clean] Clean up the project by deleting scratch files and backup -# files. Add files to the CLEAN file list to have the :clean -# target handle them. -# -# [:clobber] Clobber all generated and non-source files in a project. -# The task depends on :clean, so all the clean files will -# be deleted as well as files in the CLOBBER file list. -# The intent of this task is to return a project to its -# pristine, just unpacked state. - -require 'rake' - -CLEAN = Rake::FileList["**/*~", "**/*.bak", "**/core"] -CLEAN.clear_exclude.exclude { |fn| - fn.pathmap("%f") == 'core' && File.directory?(fn) -} - -desc "Remove any temporary products." -task :clean do - CLEAN.each { |fn| rm_r fn rescue nil } -end - -CLOBBER = Rake::FileList.new - -desc "Remove any generated file." -task :clobber => [:clean] do - CLOBBER.each { |fn| rm_r fn rescue nil } -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/compositepublisher.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/compositepublisher.rb deleted file mode 100644 index d771ccce..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/compositepublisher.rb +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env ruby - -module Rake - - # Manage several publishers as a single entity. - class CompositePublisher - def initialize - @publishers = [] - end - - # Add a publisher to the composite. - def add(pub) - @publishers << pub - end - - # Upload all the individual publishers. - def upload - @publishers.each { |p| p.upload } - end - end - -end - - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/ftptools.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/ftptools.rb deleted file mode 100644 index 4cd02f3e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/ftptools.rb +++ /dev/null @@ -1,153 +0,0 @@ -#!/usr/bin/env ruby - -# = Tools for FTP uploading. -# -# This file is still under development and is not released for general -# use. - -require 'date' -require 'net/ftp' - -module Rake # :nodoc: - - #################################################################### - # Note: Not released for general use. - class FtpFile - attr_reader :name, :size, :owner, :group, :time - - def self.date - @date_class ||= Date - end - - def self.time - @time_class ||= Time - end - - def initialize(path, entry) - @path = path - @mode, line, @owner, @group, size, d1, d2, d3, @name = entry.split(' ') - @size = size.to_i - @time = determine_time(d1, d2, d3) - end - - def path - File.join(@path, @name) - end - - def directory? - @mode[0] == ?d - end - - def mode - parse_mode(@mode) - end - - def symlink? - @mode[0] == ?l - end - - private # -------------------------------------------------------- - - def parse_mode(m) - result = 0 - (1..9).each do |i| - result = 2*result + ((m[i]==?-) ? 0 : 1) - end - result - end - - def determine_time(d1, d2, d3) - now = self.class.time.now - if /:/ =~ d3 - h, m = d3.split(':') - result = Time.parse("#{d1} #{d2} #{now.year} #{d3}") - if result > now - result = Time.parse("#{d1} #{d2} #{now.year-1} #{d3}") - end - else - result = Time.parse("#{d1} #{d2} #{d3}") - end - result -# elements = ParseDate.parsedate("#{d1} #{d2} #{d3}") -# if elements[0].nil? -# today = self.class.date.today -# if elements[1] > today.month -# elements[0] = today.year - 1 -# else -# elements[0] = today.year -# end -# end -# elements = elements.collect { |el| el.nil? ? 0 : el } -# Time.mktime(*elements[0,7]) - end - end - - #################################################################### - # Manage the uploading of files to an FTP account. - class FtpUploader - - # Log uploads to standard output when true. - attr_accessor :verbose - - class << FtpUploader - # Create an uploader and pass it to the given block as +up+. - # When the block is complete, close the uploader. - def connect(path, host, account, password) - up = self.new(path, host, account, password) - begin - yield(up) - ensure - up.close - end - end - end - - # Create an FTP uploader targetting the directory +path+ on +host+ - # using the given account and password. +path+ will be the root - # path of the uploader. - def initialize(path, host, account, password) - @created = Hash.new - @path = path - @ftp = Net::FTP.new(host, account, password) - makedirs(@path) - @ftp.chdir(@path) - end - - # Create the directory +path+ in the uploader root path. - def makedirs(path) - route = [] - File.split(path).each do |dir| - route << dir - current_dir = File.join(route) - if @created[current_dir].nil? - @created[current_dir] = true - puts "Creating Directory #{current_dir}" if @verbose - @ftp.mkdir(current_dir) rescue nil - end - end - end - - # Upload all files matching +wildcard+ to the uploader's root - # path. - def upload_files(wildcard) - Dir[wildcard].each do |fn| - upload(fn) - end - end - - # Close the uploader. - def close - @ftp.close - end - - private # -------------------------------------------------------- - - # Upload a single file to the uploader's root path. - def upload(file) - puts "Uploading #{file}" if @verbose - dir = File.dirname(file) - makedirs(dir) - @ftp.putbinaryfile(file, file) unless File.directory?(file) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/publisher.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/publisher.rb deleted file mode 100644 index 65cc01fb..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/publisher.rb +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env ruby - -# Copyright 2003, 2004, 2005, 2006, 2007, 2008 by Jim Weirich (jim@weirichhouse.org) -# All rights reserved. - -# Permission is granted for use, copying, modification, distribution, -# and distribution of modified versions of this work as long as the -# above copyright notice is included. - -# Configuration information about an upload host system. -# * name :: Name of host system. -# * webdir :: Base directory for the web information for the -# application. The application name (APP) is appended to -# this directory before using. -# * pkgdir :: Directory on the host system where packages can be -# placed. -HostInfo = Struct.new(:name, :webdir, :pkgdir) - -# Manage several publishers as a single entity. -class CompositePublisher - def initialize - @publishers = [] - end - - # Add a publisher to the composite. - def add(pub) - @publishers << pub - end - - # Upload all the individual publishers. - def upload - @publishers.each { |p| p.upload } - end -end - -# Publish an entire directory to an existing remote directory using -# SSH. -class SshDirPublisher - def initialize(host, remote_dir, local_dir) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - end - - def upload - run %{scp -rq #{@local_dir}/* #{@host}:#{@remote_dir}} - end -end - -# Publish an entire directory to a fresh remote directory using SSH. -class SshFreshDirPublisher < SshDirPublisher - def upload - run %{ssh #{@host} rm -rf #{@remote_dir}} rescue nil - run %{ssh #{@host} mkdir #{@remote_dir}} - super - end -end - -# Publish a list of files to an existing remote directory. -class SshFilePublisher - # Create a publisher using the give host information. - def initialize(host, remote_dir, local_dir, *files) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - @files = files - end - - # Upload the local directory to the remote directory. - def upload - @files.each do |fn| - run %{scp -q #{@local_dir}/#{fn} #{@host}:#{@remote_dir}} - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/rubyforgepublisher.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/rubyforgepublisher.rb deleted file mode 100644 index a91265fd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/rubyforgepublisher.rb +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env ruby - -require 'rake/contrib/sshpublisher' - -module Rake - - class RubyForgePublisher < SshDirPublisher - attr_reader :project, :proj_id, :user - - def initialize(projname, user) - super( - "#{user}@rubyforge.org", - "/var/www/gforge-projects/#{projname}", - "html") - end - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/sshpublisher.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/sshpublisher.rb deleted file mode 100644 index d77fcc37..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/sshpublisher.rb +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env ruby - -require 'rake/contrib/compositepublisher' - -module Rake - - # Publish an entire directory to an existing remote directory using - # SSH. - class SshDirPublisher - def initialize(host, remote_dir, local_dir) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - end - - def upload - sh %{scp -rq #{@local_dir}/* #{@host}:#{@remote_dir}} - end - end - - # Publish an entire directory to a fresh remote directory using SSH. - class SshFreshDirPublisher < SshDirPublisher - def upload - sh %{ssh #{@host} rm -rf #{@remote_dir}} rescue nil - sh %{ssh #{@host} mkdir #{@remote_dir}} - super - end - end - - # Publish a list of files to an existing remote directory. - class SshFilePublisher - # Create a publisher using the give host information. - def initialize(host, remote_dir, local_dir, *files) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - @files = files - end - - # Upload the local directory to the remote directory. - def upload - @files.each do |fn| - sh %{scp -q #{@local_dir}/#{fn} #{@host}:#{@remote_dir}} - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/sys.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/sys.rb deleted file mode 100644 index d7e95545..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/contrib/sys.rb +++ /dev/null @@ -1,209 +0,0 @@ -#!/usr/bin/env ruby - -#-- -# Copyright 2003, 2004, 2005, 2006, 2007, 2008 by Jim Weirich (jim@weirichhouse.org) -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -#++ -# -begin - require 'ftools' -rescue LoadError -end -require 'rbconfig' - -###################################################################### -# Sys provides a number of file manipulation tools for the convenience -# of writing Rakefiles. All commands in this module will announce -# their activity on standard output if the $verbose flag is set -# ($verbose = true is the default). You can control this by globally -# setting $verbose or by using the +verbose+ and +quiet+ methods. -# -# Sys has been deprecated in favor of the FileUtils module available -# in Ruby 1.8. -# -module Sys - RUBY = Config::CONFIG['ruby_install_name'] - - # Install all the files matching +wildcard+ into the +dest_dir+ - # directory. The permission mode is set to +mode+. - def install(wildcard, dest_dir, mode) - Dir[wildcard].each do |fn| - File.install(fn, dest_dir, mode, $verbose) - end - end - - # Run the system command +cmd+. - def run(cmd) - log cmd - system(cmd) or fail "Command Failed: [#{cmd}]" - end - - # Run a Ruby interpreter with the given arguments. - def ruby(*args) - run "#{RUBY} #{args.join(' ')}" - end - - # Copy a single file from +file_name+ to +dest_file+. - def copy(file_name, dest_file) - log "Copying file #{file_name} to #{dest_file}" - File.copy(file_name, dest_file) - end - - # Copy all files matching +wildcard+ into the directory +dest_dir+. - def copy_files(wildcard, dest_dir) - for_matching_files(wildcard, dest_dir) { |from, to| copy(from, to) } - end - - # Link +file_name+ to +dest_file+. - def link(file_name, dest_file) - log "Linking file #{file_name} to #{dest_file}" - File.link(file_name, dest_file) - end - - # Link all files matching +wildcard+ into the directory +dest_dir+. - def link_files(wildcard, dest_dir) - for_matching_files(wildcard, dest_dir) { |from, to| link(from, to) } - end - - # Symlink +file_name+ to +dest_file+. - def symlink(file_name, dest_file) - log "Symlinking file #{file_name} to #{dest_file}" - File.symlink(file_name, dest_file) - end - - # Symlink all files matching +wildcard+ into the directory +dest_dir+. - def symlink_files(wildcard, dest_dir) - for_matching_files(wildcard, dest_dir) { |from, to| link(from, to) } - end - - # Remove all files matching +wildcard+. If a matching file is a - # directory, it must be empty to be removed. used +delete_all+ to - # recursively delete directories. - def delete(*wildcards) - wildcards.each do |wildcard| - Dir[wildcard].each do |fn| - if File.directory?(fn) - log "Deleting directory #{fn}" - Dir.delete(fn) - else - log "Deleting file #{fn}" - File.delete(fn) - end - end - end - end - - # Recursively delete all files and directories matching +wildcard+. - def delete_all(*wildcards) - wildcards.each do |wildcard| - Dir[wildcard].each do |fn| - next if ! File.exist?(fn) - if File.directory?(fn) - Dir["#{fn}/*"].each do |subfn| - next if subfn=='.' || subfn=='..' - delete_all(subfn) - end - log "Deleting directory #{fn}" - Dir.delete(fn) - else - log "Deleting file #{fn}" - File.delete(fn) - end - end - end - end - - # Make the directories given in +dirs+. - def makedirs(*dirs) - dirs.each do |fn| - log "Making directory #{fn}" - File.makedirs(fn) - end - end - - # Make +dir+ the current working directory for the duration of - # executing the given block. - def indir(dir) - olddir = Dir.pwd - Dir.chdir(dir) - yield - ensure - Dir.chdir(olddir) - end - - # Split a file path into individual directory names. - # - # For example: - # split_all("a/b/c") => ['a', 'b', 'c'] - def split_all(path) - head, tail = File.split(path) - return [tail] if head == '.' || tail == '/' - return [head, tail] if head == '/' - return split_all(head) + [tail] - end - - # Write a message to standard out if $verbose is enabled. - def log(msg) - print " " if $trace && $verbose - puts msg if $verbose - end - - # Perform a block with $verbose disabled. - def quiet(&block) - with_verbose(false, &block) - end - - # Perform a block with $verbose enabled. - def verbose(&block) - with_verbose(true, &block) - end - - # Perform a block with each file matching a set of wildcards. - def for_files(*wildcards) - wildcards.each do |wildcard| - Dir[wildcard].each do |fn| - yield(fn) - end - end - end - - extend(self) - - private # ---------------------------------------------------------- - - def for_matching_files(wildcard, dest_dir) - Dir[wildcard].each do |fn| - dest_file = File.join(dest_dir, fn) - parent = File.dirname(dest_file) - makedirs(parent) if ! File.directory?(parent) - yield(fn, dest_file) - end - end - - def with_verbose(v) - oldverbose = $verbose - $verbose = v - yield - ensure - $verbose = oldverbose - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/gempackagetask.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/gempackagetask.rb deleted file mode 100644 index 1e4632a2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/gempackagetask.rb +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/env ruby - -# Define a package task library to aid in the definition of GEM -# packages. - -require 'rubygems' -require 'rake' -require 'rake/packagetask' -require 'rubygems/user_interaction' -require 'rubygems/builder' - -module Rake - - # Create a package based upon a Gem spec. Gem packages, as well as - # zip files and tar/gzipped packages can be produced by this task. - # - # In addition to the Rake targets generated by PackageTask, a - # GemPackageTask will also generate the following tasks: - # - # ["package_dir/name-version.gem"] - # Create a Ruby GEM package with the given name and version. - # - # Example using a Ruby GEM spec: - # - # require 'rubygems' - # - # spec = Gem::Specification.new do |s| - # s.platform = Gem::Platform::RUBY - # s.summary = "Ruby based make-like utility." - # s.name = 'rake' - # s.version = PKG_VERSION - # s.requirements << 'none' - # s.require_path = 'lib' - # s.autorequire = 'rake' - # s.files = PKG_FILES - # s.description = < [:gem] - desc "Build the gem file #{gem_file}" - task :gem => ["#{package_dir}/#{gem_file}"] - file "#{package_dir}/#{gem_file}" => [package_dir] + @gem_spec.files do - when_writing("Creating GEM") { - Gem::Builder.new(gem_spec).build - verbose(true) { - mv gem_file, "#{package_dir}/#{gem_file}" - } - } - end - end - - def gem_file - if @gem_spec.platform == Gem::Platform::RUBY - "#{package_name}.gem" - else - "#{package_name}-#{@gem_spec.platform}.gem" - end - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/loaders/makefile.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/loaders/makefile.rb deleted file mode 100644 index be717ec7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/loaders/makefile.rb +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env ruby - -module Rake - - # Makefile loader to be used with the import file loader. - class MakefileLoader - SPACE_MARK = "__&NBSP;__" - - # Load the makefile dependencies in +fn+. - def load(fn) - open(fn) do |mf| - lines = mf.read - lines.gsub!(/\\ /, SPACE_MARK) - lines.gsub!(/#[^\n]*\n/m, "") - lines.gsub!(/\\\n/, ' ') - lines.split("\n").each do |line| - process_line(line) - end - end - end - - private - - # Process one logical line of makefile data. - def process_line(line) - file_tasks, args = line.split(':') - return if args.nil? - dependents = args.split.map { |d| respace(d) } - file_tasks.strip.split.each do |file_task| - file_task = respace(file_task) - file file_task => dependents - end - end - - def respace(str) - str.gsub(/#{SPACE_MARK}/, ' ') - end - end - - # Install the handler - Rake.application.add_loader('mf', MakefileLoader.new) -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/packagetask.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/packagetask.rb deleted file mode 100644 index 71b66a64..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/packagetask.rb +++ /dev/null @@ -1,184 +0,0 @@ -#!/usr/bin/env ruby - -# Define a package task libarary to aid in the definition of -# redistributable package files. - -require 'rake' -require 'rake/tasklib' - -module Rake - - # Create a packaging task that will package the project into - # distributable files (e.g zip archive or tar files). - # - # The PackageTask will create the following targets: - # - # [:package] - # Create all the requested package files. - # - # [:clobber_package] - # Delete all the package files. This target is automatically - # added to the main clobber target. - # - # [:repackage] - # Rebuild the package files from scratch, even if they are not out - # of date. - # - # ["package_dir/name-version.tgz"] - # Create a gzipped tar package (if need_tar is true). - # - # ["package_dir/name-version.tar.gz"] - # Create a gzipped tar package (if need_tar_gz is true). - # - # ["package_dir/name-version.tar.bz2"] - # Create a bzip2'd tar package (if need_tar_bz2 is true). - # - # ["package_dir/name-version.zip"] - # Create a zip package archive (if need_zip is true). - # - # Example: - # - # Rake::PackageTask.new("rake", "1.2.3") do |p| - # p.need_tar = true - # p.package_files.include("lib/**/*.rb") - # end - # - class PackageTask < TaskLib - # Name of the package (from the GEM Spec). - attr_accessor :name - - # Version of the package (e.g. '1.3.2'). - attr_accessor :version - - # Directory used to store the package files (default is 'pkg'). - attr_accessor :package_dir - - # True if a gzipped tar file (tgz) should be produced (default is false). - attr_accessor :need_tar - - # True if a gzipped tar file (tar.gz) should be produced (default is false). - attr_accessor :need_tar_gz - - # True if a bzip2'd tar file (tar.bz2) should be produced (default is false). - attr_accessor :need_tar_bz2 - - # True if a zip file should be produced (default is false) - attr_accessor :need_zip - - # List of files to be included in the package. - attr_accessor :package_files - - # Tar command for gzipped or bzip2ed archives. The default is 'tar'. - attr_accessor :tar_command - - # Zip command for zipped archives. The default is 'zip'. - attr_accessor :zip_command - - # Create a Package Task with the given name and version. - def initialize(name=nil, version=nil) - init(name, version) - yield self if block_given? - define unless name.nil? - end - - # Initialization that bypasses the "yield self" and "define" step. - def init(name, version) - @name = name - @version = version - @package_files = Rake::FileList.new - @package_dir = 'pkg' - @need_tar = false - @need_tar_gz = false - @need_tar_bz2 = false - @need_zip = false - @tar_command = 'tar' - @zip_command = 'zip' - end - - # Create the tasks defined by this task library. - def define - fail "Version required (or :noversion)" if @version.nil? - @version = nil if :noversion == @version - - desc "Build all the packages" - task :package - - desc "Force a rebuild of the package files" - task :repackage => [:clobber_package, :package] - - desc "Remove package products" - task :clobber_package do - rm_r package_dir rescue nil - end - - task :clobber => [:clobber_package] - - [ - [need_tar, tgz_file, "z"], - [need_tar_gz, tar_gz_file, "z"], - [need_tar_bz2, tar_bz2_file, "j"] - ].each do |(need, file, flag)| - if need - task :package => ["#{package_dir}/#{file}"] - file "#{package_dir}/#{file}" => [package_dir_path] + package_files do - chdir(package_dir) do - sh %{#{@tar_command} #{flag}cvf #{file} #{package_name}} - end - end - end - end - - if need_zip - task :package => ["#{package_dir}/#{zip_file}"] - file "#{package_dir}/#{zip_file}" => [package_dir_path] + package_files do - chdir(package_dir) do - sh %{#{@zip_command} -r #{zip_file} #{package_name}} - end - end - end - - directory package_dir - - file package_dir_path => @package_files do - mkdir_p package_dir rescue nil - @package_files.each do |fn| - f = File.join(package_dir_path, fn) - fdir = File.dirname(f) - mkdir_p(fdir) if !File.exist?(fdir) - if File.directory?(fn) - mkdir_p(f) - else - rm_f f - safe_ln(fn, f) - end - end - end - self - end - - def package_name - @version ? "#{@name}-#{@version}" : @name - end - - def package_dir_path - "#{package_dir}/#{package_name}" - end - - def tgz_file - "#{package_name}.tgz" - end - - def tar_gz_file - "#{package_name}.tar.gz" - end - - def tar_bz2_file - "#{package_name}.tar.bz2" - end - - def zip_file - "#{package_name}.zip" - end - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb deleted file mode 100644 index 8d7dad3c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/rake_test_loader.rb +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env ruby - -# Load the test files from the command line. - -ARGV.each { |f| load f unless f =~ /^-/ } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/rdoctask.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/rdoctask.rb deleted file mode 100644 index 660f3a2f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/rdoctask.rb +++ /dev/null @@ -1,209 +0,0 @@ -#!/usr/bin/env ruby - -require 'rake' -require 'rake/tasklib' - -module Rake - - # Create a documentation task that will generate the RDoc files for - # a project. - # - # The RDocTask will create the following targets: - # - # [rdoc] - # Main task for this RDOC task. - # - # [:clobber_rdoc] - # Delete all the rdoc files. This target is automatically - # added to the main clobber target. - # - # [:rerdoc] - # Rebuild the rdoc files from scratch, even if they are not out - # of date. - # - # Simple Example: - # - # Rake::RDocTask.new do |rd| - # rd.main = "README.rdoc" - # rd.rdoc_files.include("README.rdoc", "lib/**/*.rb") - # end - # - # The +rd+ object passed to the block is an RDocTask object. See the - # attributes list for the RDocTask class for available customization options. - # - # == Specifying different task names - # - # You may wish to give the task a different name, such as if you are - # generating two sets of documentation. For instance, if you want to have a - # development set of documentation including private methods: - # - # Rake::RDocTask.new(:rdoc_dev) do |rd| - # rd.main = "README.doc" - # rd.rdoc_files.include("README.rdoc", "lib/**/*.rb") - # rd.options << "--all" - # end - # - # The tasks would then be named :rdoc_dev, :clobber_rdoc_dev, and - # :rerdoc_dev. - # - # If you wish to have completely different task names, then pass a Hash as - # first argument. With the :rdoc, :clobber_rdoc and - # :rerdoc options, you can customize the task names to your liking. - # For example: - # - # Rake::RDocTask.new(:rdoc => "rdoc", :clobber_rdoc => "rdoc:clean", :rerdoc => "rdoc:force") - # - # This will create the tasks :rdoc, :rdoc_clean and - # :rdoc:force. - # - class RDocTask < TaskLib - # Name of the main, top level task. (default is :rdoc) - attr_accessor :name - - # Name of directory to receive the html output files. (default is "html") - attr_accessor :rdoc_dir - - # Title of RDoc documentation. (defaults to rdoc's default) - attr_accessor :title - - # Name of file to be used as the main, top level file of the - # RDoc. (default is none) - attr_accessor :main - - # Name of template to be used by rdoc. (defaults to rdoc's default) - attr_accessor :template - - # List of files to be included in the rdoc generation. (default is []) - attr_accessor :rdoc_files - - # Additional list of options to be passed rdoc. (default is []) - attr_accessor :options - - # Whether to run the rdoc process as an external shell (default is false) - attr_accessor :external - - attr_accessor :inline_source - - # Create an RDoc task with the given name. See the RDocTask class overview - # for documentation. - def initialize(name = :rdoc) # :yield: self - if name.is_a?(Hash) - invalid_options = name.keys.map { |k| k.to_sym } - [:rdoc, :clobber_rdoc, :rerdoc] - if !invalid_options.empty? - raise ArgumentError, "Invalid option(s) passed to RDocTask.new: #{invalid_options.join(", ")}" - end - end - - @name = name - @rdoc_files = Rake::FileList.new - @rdoc_dir = 'html' - @main = nil - @title = nil - @template = nil - @external = false - @inline_source = true - @options = [] - yield self if block_given? - define - end - - # Create the tasks defined by this task lib. - def define - if rdoc_task_name != "rdoc" - desc "Build the RDOC HTML Files" - else - desc "Build the #{rdoc_task_name} HTML Files" - end - task rdoc_task_name - - desc "Force a rebuild of the RDOC files" - task rerdoc_task_name => [clobber_task_name, rdoc_task_name] - - desc "Remove rdoc products" - task clobber_task_name do - rm_r rdoc_dir rescue nil - end - - task :clobber => [clobber_task_name] - - directory @rdoc_dir - task rdoc_task_name => [rdoc_target] - file rdoc_target => @rdoc_files + [Rake.application.rakefile] do - rm_r @rdoc_dir rescue nil - @before_running_rdoc.call if @before_running_rdoc - args = option_list + @rdoc_files - if @external - argstring = args.join(' ') - sh %{ruby -Ivendor vendor/rd #{argstring}} - else - require 'rdoc/rdoc' - RDoc::RDoc.new.document(args) - end - end - self - end - - def option_list - result = @options.dup - result << "-o" << @rdoc_dir - result << "--main" << quote(main) if main - result << "--title" << quote(title) if title - result << "-T" << quote(template) if template - result << "--inline-source" if inline_source && !@options.include?("--inline-source") && !@options.include?("-S") - result - end - - def quote(str) - if @external - "'#{str}'" - else - str - end - end - - def option_string - option_list.join(' ') - end - - # The block passed to this method will be called just before running the - # RDoc generator. It is allowed to modify RDocTask attributes inside the - # block. - def before_running_rdoc(&block) - @before_running_rdoc = block - end - - private - - def rdoc_target - "#{rdoc_dir}/index.html" - end - - def rdoc_task_name - case name - when Hash - (name[:rdoc] || "rdoc").to_s - else - name.to_s - end - end - - def clobber_task_name - case name - when Hash - (name[:clobber_rdoc] || "clobber_rdoc").to_s - else - "clobber_#{name}" - end - end - - def rerdoc_task_name - case name - when Hash - (name[:rerdoc] || "rerdoc").to_s - else - "re#{name}" - end - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/ruby182_test_unit_fix.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/ruby182_test_unit_fix.rb deleted file mode 100755 index f02c7879..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/ruby182_test_unit_fix.rb +++ /dev/null @@ -1,23 +0,0 @@ -module Test - module Unit - module Collector - class Dir - undef collect_file - def collect_file(name, suites, already_gathered) - # loadpath = $:.dup - dir = File.dirname(File.expand_path(name)) - $:.unshift(dir) unless $:.first == dir - if(@req) - @req.require(name) - else - require(name) - end - find_test_cases(already_gathered).each{|t| add_suite(suites, t.suite)} - ensure - # $:.replace(loadpath) - $:.delete_at $:.rindex(dir) - end - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/runtest.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/runtest.rb deleted file mode 100644 index 3f1d2052..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/runtest.rb +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'test/unit/assertions' - -module Rake - include Test::Unit::Assertions - - def run_tests(pattern='test/test*.rb', log_enabled=false) - Dir["#{pattern}"].each { |fn| - puts fn if log_enabled - begin - load fn - rescue Exception => ex - puts "Error in #{fn}: #{ex.message}" - puts ex.backtrace - assert false - end - } - end - - extend self -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/tasklib.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/tasklib.rb deleted file mode 100644 index c7fd9813..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/tasklib.rb +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env ruby - -require 'rake' - -module Rake - - # Base class for Task Libraries. - class TaskLib - include Cloneable - - # Make a symbol by pasting two strings together. - # - # NOTE: DEPRECATED! This method is kinda stupid. I don't know why - # I didn't just use string interpolation. But now other task - # libraries depend on this so I can't remove it without breaking - # other people's code. So for now it stays for backwards - # compatibility. BUT DON'T USE IT. - def paste(a,b) # :nodoc: - (a.to_s + b.to_s).intern - end - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/testtask.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/testtask.rb deleted file mode 100644 index 4bc32aac..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/testtask.rb +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/env ruby - -# Define a task library for running unit tests. - -require 'rake' -require 'rake/tasklib' - -module Rake - - # Create a task that runs a set of tests. - # - # Example: - # - # Rake::TestTask.new do |t| - # t.libs << "test" - # t.test_files = FileList['test/test*.rb'] - # t.verbose = true - # end - # - # If rake is invoked with a "TEST=filename" command line option, - # then the list of test files will be overridden to include only the - # filename specified on the command line. This provides an easy way - # to run just one test. - # - # If rake is invoked with a "TESTOPTS=options" command line option, - # then the given options are passed to the test process after a - # '--'. This allows Test::Unit options to be passed to the test - # suite. - # - # Examples: - # - # rake test # run tests normally - # rake test TEST=just_one_file.rb # run just one test file. - # rake test TESTOPTS="-v" # run in verbose mode - # rake test TESTOPTS="--runner=fox" # use the fox test runner - # - class TestTask < TaskLib - - # Name of test task. (default is :test) - attr_accessor :name - - # List of directories to added to $LOAD_PATH before running the - # tests. (default is 'lib') - attr_accessor :libs - - # True if verbose test output desired. (default is false) - attr_accessor :verbose - - # Test options passed to the test suite. An explicit - # TESTOPTS=opts on the command line will override this. (default - # is NONE) - attr_accessor :options - - # Request that the tests be run with the warning flag set. - # E.g. warning=true implies "ruby -w" used to run the tests. - attr_accessor :warning - - # Glob pattern to match test files. (default is 'test/test*.rb') - attr_accessor :pattern - - # Style of test loader to use. Options are: - # - # * :rake -- Rake provided test loading script (default). - # * :testrb -- Ruby provided test loading script. - # * :direct -- Load tests using command line loader. - # - attr_accessor :loader - - # Array of commandline options to pass to ruby when running test loader. - attr_accessor :ruby_opts - - # Explicitly define the list of test files to be included in a - # test. +list+ is expected to be an array of file names (a - # FileList is acceptable). If both +pattern+ and +test_files+ are - # used, then the list of test files is the union of the two. - def test_files=(list) - @test_files = list - end - - # Create a testing task. - def initialize(name=:test) - @name = name - @libs = ["lib"] - @pattern = nil - @options = nil - @test_files = nil - @verbose = false - @warning = false - @loader = :rake - @ruby_opts = [] - yield self if block_given? - @pattern = 'test/test*.rb' if @pattern.nil? && @test_files.nil? - define - end - - # Create the tasks defined by this task lib. - def define - lib_path = @libs.join(File::PATH_SEPARATOR) - desc "Run tests" + (@name==:test ? "" : " for #{@name}") - task @name do - run_code = '' - RakeFileUtils.verbose(@verbose) do - run_code = - case @loader - when :direct - "-e 'ARGV.each{|f| load f}'" - when :testrb - "-S testrb #{fix}" - when :rake - rake_loader - end - @ruby_opts.unshift( "-I\"#{lib_path}\"" ) - @ruby_opts.unshift( "-w" ) if @warning - ruby @ruby_opts.join(" ") + - " \"#{run_code}\" " + - file_list.collect { |fn| "\"#{fn}\"" }.join(' ') + - " #{option_list}" - end - end - self - end - - def option_list # :nodoc: - ENV['TESTOPTS'] || @options || "" - end - - def file_list # :nodoc: - if ENV['TEST'] - FileList[ ENV['TEST'] ] - else - result = [] - result += @test_files.to_a if @test_files - result += FileList[ @pattern ].to_a if @pattern - FileList[result] - end - end - - def fix # :nodoc: - case RUBY_VERSION - when '1.8.2' - find_file 'rake/ruby182_test_unit_fix' - else - nil - end || '' - end - - def rake_loader # :nodoc: - find_file('rake/rake_test_loader') or - fail "unable to find rake test loader" - end - - def find_file(fn) # :nodoc: - $LOAD_PATH.each do |path| - file_path = File.join(path, "#{fn}.rb") - return file_path if File.exist? file_path - end - nil - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/win32.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/win32.rb deleted file mode 100644 index d0a19bf2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/lib/rake/win32.rb +++ /dev/null @@ -1,55 +0,0 @@ - -module Rake - require 'rake/alt_system' - - # Win 32 interface methods for Rake. Windows specific functionality - # will be placed here to collect that knowledge in one spot. - module Win32 - - # Error indicating a problem in locating the home directory on a - # Win32 system. - class Win32HomeError < RuntimeError - end - - class << self - # True if running on a windows system. - def windows? - AltSystem::WINDOWS - end - - # Run a command line on windows. - def rake_system(*cmd) - AltSystem.system(*cmd) - end - - # The standard directory containing system wide rake files on - # Win 32 systems. Try the following environment variables (in - # order): - # - # * HOME - # * HOMEDRIVE + HOMEPATH - # * APPDATA - # * USERPROFILE - # - # If the above are not defined, the return nil. - def win32_system_dir #:nodoc: - win32_shared_path = ENV['HOME'] - if win32_shared_path.nil? && ENV['HOMEDRIVE'] && ENV['HOMEPATH'] - win32_shared_path = ENV['HOMEDRIVE'] + ENV['HOMEPATH'] - end - - win32_shared_path ||= ENV['APPDATA'] - win32_shared_path ||= ENV['USERPROFILE'] - raise Win32HomeError, "Unable to determine home path environment variable." if - win32_shared_path.nil? or win32_shared_path.empty? - normalize(File.join(win32_shared_path, 'Rake')) - end - - # Normalize a win32 path so that the slashes are all forward slashes. - def normalize(path) - path.gsub(/\\/, '/') - end - - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/capture_stdout.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/capture_stdout.rb deleted file mode 100644 index 8b664adc..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/capture_stdout.rb +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env ruby - -require 'stringio' - -# Mix-in for capturing standard output. -module CaptureStdout - def capture_stdout - s = StringIO.new - oldstdout = $stdout - $stdout = s - yield - s.string - ensure - $stdout = oldstdout - end - - def capture_stderr - s = StringIO.new - oldstderr = $stderr - $stderr = s - yield - s.string - ensure - $stderr = oldstderr - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/check_expansion.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/check_expansion.rb deleted file mode 100644 index 659cf71e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/check_expansion.rb +++ /dev/null @@ -1,5 +0,0 @@ -if ARGV[0] != ARGV[1] - exit 1 -else - exit 0 -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/check_no_expansion.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/check_no_expansion.rb deleted file mode 100644 index 24f586a7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/check_no_expansion.rb +++ /dev/null @@ -1,5 +0,0 @@ -if ARGV[0] != ARGV[1] - exit 0 -else - exit 1 -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/contrib/test_sys.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/contrib/test_sys.rb deleted file mode 100644 index 37a5dc9f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/contrib/test_sys.rb +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'test/filecreation' -require 'rake/contrib/sys' - -class TestSys < Test::Unit::TestCase - include FileCreation - -# def test_delete -# create_file("testdata/a") -# Sys.delete_all("testdata/a") -# assert ! File.exist?("testdata/a") -# end - -# def test_copy -# create_file("testdata/a") -# Sys.copy("testdata/a", "testdata/b") -# assert File.exist?("testdata/b") -# end - -# def test_for_files -# test_files = ["testdata/a.pl", "testdata/c.pl", "testdata/b.rb"] -# test_files.each { |fn| create_file(fn) } -# list = [] -# Sys.for_files("testdata/*.pl", "testdata/*.rb") { |fn| -# list << fn -# } -# assert_equal test_files.sort, list.sort -# end - -# def test_indir -# here = Dir.pwd -# Sys.makedirs("testdata/dir") -# assert_equal "#{here}/testdata/dir", Sys.indir("testdata/dir") { Dir.pwd } -# assert_equal here, Dir.pwd -# end - - def test_split_all - assert_equal ['a'], Sys.split_all('a') - assert_equal ['..'], Sys.split_all('..') - assert_equal ['/'], Sys.split_all('/') - assert_equal ['a', 'b'], Sys.split_all('a/b') - assert_equal ['/', 'a', 'b'], Sys.split_all('/a/b') - assert_equal ['..', 'a', 'b'], Sys.split_all('../a/b') - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/chains/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/chains/Rakefile deleted file mode 100644 index 31bdc257..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/chains/Rakefile +++ /dev/null @@ -1,15 +0,0 @@ -# -*- ruby -*- - -task :default => "play.app" - -file "play.scpt" => "base" do |t| - cp t.prerequisites.first, t.name -end - -rule ".app" => ".scpt" do |t| - cp t.source, t.name -end - -file 'base' do - touch 'base' -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/default/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/default/Rakefile deleted file mode 100644 index 22ed5e0c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/default/Rakefile +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env ruby - -if ENV['TESTTOPSCOPE'] - puts "TOPSCOPE" -end - -task :default do - puts "DEFAULT" -end - -task :other => [:default] do - puts "OTHER" -end - -task :task_scope do - if ENV['TESTTASKSCOPE'] - puts "TASKSCOPE" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/dryrun/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/dryrun/Rakefile deleted file mode 100644 index 0a68a0d6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/dryrun/Rakefile +++ /dev/null @@ -1,22 +0,0 @@ -# - -task :default => ["temp_main"] - -file "temp_main" => [:all_apps] do touch "temp_main" end - -task :all_apps => [:one, :two] -task :one => ["temp_one"] -task :two => ["temp_two"] - -file "temp_one" do |t| - touch "temp_one" -end -file "temp_two" do |t| - touch "temp_two" -end - -task :clean do - ["temp_one", "temp_two", "temp_main"].each do |file| - rm_f file - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/file_creation_task/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/file_creation_task/Rakefile deleted file mode 100644 index 94641b69..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/file_creation_task/Rakefile +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env ruby - -N = 2 - -task :default => :run - -BUILD_DIR = 'build' -task :clean do - rm_rf 'build' - rm_rf 'src' -end - -task :run - -TARGET_DIR = 'build/copies' - -FileList['src/*'].each do |src| - directory TARGET_DIR - target = File.join TARGET_DIR, File.basename(src) - file target => [src, TARGET_DIR] do - cp src, target - # sleep 3 if src !~ /foo#{N-1}$/ # I'm commenting out this sleep, it doesn't seem to do anything. - end - task :run => target -end - -task :prep => :clean do - mkdir_p 'src' - N.times do |n| - puts "DBG: Touching src/foo#{n}" - touch "src/foo#{n}" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/imports/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/imports/Rakefile deleted file mode 100644 index 6a60f612..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/imports/Rakefile +++ /dev/null @@ -1,19 +0,0 @@ -# -*- ruby -*- - -require 'rake/loaders/makefile' - -task :default - -task :other do - puts "OTHER" -end - -file "dynamic_deps" do |t| - open(t.name, "w") do |f| f.puts "puts 'DYNAMIC'" end -end - -import "dynamic_deps" -import "static_deps" -import "static_deps" -import "deps.mf" -puts "FIRST" diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/imports/deps.mf b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/imports/deps.mf deleted file mode 100644 index 04643d0d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/imports/deps.mf +++ /dev/null @@ -1 +0,0 @@ -default: other diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/multidesc/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/multidesc/Rakefile deleted file mode 100644 index 53424819..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/multidesc/Rakefile +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env ruby - -task :b - -desc "A" -task :a - -desc "B" -task :b - -desc "A2" -task :a - -task :c - -desc "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -task :d diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/namespace/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/namespace/Rakefile deleted file mode 100644 index 6de98eda..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/namespace/Rakefile +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env ruby - -desc "copy" -task :copy do - puts "COPY" -end - -namespace "nest" do - desc "nest copy" - task :copy do - puts "NEST COPY" - end - task :xx => :copy -end - -anon_ns = namespace do - desc "anonymous copy task" - task :copy do - puts "ANON COPY" - end -end - -desc "Top level task to run the anonymous version of copy" -task :anon => anon_ns[:copy] - -namespace "very" do - namespace "nested" do - task "run" => "rake:copy" - end -end - -namespace "a" do - desc "Run task in the 'a' namespace" - task "run" do - puts "IN A" - end -end - -namespace "b" do - desc "Run task in the 'b' namespace" - task "run" => "a:run" do - puts "IN B" - end -end - -namespace "file1" do - file "xyz.rb" do - puts "XYZ1" - end -end - -namespace "file2" do - file "xyz.rb" do - puts "XYZ2" - end -end - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/rakelib/test1.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/rakelib/test1.rb deleted file mode 100644 index bb1c419b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/rakelib/test1.rb +++ /dev/null @@ -1,3 +0,0 @@ -task :default do - puts "TEST1" -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/rbext/rakefile.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/rbext/rakefile.rb deleted file mode 100644 index 670604d7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/rbext/rakefile.rb +++ /dev/null @@ -1,3 +0,0 @@ -task :default do - puts "OK" -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/sample.mf b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/sample.mf deleted file mode 100644 index 778e9d45..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/sample.mf +++ /dev/null @@ -1,14 +0,0 @@ -# Comments -a: a1 a2 a3 a4 -b: b1 b2 b3 \ - b4 b5 b6\ -# Mid: Comment -b7 - - a : a5 a6 a7 -c: c1 -d: d1 d2 \ - -e f : e1 f1 - -g\ 0: g1 g\ 2 g\ 3 g4 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/statusreturn/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/statusreturn/Rakefile deleted file mode 100644 index 68023052..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/statusreturn/Rakefile +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env ruby - -task :exit5 do - exit(5) -end - -task :normal do -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/unittest/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/unittest/Rakefile deleted file mode 100644 index 9c3b8ac1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/data/unittest/Rakefile +++ /dev/null @@ -1 +0,0 @@ -# Empty Rakefile for Unit Test diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/filecreation.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/filecreation.rb deleted file mode 100644 index 7a8bc878..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/filecreation.rb +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env ruby - -module FileCreation - OLDFILE = "testdata/old" - NEWFILE = "testdata/new" - - def create_timed_files(oldfile, *newfiles) - return if File.exist?(oldfile) && newfiles.all? { |newfile| File.exist?(newfile) } - old_time = create_file(oldfile) - newfiles.each do |newfile| - while create_file(newfile) <= old_time - sleep(0.1) - File.delete(newfile) rescue nil - end - end - end - - def create_dir(dirname) - FileUtils.mkdir_p(dirname) unless File.exist?(dirname) - File.stat(dirname).mtime - end - - def create_file(name) - create_dir(File.dirname(name)) - FileUtils.touch(name) unless File.exist?(name) - File.stat(name).mtime - end - - def delete_file(name) - File.delete(name) rescue nil - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/functional.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/functional.rb deleted file mode 100644 index 6a5c6025..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/functional.rb +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env ruby - -begin - require 'rubygems' - gem 'session' - require 'session' -rescue LoadError - puts "UNABLE TO RUN FUNCTIONAL TESTS" - puts "No Session Found (gem install session)" -end - -if defined?(Session) - puts "RUNNING WITH SESSIONS" - require 'test/session_functional' -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/in_environment.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/in_environment.rb deleted file mode 100644 index fb02eba9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/in_environment.rb +++ /dev/null @@ -1,30 +0,0 @@ -module InEnvironment - private - - # Create an environment for a test. At the completion of the yielded - # block, the environment is restored to its original conditions. - def in_environment(settings) - original_settings = set_env(settings) - yield - ensure - set_env(original_settings) - end - - # Set the environment according to the settings hash. - def set_env(settings) # :nodoc: - result = {} - settings.each do |k, v| - result[k] = ENV[k] - if k == 'PWD' - result[k] = Dir.pwd - Dir.chdir(v) - elsif v.nil? - ENV.delete(k) - else - ENV[k] = v - end - end - result - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/rake_test_setup.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/rake_test_setup.rb deleted file mode 100644 index da38d97e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/rake_test_setup.rb +++ /dev/null @@ -1,24 +0,0 @@ -# Common setup for all test files. - -begin - require 'rubygems' - gem 'flexmock' -rescue LoadError - # got no gems -end - -require 'flexmock/test_unit' - -if RUBY_VERSION >= "1.9.0" - class Test::Unit::TestCase -# def passed? -# true -# end - end -end - -module TestMethods - def assert_exception(ex, msg=nil, &block) - assert_raise(ex, msg, &block) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/reqfile.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/reqfile.rb deleted file mode 100644 index 5372544b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/reqfile.rb +++ /dev/null @@ -1,3 +0,0 @@ -# For --require testing - -TESTING_REQUIRE << 1 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/reqfile2.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/reqfile2.rb deleted file mode 100644 index 65993907..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/reqfile2.rb +++ /dev/null @@ -1,3 +0,0 @@ -# For --require testing - -TESTING_REQUIRE << 2 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/session_functional.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/session_functional.rb deleted file mode 100644 index 730e2d5d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/session_functional.rb +++ /dev/null @@ -1,339 +0,0 @@ -#!/usr/bin/env ruby - -begin - require 'rubygems' -rescue LoadError => ex -end -require 'test/unit' -require 'fileutils' -require 'session' -require 'test/in_environment' -require 'test/rake_test_setup' - -# Version 2.1.9 of session has a bug where the @debug instance -# variable is not initialized, causing warning messages. This snippet -# of code fixes that problem. -module Session - class AbstractSession - alias old_initialize initialize - def initialize(*args) - @debug = nil - old_initialize(*args) - end - end -end - -class FunctionalTest < Test::Unit::TestCase - include InEnvironment - include TestMethods - - RUBY_COMMAND = 'ruby' - - def setup - @rake_path = File.expand_path("bin/rake") - lib_path = File.expand_path("lib") - @ruby_options = "-I#{lib_path} -I." - @verbose = ! ENV['VERBOSE'].nil? - if @verbose - puts - puts - puts "--------------------------------------------------------------------" - puts name - puts "--------------------------------------------------------------------" - end - end - - def test_rake_default - Dir.chdir("test/data/default") do rake end - assert_match(/^DEFAULT$/, @out) - assert_status - end - - def test_rake_error_on_bad_task - Dir.chdir("test/data/default") do rake "xyz" end - assert_match(/rake aborted/, @err) - assert_status(1) - end - - def test_env_availabe_at_top_scope - Dir.chdir("test/data/default") do rake "TESTTOPSCOPE=1" end - assert_match(/^TOPSCOPE$/, @out) - assert_status - end - - def test_env_availabe_at_task_scope - Dir.chdir("test/data/default") do rake "TESTTASKSCOPE=1 task_scope" end - assert_match(/^TASKSCOPE$/, @out) - assert_status - end - - def test_multi_desc - in_environment( - 'RAKE_COLUMNS' => "80", - "PWD" => "test/data/multidesc" - ) do - rake "-T" - end - assert_match %r{^rake a *# A / A2 *$}, @out - assert_match %r{^rake b *# B *$}, @out - assert_no_match %r{^rake c}, @out - assert_match %r{^rake d *# x{65}\.\.\.$}, @out - end - - def test_long_description - in_environment("PWD" => "test/data/multidesc") do - rake "--describe" - end - assert_match %r{^rake a\n *A / A2 *$}m, @out - assert_match %r{^rake b\n *B *$}m, @out - assert_match %r{^rake d\n *x{80}}m, @out - assert_no_match %r{^rake c\n}m, @out - end - - def test_rbext - in_environment("PWD" => "test/data/rbext") do - rake "-N" - end - assert_match %r{^OK$}, @out - end - - def test_system - in_environment('RAKE_SYSTEM' => 'test/data/sys') do - rake '-g', "sys1" - end - assert_match %r{^SYS1}, @out - end - - def test_system_excludes_rakelib_files_too - in_environment('RAKE_SYSTEM' => 'test/data/sys') do - rake '-g', "sys1", '-T', 'extra' - end - assert_no_match %r{extra:extra}, @out - end - - def test_by_default_rakelib_files_are_include - in_environment('RAKE_SYSTEM' => 'test/data/sys') do - rake '-T', 'extra' - end - assert_match %r{extra:extra}, @out - end - - def test_implicit_system - in_environment('RAKE_SYSTEM' => File.expand_path('test/data/sys'), "PWD" => "/") do - rake "sys1", "--trace" - end - assert_match %r{^SYS1}, @out - end - - def test_no_system - in_environment('RAKE_SYSTEM' => 'test/data/sys') do - rake '-G', "sys1" - end - assert_match %r{^Don't know how to build task}, @err # emacs wart: ' - end - - def test_nosearch_with_rakefile_uses_local_rakefile - in_environment("PWD" => "test/data/default") do - rake "--nosearch" - end - assert_match %r{^DEFAULT}, @out - end - - def test_nosearch_without_rakefile_finds_system - in_environment( - "PWD" => "test/data/nosearch", - "RAKE_SYSTEM" => File.expand_path("test/data/sys") - ) do - rake "--nosearch", "sys1" - end - assert_match %r{^SYS1}, @out - end - - def test_nosearch_without_rakefile_and_no_system_fails - in_environment("PWD" => "test/data/nosearch", "RAKE_SYSTEM" => "not_exist") do - rake "--nosearch" - end - assert_match %r{^No Rakefile found}, @err - end - - def test_dry_run - in_environment("PWD" => "test/data/default") do rake "-n", "other" end - assert_match %r{Execute \(dry run\) default}, @out - assert_match %r{Execute \(dry run\) other}, @out - assert_no_match %r{DEFAULT}, @out - assert_no_match %r{OTHER}, @out - end - - # Test for the trace/dry_run bug found by Brian Chandler - def test_dry_run_bug - in_environment("PWD" => "test/data/dryrun") do - rake - end - FileUtils.rm_f "test/data/dryrun/temp_one" - in_environment("PWD" => "test/data/dryrun") do - rake "--dry-run" - end - assert_no_match(/No such file/, @out) - assert_status - end - - # Test for the trace/dry_run bug found by Brian Chandler - def test_trace_bug - in_environment("PWD" => "test/data/dryrun") do - rake - end - FileUtils.rm_f "test/data/dryrun/temp_one" - in_environment("PWD" => "test/data/dryrun") do - rake "--trace" - end - assert_no_match(/No such file/, @out) - assert_status - end - - def test_imports - open("test/data/imports/static_deps", "w") do |f| - f.puts 'puts "STATIC"' - end - FileUtils.rm_f "test/data/imports/dynamic_deps" - in_environment("PWD" => "test/data/imports") do - rake - end - assert File.exist?("test/data/imports/dynamic_deps"), - "'dynamic_deps' file should exist" - assert_match(/^FIRST$\s+^DYNAMIC$\s+^STATIC$\s+^OTHER$/, @out) - assert_status - FileUtils.rm_f "test/data/imports/dynamic_deps" - FileUtils.rm_f "test/data/imports/static_deps" - end - - def test_rules_chaining_to_file_task - remove_chaining_files - in_environment("PWD" => "test/data/chains") do - rake - end - assert File.exist?("test/data/chains/play.app"), - "'play.app' file should exist" - assert_status - remove_chaining_files - end - - def test_file_creation_task - in_environment("PWD" => "test/data/file_creation_task") do - rake "prep" - rake "run" - rake "run" - end - assert(@err !~ /^cp src/, "Should not recopy data") - end - - def test_dash_f_with_no_arg_foils_rakefile_lookup - rake "-I test/data/rakelib -rtest1 -f" - assert_match(/^TEST1$/, @out) - end - - def test_dot_rake_files_can_be_loaded_with_dash_r - rake "-I test/data/rakelib -rtest2 -f" - assert_match(/^TEST2$/, @out) - end - - def test_can_invoke_task_in_toplevel_namespace - in_environment("PWD" => "test/data/namespace") do - rake "copy" - end - assert_match(/^COPY$/, @out) - end - - def test_can_invoke_task_in_nested_namespace - in_environment("PWD" => "test/data/namespace") do - rake "nest:copy" - assert_match(/^NEST COPY$/, @out) - end - end - - def test_tasks_can_reference_task_in_same_namespace - in_environment("PWD" => "test/data/namespace") do - rake "nest:xx" - assert_match(/^NEST COPY$/m, @out) - end - end - - def test_tasks_can_reference_task_in_other_namespaces - in_environment("PWD" => "test/data/namespace") do - rake "b:run" - assert_match(/^IN A\nIN B$/m, @out) - end - end - - def test_anonymous_tasks_can_be_invoked_indirectly - in_environment("PWD" => "test/data/namespace") do - rake "anon" - assert_match(/^ANON COPY$/m, @out) - end - end - - def test_rake_namespace_refers_to_toplevel - in_environment("PWD" => "test/data/namespace") do - rake "very:nested:run" - assert_match(/^COPY$/m, @out) - end - end - - def test_file_task_are_not_scoped_by_namespaces - in_environment("PWD" => "test/data/namespace") do - rake "xyz.rb" - assert_match(/^XYZ1\nXYZ2$/m, @out) - end - end - - def test_rake_returns_status_error_values - in_environment("PWD" => "test/data/statusreturn") do - rake "exit5" - assert_status(5) - end - end - - def test_rake_returns_no_status_error_on_normal_exit - in_environment("PWD" => "test/data/statusreturn") do - rake "normal" - assert_status(0) - end - end - - private - - def remove_chaining_files - %w(play.scpt play.app base).each do |fn| - FileUtils.rm_f File.join("test/data/chains", fn) - end - end - - class << self - def format_command - @format_command ||= lambda { |ruby_options, rake_path, options| - "ruby #{ruby_options} #{rake_path} #{options}" - } - end - - def format_command=(fmt_command) - @format_command = fmt_command - end - end - - def rake(*option_list) - options = option_list.join(' ') - shell = Session::Shell.new - command = self.class.format_command[@ruby_options, @rake_path, options] - puts "COMMAND: [#{command}]" if @verbose - @out, @err = shell.execute command - @status = shell.exit_status - puts "STATUS: [#{@status}]" if @verbose - puts "OUTPUT: [#{@out}]" if @verbose - puts "ERROR: [#{@err}]" if @verbose - puts "PWD: [#{Dir.pwd}]" if @verbose - shell.close - end - - def assert_status(expected_status=0) - assert_equal expected_status, @status - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/shellcommand.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/shellcommand.rb deleted file mode 100755 index 58db8a08..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/shellcommand.rb +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env ruby - -exit((ARGV[0] || "0").to_i) diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_application.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_application.rb deleted file mode 100644 index c7fadb65..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_application.rb +++ /dev/null @@ -1,675 +0,0 @@ -#!/usr/bin/env ruby - -begin - require 'rubygems' -rescue LoadError - # got no gems -end - -require 'test/unit' -require 'rake' -require 'test/rake_test_setup' -require 'test/capture_stdout' -require 'test/in_environment' - -TESTING_REQUIRE = [ ] - -###################################################################### -class TestApplication < Test::Unit::TestCase - include CaptureStdout - include InEnvironment - include TestMethods - - def setup - @app = Rake::Application.new - @app.options.rakelib = [] - end - - def test_constant_warning - err = capture_stderr do @app.instance_eval { const_warning("Task") } end - assert_match(/warning/i, err) - assert_match(/deprecated/i, err) - assert_match(/Task/i, err) - end - - def test_display_tasks - @app.options.show_task_pattern = // - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "t") - out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t/, out) - assert_match(/# COMMENT/, out) - end - - def test_display_tasks_with_long_comments - in_environment('RAKE_COLUMNS' => '80') do - @app.options.show_task_pattern = // - @app.last_description = "1234567890" * 8 - @app.define_task(Rake::Task, "t") - out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t/, out) - assert_match(/# 12345678901234567890123456789012345678901234567890123456789012345\.\.\./, out) - end - end - - def test_display_tasks_with_task_name_wider_than_tty_display - in_environment('RAKE_COLUMNS' => '80') do - @app.options.show_task_pattern = // - description = "something short" - task_name = "task name" * 80 - @app.last_description = "something short" - @app.define_task(Rake::Task, task_name ) - out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end - # Ensure the entire task name is output and we end up showing no description - assert_match(/rake #{task_name} # .../, out) - end - end - - def test_display_tasks_with_very_long_task_name_to_a_non_tty_shows_name_and_comment - @app.options.show_task_pattern = // - @app.tty_output = false - description = "something short" - task_name = "task name" * 80 - @app.last_description = "something short" - @app.define_task(Rake::Task, task_name ) - out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end - # Ensure the entire task name is output and we end up showing no description - assert_match(/rake #{task_name} # #{description}/, out) - end - - def test_display_tasks_with_long_comments_to_a_non_tty_shows_entire_comment - @app.options.show_task_pattern = // - @app.tty_output = false - @app.last_description = "1234567890" * 8 - @app.define_task(Rake::Task, "t") - out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t/, out) - assert_match(/# #{@app.last_description}/, out) - end - - def test_display_tasks_with_long_comments_to_a_non_tty_with_columns_set_truncates_comments - in_environment("RAKE_COLUMNS" => '80') do - @app.options.show_task_pattern = // - @app.tty_output = false - @app.last_description = "1234567890" * 8 - @app.define_task(Rake::Task, "t") - out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t/, out) - assert_match(/# 12345678901234567890123456789012345678901234567890123456789012345\.\.\./, out) - end - end - - def test_display_tasks_with_full_descriptions - @app.options.show_task_pattern = // - @app.options.full_description = true - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "t") - out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t$/, out) - assert_match(/^ {4}COMMENT$/, out) - end - - def test_finding_rakefile - assert_match(/Rakefile/i, @app.instance_eval { have_rakefile }) - end - - def test_not_finding_rakefile - @app.instance_eval { @rakefiles = ['NEVER_FOUND'] } - assert( ! @app.instance_eval do have_rakefile end ) - assert_nil @app.rakefile - end - - def test_load_rakefile - in_environment("PWD" => "test/data/unittest") do - @app.instance_eval do - handle_options - options.silent = true - load_rakefile - end - assert_equal "rakefile", @app.rakefile.downcase - assert_match(%r(unittest$), Dir.pwd) - end - end - - def test_load_rakefile_from_subdir - in_environment("PWD" => "test/data/unittest/subdir") do - @app.instance_eval do - handle_options - options.silent = true - load_rakefile - end - assert_equal "rakefile", @app.rakefile.downcase - assert_match(%r(unittest$), Dir.pwd) - end - end - - def test_load_rakefile_not_found - in_environment("PWD" => "/", "RAKE_SYSTEM" => 'not_exist') do - @app.instance_eval do - handle_options - options.silent = true - end - ex = assert_exception(RuntimeError) do - @app.instance_eval do raw_load_rakefile end - end - assert_match(/no rakefile found/i, ex.message) - end - end - - def test_load_from_system_rakefile - in_environment('RAKE_SYSTEM' => 'test/data/sys') do - @app.options.rakelib = [] - @app.instance_eval do - handle_options - options.silent = true - options.load_system = true - options.rakelib = [] - load_rakefile - end - assert_equal "test/data/sys", @app.system_dir - assert_nil @app.rakefile - end - end - - def test_windows - assert ! (@app.windows? && @app.unix?) - end - - def test_loading_imports - mock = flexmock("loader") - mock.should_receive(:load).with("x.dummy").once - @app.instance_eval do - add_loader("dummy", mock) - add_import("x.dummy") - load_imports - end - end - - def test_building_imported_files_on_demand - mock = flexmock("loader") - mock.should_receive(:load).with("x.dummy").once - mock.should_receive(:make_dummy).with_no_args.once - @app.instance_eval do - intern(Rake::Task, "x.dummy").enhance do mock.make_dummy end - add_loader("dummy", mock) - add_import("x.dummy") - load_imports - end - end - - def test_handle_options_should_strip_options_from_ARGV - assert !@app.options.trace - - valid_option = '--trace' - ARGV.clear - ARGV << valid_option - - @app.handle_options - - assert !ARGV.include?(valid_option) - assert @app.options.trace - end - - def test_good_run - ran = false - ARGV.clear - ARGV << '--rakelib=""' - @app.options.silent = true - @app.instance_eval do - intern(Rake::Task, "default").enhance { ran = true } - end - in_environment("PWD" => "test/data/default") do - @app.run - end - assert ran - end - - def test_display_task_run - ran = false - ARGV.clear - ARGV << '-f' << '-s' << '--tasks' << '--rakelib=""' - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "default") - out = capture_stdout { @app.run } - assert @app.options.show_tasks - assert ! ran - assert_match(/rake default/, out) - assert_match(/# COMMENT/, out) - end - - def test_display_prereqs - ran = false - ARGV.clear - ARGV << '-f' << '-s' << '--prereqs' << '--rakelib=""' - @app.last_description = "COMMENT" - t = @app.define_task(Rake::Task, "default") - t.enhance([:a, :b]) - @app.define_task(Rake::Task, "a") - @app.define_task(Rake::Task, "b") - out = capture_stdout { @app.run } - assert @app.options.show_prereqs - assert ! ran - assert_match(/rake a$/, out) - assert_match(/rake b$/, out) - assert_match(/rake default\n( *(a|b)\n){2}/m, out) - end - - def test_bad_run - @app.intern(Rake::Task, "default").enhance { fail } - ARGV.clear - ARGV << '-f' << '-s' << '--rakelib=""' - assert_exception(SystemExit) { - err = capture_stderr { @app.run } - assert_match(/see full trace/, err) - } - ensure - ARGV.clear - end - - def test_bad_run_with_trace - @app.intern(Rake::Task, "default").enhance { fail } - ARGV.clear - ARGV << '-f' << '-s' << '-t' - assert_exception(SystemExit) { - err = capture_stderr { capture_stdout { @app.run } } - assert_no_match(/see full trace/, err) - } - ensure - ARGV.clear - end - - def test_run_with_bad_options - @app.intern(Rake::Task, "default").enhance { fail } - ARGV.clear - ARGV << '-f' << '-s' << '--xyzzy' - assert_exception(SystemExit) { - err = capture_stderr { capture_stdout { @app.run } } - } - ensure - ARGV.clear - end -end - - -###################################################################### -class TestApplicationOptions < Test::Unit::TestCase - include CaptureStdout - include TestMethods - - def setup - clear_argv - RakeFileUtils.verbose_flag = false - RakeFileUtils.nowrite_flag = false - TESTING_REQUIRE.clear - end - - def teardown - clear_argv - RakeFileUtils.verbose_flag = false - RakeFileUtils.nowrite_flag = false - end - - def clear_argv - while ! ARGV.empty? - ARGV.pop - end - end - - def test_default_options - opts = command_line - assert_nil opts.classic_namespace - assert_nil opts.dryrun - assert_nil opts.full_description - assert_nil opts.ignore_system - assert_nil opts.load_system - assert_nil opts.nosearch - assert_equal ['rakelib'], opts.rakelib - assert_nil opts.show_prereqs - assert_nil opts.show_task_pattern - assert_nil opts.show_tasks - assert_nil opts.silent - assert_nil opts.trace - assert_equal ['rakelib'], opts.rakelib - assert ! RakeFileUtils.verbose_flag - assert ! RakeFileUtils.nowrite_flag - end - - def test_dry_run - flags('--dry-run', '-n') do |opts| - assert opts.dryrun - assert opts.trace - assert RakeFileUtils.verbose_flag - assert RakeFileUtils.nowrite_flag - end - end - - def test_describe - flags('--describe') do |opts| - assert opts.full_description - assert opts.show_tasks - assert_equal(//.to_s, opts.show_task_pattern.to_s) - end - end - - def test_describe_with_pattern - flags('--describe=X') do |opts| - assert opts.full_description - assert opts.show_tasks - assert_equal(/X/.to_s, opts.show_task_pattern.to_s) - end - end - - def test_execute - $xyzzy = 0 - flags('--execute=$xyzzy=1', '-e $xyzzy=1') do |opts| - assert_equal 1, $xyzzy - assert_equal :exit, @exit - $xyzzy = 0 - end - end - - def test_execute_and_continue - $xyzzy = 0 - flags('--execute-continue=$xyzzy=1', '-E $xyzzy=1') do |opts| - assert_equal 1, $xyzzy - assert_not_equal :exit, @exit - $xyzzy = 0 - end - end - - def test_execute_and_print - $xyzzy = 0 - flags('--execute-print=$xyzzy="pugh"', '-p $xyzzy="pugh"') do |opts| - assert_equal 'pugh', $xyzzy - assert_equal :exit, @exit - assert_match(/^pugh$/, @out) - $xyzzy = 0 - end - end - - def test_help - flags('--help', '-H', '-h') do |opts| - assert_match(/\Arake/, @out) - assert_match(/\boptions\b/, @out) - assert_match(/\btargets\b/, @out) - assert_equal :exit, @exit - assert_equal :exit, @exit - end - end - - def test_libdir - flags(['--libdir', 'xx'], ['-I', 'xx'], ['-Ixx']) do |opts| - $:.include?('xx') - end - ensure - $:.delete('xx') - end - - def test_rakefile - flags(['--rakefile', 'RF'], ['--rakefile=RF'], ['-f', 'RF'], ['-fRF']) do |opts| - assert_equal ['RF'], @app.instance_eval { @rakefiles } - end - end - - def test_rakelib - flags(['--rakelibdir', 'A:B:C'], ['--rakelibdir=A:B:C'], ['-R', 'A:B:C'], ['-RA:B:C']) do |opts| - assert_equal ['A', 'B', 'C'], opts.rakelib - end - end - - def test_require - flags(['--require', 'test/reqfile'], '-rtest/reqfile2', '-rtest/reqfile3') do |opts| - end - assert TESTING_REQUIRE.include?(1) - assert TESTING_REQUIRE.include?(2) - assert TESTING_REQUIRE.include?(3) - assert_equal 3, TESTING_REQUIRE.size - end - - def test_missing_require - ex = assert_exception(LoadError) do - flags(['--require', 'test/missing']) do |opts| - end - end - assert_match(/no such file/, ex.message) - assert_match(/test\/missing/, ex.message) - end - - def test_prereqs - flags('--prereqs', '-P') do |opts| - assert opts.show_prereqs - end - end - - def test_quiet - flags('--quiet', '-q') do |opts| - assert ! RakeFileUtils.verbose_flag - assert ! opts.silent - end - end - - def test_no_search - flags('--nosearch', '--no-search', '-N') do |opts| - assert opts.nosearch - end - end - - def test_silent - flags('--silent', '-s') do |opts| - assert ! RakeFileUtils.verbose_flag - assert opts.silent - end - end - - def test_system - flags('--system', '-g') do |opts| - assert opts.load_system - end - end - - def test_no_system - flags('--no-system', '-G') do |opts| - assert opts.ignore_system - end - end - - def test_trace - flags('--trace', '-t') do |opts| - assert opts.trace - assert RakeFileUtils.verbose_flag - assert ! RakeFileUtils.nowrite_flag - end - end - - def test_trace_rules - flags('--rules') do |opts| - assert opts.trace_rules - end - end - - def test_tasks - flags('--tasks', '-T') do |opts| - assert opts.show_tasks - assert_equal(//.to_s, opts.show_task_pattern.to_s) - end - flags(['--tasks', 'xyz'], ['-Txyz']) do |opts| - assert opts.show_tasks - assert_equal(/xyz/, opts.show_task_pattern) - end - end - - def test_verbose - flags('--verbose', '-V') do |opts| - assert RakeFileUtils.verbose_flag - assert ! opts.silent - end - end - - def test_version - flags('--version', '-V') do |opts| - assert_match(/\bversion\b/, @out) - assert_match(/\b#{RAKEVERSION}\b/, @out) - assert_equal :exit, @exit - end - end - - def test_classic_namespace - flags(['--classic-namespace'], ['-C', '-T', '-P', '-n', '-s', '-t']) do |opts| - assert opts.classic_namespace - assert_equal opts.show_tasks, $show_tasks - assert_equal opts.show_prereqs, $show_prereqs - assert_equal opts.trace, $trace - assert_equal opts.dryrun, $dryrun - assert_equal opts.silent, $silent - end - end - - def test_bad_option - capture_stderr do - ex = assert_exception(OptionParser::InvalidOption) do - flags('--bad-option') - end - if ex.message =~ /^While/ # Ruby 1.9 error message - assert_match(/while parsing/i, ex.message) - else # Ruby 1.8 error message - assert_match(/(invalid|unrecognized) option/i, ex.message) - assert_match(/--bad-option/, ex.message) - end - end - end - - def test_task_collection - command_line("a", "b") - assert_equal ["a", "b"], @tasks.sort - end - - def test_default_task_collection - command_line() - assert_equal ["default"], @tasks - end - - def test_environment_definition - ENV.delete('TESTKEY') - command_line("a", "TESTKEY=12") - assert_equal ["a"], @tasks.sort - assert '12', ENV['TESTKEY'] - end - - private - - def flags(*sets) - sets.each do |set| - ARGV.clear - @out = capture_stdout { - @exit = catch(:system_exit) { opts = command_line(*set) } - } - yield(@app.options) if block_given? - end - end - - def command_line(*options) - options.each do |opt| ARGV << opt end - @app = Rake::Application.new - def @app.exit(*args) - throw :system_exit, :exit - end - @app.instance_eval do - handle_options - collect_tasks - end - @tasks = @app.top_level_tasks - @app.options - end -end - -class TestTaskArgumentParsing < Test::Unit::TestCase - def setup - @app = Rake::Application.new - end - - def test_name_only - name, args = @app.parse_task_string("name") - assert_equal "name", name - assert_equal [], args - end - - def test_empty_args - name, args = @app.parse_task_string("name[]") - assert_equal "name", name - assert_equal [], args - end - - def test_one_argument - name, args = @app.parse_task_string("name[one]") - assert_equal "name", name - assert_equal ["one"], args - end - - def test_two_arguments - name, args = @app.parse_task_string("name[one,two]") - assert_equal "name", name - assert_equal ["one", "two"], args - end - - def test_can_handle_spaces_between_args - name, args = @app.parse_task_string("name[one, two,\tthree , \tfour]") - assert_equal "name", name - assert_equal ["one", "two", "three", "four"], args - end - - def test_keeps_embedded_spaces - name, args = @app.parse_task_string("name[a one ana, two]") - assert_equal "name", name - assert_equal ["a one ana", "two"], args - end - -end - -class TestTaskArgumentParsing < Test::Unit::TestCase - include InEnvironment - - def test_terminal_width_using_env - app = Rake::Application.new - in_environment('RAKE_COLUMNS' => '1234') do - assert_equal 1234, app.terminal_width - end - end - - def test_terminal_width_using_stty - app = Rake::Application.new - flexmock(app, - :unix? => true, - :dynamic_width_stty => 1235, - :dynamic_width_tput => 0) - in_environment('RAKE_COLUMNS' => nil) do - assert_equal 1235, app.terminal_width - end - end - - def test_terminal_width_using_tput - app = Rake::Application.new - flexmock(app, - :unix? => true, - :dynamic_width_stty => 0, - :dynamic_width_tput => 1236) - in_environment('RAKE_COLUMNS' => nil) do - assert_equal 1236, app.terminal_width - end - end - - def test_terminal_width_using_hardcoded_80 - app = Rake::Application.new - flexmock(app, :unix? => false) - in_environment('RAKE_COLUMNS' => nil) do - assert_equal 80, app.terminal_width - end - end - - def test_terminal_width_with_failure - app = Rake::Application.new - flexmock(app).should_receive(:unix?).and_throw(RuntimeError) - in_environment('RAKE_COLUMNS' => nil) do - assert_equal 80, app.terminal_width - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_clean.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_clean.rb deleted file mode 100644 index da04ad14..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_clean.rb +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake/clean' - -class TestClean < Test::Unit::TestCase - include Rake - def test_clean - assert Task['clean'], "Should define clean" - assert Task['clobber'], "Should define clobber" - assert Task['clobber'].prerequisites.include?("clean"), - "Clobber should require clean" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_definitions.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_definitions.rb deleted file mode 100644 index 5fba312e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_definitions.rb +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'fileutils' -require 'rake' -require 'test/filecreation' -require 'test/rake_test_setup' - -###################################################################### -class TestDefinitions < Test::Unit::TestCase - include Rake - include TestMethods - - EXISTINGFILE = "testdata/existing" - - def setup - Task.clear - end - - def test_task - done = false - task :one => [:two] do done = true end - task :two - task :three => [:one, :two] - check_tasks(:one, :two, :three) - assert done, "Should be done" - end - - def test_file_task - done = false - file "testdata/one" => "testdata/two" do done = true end - file "testdata/two" - file "testdata/three" => ["testdata/one", "testdata/two"] - check_tasks("testdata/one", "testdata/two", "testdata/three") - assert done, "Should be done" - end - - def check_tasks(n1, n2, n3) - t = Task[n1] - assert Task === t, "Should be a Task" - assert_equal n1.to_s, t.name - assert_equal [n2.to_s], t.prerequisites.collect{|n| n.to_s} - t.invoke - t2 = Task[n2] - assert_equal FileList[], t2.prerequisites - t3 = Task[n3] - assert_equal [n1.to_s, n2.to_s], t3.prerequisites.collect{|n|n.to_s} - end - - def test_incremental_definitions - runs = [] - task :t1 => [:t2] do runs << "A"; 4321 end - task :t1 => [:t3] do runs << "B"; 1234 end - task :t1 => [:t3] - task :t2 - task :t3 - Task[:t1].invoke - assert_equal ["A", "B"], runs - assert_equal ["t2", "t3"], Task[:t1].prerequisites - end - - def test_missing_dependencies - task :x => ["testdata/missing"] - assert_exception(RuntimeError) { Task[:x].invoke } - end - - def test_implicit_file_dependencies - runs = [] - create_existing_file - task :y => [EXISTINGFILE] do |t| runs << t.name end - Task[:y].invoke - assert_equal runs, ['y'] - end - - private # ---------------------------------------------------------- - - def create_existing_file - Dir.mkdir File.dirname(EXISTINGFILE) unless - File.exist?(File.dirname(EXISTINGFILE)) - open(EXISTINGFILE, "w") do |f| f.puts "HI" end unless - File.exist?(EXISTINGFILE) - end - -end - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_earlytime.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_earlytime.rb deleted file mode 100644 index e63bd543..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_earlytime.rb +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' - -class TestEarlyTime < Test::Unit::TestCase - def test_create - early = Rake::EarlyTime.instance - time = Time.mktime(1970, 1, 1, 0, 0, 0) - assert early <= Time.now - assert early < Time.now - assert early != Time.now - assert Time.now > early - assert Time.now >= early - assert Time.now != early - end - - def test_equality - early = Rake::EarlyTime.instance - assert_equal early, early, "two early times should be equal" - end - - def test_original_time_compare_is_not_messed_up - t1 = Time.mktime(1970, 1, 1, 0, 0, 0) - t2 = Time.now - assert t1 < t2 - assert t2 > t1 - assert t1 == t1 - assert t2 == t2 - end - - def test_to_s - assert_equal "", Rake::EARLY.to_s - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_extension.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_extension.rb deleted file mode 100644 index 4a5784cf..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_extension.rb +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' -require 'stringio' - -###################################################################### -class TestExtension < Test::Unit::TestCase - - module Redirect - def error_redirect - old_err = $stderr - result = StringIO.new - $stderr = result - yield - result - ensure - $stderr = old_err - end - end - - class Sample - extend Redirect - - def duplicate_method - :original - end - - OK_ERRS = error_redirect do - rake_extension("a") do - def ok_method - end - end - end - - - DUP_ERRS = error_redirect do - rake_extension("duplicate_method") do - def duplicate_method - :override - end - end - end - end - - def test_methods_actually_exist - sample = Sample.new - sample.ok_method - sample.duplicate_method - end - - def test_no_warning_when_defining_ok_method - assert_equal "", Sample::OK_ERRS.string - end - - def test_extension_complains_when_a_method_that_is_present - assert_match(/warning:/i, Sample::DUP_ERRS.string) - assert_match(/already exists/i, Sample::DUP_ERRS.string) - assert_match(/duplicate_method/i, Sample::DUP_ERRS.string) - assert_equal :original, Sample.new.duplicate_method - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_file_creation_task.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_file_creation_task.rb deleted file mode 100644 index 1544e14d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_file_creation_task.rb +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'fileutils' -require 'rake' -require 'test/filecreation' - -###################################################################### -class TestFileCreationTask < Test::Unit::TestCase - include Rake - include FileCreation - - DUMMY_DIR = 'testdata/dummy_dir' - - def setup - Task.clear - end - - def teardown - FileUtils.rm_rf DUMMY_DIR - end - - def test_file_needed - create_dir DUMMY_DIR - fc_task = Task[DUMMY_DIR] - assert_equal DUMMY_DIR, fc_task.name - FileUtils.rm_rf fc_task.name - assert fc_task.needed?, "file should be needed" - FileUtils.mkdir fc_task.name - assert_equal nil, fc_task.prerequisites.collect{|n| Task[n].timestamp}.max - assert ! fc_task.needed?, "file should not be needed" - end - - def test_directory - directory DUMMY_DIR - fc_task = Task[DUMMY_DIR] - assert_equal DUMMY_DIR, fc_task.name - assert FileCreationTask === fc_task - end - - def test_no_retriggers_on_filecreate_task - create_timed_files(OLDFILE, NEWFILE) - t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE]) - t2 = Rake.application.intern(FileCreationTask, NEWFILE) - assert ! t2.needed?, "Should not need to build new file" - assert ! t1.needed?, "Should not need to rebuild old file because of new" - end - - def test_no_retriggers_on_file_task - create_timed_files(OLDFILE, NEWFILE) - t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE]) - t2 = Rake.application.intern(FileCreationTask, NEWFILE) - assert ! t2.needed?, "Should not need to build new file" - assert ! t1.needed?, "Should not need to rebuild old file because of new" - end - - def test_very_early_timestamp - t1 = Rake.application.intern(FileCreationTask, OLDFILE) - assert t1.timestamp < Time.now - assert t1.timestamp < Time.now - 1000000 - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_file_task.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_file_task.rb deleted file mode 100644 index bfb08f9c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_file_task.rb +++ /dev/null @@ -1,143 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'fileutils' -require 'rake' -require 'test/filecreation' -require 'test/rake_test_setup' - -###################################################################### -class TestFileTask < Test::Unit::TestCase - include Rake - include FileCreation - include TestMethods - - def setup - Task.clear - @runs = Array.new - FileUtils.rm_f NEWFILE - FileUtils.rm_f OLDFILE - end - - def test_file_need - name = "testdata/dummy" - file name - ftask = Task[name] - assert_equal name.to_s, ftask.name - File.delete(ftask.name) rescue nil - assert ftask.needed?, "file should be needed" - open(ftask.name, "w") { |f| f.puts "HI" } - assert_equal nil, ftask.prerequisites.collect{|n| Task[n].timestamp}.max - assert ! ftask.needed?, "file should not be needed" - File.delete(ftask.name) rescue nil - end - - def test_file_times_new_depends_on_old - create_timed_files(OLDFILE, NEWFILE) - - t1 = Rake.application.intern(FileTask, NEWFILE).enhance([OLDFILE]) - t2 = Rake.application.intern(FileTask, OLDFILE) - assert ! t2.needed?, "Should not need to build old file" - assert ! t1.needed?, "Should not need to rebuild new file because of old" - end - - def test_file_times_old_depends_on_new - create_timed_files(OLDFILE, NEWFILE) - - t1 = Rake.application.intern(FileTask,OLDFILE).enhance([NEWFILE]) - t2 = Rake.application.intern(FileTask, NEWFILE) - assert ! t2.needed?, "Should not need to build new file" - preq_stamp = t1.prerequisites.collect{|t| Task[t].timestamp}.max - assert_equal t2.timestamp, preq_stamp - assert t1.timestamp < preq_stamp, "T1 should be older" - assert t1.needed?, "Should need to rebuild old file because of new" - end - - def test_file_depends_on_task_depend_on_file - create_timed_files(OLDFILE, NEWFILE) - - file NEWFILE => [:obj] do |t| @runs << t.name end - task :obj => [OLDFILE] do |t| @runs << t.name end - file OLDFILE do |t| @runs << t.name end - - Task[:obj].invoke - Task[NEWFILE].invoke - assert ! @runs.include?(NEWFILE) - end - - def test_existing_file_depends_on_non_existing_file - create_file(OLDFILE) - delete_file(NEWFILE) - file NEWFILE - file OLDFILE => NEWFILE - assert_nothing_raised do Task[OLDFILE].invoke end - end - - # I have currently disabled this test. I'm not convinced that - # deleting the file target on failure is always the proper thing to - # do. I'm willing to hear input on this topic. - def ztest_file_deletes_on_failure - task :obj - file NEWFILE => [:obj] do |t| - FileUtils.touch NEWFILE - fail "Ooops" - end - assert Task[NEWFILE] - begin - Task[NEWFILE].invoke - rescue Exception - end - assert( ! File.exist?(NEWFILE), "NEWFILE should be deleted") - end - -end - -###################################################################### -class TestDirectoryTask < Test::Unit::TestCase - include Rake - - def setup - rm_rf "testdata", :verbose=>false - end - - def teardown - rm_rf "testdata", :verbose=>false - end - - def test_directory - desc "DESC" - directory "testdata/a/b/c" - assert_equal FileCreationTask, Task["testdata"].class - assert_equal FileCreationTask, Task["testdata/a"].class - assert_equal FileCreationTask, Task["testdata/a/b/c"].class - assert_nil Task["testdata"].comment - assert_equal "DESC", Task["testdata/a/b/c"].comment - assert_nil Task["testdata/a/b"].comment - verbose(false) { - Task['testdata/a/b'].invoke - } - assert File.exist?("testdata/a/b") - assert ! File.exist?("testdata/a/b/c") - end - - if Rake::Win32.windows? - def test_directory_win32 - desc "WIN32 DESC" - FileUtils.mkdir_p("testdata") - Dir.chdir("testdata") do - directory 'c:/testdata/a/b/c' - assert_equal FileCreationTask, Task['c:/testdata'].class - assert_equal FileCreationTask, Task['c:/testdata/a'].class - assert_equal FileCreationTask, Task['c:/testdata/a/b/c'].class - assert_nil Task['c:/testdata'].comment - assert_equal "WIN32 DESC", Task['c:/testdata/a/b/c'].comment - assert_nil Task['c:/testdata/a/b'].comment - verbose(false) { - Task['c:/testdata/a/b'].invoke - } - assert File.exist?('c:/testdata/a/b') - assert ! File.exist?('c:/testdata/a/b/c') - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_filelist.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_filelist.rb deleted file mode 100644 index 84ee82cc..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_filelist.rb +++ /dev/null @@ -1,623 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' - -require 'test/capture_stdout' -require 'test/rake_test_setup' - -class TestFileList < Test::Unit::TestCase - FileList = Rake::FileList - include CaptureStdout - include TestMethods - - def setup - create_test_data - end - - def teardown -# FileList.select_default_ignore_patterns - FileUtils.rm_rf("testdata") - end - - def test_delgating_methods_do_not_include_to_a_or_to_ary - assert ! FileList::DELEGATING_METHODS.include?("to_a"), "should not include to_a" - assert ! FileList::DELEGATING_METHODS.include?(:to_a), "should not include to_a" - assert ! FileList::DELEGATING_METHODS.include?("to_ary"), "should not include to_ary" - assert ! FileList::DELEGATING_METHODS.include?(:to_ary), "should not include to_ary" - end - - def test_create - fl = FileList.new - assert_equal 0, fl.size - end - - def test_create_with_args - fl = FileList.new("testdata/*.c", "x") - assert_equal ["testdata/abc.c", "testdata/x.c", "testdata/xyz.c", "x"].sort, - fl.sort - end - - def test_create_with_block - fl = FileList.new { |f| f.include("x") } - assert_equal ["x"], fl.resolve - end - - def test_create_with_brackets - fl = FileList["testdata/*.c", "x"] - assert_equal ["testdata/abc.c", "testdata/x.c", "testdata/xyz.c", "x"].sort, - fl.sort - end - - def test_create_with_brackets_and_filelist - fl = FileList[FileList["testdata/*.c", "x"]] - assert_equal ["testdata/abc.c", "testdata/x.c", "testdata/xyz.c", "x"].sort, - fl.sort - end - - def test_include_with_another_array - fl = FileList.new.include(["x", "y", "z"]) - assert_equal ["x", "y", "z"].sort, fl.sort - end - - def test_include_with_another_filelist - fl = FileList.new.include(FileList["testdata/*.c", "x"]) - assert_equal ["testdata/abc.c", "testdata/x.c", "testdata/xyz.c", "x"].sort, - fl.sort - end - - def test_append - fl = FileList.new - fl << "a.rb" << "b.rb" - assert_equal ['a.rb', 'b.rb'], fl - end - - def test_add_many - fl = FileList.new - fl.include %w(a d c) - fl.include('x', 'y') - assert_equal ['a', 'd', 'c', 'x', 'y'], fl - assert_equal ['a', 'd', 'c', 'x', 'y'], fl.resolve - end - - def test_add_return - f = FileList.new - g = f << "x" - assert_equal f.object_id, g.object_id - h = f.include("y") - assert_equal f.object_id, h.object_id - end - - def test_match - fl = FileList.new - fl.include('test/test*.rb') - assert fl.include?("test/test_filelist.rb") - assert fl.size > 3 - fl.each { |fn| assert_match(/\.rb$/, fn) } - end - - def test_add_matching - fl = FileList.new - fl << "a.java" - fl.include("test/*.rb") - assert_equal "a.java", fl[0] - assert fl.size > 2 - assert fl.include?("test/test_filelist.rb") - end - - def test_multiple_patterns - create_test_data - fl = FileList.new - fl.include('*.c', '*xist*') - assert_equal [], fl - fl.include('testdata/*.c', 'testdata/*xist*') - assert_equal [ - 'testdata/x.c', 'testdata/xyz.c', 'testdata/abc.c', 'testdata/existing' - ].sort, fl.sort - end - - def test_square_bracket_pattern - fl = FileList.new - fl.include("testdata/abc.[ch]") - assert fl.size == 2 - assert fl.include?("testdata/abc.c") - assert fl.include?("testdata/abc.h") - end - - def test_curly_bracket_pattern - fl = FileList.new - fl.include("testdata/abc.{c,h}") - assert fl.size == 2 - assert fl.include?("testdata/abc.c") - assert fl.include?("testdata/abc.h") - end - - def test_reject - fl = FileList.new - fl.include %w(testdata/x.c testdata/abc.c testdata/xyz.c testdata/existing) - fl.reject! { |fn| fn =~ %r{/x} } - assert_equal [ - 'testdata/abc.c', 'testdata/existing' - ], fl - end - - def test_exclude - fl = FileList['testdata/x.c', 'testdata/abc.c', 'testdata/xyz.c', 'testdata/existing'] - fl.each { |fn| touch fn, :verbose => false } - x = fl.exclude(%r{/x.+\.}) - assert_equal FileList, x.class - assert_equal %w(testdata/x.c testdata/abc.c testdata/existing), fl - assert_equal fl.object_id, x.object_id - fl.exclude('testdata/*.c') - assert_equal ['testdata/existing'], fl - fl.exclude('testdata/existing') - assert_equal [], fl - end - - def test_excluding_via_block - fl = FileList['testdata/a.c', 'testdata/b.c', 'testdata/xyz.c'] - fl.exclude { |fn| fn.pathmap('%n') == 'xyz' } - assert fl.exclude?("xyz.c"), "Should exclude xyz.c" - assert_equal ['testdata/a.c', 'testdata/b.c'], fl - end - - def test_exclude_return_on_create - fl = FileList['testdata/*'].exclude(/.*\.[hcx]$/) - assert_equal ['testdata/existing', 'testdata/cfiles'].sort, fl.sort - assert_equal FileList, fl.class - end - - def test_exclude_with_string_return_on_create - fl = FileList['testdata/*'].exclude('testdata/abc.c') - assert_equal %w(testdata/existing testdata/cfiles testdata/x.c testdata/abc.h testdata/abc.x testdata/xyz.c).sort, fl.sort - assert_equal FileList, fl.class - end - - def test_default_exclude - fl = FileList.new - fl.clear_exclude - fl.include("**/*~", "**/*.bak", "**/core") - assert fl.member?("testdata/core"), "Should include core" - assert fl.member?("testdata/x.bak"), "Should include .bak files" - end - - def test_unique - fl = FileList.new - fl << "x.c" << "a.c" << "b.rb" << "a.c" - assert_equal ['x.c', 'a.c', 'b.rb', 'a.c'], fl - fl.uniq! - assert_equal ['x.c', 'a.c', 'b.rb'], fl - end - - def test_to_string - fl = FileList.new - fl << "a.java" << "b.java" - assert_equal "a.java b.java", fl.to_s - assert_equal "a.java b.java", "#{fl}" - end - - def test_to_array - fl = FileList['a.java', 'b.java'] - assert_equal ['a.java', 'b.java'], fl.to_a - assert_equal Array, fl.to_a.class - assert_equal ['a.java', 'b.java'], fl.to_ary - assert_equal Array, fl.to_ary.class - end - - def test_to_s_pending - fl = FileList['testdata/abc.*'] - result = fl.to_s - assert_match(%r{testdata/abc\.c}, result) - assert_match(%r{testdata/abc\.h}, result) - assert_match(%r{testdata/abc\.x}, result) - assert_match(%r{(testdata/abc\..\b ?){2}}, result) - end - - def test_inspect_pending - fl = FileList['testdata/abc.*'] - result = fl.inspect - assert_match(%r{"testdata/abc\.c"}, result) - assert_match(%r{"testdata/abc\.h"}, result) - assert_match(%r{"testdata/abc\.x"}, result) - assert_match(%r|^\[("testdata/abc\..", ){2}"testdata/abc\.."\]$|, result) - end - - def test_sub - fl = FileList["testdata/*.c"] - f2 = fl.sub(/\.c$/, ".o") - assert_equal FileList, f2.class - assert_equal ["testdata/abc.o", "testdata/x.o", "testdata/xyz.o"].sort, - f2.sort - f3 = fl.gsub(/\.c$/, ".o") - assert_equal FileList, f3.class - assert_equal ["testdata/abc.o", "testdata/x.o", "testdata/xyz.o"].sort, - f3.sort - end - - def test_claim_to_be_a_kind_of_array - fl = FileList['testdata/*.c'] - assert fl.is_a?(Array) - assert fl.kind_of?(Array) - end - - def test_claim_to_be_a_kind_of_filelist - fl = FileList['testdata/*.c'] - assert fl.is_a?(FileList) - assert fl.kind_of?(FileList) - end - - def test_claim_to_be_a_filelist_instance - fl = FileList['testdata/*.c'] - assert fl.instance_of?(FileList) - end - - def test_dont_claim_to_be_an_array_instance - fl = FileList['testdata/*.c'] - assert ! fl.instance_of?(Array) - end - - def test_sub! - f = "x/a.c" - fl = FileList[f, "x/b.c"] - res = fl.sub!(/\.c$/, ".o") - assert_equal ["x/a.o", "x/b.o"].sort, fl.sort - assert_equal "x/a.c", f - assert_equal fl.object_id, res.object_id - end - - def test_sub_with_block - fl = FileList["src/org/onestepback/a.java", "src/org/onestepback/b.java"] -# The block version doesn't work the way I want it to ... -# f2 = fl.sub(%r{^src/(.*)\.java$}) { |x| "classes/" + $1 + ".class" } - f2 = fl.sub(%r{^src/(.*)\.java$}, "classes/\\1.class") - assert_equal [ - "classes/org/onestepback/a.class", - "classes/org/onestepback/b.class" - ].sort, - f2.sort - end - - def test_string_ext - assert_equal "one.net", "one.two".ext("net") - assert_equal "one.net", "one.two".ext(".net") - assert_equal "one.net", "one".ext("net") - assert_equal "one.net", "one".ext(".net") - assert_equal "one.two.net", "one.two.c".ext(".net") - assert_equal "one/two.net", "one/two.c".ext(".net") - assert_equal "one.x/two.net", "one.x/two.c".ext(".net") - assert_equal "one.x/two.net", "one.x/two".ext(".net") - assert_equal ".onerc.net", ".onerc.dot".ext("net") - assert_equal ".onerc.net", ".onerc".ext("net") - assert_equal ".a/.onerc.net", ".a/.onerc".ext("net") - assert_equal "one", "one.two".ext('') - assert_equal "one", "one.two".ext - assert_equal ".one", ".one.two".ext - assert_equal ".one", ".one".ext - assert_equal ".", ".".ext("c") - assert_equal "..", "..".ext("c") - # These only need to work in windows - if Rake::Win32.windows? - assert_equal "one.x\\two.net", "one.x\\two.c".ext(".net") - assert_equal "one.x\\two.net", "one.x\\two".ext(".net") - end - end - - def test_filelist_ext - assert_equal FileList['one.c', '.one.c'], - FileList['one.net', '.one'].ext('c') - end - - def test_gsub - create_test_data - fl = FileList["testdata/*.c"] - f2 = fl.gsub(/a/, "A") - assert_equal ["testdAtA/Abc.c", "testdAtA/x.c", "testdAtA/xyz.c"].sort, - f2.sort - end - - def test_gsub! - create_test_data - f = FileList["testdata/*.c"] - f.gsub!(/a/, "A") - assert_equal ["testdAtA/Abc.c", "testdAtA/x.c", "testdAtA/xyz.c"].sort, - f.sort - end - - def test_egrep_with_output - files = FileList['test/test*.rb'] - the_line_number = __LINE__ + 1 - out = capture_stdout do files.egrep(/PUGH/) end - assert_match(/:#{the_line_number}:/, out) - end - - def test_egrep_with_block - files = FileList['test/test*.rb'] - found = false - the_line_number = __LINE__ + 1 - files.egrep(/XYZZY/) do |fn, ln, line | - assert_equal 'test/test_filelist.rb', fn - assert_equal the_line_number, ln - assert_match(/files\.egrep/, line) - found = true - end - assert found, "should have found a matching line" - end - - def test_existing - fl = FileList['testdata/abc.c', 'testdata/notthere.c'] - assert_equal ["testdata/abc.c"], fl.existing - assert fl.existing.is_a?(FileList) - end - - def test_existing! - fl = FileList['testdata/abc.c', 'testdata/notthere.c'] - result = fl.existing! - assert_equal ["testdata/abc.c"], fl - assert_equal fl.object_id, result.object_id - end - - def test_ignore_special - f = FileList['testdata/*'] - assert ! f.include?("testdata/CVS"), "Should not contain CVS" - assert ! f.include?("testdata/.svn"), "Should not contain .svn" - assert ! f.include?("testdata/.dummy"), "Should not contain dot files" - assert ! f.include?("testdata/x.bak"), "Should not contain .bak files" - assert ! f.include?("testdata/x~"), "Should not contain ~ files" - assert ! f.include?("testdata/core"), "Should not contain core files" - end - - def test_clear_ignore_patterns - f = FileList['testdata/*', 'testdata/.svn'] - f.clear_exclude - assert f.include?("testdata/abc.c") - assert f.include?("testdata/xyz.c") - assert f.include?("testdata/CVS") - assert f.include?("testdata/.svn") - assert f.include?("testdata/x.bak") - assert f.include?("testdata/x~") - end - - def test_exclude_with_alternate_file_seps - fl = FileList.new - assert fl.exclude?("x/CVS/y") - assert fl.exclude?("x\\CVS\\y") - assert fl.exclude?("x/.svn/y") - assert fl.exclude?("x\\.svn\\y") - assert fl.exclude?("x/core") - assert fl.exclude?("x\\core") - end - - def test_add_default_exclude_list - fl = FileList.new - fl.exclude(/~\d+$/) - assert fl.exclude?("x/CVS/y") - assert fl.exclude?("x\\CVS\\y") - assert fl.exclude?("x/.svn/y") - assert fl.exclude?("x\\.svn\\y") - assert fl.exclude?("x/core") - assert fl.exclude?("x\\core") - assert fl.exclude?("x/abc~1") - end - - def test_basic_array_functions - f = FileList['b', 'c', 'a'] - assert_equal 'b', f.first - assert_equal 'b', f[0] - assert_equal 'a', f.last - assert_equal 'a', f[2] - assert_equal 'a', f[-1] - assert_equal ['a', 'b', 'c'], f.sort - f.sort! - assert_equal ['a', 'b', 'c'], f - end - - def test_flatten - assert_equal ['a', 'testdata/x.c', 'testdata/xyz.c', 'testdata/abc.c'].sort, - ['a', FileList['testdata/*.c']].flatten.sort - end - - def test_clone_and_dup - a = FileList['a', 'b', 'c'] - c = a.clone - d = a.dup - a << 'd' - assert_equal ['a', 'b', 'c', 'd'], a - assert_equal ['a', 'b', 'c'], c - assert_equal ['a', 'b', 'c'], d - end - - def test_dup_and_clone_replicate_taint - a = FileList['a', 'b', 'c'] - a.taint - c = a.clone - d = a.dup - assert c.tainted?, "Clone should be tainted" - assert d.tainted?, "Dup should be tainted" - end - - def test_duped_items_will_thaw - a = FileList['a', 'b', 'c'] - a.freeze - d = a.dup - d << 'more' - assert_equal ['a', 'b', 'c', 'more'], d - end - - def test_cloned_items_stay_frozen - a = FileList['a', 'b', 'c'] - a.freeze - c = a.clone - assert_exception(TypeError, RuntimeError) do - c << 'more' - end - end - - def test_array_comparisons - fl = FileList['b', 'b'] - a = ['b', 'a'] - b = ['b', 'b'] - c = ['b', 'c'] - assert_equal( 1, fl <=> a ) - assert_equal( 0, fl <=> b ) - assert_equal( -1, fl <=> c ) - assert_equal( -1, a <=> fl ) - assert_equal( 0, b <=> fl ) - assert_equal( 1, c <=> fl ) - end - - def test_array_equality - a = FileList['a', 'b'] - b = ['a', 'b'] - assert a == b - assert b == a -# assert a.eql?(b) -# assert b.eql?(a) - assert ! a.equal?(b) - assert ! b.equal?(a) - end - - def test_enumeration_methods - a = FileList['a', 'b'] - b = a.collect { |it| it.upcase } - assert_equal ['A', 'B'], b - assert_equal FileList, b.class - - b = a.map { |it| it.upcase } - assert_equal ['A', 'B'], b - assert_equal FileList, b.class - - b = a.sort - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.sort_by { |it| it } - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.find_all { |it| it == 'b'} - assert_equal ['b'], b - assert_equal FileList, b.class - - b = a.select { |it| it.size == 1 } - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.reject { |it| it == 'b' } - assert_equal ['a'], b - assert_equal FileList, b.class - - b = a.grep(/./) - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.partition { |it| it == 'b' } - assert_equal [['b'], ['a']], b - assert_equal Array, b.class - assert_equal FileList, b[0].class - assert_equal FileList, b[1].class - - b = a.zip(['x', 'y']).to_a - assert_equal [['a', 'x'], ['b', 'y']], b - assert_equal Array, b.class - assert_equal Array, b[0].class - assert_equal Array, b[1].class - end - - def test_array_operators - a = ['a', 'b'] - b = ['c', 'd'] - f = FileList['x', 'y'] - g = FileList['w', 'z'] - - r = f + g - assert_equal ['x', 'y', 'w', 'z'], r - assert_equal FileList, r.class - - r = a + g - assert_equal ['a', 'b', 'w', 'z'], r - assert_equal Array, r.class - - r = f + b - assert_equal ['x', 'y', 'c', 'd'], r - assert_equal FileList, r.class - - r = FileList['w', 'x', 'y', 'z'] - f - assert_equal ['w', 'z'], r - assert_equal FileList, r.class - - r = FileList['w', 'x', 'y', 'z'] & f - assert_equal ['x', 'y'], r - assert_equal FileList, r.class - - r = f * 2 - assert_equal ['x', 'y', 'x', 'y'], r - assert_equal FileList, r.class - - r = f * ',' - assert_equal 'x,y', r - assert_equal String, r.class - - r = f | ['a', 'x'] - assert_equal ['a', 'x', 'y'].sort, r.sort - assert_equal FileList, r.class - end - - def test_other_array_returning_methods - f = FileList['a', nil, 'b'] - r = f.compact - assert_equal ['a', 'b'], r - assert_equal FileList, r.class - - f = FileList['a', 'b'] - r = f.concat(['x', 'y']) - assert_equal ['a', 'b', 'x', 'y'], r - assert_equal FileList, r.class - - f = FileList['a', ['b', 'c'], FileList['d', 'e']] - r = f.flatten - assert_equal ['a', 'b', 'c', 'd', 'e'], r - assert_equal FileList, r.class - - f = FileList['a', 'b', 'a'] - r = f.uniq - assert_equal ['a', 'b'], r - assert_equal FileList, r.class - - f = FileList['a', 'b', 'c', 'd'] - r = f.values_at(1,3) - assert_equal ['b', 'd'], r - assert_equal FileList, r.class - end - - def test_file_utils_can_use_filelists - cfiles = FileList['testdata/*.c'] - - cp cfiles, @cdir, :verbose => false - - assert File.exist?(File.join(@cdir, 'abc.c')) - assert File.exist?(File.join(@cdir, 'xyz.c')) - assert File.exist?(File.join(@cdir, 'x.c')) - end - - def create_test_data - verbose(false) do - - mkdir "testdata" unless File.exist? "testdata" - mkdir "testdata/CVS" rescue nil - mkdir "testdata/.svn" rescue nil - @cdir = "testdata/cfiles" - mkdir @cdir rescue nil - touch "testdata/.dummy" - touch "testdata/x.bak" - touch "testdata/x~" - touch "testdata/core" - touch "testdata/x.c" - touch "testdata/xyz.c" - touch "testdata/abc.c" - touch "testdata/abc.h" - touch "testdata/abc.x" - touch "testdata/existing" - end - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_fileutils.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_fileutils.rb deleted file mode 100644 index 20d96507..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_fileutils.rb +++ /dev/null @@ -1,251 +0,0 @@ -#!/usr/bin/env ruby - -require 'rake' -require 'test/unit' -require 'test/filecreation' -require 'fileutils' -require 'stringio' -require 'test/rake_test_setup' - -class TestFileUtils < Test::Unit::TestCase - include FileCreation - include TestMethods - - def setup - File.chmod(0750,"test/shellcommand.rb") - end - - def teardown - FileUtils.rm_rf("testdata") - FileUtils::LN_SUPPORTED[0] = true - end - - def test_rm_one_file - create_file("testdata/a") - FileUtils.rm_rf "testdata/a" - assert ! File.exist?("testdata/a") - end - - def test_rm_two_files - create_file("testdata/a") - create_file("testdata/b") - FileUtils.rm_rf ["testdata/a", "testdata/b"] - assert ! File.exist?("testdata/a") - assert ! File.exist?("testdata/b") - end - - def test_rm_filelist - list = Rake::FileList.new << "testdata/a" << "testdata/b" - list.each { |fn| create_file(fn) } - FileUtils.rm_r list - assert ! File.exist?("testdata/a") - assert ! File.exist?("testdata/b") - end - - def test_ln - create_dir("testdata") - open("testdata/a", "w") { |f| f.puts "TEST_LN" } - RakeFileUtils.safe_ln("testdata/a", "testdata/b", :verbose => false) - assert_equal "TEST_LN\n", open("testdata/b") { |f| f.read } - end - - class BadLink - include RakeFileUtils - attr_reader :cp_args - def initialize(klass) - @failure_class = klass - end - def cp(*args) - @cp_args = args - end - def ln(*args) - fail @failure_class, "ln not supported" - end - public :safe_ln - end - - def test_safe_ln_failover_to_cp_on_standard_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(StandardError) - c.safe_ln "a", "b" - assert_equal ['a', 'b'], c.cp_args - c.safe_ln "x", "y" - assert_equal ['x', 'y'], c.cp_args - end - - def test_safe_ln_failover_to_cp_on_not_implemented_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(NotImplementedError) - c.safe_ln "a", "b" - assert_equal ['a', 'b'], c.cp_args - end - - def test_safe_ln_fails_on_script_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(ScriptError) - assert_exception(ScriptError) do c.safe_ln "a", "b" end - end - - def test_verbose - verbose true - assert_equal true, verbose - verbose false - assert_equal false, verbose - verbose(true) { - assert_equal true, verbose - } - assert_equal false, verbose - end - - def test_nowrite - nowrite true - assert_equal true, nowrite - nowrite false - assert_equal false, nowrite - nowrite(true){ - assert_equal true, nowrite - } - assert_equal false, nowrite - end - - def test_file_utils_methods_are_available_at_top_level - create_file("testdata/a") - rm_rf "testdata/a" - assert ! File.exist?("testdata/a") - end - - def test_fileutils_methods_dont_leak - obj = Object.new - assert_exception(NoMethodError) { obj.copy } # from FileUtils - assert_exception(NoMethodError) { obj.ruby } # from RubyFileUtils - end - - def test_sh - verbose(false) { sh %{ruby test/shellcommand.rb} } - assert true, "should not fail" - end - - # If the :sh method is invoked directly from a test unit instance - # (under mini/test), the mini/test version of fail is invoked rather - # than the kernel version of fail. So we run :sh from within a - # non-test class to avoid the problem. - class Sh - include FileUtils - def run(*args) - sh(*args) - end - def self.run(*args) - new.run(*args) - end - end - - def test_sh_with_a_single_string_argument - ENV['RAKE_TEST_SH'] = 'someval' - verbose(false) { - sh %{ruby test/check_expansion.rb #{env_var} someval} - } - end - - def test_sh_with_multiple_arguments - ENV['RAKE_TEST_SH'] = 'someval' - verbose(false) { - Sh.run 'ruby', 'test/check_no_expansion.rb', env_var, 'someval' - } - end - - def test_sh_failure - assert_exception(RuntimeError) { - verbose(false) { Sh.run %{ruby test/shellcommand.rb 1} } - } - end - - def test_sh_special_handling - count = 0 - verbose(false) { - sh(%{ruby test/shellcommand.rb}) do |ok, res| - assert(ok) - assert_equal 0, res.exitstatus - count += 1 - end - sh(%{ruby test/shellcommand.rb 1}) do |ok, res| - assert(!ok) - assert_equal 1, res.exitstatus - count += 1 - end - } - assert_equal 2, count, "Block count should be 2" - end - - def test_sh_noop - verbose(false) { sh %{test/shellcommand.rb 1}, :noop=>true } - assert true, "should not fail" - end - - def test_sh_bad_option - ex = assert_exception(ArgumentError) { - verbose(false) { sh %{test/shellcommand.rb}, :bad_option=>true } - } - assert_match(/bad_option/, ex.message) - end - - def test_sh_verbose - out = redirect_stderr { - verbose(true) { - sh %{test/shellcommand.rb}, :noop=>true - } - } - assert_match(/^test\/shellcommand\.rb$/, out) - end - - def test_sh_no_verbose - out = redirect_stderr { - verbose(false) { - sh %{test/shellcommand.rb}, :noop=>true - } - } - assert_equal '', out - end - - def test_ruby_with_a_single_string_argument - ENV['RAKE_TEST_SH'] = 'someval' - verbose(false) { - ruby %{test/check_expansion.rb #{env_var} someval} - } - end - - def test_ruby_with_multiple_arguments - ENV['RAKE_TEST_SH'] = 'someval' - verbose(false) { - ruby 'test/check_no_expansion.rb', env_var, 'someval' - } - end - - def test_split_all - assert_equal ['a'], RakeFileUtils.split_all('a') - assert_equal ['..'], RakeFileUtils.split_all('..') - assert_equal ['/'], RakeFileUtils.split_all('/') - assert_equal ['a', 'b'], RakeFileUtils.split_all('a/b') - assert_equal ['/', 'a', 'b'], RakeFileUtils.split_all('/a/b') - assert_equal ['..', 'a', 'b'], RakeFileUtils.split_all('../a/b') - end - - private - - def redirect_stderr - old_err = $stderr - $stderr = StringIO.new - yield - $stderr.string - ensure - $stderr = old_err - end - - def windows? - ! File::ALT_SEPARATOR.nil? - end - - def env_var - windows? ? '%RAKE_TEST_SH%' : '$RAKE_TEST_SH' - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_ftp.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_ftp.rb deleted file mode 100644 index 15765900..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_ftp.rb +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env ruby - -require 'date' -require 'time' -require 'test/unit' -require 'rake/contrib/ftptools' - -class FakeDate - def self.today - Date.new(2003,10,3) - end - def self.now - Time.local(2003,10,3,12,00,00) - end -end - - -class TestFtpFile < Test::Unit::TestCase - - def setup - Rake::FtpFile.class_eval { @date_class = FakeDate; @time_class = FakeDate } - end - - def test_general - file = Rake::FtpFile.new("here", "-rw-r--r-- 1 a279376 develop 121770 Mar 6 14:50 wiki.pl") - assert_equal "wiki.pl", file.name - assert_equal "here/wiki.pl", file.path - assert_equal "a279376", file.owner - assert_equal "develop", file.group - assert_equal 0644, file.mode - assert_equal 121770, file.size - assert_equal Time.mktime(2003,3,6,14,50,0,0), file.time - assert ! file.directory? - assert ! file.symlink? - end - - def test_far_date - file = Rake::FtpFile.new(".", "drwxr-xr-x 3 a279376 develop 4096 Nov 26 2001 vss") - assert_equal Time.mktime(2001,11,26,0,0,0,0), file.time - end - - def test_close_date - file = Rake::FtpFile.new(".", "drwxr-xr-x 3 a279376 develop 4096 Nov 26 15:35 vss") - assert_equal Time.mktime(2002,11,26,15,35,0,0), file.time - end - - def test_directory - file = Rake::FtpFile.new(".", "drwxrwxr-x 9 a279376 develop 4096 Mar 13 14:32 working") - assert file.directory? - assert !file.symlink? - end - - def test_symlink - file = Rake::FtpFile.new(".", "lrwxrwxrwx 1 a279376 develop 64 Mar 26 2002 xtrac -> /home/a279376/working/ics/development/java/com/fmr/fwp/ics/xtrac") - assert_equal 'xtrac', file.name - assert file.symlink? - assert !file.directory? - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_invocation_chain.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_invocation_chain.rb deleted file mode 100644 index 3d74e45c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_invocation_chain.rb +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' -require 'test/rake_test_setup' - -###################################################################### -class TestAnEmptyInvocationChain < Test::Unit::TestCase - include TestMethods - - def setup - @empty = Rake::InvocationChain::EMPTY - end - - def test_should_be_able_to_add_members - assert_nothing_raised do - @empty.append("A") - end - end - - def test_to_s - assert_equal "TOP", @empty.to_s - end -end - -###################################################################### -class TestAnInvocationChainWithOneMember < Test::Unit::TestCase - include TestMethods - - def setup - @empty = Rake::InvocationChain::EMPTY - @first_member = "A" - @chain = @empty.append(@first_member) - end - - def test_should_report_first_member_as_a_member - assert @chain.member?(@first_member) - end - - def test_should_fail_when_adding_original_member - ex = assert_exception RuntimeError do - @chain.append(@first_member) - end - assert_match(/circular +dependency/i, ex.message) - assert_match(/A.*=>.*A/, ex.message) - end - - def test_to_s - assert_equal "TOP => A", @chain.to_s - end - -end - -###################################################################### -class TestAnInvocationChainWithMultipleMember < Test::Unit::TestCase - include TestMethods - - def setup - @first_member = "A" - @second_member = "B" - ch = Rake::InvocationChain::EMPTY.append(@first_member) - @chain = ch.append(@second_member) - end - - def test_should_report_first_member_as_a_member - assert @chain.member?(@first_member) - end - - def test_should_report_second_member_as_a_member - assert @chain.member?(@second_member) - end - - def test_should_fail_when_adding_original_member - ex = assert_exception RuntimeError do - @chain.append(@first_member) - end - assert_match(/A.*=>.*B.*=>.*A/, ex.message) - end -end - - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_makefile_loader.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_makefile_loader.rb deleted file mode 100644 index ab07074f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_makefile_loader.rb +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' -require 'rake/loaders/makefile' - -class TestMakefileLoader < Test::Unit::TestCase - include Rake - - def test_parse - Task.clear - loader = Rake::MakefileLoader.new - loader.load("test/data/sample.mf") - %w(a b c d).each do |t| - assert Task.task_defined?(t), "#{t} should be a defined task" - end - assert_equal %w(a1 a2 a3 a4 a5 a6 a7).sort, Task['a'].prerequisites.sort - assert_equal %w(b1 b2 b3 b4 b5 b6 b7).sort, Task['b'].prerequisites.sort - assert_equal %w(c1).sort, Task['c'].prerequisites.sort - assert_equal %w(d1 d2).sort, Task['d'].prerequisites.sort - assert_equal %w(e1 f1).sort, Task['e'].prerequisites.sort - assert_equal %w(e1 f1).sort, Task['f'].prerequisites.sort - assert_equal ["g1", "g 2", "g 3", "g4"].sort, Task['g 0'].prerequisites.sort - assert_equal 7, Task.tasks.size - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_multitask.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_multitask.rb deleted file mode 100644 index ee9be773..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_multitask.rb +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' - -###################################################################### -class TestMultiTask < Test::Unit::TestCase - include Rake - - def setup - Task.clear - @runs = Array.new - end - - def test_running_multitasks - task :a do 3.times do |i| @runs << "A#{i}"; sleep 0.01; end end - task :b do 3.times do |i| @runs << "B#{i}"; sleep 0.01; end end - multitask :both => [:a, :b] - Task[:both].invoke - assert_equal 6, @runs.size - assert @runs.index("A0") < @runs.index("A1") - assert @runs.index("A1") < @runs.index("A2") - assert @runs.index("B0") < @runs.index("B1") - assert @runs.index("B1") < @runs.index("B2") - end - - def test_all_multitasks_wait_on_slow_prerequisites - task :slow do 3.times do |i| @runs << "S#{i}"; sleep 0.05 end end - task :a => [:slow] do 3.times do |i| @runs << "A#{i}"; sleep 0.01 end end - task :b => [:slow] do 3.times do |i| @runs << "B#{i}"; sleep 0.01 end end - multitask :both => [:a, :b] - Task[:both].invoke - assert_equal 9, @runs.size - assert @runs.index("S0") < @runs.index("S1") - assert @runs.index("S1") < @runs.index("S2") - assert @runs.index("S2") < @runs.index("A0") - assert @runs.index("S2") < @runs.index("B0") - assert @runs.index("A0") < @runs.index("A1") - assert @runs.index("A1") < @runs.index("A2") - assert @runs.index("B0") < @runs.index("B1") - assert @runs.index("B1") < @runs.index("B2") - end -end - - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_namespace.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_namespace.rb deleted file mode 100644 index 4b5a17fe..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_namespace.rb +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env ruby - -begin - require 'rubygems' -rescue LoadError - # got no gems -end - -require 'test/unit' -require 'flexmock/test_unit' -require 'rake' -require 'test/rake_test_setup' - -class TestNameSpace < Test::Unit::TestCase - include TestMethods - - class TM - include Rake::TaskManager - end - - def test_namespace_creation - mgr = TM.new - ns = Rake::NameSpace.new(mgr, []) - assert_not_nil ns - end - - def test_namespace_lookup - mgr = TM.new - ns = mgr.in_namespace("n") do - mgr.define_task(Rake::Task, "t") - end - - assert_not_nil ns["t"] - assert_equal mgr["n:t"], ns["t"] - end - - def test_namespace_reports_tasks_it_owns - mgr = TM.new - nns = nil - ns = mgr.in_namespace("n") do - mgr.define_task(Rake::Task, :x) - mgr.define_task(Rake::Task, :y) - nns = mgr.in_namespace("nn") do - mgr.define_task(Rake::Task, :z) - end - end - mgr.in_namespace("m") do - mgr.define_task(Rake::Task, :x) - end - - assert_equal ["n:nn:z", "n:x", "n:y"], - ns.tasks.map { |tsk| tsk.name } - assert_equal ["n:nn:z"], nns.tasks.map {|t| t.name} - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_package_task.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_package_task.rb deleted file mode 100644 index 62043e60..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_package_task.rb +++ /dev/null @@ -1,118 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake/packagetask' -require 'test/rake_test_setup' - -class TestPackageTask < Test::Unit::TestCase - include Rake - include TestMethods - - def test_create - pkg = Rake::PackageTask.new("pkgr", "1.2.3") { |p| - p.package_files << "install.rb" - p.package_files.include( - '[A-Z]*', - 'bin/**/*', - 'lib/**/*.rb', - 'test/**/*.rb', - 'doc/**/*', - 'build/rubyapp.rb', - '*.blurb') - p.package_files.exclude(/\bCVS\b/) - p.package_files.exclude(/~$/) - p.package_dir = 'pkg' - p.need_tar = true - p.need_tar_gz = true - p.need_tar_bz2 = true - p.need_zip = true - } - assert_equal "pkg", pkg.package_dir - assert pkg.package_files.include?("bin/rake") - assert "pkgr", pkg.name - assert "1.2.3", pkg.version - assert Task[:package] - assert Task['pkg/pkgr-1.2.3.tgz'] - assert Task['pkg/pkgr-1.2.3.tar.gz'] - assert Task['pkg/pkgr-1.2.3.tar.bz2'] - assert Task['pkg/pkgr-1.2.3.zip'] - assert Task["pkg/pkgr-1.2.3"] - assert Task[:clobber_package] - assert Task[:repackage] - end - - def test_missing_version - assert_exception(RuntimeError) { - pkg = Rake::PackageTask.new("pkgr") { |p| } - } - end - - def test_no_version - pkg = Rake::PackageTask.new("pkgr", :noversion) { |p| } - assert "pkgr", pkg.send(:package_name) - end - - def test_clone - pkg = Rake::PackageTask.new("x", :noversion) - p2 = pkg.clone - pkg.package_files << "y" - p2.package_files << "x" - assert_equal ["y"], pkg.package_files - assert_equal ["x"], p2.package_files - end -end - - -begin - require 'rubygems' - require 'rake/gempackagetask' -rescue Exception - puts "WARNING: RubyGems not installed" -end - -if ! defined?(Gem) - puts "WARNING: Unable to test GemPackaging ... requires RubyGems" -else - class TestGemPackageTask < Test::Unit::TestCase - def test_gem_package - gem = Gem::Specification.new do |g| - g.name = "pkgr" - g.version = "1.2.3" - g.files = FileList["x"].resolve - end - pkg = Rake::GemPackageTask.new(gem) do |p| - p.package_files << "y" - end - assert_equal ["x", "y"], pkg.package_files - assert_equal "pkgr-1.2.3.gem", pkg.gem_file - end - - def test_gem_package_with_current_platform - gem = Gem::Specification.new do |g| - g.name = "pkgr" - g.version = "1.2.3" - g.files = FileList["x"].resolve - g.platform = Gem::Platform::CURRENT - end - pkg = Rake::GemPackageTask.new(gem) do |p| - p.package_files << "y" - end - assert_equal ["x", "y"], pkg.package_files - assert_match(/^pkgr-1\.2\.3-(\S+)\.gem$/, pkg.gem_file) - end - - def test_gem_package_with_ruby_platform - gem = Gem::Specification.new do |g| - g.name = "pkgr" - g.version = "1.2.3" - g.files = FileList["x"].resolve - g.platform = Gem::Platform::RUBY - end - pkg = Rake::GemPackageTask.new(gem) do |p| - p.package_files << "y" - end - assert_equal ["x", "y"], pkg.package_files - assert_equal "pkgr-1.2.3.gem", pkg.gem_file - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_pathmap.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_pathmap.rb deleted file mode 100644 index 4ba1a681..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_pathmap.rb +++ /dev/null @@ -1,210 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' - -# ==================================================================== -class TestPathMap < Test::Unit::TestCase - include TestMethods - - def test_returns_self_with_no_args - assert_equal "abc.rb", "abc.rb".pathmap - end - - def test_s_returns_file_separator - sep = File::ALT_SEPARATOR || File::SEPARATOR - assert_equal sep, "abc.rb".pathmap("%s") - assert_equal sep, "".pathmap("%s") - assert_equal "a#{sep}b", "a/b".pathmap("%d%s%f") - end - - def test_f_returns_basename - assert_equal "abc.rb", "abc.rb".pathmap("%f") - assert_equal "abc.rb", "this/is/a/dir/abc.rb".pathmap("%f") - assert_equal "abc.rb", "/this/is/a/dir/abc.rb".pathmap("%f") - end - - def test_n_returns_basename_without_extension - assert_equal "abc", "abc.rb".pathmap("%n") - assert_equal "abc", "abc".pathmap("%n") - assert_equal "abc", "this/is/a/dir/abc.rb".pathmap("%n") - assert_equal "abc", "/this/is/a/dir/abc.rb".pathmap("%n") - assert_equal "abc", "/this/is/a/dir/abc".pathmap("%n") - end - - def test_d_returns_dirname - assert_equal ".", "abc.rb".pathmap("%d") - assert_equal "/", "/abc".pathmap("%d") - assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%d") - assert_equal "/this/is/a/dir", "/this/is/a/dir/abc.rb".pathmap("%d") - end - - def test_9d_returns_partial_dirname - assert_equal "this/is", "this/is/a/dir/abc.rb".pathmap("%2d") - assert_equal "this", "this/is/a/dir/abc.rb".pathmap("%1d") - assert_equal ".", "this/is/a/dir/abc.rb".pathmap("%0d") - assert_equal "dir", "this/is/a/dir/abc.rb".pathmap("%-1d") - assert_equal "a/dir", "this/is/a/dir/abc.rb".pathmap("%-2d") - assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%100d") - assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%-100d") - end - - def test_x_returns_extension - assert_equal "", "abc".pathmap("%x") - assert_equal ".rb", "abc.rb".pathmap("%x") - assert_equal ".rb", "abc.xyz.rb".pathmap("%x") - assert_equal "", ".depends".pathmap("%x") - assert_equal "", "dir/.depends".pathmap("%x") - end - - def test_X_returns_everything_but_extension - assert_equal "abc", "abc".pathmap("%X") - assert_equal "abc", "abc.rb".pathmap("%X") - assert_equal "abc.xyz", "abc.xyz.rb".pathmap("%X") - assert_equal "ab.xyz", "ab.xyz.rb".pathmap("%X") - assert_equal "a.xyz", "a.xyz.rb".pathmap("%X") - assert_equal "abc", "abc.rb".pathmap("%X") - assert_equal "ab", "ab.rb".pathmap("%X") - assert_equal "a", "a.rb".pathmap("%X") - assert_equal ".depends", ".depends".pathmap("%X") - assert_equal "a/dir/.depends", "a/dir/.depends".pathmap("%X") - assert_equal "/.depends", "/.depends".pathmap("%X") - end - - def test_p_returns_entire_pathname - assert_equal "abc.rb", "abc.rb".pathmap("%p") - assert_equal "this/is/a/dir/abc.rb", "this/is/a/dir/abc.rb".pathmap("%p") - assert_equal "/this/is/a/dir/abc.rb", "/this/is/a/dir/abc.rb".pathmap("%p") - end - - def test_dash_returns_empty_string - assert_equal "", "abc.rb".pathmap("%-") - assert_equal "abc.rb", "abc.rb".pathmap("%X%-%x") - end - - def test_percent_percent_returns_percent - assert_equal "a%b", "".pathmap("a%%b") - end - - def test_undefined_percent_causes_error - ex = assert_exception(ArgumentError) { - "dir/abc.rb".pathmap("%z") - } - end - - def test_pattern_returns_substitutions - assert_equal "bin/org/osb", - "src/org/osb/Xyz.java".pathmap("%{src,bin}d") - end - - def test_pattern_can_use_backreferences - assert_equal "dir/hi/is", "dir/this/is".pathmap("%{t(hi)s,\\1}p") - end - - def test_pattern_with_star_replacement_string_uses_block - assert_equal "src/ORG/osb", - "src/org/osb/Xyz.java".pathmap("%{/org,*}d") { |d| d.upcase } - assert_equal "Xyz.java", - "src/org/osb/Xyz.java".pathmap("%{.*,*}f") { |f| f.capitalize } - end - - def test_pattern_with_no_replacement_nor_block_substitutes_empty_string - assert_equal "bc.rb", "abc.rb".pathmap("%{a}f") - end - - def test_pattern_works_with_certain_valid_operators - assert_equal "dir/xbc.rb", "dir/abc.rb".pathmap("%{a,x}p") - assert_equal "d1r", "dir/abc.rb".pathmap("%{i,1}d") - assert_equal "xbc.rb", "dir/abc.rb".pathmap("%{a,x}f") - assert_equal ".Rb", "dir/abc.rb".pathmap("%{r,R}x") - assert_equal "xbc", "dir/abc.rb".pathmap("%{a,x}n") - end - - def test_multiple_patterns - assert_equal "this/is/b/directory/abc.rb", - "this/is/a/dir/abc.rb".pathmap("%{a,b;dir,\\0ectory}p") - end - - def test_partial_directory_selection_works_with_patterns - assert_equal "this/is/a/long", - "this/is/a/really/long/path/ok.rb".pathmap("%{/really/,/}5d") - end - - def test_pattern_with_invalid_operator - ex = assert_exception(ArgumentError) do - "abc.xyz".pathmap("%{src,bin}z") - end - assert_match(/unknown.*pathmap.*spec.*z/i, ex.message) - end - - def test_works_with_windows_separators - if File::ALT_SEPARATOR - assert_equal "abc", 'dir\abc.rb'.pathmap("%n") - assert_equal 'this\is\a\dir', - 'this\is\a\dir\abc.rb'.pathmap("%d") - end - end - - def test_complex_patterns - sep = "".pathmap("%s") - assert_equal "dir/abc.rb", "dir/abc.rb".pathmap("%d/%n%x") - assert_equal "./abc.rb", "abc.rb".pathmap("%d/%n%x") - assert_equal "Your file extension is '.rb'", - "dir/abc.rb".pathmap("Your file extension is '%x'") - assert_equal "bin/org/onstepback/proj/A.class", - "src/org/onstepback/proj/A.java".pathmap("%{src,bin}d/%n.class") - assert_equal "src_work/bin/org/onstepback/proj/A.class", - "src_work/src/org/onstepback/proj/A.java".pathmap('%{\bsrc\b,bin}X.class') - assert_equal ".depends.bak", ".depends".pathmap("%X.bak") - assert_equal "d#{sep}a/b/c#{sep}file.txt", "a/b/c/d/file.txt".pathmap("%-1d%s%3d%s%f") - end -end - -class TestPathMapExplode < Test::Unit::TestCase - def setup - String.class_eval { public :pathmap_explode } - end - - def teardown - String.class_eval { protected :pathmap_explode } - end - - def test_explode - assert_equal ['a'], 'a'.pathmap_explode - assert_equal ['a', 'b'], 'a/b'.pathmap_explode - assert_equal ['a', 'b', 'c'], 'a/b/c'.pathmap_explode - assert_equal ['/', 'a'], '/a'.pathmap_explode - assert_equal ['/', 'a', 'b'], '/a/b'.pathmap_explode - assert_equal ['/', 'a', 'b', 'c'], '/a/b/c'.pathmap_explode - if File::ALT_SEPARATOR - assert_equal ['c:.', 'a'], 'c:a'.pathmap_explode - assert_equal ['c:.', 'a', 'b'], 'c:a/b'.pathmap_explode - assert_equal ['c:.', 'a', 'b', 'c'], 'c:a/b/c'.pathmap_explode - assert_equal ['c:/', 'a'], 'c:/a'.pathmap_explode - assert_equal ['c:/', 'a', 'b'], 'c:/a/b'.pathmap_explode - assert_equal ['c:/', 'a', 'b', 'c'], 'c:/a/b/c'.pathmap_explode - end - end -end - -class TestPathMapPartial < Test::Unit::TestCase - def test_pathmap_partial - @path = "1/2/file" - def @path.call(n) - pathmap_partial(n) - end - assert_equal("1", @path.call(1)) - assert_equal("1/2", @path.call(2)) - assert_equal("1/2", @path.call(3)) - assert_equal(".", @path.call(0)) - assert_equal("2", @path.call(-1)) - assert_equal("1/2", @path.call(-2)) - assert_equal("1/2", @path.call(-3)) - end -end - -class TestFileListPathMap < Test::Unit::TestCase - def test_file_list_supports_pathmap - assert_equal ['a', 'b'], FileList['dir/a.rb', 'dir/b.rb'].pathmap("%n") - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_pseudo_status.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_pseudo_status.rb deleted file mode 100644 index b7d1dcc2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_pseudo_status.rb +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' - -require 'test/capture_stdout' -require 'test/rake_test_setup' - -class PseudoStatusTest < Test::Unit::TestCase - def test_with_zero_exit_status - s = Rake::PseudoStatus.new - assert_equal 0, s.exitstatus - assert_equal 0, s.to_i - assert_equal 0, s >> 8 - assert ! s.stopped? - assert s.exited? - end - def test_with_99_exit_status - s = Rake::PseudoStatus.new(99) - assert_equal 99, s.exitstatus - assert_equal 25344, s.to_i - assert_equal 99, s >> 8 - assert ! s.stopped? - assert s.exited? - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_rake.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_rake.rb deleted file mode 100644 index c9959657..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_rake.rb +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' - -class TestRake < Test::Unit::TestCase - def test_each_dir_parent - assert_equal ['a'], alldirs('a') - assert_equal ['a/b', 'a'], alldirs('a/b') - assert_equal ['/a/b', '/a', '/'], alldirs('/a/b') - if File.dirname("c:/foo") == "c:" - # Under Unix - assert_equal ['c:/a/b', 'c:/a', 'c:'], alldirs('c:/a/b') - assert_equal ['c:a/b', 'c:a'], alldirs('c:a/b') - else - # Under Windows - assert_equal ['c:/a/b', 'c:/a', 'c:/'], alldirs('c:/a/b') - assert_equal ['c:a/b', 'c:a'], alldirs('c:a/b') - end - end - - def alldirs(fn) - result = [] - Rake.each_dir_parent(fn) { |d| result << d } - result - end - - def test_can_override_application - old_app = Rake.application - fake_app = Object.new - Rake.application = fake_app - assert_equal fake_app, Rake.application - ensure - Rake.application = old_app - end - - def test_original_dir_reports_current_dir - assert_equal Dir.pwd, Rake.original_dir - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_rdoc_task.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_rdoc_task.rb deleted file mode 100644 index d1a55ed8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_rdoc_task.rb +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake/rdoctask' -require 'test/rake_test_setup' - -class TestRDocTask < Test::Unit::TestCase - include Rake - include TestMethods - - def setup - Task.clear - end - - def test_tasks_creation - Rake::RDocTask.new - assert Task[:rdoc] - assert Task[:clobber_rdoc] - assert Task[:rerdoc] - end - - def test_tasks_creation_with_custom_name_symbol - rd = Rake::RDocTask.new(:rdoc_dev) - assert Task[:rdoc_dev] - assert Task[:clobber_rdoc_dev] - assert Task[:rerdoc_dev] - assert_equal :rdoc_dev, rd.name - end - - def test_tasks_creation_with_custom_name_string - rd = Rake::RDocTask.new("rdoc_dev") - assert Task[:rdoc_dev] - assert Task[:clobber_rdoc_dev] - assert Task[:rerdoc_dev] - assert_equal "rdoc_dev", rd.name - end - - def test_tasks_creation_with_custom_name_hash - options = { :rdoc => "rdoc", :clobber_rdoc => "rdoc:clean", :rerdoc => "rdoc:force" } - rd = Rake::RDocTask.new(options) - assert Task[:"rdoc"] - assert Task[:"rdoc:clean"] - assert Task[:"rdoc:force"] - assert_raises(RuntimeError) { Task[:clobber_rdoc] } - assert_equal options, rd.name - end - - def test_tasks_creation_with_custom_name_hash_will_use_default_if_an_option_isnt_given - rd = Rake::RDocTask.new(:clobber_rdoc => "rdoc:clean") - assert Task[:rdoc] - assert Task[:"rdoc:clean"] - assert Task[:rerdoc] - end - - def test_tasks_creation_with_custom_name_hash_raises_exception_if_invalid_option_given - assert_raises(ArgumentError) do - Rake::RDocTask.new(:foo => "bar") - end - - begin - Rake::RDocTask.new(:foo => "bar") - rescue ArgumentError => e - assert_match(/foo/, e.message) - end - end - - def test_inline_source_is_enabled_by_default - rd = Rake::RDocTask.new - assert rd.option_list.include?('--inline-source') - end - - def test_inline_source_option_is_only_appended_if_option_not_already_given - rd = Rake::RDocTask.new - rd.options << '--inline-source' - assert_equal 1, rd.option_list.grep('--inline-source').size - - rd = Rake::RDocTask.new - rd.options << '-S' - assert_equal 1, rd.option_list.grep('-S').size - assert_equal 0, rd.option_list.grep('--inline-source').size - end - - def test_inline_source_option_can_be_disabled - rd = Rake::RDocTask.new - rd.inline_source = false - assert !rd.option_list.include?('--inline-source') - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_require.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_require.rb deleted file mode 100644 index 6c2158f8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_require.rb +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' -require 'test/rake_test_setup' - -# ==================================================================== -class TestRequire < Test::Unit::TestCase - include TestMethods - - def test_can_load_rake_library - app = Rake::Application.new - assert app.instance_eval { - rake_require("test2", ['test/data/rakelib'], []) - } - end - - def test_wont_reload_rake_library - app = Rake::Application.new - assert ! app.instance_eval { - rake_require("test2", ['test/data/rakelib'], ['test2']) - } - end - - def test_throws_error_if_library_not_found - app = Rake::Application.new - ex = assert_exception(LoadError) { - assert app.instance_eval { - rake_require("testx", ['test/data/rakelib'], []) - } - } - assert_match(/x/, ex.message) - end -end - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_rules.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_rules.rb deleted file mode 100644 index d2210aa9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_rules.rb +++ /dev/null @@ -1,349 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'fileutils' -require 'rake' -require 'test/filecreation' -require 'test/rake_test_setup' - -###################################################################### -class TestRules < Test::Unit::TestCase - include Rake - include FileCreation - include TestMethods - - SRCFILE = "testdata/abc.c" - SRCFILE2 = "testdata/xyz.c" - FTNFILE = "testdata/abc.f" - OBJFILE = "testdata/abc.o" - FOOFILE = "testdata/foo" - DOTFOOFILE = "testdata/.foo" - - def setup - Task.clear - @runs = [] - end - - def teardown - FileList['testdata/*'].uniq.each do |f| rm_r(f, :verbose=>false) end - end - - def test_multiple_rules1 - create_file(FTNFILE) - delete_file(SRCFILE) - delete_file(OBJFILE) - rule(/\.o$/ => ['.c']) do @runs << :C end - rule(/\.o$/ => ['.f']) do @runs << :F end - t = Task[OBJFILE] - t.invoke - Task[OBJFILE].invoke - assert_equal [:F], @runs - end - - def test_multiple_rules2 - create_file(FTNFILE) - delete_file(SRCFILE) - delete_file(OBJFILE) - rule(/\.o$/ => ['.f']) do @runs << :F end - rule(/\.o$/ => ['.c']) do @runs << :C end - Task[OBJFILE].invoke - assert_equal [:F], @runs - end - - def test_create_with_source - create_file(SRCFILE) - rule(/\.o$/ => ['.c']) do |t| - @runs << t.name - assert_equal OBJFILE, t.name - assert_equal SRCFILE, t.source - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_single_dependent - create_file(SRCFILE) - rule(/\.o$/ => '.c') do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_rule_can_be_created_by_string - create_file(SRCFILE) - rule '.o' => ['.c'] do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_rule_prereqs_can_be_created_by_string - create_file(SRCFILE) - rule '.o' => '.c' do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_plain_strings_as_dependents_refer_to_files - create_file(SRCFILE) - rule '.o' => SRCFILE do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_file_names_beginning_with_dot_can_be_tricked_into_refering_to_file - verbose(false) do - chdir("testdata") do - create_file('.foo') - rule '.o' => "./.foo" do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - end - end - - def test_file_names_beginning_with_dot_can_be_wrapped_in_lambda - verbose(false) do - chdir("testdata") do - create_file(".foo") - rule '.o' => lambda{".foo"} do |t| - @runs << "#{t.name} - #{t.source}" - end - Task[OBJFILE].invoke - assert_equal ["#{OBJFILE} - .foo"], @runs - end - end - end - - def test_file_names_containing_percent_can_be_wrapped_in_lambda - verbose(false) do - chdir("testdata") do - create_file("foo%x") - rule '.o' => lambda{"foo%x"} do |t| - @runs << "#{t.name} - #{t.source}" - end - Task[OBJFILE].invoke - assert_equal ["#{OBJFILE} - foo%x"], @runs - end - end - end - - def test_non_extension_rule_name_refers_to_file - verbose(false) do - chdir("testdata") do - create_file("abc.c") - rule "abc" => '.c' do |t| - @runs << t.name - end - Task["abc"].invoke - assert_equal ["abc"], @runs - end - end - end - - def test_pathmap_automatically_applies_to_name - verbose(false) do - chdir("testdata") do - create_file("zzabc.c") - rule ".o" => 'zz%{x,a}n.c' do |t| - @runs << "#{t.name} - #{t.source}" - end - Task["xbc.o"].invoke - assert_equal ["xbc.o - zzabc.c"], @runs - end - end - end - - def test_plain_strings_are_just_filenames - verbose(false) do - chdir("testdata") do - create_file("plainname") - rule ".o" => 'plainname' do |t| - @runs << "#{t.name} - #{t.source}" - end - Task["xbc.o"].invoke - assert_equal ["xbc.o - plainname"], @runs - end - end - end - - def test_rule_runs_when_explicit_task_has_no_actions - create_file(SRCFILE) - create_file(SRCFILE2) - delete_file(OBJFILE) - rule '.o' => '.c' do |t| - @runs << t.source - end - file OBJFILE => [SRCFILE2] - Task[OBJFILE].invoke - assert_equal [SRCFILE], @runs - end - - def test_close_matches_on_name_do_not_trigger_rule - create_file("testdata/x.c") - rule '.o' => ['.c'] do |t| - @runs << t.name - end - assert_exception(RuntimeError) { Task['testdata/x.obj'].invoke } - assert_exception(RuntimeError) { Task['testdata/x.xyo'].invoke } - end - - def test_rule_rebuilds_obj_when_source_is_newer - create_timed_files(OBJFILE, SRCFILE) - rule(/\.o$/ => ['.c']) do - @runs << :RULE - end - Task[OBJFILE].invoke - assert_equal [:RULE], @runs - end - - def test_rule_with_two_sources_runs_if_both_sources_are_present - create_timed_files(OBJFILE, SRCFILE, SRCFILE2) - rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do - @runs << :RULE - end - Task[OBJFILE].invoke - assert_equal [:RULE], @runs - end - - def test_rule_with_two_sources_but_one_missing_does_not_run - create_timed_files(OBJFILE, SRCFILE) - delete_file(SRCFILE2) - rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do - @runs << :RULE - end - Task[OBJFILE].invoke - assert_equal [], @runs - end - - def test_rule_with_two_sources_builds_both_sources - task 'x.aa' - task 'x.bb' - rule '.a' => '.aa' do - @runs << "A" - end - rule '.b' => '.bb' do - @runs << "B" - end - rule ".c" => ['.a', '.b'] do - @runs << "C" - end - Task["x.c"].invoke - assert_equal ["A", "B", "C"], @runs.sort - end - - def test_second_rule_runs_when_first_rule_doesnt - create_timed_files(OBJFILE, SRCFILE) - delete_file(SRCFILE2) - rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do - @runs << :RULE1 - end - rule OBJFILE => [lambda{SRCFILE}] do - @runs << :RULE2 - end - Task[OBJFILE].invoke - assert_equal [:RULE2], @runs - end - - def test_second_rule_doest_run_if_first_triggers - create_timed_files(OBJFILE, SRCFILE, SRCFILE2) - rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do - @runs << :RULE1 - end - rule OBJFILE => [lambda{SRCFILE}] do - @runs << :RULE2 - end - Task[OBJFILE].invoke - assert_equal [:RULE1], @runs - end - - def test_second_rule_doest_run_if_first_triggers_with_reversed_rules - create_timed_files(OBJFILE, SRCFILE, SRCFILE2) - rule OBJFILE => [lambda{SRCFILE}] do - @runs << :RULE1 - end - rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do - @runs << :RULE2 - end - Task[OBJFILE].invoke - assert_equal [:RULE1], @runs - end - - def test_rule_with_proc_dependent_will_trigger - ran = false - mkdir_p("testdata/src/jw") - create_file("testdata/src/jw/X.java") - rule %r(classes/.*\.class) => [ - proc { |fn| fn.pathmap("%{classes,testdata/src}d/%n.java") } - ] do |task| - assert_equal task.name, 'classes/jw/X.class' - assert_equal task.source, 'testdata/src/jw/X.java' - @runs << :RULE - end - Task['classes/jw/X.class'].invoke - assert_equal [:RULE], @runs - ensure - rm_r("testdata/src", :verbose=>false) rescue nil - end - - def test_proc_returning_lists_are_flattened_into_prereqs - ran = false - mkdir_p("testdata/flatten") - create_file("testdata/flatten/a.txt") - task 'testdata/flatten/b.data' do |t| - ran = true - touch t.name, :verbose => false - end - rule '.html' => - proc { |fn| - [ - fn.ext("txt"), - "testdata/flatten/b.data" - ] - } do |task| - end - Task['testdata/flatten/a.html'].invoke - assert ran, "Should have triggered flattened dependency" - ensure - rm_r("testdata/flatten", :verbose=>false) rescue nil - end - - def test_recursive_rules_will_work_as_long_as_they_terminate - actions = [] - create_file("testdata/abc.xml") - rule '.y' => '.xml' do actions << 'y' end - rule '.c' => '.y' do actions << 'c'end - rule '.o' => '.c' do actions << 'o'end - rule '.exe' => '.o' do actions << 'exe'end - Task["testdata/abc.exe"].invoke - assert_equal ['y', 'c', 'o', 'exe'], actions - end - - def test_recursive_rules_that_dont_terminate_will_overflow - create_file("testdata/a.a") - prev = 'a' - ('b'..'z').each do |letter| - rule ".#{letter}" => ".#{prev}" do |t| puts "#{t.name}" end - prev = letter - end - ex = assert_exception(Rake::RuleRecursionOverflowError) { - Task["testdata/a.z"].invoke - } - assert_match(/a\.z => testdata\/a.y/, ex.message) - end - - def test_rules_with_bad_dependents_will_fail - rule "a" => [ 1 ] do |t| puts t.name end - assert_exception(RuntimeError) do Task['a'].invoke end - end - -end - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_task_arguments.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_task_arguments.rb deleted file mode 100644 index 520a16fc..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_task_arguments.rb +++ /dev/null @@ -1,89 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' - -###################################################################### -class TestTaskArguments < Test::Unit::TestCase - def teardown - ENV.delete('rev') - ENV.delete('VER') - end - - def test_empty_arg_list_is_empty - ta = Rake::TaskArguments.new([], []) - assert_equal({}, ta.to_hash) - end - - def test_multiple_values_in_args - ta = Rake::TaskArguments.new([:a, :b, :c], [:one, :two, :three]) - assert_equal({:a => :one, :b => :two, :c => :three}, ta.to_hash) - end - - def test_to_s - ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2, 3]) - assert_equal ta.to_hash.inspect, ta.to_s - assert_equal ta.to_hash.inspect, ta.inspect - end - - def test_enumerable_behavior - ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2 ,3]) - assert_equal [10, 20, 30], ta.collect { |k,v| v * 10 }.sort - end - - def test_named_args - ta = Rake::TaskArguments.new(["aa", "bb"], [1, 2]) - assert_equal 1, ta.aa - assert_equal 1, ta[:aa] - assert_equal 1, ta["aa"] - assert_equal 2, ta.bb - assert_nil ta.cc - end - - def test_args_knows_its_names - ta = Rake::TaskArguments.new(["aa", "bb"], [1, 2]) - assert_equal ["aa", "bb"], ta.names - end - - def test_extra_names_are_nil - ta = Rake::TaskArguments.new(["aa", "bb", "cc"], [1, 2]) - assert_nil ta.cc - end - - def test_args_can_reference_env_values - ta = Rake::TaskArguments.new(["aa"], [1]) - ENV['rev'] = "1.2" - ENV['VER'] = "2.3" - assert_equal "1.2", ta.rev - assert_equal "2.3", ta.ver - end - - def test_creating_new_argument_scopes - parent = Rake::TaskArguments.new(['p'], [1]) - child = parent.new_scope(['c', 'p']) - assert_equal({:p=>1}, child.to_hash) - assert_equal 1, child.p - assert_equal 1, child["p"] - assert_equal 1, child[:p] - assert_nil child.c - end - - def test_child_hides_parent_arg_names - parent = Rake::TaskArguments.new(['aa'], [1]) - child = Rake::TaskArguments.new(['aa'], [2], parent) - assert_equal 2, child.aa - end - - def test_default_arguments_values_can_be_merged - ta = Rake::TaskArguments.new(["aa", "bb"], [nil, "original_val"]) - ta.with_defaults({ :aa => 'default_val' }) - assert_equal 'default_val', ta[:aa] - assert_equal 'original_val', ta[:bb] - end - - def test_default_arguements_that_dont_match_names_are_ignored - ta = Rake::TaskArguments.new(["aa", "bb"], [nil, "original_val"]) - ta.with_defaults({ "cc" => "default_val" }) - assert_nil ta[:cc] - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_task_manager.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_task_manager.rb deleted file mode 100644 index 2b373162..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_task_manager.rb +++ /dev/null @@ -1,173 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' -require 'test/rake_test_setup' - -class TaskManager - include Rake::TaskManager -end - -class TestTaskManager < Test::Unit::TestCase - include TestMethods - - def setup - @tm = TaskManager.new - end - - def test_create_task_manager - assert_not_nil @tm - assert_equal [], @tm.tasks - end - - def test_define_task - t = @tm.define_task(Rake::Task, :t) - assert_equal "t", t.name - assert_equal @tm, t.application - end - - def test_name_lookup - t = @tm.define_task(Rake::Task, :t) - assert_equal t, @tm[:t] - end - - def test_namespace_task_create - @tm.in_namespace("x") do - t = @tm.define_task(Rake::Task, :t) - assert_equal "x:t", t.name - end - assert_equal ["x:t"], @tm.tasks.collect { |t| t.name } - end - - def test_anonymous_namespace - anon_ns = @tm.in_namespace(nil) do - t = @tm.define_task(Rake::Task, :t) - assert_equal "_anon_1:t", t.name - end - task = anon_ns[:t] - assert_equal "_anon_1:t", task.name - end - - def test_create_filetask_in_namespace - @tm.in_namespace("x") do - t = @tm.define_task(Rake::FileTask, "fn") - assert_equal "fn", t.name - end - assert_equal ["fn"], @tm.tasks.collect { |t| t.name } - end - - def test_namespace_yields_same_namespace_as_returned - yielded_namespace = nil - returned_namespace = @tm.in_namespace("x") do |ns| - yielded_namespace = ns - end - assert_equal returned_namespace, yielded_namespace - end - - def test_name_lookup_with_implicit_file_tasks - t = @tm["README"] - assert_equal "README", t.name - assert Rake::FileTask === t - end - - def test_name_lookup_with_nonexistent_task - assert_exception(RuntimeError) { - t = @tm["DOES NOT EXIST"] - } - end - - def test_name_lookup_in_multiple_scopes - aa = nil - bb = nil - xx = @tm.define_task(Rake::Task, :xx) - top_z = @tm.define_task(Rake::Task, :z) - @tm.in_namespace("a") do - aa = @tm.define_task(Rake::Task, :aa) - mid_z = @tm.define_task(Rake::Task, :z) - @tm.in_namespace("b") do - bb = @tm.define_task(Rake::Task, :bb) - bot_z = @tm.define_task(Rake::Task, :z) - - assert_equal ["a", "b"], @tm.current_scope - - assert_equal bb, @tm["a:b:bb"] - assert_equal aa, @tm["a:aa"] - assert_equal xx, @tm["xx"] - assert_equal bot_z, @tm["z"] - assert_equal mid_z, @tm["^z"] - assert_equal top_z, @tm["^^z"] - assert_equal top_z, @tm["rake:z"] - end - - assert_equal ["a"], @tm.current_scope - - assert_equal bb, @tm["a:b:bb"] - assert_equal aa, @tm["a:aa"] - assert_equal xx, @tm["xx"] - assert_equal bb, @tm["b:bb"] - assert_equal aa, @tm["aa"] - assert_equal mid_z, @tm["z"] - assert_equal top_z, @tm["^z"] - assert_equal top_z, @tm["rake:z"] - end - - assert_equal [], @tm.current_scope - - assert_equal [], xx.scope - assert_equal ['a'], aa.scope - assert_equal ['a', 'b'], bb.scope - end - - def test_lookup_with_explicit_scopes - t1, t2, t3, s = (0...4).collect { nil } - t1 = @tm.define_task(Rake::Task, :t) - @tm.in_namespace("a") do - t2 = @tm.define_task(Rake::Task, :t) - s = @tm.define_task(Rake::Task, :s) - @tm.in_namespace("b") do - t3 = @tm.define_task(Rake::Task, :t) - end - end - assert_equal t1, @tm[:t, []] - assert_equal t2, @tm[:t, ["a"]] - assert_equal t3, @tm[:t, ["a", "b"]] - assert_equal s, @tm[:s, ["a", "b"]] - assert_equal s, @tm[:s, ["a"]] - end - - def test_correctly_scoped_prerequisites_are_invoked - values = [] - @tm = Rake::Application.new - @tm.define_task(Rake::Task, :z) do values << "top z" end - @tm.in_namespace("a") do - @tm.define_task(Rake::Task, :z) do values << "next z" end - @tm.define_task(Rake::Task, :x => :z) - end - - @tm["a:x"].invoke - assert_equal ["next z"], values - end - -end - -class TestTaskManagerArgumentResolution < Test::Unit::TestCase - def test_good_arg_patterns - assert_equal [:t, [], []], task(:t) - assert_equal [:t, [], [:x]], task(:t => :x) - assert_equal [:t, [], [:x, :y]], task(:t => [:x, :y]) - - assert_equal [:t, [:a, :b], []], task(:t, :a, :b) - assert_equal [:t, [], [:x]], task(:t, :needs => :x) - assert_equal [:t, [:a, :b], [:x]], task(:t, :a, :b, :needs => :x) - assert_equal [:t, [:a, :b], [:x, :y]], task(:t, :a, :b, :needs => [:x, :y]) - - assert_equal [:t, [:a, :b], []], task(:t, [:a, :b]) - assert_equal [:t, [:a, :b], [:x]], task(:t, [:a, :b] => :x) - assert_equal [:t, [:a, :b], [:x, :y]], task(:t, [:a, :b] => [:x, :y]) - end - - def task(*args) - tm = TaskManager.new - tm.resolve_args(args) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_tasklib.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_tasklib.rb deleted file mode 100644 index c61fa1c2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_tasklib.rb +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake/tasklib' - - -class TestTaskLib < Test::Unit::TestCase - def test_paste - tl = Rake::TaskLib.new - assert_equal :ab, tl.paste(:a, :b) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_tasks.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_tasks.rb deleted file mode 100644 index 8b424c5e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_tasks.rb +++ /dev/null @@ -1,374 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'fileutils' -require 'rake' -require 'test/filecreation' -require 'test/capture_stdout' -require 'test/rake_test_setup' - -###################################################################### -class TestTask < Test::Unit::TestCase - include CaptureStdout - include Rake - include TestMethods - - def setup - Task.clear - end - - def test_create - arg = nil - t = task(:name) { |task| arg = task; 1234 } - assert_equal "name", t.name - assert_equal [], t.prerequisites - assert t.needed? - t.execute(0) - assert_equal t, arg - assert_nil t.source - assert_equal [], t.sources - end - - def test_inspect - t = task(:foo, :needs => [:bar, :baz]) - assert_equal " [bar, baz]>", t.inspect - end - - def test_invoke - runlist = [] - t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } - t2 = task(:t2) { |t| runlist << t.name } - t3 = task(:t3) { |t| runlist << t.name } - assert_equal ["t2", "t3"], t1.prerequisites - t1.invoke - assert_equal ["t2", "t3", "t1"], runlist - end - - def test_invoke_with_circular_dependencies - runlist = [] - t1 = task(:t1 => [:t2]) { |t| runlist << t.name; 3321 } - t2 = task(:t2 => [:t1]) { |t| runlist << t.name } - assert_equal ["t2"], t1.prerequisites - assert_equal ["t1"], t2.prerequisites - ex = assert_exception RuntimeError do - t1.invoke - end - assert_match(/circular dependency/i, ex.message) - assert_match(/t1 => t2 => t1/, ex.message) - end - - def test_dry_run_prevents_actions - Rake.application.options.dryrun = true - runlist = [] - t1 = task(:t1) { |t| runlist << t.name; 3321 } - out = capture_stdout { t1.invoke } - assert_match(/execute .*t1/i, out) - assert_match(/dry run/i, out) - assert_no_match(/invoke/i, out) - assert_equal [], runlist - ensure - Rake.application.options.dryrun = false - end - - def test_tasks_can_be_traced - Rake.application.options.trace = true - t1 = task(:t1) - out = capture_stdout { - t1.invoke - } - assert_match(/invoke t1/i, out) - assert_match(/execute t1/i, out) - ensure - Rake.application.options.trace = false - end - - def test_no_double_invoke - runlist = [] - t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } - t2 = task(:t2 => [:t3]) { |t| runlist << t.name } - t3 = task(:t3) { |t| runlist << t.name } - t1.invoke - assert_equal ["t3", "t2", "t1"], runlist - end - - def test_can_double_invoke_with_reenable - runlist = [] - t1 = task(:t1) { |t| runlist << t.name } - t1.invoke - t1.reenable - t1.invoke - assert_equal ["t1", "t1"], runlist - end - - def test_clear - t = task("t" => "a") { } - t.clear - assert t.prerequisites.empty?, "prerequisites should be empty" - assert t.actions.empty?, "actions should be empty" - end - - def test_clear_prerequisites - t = task("t" => ["a", "b"]) - assert_equal ['a', 'b'], t.prerequisites - t.clear_prerequisites - assert_equal [], t.prerequisites - end - - def test_clear_actions - t = task("t") { } - t.clear_actions - assert t.actions.empty?, "actions should be empty" - end - - def test_find - task :tfind - assert_equal "tfind", Task[:tfind].name - ex = assert_exception(RuntimeError) { Task[:leaves] } - assert_equal "Don't know how to build task 'leaves'", ex.message - end - - def test_defined - assert ! Task.task_defined?(:a) - task :a - assert Task.task_defined?(:a) - end - - def test_multi_invocations - runs = [] - p = proc do |t| runs << t.name end - task({:t1=>[:t2,:t3]}, &p) - task({:t2=>[:t3]}, &p) - task(:t3, &p) - Task[:t1].invoke - assert_equal ["t1", "t2", "t3"], runs.sort - end - - def test_task_list - task :t2 - task :t1 => [:t2] - assert_equal ["t1", "t2"], Task.tasks.collect {|t| t.name} - end - - def test_task_gives_name_on_to_s - task :abc - assert_equal "abc", Task[:abc].to_s - end - - def test_symbols_can_be_prerequisites - task :a => :b - assert_equal ["b"], Task[:a].prerequisites - end - - def test_strings_can_be_prerequisites - task :a => "b" - assert_equal ["b"], Task[:a].prerequisites - end - - def test_arrays_can_be_prerequisites - task :a => ["b", "c"] - assert_equal ["b", "c"], Task[:a].prerequisites - end - - def test_filelists_can_be_prerequisites - task :a => FileList.new.include("b", "c") - assert_equal ["b", "c"], Task[:a].prerequisites - end - - def test_investigation_output - t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } - task(:t2) - task(:t3) - out = t1.investigation - assert_match(/class:\s*Rake::Task/, out) - assert_match(/needed:\s*true/, out) - assert_match(/pre-requisites:\s*--t[23]/, out) - end - - - def test_extended_comments - desc %{ - This is a comment. - - And this is the extended comment. - name -- Name of task to execute. - rev -- Software revision to use. - } - t = task(:t, :name, :rev) - assert_equal "[name,rev]", t.arg_description - assert_equal "This is a comment.", t.comment - assert_match(/^\s*name -- Name/, t.full_comment) - assert_match(/^\s*rev -- Software/, t.full_comment) - assert_match(/\A\s*This is a comment\.$/, t.full_comment) - end - - def test_multiple_comments - desc "line one" - t = task(:t) - desc "line two" - task(:t) - assert_equal "line one / line two", t.comment - end - - def test_settable_comments - t = task(:t) - t.comment = "HI" - assert_equal "HI", t.comment - end -end - -###################################################################### -class TestTaskWithArguments < Test::Unit::TestCase - include CaptureStdout - include Rake - include TestMethods - - def setup - Task.clear - end - - def test_no_args_given - t = task :t - assert_equal [], t.arg_names - end - - def test_args_given - t = task :t, :a, :b - assert_equal [:a, :b], t.arg_names - end - - def test_name_and_needs - t = task(:t => [:pre]) - assert_equal "t", t.name - assert_equal [], t.arg_names - assert_equal ["pre"], t.prerequisites - end - - def test_name_and_explicit_needs - t = task(:t, :needs => [:pre]) - assert_equal "t", t.name - assert_equal [], t.arg_names - assert_equal ["pre"], t.prerequisites - end - - def test_name_args_and_explicit_needs - t = task(:t, :x, :y, :needs => [:pre]) - assert_equal "t", t.name - assert_equal [:x, :y], t.arg_names - assert_equal ["pre"], t.prerequisites - end - - def test_illegal_keys_in_task_name_hash - assert_exception RuntimeError do - t = task(:t, :x, :y => 1, :needs => [:pre]) - end - end - - def test_arg_list_is_empty_if_no_args_given - t = task(:t) { |tt, args| assert_equal({}, args.to_hash) } - t.invoke(1, 2, 3) - end - - def test_tasks_can_access_arguments_as_hash - t = task :t, :a, :b, :c do |tt, args| - assert_equal({:a => 1, :b => 2, :c => 3}, args.to_hash) - assert_equal 1, args[:a] - assert_equal 2, args[:b] - assert_equal 3, args[:c] - assert_equal 1, args.a - assert_equal 2, args.b - assert_equal 3, args.c - end - t.invoke(1, 2, 3) - end - - def test_actions_of_various_arity_are_ok_with_args - notes = [] - t = task(:t, :x) do - notes << :a - end - t.enhance do | | - notes << :b - end - t.enhance do |task| - notes << :c - assert_kind_of Task, task - end - t.enhance do |t2, args| - notes << :d - assert_equal t, t2 - assert_equal({:x => 1}, args.to_hash) - end - assert_nothing_raised do t.invoke(1) end - assert_equal [:a, :b, :c, :d], notes - end - - def test_arguments_are_passed_to_block - t = task(:t, :a, :b) { |tt, args| - assert_equal( { :a => 1, :b => 2 }, args.to_hash ) - } - t.invoke(1, 2) - end - - def test_extra_parameters_are_ignored - t = task(:t, :a) { |tt, args| - assert_equal 1, args.a - assert_nil args.b - } - t.invoke(1, 2) - end - - def test_arguments_are_passed_to_all_blocks - counter = 0 - t = task :t, :a - task :t do |tt, args| - assert_equal 1, args.a - counter += 1 - end - task :t do |tt, args| - assert_equal 1, args.a - counter += 1 - end - t.invoke(1) - assert_equal 2, counter - end - - def test_block_with_no_parameters_is_ok - t = task(:t) { } - t.invoke(1, 2) - end - - def test_name_with_args - desc "T" - t = task(:tt, :a, :b) - assert_equal "tt", t.name - assert_equal "T", t.comment - assert_equal "[a,b]", t.arg_description - assert_equal "tt[a,b]", t.name_with_args - assert_equal [:a, :b],t.arg_names - end - - def test_named_args_are_passed_to_prereqs - value = nil - pre = task(:pre, :rev) { |t, args| value = args.rev } - t = task(:t, :name, :rev, :needs => [:pre]) - t.invoke("bill", "1.2") - assert_equal "1.2", value - end - - def test_args_not_passed_if_no_prereq_names - pre = task(:pre) { |t, args| - assert_equal({}, args.to_hash) - assert_equal "bill", args.name - } - t = task(:t, :name, :rev, :needs => [:pre]) - t.invoke("bill", "1.2") - end - - def test_args_not_passed_if_no_arg_names - pre = task(:pre, :rev) { |t, args| - assert_equal({}, args.to_hash) - } - t = task(:t, :needs => [:pre]) - t.invoke("bill", "1.2") - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_test_task.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_test_task.rb deleted file mode 100644 index a8d7d4d5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_test_task.rb +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake/testtask' - -class TestTestTask < Test::Unit::TestCase - include Rake - include TestMethods - - def setup - Task.clear - ENV.delete('TEST') - end - - def teardown - FileUtils.rm_rf("testdata") - end - - def test_no_task - assert ! Task.task_defined?(:test) - end - - def test_defaults - tt = Rake::TestTask.new do |t| end - assert_not_nil tt - assert_equal :test, tt.name - assert_equal ['lib'], tt.libs - assert_equal 'test/test*.rb', tt.pattern - assert_equal false, tt.verbose - assert Task.task_defined?(:test) - end - - def test_non_defaults - tt = Rake::TestTask.new(:example) do |t| - t.libs = ['src', 'ext'] - t.pattern = 'test/tc_*.rb' - t.verbose = true - end - assert_not_nil tt - assert_equal :example, tt.name - assert_equal ['src', 'ext'], tt.libs - assert_equal 'test/tc_*.rb', tt.pattern - assert_equal true, tt.verbose - assert Task.task_defined?(:example) - end - - def test_pattern - tt = Rake::TestTask.new do |t| - t.pattern = '*.rb' - end - assert_equal ['install.rb'], tt.file_list.to_a - end - - def test_env_test - ENV['TEST'] = 'testfile.rb' - tt = Rake::TestTask.new do |t| - t.pattern = '*' - end - assert_equal ["testfile.rb"], tt.file_list.to_a - end - - def test_test_files - tt = Rake::TestTask.new do |t| - t.test_files = FileList['a.rb', 'b.rb'] - end - assert_equal ["a.rb", 'b.rb'], tt.file_list.to_a - end - - def test_both_pattern_and_test_files - tt = Rake::TestTask.new do |t| - t.test_files = FileList['a.rb', 'b.rb'] - t.pattern = '*.rb' - end - assert_equal ['a.rb', 'b.rb', 'install.rb'], tt.file_list.to_a - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_top_level_functions.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_top_level_functions.rb deleted file mode 100644 index 19390287..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_top_level_functions.rb +++ /dev/null @@ -1,86 +0,0 @@ -#!/usr/bin/env ruby - -begin - require 'rubygems' -rescue LoadError - # got no gems -end - -require 'test/unit' -require 'flexmock/test_unit' -require 'test/capture_stdout' -require 'test/rake_test_setup' -require 'rake' - -class TestTopLevelFunctions < Test::Unit::TestCase - include CaptureStdout - include TestMethods - - def setup - super - @app = Rake.application - Rake.application = flexmock("app") - end - - def teardown - Rake.application = @app - super - end - - def test_namespace - Rake.application.should_receive(:in_namespace).with("xyz", any).once - namespace "xyz" do end - end - - def test_import - Rake.application.should_receive(:add_import).with("x").once.ordered - Rake.application.should_receive(:add_import).with("y").once.ordered - Rake.application.should_receive(:add_import).with("z").once.ordered - import('x', 'y', 'z') - end - - def test_when_writing - out = capture_stdout do - when_writing("NOTWRITING") do - puts "WRITING" - end - end - assert_equal "WRITING\n", out - end - - def test_when_not_writing - RakeFileUtils.nowrite_flag = true - out = capture_stdout do - when_writing("NOTWRITING") do - puts "WRITING" - end - end - assert_equal "DRYRUN: NOTWRITING\n", out - ensure - RakeFileUtils.nowrite_flag = false - end - - def test_missing_constants_task - Rake.application.should_receive(:const_warning).with(:Task).once - Object.const_missing(:Task) - end - - def test_missing_constants_file_task - Rake.application.should_receive(:const_warning).with(:FileTask).once - Object.const_missing(:FileTask) - end - - def test_missing_constants_file_creation_task - Rake.application.should_receive(:const_warning).with(:FileCreationTask).once - Object.const_missing(:FileCreationTask) - end - - def test_missing_constants_rake_app - Rake.application.should_receive(:const_warning).with(:RakeApp).once - Object.const_missing(:RakeApp) - end - - def test_missing_other_constant - assert_exception(NameError) do Object.const_missing(:Xyz) end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_win32.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_win32.rb deleted file mode 100644 index f68a492f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/rake-0.8.7/test/test_win32.rb +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'test/rake_test_setup' -require 'test/in_environment' - -require 'rake' - -class TestWin32 < Test::Unit::TestCase - include InEnvironment - include TestMethods - - Win32 = Rake::Win32 - - def test_win32_system_dir_uses_home_if_defined - in_environment('RAKE_SYSTEM' => nil, 'HOME' => 'C:\\HP') do - assert_equal "C:/HP/Rake", Win32.win32_system_dir - end - end - - def test_win32_system_dir_uses_homedrive_homepath_when_no_home_defined - in_environment( - 'RAKE_SYSTEM' => nil, - 'HOME' => nil, - 'HOMEDRIVE' => "C:", - 'HOMEPATH' => "\\HP" - ) do - assert_equal "C:/HP/Rake", Win32.win32_system_dir - end - end - - def test_win32_system_dir_uses_appdata_when_no_home_or_home_combo - in_environment( - 'RAKE_SYSTEM' => nil, - 'HOME' => nil, - 'HOMEDRIVE' => nil, - 'HOMEPATH' => nil, - 'APPDATA' => "C:\\Documents and Settings\\HP\\Application Data" - ) do - assert_equal "C:/Documents and Settings/HP/Application Data/Rake", Win32.win32_system_dir - end - end - - def test_win32_system_dir_fallback_to_userprofile_otherwise - in_environment( - 'RAKE_SYSTEM' => nil, - 'HOME' => nil, - 'HOMEDRIVE' => nil, - 'HOMEPATH' => nil, - 'APPDATA' => nil, - 'USERPROFILE' => "C:\\Documents and Settings\\HP" - ) do - assert_equal "C:/Documents and Settings/HP/Rake", Win32.win32_system_dir - end - end - - def test_win32_system_dir_nil_of_no_env_vars - in_environment( - 'RAKE_SYSTEM' => nil, - 'HOME' => nil, - 'HOMEDRIVE' => nil, - "HOMEPATH" => nil, - 'APPDATA' => nil, - "USERPROFILE" => nil - ) do - assert_exception(Rake::Win32::Win32HomeError) do - Win32.win32_system_dir - end - end - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/COPYING b/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/COPYING deleted file mode 100644 index 860df538..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/COPYING +++ /dev/null @@ -1,18 +0,0 @@ -Copyright (c) 2009 Ryan Tomayko - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/README b/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/README deleted file mode 100644 index 214c268a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/README +++ /dev/null @@ -1,46 +0,0 @@ - Shotgun - -This is an automatic reloading version of the rackup command that's shipped with -Rack. It can be used as an alternative to the complex reloading logic provided -by web frameworks or in environments that don't support application reloading. - -The shotgun command starts one of Rack's supported servers (e.g., mongrel, thin, -webrick) and listens for requests but does not load any part of the actual -application. Each time a request is received, it forks, loads the application in -the child process, processes the request, and exits the child process. The -result is clean, application-wide reloading of all source files and templates on -each request. - -Usage ------ - -Installation: - - gem install shotgun - -Starting a server with a rackup file: - - shotgun config.ru - -Using Thin and starting on port 6000 instead of 9393 (default): - - shotgun --server=thin --port=6000 config.ru - -Running Sinatra apps: - - shotgun hello.rb - -See 'shotgun --help' for more advanced usage. - -Links ------ - -Shotgun: http://github.com/rtomayko/shotgun -Rack: http://rack.rubyforge.org/ -Sinatra: http://www.sinatrarb.com/ - -The reloading system in Ian Bicking's webware framework served as inspiration -for the approach taken in Shotgun. Ian lays down the pros and cons of this -approach in the following article: - -http://ianbicking.org/docs/Webware_reload.html diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/Rakefile deleted file mode 100644 index 28f6b4f3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/Rakefile +++ /dev/null @@ -1,43 +0,0 @@ -require 'rake/clean' -require 'rake/testtask' - -task :default => [:test] -task :spec => :test - -Rake::TestTask.new(:test) do |t| - t.test_files = FileList['test/*_test.rb'] - t.ruby_opts = ['-rubygems'] if defined? Gem -end - -if defined? Gem - $spec = eval(File.read('shotgun.gemspec')) - - def package(ext='') - "pkg/#{$spec.name}-#{$spec.version}#{ext}" - end - - desc 'Build packages' - task :package => %w[.gem .tar.gz].map { |ext| package(ext) } - - desc 'Build and install as local gem' - task :install => package('.gem') do - sh "gem install #{package('.gem')}" - end - - directory 'pkg/' - CLOBBER.include('pkg') - - file package('.gem') => %w[pkg/ shotgun.gemspec] + $spec.files do |f| - sh "gem build shotgun.gemspec" - mv File.basename(f.name), f.name - end - - file package('.tar.gz') => %w[pkg/] + $spec.files do |f| - sh <<-SH - git archive \ - --prefix=shotgun-#{$spec.version}/ \ - --format=tar \ - HEAD | gzip > #{f.name} - SH - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/bin/shotgun b/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/bin/shotgun deleted file mode 100755 index e068dafc..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/bin/shotgun +++ /dev/null @@ -1,154 +0,0 @@ -#!/usr/bin/env ruby - -require 'optparse' - -begin - require 'thin' - server = 'thin' -rescue LoadError - server = nil -end - -env = ENV['RACK_ENV'] || 'development' -browse = false -options = {:Port => 9393, :Host => 'localhost', :AccessLog => [], :Path => '/'} - -opts = OptionParser.new("", 24, ' ') { |opts| - opts.banner = "Usage: shotgun [ruby options] [rack options] [rackup config]" - - opts.separator "" - opts.separator "Ruby options:" - - lineno = 1 - opts.on("-e", "--eval LINE", "evaluate a LINE of code") { |line| - eval line, TOPLEVEL_BINDING, "-e", lineno - lineno += 1 - } - - opts.on("-d", "--debug", "set debugging flags (set $DEBUG to true)") { - $DEBUG = true - } - opts.on("-w", "--warn", "turn warnings on for your script") { - $-w = true - } - - opts.on("-I", "--include PATH", - "specify $LOAD_PATH (may be used more than once)") { |path| - $LOAD_PATH.unshift(*path.split(":")) - } - - opts.on("-r", "--require LIBRARY", - "require the library, before executing your script") { |library| - require library - } - - opts.separator "" - opts.separator "Rack options:" - opts.on("-s", "--server SERVER", "server (webrick, mongrel, thin, etc.)") { |s| - server = s - } - - opts.on("-o", "--host HOST", "listen on HOST (default: 0.0.0.0)") { |host| - options[:Host] = host - } - - opts.on("-p", "--port PORT", "use PORT (default: 9393)") { |port| - options[:Port] = port - } - - opts.on("-E", "--env ENVIRONMENT", "use ENVIRONMENT for defaults (default: development)") { |e| - env = e - } - - opts.separator "" - opts.separator "Shotgun options:" - - opts.on("-u", "--url URL", "specify url path (default: /)") { |url| - options[:Path] = url - } - - opts.on("-O", "--browse", "open browser immediately after starting") { |browse| - browse = true - } - - opts.on_tail("-h", "--help", "show this message") do - puts opts - exit - end - - opts.on_tail("--version", "show version") do - require 'rack' - puts "Rack #{Rack.version}" - exit - end - - opts.parse! ARGV -} - -config = ARGV[0] || "config.ru" -abort "configuration #{config} not found" unless File.exist? config - -if config =~ /\.ru$/ && File.read(config)[/^#\\(.*)/] - opts.parse! $1.split(/\s+/) -end - -require 'rack' -require 'rack/utils' -require 'rack/request' -require 'rack/response' -require 'rack/lint' -require 'rack/commonlogger' -require 'rack/showexceptions' - -unless server = Rack::Handler.get(server) - begin - server = Rack::Handler::Mongrel - rescue LoadError => e - server = Rack::Handler::WEBrick - end -end - -app_wrapper = - lambda do |inner_app| - case env - when 'development' - Rack::Builder.new { - use Rack::CommonLogger, STDERR unless server.name =~ /CGI/ - use Rack::ShowExceptions - use Rack::Lint - run inner_app - }.to_app - when 'deployment', 'production' - Rack::Builder.new { - use Rack::CommonLogger, STDERR unless server.name =~ /CGI/ - run inner_app - }.to_app - else - inner_app - end - end - -ENV['RACK_ENV'] = env - -# use the BROWSER environment variable or fall back to a more or less standard -# set of commands -ENV['BROWSER'] ||= - %w[open xdg-open x-www-browser firefox opera mozilla netscape].find do |comm| - next if comm == 'open' && `uname` !~ /Darwin/ - ENV['PATH'].split(':').any? { |dir| File.executable?("#{dir}/#{comm}") } - end - -require 'shotgun' -app = Shotgun.new(config, app_wrapper) - -base_url = "http://#{options[:Host]}:#{options[:Port]}" -puts "== Shotgun starting #{server.to_s} at #{base_url}" -server.run app, options do |inst| - if browse - if ENV['BROWSER'] - system "#{ENV['BROWSER']} '#{base_url}#{options[:Path]}'" - else - abort "BROWSER environment variable not set and no browser detected" - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/lib/shotgun.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/lib/shotgun.rb deleted file mode 100644 index 6239b77e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/lib/shotgun.rb +++ /dev/null @@ -1,98 +0,0 @@ -require 'rack' -require 'rack/utils' -require 'thread' - -class Shotgun - include Rack::Utils - attr_reader :rackup_file - - def initialize(rackup_file, wrapper=nil) - @rackup_file = rackup_file - @wrapper = wrapper || lambda { |inner_app| inner_app } - enable_copy_on_write - end - - def call(env) - dup.call!(env) - end - - def call!(env) - @env = env - @reader, @writer = IO.pipe - - if @child = fork - proceed_as_parent - else - proceed_as_child - end - end - - # ==== Stuff that happens in the parent process - - def proceed_as_parent - rand # Reseeds - @writer.close - result = Marshal.load(@reader) - @reader.close - Process.wait(@child) - if result.length == 3 - result - else - [500, {'Content-Type'=>'text/html;charset=utf-8'}, [format_error(result)]] - end - end - - def format_error(result) - message, backtrace = result - "

    FAIL

    #{escape_html(message)}

    " + - "
    #{escape_html(backtrace.join("\n"))}
    " - end - - # ==== Stuff that happens in the forked child process. - - def proceed_as_child - @reader.close - app = assemble_app - status, headers, body = app.call(@env) - Marshal.dump([status, headers.to_hash, slurp(body)], @writer) - @writer.close - rescue Object => boom - Marshal.dump(["#{boom.class.name}: #{boom.to_s}", boom.backtrace], @writer) - ensure - exit! 0 - end - - def assemble_app - @wrapper.call(inner_app) - end - - def inner_app - if rackup_file =~ /\.ru$/ - config = File.read(rackup_file) - eval "Rack::Builder.new {( #{config}\n )}.to_app", nil, rackup_file - else - require rackup_file - if defined? Sinatra::Application - Sinatra::Application.set :reload, false - Sinatra::Application.set :logging, false - Sinatra::Application.set :raise_errors, true - Sinatra::Application - else - Object.const_get(File.basename(rackup_file, '.rb').capitalize) - end - end - end - - def slurp(body) - return body if body.respond_to? :to_ary - return [body] if body.respond_to? :to_str - - buf = [] - body.each { |part| buf << part } - buf - end - - def enable_copy_on_write - GC.copy_on_write_friendly = true if GC.respond_to?(:copy_on_write_friendly=) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/shotgun.gemspec b/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/shotgun.gemspec deleted file mode 100644 index 9c35f83a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/shotgun.gemspec +++ /dev/null @@ -1,34 +0,0 @@ -Gem::Specification.new do |s| - s.specification_version = 2 if s.respond_to? :specification_version= - s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= - - s.name = 'shotgun' - s.version = '0.6' - s.date = '2010-01-28' - - s.description = "Because reloading sucks." - s.summary = s.description - - s.authors = ["Ryan Tomayko"] - s.email = "r@tomayko.com" - - s.files = %w[ - README - COPYING - Rakefile - shotgun.gemspec - lib/shotgun.rb - bin/shotgun - test/shotgun_test.rb - test/test.ru - ] - s.executables = ['shotgun'] - s.test_files = ['test/shotgun_test.rb'] - - s.extra_rdoc_files = %w[README] - s.add_dependency 'rack', '>= 0.9.1' - - s.homepage = "http://github.com/rtomayko/shotgun/" - s.require_paths = %w[lib] - s.rubygems_version = '1.1.1' -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/test/shotgun_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/test/shotgun_test.rb deleted file mode 100644 index b3a05693..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/test/shotgun_test.rb +++ /dev/null @@ -1,22 +0,0 @@ -require 'test/unit' -require 'rack/mock' -require 'shotgun' - -class ShotgunTest < Test::Unit::TestCase - def setup - @rackup_file = "#{File.dirname(__FILE__)}/test.ru" - @shotgun = Shotgun.new(@rackup_file) - end - - def test_knows_the_rackup_file - assert_equal @rackup_file, @shotgun.rackup_file - end - - def test_processes_requests - request = Rack::MockRequest.new(@shotgun) - res = request.get("/") - assert_equal 200, res.status - assert_equal "BANG!", res.body - assert_equal "text/plain", res.headers['Content-Type'] - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/test/test.ru b/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/test/test.ru deleted file mode 100644 index 271870be..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/shotgun-0.6/test/test.ru +++ /dev/null @@ -1,7 +0,0 @@ -require 'rack' - -app = lambda { |env| - [200, {'Content-Type'=>'text/plain'}, ['BANG!']] } - -use Rack::ContentLength -run app diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/AUTHORS b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/AUTHORS deleted file mode 100644 index 028ea276..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/AUTHORS +++ /dev/null @@ -1,43 +0,0 @@ -Sinatra was designed and developed by Blake Mizerany (bmizerany) in -California. Continued development would not be possible without the ongoing -financial support provided by [Heroku](http://heroku.com) and the emotional -support provided by Adam Wiggins (adamwiggins) of Heroku, Chris Wanstrath (defunkt), -PJ Hyett (pjhyett), and the rest of the GitHub crew. - -Special thanks to the following extraordinary individuals, who-out which -Sinatra would not be possible: - -* Ryan Tomayko (rtomayko) for constantly fixing whitespace errors 60d5006 -* Ezra Zygmuntowicz (ezmobius) for initial help and letting Blake steal - some of merbs internal code. -* Ari Lerner (http://xnot.org/) for his evangelism, spirit, and gumption - that got Sinatra recognized from Day 1. -* Christopher Schneid (cschneid) for The Book, the blog (gittr.com), - irclogger.com, and a bunch of useful patches. -* Markus Prinz (cypher) for patches over the years, caring about - the README, and hanging in there when times were rough. -* Simon Rozet (sr) for a ton of doc patches, HAML options, and all that - advocacy stuff he's going to do for 1.0. -* Erik Kastner (kastner) for fixing `MIME_TYPES` under Rack 0.5. -* Ben Bleything (bleything) for caring about HTTP status codes and doc fixes. -* Igal Koshevoy (igal) for root path detection under Thin/Passenger. -* Jon Crosby (jcrosby) for coffee breaks, doc fixes, and just because, man. -* Karel Minarik (karmi) for screaming until the website came back up. -* Jeremy Evans (jeremyevans) for unbreaking optional path params (twice!) -* The GitHub guys for stealing Blake's table. -* Nickolas Means (nmeans) for Sass template support. -* Victor Hugo Borja (vic) for splat'n routes specs and doco. -* Avdi Grimm (avdi) for basic RSpec support. -* Jack Danger Canty for a more accurate root directory and for making me - watch [this](http://www.youtube.com/watch?v=ueaHLHgskkw) just now. -* Mathew Walker for making escaped paths work with static files. -* Millions of Us for having the problem that led to Sinatra's conception. -* Songbird for the problems that helped Sinatra's future become realized. -* Rick Olson (technoweenie) for the killer plug at RailsConf '08. -* Steven Garcia for the amazing custom artwork you see on 404's and 500's -* Pat Nakajima (nakajima) for fixing non-nested params in nested params Hash's. - -and last but not least: - -* Frank Sinatra (chairman of the board) for having so much class he - deserves a web-framework named after him. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/CHANGES b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/CHANGES deleted file mode 100644 index 14348449..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/CHANGES +++ /dev/null @@ -1,470 +0,0 @@ -= 1.0 / unreleased - - * It's now possible to register blocks to run after each request using - after filters. After filters run at the end of each request, after - routes and error handlers. - - * Sinatra now uses Tilt for rendering - templates. This adds support for template caching, consistent - template backtraces, and support for new template engines, like - mustache and liquid. - - * New boolean 'reload_templates' setting controls whether template files - are reread from disk and recompiled on each request. Template read/compile - is cached by default in all environments except development. - - * New 'settings' method gives access to options in both class and request - scopes. This replaces the 'options' method. - * New 'erubis' helper method for rendering Erubis templates. - - * New 'cache_control' helper method provides a convenient way of - setting the Cache-Control response header. Takes a variable number - of boolean directives followed by a hash of value directives, like - this: - cache_control :public, :must_revalidate, :max_age => 60 - - * New 'expires' helper method is like cache_control but takes an - integer number of seconds or Time object: - expires 300, :public, :must_revalidate - - * Sinatra apps can now be run with a `-h ` argument to specify - the address to bind to. - - * Rack::Session::Cookie is now added to the middleware pipeline when - running in test environments if the :sessions option is set. - - * Route handlers, before filters, templates, error mappings, and - middleware are now resolved dynamically up the inheritance hierarchy - when needed instead of duplicating the superclass's version when - a new Sinatra::Base subclass is created. This should fix a variety - of issues with extensions that need to add any of these things - to the base class. - -The following Sinatra features have been obsoleted in the 1.0 release: - - * The `sinatra/test` library is obsolete. This includes the - `Sinatra::Test` module, the `Sinatra::TestHarness` class, - and the `get_it`, `post_it`, `put_it`, `delete_it`, and `head_it` - helper methods. The - [`Rack::Test` library](http://gitrdoc.com/brynary/rack-test) should - be used instead. - - * Test framework specific libraries (`sinatra/test/spec`, - `sinatra/test/bacon`,`sinatra/test/rspec`, etc.) are obsolete. - See http://www.sinatrarb.com/testing.html for instructions on - setting up a testing environment under each of these frameworks. - - * Auto-requiring template libraries in the `erb`, `builder`, `haml`, - and `sass` methods is obsolete due to thread-safety issues. You must - require the template libraries explicitly in your app. - - * The `:views_directory` option to rendering methods is obsolete; use - `:views` instead. - - * The `:haml` and `:sass` options to rendering methods are obsolete. - Template engine options should be passed in the second Hash argument - instead. - - * The 'media_type' helper method is obsolete. Use 'mime_type' instead. - - * The request-level `send_data` method is no longer supported. - - * The `Sinatra::Event` and `Sinatra::EventContext` classes are no longer - supported. This may effect extensions written for versions prior to 0.9.2. - See [Writing Sinatra Extensions](http://www.sinatrarb.com/extensions.html) - for the officially supported extensions API. - - * The `set_option` and `set_options` methods are obsolete; use `set` - instead. - - * The `:env` setting (`settings.env`) is obsolete; use `:environment` - instead. - - * The request level `stop` method is obsolete; use `halt` instead. - - * The request level `entity_tag` method is obsolete; use `etag` - instead. - - * The request level `headers` method (HTTP response headers) is obsolete; - use `response['Header-Name']` instead. - - * `Sinatra.application` is obsolete; use `Sinatra::Application` instead. - - * Using `Sinatra.application = nil` to reset an application is obsolete. - This should no longer be necessary. - - * Using `Sinatra.default_options` to set base configuration items is - obsolete; use `Sinatra::Base.set(key, value)` instead. - - * The `Sinatra::ServerError` exception is obsolete. All exceptions raised - within a request are now treated as internal server errors and result in - a 500 response status. - -= 0.9.2 / 2009-05-18 - - * This version is compatible with Rack 1.0. [Rein Henrichs] - - * The development-mode unhandled exception / error page has been - greatly enhanced, functionally and aesthetically. The error - page is used when the :show_exceptions option is enabled and an - exception propagates outside of a route handler or before filter. - [Simon Rozet / Matte Noble / Ryan Tomayko] - - * Backtraces that move through templates now include filenames and - line numbers where possible. [#51 / S. Brent Faulkner] - - * All templates now have an app-level option for setting default - template options (:haml, :sass, :erb, :builder). The app-level - option value must be a Hash if set and is merged with the - template options specified to the render method (Base#haml, - Base#erb, Base#builder). [S. Brent Faulkner, Ryan Tomayko] - - * The method signature for all template rendering methods has - been unified: "def engine(template, options={}, locals={})". - The options Hash now takes the generic :views, :layout, and - :locals options but also any template-specific options. The - generic options are removed before calling the template specific - render method. Locals may be specified using either the - :locals key in the options hash or a second Hash option to the - rendering method. [#191 / Ryan Tomayko] - - * The receiver is now passed to "configure" blocks. This - allows for the following idiom in top-level apps: - configure { |app| set :foo, app.root + '/foo' } - [TJ Holowaychuck / Ryan Tomayko] - - * The "sinatra/test" lib is deprecated and will be removed in - Sinatra 1.0. This includes the Sinatra::Test module and - Sinatra::TestHarness class in addition to all the framework - test helpers that were deprecated in 0.9.1. The Rack::Test - lib should be used instead: http://gitrdoc.com/brynary/rack-test - [#176 / Simon Rozet] - - * Development mode source file reloading has been removed. The - "shotgun" (http://rtomayko.github.com/shotgun/) program can be - used to achieve the same basic functionality in most situations. - Passenger users should use the "tmp/always_restart.txt" - file (http://tinyurl.com/c67o4h). [#166 / Ryan Tomayko] - - * Auto-requiring template libs in the erb, builder, haml, and - sass methods is deprecated due to thread-safety issues. You must - require the template libs explicitly in your app file. [Simon Rozet] - - * A new Sinatra::Base#route_missing method was added. route_missing - is sent when no route matches the request or all route handlers - pass. The default implementation forwards the request to the - downstream app when running as middleware (i.e., "@app" is - non-nil), or raises a NotFound exception when no downstream app - is defined. Subclasses can override this method to perform custom - route miss logic. [Jon Crosby] - - * A new Sinatra::Base#route_eval method was added. The method - yields to the block and throws :halt with the result. Subclasses - can override this method to tap into the route execution logic. - [TJ Holowaychuck] - - * Fix the "-x" (enable request mutex / locking) command line - argument. Passing -x now properly sets the :lock option. - [S. Brent Faulkner, Ryan Tomayko] - - * Fix writer ("foo=") and predicate ("foo?") methods in extension - modules not being added to the registering class. - [#172 / Pat Nakajima] - - * Fix in-file templates when running alongside activesupport and - fatal errors when requiring activesupport before sinatra - [#178 / Brian Candler] - - * Fix various issues running on Google AppEngine. - [Samuel Goebert, Simon Rozet] - - * Fix in-file templates __END__ detection when __END__ exists with - other stuff on a line [Yoji Shidara] - -= 0.9.1.1 / 2009-03-09 - - * Fix directory traversal vulnerability in default static files - route. See [#177] for more info. - -= 0.9.1 / 2009-03-01 - - * Sinatra now runs under Ruby 1.9.1 [#61] - - * Route patterns (splats, :named, or Regexp captures) are now - passed as arguments to the block. [#140] - - * The "helpers" method now takes a variable number of modules - along with the normal block syntax. [#133] - - * New request-level #forward method for middleware components: passes - the env to the downstream app and merges the response status, headers, - and body into the current context. [#126] - - * Requests are now automatically forwarded to the downstream app when - running as middleware and no matching route is found or all routes - pass. - - * New simple API for extensions/plugins to add DSL-level and - request-level methods. Use Sinatra.register(mixin) to extend - the DSL with all public methods defined in the mixin module; - use Sinatra.helpers(mixin) to make all public methods defined - in the mixin module available at the request level. [#138] - See http://www.sinatrarb.com/extensions.html for details. - - * Named parameters in routes now capture the "." character. This makes - routes like "/:path/:filename" match against requests like - "/foo/bar.txt"; in this case, "params[:filename]" is "bar.txt". - Previously, the route would not match at all. - - * Added request-level "redirect back" to redirect to the referring - URL. - - * Added a new "clean_trace" option that causes backtraces dumped - to rack.errors and displayed on the development error page to - omit framework and core library backtrace lines. The option is - enabled by default. [#77] - - * The ERB output buffer is now available to helpers via the @_out_buf - instance variable. - - * It's now much easier to test sessions in unit tests by passing a - ":session" option to any of the mock request methods. e.g., - get '/', {}, :session => { 'foo' => 'bar' } - - * The testing framework specific files ('sinatra/test/spec', - 'sinatra/test/bacon', 'sinatra/test/rspec', etc.) have been deprecated. - See http://sinatrarb.com/testing.html for instructions on setting up - a testing environment with these frameworks. - - * The request-level #send_data method from Sinatra 0.3.3 has been added - for compatibility but is deprecated. - - * Fix :provides causing crash on any request when request has no - Accept header [#139] - - * Fix that ERB templates were evaluated twice per "erb" call. - - * Fix app-level middleware not being run when the Sinatra application is - run as middleware. - - * Fixed some issues with running under Rack's CGI handler caused by - writing informational stuff to stdout. - - * Fixed that reloading was sometimes enabled when starting from a - rackup file [#110] - - * Fixed that "." in route patterns erroneously matched any character - instead of a literal ".". [#124] - -= 0.9.0.4 / 2009-01-25 - - * Using halt with more than 1 args causes ArgumentError [#131] - * using halt in a before filter doesn't modify response [#127] - * Add deprecated Sinatra::EventContext to unbreak plugins [#130] - * Give access to GET/POST params in filters [#129] - * Preserve non-nested params in nested params hash [#117] - * Fix backtrace dump with Rack::Lint [#116] - -= 0.9.0.3 / 2009-01-21 - - * Fall back on mongrel then webrick when thin not found. [#75] - * Use :environment instead of :env in test helpers to - fix deprecation warnings coming from framework. - * Make sinatra/test/rspec work again [#113] - * Fix app_file detection on windows [#118] - * Fix static files with Rack::Lint in pipeline [#121] - -= 0.9.0.2 / 2009-01-18 - - * Halting a before block should stop processing of routes [#85] - * Fix redirect/halt in before filters [#85] - -= 0.9.0 / 2009-01-18 - - * Works with and requires Rack >= 0.9.1 - - * Multiple Sinatra applications can now co-exist peacefully within a - single process. The new "Sinatra::Base" class can be subclassed to - establish a blank-slate Rack application or middleware component. - Documentation on using these features is forth-coming; the following - provides the basic gist: http://gist.github.com/38605 - - * Parameters with subscripts are now parsed into a nested/recursive - Hash structure. e.g., "post[title]=Hello&post[body]=World" yields - params: {'post' => {'title' => 'Hello', 'body' => 'World'}}. - - * Regular expressions may now be used in route pattens; captures are - available at "params[:captures]". - - * New ":provides" route condition takes an array of mime types and - matches only when an Accept request header is present with a - corresponding type. [cypher] - - * New request-level "pass" method; immediately exits the current block - and passes control to the next matching route. - - * The request-level "body" method now takes a block; evaluation is - deferred until an attempt is made to read the body. The block must - return a String or Array. - - * New "route conditions" system for attaching rules for when a route - matches. The :agent and :host route options now use this system. - - * New "dump_errors" option controls whether the backtrace is dumped to - rack.errors when an exception is raised from a route. The option is - enabled by default for top-level apps. - - * Better default "app_file", "root", "public", and "views" location - detection; changes to "root" and "app_file" automatically cascade to - other options that depend on them. - - * Error mappings are now split into two distinct layers: exception - mappings and custom error pages. Exception mappings are registered - with "error(Exception)" and are run only when the app raises an - exception. Custom error pages are registered with "error(status_code)", - where "status_code" is an integer, and are run any time the response - has the status code specified. It's also possible to register an error - page for a range of status codes: "error(500..599)". - - * In-file templates are now automatically imported from the file that - requires 'sinatra'. The use_in_file_templates! method is still available - for loading templates from other files. - - * Sinatra's testing support is no longer dependent on Test::Unit. Requiring - 'sinatra/test' adds the Sinatra::Test module and Sinatra::TestHarness - class, which can be used with any test framework. The 'sinatra/test/unit', - 'sinatra/test/spec', 'sinatra/test/rspec', or 'sinatra/test/bacon' files - can be required to setup a framework-specific testing environment. See the - README for more information. - - * Added support for Bacon (test framework). The 'sinatra/test/bacon' file - can be required to setup Sinatra test helpers on Bacon::Context. - - * Deprecated "set_option" and "set_options"; use "set" instead. - - * Deprecated the "env" option ("options.env"); use "environment" instead. - - * Deprecated the request level "stop" method; use "halt" instead. - - * Deprecated the request level "entity_tag" method; use "etag" instead. - Both "entity_tag" and "etag" were previously supported. - - * Deprecated the request level "headers" method (HTTP response headers); - use "response['Header-Name']" instead. - - * Deprecated "Sinatra.application"; use "Sinatra::Application" instead. - - * Deprecated setting Sinatra.application = nil to reset an application. - This should no longer be necessary. - - * Deprecated "Sinatra.default_options"; use - "Sinatra::Default.set(key, value)" instead. - - * Deprecated the "ServerError" exception. All Exceptions are now - treated as internal server errors and result in a 500 response - status. - - * Deprecated the "get_it", "post_it", "put_it", "delete_it", and "head_it" - test helper methods. Use "get", "post", "put", "delete", and "head", - respectively, instead. - - * Removed Event and EventContext classes. Applications are defined in a - subclass of Sinatra::Base; each request is processed within an - instance. - -= 0.3.3 / 2009-01-06 - - * Pin to Rack 0.4.0 (this is the last release on Rack 0.4) - - * Log unhandled exception backtraces to rack.errors. - - * Use RACK_ENV environment variable to establish Sinatra - environment when given. Thin sets this when started with - the -e argument. - - * BUG: raising Sinatra::NotFound resulted in a 500 response - code instead of 404. - - * BUG: use_in_file_templates! fails with CR/LF (#45) - - * BUG: Sinatra detects the app file and root path when run under - thin/passenger. - -= 0.3.2 - - * BUG: Static and send_file read entire file into String before - sending. Updated to stream with 8K chunks instead. - - * Rake tasks and assets for building basic documentation website. - See http://sinatra.rubyforge.org - - * Various minor doc fixes. - -= 0.3.1 - - * Unbreak optional path parameters [jeremyevans] - -= 0.3.0 - - * Add sinatra.gemspec w/ support for github gem builds. Forks can now - enable the build gem option in github to get free username-sinatra.gem - builds: gem install username-sinatra.gem --source=http://gems.github.com/ - - * Require rack-0.4 gem; removes frozen rack dir. - - * Basic RSpec support; require 'sinatra/test/rspec' instead of - 'sinatra/test/spec' to use. [avdi] - - * before filters can modify request environment vars used for - routing (e.g., PATH_INFO, REQUEST_METHOD, etc.) for URL rewriting - type functionality. - - * In-file templates now uses @@ instead of ## as template separator. - - * Top-level environment test predicates: development?, test?, production? - - * Top-level "set", "enable", and "disable" methods for tweaking - app options. [rtomayko] - - * Top-level "use" method for building Rack middleware pipelines - leading to app. See README for usage. [rtomayko] - - * New "reload" option - set false to disable reloading in development. - - * New "host" option - host/ip to bind to [cschneid] - - * New "app_file" option - override the file to reload in development - mode [cschneid] - - * Development error/not_found page cleanup [sr, adamwiggins] - - * Remove a bunch of core extensions (String#to_param, String#from_param, - Hash#from_params, Hash#to_params, Hash#symbolize_keys, Hash#pass) - - * Various grammar and formatting fixes to README; additions on - community and contributing [cypher] - - * Build RDoc using Hanna template: http://sinatrarb.rubyforge.org/api - - * Specs, documentation and fixes for splat'n routes [vic] - - * Fix whitespace errors across all source files. [rtomayko] - - * Fix streaming issues with Mongrel (body not closed). [bmizerany] - - * Fix various issues with environment not being set properly (configure - blocks not running, error pages not registering, etc.) [cypher] - - * Fix to allow locals to be passed to ERB templates [cschneid] - - * Fix locking issues causing random errors during reload in development. - - * Fix for escaped paths not resolving static files [Matthew Walker] - -= 0.2.1 - - * File upload fix and minor tweaks. - -= 0.2.0 - - * Initial gem release of 0.2 codebase. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/LICENSE b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/LICENSE deleted file mode 100644 index 145fdff5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2007, 2008, 2009 Blake Mizerany - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/README.jp.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/README.jp.rdoc deleted file mode 100644 index 6f829879..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/README.jp.rdoc +++ /dev/null @@ -1,552 +0,0 @@ -= Sinatra - -SinatraはRubyで下記のような最小労力で手早くウェブアプリケーションを作成するためのDSLです。 - - # myapp.rb - require 'rubygems' - require 'sinatra' - get '/' do - 'Hello world!' - end - -gemをインストールして動かしてみる。 - - sudo gem install sinatra - ruby myapp.rb - -http://localhost:4567 を見る。 - -== ルート - -Sinatraでは、ルートはHTTPメソッドとURLマッチングパターンがペアになっています。 -ルートはブロックに結び付けられています。 - - get '/' do - .. 何か見せる .. - end - - post '/' do - .. 何か生成する .. - end - - put '/' do - .. 何か更新する .. - end - - delete '/' do - .. 何か削除する .. - end - -ルートは定義された順番にマッチします。 リクエストに最初にマッチしたルートが呼び出されます。 - -ルートのパターンは名前付きパラメータを含むことができ、 -paramsハッシュで取得できます。 - - get '/hello/:name' do - # matches "GET /hello/foo" and "GET /hello/bar" - # params[:name] is 'foo' or 'bar' - "Hello #{params[:name]}!" - end - -また、ブロックパラメータで名前付きパラメータにアクセスすることもできます。 - - get '/hello/:name' do |n| - "Hello #{n}!" - end - -ルートパターンはsplat(またはワイルドカード)を含むこともでき、 -params[:splat] で取得できます。 - - get '/say/*/to/*' do - # matches /say/hello/to/world - params[:splat] # => ["hello", "world"] - end - - get '/download/*.*' do - # matches /download/path/to/file.xml - params[:splat] # => ["path/to/file", "xml"] - end - -正規表現を使ったルート: - - get %r{/hello/([\w]+)} do - "Hello, #{params[:captures].first}!" - end - -ブロックパラーメータを使用した場合: - - get %r{/hello/([\w]+)} do |c| - "Hello, #{c}!" - end - -ルートにはユーザエージェントのようなさまざまな条件を含めることができます。 - - get '/foo', :agent => /Songbird (\d\.\d)[\d\/]*?/ do - "You're using Songbird version #{params[:agent][0]}" - end - - get '/foo' do - # Matches non-songbird browsers - end - -== 静的ファイル - -静的ファイルは./publicディレクトリから配信されます。 -:publicオプションを指定することで別の場所を指定することができます。 - - set :public, File.dirname(__FILE__) + '/static' - -注意: この静的ファイル用のディレクトリ名はURL中に含まれません。 -例えば、./public/css/style.csshttp://example.com/css/style.cssでアクセスできます。 - -== ビュー / テンプレート - -テンプレートは./viewsディレクトリ下に配置されています。 -他のディレクトリを使用する場合の例: - - set :views, File.dirname(__FILE__) + '/templates' - -テンプレートはシンボルを使用して参照させることを覚えておいて下さい。 -サブデレクトリでもこの場合は:'subdir/template'のようにします。 -レンダリングメソッドは文字列が渡されると、そのまま文字列を出力します。 - -=== Haml テンプレート - -hamlを使うにはhamlライブラリが必要です: - - ## hamlを読み込みます - require 'haml' - - get '/' do - haml :index - end - -./views/index.hamlを表示します。 - -{Haml's options}[http://haml.hamptoncatlin.com/docs/rdoc/classes/Haml.html] -はSinatraの設定でグローバルに設定することができます。 -{Options and Configurations}[http://www.sinatrarb.com/configuration.html], -を参照してそれぞれ設定を上書きして下さい。 - - set :haml, {:format => :html5 } # デフォルトのフォーマットは:xhtml - - get '/' do - haml :index, :haml_options => {:format => :html4 } # 上書き - end - - -=== Erb テンプレート - - ## erbを読み込みます - require 'erb' - - get '/' do - erb :index - end - -./views/index.erbを表示します。 - -=== Builder テンプレート - -builderを使うにはbuilderライブラリが必要です: - - ## builderを読み込みます - require 'builder' - - get '/' do - content_type 'application/xml', :charset => 'utf-8' - builder :index - end - -./views/index.builderを表示します。 - -=== Sass テンプレート - -Sassテンプレートを使うにはsassライブラリが必要です: - - ## hamlかsassを読み込みます - require 'sass' - - get '/stylesheet.css' do - content_type 'text/css', :charset => 'utf-8' - sass :stylesheet - end - -./views/stylesheet.sassを表示します。 - -{Sass' options}[http://haml.hamptoncatlin.com/docs/rdoc/classes/Sass.html] -はSinatraの設定でグローバルに設定することができます。 -see {Options and Configurations}[http://www.sinatrarb.com/configuration.html], -を参照してそれぞれ設定を上書きして下さい。 - - set :sass, {:style => :compact } # デフォルトのSass styleは :nested - - get '/stylesheet.css' do - content_type 'text/css', :charset => 'utf-8' - sass :stylesheet, :sass_options => {:style => :expanded } # 上書き - end - - -=== インラインテンプレート - - get '/' do - haml '%div.title Hello World' - end - -文字列をテンプレートとして表示します。 - -=== テンプレート内で変数にアクセスする - -テンプレートはルートハンドラと同じコンテキストの中で評価されます。. ルートハンドラでセットされたインスタンス変数は -テンプレート内で直接使うことができます。 - - get '/:id' do - @foo = Foo.find(params[:id]) - haml '%h1= @foo.name' - end - -ローカル変数を明示的に定義することもできます。 - - get '/:id' do - foo = Foo.find(params[:id]) - haml '%h1= foo.name', :locals => { :foo => foo } - end - -このやり方は他のテンプレート内で部分テンプレートとして表示する時に典型的に使用されます。 - -=== ファイル内テンプレート - -テンプレートはソースファイルの最後で定義することもできます。 - - require 'rubygems' - require 'sinatra' - - get '/' do - haml :index - end - - __END__ - - @@ layout - %html - = yield - - @@ index - %div.title Hello world!!!!! - -注意: sinatraをrequireするファイル内で定義されたファイル内テンプレートは自動的に読み込まれます。 -他のファイルで定義されているテンプレートを使うには use_in_file_templates!メソッドで指定します。 - -=== 名前付きテンプレート - -テンプレートはトップレベルのtemplateメソッドで定義することができます。 - - template :layout do - "%html\n =yield\n" - end - - template :index do - '%div.title Hello World!' - end - - get '/' do - haml :index - end - -「layout」というテンプレートが存在する場合、そのテンプレートファイルは他のテンプレートが -表示される度に使用されます。:layout => false.することでlayoutsを無効にできます。 - - get '/' do - haml :index, :layout => !request.xhr? - end - -== ヘルパー - -トップレベルのhelpersを使用してルートハンドラやテンプレートで使うヘルパメソッドを -定義できます。 - - helpers do - def bar(name) - "#{name}bar" - end - end - - get '/:name' do - bar(params[:name]) - end - -== フィルタ - -beforeフィルタはリクエストされたコンテキストを実行する前に評価され、 -リクエストとレスポンスを変更することができます。フィルタ内でセットされた -インスタンス変数はルーティングとテンプレートで使用できます。 - - before do - @note = 'Hi!' - request.path_info = '/foo/bar/baz' - end - - get '/foo/*' do - @note #=> 'Hi!' - params[:splat] #=> 'bar/baz' - end - -== 強制終了 - -ルートかbeforeフィルタ内で直ちに実行を終了する方法: - - halt - -body部を指定することもできます ... - - halt 'ここにbodyを書く' - -ステータスとbody部を指定する ... - - halt 401, '立ち去れ!' - -== パッシング(Passing) - -ルートはpassを使って次のルートに飛ばすことができます: - - get '/guess/:who' do - pass unless params[:who] == 'Frank' - "見つかっちゃった!" - end - - get '/guess/*' do - "はずれです!" - end - -ルートブロックからすぐに抜け出し、次にマッチするルートを実行します。 -マッチするルートが見当たらない場合は404が返されます。 - -== 設定 - -どの環境でも起動時に1回だけ実行されます。 - - configure do - ... - end - -環境変数:production(RACK_ENV環境変数) がセットされている時だけ実行する方法: - - configure :production do - ... - end - -環境変数:production:testの場合に設定する方法: - - configure :production, :test do - ... - end - -== エラーハンドリング - -エラーハンドラーはルートコンテキストとbeforeフィルタ内で実行します。 -hamlerbhaltなどを使うこともできます。 - -=== Not Found - -Sinatra::NotFoundが起きた時か レスポンスのステータスコードが -404の時にnot_foundハンドラーが発動します。 - - not_found do - 'ファイルが存在しません' - end - -=== エラー - -+error+ ハンドラーはルートブロックかbeforeフィルタ内で例外が発生した時はいつでも発動します。 -block or before filter. 例外オブジェクトはRack変数sinatra.errorから取得されます。 - - error do - 'エラーが発生しました。 - ' + env['sinatra.error'].name - end - -エラーをカスタマイズする場合は、 - - error MyCustomError do - 'エラーメッセージ...' + request.env['sinatra.error'].message - end - -と書いておいて,下記のように呼び出します。 - - get '/' do - raise MyCustomError, '何かがまずかったようです' - end - -そうするとこうなります: - - エラーメッセージ... 何かがまずかったようです - -開発環境として実行している場合、Sinatraは特別なnot_founderrorハンドラーを -インストールしています。 - -== MIMEタイプ - -send_fileか静的ファイルを使う時、Sinatraが理解でいないMIMEタイプがある場合があります。 -その時は +mime_type+ を使ってファイル拡張子毎に登録して下さい。 - - mime_type :foo, 'text/foo' - -== Rackミドルウェア - -SinatraはRack[http://rack.rubyforge.org/]というRubyのWEBフレームワーク用の -最小限の標準インターフェース 上で動作しています。Rack中でもアプリケーションデベロッパー -向けに一番興味深い機能はミドルウェア(サーバとアプリケーション間に介在し、モニタリング、HTTPリクエストとレスポンス -の手動操作ができるなど、一般的な機能のいろいろなことを提供するもの)をサポートすることです。 - -Sinatraではトップレベルの+user+ メソッドを使ってRackにパイプラインを構築します。 - - require 'sinatra' - require 'my_custom_middleware' - - use Rack::Lint - use MyCustomMiddleware - - get '/hello' do - 'Hello World' - end - -use の意味は{Rack::Builder}[http://rack.rubyforge.org/doc/classes/Rack/Builder.html] DSLで定義されていることと全て一致します。 -例えば +use+ メソッドはブロック構文のように複数の引数を受け取ることができます。 - - use Rack::Auth::Basic do |username, password| - username == 'admin' && password == 'secret' - end - -Rackはログ、デバッギング、URLルーティング、認証、セッションなどいろいろな機能を備えた標準的ミドルウェアです。 -Sinatraはその多くのコンポーネントを自動で使うよう基本設定されているため、+use+で明示的に指定する必要はありません。 - -== テスト - -SinatraでのテストはRack-basedのテストライブラリかフレームワークを使って書くことができます。 -{Rack::Test}[http://gitrdoc.com/brynary/rack-test] をおすすめします。やり方: - - require 'my_sinatra_app' - require 'rack/test' - - class MyAppTest < Test::Unit::TestCase - include Rack::Test::Methods - - def app - Sinatra::Application - end - - def test_my_default - get '/' - assert_equal 'Hello World!', last_response.body - end - - def test_with_params - get '/meet', :name => 'Frank' - assert_equal 'Hello Frank!', last_response.body - end - - def test_with_rack_env - get '/', {}, 'HTTP_USER_AGENT' => 'Songbird' - assert_equal "あなたはSongbirdを使ってますね!", last_response.body - end - end - -注意: ビルトインのSinatra::TestモジュールとSinatra::TestHarnessクラスは -0.9.2リリース以降、廃止予定になっています。 - -== Sinatra::Base - ミドルウェア、ライブラリ、 モジュラーアプリ - -トップレベル(グローバル領域)上でいろいろ定義していくのは軽量アプリならうまくいきますが、 -RackミドルウェアやRails metal、サーバのコンポーネントを含んだシンプルな -ライブラリやSinatraの拡張プログラムを考慮するような場合はそうとは限りません。 -トップレベルのDSLがネームスペースを汚染したり、設定を変えてしまうこと(例:./publicや./view)がありえます。 -そこでSinatra::Baseの出番です。 - - require 'sinatra/base' - - class MyApp < Sinatra::Base - set :sessions, true - set :foo, 'bar' - - get '/' do - 'Hello world!' - end - end - -このMyAppは独立したRackコンポーネントで、RackミドルウェアやRackアプリケーション -Rails metalとして使用することができます。config.ruファイル内で +use+ か、または -+run+ でこのクラスを指定するか、ライブラリとしてサーバコンポーネントをコントロールします。 - - MyApp.run! :host => 'localhost', :port => 9090 - -Sinatra::Baseのサブクラスで使えるメソッドはトップレベルのDSLを経由して確実に使うことができます。 -ほとんどのトップレベルで記述されたアプリは、以下の2点を修正することでSinatra::Baseコンポーネントに変えることができます。 - -* +sinatra+の代わりにsinatra/baseを読み込む -(そうしない場合、SinatraのDSLメソッドの全てがメインネームスペースにインポートされます) -* ルート、エラーハンドラー、フィルター、オプションをSinatra::Baseのサブクラスに書く - -Sinatra::Base はまっさらです。ビルトインサーバを含む、ほとんどのオプションがデフォルト -で無効になっています。オプション詳細については{Options and Configuration}[http://sinatra.github.com/configuration.html] -をご覧下さい。 - -補足: SinatraのトップレベルDSLはシンプルな委譲(delgation)システムで実装されています。 -Sinatra::Applicationクラス(Sinatra::Baseの特別なサブクラス)は、トップレベルに送られる -:get、 :put、 :post、:delete、 :before、:error、:not_found、 :configure、:set messagesのこれら -全てを受け取ります。 詳細を閲覧されたい方はこちら(英語): -{Sinatra::Delegator mixin}[http://github.com/sinatra/sinatra/blob/master/lib/sinatra/base.rb#L1064] -{included into the main namespace}[http://github.com/sinatra/sinatra/blob/master/lib/sinatra/main.rb#L25]. - -== コマンドライン - -Sinatraアプリケーションは直接実行できます。 - - ruby myapp.rb [-h] [-x] [-e ENVIRONMENT] [-p PORT] [-s HANDLER] - -オプション: - - -h # ヘルプ - -p # ポート指定(デフォルトは4567) - -e # 環境を指定 (デフォルトはdevelopment) - -s # rackserver/handlerを指定 (デフォルトはthin) - -x # mutex lockを付ける (デフォルトはoff) - -== 最新開発版について - -Sinatraの開発版を使いたい場合は、ローカルに開発版を落として、 -LOAD_PATHsinatra/libディレクトリを指定して実行して下さい。 - - cd myapp - git clone git://github.com/sinatra/sinatra.git - ruby -Isinatra/lib myapp.rb - -sinatra/libディレクトリをto theLOAD_PATHに追加する方法もあります。 - - $LOAD_PATH.unshift File.dirname(__FILE__) + '/sinatra/lib' - require 'rubygems' - require 'sinatra' - - get '/about' do - "今使ってるバージョンは" + Sinatra::VERSION - end - -Sinatraのソースを更新する方法: - - cd myproject/sinatra - git pull - -== その他 - -日本語サイト - -* {Greenbear Laboratory Rack日本語マニュアル}[http://mono.kmc.gr.jp/~yhara/w/?RackReferenceJa] - Rackの日本語マニュアル - -英語サイト - -* {プロジェクトサイト}[http://sinatra.github.com/] - ドキュメント、 - ニュース、他のリソースへのリンクがあります。 -* {プロジェクトに参加(貢献)する}[http://sinatra.github.com/contributing.html] - バグレポート - パッチの送信、サポートなど -* {Lighthouse}[http://sinatra.lighthouseapp.com] - チケット管理とリリース計画 -* {Twitter}[http://twitter.com/sinatra] -* {メーリングリスト}[http://groups.google.com/group/sinatrarb] -* {IRC: #sinatra}[irc://chat.freenode.net/#sinatra] on http://freenode.net diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/README.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/README.rdoc deleted file mode 100644 index 1c4f273f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/README.rdoc +++ /dev/null @@ -1,622 +0,0 @@ -= Sinatra - -Sinatra is a DSL for quickly creating web applications in Ruby with minimal -effort: - - # myapp.rb - require 'rubygems' - require 'sinatra' - get '/' do - 'Hello world!' - end - -Install the gem and run with: - - sudo gem install sinatra - ruby myapp.rb - -View at: http://localhost:4567 - -== Routes - -In Sinatra, a route is an HTTP method paired with an URL matching pattern. -Each route is associated with a block: - - get '/' do - .. show something .. - end - - post '/' do - .. create something .. - end - - put '/' do - .. update something .. - end - - delete '/' do - .. annihilate something .. - end - -Routes are matched in the order they are defined. The first route that -matches the request is invoked. - -Route patterns may include named parameters, accessible via the -params hash: - - get '/hello/:name' do - # matches "GET /hello/foo" and "GET /hello/bar" - # params[:name] is 'foo' or 'bar' - "Hello #{params[:name]}!" - end - -You can also access named parameters via block parameters: - - get '/hello/:name' do |n| - "Hello #{n}!" - end - -Route patterns may also include splat (or wildcard) parameters, accessible -via the params[:splat] array. - - get '/say/*/to/*' do - # matches /say/hello/to/world - params[:splat] # => ["hello", "world"] - end - - get '/download/*.*' do - # matches /download/path/to/file.xml - params[:splat] # => ["path/to/file", "xml"] - end - -Route matching with Regular Expressions: - - get %r{/hello/([\w]+)} do - "Hello, #{params[:captures].first}!" - end - -Or with a block parameter: - - get %r{/hello/([\w]+)} do |c| - "Hello, #{c}!" - end - -Routes may include a variety of matching conditions, such as the user agent: - - get '/foo', :agent => /Songbird (\d\.\d)[\d\/]*?/ do - "You're using Songbird version #{params[:agent][0]}" - end - - get '/foo' do - # Matches non-songbird browsers - end - -== Static Files - -Static files are served from the ./public directory. You can specify -a different location by setting the :public option: - - set :public, File.dirname(__FILE__) + '/static' - -Note that the public directory name is not included in the URL. A file -./public/css/style.css is made available as -http://example.com/css/style.css. - -== Views / Templates - -Templates are assumed to be located directly under the ./views -directory. To use a different views directory: - - set :views, File.dirname(__FILE__) + '/templates' - -One important thing to remember is that you always have to reference -templates with symbols, even if they're in a subdirectory (in this -case use :'subdir/template'). Rendering methods will render -any strings passed to them directly. - -=== Haml Templates - -The haml gem/library is required to render HAML templates: - - ## You'll need to require haml in your app - require 'haml' - - get '/' do - haml :index - end - -Renders ./views/index.haml. - -{Haml's options}[http://haml.hamptoncatlin.com/docs/rdoc/classes/Haml.html] -can be set globally through Sinatra's configurations, -see {Options and Configurations}[http://www.sinatrarb.com/configuration.html], -and overridden on an individual basis. - - set :haml, {:format => :html5 } # default Haml format is :xhtml - - get '/' do - haml :index, :haml_options => {:format => :html4 } # overridden - end - - -=== Erb Templates - - ## You'll need to require erb in your app - require 'erb' - - get '/' do - erb :index - end - -Renders ./views/index.erb - -=== Erubis - -The erubis gem/library is required to render builder templates: - - ## You'll need to require erubis in your app - require 'erubis' - - get '/' do - erubis :index - end - -Renders ./views/index.erubis - -=== Builder Templates - -The builder gem/library is required to render builder templates: - - ## You'll need to require builder in your app - require 'builder' - - get '/' do - content_type 'application/xml', :charset => 'utf-8' - builder :index - end - -Renders ./views/index.builder. - -=== Sass Templates - -The sass gem/library is required to render Sass templates: - - ## You'll need to require haml or sass in your app - require 'sass' - - get '/stylesheet.css' do - content_type 'text/css', :charset => 'utf-8' - sass :stylesheet - end - -Renders ./views/stylesheet.sass. - -{Sass' options}[http://haml.hamptoncatlin.com/docs/rdoc/classes/Sass.html] -can be set globally through Sinatra's configurations, -see {Options and Configurations}[http://www.sinatrarb.com/configuration.html], -and overridden on an individual basis. - - set :sass, {:style => :compact } # default Sass style is :nested - - get '/stylesheet.css' do - content_type 'text/css', :charset => 'utf-8' - sass :stylesheet, :style => :expanded # overridden - end - -=== Inline Templates - - get '/' do - haml '%div.title Hello World' - end - -Renders the inlined template string. - -=== Accessing Variables in Templates - -Templates are evaluated within the same context as route handlers. Instance -variables set in route handlers are direcly accessible by templates: - - get '/:id' do - @foo = Foo.find(params[:id]) - haml '%h1= @foo.name' - end - -Or, specify an explicit Hash of local variables: - - get '/:id' do - foo = Foo.find(params[:id]) - haml '%h1= foo.name', :locals => { :foo => foo } - end - -This is typically used when rendering templates as partials from within -other templates. - -=== Inline Templates - -Templates may be defined at the end of the source file: - - require 'rubygems' - require 'sinatra' - - get '/' do - haml :index - end - - __END__ - - @@ layout - %html - = yield - - @@ index - %div.title Hello world!!!!! - -NOTE: Inline templates defined in the source file that requires sinatra -are automatically loaded. Call `enable :inline_templates` explicitly if you -have inline templates in other source files. - -=== Named Templates - -Templates may also be defined using the top-level template method: - - template :layout do - "%html\n =yield\n" - end - - template :index do - '%div.title Hello World!' - end - - get '/' do - haml :index - end - -If a template named "layout" exists, it will be used each time a template -is rendered. You can disable layouts by passing :layout => false. - - get '/' do - haml :index, :layout => !request.xhr? - end - -== Helpers - -Use the top-level helpers method to define helper methods for use in -route handlers and templates: - - helpers do - def bar(name) - "#{name}bar" - end - end - - get '/:name' do - bar(params[:name]) - end - -== Filters - -Before filters are evaluated before each request within the context of the -request and can modify the request and response. Instance variables set in -filters are accessible by routes and templates: - - before do - @note = 'Hi!' - request.path_info = '/foo/bar/baz' - end - - get '/foo/*' do - @note #=> 'Hi!' - params[:splat] #=> 'bar/baz' - end - -After filter are evaluated after each request within the context of the -request and can also modify the request and response. Instance variables -set in before filters and routes are accessible by after filters: - - after do - puts response.status - end - -== Halting - -To immediately stop a request within a filter or route use: - - halt - -You can also specify the status when halting ... - - halt 410 - -Or the body ... - - halt 'this will be the body' - -Or both ... - - halt 401, 'go away!' - -With headers ... - - halt 402, {'Content-Type' => 'text/plain'}, 'revenge' - -== Passing - -A route can punt processing to the next matching route using pass: - - get '/guess/:who' do - pass unless params[:who] == 'Frank' - 'You got me!' - end - - get '/guess/*' do - 'You missed!' - end - -The route block is immediately exited and control continues with the next -matching route. If no matching route is found, a 404 is returned. - -== Configuration - -Run once, at startup, in any environment: - - configure do - ... - end - -Run only when the environment (RACK_ENV environment variable) is set to -:production: - - configure :production do - ... - end - -Run when the environment is set to either :production or -:test: - - configure :production, :test do - ... - end - -== Error handling - -Error handlers run within the same context as routes and before filters, which -means you get all the goodies it has to offer, like haml, erb, -halt, etc. - -=== Not Found - -When a Sinatra::NotFound exception is raised, or the response's status -code is 404, the not_found handler is invoked: - - not_found do - 'This is nowhere to be found' - end - -=== Error - -The +error+ handler is invoked any time an exception is raised from a route -block or a filter. The exception object can be obtained from the -sinatra.error Rack variable: - - error do - 'Sorry there was a nasty error - ' + env['sinatra.error'].name - end - -Custom errors: - - error MyCustomError do - 'So what happened was...' + request.env['sinatra.error'].message - end - -Then, if this happens: - - get '/' do - raise MyCustomError, 'something bad' - end - -You get this: - - So what happened was... something bad - -Alternatively, you can install error handler for a status code: - - error 403 do - 'Access forbidden' - end - - get '/secret' do - 403 - end - -Or a range: - - error 400..510 do - 'Boom' - end - -Sinatra installs special not_found and error handlers when -running under the development environment. - -== Mime types - -When using send_file or static files you may have mime types Sinatra -doesn't understand. Use +mime_type+ to register them by file extension: - - mime_type :foo, 'text/foo' - -You can also use it with the +content_type+ helper: - - content_type :foo - -== Rack Middleware - -Sinatra rides on Rack[http://rack.rubyforge.org/], a minimal standard -interface for Ruby web frameworks. One of Rack's most interesting capabilities -for application developers is support for "middleware" -- components that sit -between the server and your application monitoring and/or manipulating the -HTTP request/response to provide various types of common functionality. - -Sinatra makes building Rack middleware pipelines a cinch via a top-level -+use+ method: - - require 'sinatra' - require 'my_custom_middleware' - - use Rack::Lint - use MyCustomMiddleware - - get '/hello' do - 'Hello World' - end - -The semantics of +use+ are identical to those defined for the -Rack::Builder[http://rack.rubyforge.org/doc/classes/Rack/Builder.html] DSL -(most frequently used from rackup files). For example, the +use+ method -accepts multiple/variable args as well as blocks: - - use Rack::Auth::Basic do |username, password| - username == 'admin' && password == 'secret' - end - -Rack is distributed with a variety of standard middleware for logging, -debugging, URL routing, authentication, and session handling. Sinatra uses -many of of these components automatically based on configuration so you -typically don't have to +use+ them explicitly. - -== Testing - -Sinatra tests can be written using any Rack-based testing library -or framework. {Rack::Test}[http://gitrdoc.com/brynary/rack-test] is -recommended: - - require 'my_sinatra_app' - require 'rack/test' - - class MyAppTest < Test::Unit::TestCase - include Rack::Test::Methods - - def app - Sinatra::Application - end - - def test_my_default - get '/' - assert_equal 'Hello World!', last_response.body - end - - def test_with_params - get '/meet', :name => 'Frank' - assert_equal 'Hello Frank!', last_response.body - end - - def test_with_rack_env - get '/', {}, 'HTTP_USER_AGENT' => 'Songbird' - assert_equal "You're using Songbird!", last_response.body - end - end - -NOTE: The built-in Sinatra::Test module and Sinatra::TestHarness class -are deprecated as of the 0.9.2 release. - -== Sinatra::Base - Middleware, Libraries, and Modular Apps - -Defining your app at the top-level works well for micro-apps but has -considerable drawbacks when building reuseable components such as Rack -middleware, Rails metal, simple libraries with a server component, or -even Sinatra extensions. The top-level DSL pollutes the Object namespace -and assumes a micro-app style configuration (e.g., a single application -file, ./public and ./views directories, logging, exception detail page, -etc.). That's where Sinatra::Base comes into play: - - require 'sinatra/base' - - class MyApp < Sinatra::Base - set :sessions, true - set :foo, 'bar' - - get '/' do - 'Hello world!' - end - end - -The MyApp class is an independent Rack component that can act as -Rack middleware, a Rack application, or Rails metal. You can +use+ or -+run+ this class from a rackup +config.ru+ file; or, control a server -component shipped as a library: - - MyApp.run! :host => 'localhost', :port => 9090 - -The methods available to Sinatra::Base subclasses are exactly as those -available via the top-level DSL. Most top-level apps can be converted to -Sinatra::Base components with two modifications: - -* Your file should require +sinatra/base+ instead of +sinatra+; - otherwise, all of Sinatra's DSL methods are imported into the main - namespace. -* Put your app's routes, error handlers, filters, and options in a subclass - of Sinatra::Base. - -+Sinatra::Base+ is a blank slate. Most options are disabled by default, -including the built-in server. See {Options and Configuration}[http://sinatra.github.com/configuration.html] -for details on available options and their behavior. - -SIDEBAR: Sinatra's top-level DSL is implemented using a simple delegation -system. The +Sinatra::Application+ class -- a special subclass of -Sinatra::Base -- receives all :get, :put, :post, :delete, :before, -:error, :not_found, :configure, and :set messages sent to the -top-level. Have a look at the code for yourself: here's the -{Sinatra::Delegator mixin}[http://github.com/sinatra/sinatra/blob/master/lib/sinatra/base.rb#L1064] -being {included into the main namespace}[http://github.com/sinatra/sinatra/blob/master/lib/sinatra/main.rb#L25]. - -== Command line - -Sinatra applications can be run directly: - - ruby myapp.rb [-h] [-x] [-e ENVIRONMENT] [-p PORT] [-h HOST] [-s HANDLER] - -Options are: - - -h # help - -p # set the port (default is 4567) - -h # set the host (default is 0.0.0.0) - -e # set the environment (default is development) - -s # specify rack server/handler (default is thin) - -x # turn on the mutex lock (default is off) - -== The Bleeding Edge - -If you would like to use Sinatra's latest bleeding code, create a local -clone and run your app with the sinatra/lib directory on the -LOAD_PATH: - - cd myapp - git clone git://github.com/sinatra/sinatra.git - ruby -Isinatra/lib myapp.rb - -Alternatively, you can add the sinatra/lib directory to the -LOAD_PATH in your application: - - $LOAD_PATH.unshift File.dirname(__FILE__) + '/sinatra/lib' - require 'rubygems' - require 'sinatra' - - get '/about' do - "I'm running version " + Sinatra::VERSION - end - -To update the Sinatra sources in the future: - - cd myproject/sinatra - git pull - -== More - -* {Project Website}[http://sinatra.github.com/] - Additional documentation, - news, and links to other resources. -* {Contributing}[http://sinatra.github.com/contributing.html] - Find a bug? Need - help? Have a patch? -* {Lighthouse}[http://sinatra.lighthouseapp.com] - Issue tracking and release - planning. -* {Twitter}[http://twitter.com/sinatra] -* {Mailing List}[http://groups.google.com/group/sinatrarb] -* {IRC: #sinatra}[irc://chat.freenode.net/#sinatra] on http://freenode.net diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/Rakefile deleted file mode 100644 index 54875e60..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/Rakefile +++ /dev/null @@ -1,113 +0,0 @@ -require 'rake/clean' -require 'rake/testtask' -require 'fileutils' - -task :default => :test -task :spec => :test - -def source_version - line = File.read('lib/sinatra/base.rb')[/^\s*VERSION = .*/] - line.match(/.*VERSION = '(.*)'/)[1] -end - -# SPECS =============================================================== - -Rake::TestTask.new(:test) do |t| - t.test_files = FileList['test/*_test.rb'] - t.ruby_opts = ['-rubygems -I.'] if defined? Gem -end - -# Rcov ================================================================ -namespace :test do - desc 'Mesures test coverage' - task :coverage do - rm_f "coverage" - rcov = "rcov --text-summary --test-unit-only -Ilib" - system("#{rcov} --no-html --no-color test/*_test.rb") - end -end - -# Website ============================================================= -# Building docs requires HAML and the hanna gem: -# gem install mislav-hanna --source=http://gems.github.com - -desc 'Generate RDoc under doc/api' -task 'doc' => ['doc:api'] - -task 'doc:api' => ['doc/api/index.html'] - -file 'doc/api/index.html' => FileList['lib/**/*.rb','README.rdoc'] do |f| - rb_files = f.prerequisites - sh((<<-end).gsub(/\s+/, ' ')) - hanna --charset utf8 \ - --fmt html \ - --inline-source \ - --line-numbers \ - --main README.rdoc \ - --op doc/api \ - --title 'Sinatra API Documentation' \ - #{rb_files.join(' ')} - end -end -CLEAN.include 'doc/api' - -# PACKAGING ============================================================ - -if defined?(Gem) - # Load the gemspec using the same limitations as github - def spec - require 'rubygems' unless defined? Gem::Specification - @spec ||= eval(File.read('sinatra.gemspec')) - end - - def package(ext='') - "pkg/sinatra-#{spec.version}" + ext - end - - desc 'Build packages' - task :package => %w[.gem .tar.gz].map {|e| package(e)} - - desc 'Build and install as local gem' - task :install => package('.gem') do - sh "gem install #{package('.gem')}" - end - - directory 'pkg/' - CLOBBER.include('pkg') - - file package('.gem') => %w[pkg/ sinatra.gemspec] + spec.files do |f| - sh "gem build sinatra.gemspec" - mv File.basename(f.name), f.name - end - - file package('.tar.gz') => %w[pkg/] + spec.files do |f| - sh <<-SH - git archive \ - --prefix=sinatra-#{source_version}/ \ - --format=tar \ - HEAD | gzip > #{f.name} - SH - end - - task 'sinatra.gemspec' => FileList['{lib,test,compat}/**','Rakefile','CHANGES','*.rdoc'] do |f| - # read spec file and split out manifest section - spec = File.read(f.name) - head, manifest, tail = spec.split(" # = MANIFEST =\n") - # replace version and date - head.sub!(/\.version = '.*'/, ".version = '#{source_version}'") - head.sub!(/\.date = '.*'/, ".date = '#{Date.today.to_s}'") - # determine file list from git ls-files - files = `git ls-files`. - split("\n"). - sort. - reject{ |file| file =~ /^\./ }. - reject { |file| file =~ /^doc/ }. - map{ |file| " #{file}" }. - join("\n") - # piece file back together and write... - manifest = " s.files = %w[\n#{files}\n ]\n" - spec = [head,manifest,tail].join(" # = MANIFEST =\n") - File.open(f.name, 'w') { |io| io.write(spec) } - puts "updated #{f.name}" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra.rb deleted file mode 100644 index 71b122d1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra.rb +++ /dev/null @@ -1,7 +0,0 @@ -libdir = File.dirname(__FILE__) -$LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir) - -require 'sinatra/base' -require 'sinatra/main' - -enable :inline_templates diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/base.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/base.rb deleted file mode 100644 index 3970312b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/base.rb +++ /dev/null @@ -1,1151 +0,0 @@ -require 'thread' -require 'time' -require 'uri' -require 'rack' -require 'rack/builder' -require 'sinatra/showexceptions' - -# require tilt if available; fall back on bundled version. -begin - require 'tilt' -rescue LoadError - require 'sinatra/tilt' -end - -module Sinatra - VERSION = '1.0.a' - - # The request object. See Rack::Request for more info: - # http://rack.rubyforge.org/doc/classes/Rack/Request.html - class Request < Rack::Request - # Returns an array of acceptable media types for the response - def accept - @env['HTTP_ACCEPT'].to_s.split(',').map { |a| a.strip } - end - - def secure? - (@env['HTTP_X_FORWARDED_PROTO'] || @env['rack.url_scheme']) == 'https' - end - - # Override Rack < 1.1's Request#params implementation (see lh #72 for - # more info) and add a Request#user_agent method. - # XXX remove when we require rack > 1.1 - if Rack.release < '1.1' - def params - self.GET.update(self.POST) - rescue EOFError, Errno::ESPIPE - self.GET - end - - def user_agent - @env['HTTP_USER_AGENT'] - end - end - end - - # The response object. See Rack::Response and Rack::ResponseHelpers for - # more info: - # http://rack.rubyforge.org/doc/classes/Rack/Response.html - # http://rack.rubyforge.org/doc/classes/Rack/Response/Helpers.html - class Response < Rack::Response - def finish - @body = block if block_given? - if [204, 304].include?(status.to_i) - header.delete "Content-Type" - [status.to_i, header.to_hash, []] - else - body = @body || [] - body = [body] if body.respond_to? :to_str - if body.respond_to?(:to_ary) - header["Content-Length"] = body.to_ary. - inject(0) { |len, part| len + Rack::Utils.bytesize(part) }.to_s - end - [status.to_i, header.to_hash, body] - end - end - end - - class NotFound < NameError #:nodoc: - def code ; 404 ; end - end - - # Methods available to routes, before/after filters, and views. - module Helpers - # Set or retrieve the response status code. - def status(value=nil) - response.status = value if value - response.status - end - - # Set or retrieve the response body. When a block is given, - # evaluation is deferred until the body is read with #each. - def body(value=nil, &block) - if block_given? - def block.each ; yield call ; end - response.body = block - else - response.body = value - end - end - - # Halt processing and redirect to the URI provided. - def redirect(uri, *args) - status 302 - response['Location'] = uri - halt(*args) - end - - # Halt processing and return the error status provided. - def error(code, body=nil) - code, body = 500, code.to_str if code.respond_to? :to_str - response.body = body unless body.nil? - halt code - end - - # Halt processing and return a 404 Not Found. - def not_found(body=nil) - error 404, body - end - - # Set multiple response headers with Hash. - def headers(hash=nil) - response.headers.merge! hash if hash - response.headers - end - - # Access the underlying Rack session. - def session - env['rack.session'] ||= {} - end - - # Look up a media type by file extension in Rack's mime registry. - def mime_type(type) - Base.mime_type(type) - end - - # Set the Content-Type of the response body given a media type or file - # extension. - def content_type(type, params={}) - mime_type = self.mime_type(type) - fail "Unknown media type: %p" % type if mime_type.nil? - if params.any? - params = params.collect { |kv| "%s=%s" % kv }.join(', ') - response['Content-Type'] = [mime_type, params].join(";") - else - response['Content-Type'] = mime_type - end - end - - # Set the Content-Disposition to "attachment" with the specified filename, - # instructing the user agents to prompt to save. - def attachment(filename=nil) - response['Content-Disposition'] = 'attachment' - if filename - params = '; filename="%s"' % File.basename(filename) - response['Content-Disposition'] << params - end - end - - # Use the contents of the file at +path+ as the response body. - def send_file(path, opts={}) - stat = File.stat(path) - last_modified stat.mtime - - content_type mime_type(opts[:type]) || - mime_type(File.extname(path)) || - response['Content-Type'] || - 'application/octet-stream' - - response['Content-Length'] ||= (opts[:length] || stat.size).to_s - - if opts[:disposition] == 'attachment' || opts[:filename] - attachment opts[:filename] || path - elsif opts[:disposition] == 'inline' - response['Content-Disposition'] = 'inline' - end - - halt StaticFile.open(path, 'rb') - rescue Errno::ENOENT - not_found - end - - # Rack response body used to deliver static files. The file contents are - # generated iteratively in 8K chunks. - class StaticFile < ::File #:nodoc: - alias_method :to_path, :path - def each - rewind - while buf = read(8192) - yield buf - end - end - end - - # Specify response freshness policy for HTTP caches (Cache-Control header). - # Any number of non-value directives (:public, :private, :no_cache, - # :no_store, :must_revalidate, :proxy_revalidate) may be passed along with - # a Hash of value directives (:max_age, :min_stale, :s_max_age). - # - # cache_control :public, :must_revalidate, :max_age => 60 - # => Cache-Control: public, must-revalidate, max-age=60 - # - # See RFC 2616 / 14.9 for more on standard cache control directives: - # http://tools.ietf.org/html/rfc2616#section-14.9.1 - def cache_control(*values) - if values.last.kind_of?(Hash) - hash = values.pop - hash.reject! { |k,v| v == false } - hash.reject! { |k,v| values << k if v == true } - else - hash = {} - end - - values = values.map { |value| value.to_s.tr('_','-') } - hash.each { |k,v| values << [k.to_s.tr('_', '-'), v].join('=') } - - response['Cache-Control'] = values.join(', ') if values.any? - end - - # Set the Expires header and Cache-Control/max-age directive. Amount - # can be an integer number of seconds in the future or a Time object - # indicating when the response should be considered "stale". The remaining - # "values" arguments are passed to the #cache_control helper: - # - # expires 500, :public, :must_revalidate - # => Cache-Control: public, must-revalidate, max-age=60 - # => Expires: Mon, 08 Jun 2009 08:50:17 GMT - # - def expires(amount, *values) - values << {} unless values.last.kind_of?(Hash) - - if amount.respond_to?(:to_time) - max_age = amount.to_time - Time.now - time = amount.to_time - else - max_age = amount - time = Time.now + amount - end - - values.last.merge!(:max_age => max_age) - cache_control(*values) - - response['Expires'] = time.httpdate - end - - # Set the last modified time of the resource (HTTP 'Last-Modified' header) - # and halt if conditional GET matches. The +time+ argument is a Time, - # DateTime, or other object that responds to +to_time+. - # - # When the current request includes an 'If-Modified-Since' header that - # matches the time specified, execution is immediately halted with a - # '304 Not Modified' response. - def last_modified(time) - time = time.to_time if time.respond_to?(:to_time) - time = time.httpdate if time.respond_to?(:httpdate) - response['Last-Modified'] = time - halt 304 if time == request.env['HTTP_IF_MODIFIED_SINCE'] - time - end - - # Set the response entity tag (HTTP 'ETag' header) and halt if conditional - # GET matches. The +value+ argument is an identifier that uniquely - # identifies the current version of the resource. The +kind+ argument - # indicates whether the etag should be used as a :strong (default) or :weak - # cache validator. - # - # When the current request includes an 'If-None-Match' header with a - # matching etag, execution is immediately halted. If the request method is - # GET or HEAD, a '304 Not Modified' response is sent. - def etag(value, kind=:strong) - raise TypeError, ":strong or :weak expected" if ![:strong,:weak].include?(kind) - value = '"%s"' % value - value = 'W/' + value if kind == :weak - response['ETag'] = value - - # Conditional GET check - if etags = env['HTTP_IF_NONE_MATCH'] - etags = etags.split(/\s*,\s*/) - halt 304 if etags.include?(value) || etags.include?('*') - end - end - - ## Sugar for redirect (example: redirect back) - def back ; request.referer ; end - - end - - # Template rendering methods. Each method takes the name of a template - # to render as a Symbol and returns a String with the rendered output, - # as well as an optional hash with additional options. - # - # `template` is either the name or path of the template as symbol - # (Use `:'subdir/myview'` for views in subdirectories), or a string - # that will be rendered. - # - # Possible options are: - # :layout If set to false, no layout is rendered, otherwise - # the specified layout is used (Ignored for `sass`) - # :locals A hash with local variables that should be available - # in the template - module Templates - def erb(template, options={}, locals={}) - render :erb, template, options, locals - end - - def erubis(template, options={}, locals={}) - render :erubis, template, options, locals - end - - def haml(template, options={}, locals={}) - render :haml, template, options, locals - end - - def sass(template, options={}, locals={}) - options[:layout] = false - render :sass, template, options, locals - end - - def builder(template=nil, options={}, locals={}, &block) - options, template = template, nil if template.is_a?(Hash) - template = Proc.new { block } if template.nil? - render :builder, template, options, locals - end - - private - def render(engine, data, options={}, locals={}, &block) - # merge app-level options - options = settings.send(engine).merge(options) if settings.respond_to?(engine) - - # extract generic options - locals = options.delete(:locals) || locals || {} - views = options.delete(:views) || settings.views || "./views" - layout = options.delete(:layout) - layout = :layout if layout.nil? || layout == true - - # compile and render template - template = compile_template(engine, data, options, views) - output = template.render(self, locals, &block) - - # render layout - if layout - begin - options = options.merge(:views => views, :layout => false) - output = render(engine, layout, options, locals) { output } - rescue Errno::ENOENT - end - end - - output - end - - def compile_template(engine, data, options, views) - @template_cache.fetch engine, data, options do - case - when data.is_a?(Symbol) - body, path, line = self.class.templates[data] - if body - body = body.call if body.respond_to?(:call) - Tilt[engine].new(path, line.to_i, options) { body } - else - path = ::File.join(views, "#{data}.#{engine}") - Tilt[engine].new(path, 1, options) - end - when data.is_a?(Proc) || data.is_a?(String) - body = data.is_a?(String) ? Proc.new { data } : data - path, line = self.class.caller_locations.first - Tilt[engine].new(path, line.to_i, options, &body) - else - raise ArgumentError - end - end - end - end - - # Base class for all Sinatra applications and middleware. - class Base - include Rack::Utils - include Helpers - include Templates - - attr_accessor :app - - def initialize(app=nil) - @app = app - @template_cache = Tilt::Cache.new - yield self if block_given? - end - - # Rack call interface. - def call(env) - dup.call!(env) - end - - attr_accessor :env, :request, :response, :params - - def call!(env) - @env = env - @request = Request.new(env) - @response = Response.new - @params = indifferent_params(@request.params) - @template_cache.clear if settings.reload_templates - - invoke { dispatch! } - invoke { error_block!(response.status) } - - status, header, body = @response.finish - - # Never produce a body on HEAD requests. Do retain the Content-Length - # unless it's "0", in which case we assume it was calculated erroneously - # for a manual HEAD response and remove it entirely. - if @env['REQUEST_METHOD'] == 'HEAD' - body = [] - header.delete('Content-Length') if header['Content-Length'] == '0' - end - - [status, header, body] - end - - # Access settings defined with Base.set. - def settings - self.class - end - alias_method :options, :settings - - # Exit the current block, halts any further processing - # of the request, and returns the specified response. - def halt(*response) - response = response.first if response.length == 1 - throw :halt, response - end - - # Pass control to the next matching route. - # If there are no more matching routes, Sinatra will - # return a 404 response. - def pass(&block) - throw :pass, block - end - - # Forward the request to the downstream app -- middleware only. - def forward - fail "downstream app not set" unless @app.respond_to? :call - status, headers, body = @app.call(@request.env) - @response.status = status - @response.body = body - @response.headers.merge! headers - nil - end - - private - # Run before filters defined on the class and all superclasses. - def before_filter!(base=self.class) - before_filter!(base.superclass) if base.superclass.respond_to?(:before_filters) - base.before_filters.each { |block| instance_eval(&block) } - end - - # Run after filters defined on the class and all superclasses. - def after_filter!(base=self.class) - after_filter!(base.superclass) if base.superclass.respond_to?(:after_filters) - base.after_filters.each { |block| instance_eval(&block) } - end - - # Run routes defined on the class and all superclasses. - def route!(base=self.class, pass_block=nil) - if routes = base.routes[@request.request_method] - original_params = @params - path = unescape(@request.path_info) - - routes.each do |pattern, keys, conditions, block| - if match = pattern.match(path) - values = match.captures.to_a - params = - if keys.any? - keys.zip(values).inject({}) do |hash,(k,v)| - if k == 'splat' - (hash[k] ||= []) << v - else - hash[k] = v - end - hash - end - elsif values.any? - {'captures' => values} - else - {} - end - @params = original_params.merge(params) - @block_params = values - - pass_block = catch(:pass) do - conditions.each { |cond| - throw :pass if instance_eval(&cond) == false } - route_eval(&block) - end - end - end - - @params = original_params - end - - # Run routes defined in superclass. - if base.superclass.respond_to?(:routes) - route! base.superclass, pass_block - return - end - - route_eval(&pass_block) if pass_block - - route_missing - end - - # Run a route block and throw :halt with the result. - def route_eval(&block) - throw :halt, instance_eval(&block) - end - - # No matching route was found or all routes passed. The default - # implementation is to forward the request downstream when running - # as middleware (@app is non-nil); when no downstream app is set, raise - # a NotFound exception. Subclasses can override this method to perform - # custom route miss logic. - def route_missing - if @app - forward - else - raise NotFound - end - end - - # Attempt to serve static files from public directory. Throws :halt when - # a matching file is found, returns nil otherwise. - def static! - return if (public_dir = settings.public).nil? - public_dir = File.expand_path(public_dir) - - path = File.expand_path(public_dir + unescape(request.path_info)) - return if path[0, public_dir.length] != public_dir - return unless File.file?(path) - - env['sinatra.static_file'] = path - send_file path, :disposition => nil - end - - # Enable string or symbol key access to the nested params hash. - def indifferent_params(params) - params = indifferent_hash.merge(params) - params.each do |key, value| - next unless value.is_a?(Hash) - params[key] = indifferent_params(value) - end - end - - def indifferent_hash - Hash.new {|hash,key| hash[key.to_s] if Symbol === key } - end - - # Run the block with 'throw :halt' support and apply result to the response. - def invoke(&block) - res = catch(:halt) { instance_eval(&block) } - return if res.nil? - - case - when res.respond_to?(:to_str) - @response.body = [res] - when res.respond_to?(:to_ary) - res = res.to_ary - if Fixnum === res.first - if res.length == 3 - @response.status, headers, body = res - @response.body = body if body - headers.each { |k, v| @response.headers[k] = v } if headers - elsif res.length == 2 - @response.status = res.first - @response.body = res.last - else - raise TypeError, "#{res.inspect} not supported" - end - else - @response.body = res - end - when res.respond_to?(:each) - @response.body = res - when (100...599) === res - @response.status = res - end - - res - end - - # Dispatch a request with error handling. - def dispatch! - static! if settings.static? && (request.get? || request.head?) - before_filter! - route! - rescue NotFound => boom - handle_not_found!(boom) - rescue ::Exception => boom - handle_exception!(boom) - ensure - after_filter! unless env['sinatra.static_file'] - end - - def handle_not_found!(boom) - @env['sinatra.error'] = boom - @response.status = 404 - @response.headers['X-Cascade'] = 'pass' - @response.body = ['

    Not Found

    '] - error_block! boom.class, NotFound - end - - def handle_exception!(boom) - @env['sinatra.error'] = boom - - dump_errors!(boom) if settings.dump_errors? - raise boom if settings.raise_errors? || settings.show_exceptions? - - @response.status = 500 - error_block! boom.class, Exception - end - - # Find an custom error block for the key(s) specified. - def error_block!(*keys) - keys.each do |key| - base = self.class - while base.respond_to?(:errors) - if block = base.errors[key] - # found a handler, eval and return result - res = instance_eval(&block) - return res - else - base = base.superclass - end - end - end - nil - end - - def dump_errors!(boom) - backtrace = clean_backtrace(boom.backtrace) - msg = ["#{boom.class} - #{boom.message}:", - *backtrace].join("\n ") - @env['rack.errors'].puts(msg) - end - - def clean_backtrace(trace) - return trace unless settings.clean_trace? - - trace.reject { |line| - line =~ /lib\/sinatra.*\.rb/ || - (defined?(Gem) && line.include?(Gem.dir)) - }.map! { |line| line.gsub(/^\.\//, '') } - end - - class << self - attr_reader :routes, :before_filters, :after_filters, :templates, :errors - - def reset! - @conditions = [] - @routes = {} - @before_filters = [] - @after_filters = [] - @errors = {} - @middleware = [] - @prototype = nil - @extensions = [] - - if superclass.respond_to?(:templates) - @templates = Hash.new { |hash,key| superclass.templates[key] } - else - @templates = {} - end - end - - # Extension modules registered on this class and all superclasses. - def extensions - if superclass.respond_to?(:extensions) - (@extensions + superclass.extensions).uniq - else - @extensions - end - end - - # Middleware used in this class and all superclasses. - def middleware - if superclass.respond_to?(:middleware) - superclass.middleware + @middleware - else - @middleware - end - end - - # Sets an option to the given value. If the value is a proc, - # the proc will be called every time the option is accessed. - def set(option, value=self) - if value.kind_of?(Proc) - metadef(option, &value) - metadef("#{option}?") { !!__send__(option) } - metadef("#{option}=") { |val| set(option, Proc.new{val}) } - elsif value == self && option.respond_to?(:to_hash) - option.to_hash.each { |k,v| set(k, v) } - elsif respond_to?("#{option}=") - __send__ "#{option}=", value - else - set option, Proc.new{value} - end - self - end - - # Same as calling `set :option, true` for each of the given options. - def enable(*opts) - opts.each { |key| set(key, true) } - end - - # Same as calling `set :option, false` for each of the given options. - def disable(*opts) - opts.each { |key| set(key, false) } - end - - # Define a custom error handler. Optionally takes either an Exception - # class, or an HTTP status code to specify which errors should be - # handled. - def error(codes=Exception, &block) - Array(codes).each { |code| @errors[code] = block } - end - - # Sugar for `error(404) { ... }` - def not_found(&block) - error 404, &block - end - - # Define a named template. The block must return the template source. - def template(name, &block) - filename, line = caller_locations.first - templates[name] = [block, filename, line.to_i] - end - - # Define the layout template. The block must return the template source. - def layout(name=:layout, &block) - template name, &block - end - - # Load embeded templates from the file; uses the caller's __FILE__ - # when no file is specified. - def inline_templates=(file=nil) - file = (file.nil? || file == true) ? caller_files.first : file - - begin - app, data = - ::IO.read(file).gsub("\r\n", "\n").split(/^__END__$/, 2) - rescue Errno::ENOENT - app, data = nil - end - - if data - lines = app.count("\n") + 1 - template = nil - data.each_line do |line| - lines += 1 - if line =~ /^@@\s*(.*)/ - template = '' - templates[$1.to_sym] = [template, file, lines] - elsif template - template << line - end - end - end - end - - # Lookup or register a mime type in Rack's mime registry. - def mime_type(type, value=nil) - return type if type.nil? || type.to_s.include?('/') - type = ".#{type}" unless type.to_s[0] == ?. - return Rack::Mime.mime_type(type, nil) unless value - Rack::Mime::MIME_TYPES[type] = value - end - - # Define a before filter; runs before all requests within the same - # context as route handlers and may access/modify the request and - # response. - def before(&block) - @before_filters << block - end - - # Define an after filter; runs after all requests within the same - # context as route handlers and may access/modify the request and - # response. - def after(&block) - @after_filters << block - end - - # Add a route condition. The route is considered non-matching when the - # block returns false. - def condition(&block) - @conditions << block - end - - private - def host_name(pattern) - condition { pattern === request.host } - end - - def user_agent(pattern) - condition { - if request.user_agent =~ pattern - @params[:agent] = $~[1..-1] - true - else - false - end - } - end - alias_method :agent, :user_agent - - def provides(*types) - types = [types] unless types.kind_of? Array - types.map!{|t| mime_type(t)} - - condition { - matching_types = (request.accept & types) - unless matching_types.empty? - response.headers['Content-Type'] = matching_types.first - true - else - false - end - } - end - - public - # Defining a `GET` handler also automatically defines - # a `HEAD` handler. - def get(path, opts={}, &block) - conditions = @conditions.dup - route('GET', path, opts, &block) - - @conditions = conditions - route('HEAD', path, opts, &block) - end - - def put(path, opts={}, &bk); route 'PUT', path, opts, &bk end - def post(path, opts={}, &bk); route 'POST', path, opts, &bk end - def delete(path, opts={}, &bk); route 'DELETE', path, opts, &bk end - def head(path, opts={}, &bk); route 'HEAD', path, opts, &bk end - - private - def route(verb, path, options={}, &block) - # Because of self.options.host - host_name(options.delete(:host)) if options.key?(:host) - - options.each {|option, args| send(option, *args)} - - pattern, keys = compile(path) - conditions, @conditions = @conditions, [] - - define_method "#{verb} #{path}", &block - unbound_method = instance_method("#{verb} #{path}") - block = - if block.arity != 0 - proc { unbound_method.bind(self).call(*@block_params) } - else - proc { unbound_method.bind(self).call } - end - - invoke_hook(:route_added, verb, path, block) - - (@routes[verb] ||= []). - push([pattern, keys, conditions, block]).last - end - - def invoke_hook(name, *args) - extensions.each { |e| e.send(name, *args) if e.respond_to?(name) } - end - - def compile(path) - keys = [] - if path.respond_to? :to_str - special_chars = %w{. + ( )} - pattern = - path.to_str.gsub(/((:\w+)|[\*#{special_chars.join}])/) do |match| - case match - when "*" - keys << 'splat' - "(.*?)" - when *special_chars - Regexp.escape(match) - else - keys << $2[1..-1] - "([^/?&#]+)" - end - end - [/^#{pattern}$/, keys] - elsif path.respond_to?(:keys) && path.respond_to?(:match) - [path, path.keys] - elsif path.respond_to? :match - [path, keys] - else - raise TypeError, path - end - end - - public - # Makes the methods defined in the block and in the Modules given - # in `extensions` available to the handlers and templates - def helpers(*extensions, &block) - class_eval(&block) if block_given? - include(*extensions) if extensions.any? - end - - def register(*extensions, &block) - extensions << Module.new(&block) if block_given? - @extensions += extensions - extensions.each do |extension| - extend extension - extension.registered(self) if extension.respond_to?(:registered) - end - end - - def development?; environment == :development end - def production?; environment == :production end - def test?; environment == :test end - - # Set configuration options for Sinatra and/or the app. - # Allows scoping of settings for certain environments. - def configure(*envs, &block) - yield self if envs.empty? || envs.include?(environment.to_sym) - end - - # Use the specified Rack middleware - def use(middleware, *args, &block) - @prototype = nil - @middleware << [middleware, args, block] - end - - # Run the Sinatra app as a self-hosted server using - # Thin, Mongrel or WEBrick (in that order) - def run!(options={}) - set options - handler = detect_rack_handler - handler_name = handler.name.gsub(/.*::/, '') - puts "== Sinatra/#{Sinatra::VERSION} has taken the stage " + - "on #{port} for #{environment} with backup from #{handler_name}" unless handler_name =~/cgi/i - handler.run self, :Host => host, :Port => port do |server| - trap(:INT) do - ## Use thins' hard #stop! if available, otherwise just #stop - server.respond_to?(:stop!) ? server.stop! : server.stop - puts "\n== Sinatra has ended his set (crowd applauds)" unless handler_name =~/cgi/i - end - set :running, true - end - rescue Errno::EADDRINUSE => e - puts "== Someone is already performing on port #{port}!" - end - - # The prototype instance used to process requests. - def prototype - @prototype ||= new - end - - # Create a new instance of the class fronted by its middleware - # pipeline. The object is guaranteed to respond to #call but may not be - # an instance of the class new was called on. - def new(*args, &bk) - builder = Rack::Builder.new - builder.use Rack::Session::Cookie if sessions? - builder.use Rack::CommonLogger if logging? - builder.use Rack::MethodOverride if methodoverride? - builder.use ShowExceptions if show_exceptions? - middleware.each { |c,a,b| builder.use(c, *a, &b) } - - builder.run super - builder.to_app - end - - def call(env) - synchronize { prototype.call(env) } - end - - private - def detect_rack_handler - servers = Array(self.server) - servers.each do |server_name| - begin - return Rack::Handler.get(server_name.downcase) - rescue LoadError - rescue NameError - end - end - fail "Server handler (#{servers.join(',')}) not found." - end - - def inherited(subclass) - subclass.reset! - super - end - - @@mutex = Mutex.new - def synchronize(&block) - if lock? - @@mutex.synchronize(&block) - else - yield - end - end - - def metadef(message, &block) - (class << self; self; end). - send :define_method, message, &block - end - - public - CALLERS_TO_IGNORE = [ - /\/sinatra(\/(base|main|showexceptions))?\.rb$/, # all sinatra code - /lib\/tilt.*\.rb$/, # all tilt code - /\(.*\)/, # generated code - /custom_require\.rb$/, # rubygems require hacks - /active_support/, # active_support require hacks - ] - - # add rubinius (and hopefully other VM impls) ignore patterns ... - CALLERS_TO_IGNORE.concat(RUBY_IGNORE_CALLERS) if defined?(RUBY_IGNORE_CALLERS) - - # Like Kernel#caller but excluding certain magic entries and without - # line / method information; the resulting array contains filenames only. - def caller_files - caller_locations. - map { |file,line| file } - end - - def caller_locations - caller(1). - map { |line| line.split(/:(?=\d|in )/)[0,2] }. - reject { |file,line| CALLERS_TO_IGNORE.any? { |pattern| file =~ pattern } } - end - end - - reset! - - set :environment, (ENV['RACK_ENV'] || :development).to_sym - set :raise_errors, Proc.new { !development? } - set :dump_errors, Proc.new { development? } - set :show_exceptions, Proc.new { development? } - set :clean_trace, true - set :sessions, false - set :logging, false - set :methodoverride, false - - set :run, false # start server via at-exit hook? - set :running, false # is the built-in server running now? - set :server, %w[thin mongrel webrick] - set :host, '0.0.0.0' - set :port, 4567 - - set :app_file, nil - set :root, Proc.new { app_file && File.expand_path(File.dirname(app_file)) } - set :views, Proc.new { root && File.join(root, 'views') } - set :reload_templates, Proc.new { !development? } - set :lock, false - - set :public, Proc.new { root && File.join(root, 'public') } - set :static, Proc.new { self.public && File.exist?(self.public) } - - error ::Exception do - response.status = 500 - content_type 'text/html' - '

    Internal Server Error

    ' - end - - configure :development do - get '/__sinatra__/:image.png' do - filename = File.dirname(__FILE__) + "/images/#{params[:image]}.png" - content_type :png - send_file filename - end - - error NotFound do - content_type 'text/html' - - (<<-HTML).gsub(/^ {8}/, '') - - - - - - -

    Sinatra doesn't know this ditty.

    - -
    - Try this: -
    #{request.request_method.downcase} '#{request.path_info}' do\n  "Hello World"\nend
    -
    - - - HTML - end - end - end - - # Execution context for classic style (top-level) applications. All - # DSL methods executed on main are delegated to this class. - # - # The Application class should not be subclassed, unless you want to - # inherit all settings, routes, handlers, and error pages from the - # top-level. Subclassing Sinatra::Base is heavily recommended for - # modular applications. - class Application < Base - set :raise_errors, Proc.new { test? } - set :dump_errors, true - set :sessions, false - set :logging, Proc.new { ! test? } - set :methodoverride, true - set :run, Proc.new { ! test? } - set :static, true - - def self.register(*extensions, &block) #:nodoc: - added_methods = extensions.map {|m| m.public_instance_methods }.flatten - Delegator.delegate(*added_methods) - super(*extensions, &block) - end - end - - # Sinatra delegation mixin. Mixing this module into an object causes all - # methods to be delegated to the Sinatra::Application class. Used primarily - # at the top-level. - module Delegator #:nodoc: - def self.delegate(*methods) - methods.each do |method_name| - eval <<-RUBY, binding, '(__DELEGATE__)', 1 - def #{method_name}(*args, &b) - ::Sinatra::Application.send(#{method_name.inspect}, *args, &b) - end - private #{method_name.inspect} - RUBY - end - end - - delegate :get, :put, :post, :delete, :head, :template, :layout, - :before, :after, :error, :not_found, :configure, :set, :mime_type, - :enable, :disable, :use, :development?, :test?, :production?, - :helpers, :settings - end - - # Create a new Sinatra application. The block is evaluated in the new app's - # class scope. - def self.new(base=Base, options={}, &block) - base = Class.new(base) - base.send :class_eval, &block if block_given? - base - end - - # Extend the top-level DSL with the modules provided. - def self.register(*extensions, &block) - Application.register(*extensions, &block) - end - - # Include the helper modules provided in Sinatra's request context. - def self.helpers(*extensions, &block) - Application.helpers(*extensions, &block) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/images/404.png b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/images/404.png deleted file mode 100644 index 902110e16191774a1e91bafb86b9a6e9d5c12357..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23305 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 Jy^eFt{{fdPQLz93 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/images/500.png b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/images/500.png deleted file mode 100644 index 57c84c3d966c190121141e56c38759bb24aaae2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31056 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 A2LJ#7 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/main.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/main.rb deleted file mode 100644 index d0afbfe3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/main.rb +++ /dev/null @@ -1,28 +0,0 @@ -require 'sinatra/base' - -module Sinatra - class Application < Base - - # we assume that the first file that requires 'sinatra' is the - # app_file. all other path related options are calculated based - # on this path by default. - set :app_file, caller_files.first || $0 - - set :run, Proc.new { $0 == app_file } - - if run? && ARGV.any? - require 'optparse' - OptionParser.new { |op| - op.on('-x') { set :lock, true } - op.on('-e env') { |val| set :environment, val.to_sym } - op.on('-s server') { |val| set :server, val } - op.on('-p port') { |val| set :port, val.to_i } - op.on('-h addr') { |val| set :host, val } - }.parse!(ARGV.dup) - end - end - - at_exit { Application.run! if $!.nil? && Application.run? } -end - -include Sinatra::Delegator diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/showexceptions.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/showexceptions.rb deleted file mode 100644 index 86738c97..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/showexceptions.rb +++ /dev/null @@ -1,307 +0,0 @@ -require 'rack/showexceptions' - -module Sinatra - class ShowExceptions < Rack::ShowExceptions - def initialize(app) - @app = app - @template = ERB.new(TEMPLATE) - end - - def frame_class(frame) - if frame.filename =~ /lib\/sinatra.*\.rb/ - "framework" - elsif (defined?(Gem) && frame.filename.include?(Gem.dir)) || - frame.filename =~ /\/bin\/(\w+)$/ - "system" - else - "app" - end - end - -TEMPLATE = < - - - - <%=h exception.class %> at <%=h path %> - - - - - - -
    - - -
    -

    BACKTRACE

    -

    (expand)

    - -
    - -
      - - <% id = 1 %> - <% frames.each do |frame| %> - <% if frame.context_line && frame.context_line != "#" %> - -
    • - <%=h frame.filename %> in - <%=h frame.function %> -
    • - -
    • - <% if frame.pre_context %> -
        - <% frame.pre_context.each do |line| %> -
      1. <%=h line %>
      2. - <% end %> -
      - <% end %> - -
        -
      1. <%= - h frame.context_line %>
      2. -
      - - <% if frame.post_context %> -
        - <% frame.post_context.each do |line| %> -
      1. <%=h line %>
      2. - <% end %> -
      - <% end %> -
      -
    • - - <% end %> - - <% id += 1 %> - <% end %> - -
    -
    - -
    -

    GET

    - <% unless req.GET.empty? %> - - - - - - <% req.GET.sort_by { |k, v| k.to_s }.each { |key, val| %> - - - - - <% } %> -
    VariableValue
    <%=h key %>
    <%=h val.inspect %>
    - <% else %> -

    No GET data.

    - <% end %> -
    -
    - -
    -

    POST

    - <% unless req.POST.empty? %> - - - - - - <% req.POST.sort_by { |k, v| k.to_s }.each { |key, val| %> - - - - - <% } %> -
    VariableValue
    <%=h key %>
    <%=h val.inspect %>
    - <% else %> -

    No POST data.

    - <% end %> -
    -
    - -
    - - <% unless req.cookies.empty? %> - - - - - - <% req.cookies.each { |key, val| %> - - - - - <% } %> -
    VariableValue
    <%=h key %>
    <%=h val.inspect %>
    - <% else %> -

    No cookie data.

    - <% end %> -
    -
    - -
    -

    Rack ENV

    - - - - - - <% env.sort_by { |k, v| k.to_s }.each { |key, val| %> - - - - - <% } %> -
    VariableValue
    <%=h key %>
    <%=h val %>
    -
    -
    - -

    You're seeing this error because you have -enabled the show_exceptions setting.

    -
    - - -HTML - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/tilt.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/tilt.rb deleted file mode 100644 index a5bd72d5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/lib/sinatra/tilt.rb +++ /dev/null @@ -1,509 +0,0 @@ -module Tilt - VERSION = '0.4' - - @template_mappings = {} - - # Hash of template path pattern => template implementation - # class mappings. - def self.mappings - @template_mappings - end - - # Register a template implementation by file extension. - def self.register(ext, template_class) - ext = ext.to_s.sub(/^\./, '') - mappings[ext.downcase] = template_class - end - - # Create a new template for the given file using the file's extension - # to determine the the template mapping. - def self.new(file, line=nil, options={}, &block) - if template_class = self[file] - template_class.new(file, line, options, &block) - else - fail "No template engine registered for #{File.basename(file)}" - end - end - - # Lookup a template class given for the given filename or file - # extension. Return nil when no implementation is found. - def self.[](file) - if @template_mappings.key?(pattern = file.to_s.downcase) - @template_mappings[pattern] - elsif @template_mappings.key?(pattern = File.basename(pattern)) - @template_mappings[pattern] - else - while !pattern.empty? - if @template_mappings.key?(pattern) - return @template_mappings[pattern] - else - pattern = pattern.sub(/^[^.]*\.?/, '') - end - end - nil - end - end - - - # Base class for template implementations. Subclasses must implement - # the #compile! method and one of the #evaluate or #template_source - # methods. - class Template - # Template source; loaded from a file or given directly. - attr_reader :data - - # The name of the file where the template data was loaded from. - attr_reader :file - - # The line number in #file where template data was loaded from. - attr_reader :line - - # A Hash of template engine specific options. This is passed directly - # to the underlying engine and is not used by the generic template - # interface. - attr_reader :options - - # Create a new template with the file, line, and options specified. By - # default, template data is read from the file specified. When a block - # is given, it should read template data and return as a String. When - # file is nil, a block is required. - # - # The #initialize_engine method is called if this is the very first - # time this template subclass has been initialized. - def initialize(file=nil, line=1, options={}, &block) - raise ArgumentError, "file or block required" if file.nil? && block.nil? - options, line = line, 1 if line.is_a?(Hash) - @file = file - @line = line || 1 - @options = options || {} - @reader = block || lambda { |t| File.read(file) } - - if !self.class.engine_initialized - initialize_engine - self.class.engine_initialized = true - end - end - - # Called once and only once for each template subclass the first time - # the template class is initialized. This should be used to require the - # underlying template library and perform any initial setup. - def initialize_engine - end - @engine_initialized = false - class << self ; attr_accessor :engine_initialized ; end - - - # Load template source and compile the template. The template is - # loaded and compiled the first time this method is called; subsequent - # calls are no-ops. - def compile - if @data.nil? - @data = @reader.call(self) - compile! - end - end - - # Render the template in the given scope with the locals specified. If a - # block is given, it is typically available within the template via - # +yield+. - def render(scope=Object.new, locals={}, &block) - compile - evaluate scope, locals || {}, &block - end - - # The basename of the template file. - def basename(suffix='') - File.basename(file, suffix) if file - end - - # The template file's basename with all extensions chomped off. - def name - basename.split('.', 2).first if basename - end - - # The filename used in backtraces to describe the template. - def eval_file - file || '(__TEMPLATE__)' - end - - protected - # Do whatever preparation is necessary to "compile" the template. - # Called immediately after template #data is loaded. Instance variables - # set in this method are available when #evaluate is called. - # - # Subclasses must provide an implementation of this method. - def compile! - raise NotImplementedError - end - - # Process the template and return the result. Subclasses should override - # this method unless they implement the #template_source. - def evaluate(scope, locals, &block) - source, offset = local_assignment_code(locals) - source = [source, template_source].join("\n") - scope.instance_eval source, eval_file, line - offset - end - - # Return a string containing the (Ruby) source code for the template. The - # default Template#evaluate implementation requires this method be - # defined. - def template_source - raise NotImplementedError - end - - private - def local_assignment_code(locals) - return ['', 1] if locals.empty? - source = locals.collect { |k,v| "#{k} = locals[:#{k}]" } - [source.join("\n"), source.length] - end - - def require_template_library(name) - if Thread.list.size > 1 - warn "WARN: tilt autoloading '#{name}' in a non thread-safe way; " + - "explicit require '#{name}' suggested." - end - require name - end - end - - # Extremely simple template cache implementation. Calling applications - # create a Tilt::Cache instance and use #fetch with any set of hashable - # arguments (such as those to Tilt.new): - # cache = Tilt::Cache.new - # cache.fetch(path, line, options) { Tilt.new(path, line, options) } - # - # Subsequent invocations return the already compiled template object. - class Cache - def initialize - @cache = {} - end - - def fetch(*key) - @cache[key] ||= yield - end - - def clear - @cache = {} - end - end - - - # Template Implementations ================================================ - - - # The template source is evaluated as a Ruby string. The #{} interpolation - # syntax can be used to generated dynamic output. - class StringTemplate < Template - def compile! - @code = "%Q{#{data}}" - end - - def template_source - @code - end - end - register 'str', StringTemplate - - - # ERB template implementation. See: - # http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/classes/ERB.html - class ERBTemplate < Template - def initialize_engine - require_template_library 'erb' unless defined? ::ERB - end - - def compile! - @engine = ::ERB.new(data, options[:safe], options[:trim], '@_out_buf') - end - - def template_source - @engine.src - end - - def evaluate(scope, locals, &block) - source, offset = local_assignment_code(locals) - source = [source, template_source].join("\n") - - original_out_buf = - scope.instance_variables.any? { |var| var.to_sym == :@_out_buf } && - scope.instance_variable_get(:@_out_buf) - - scope.instance_eval source, eval_file, line - offset - - output = scope.instance_variable_get(:@_out_buf) - scope.instance_variable_set(:@_out_buf, original_out_buf) - - output - end - - private - - # ERB generates a line to specify the character coding of the generated - # source in 1.9. Account for this in the line offset. - if RUBY_VERSION >= '1.9.0' - def local_assignment_code(locals) - source, offset = super - [source, offset + 1] - end - end - end - %w[erb rhtml].each { |ext| register ext, ERBTemplate } - - - # Erubis template implementation. See: - # http://www.kuwata-lab.com/erubis/ - class ErubisTemplate < ERBTemplate - def initialize_engine - require_template_library 'erubis' unless defined? ::Erubis - end - - def compile! - Erubis::Eruby.class_eval(%Q{def add_preamble(src) src << "@_out_buf = _buf = '';" end}) - @engine = ::Erubis::Eruby.new(data, options) - end - - private - - # Erubis doesn't have ERB's line-off-by-one under 1.9 problem. Override - # and adjust back. - if RUBY_VERSION >= '1.9.0' - def local_assignment_code(locals) - source, offset = super - [source, offset - 1] - end - end - end - register 'erubis', ErubisTemplate - - - # Haml template implementation. See: - # http://haml.hamptoncatlin.com/ - class HamlTemplate < Template - def initialize_engine - require_template_library 'haml' unless defined? ::Haml::Engine - end - - def compile! - @engine = ::Haml::Engine.new(data, haml_options) - end - - def evaluate(scope, locals, &block) - @engine.render(scope, locals, &block) - end - - private - def haml_options - options.merge(:filename => eval_file, :line => line) - end - end - register 'haml', HamlTemplate - - - # Sass template implementation. See: - # http://haml.hamptoncatlin.com/ - # - # Sass templates do not support object scopes, locals, or yield. - class SassTemplate < Template - def initialize_engine - require_template_library 'sass' unless defined? ::Sass::Engine - end - - def compile! - @engine = ::Sass::Engine.new(data, sass_options) - end - - def evaluate(scope, locals, &block) - @engine.render - end - - private - def sass_options - options.merge(:filename => eval_file, :line => line) - end - end - register 'sass', SassTemplate - - - # Builder template implementation. See: - # http://builder.rubyforge.org/ - class BuilderTemplate < Template - def initialize_engine - require_template_library 'builder' unless defined?(::Builder) - end - - def compile! - end - - def evaluate(scope, locals, &block) - xml = ::Builder::XmlMarkup.new(:indent => 2) - if data.respond_to?(:to_str) - locals[:xml] = xml - super(scope, locals, &block) - elsif data.kind_of?(Proc) - data.call(xml) - end - xml.target! - end - - def template_source - data.to_str - end - end - register 'builder', BuilderTemplate - - - # Liquid template implementation. See: - # http://liquid.rubyforge.org/ - # - # Liquid is designed to be a *safe* template system and threfore - # does not provide direct access to execuatable scopes. In order to - # support a +scope+, the +scope+ must be able to represent itself - # as a hash by responding to #to_h. If the +scope+ does not respond - # to #to_h it will be ignored. - # - # LiquidTemplate does not support yield blocks. - # - # It's suggested that your program require 'liquid' at load - # time when using this template engine. - class LiquidTemplate < Template - def initialize_engine - require_template_library 'liquid' unless defined? ::Liquid::Template - end - - def compile! - @engine = ::Liquid::Template.parse(data) - end - - def evaluate(scope, locals, &block) - locals = locals.inject({}){ |h,(k,v)| h[k.to_s] = v ; h } - if scope.respond_to?(:to_h) - scope = scope.to_h.inject({}){ |h,(k,v)| h[k.to_s] = v ; h } - locals = scope.merge(locals) - end - # TODO: Is it possible to lazy yield ? - locals['yield'] = block.nil? ? '' : yield - locals['content'] = block.nil? ? '' : yield - @engine.render(locals) - end - end - register 'liquid', LiquidTemplate - - - # Discount Markdown implementation. See: - # http://github.com/rtomayko/rdiscount - # - # RDiscount is a simple text filter. It does not support +scope+ or - # +locals+. The +:smart+ and +:filter_html+ options may be set true - # to enable those flags on the underlying RDiscount object. - class RDiscountTemplate < Template - def flags - [:smart, :filter_html].select { |flag| options[flag] } - end - - def initialize_engine - require_template_library 'rdiscount' unless defined? ::RDiscount - end - - def compile! - @engine = RDiscount.new(data, *flags) - end - - def evaluate(scope, locals, &block) - @engine.to_html - end - end - register 'markdown', RDiscountTemplate - register 'mkd', RDiscountTemplate - register 'md', RDiscountTemplate - - -# RedCloth implementation. See: -# http://redcloth.org/ -class RedClothTemplate < Template - def initialize_engine - require_template_library 'redcloth' unless defined? ::RedCloth - end - - def compile! - @engine = RedCloth.new(data) - end - - def evaluate(scope, locals, &block) - @engine.to_html - end -end -register 'textile', RedClothTemplate - - - # Mustache is written and maintained by Chris Wanstrath. See: - # http://github.com/defunkt/mustache - # - # When a scope argument is provided to MustacheTemplate#render, the - # instance variables are copied from the scope object to the Mustache - # view. - class MustacheTemplate < Template - attr_reader :engine - - def initialize_engine - require_template_library 'mustache' unless defined? ::Mustache - end - - def compile! - Mustache.view_namespace = options[:namespace] - @engine = options[:view] || Mustache.view_class(name) - options.each do |key, value| - next if %w[view namespace mustaches].include?(key.to_s) - @engine.send("#{key}=", value) if @engine.respond_to? "#{key}=" - end - end - - def evaluate(scope=nil, locals={}, &block) - instance = @engine.new - - # copy instance variables from scope to the view - scope.instance_variables.each do |name| - instance.instance_variable_set(name, scope.instance_variable_get(name)) - end - - # locals get added to the view's context - locals.each do |local, value| - instance[local] = value - end - - # if we're passed a block it's a subview. Sticking it in yield - # lets us use {{yield}} in layout.html to render the actual page. - instance[:yield] = block.call if block - - instance.template = data unless instance.compiled? - - instance.to_html - end - end - register 'mustache', MustacheTemplate - - # RDoc template. See: - # http://rdoc.rubyforge.org/ - # - # It's suggested that your program require 'rdoc/markup' and - # 'rdoc/markup/to_html' at load time when using this template - # engine. - class RDocTemplate < Template - def initialize_engine - unless defined?(::RDoc::Markup) - require_template_library 'rdoc/markup' - require_template_library 'rdoc/markup/to_html' - end - end - - def compile! - markup = RDoc::Markup::ToHtml.new - @engine = markup.convert(data) - end - - def evaluate(scope, locals, &block) - @engine.to_s - end - end - register 'rdoc', RDocTemplate -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/sinatra.gemspec b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/sinatra.gemspec deleted file mode 100644 index 9804c57d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/sinatra.gemspec +++ /dev/null @@ -1,91 +0,0 @@ -Gem::Specification.new do |s| - s.specification_version = 2 if s.respond_to? :specification_version= - s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= - - s.name = 'sinatra' - s.version = '1.0.a' - s.date = '2010-01-28' - - s.description = "Classy web-development dressed in a DSL" - s.summary = "Classy web-development dressed in a DSL" - - s.authors = ["Blake Mizerany", "Ryan Tomayko", "Simon Rozet"] - s.email = "sinatrarb@googlegroups.com" - - # = MANIFEST = - s.files = %w[ - AUTHORS - CHANGES - LICENSE - README.jp.rdoc - README.rdoc - Rakefile - lib/sinatra.rb - lib/sinatra/base.rb - lib/sinatra/images/404.png - lib/sinatra/images/500.png - lib/sinatra/main.rb - lib/sinatra/showexceptions.rb - lib/sinatra/tilt.rb - sinatra.gemspec - test/base_test.rb - test/builder_test.rb - test/contest.rb - test/erb_test.rb - test/erubis_test.rb - test/extensions_test.rb - test/filter_test.rb - test/haml_test.rb - test/helper.rb - test/helpers_test.rb - test/mapped_error_test.rb - test/middleware_test.rb - test/public/favicon.ico - test/request_test.rb - test/response_test.rb - test/result_test.rb - test/route_added_hook_test.rb - test/routing_test.rb - test/sass_test.rb - test/server_test.rb - test/settings_test.rb - test/sinatra_test.rb - test/static_test.rb - test/templates_test.rb - test/views/error.builder - test/views/error.erb - test/views/error.erubis - test/views/error.haml - test/views/error.sass - test/views/foo/hello.test - test/views/hello.builder - test/views/hello.erb - test/views/hello.erubis - test/views/hello.haml - test/views/hello.sass - test/views/hello.test - test/views/layout2.builder - test/views/layout2.erb - test/views/layout2.erubis - test/views/layout2.haml - test/views/layout2.test - ] - # = MANIFEST = - - s.test_files = s.files.select {|path| path =~ /^test\/.*_test.rb/} - - s.extra_rdoc_files = %w[README.rdoc LICENSE] - s.add_dependency 'rack', '>= 1.0' - s.add_development_dependency 'shotgun', '>= 0.6', '< 1.0' - s.add_development_dependency 'rack-test', '>= 0.3.0' - s.add_development_dependency 'haml' - s.add_development_dependency 'builder' - s.add_development_dependency 'erubis' - - s.has_rdoc = true - s.homepage = "http://sinatra.rubyforge.org" - s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Sinatra", "--main", "README.rdoc"] - s.require_paths = %w[lib] - s.rubyforge_project = 'sinatra' - s.rubygems_version = '1.1.1' -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/base_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/base_test.rb deleted file mode 100644 index 7a5d1130..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/base_test.rb +++ /dev/null @@ -1,160 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class BaseTest < Test::Unit::TestCase - def test_default - assert true - end - - describe 'Sinatra::Base subclasses' do - class TestApp < Sinatra::Base - get '/' do - 'Hello World' - end - end - - it 'include Rack::Utils' do - assert TestApp.included_modules.include?(Rack::Utils) - end - - it 'processes requests with #call' do - assert TestApp.respond_to?(:call) - - request = Rack::MockRequest.new(TestApp) - response = request.get('/') - assert response.ok? - assert_equal 'Hello World', response.body - end - - class TestApp < Sinatra::Base - get '/state' do - @foo ||= "new" - body = "Foo: #{@foo}" - @foo = 'discard' - body - end - end - - it 'does not maintain state between requests' do - request = Rack::MockRequest.new(TestApp) - 2.times do - response = request.get('/state') - assert response.ok? - assert_equal 'Foo: new', response.body - end - end - - it "passes the subclass to configure blocks" do - ref = nil - TestApp.configure { |app| ref = app } - assert_equal TestApp, ref - end - - it "allows the configure block arg to be omitted and does not change context" do - context = nil - TestApp.configure { context = self } - assert_equal self, context - end - end - - describe "Sinatra::Base as Rack middleware" do - app = lambda { |env| - headers = {'X-Downstream' => 'true'} - headers['X-Route-Missing'] = env['sinatra.route-missing'] || '' - [210, headers, ['Hello from downstream']] } - - class TestMiddleware < Sinatra::Base - end - - it 'creates a middleware that responds to #call with .new' do - middleware = TestMiddleware.new(app) - assert middleware.respond_to?(:call) - end - - it 'exposes the downstream app' do - middleware = TestMiddleware.new(app) - assert_same app, middleware.app - end - - class TestMiddleware < Sinatra::Base - def route_missing - env['sinatra.route-missing'] = '1' - super - end - - get '/' do - 'Hello from middleware' - end - end - - middleware = TestMiddleware.new(app) - request = Rack::MockRequest.new(middleware) - - it 'intercepts requests' do - response = request.get('/') - assert response.ok? - assert_equal 'Hello from middleware', response.body - end - - it 'automatically forwards requests downstream when no matching route found' do - response = request.get('/missing') - assert_equal 210, response.status - assert_equal 'Hello from downstream', response.body - end - - it 'calls #route_missing before forwarding downstream' do - response = request.get('/missing') - assert_equal '1', response['X-Route-Missing'] - end - - class TestMiddleware < Sinatra::Base - get '/low-level-forward' do - app.call(env) - end - end - - it 'can call the downstream app directly and return result' do - response = request.get('/low-level-forward') - assert_equal 210, response.status - assert_equal 'true', response['X-Downstream'] - assert_equal 'Hello from downstream', response.body - end - - class TestMiddleware < Sinatra::Base - get '/explicit-forward' do - response['X-Middleware'] = 'true' - res = forward - assert_nil res - assert_equal 210, response.status - assert_equal 'true', response['X-Downstream'] - assert_equal ['Hello from downstream'], response.body - 'Hello after explicit forward' - end - end - - it 'forwards the request downstream and integrates the response into the current context' do - response = request.get('/explicit-forward') - assert_equal 210, response.status - assert_equal 'true', response['X-Downstream'] - assert_equal 'Hello after explicit forward', response.body - assert_equal '28', response['Content-Length'] - end - - app_content_length = lambda {|env| - [200, {'Content-Length' => '16'}, 'From downstream!']} - - class TestMiddlewareContentLength < Sinatra::Base - get '/forward' do - res = forward - 'From after explicit forward!' - end - end - - middleware_content_length = TestMiddlewareContentLength.new(app_content_length) - request_content_length = Rack::MockRequest.new(middleware_content_length) - - it "sets content length for last response" do - response = request_content_length.get('/forward') - assert_equal '28', response['Content-Length'] - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/builder_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/builder_test.rb deleted file mode 100644 index 04ab3a58..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/builder_test.rb +++ /dev/null @@ -1,65 +0,0 @@ -require File.dirname(__FILE__) + '/helper' -require 'builder' - -class BuilderTest < Test::Unit::TestCase - def builder_app(&block) - mock_app { - set :views, File.dirname(__FILE__) + '/views' - get '/', &block - } - get '/' - end - - it 'renders inline Builder strings' do - builder_app { builder 'xml.instruct!' } - assert ok? - assert_equal %{\n}, body - end - - it 'renders inline blocks' do - builder_app { - @name = "Frank & Mary" - builder do |xml| - xml.couple @name - end - } - assert ok? - assert_equal "Frank & Mary\n", body - end - - it 'renders .builder files in views path' do - builder_app { - @name = "Blue" - builder :hello - } - assert ok? - assert_equal %(You're my boy, Blue!\n), body - end - - it "renders with inline layouts" do - mock_app { - layout do - %(xml.layout { xml << yield }) - end - get('/') { builder %(xml.em 'Hello World') } - } - get '/' - assert ok? - assert_equal "\nHello World\n\n", body - end - - it "renders with file layouts" do - builder_app { - builder %(xml.em 'Hello World'), :layout => :layout2 - } - assert ok? - assert_equal "\nHello World\n\n", body - end - - it "raises error if template not found" do - mock_app { - get('/') { builder :no_such_template } - } - assert_raise(Errno::ENOENT) { get('/') } - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/contest.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/contest.rb deleted file mode 100644 index de716010..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/contest.rb +++ /dev/null @@ -1,64 +0,0 @@ -require "test/unit" - -# Test::Unit loads a default test if the suite is empty, and the only -# purpose of that test is to fail. As having empty contexts is a common -# practice, we decided to overwrite TestSuite#empty? in order to -# allow them. Having a failure when no tests have been defined seems -# counter-intuitive. -class Test::Unit::TestSuite - unless method_defined?(:empty?) - def empty? - false - end - end -end - -# We added setup, test and context as class methods, and the instance -# method setup now iterates on the setup blocks. Note that all setup -# blocks must be defined with the block syntax. Adding a setup instance -# method defeats the purpose of this library. -class Test::Unit::TestCase - def self.setup(&block) - setup_blocks << block - end - - def setup - self.class.setup_blocks.each do |block| - instance_eval(&block) - end - end - - def self.context(name, &block) - subclass = Class.new(self.superclass) - subclass.setup_blocks.unshift(*setup_blocks) - subclass.class_eval(&block) - const_set(context_name(name), subclass) - end - - def self.test(name, &block) - define_method(test_name(name), &block) - end - - class << self - alias_method :should, :test - alias_method :describe, :context - end - -private - - def self.setup_blocks - @setup_blocks ||= [] - end - - def self.context_name(name) - "Test#{sanitize_name(name).gsub(/(^| )(\w)/) { $2.upcase }}".to_sym - end - - def self.test_name(name) - "test_#{sanitize_name(name).gsub(/\s+/,'_')}".to_sym - end - - def self.sanitize_name(name) - name.gsub(/\W+/, ' ').strip - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/erb_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/erb_test.rb deleted file mode 100644 index cc68c5ce..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/erb_test.rb +++ /dev/null @@ -1,81 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class ERBTest < Test::Unit::TestCase - def erb_app(&block) - mock_app { - set :views, File.dirname(__FILE__) + '/views' - get '/', &block - } - get '/' - end - - it 'renders inline ERB strings' do - erb_app { erb '<%= 1 + 1 %>' } - assert ok? - assert_equal '2', body - end - - it 'renders .erb files in views path' do - erb_app { erb :hello } - assert ok? - assert_equal "Hello World\n", body - end - - it 'takes a :locals option' do - erb_app { - locals = {:foo => 'Bar'} - erb '<%= foo %>', :locals => locals - } - assert ok? - assert_equal 'Bar', body - end - - it "renders with inline layouts" do - mock_app { - layout { 'THIS. IS. <%= yield.upcase %>!' } - get('/') { erb 'Sparta' } - } - get '/' - assert ok? - assert_equal 'THIS. IS. SPARTA!', body - end - - it "renders with file layouts" do - erb_app { - erb 'Hello World', :layout => :layout2 - } - assert ok? - assert_equal "ERB Layout!\nHello World\n", body - end - - it "renders erb with blocks" do - mock_app { - def container - @_out_buf << "THIS." - yield - @_out_buf << "SPARTA!" - end - def is; "IS." end - get '/' do - erb '<% container do %> <%= is %> <% end %>' - end - } - get '/' - assert ok? - assert_equal 'THIS. IS. SPARTA!', body - end - - it "can be used in a nested fashion for partials and whatnot" do - mock_app { - template(:inner) { "<%= 'hi' %>" } - template(:outer) { "<%= erb :inner %>" } - get '/' do - erb :outer - end - } - - get '/' - assert ok? - assert_equal 'hi', body - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/erubis_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/erubis_test.rb deleted file mode 100644 index 447f25fa..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/erubis_test.rb +++ /dev/null @@ -1,82 +0,0 @@ -require File.dirname(__FILE__) + '/helper' -require 'erubis' - -class ERubisTest < Test::Unit::TestCase - def erubis_app(&block) - mock_app { - set :views, File.dirname(__FILE__) + '/views' - get '/', &block - } - get '/' - end - - it 'renders inline ERubis strings' do - erubis_app { erubis '<%= 1 + 1 %>' } - assert ok? - assert_equal '2', body - end - - it 'renders .erubis files in views path' do - erubis_app { erubis :hello } - assert ok? - assert_equal "Hello World\n", body - end - - it 'takes a :locals option' do - erubis_app { - locals = {:foo => 'Bar'} - erubis '<%= foo %>', :locals => locals - } - assert ok? - assert_equal 'Bar', body - end - - it "renders with inline layouts" do - mock_app { - layout { 'THIS. IS. <%= yield.upcase %>!' } - get('/') { erubis 'Sparta' } - } - get '/' - assert ok? - assert_equal 'THIS. IS. SPARTA!', body - end - - it "renders with file layouts" do - erubis_app { - erubis 'Hello World', :layout => :layout2 - } - assert ok? - assert_equal "ERubis Layout!\nHello World\n", body - end - - it "renders erubis with blocks" do - mock_app { - def container - @_out_buf << "THIS." - yield - @_out_buf << "SPARTA!" - end - def is; "IS." end - get '/' do - erubis '<% container do %> <%= is %> <% end %>' - end - } - get '/' - assert ok? - assert_equal 'THIS. IS. SPARTA!', body - end - - it "can be used in a nested fashion for partials and whatnot" do - mock_app { - template(:inner) { "<%= 'hi' %>" } - template(:outer) { "<%= erubis :inner %>" } - get '/' do - erubis :outer - end - } - - get '/' - assert ok? - assert_equal 'hi', body - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/extensions_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/extensions_test.rb deleted file mode 100644 index 8e4a5438..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/extensions_test.rb +++ /dev/null @@ -1,100 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class ExtensionsTest < Test::Unit::TestCase - module FooExtensions - def foo - end - - private - def im_hiding_in_ur_foos - end - end - - module BarExtensions - def bar - end - end - - module BazExtensions - def baz - end - end - - module QuuxExtensions - def quux - end - end - - module PainExtensions - def foo=(name); end - def bar?(name); end - def fizz!(name); end - end - - it 'will add the methods to the DSL for the class in which you register them and its subclasses' do - Sinatra::Base.register FooExtensions - assert Sinatra::Base.respond_to?(:foo) - - Sinatra::Application.register BarExtensions - assert Sinatra::Application.respond_to?(:bar) - assert Sinatra::Application.respond_to?(:foo) - assert !Sinatra::Base.respond_to?(:bar) - end - - it 'allows extending by passing a block' do - Sinatra::Base.register { - def im_in_ur_anonymous_module; end - } - assert Sinatra::Base.respond_to?(:im_in_ur_anonymous_module) - end - - it 'will make sure any public methods added via Application#register are delegated to Sinatra::Delegator' do - Sinatra::Application.register FooExtensions - assert Sinatra::Delegator.private_instance_methods. - map { |m| m.to_sym }.include?(:foo) - assert !Sinatra::Delegator.private_instance_methods. - map { |m| m.to_sym }.include?(:im_hiding_in_ur_foos) - end - - it 'will handle special method names' do - Sinatra::Application.register PainExtensions - assert Sinatra::Delegator.private_instance_methods. - map { |m| m.to_sym }.include?(:foo=) - assert Sinatra::Delegator.private_instance_methods. - map { |m| m.to_sym }.include?(:bar?) - assert Sinatra::Delegator.private_instance_methods. - map { |m| m.to_sym }.include?(:fizz!) - end - - it 'will not delegate methods on Base#register' do - Sinatra::Base.register QuuxExtensions - assert !Sinatra::Delegator.private_instance_methods.include?("quux") - end - - it 'will extend the Sinatra::Application application by default' do - Sinatra.register BazExtensions - assert !Sinatra::Base.respond_to?(:baz) - assert Sinatra::Application.respond_to?(:baz) - end - - module BizzleExtension - def bizzle - bizzle_option - end - - def self.registered(base) - fail "base should be BizzleApp" unless base == BizzleApp - fail "base should have already extended BizzleExtension" unless base.respond_to?(:bizzle) - base.set :bizzle_option, 'bizzle!' - end - end - - class BizzleApp < Sinatra::Base - end - - it 'sends .registered to the extension module after extending the class' do - BizzleApp.register BizzleExtension - assert_equal 'bizzle!', BizzleApp.bizzle_option - assert_equal 'bizzle!', BizzleApp.bizzle - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/filter_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/filter_test.rb deleted file mode 100644 index b4bbda1a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/filter_test.rb +++ /dev/null @@ -1,221 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class BeforeFilterTest < Test::Unit::TestCase - it "executes filters in the order defined" do - count = 0 - mock_app do - get('/') { 'Hello World' } - before { - assert_equal 0, count - count = 1 - } - before { - assert_equal 1, count - count = 2 - } - end - - get '/' - assert ok? - assert_equal 2, count - assert_equal 'Hello World', body - end - - it "can modify the request" do - mock_app { - get('/foo') { 'foo' } - get('/bar') { 'bar' } - before { request.path_info = '/bar' } - } - - get '/foo' - assert ok? - assert_equal 'bar', body - end - - it "can modify instance variables available to routes" do - mock_app { - before { @foo = 'bar' } - get('/foo') { @foo } - } - - get '/foo' - assert ok? - assert_equal 'bar', body - end - - it "allows redirects" do - mock_app { - before { redirect '/bar' } - get('/foo') do - fail 'before block should have halted processing' - 'ORLY?!' - end - } - - get '/foo' - assert redirect? - assert_equal '/bar', response['Location'] - assert_equal '', body - end - - it "does not modify the response with its return value" do - mock_app { - before { 'Hello World!' } - get '/foo' do - assert_equal [], response.body - 'cool' - end - } - - get '/foo' - assert ok? - assert_equal 'cool', body - end - - it "does modify the response with halt" do - mock_app { - before { halt 302, 'Hi' } - get '/foo' do - "should not happen" - end - } - - get '/foo' - assert_equal 302, response.status - assert_equal 'Hi', body - end - - it "gives you access to params" do - mock_app { - before { @foo = params['foo'] } - get('/foo') { @foo } - } - - get '/foo?foo=cool' - assert ok? - assert_equal 'cool', body - end - - it "runs filters defined in superclasses" do - base = Class.new(Sinatra::Base) - base.before { @foo = 'hello from superclass' } - - mock_app(base) { - get('/foo') { @foo } - } - - get '/foo' - assert_equal 'hello from superclass', body - end - - it 'does not run before filter when serving static files' do - ran_filter = false - mock_app { - before { ran_filter = true } - set :static, true - set :public, File.dirname(__FILE__) - } - get "/#{File.basename(__FILE__)}" - assert ok? - assert_equal File.read(__FILE__), body - assert !ran_filter - end -end - -class AfterFilterTest < Test::Unit::TestCase - it "executes filters in the order defined" do - invoked = 0 - mock_app do - before { invoked = 2 } - get('/') { invoked += 2 } - after { invoked *= 2 } - end - - get '/' - assert ok? - - assert_equal 8, invoked - end - - it "executes filters in the order defined" do - count = 0 - mock_app do - get('/') { 'Hello World' } - after { - assert_equal 0, count - count = 1 - } - after { - assert_equal 1, count - count = 2 - } - end - - get '/' - assert ok? - assert_equal 2, count - assert_equal 'Hello World', body - end - - it "allows redirects" do - mock_app { - get('/foo') { 'ORLY' } - after { redirect '/bar' } - } - - get '/foo' - assert redirect? - assert_equal '/bar', response['Location'] - assert_equal '', body - end - - it "does not modify the response with its return value" do - mock_app { - get('/foo') { 'cool' } - after { 'Hello World!' } - } - - get '/foo' - assert ok? - assert_equal 'cool', body - end - - it "does modify the response with halt" do - mock_app { - get '/foo' do - "should not be returned" - end - after { halt 302, 'Hi' } - } - - get '/foo' - assert_equal 302, response.status - assert_equal 'Hi', body - end - - it "runs filters defined in superclasses" do - count = 2 - base = Class.new(Sinatra::Base) - base.after { count *= 2 } - mock_app(base) { - get('/foo') { count += 2 } - } - - get '/foo' - assert_equal 8, count - end - - it 'does not run after filter when serving static files' do - ran_filter = false - mock_app { - after { ran_filter = true } - set :static, true - set :public, File.dirname(__FILE__) - } - get "/#{File.basename(__FILE__)}" - assert ok? - assert_equal File.read(__FILE__), body - assert !ran_filter - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/haml_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/haml_test.rb deleted file mode 100644 index 3d6ed69e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/haml_test.rb +++ /dev/null @@ -1,90 +0,0 @@ -require File.dirname(__FILE__) + '/helper' -require 'haml' - -class HAMLTest < Test::Unit::TestCase - def haml_app(&block) - mock_app { - set :views, File.dirname(__FILE__) + '/views' - get '/', &block - } - get '/' - end - - it 'renders inline HAML strings' do - haml_app { haml '%h1 Hiya' } - assert ok? - assert_equal "

    Hiya

    \n", body - end - - it 'renders .haml files in views path' do - haml_app { haml :hello } - assert ok? - assert_equal "

    Hello From Haml

    \n", body - end - - it "renders with inline layouts" do - mock_app { - layout { %q(%h1= 'THIS. IS. ' + yield.upcase) } - get('/') { haml '%em Sparta' } - } - get '/' - assert ok? - assert_equal "

    THIS. IS. SPARTA

    \n", body - end - - it "renders with file layouts" do - haml_app { - haml 'Hello World', :layout => :layout2 - } - assert ok? - assert_equal "

    HAML Layout!

    \n

    Hello World

    \n", body - end - - it "raises error if template not found" do - mock_app { - get('/') { haml :no_such_template } - } - assert_raise(Errno::ENOENT) { get('/') } - end - - it "passes HAML options to the Haml engine" do - mock_app { - get '/' do - haml "!!!\n%h1 Hello World", :format => :html5 - end - } - get '/' - assert ok? - assert_equal "\n

    Hello World

    \n", body - end - - it "passes default HAML options to the Haml engine" do - mock_app { - set :haml, {:format => :html5} - get '/' do - haml "!!!\n%h1 Hello World" - end - } - get '/' - assert ok? - assert_equal "\n

    Hello World

    \n", body - end - - it "merges the default HAML options with the overrides and passes them to the Haml engine" do - mock_app { - set :haml, {:format => :html5, :attr_wrapper => '"'} # default HAML attr are - get '/' do - haml "!!!\n%h1{:class => :header} Hello World" - end - get '/html4' do - haml "!!!\n%h1{:class => 'header'} Hello World", :format => :html4 - end - } - get '/' - assert ok? - assert_equal "\n

    Hello World

    \n", body - get '/html4' - assert ok? - assert_match(/^ '/foo') - assert_equal 302, response.status - assert_equal '/foo', response['Location'] - end - end - - describe 'error' do - it 'sets a status code and halts' do - mock_app { - get '/' do - error 501 - fail 'error should halt' - end - } - - get '/' - assert_equal 501, status - assert_equal '', body - end - - it 'takes an optional body' do - mock_app { - get '/' do - error 501, 'FAIL' - fail 'error should halt' - end - } - - get '/' - assert_equal 501, status - assert_equal 'FAIL', body - end - - it 'uses a 500 status code when first argument is a body' do - mock_app { - get '/' do - error 'FAIL' - fail 'error should halt' - end - } - - get '/' - assert_equal 500, status - assert_equal 'FAIL', body - end - end - - describe 'not_found' do - it 'halts with a 404 status' do - mock_app { - get '/' do - not_found - fail 'not_found should halt' - end - } - - get '/' - assert_equal 404, status - assert_equal '', body - end - - it 'does not set a X-Cascade header' do - mock_app { - get '/' do - not_found - fail 'not_found should halt' - end - } - - get '/' - assert_equal 404, status - assert_equal nil, response.headers['X-Cascade'] - end - end - - describe 'headers' do - it 'sets headers on the response object when given a Hash' do - mock_app { - get '/' do - headers 'X-Foo' => 'bar', 'X-Baz' => 'bling' - 'kthx' - end - } - - get '/' - assert ok? - assert_equal 'bar', response['X-Foo'] - assert_equal 'bling', response['X-Baz'] - assert_equal 'kthx', body - end - - it 'returns the response headers hash when no hash provided' do - mock_app { - get '/' do - headers['X-Foo'] = 'bar' - 'kthx' - end - } - - get '/' - assert ok? - assert_equal 'bar', response['X-Foo'] - end - end - - describe 'session' do - it 'uses the existing rack.session' do - mock_app { - get '/' do - session[:foo] - end - } - - get '/', {}, { 'rack.session' => { :foo => 'bar' } } - assert_equal 'bar', body - end - - it 'creates a new session when none provided' do - mock_app { - enable :sessions - - get '/' do - assert session.empty? - session[:foo] = 'bar' - redirect '/hi' - end - - get '/hi' do - "hi #{session[:foo]}" - end - } - - get '/' - follow_redirect! - assert_equal 'hi bar', body - end - end - - describe 'mime_type' do - include Sinatra::Helpers - - it "looks up mime types in Rack's MIME registry" do - Rack::Mime::MIME_TYPES['.foo'] = 'application/foo' - assert_equal 'application/foo', mime_type('foo') - assert_equal 'application/foo', mime_type('.foo') - assert_equal 'application/foo', mime_type(:foo) - end - - it 'returns nil when given nil' do - assert mime_type(nil).nil? - end - - it 'returns nil when media type not registered' do - assert mime_type(:bizzle).nil? - end - - it 'returns the argument when given a media type string' do - assert_equal 'text/plain', mime_type('text/plain') - end - end - - test 'Base.mime_type registers mime type' do - mock_app { - mime_type :foo, 'application/foo' - - get '/' do - "foo is #{mime_type(:foo)}" - end - } - - get '/' - assert_equal 'foo is application/foo', body - end - - describe 'content_type' do - it 'sets the Content-Type header' do - mock_app { - get '/' do - content_type 'text/plain' - 'Hello World' - end - } - - get '/' - assert_equal 'text/plain', response['Content-Type'] - assert_equal 'Hello World', body - end - - it 'takes media type parameters (like charset=)' do - mock_app { - get '/' do - content_type 'text/html', :charset => 'utf-8' - "

    Hello, World

    " - end - } - - get '/' - assert ok? - assert_equal 'text/html;charset=utf-8', response['Content-Type'] - assert_equal "

    Hello, World

    ", body - end - - it "looks up symbols in Rack's mime types dictionary" do - Rack::Mime::MIME_TYPES['.foo'] = 'application/foo' - mock_app { - get '/foo.xml' do - content_type :foo - "I AM FOO" - end - } - - get '/foo.xml' - assert ok? - assert_equal 'application/foo', response['Content-Type'] - assert_equal 'I AM FOO', body - end - - it 'fails when no mime type is registered for the argument provided' do - mock_app { - get '/foo.xml' do - content_type :bizzle - "I AM FOO" - end - } - - assert_raise(RuntimeError) { get '/foo.xml' } - end - end - - describe 'send_file' do - setup do - @file = File.dirname(__FILE__) + '/file.txt' - File.open(@file, 'wb') { |io| io.write('Hello World') } - end - - def teardown - File.unlink @file - @file = nil - end - - def send_file_app(opts={}) - path = @file - mock_app { - get '/file.txt' do - send_file path, opts - end - } - end - - it "sends the contents of the file" do - send_file_app - get '/file.txt' - assert ok? - assert_equal 'Hello World', body - end - - it 'sets the Content-Type response header if a mime-type can be located' do - send_file_app - get '/file.txt' - assert_equal 'text/plain', response['Content-Type'] - end - - it 'sets the Content-Length response header' do - send_file_app - get '/file.txt' - assert_equal 'Hello World'.length.to_s, response['Content-Length'] - end - - it 'sets the Last-Modified response header' do - send_file_app - get '/file.txt' - assert_equal File.mtime(@file).httpdate, response['Last-Modified'] - end - - it "returns a 404 when not found" do - mock_app { - get '/' do - send_file 'this-file-does-not-exist.txt' - end - } - get '/' - assert not_found? - end - - it "does not set the Content-Disposition header by default" do - send_file_app - get '/file.txt' - assert_nil response['Content-Disposition'] - end - - it "sets the Content-Disposition header when :disposition set to 'attachment'" do - send_file_app :disposition => 'attachment' - get '/file.txt' - assert_equal 'attachment; filename="file.txt"', response['Content-Disposition'] - end - - it "sets the Content-Disposition header when :filename provided" do - send_file_app :filename => 'foo.txt' - get '/file.txt' - assert_equal 'attachment; filename="foo.txt"', response['Content-Disposition'] - end - end - - describe 'cache_control' do - setup do - mock_app { - get '/' do - cache_control :public, :no_cache, :max_age => 60 - 'Hello World' - end - } - end - - it 'sets the Cache-Control header' do - get '/' - assert_equal ['public', 'no-cache', 'max-age=60'], response['Cache-Control'].split(', ') - end - end - - describe 'expires' do - setup do - mock_app { - get '/' do - expires 60, :public, :no_cache - 'Hello World' - end - } - end - - it 'sets the Cache-Control header' do - get '/' - assert_equal ['public', 'no-cache', 'max-age=60'], response['Cache-Control'].split(', ') - end - - it 'sets the Expires header' do - get '/' - assert_not_nil response['Expires'] - end - end - - describe 'last_modified' do - setup do - now = Time.now - mock_app { - get '/' do - body { 'Hello World' } - last_modified now - 'Boo!' - end - } - @now = now - end - - it 'sets the Last-Modified header to a valid RFC 2616 date value' do - get '/' - assert_equal @now.httpdate, response['Last-Modified'] - end - - it 'returns a body when conditional get misses' do - get '/' - assert_equal 200, status - assert_equal 'Boo!', body - end - - it 'halts when a conditional GET matches' do - get '/', {}, { 'HTTP_IF_MODIFIED_SINCE' => @now.httpdate } - assert_equal 304, status - assert_equal '', body - end - end - - describe 'etag' do - setup do - mock_app { - get '/' do - body { 'Hello World' } - etag 'FOO' - 'Boo!' - end - } - end - - it 'sets the ETag header' do - get '/' - assert_equal '"FOO"', response['ETag'] - end - - it 'returns a body when conditional get misses' do - get '/' - assert_equal 200, status - assert_equal 'Boo!', body - end - - it 'halts when a conditional GET matches' do - get '/', {}, { 'HTTP_IF_NONE_MATCH' => '"FOO"' } - assert_equal 304, status - assert_equal '', body - end - - it 'should handle multiple ETag values in If-None-Match header' do - get '/', {}, { 'HTTP_IF_NONE_MATCH' => '"BAR", *' } - assert_equal 304, status - assert_equal '', body - end - - it 'uses a weak etag with the :weak option' do - mock_app { - get '/' do - etag 'FOO', :weak - "that's weak, dude." - end - } - get '/' - assert_equal 'W/"FOO"', response['ETag'] - end - end - - describe 'back' do - it "makes redirecting back pretty" do - mock_app { - get '/foo' do - redirect back - end - } - - get '/foo', {}, 'HTTP_REFERER' => 'http://github.com' - assert redirect? - assert_equal "http://github.com", response.location - end - end - - module ::HelperOne; def one; '1'; end; end - module ::HelperTwo; def two; '2'; end; end - - describe 'Adding new helpers' do - it 'takes a list of modules to mix into the app' do - mock_app { - helpers ::HelperOne, ::HelperTwo - - get '/one' do - one - end - - get '/two' do - two - end - } - - get '/one' - assert_equal '1', body - - get '/two' - assert_equal '2', body - end - - it 'takes a block to mix into the app' do - mock_app { - helpers do - def foo - 'foo' - end - end - - get '/' do - foo - end - } - - get '/' - assert_equal 'foo', body - end - - it 'evaluates the block in class context so that methods can be aliased' do - mock_app { - helpers do - alias_method :h, :escape_html - end - - get '/' do - h('42 < 43') - end - } - - get '/' - assert ok? - assert_equal '42 < 43', body - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/mapped_error_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/mapped_error_test.rb deleted file mode 100644 index 337de3f6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/mapped_error_test.rb +++ /dev/null @@ -1,186 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class FooError < RuntimeError -end - -class FooNotFound < Sinatra::NotFound -end - -class MappedErrorTest < Test::Unit::TestCase - def test_default - assert true - end - - describe 'Exception Mappings' do - it 'invokes handlers registered with ::error when raised' do - mock_app { - set :raise_errors, false - error(FooError) { 'Foo!' } - get '/' do - raise FooError - end - } - get '/' - assert_equal 500, status - assert_equal 'Foo!', body - end - - it 'uses the Exception handler if no matching handler found' do - mock_app { - set :raise_errors, false - error(Exception) { 'Exception!' } - get '/' do - raise FooError - end - } - - get '/' - assert_equal 500, status - assert_equal 'Exception!', body - end - - it "sets env['sinatra.error'] to the rescued exception" do - mock_app { - set :raise_errors, false - error(FooError) { - assert env.include?('sinatra.error') - assert env['sinatra.error'].kind_of?(FooError) - 'looks good' - } - get '/' do - raise FooError - end - } - get '/' - assert_equal 'looks good', body - end - - it "raises without calling the handler when the raise_errors options is set" do - mock_app { - set :raise_errors, true - error(FooError) { "she's not there." } - get '/' do - raise FooError - end - } - assert_raise(FooError) { get '/' } - end - - it "never raises Sinatra::NotFound beyond the application" do - mock_app { - set :raise_errors, true - get '/' do - raise Sinatra::NotFound - end - } - assert_nothing_raised { get '/' } - assert_equal 404, status - end - - it "cascades for subclasses of Sinatra::NotFound" do - mock_app { - set :raise_errors, true - error(FooNotFound) { "foo! not found." } - get '/' do - raise FooNotFound - end - } - assert_nothing_raised { get '/' } - assert_equal 404, status - assert_equal 'foo! not found.', body - end - - it 'has a not_found method for backwards compatibility' do - mock_app { - not_found do - "Lost, are we?" - end - } - - get '/test' - assert_equal 404, status - assert_equal "Lost, are we?", body - end - - it 'inherits error mappings from base class' do - base = Class.new(Sinatra::Base) - base.error(FooError) { 'base class' } - - mock_app(base) { - set :raise_errors, false - get '/' do - raise FooError - end - } - - get '/' - assert_equal 'base class', body - end - - it 'overrides error mappings in base class' do - base = Class.new(Sinatra::Base) - base.error(FooError) { 'base class' } - - mock_app(base) { - set :raise_errors, false - error(FooError) { 'subclass' } - get '/' do - raise FooError - end - } - - get '/' - assert_equal 'subclass', body - end - end - - describe 'Custom Error Pages' do - it 'allows numeric status code mappings to be registered with ::error' do - mock_app { - set :raise_errors, false - error(500) { 'Foo!' } - get '/' do - [500, {}, 'Internal Foo Error'] - end - } - get '/' - assert_equal 500, status - assert_equal 'Foo!', body - end - - it 'allows ranges of status code mappings to be registered with :error' do - mock_app { - set :raise_errors, false - error(500..550) { "Error: #{response.status}" } - get '/' do - [507, {}, 'A very special error'] - end - } - get '/' - assert_equal 507, status - assert_equal 'Error: 507', body - end - - class FooError < RuntimeError - end - - it 'runs after exception mappings and overwrites body' do - mock_app { - set :raise_errors, false - error FooError do - response.status = 502 - 'from exception mapping' - end - error(500) { 'from 500 handler' } - error(502) { 'from custom error page' } - - get '/' do - raise FooError - end - } - get '/' - assert_equal 502, status - assert_equal 'from custom error page', body - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/middleware_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/middleware_test.rb deleted file mode 100644 index ee34f35d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/middleware_test.rb +++ /dev/null @@ -1,68 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class MiddlewareTest < Test::Unit::TestCase - setup do - @app = mock_app(Sinatra::Application) { - get '/*' do - response.headers['X-Tests'] = env['test.ran']. - map { |n| n.split('::').last }. - join(', ') - env['PATH_INFO'] - end - } - end - - class MockMiddleware < Struct.new(:app) - def call(env) - (env['test.ran'] ||= []) << self.class.to_s - app.call(env) - end - end - - class UpcaseMiddleware < MockMiddleware - def call(env) - env['PATH_INFO'] = env['PATH_INFO'].upcase - super - end - end - - it "is added with Sinatra::Application.use" do - @app.use UpcaseMiddleware - get '/hello-world' - assert ok? - assert_equal '/HELLO-WORLD', body - end - - class DowncaseMiddleware < MockMiddleware - def call(env) - env['PATH_INFO'] = env['PATH_INFO'].downcase - super - end - end - - it "runs in the order defined" do - @app.use UpcaseMiddleware - @app.use DowncaseMiddleware - get '/Foo' - assert_equal "/foo", body - assert_equal "UpcaseMiddleware, DowncaseMiddleware", response['X-Tests'] - end - - it "resets the prebuilt pipeline when new middleware is added" do - @app.use UpcaseMiddleware - get '/Foo' - assert_equal "/FOO", body - @app.use DowncaseMiddleware - get '/Foo' - assert_equal '/foo', body - assert_equal "UpcaseMiddleware, DowncaseMiddleware", response['X-Tests'] - end - - it "works when app is used as middleware" do - @app.use UpcaseMiddleware - @app = @app.new - get '/Foo' - assert_equal "/FOO", body - assert_equal "UpcaseMiddleware", response['X-Tests'] - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/public/favicon.ico b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/public/favicon.ico deleted file mode 100644 index e69de29b..00000000 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/request_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/request_test.rb deleted file mode 100644 index f213646c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/request_test.rb +++ /dev/null @@ -1,33 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class RequestTest < Test::Unit::TestCase - it 'responds to #user_agent' do - request = Sinatra::Request.new({'HTTP_USER_AGENT' => 'Test'}) - assert request.respond_to?(:user_agent) - assert_equal 'Test', request.user_agent - end - - it 'parses POST params when Content-Type is form-dataish' do - request = Sinatra::Request.new( - 'REQUEST_METHOD' => 'PUT', - 'CONTENT_TYPE' => 'application/x-www-form-urlencoded', - 'rack.input' => StringIO.new('foo=bar') - ) - assert_equal 'bar', request.params['foo'] - end - - it 'is secure when the url scheme is https' do - request = Sinatra::Request.new('rack.url_scheme' => 'https') - assert request.secure? - end - - it 'is not secure when the url scheme is http' do - request = Sinatra::Request.new('rack.url_scheme' => 'http') - assert !request.secure? - end - - it 'respects X-Forwarded-Proto header for proxied SSL' do - request = Sinatra::Request.new('HTTP_X_FORWARDED_PROTO' => 'https') - assert request.secure? - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/response_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/response_test.rb deleted file mode 100644 index 5aa5f4e6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/response_test.rb +++ /dev/null @@ -1,42 +0,0 @@ -# encoding: utf-8 - -require File.dirname(__FILE__) + '/helper' - -class ResponseTest < Test::Unit::TestCase - setup do - @response = Sinatra::Response.new - end - - it "initializes with 200, text/html, and empty body" do - assert_equal 200, @response.status - assert_equal 'text/html', @response['Content-Type'] - assert_equal [], @response.body - end - - it 'uses case insensitive headers' do - @response['content-type'] = 'application/foo' - assert_equal 'application/foo', @response['Content-Type'] - assert_equal 'application/foo', @response['CONTENT-TYPE'] - end - - it 'writes to body' do - @response.body = 'Hello' - @response.write ' World' - assert_equal 'Hello World', @response.body - end - - [204, 304].each do |status_code| - it "removes the Content-Type header and body when response status is #{status_code}" do - @response.status = status_code - @response.body = ['Hello World'] - assert_equal [status_code, {}, []], @response.finish - end - end - - it 'Calculates the Content-Length using the bytesize of the body' do - @response.body = ['Hello', 'World!', '✈'] - status, headers, body = @response.finish - assert_equal '14', headers['Content-Length'] - assert_equal @response.body, body - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/result_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/result_test.rb deleted file mode 100644 index 5100abf4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/result_test.rb +++ /dev/null @@ -1,98 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class ResultTest < Test::Unit::TestCase - it "sets response.body when result is a String" do - mock_app { - get '/' do - 'Hello World' - end - } - - get '/' - assert ok? - assert_equal 'Hello World', body - end - - it "sets response.body when result is an Array of Strings" do - mock_app { - get '/' do - ['Hello', 'World'] - end - } - - get '/' - assert ok? - assert_equal 'HelloWorld', body - end - - it "sets response.body when result responds to #each" do - mock_app { - get '/' do - res = lambda { 'Hello World' } - def res.each ; yield call ; end - res - end - } - - get '/' - assert ok? - assert_equal 'Hello World', body - end - - it "sets response.body to [] when result is nil" do - mock_app { - get '/' do - nil - end - } - - get '/' - assert ok? - assert_equal '', body - end - - it "sets status, headers, and body when result is a Rack response tuple" do - mock_app { - get '/' do - [205, {'Content-Type' => 'foo/bar'}, 'Hello World'] - end - } - - get '/' - assert_equal 205, status - assert_equal 'foo/bar', response['Content-Type'] - assert_equal 'Hello World', body - end - - it "sets status and body when result is a two-tuple" do - mock_app { - get '/' do - [409, 'formula of'] - end - } - - get '/' - assert_equal 409, status - assert_equal 'formula of', body - end - - it "raises a TypeError when result is a non two or three tuple Array" do - mock_app { - get '/' do - [409, 'formula of', 'something else', 'even more'] - end - } - - assert_raise(TypeError) { get '/' } - end - - it "sets status when result is a Fixnum status code" do - mock_app { - get('/') { 205 } - } - - get '/' - assert_equal 205, status - assert_equal '', body - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/route_added_hook_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/route_added_hook_test.rb deleted file mode 100644 index 08fdd925..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/route_added_hook_test.rb +++ /dev/null @@ -1,59 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -module RouteAddedTest - @routes, @procs = [], [] - def self.routes ; @routes ; end - def self.procs ; @procs ; end - def self.route_added(verb, path, proc) - @routes << [verb, path] - @procs << proc - end -end - -class RouteAddedHookTest < Test::Unit::TestCase - setup { - RouteAddedTest.routes.clear - RouteAddedTest.procs.clear - } - - it "should be notified of an added route" do - mock_app(Class.new(Sinatra::Base)) { - register RouteAddedTest - get('/') {} - } - - assert_equal [["GET", "/"], ["HEAD", "/"]], - RouteAddedTest.routes - end - - it "should include hooks from superclass" do - a = Class.new(Class.new(Sinatra::Base)) - b = Class.new(a) - - a.register RouteAddedTest - b.class_eval { post("/sub_app_route") {} } - - assert_equal [["POST", "/sub_app_route"]], - RouteAddedTest.routes - end - - it "should only run once per extension" do - mock_app(Class.new(Sinatra::Base)) { - register RouteAddedTest - register RouteAddedTest - get('/') {} - } - - assert_equal [["GET", "/"], ["HEAD", "/"]], - RouteAddedTest.routes - end - - it "should pass route blocks as an argument" do - mock_app(Class.new(Sinatra::Base)) { - register RouteAddedTest - get('/') {} - } - - assert_kind_of Proc, RouteAddedTest.procs.first - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/routing_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/routing_test.rb deleted file mode 100644 index 9976b679..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/routing_test.rb +++ /dev/null @@ -1,860 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -# Helper method for easy route pattern matching testing -def route_def(pattern) - mock_app { get(pattern) { } } -end - -class RegexpLookAlike - class MatchData - def captures - ["this", "is", "a", "test"] - end - end - - def match(string) - ::RegexpLookAlike::MatchData.new if string == "/this/is/a/test/" - end - - def keys - ["one", "two", "three", "four"] - end -end - -class RoutingTest < Test::Unit::TestCase - %w[get put post delete].each do |verb| - it "defines #{verb.upcase} request handlers with #{verb}" do - mock_app { - send verb, '/hello' do - 'Hello World' - end - } - - request = Rack::MockRequest.new(@app) - response = request.request(verb.upcase, '/hello', {}) - assert response.ok? - assert_equal 'Hello World', response.body - end - end - - it "defines HEAD request handlers with HEAD" do - mock_app { - head '/hello' do - response['X-Hello'] = 'World!' - 'remove me' - end - } - - request = Rack::MockRequest.new(@app) - response = request.request('HEAD', '/hello', {}) - assert response.ok? - assert_equal 'World!', response['X-Hello'] - assert_equal '', response.body - end - - it "404s when no route satisfies the request" do - mock_app { - get('/foo') { } - } - get '/bar' - assert_equal 404, status - end - - it "404s and sets X-Cascade header when no route satisfies the request" do - mock_app { - get('/foo') { } - } - get '/bar' - assert_equal 404, status - assert_equal 'pass', response.headers['X-Cascade'] - end - - it "overrides the content-type in error handlers" do - mock_app { - before { content_type 'text/plain' } - error Sinatra::NotFound do - content_type "text/html" - "

    Not Found

    " - end - } - - get '/foo' - assert_equal 404, status - assert_equal 'text/html', response["Content-Type"] - assert_equal "

    Not Found

    ", response.body - end - - it 'takes multiple definitions of a route' do - mock_app { - user_agent(/Foo/) - get '/foo' do - 'foo' - end - - get '/foo' do - 'not foo' - end - } - - get '/foo', {}, 'HTTP_USER_AGENT' => 'Foo' - assert ok? - assert_equal 'foo', body - - get '/foo' - assert ok? - assert_equal 'not foo', body - end - - it "exposes params with indifferent hash" do - mock_app { - get '/:foo' do - assert_equal 'bar', params['foo'] - assert_equal 'bar', params[:foo] - 'well, alright' - end - } - get '/bar' - assert_equal 'well, alright', body - end - - it "merges named params and query string params in params" do - mock_app { - get '/:foo' do - assert_equal 'bar', params['foo'] - assert_equal 'biz', params['baz'] - end - } - get '/bar?baz=biz' - assert ok? - end - - it "supports named params like /hello/:person" do - mock_app { - get '/hello/:person' do - "Hello #{params['person']}" - end - } - get '/hello/Frank' - assert_equal 'Hello Frank', body - end - - it "supports optional named params like /?:foo?/?:bar?" do - mock_app { - get '/?:foo?/?:bar?' do - "foo=#{params[:foo]};bar=#{params[:bar]}" - end - } - - get '/hello/world' - assert ok? - assert_equal "foo=hello;bar=world", body - - get '/hello' - assert ok? - assert_equal "foo=hello;bar=", body - - get '/' - assert ok? - assert_equal "foo=;bar=", body - end - - it "supports single splat params like /*" do - mock_app { - get '/*' do - assert params['splat'].kind_of?(Array) - params['splat'].join "\n" - end - } - - get '/foo' - assert_equal "foo", body - - get '/foo/bar/baz' - assert_equal "foo/bar/baz", body - end - - it "supports mixing multiple splat params like /*/foo/*/*" do - mock_app { - get '/*/foo/*/*' do - assert params['splat'].kind_of?(Array) - params['splat'].join "\n" - end - } - - get '/bar/foo/bling/baz/boom' - assert_equal "bar\nbling\nbaz/boom", body - - get '/bar/foo/baz' - assert not_found? - end - - it "supports mixing named and splat params like /:foo/*" do - mock_app { - get '/:foo/*' do - assert_equal 'foo', params['foo'] - assert_equal ['bar/baz'], params['splat'] - end - } - - get '/foo/bar/baz' - assert ok? - end - - it "matches a dot ('.') as part of a named param" do - mock_app { - get '/:foo/:bar' do - params[:foo] - end - } - - get '/user@example.com/name' - assert_equal 200, response.status - assert_equal 'user@example.com', body - end - - it "matches a literal dot ('.') outside of named params" do - mock_app { - get '/:file.:ext' do - assert_equal 'pony', params[:file] - assert_equal 'jpg', params[:ext] - 'right on' - end - } - - get '/pony.jpg' - assert_equal 200, response.status - assert_equal 'right on', body - end - - it "literally matches . in paths" do - route_def '/test.bar' - - get '/test.bar' - assert ok? - get 'test0bar' - assert not_found? - end - - it "literally matches $ in paths" do - route_def '/test$/' - - get '/test$/' - assert ok? - end - - it "literally matches + in paths" do - route_def '/te+st/' - - get '/te%2Bst/' - assert ok? - get '/teeeeeeest/' - assert not_found? - end - - it "literally matches () in paths" do - route_def '/test(bar)/' - - get '/test(bar)/' - assert ok? - end - - it "supports basic nested params" do - mock_app { - get '/hi' do - params["person"]["name"] - end - } - - get "/hi?person[name]=John+Doe" - assert ok? - assert_equal "John Doe", body - end - - it "exposes nested params with indifferent hash" do - mock_app { - get '/testme' do - assert_equal 'baz', params['bar']['foo'] - assert_equal 'baz', params['bar'][:foo] - 'well, alright' - end - } - get '/testme?bar[foo]=baz' - assert_equal 'well, alright', body - end - - it "supports deeply nested params" do - expected_params = { - "emacs" => { - "map" => { "goto-line" => "M-g g" }, - "version" => "22.3.1" - }, - "browser" => { - "firefox" => {"engine" => {"name"=>"spidermonkey", "version"=>"1.7.0"}}, - "chrome" => {"engine" => {"name"=>"V8", "version"=>"1.0"}} - }, - "paste" => {"name"=>"hello world", "syntax"=>"ruby"} - } - mock_app { - get '/foo' do - assert_equal expected_params, params - 'looks good' - end - } - get '/foo', expected_params - assert ok? - assert_equal 'looks good', body - end - - it "preserves non-nested params" do - mock_app { - get '/foo' do - assert_equal "2", params["article_id"] - assert_equal "awesome", params['comment']['body'] - assert_nil params['comment[body]'] - 'looks good' - end - } - - get '/foo?article_id=2&comment[body]=awesome' - assert ok? - assert_equal 'looks good', body - end - - it "matches paths that include spaces encoded with %20" do - mock_app { - get '/path with spaces' do - 'looks good' - end - } - - get '/path%20with%20spaces' - assert ok? - assert_equal 'looks good', body - end - - it "matches paths that include spaces encoded with +" do - mock_app { - get '/path with spaces' do - 'looks good' - end - } - - get '/path+with+spaces' - assert ok? - assert_equal 'looks good', body - end - - it "URL decodes named parameters and splats" do - mock_app { - get '/:foo/*' do - assert_equal 'hello world', params['foo'] - assert_equal ['how are you'], params['splat'] - nil - end - } - - get '/hello%20world/how%20are%20you' - assert ok? - end - - it 'supports regular expressions' do - mock_app { - get(/^\/foo...\/bar$/) do - 'Hello World' - end - } - - get '/foooom/bar' - assert ok? - assert_equal 'Hello World', body - end - - it 'makes regular expression captures available in params[:captures]' do - mock_app { - get(/^\/fo(.*)\/ba(.*)/) do - assert_equal ['orooomma', 'f'], params[:captures] - 'right on' - end - } - - get '/foorooomma/baf' - assert ok? - assert_equal 'right on', body - end - - it 'supports regular expression look-alike routes' do - mock_app { - get(RegexpLookAlike.new) do - assert_equal 'this', params[:one] - assert_equal 'is', params[:two] - assert_equal 'a', params[:three] - assert_equal 'test', params[:four] - 'right on' - end - } - - get '/this/is/a/test/' - assert ok? - assert_equal 'right on', body - end - - it 'raises a TypeError when pattern is not a String or Regexp' do - assert_raise(TypeError) { - mock_app { get(42){} } - } - end - - it "returns response immediately on halt" do - mock_app { - get '/' do - halt 'Hello World' - 'Boo-hoo World' - end - } - - get '/' - assert ok? - assert_equal 'Hello World', body - end - - it "halts with a response tuple" do - mock_app { - get '/' do - halt 295, {'Content-Type' => 'text/plain'}, 'Hello World' - end - } - - get '/' - assert_equal 295, status - assert_equal 'text/plain', response['Content-Type'] - assert_equal 'Hello World', body - end - - it "halts with an array of strings" do - mock_app { - get '/' do - halt %w[Hello World How Are You] - end - } - - get '/' - assert_equal 'HelloWorldHowAreYou', body - end - - it "transitions to the next matching route on pass" do - mock_app { - get '/:foo' do - pass - 'Hello Foo' - end - - get '/*' do - assert !params.include?('foo') - 'Hello World' - end - } - - get '/bar' - assert ok? - assert_equal 'Hello World', body - end - - it "transitions to 404 when passed and no subsequent route matches" do - mock_app { - get '/:foo' do - pass - 'Hello Foo' - end - } - - get '/bar' - assert not_found? - end - - it "transitions to 404 and sets X-Cascade header when passed and no subsequent route matches" do - mock_app { - get '/:foo' do - pass - 'Hello Foo' - end - - get '/bar' do - 'Hello Bar' - end - } - - get '/foo' - assert not_found? - assert_equal 'pass', response.headers['X-Cascade'] - end - - it "uses optional block passed to pass as route block if no other route is found" do - mock_app { - get "/" do - pass do - "this" - end - "not this" - end - } - - get "/" - assert ok? - assert "this", body - end - - it "passes when matching condition returns false" do - mock_app { - condition { params[:foo] == 'bar' } - get '/:foo' do - 'Hello World' - end - } - - get '/bar' - assert ok? - assert_equal 'Hello World', body - - get '/foo' - assert not_found? - end - - it "does not pass when matching condition returns nil" do - mock_app { - condition { nil } - get '/:foo' do - 'Hello World' - end - } - - get '/bar' - assert ok? - assert_equal 'Hello World', body - end - - it "passes to next route when condition calls pass explicitly" do - mock_app { - condition { pass unless params[:foo] == 'bar' } - get '/:foo' do - 'Hello World' - end - } - - get '/bar' - assert ok? - assert_equal 'Hello World', body - - get '/foo' - assert not_found? - end - - it "passes to the next route when host_name does not match" do - mock_app { - host_name 'example.com' - get '/foo' do - 'Hello World' - end - } - get '/foo' - assert not_found? - - get '/foo', {}, { 'HTTP_HOST' => 'example.com' } - assert_equal 200, status - assert_equal 'Hello World', body - end - - it "passes to the next route when user_agent does not match" do - mock_app { - user_agent(/Foo/) - get '/foo' do - 'Hello World' - end - } - get '/foo' - assert not_found? - - get '/foo', {}, { 'HTTP_USER_AGENT' => 'Foo Bar' } - assert_equal 200, status - assert_equal 'Hello World', body - end - - it "makes captures in user agent pattern available in params[:agent]" do - mock_app { - user_agent(/Foo (.*)/) - get '/foo' do - 'Hello ' + params[:agent].first - end - } - get '/foo', {}, { 'HTTP_USER_AGENT' => 'Foo Bar' } - assert_equal 200, status - assert_equal 'Hello Bar', body - end - - it "filters by accept header" do - mock_app { - get '/', :provides => :xml do - request.env['HTTP_ACCEPT'] - end - } - - get '/', {}, { 'HTTP_ACCEPT' => 'application/xml' } - assert ok? - assert_equal 'application/xml', body - assert_equal 'application/xml', response.headers['Content-Type'] - - get '/', {}, { :accept => 'text/html' } - assert !ok? - end - - it "allows multiple mime types for accept header" do - types = ['image/jpeg', 'image/pjpeg'] - - mock_app { - get '/', :provides => types do - request.env['HTTP_ACCEPT'] - end - } - - types.each do |type| - get '/', {}, { 'HTTP_ACCEPT' => type } - assert ok? - assert_equal type, body - assert_equal type, response.headers['Content-Type'] - end - end - - it 'degrades gracefully when optional accept header is not provided' do - mock_app { - get '/', :provides => :xml do - request.env['HTTP_ACCEPT'] - end - get '/' do - 'default' - end - } - get '/' - assert ok? - assert_equal 'default', body - end - - it 'passes a single url param as block parameters when one param is specified' do - mock_app { - get '/:foo' do |foo| - assert_equal 'bar', foo - end - } - - get '/bar' - assert ok? - end - - it 'passes multiple params as block parameters when many are specified' do - mock_app { - get '/:foo/:bar/:baz' do |foo, bar, baz| - assert_equal 'abc', foo - assert_equal 'def', bar - assert_equal 'ghi', baz - end - } - - get '/abc/def/ghi' - assert ok? - end - - it 'passes regular expression captures as block parameters' do - mock_app { - get(/^\/fo(.*)\/ba(.*)/) do |foo, bar| - assert_equal 'orooomma', foo - assert_equal 'f', bar - 'looks good' - end - } - - get '/foorooomma/baf' - assert ok? - assert_equal 'looks good', body - end - - it "supports mixing multiple splat params like /*/foo/*/* as block parameters" do - mock_app { - get '/*/foo/*/*' do |foo, bar, baz| - assert_equal 'bar', foo - assert_equal 'bling', bar - assert_equal 'baz/boom', baz - 'looks good' - end - } - - get '/bar/foo/bling/baz/boom' - assert ok? - assert_equal 'looks good', body - end - - it 'raises an ArgumentError with block arity > 1 and too many values' do - mock_app { - get '/:foo/:bar/:baz' do |foo, bar| - 'quux' - end - } - - assert_raise(ArgumentError) { get '/a/b/c' } - end - - it 'raises an ArgumentError with block param arity > 1 and too few values' do - mock_app { - get '/:foo/:bar' do |foo, bar, baz| - 'quux' - end - } - - assert_raise(ArgumentError) { get '/a/b' } - end - - it 'succeeds if no block parameters are specified' do - mock_app { - get '/:foo/:bar' do - 'quux' - end - } - - get '/a/b' - assert ok? - assert_equal 'quux', body - end - - it 'passes all params with block param arity -1 (splat args)' do - mock_app { - get '/:foo/:bar' do |*args| - args.join - end - } - - get '/a/b' - assert ok? - assert_equal 'ab', body - end - - it 'allows custom route-conditions to be set via route options' do - protector = Module.new { - def protect(*args) - condition { - unless authorize(params["user"], params["password"]) - halt 403, "go away" - end - } - end - } - - mock_app { - register protector - - helpers do - def authorize(username, password) - username == "foo" && password == "bar" - end - end - - get "/", :protect => true do - "hey" - end - } - - get "/" - assert forbidden? - assert_equal "go away", body - - get "/", :user => "foo", :password => "bar" - assert ok? - assert_equal "hey", body - end - - # NOTE Block params behaves differently under 1.8 and 1.9. Under 1.8, block - # param arity is lax: declaring a mismatched number of block params results - # in a warning. Under 1.9, block param arity is strict: mismatched block - # arity raises an ArgumentError. - - if RUBY_VERSION >= '1.9' - - it 'raises an ArgumentError with block param arity 1 and no values' do - mock_app { - get '/foo' do |foo| - 'quux' - end - } - - assert_raise(ArgumentError) { get '/foo' } - end - - it 'raises an ArgumentError with block param arity 1 and too many values' do - mock_app { - get '/:foo/:bar/:baz' do |foo| - 'quux' - end - } - - assert_raise(ArgumentError) { get '/a/b/c' } - end - - else - - it 'does not raise an ArgumentError with block param arity 1 and no values' do - mock_app { - get '/foo' do |foo| - 'quux' - end - } - - silence_warnings { get '/foo' } - assert ok? - assert_equal 'quux', body - end - - it 'does not raise an ArgumentError with block param arity 1 and too many values' do - mock_app { - get '/:foo/:bar/:baz' do |foo| - 'quux' - end - } - - silence_warnings { get '/a/b/c' } - assert ok? - assert_equal 'quux', body - end - - end - - it "matches routes defined in superclasses" do - base = Class.new(Sinatra::Base) - base.get('/foo') { 'foo in baseclass' } - - mock_app(base) { - get('/bar') { 'bar in subclass' } - } - - get '/foo' - assert ok? - assert_equal 'foo in baseclass', body - - get '/bar' - assert ok? - assert_equal 'bar in subclass', body - end - - it "matches routes in subclasses before superclasses" do - base = Class.new(Sinatra::Base) - base.get('/foo') { 'foo in baseclass' } - base.get('/bar') { 'bar in baseclass' } - - mock_app(base) { - get('/foo') { 'foo in subclass' } - } - - get '/foo' - assert ok? - assert_equal 'foo in subclass', body - - get '/bar' - assert ok? - assert_equal 'bar in baseclass', body - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/sass_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/sass_test.rb deleted file mode 100644 index c8d6a731..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/sass_test.rb +++ /dev/null @@ -1,79 +0,0 @@ -require File.dirname(__FILE__) + '/helper' -require 'sass' - -class SassTest < Test::Unit::TestCase - def sass_app(&block) - mock_app { - set :views, File.dirname(__FILE__) + '/views' - get '/', &block - } - get '/' - end - - it 'renders inline Sass strings' do - sass_app { sass "#sass\n :background-color #FFF\n" } - assert ok? - assert_equal "#sass {\n background-color: #FFF; }\n", body - end - - it 'renders .sass files in views path' do - sass_app { sass :hello } - assert ok? - assert_equal "#sass {\n background-color: #FFF; }\n", body - end - - it 'ignores the layout option' do - sass_app { sass :hello, :layout => :layout2 } - assert ok? - assert_equal "#sass {\n background-color: #FFF; }\n", body - end - - it "raises error if template not found" do - mock_app { - get('/') { sass :no_such_template } - } - assert_raise(Errno::ENOENT) { get('/') } - end - - it "passes SASS options to the Sass engine" do - sass_app { - sass "#sass\n :background-color #FFF\n :color #000\n", :style => :compact - } - assert ok? - assert_equal "#sass { background-color: #FFF; color: #000; }\n", body - end - - it "passes default SASS options to the Sass engine" do - mock_app { - set :sass, {:style => :compact} # default Sass style is :nested - get '/' do - sass "#sass\n :background-color #FFF\n :color #000\n" - end - } - get '/' - assert ok? - assert_equal "#sass { background-color: #FFF; color: #000; }\n", body - end - - it "merges the default SASS options with the overrides and passes them to the Sass engine" do - mock_app { - set :sass, {:style => :compact, :attribute_syntax => :alternate } # default Sass attribute_syntax is :normal (with : in front) - get '/' do - sass "#sass\n background-color: #FFF\n color: #000\n" - end - get '/raised' do - sass "#sass\n :background-color #FFF\n :color #000\n", :style => :expanded # retains global attribute_syntax settings - end - get '/expanded_normal' do - sass "#sass\n :background-color #FFF\n :color #000\n", :style => :expanded, :attribute_syntax => :normal - end - } - get '/' - assert ok? - assert_equal "#sass { background-color: #FFF; color: #000; }\n", body - assert_raise(Sass::SyntaxError) { get('/raised') } - get '/expanded_normal' - assert ok? - assert_equal "#sass {\n background-color: #FFF;\n color: #000;\n}\n", body - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/server_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/server_test.rb deleted file mode 100644 index 76d4ef97..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/server_test.rb +++ /dev/null @@ -1,47 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -module Rack::Handler - class Mock - extend Test::Unit::Assertions - - def self.run(app, options={}) - assert(app < Sinatra::Base) - assert_equal 9001, options[:Port] - assert_equal 'foo.local', options[:Host] - yield new - end - - def stop - end - end - - register 'mock', 'Rack::Handler::Mock' -end - -class ServerTest < Test::Unit::TestCase - setup do - mock_app { - set :server, 'mock' - set :host, 'foo.local' - set :port, 9001 - } - $stdout = File.open('/dev/null', 'wb') - end - - def teardown - $stdout = STDOUT - end - - it "locates the appropriate Rack handler and calls ::run" do - @app.run! - end - - it "sets options on the app before running" do - @app.run! :sessions => true - assert @app.sessions? - end - - it "falls back on the next server handler when not found" do - @app.run! :server => %w[foo bar mock] - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/settings_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/settings_test.rb deleted file mode 100644 index 156377f4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/settings_test.rb +++ /dev/null @@ -1,383 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class SettingsTest < Test::Unit::TestCase - setup do - @base = Sinatra.new(Sinatra::Base) - @base.set :environment, :foo - - @application = Sinatra.new(Sinatra::Application) - @application.set :environment, :foo - end - - it 'sets settings to literal values' do - @base.set(:foo, 'bar') - assert @base.respond_to?(:foo) - assert_equal 'bar', @base.foo - end - - it 'sets settings to Procs' do - @base.set(:foo, Proc.new { 'baz' }) - assert @base.respond_to?(:foo) - assert_equal 'baz', @base.foo - end - - it "sets multiple settings with a Hash" do - @base.set :foo => 1234, - :bar => 'Hello World', - :baz => Proc.new { 'bizzle' } - assert_equal 1234, @base.foo - assert_equal 'Hello World', @base.bar - assert_equal 'bizzle', @base.baz - end - - it 'inherits settings methods when subclassed' do - @base.set :foo, 'bar' - @base.set :biz, Proc.new { 'baz' } - - sub = Class.new(@base) - assert sub.respond_to?(:foo) - assert_equal 'bar', sub.foo - assert sub.respond_to?(:biz) - assert_equal 'baz', sub.biz - end - - it 'overrides settings in subclass' do - @base.set :foo, 'bar' - @base.set :biz, Proc.new { 'baz' } - sub = Class.new(@base) - sub.set :foo, 'bling' - assert_equal 'bling', sub.foo - assert_equal 'bar', @base.foo - end - - it 'creates setter methods when first defined' do - @base.set :foo, 'bar' - assert @base.respond_to?('foo=') - @base.foo = 'biz' - assert_equal 'biz', @base.foo - end - - it 'creates predicate methods when first defined' do - @base.set :foo, 'hello world' - assert @base.respond_to?(:foo?) - assert @base.foo? - @base.set :foo, nil - assert !@base.foo? - end - - it 'uses existing setter methods if detected' do - class << @base - def foo - @foo - end - def foo=(value) - @foo = 'oops' - end - end - - @base.set :foo, 'bam' - assert_equal 'oops', @base.foo - end - - it "sets multiple settings to true with #enable" do - @base.enable :sessions, :foo, :bar - assert @base.sessions - assert @base.foo - assert @base.bar - end - - it "sets multiple settings to false with #disable" do - @base.disable :sessions, :foo, :bar - assert !@base.sessions - assert !@base.foo - assert !@base.bar - end - - - it 'is accessible from instances via #settings' do - assert_equal :foo, @base.new.settings.environment - end - - describe 'methodoverride' do - it 'is disabled on Base' do - assert ! @base.methodoverride? - end - - it 'is enabled on Application' do - assert @application.methodoverride? - end - - it 'enables MethodOverride middleware' do - @base.set :methodoverride, true - @base.put('/') { 'okay' } - @app = @base - post '/', {'_method'=>'PUT'}, {} - assert_equal 200, status - assert_equal 'okay', body - end - end - - describe 'clean_trace' do - def clean_backtrace(trace) - Sinatra::Base.new.send(:clean_backtrace, trace) - end - - it 'is enabled on Base' do - assert @base.clean_trace? - end - - it 'is enabled on Application' do - assert @application.clean_trace? - end - - it 'does nothing when disabled' do - backtrace = [ - "./lib/sinatra/base.rb", - "./myapp:42", - ("#{Gem.dir}/some/lib.rb" if defined?(Gem)) - ].compact - - klass = Class.new(Sinatra::Base) - klass.disable :clean_trace - - assert_equal backtrace, klass.new.send(:clean_backtrace, backtrace) - end - - it 'removes sinatra lib paths from backtrace when enabled' do - backtrace = [ - "./lib/sinatra/base.rb", - "./lib/sinatra/compat.rb:42", - "./lib/sinatra/main.rb:55 in `foo'" - ] - assert clean_backtrace(backtrace).empty? - end - - it 'removes ./ prefix from backtrace paths when enabled' do - assert_equal ['myapp.rb:42'], clean_backtrace(['./myapp.rb:42']) - end - - if defined?(Gem) - it 'removes gem lib paths from backtrace when enabled' do - assert clean_backtrace(["#{Gem.dir}/some/lib"]).empty? - end - end - end - - describe 'run' do - it 'is disabled on Base' do - assert ! @base.run? - end - - it 'is enabled on Application except in test environment' do - assert @application.run? - - @application.set :environment, :test - assert ! @application.run? - end - end - - describe 'raise_errors' do - it 'is enabled on Base except under development' do - assert @base.raise_errors? - @base.environment = :development - assert !@base.raise_errors? - end - - it 'is enabled on Application only in test' do - assert ! @application.raise_errors? - - @application.set(:environment, :test) - assert @application.raise_errors? - end - end - - describe 'show_exceptions' do - it 'is disabled on Base except under development' do - assert ! @base.show_exceptions? - @base.environment = :development - assert @base.show_exceptions? - end - - it 'is disabled on Application except in development' do - assert ! @application.show_exceptions? - - @application.set(:environment, :development) - assert @application.show_exceptions? - end - - it 'returns a friendly 500' do - klass = Sinatra.new(Sinatra::Application) - mock_app(klass) { - enable :show_exceptions - - get '/' do - raise StandardError - end - } - - get '/' - assert_equal 500, status - assert body.include?("StandardError") - assert body.include?("show_exceptions setting") - end - end - - describe 'dump_errors' do - it 'is disabled on Base except in development' do - assert ! @base.dump_errors? - @base.environment = :development - assert @base.dump_errors? - end - - it 'is enabled on Application' do - assert @application.dump_errors? - end - - it 'dumps exception with backtrace to rack.errors' do - klass = Sinatra.new(Sinatra::Application) - - mock_app(klass) { - disable :raise_errors - - error do - error = @env['rack.errors'].instance_variable_get(:@error) - error.rewind - - error.read - end - - get '/' do - raise - end - } - - get '/' - assert body.include?("RuntimeError") && body.include?("settings_test.rb") - end - end - - describe 'sessions' do - it 'is disabled on Base' do - assert ! @base.sessions? - end - - it 'is disabled on Application' do - assert ! @application.sessions? - end - end - - describe 'logging' do - it 'is disabled on Base' do - assert ! @base.logging? - end - - it 'is enabled on Application except in test environment' do - assert @application.logging? - - @application.set :environment, :test - assert ! @application.logging - end - end - - describe 'static' do - it 'is disabled on Base by default' do - assert ! @base.static? - end - - it 'is enabled on Base when public is set and exists' do - @base.set :environment, :development - @base.set :public, File.dirname(__FILE__) - assert @base.static? - end - - it 'is enabled on Base when root is set and root/public exists' do - @base.set :environment, :development - @base.set :root, File.dirname(__FILE__) - assert @base.static? - end - - it 'is enabled on Application' do - assert @application.static? - end - end - - describe 'host' do - it 'defaults to 0.0.0.0' do - assert_equal '0.0.0.0', @base.host - assert_equal '0.0.0.0', @application.host - end - end - - describe 'port' do - it 'defaults to 4567' do - assert_equal 4567, @base.port - assert_equal 4567, @application.port - end - end - - describe 'server' do - it 'is one of thin, mongrel, webrick' do - assert_equal %w[thin mongrel webrick], @base.server - assert_equal %w[thin mongrel webrick], @application.server - end - end - - describe 'app_file' do - it 'is nil' do - assert_nil @base.app_file - assert_nil @application.app_file - end - end - - describe 'root' do - it 'is nil if app_file is not set' do - assert @base.root.nil? - assert @application.root.nil? - end - - it 'is equal to the expanded basename of app_file' do - @base.app_file = __FILE__ - assert_equal File.expand_path(File.dirname(__FILE__)), @base.root - - @application.app_file = __FILE__ - assert_equal File.expand_path(File.dirname(__FILE__)), @application.root - end - end - - describe 'views' do - it 'is nil if root is not set' do - assert @base.views.nil? - assert @application.views.nil? - end - - it 'is set to root joined with views/' do - @base.root = File.dirname(__FILE__) - assert_equal File.dirname(__FILE__) + "/views", @base.views - - @application.root = File.dirname(__FILE__) - assert_equal File.dirname(__FILE__) + "/views", @application.views - end - end - - describe 'public' do - it 'is nil if root is not set' do - assert @base.public.nil? - assert @application.public.nil? - end - - it 'is set to root joined with public/' do - @base.root = File.dirname(__FILE__) - assert_equal File.dirname(__FILE__) + "/public", @base.public - - @application.root = File.dirname(__FILE__) - assert_equal File.dirname(__FILE__) + "/public", @application.public - end - end - - describe 'lock' do - it 'is disabled by default' do - assert ! @base.lock? - assert ! @application.lock? - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/sinatra_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/sinatra_test.rb deleted file mode 100644 index 5c695b22..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/sinatra_test.rb +++ /dev/null @@ -1,13 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class SinatraTest < Test::Unit::TestCase - it 'creates a new Sinatra::Base subclass on new' do - app = - Sinatra.new do - get '/' do - 'Hello World' - end - end - assert_same Sinatra::Base, app.superclass - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/static_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/static_test.rb deleted file mode 100644 index ba6869b5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/static_test.rb +++ /dev/null @@ -1,93 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class StaticTest < Test::Unit::TestCase - setup do - mock_app { - set :static, true - set :public, File.dirname(__FILE__) - } - end - - it 'serves GET requests for files in the public directory' do - get "/#{File.basename(__FILE__)}" - assert ok? - assert_equal File.read(__FILE__), body - assert_equal File.size(__FILE__).to_s, response['Content-Length'] - assert response.headers.include?('Last-Modified') - end - - it 'produces a body that can be iterated over multiple times' do - env = Rack::MockRequest.env_for("/#{File.basename(__FILE__)}") - status, headers, body = @app.call(env) - buf1, buf2 = [], [] - body.each { |part| buf1 << part } - body.each { |part| buf2 << part } - assert_equal buf1.join, buf2.join - assert_equal File.read(__FILE__), buf1.join - end - - it 'sets the sinatra.static_file env variable if served' do - env = Rack::MockRequest.env_for("/#{File.basename(__FILE__)}") - status, headers, body = @app.call(env) - assert_equal File.expand_path(__FILE__), env['sinatra.static_file'] - end - - it 'serves HEAD requests for files in the public directory' do - head "/#{File.basename(__FILE__)}" - assert ok? - assert_equal '', body - assert_equal File.size(__FILE__).to_s, response['Content-Length'] - assert response.headers.include?('Last-Modified') - end - - %w[POST PUT DELETE].each do |verb| - it "does not serve #{verb} requests" do - send verb.downcase, "/#{File.basename(__FILE__)}" - assert_equal 404, status - end - end - - it 'serves files in preference to custom routes' do - @app.get("/#{File.basename(__FILE__)}") { 'Hello World' } - get "/#{File.basename(__FILE__)}" - assert ok? - assert body != 'Hello World' - end - - it 'does not serve directories' do - get "/" - assert not_found? - end - - it 'passes to the next handler when the static option is disabled' do - @app.set :static, false - get "/#{File.basename(__FILE__)}" - assert not_found? - end - - it 'passes to the next handler when the public option is nil' do - @app.set :public, nil - get "/#{File.basename(__FILE__)}" - assert not_found? - end - - it '404s when a file is not found' do - get "/foobarbaz.txt" - assert not_found? - end - - it 'serves files when .. path traverses within public directory' do - get "/data/../#{File.basename(__FILE__)}" - assert ok? - assert_equal File.read(__FILE__), body - end - - it '404s when .. path traverses outside of public directory' do - mock_app { - set :static, true - set :public, File.dirname(__FILE__) + '/data' - } - get "/../#{File.basename(__FILE__)}" - assert not_found? - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/templates_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/templates_test.rb deleted file mode 100644 index 98560705..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/templates_test.rb +++ /dev/null @@ -1,155 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class TestTemplate < Tilt::Template - def compile! - end - - def evaluate(scope, locals={}, &block) - inner = block ? block.call : '' - data + inner - end - - Tilt.register 'test', self -end - -class TemplatesTest < Test::Unit::TestCase - def render_app(base=Sinatra::Base, &block) - mock_app(base) { - set :views, File.dirname(__FILE__) + '/views' - get '/', &block - template(:layout3) { "Layout 3!\n" } - } - get '/' - end - - def with_default_layout - layout = File.dirname(__FILE__) + '/views/layout.test' - File.open(layout, 'wb') { |io| io.write "Layout!\n" } - yield - ensure - File.unlink(layout) rescue nil - end - - it 'renders String templates directly' do - render_app { render :test, 'Hello World' } - assert ok? - assert_equal 'Hello World', body - end - - it 'renders Proc templates using the call result' do - render_app { render :test, Proc.new {'Hello World'} } - assert ok? - assert_equal 'Hello World', body - end - - it 'looks up Symbol templates in views directory' do - render_app { render :test, :hello } - assert ok? - assert_equal "Hello World!\n", body - end - - it 'uses the default layout template if not explicitly overridden' do - with_default_layout do - render_app { render :test, :hello } - assert ok? - assert_equal "Layout!\nHello World!\n", body - end - end - - it 'uses the default layout template if not really overriden' do - with_default_layout do - render_app { render :test, :hello, :layout => true } - assert ok? - assert_equal "Layout!\nHello World!\n", body - end - end - - it 'uses the layout template specified' do - render_app { render :test, :hello, :layout => :layout2 } - assert ok? - assert_equal "Layout 2!\nHello World!\n", body - end - - it 'uses layout templates defined with the #template method' do - render_app { render :test, :hello, :layout => :layout3 } - assert ok? - assert_equal "Layout 3!\nHello World!\n", body - end - - it 'loads templates from source file with inline_templates enabled' do - mock_app { - enable :inline_templates - } - assert_equal "this is foo\n\n", @app.templates[:foo][0] - assert_equal "X\n= yield\nX\n", @app.templates[:layout][0] - end - - it 'loads templates from specified views directory' do - render_app { render :test, :hello, :views => options.views + '/foo' } - - assert_equal "from another views directory\n", body - end - - test 'use_in_file_templates simply ignores IO errors' do - assert_nothing_raised { - mock_app { - set :inline_templates, '/foo/bar' - } - } - - assert @app.templates.empty? - end - - it 'passes locals to the layout' do - mock_app { - template :my_layout do - 'Hello <%= name %>!<%= yield %>' - end - - get '/' do - erb '

    content

    ', { :layout => :my_layout }, { :name => 'Mike'} - end - } - - get '/' - assert ok? - assert_equal 'Hello Mike!

    content

    ', body - end - - it 'loads templates defined in subclasses' do - base = Class.new(Sinatra::Base) - base.template(:foo) { 'bar' } - render_app(base) { render :test, :foo } - assert ok? - assert_equal 'bar', body - end - - it 'uses templates in superclasses before subclasses' do - base = Class.new(Sinatra::Base) - base.template(:foo) { 'template in superclass' } - assert_equal 'template in superclass', base.templates[:foo].first.call - - mock_app(base) { - set :views, File.dirname(__FILE__) + '/views' - template(:foo) { 'template in subclass' } - get('/') { render :test, :foo } - } - assert_equal 'template in subclass', @app.templates[:foo].first.call - - get '/' - assert ok? - assert_equal 'template in subclass', body - end -end - -# __END__ : this is not the real end of the script. - -__END__ - -@@ foo -this is foo - -@@ layout -X -= yield -X diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.builder b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.builder deleted file mode 100644 index 9cf87d5e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.builder +++ /dev/null @@ -1,3 +0,0 @@ -xml.error do - raise "goodbye" -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.erb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.erb deleted file mode 100644 index b48d1f06..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.erb +++ /dev/null @@ -1,3 +0,0 @@ -Hello <%= 'World' %> -<% raise 'Goodbye' unless defined?(french) && french %> -<% raise 'Au revoir' if defined?(french) && french %> diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.erubis b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.erubis deleted file mode 100644 index b48d1f06..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.erubis +++ /dev/null @@ -1,3 +0,0 @@ -Hello <%= 'World' %> -<% raise 'Goodbye' unless defined?(french) && french %> -<% raise 'Au revoir' if defined?(french) && french %> diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.haml deleted file mode 100644 index 6019007b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.haml +++ /dev/null @@ -1,3 +0,0 @@ -%h1 Hello From Haml -= raise 'goodbye' unless defined?(french) && french -= raise 'au revoir' if defined?(french) && french diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.sass deleted file mode 100644 index 42fc56b3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/error.sass +++ /dev/null @@ -1,2 +0,0 @@ -#sass - +argle-bargle diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/foo/hello.test b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/foo/hello.test deleted file mode 100644 index 2aba6341..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/foo/hello.test +++ /dev/null @@ -1 +0,0 @@ -from another views directory diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.builder b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.builder deleted file mode 100644 index 16b86d03..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.builder +++ /dev/null @@ -1 +0,0 @@ -xml.exclaim "You're my boy, #{@name}!" diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.erb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.erb deleted file mode 100644 index bcbbc926..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.erb +++ /dev/null @@ -1 +0,0 @@ -Hello <%= 'World' %> diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.erubis b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.erubis deleted file mode 100644 index bcbbc926..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.erubis +++ /dev/null @@ -1 +0,0 @@ -Hello <%= 'World' %> diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.haml deleted file mode 100644 index d6852a60..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.haml +++ /dev/null @@ -1 +0,0 @@ -%h1 Hello From Haml diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.sass deleted file mode 100644 index 5a4fd574..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.sass +++ /dev/null @@ -1,2 +0,0 @@ -#sass - :background-color #FFF diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.test b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.test deleted file mode 100644 index 980a0d5f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/hello.test +++ /dev/null @@ -1 +0,0 @@ -Hello World! diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.builder b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.builder deleted file mode 100644 index 9491f574..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.builder +++ /dev/null @@ -1,3 +0,0 @@ -xml.layout do - xml << yield -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.erb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.erb deleted file mode 100644 index e097f3b6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.erb +++ /dev/null @@ -1,2 +0,0 @@ -ERB Layout! -<%= yield %> diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.erubis b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.erubis deleted file mode 100644 index b61db6d0..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.erubis +++ /dev/null @@ -1,2 +0,0 @@ -ERubis Layout! -<%= yield %> diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.haml deleted file mode 100644 index 58bfc04d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.haml +++ /dev/null @@ -1,2 +0,0 @@ -%h1 HAML Layout! -%p= yield diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.test b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.test deleted file mode 100644 index fb432e3a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-1.0.a/test/views/layout2.test +++ /dev/null @@ -1 +0,0 @@ -Layout 2! diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/.gitignore b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/.gitignore deleted file mode 100644 index 18977f8b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -doc -dist -tmp diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/LICENSE b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/LICENSE deleted file mode 100644 index 3eb6c2f4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2008-2009 Nicolas Sanguinetti, entp.com - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/README.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/README.rdoc deleted file mode 100644 index 12022a7b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/README.rdoc +++ /dev/null @@ -1,41 +0,0 @@ -= ContentFor - -Small extension for the Sinatra[http://sinatrarb.com] web framework -that allows you to use the following helpers in your views: - - <% content_for :some_key do %> - ... - <% end %> - - <% yield_content :some_key %> - -This allows you to capture blocks inside views to be rendered later -in this request. For example, to populate different parts of your -layout from your view. - -== Usage - -If you're writing "classic" style apps, then requring -sinatra/content_for should be enough. If you're writing -"classy" apps, then you also need to call -helpers Sinatra::ContentFor in your app definition. - -== And how is this useful? - -For example, some of your views might need a few javascript tags and -stylesheets, but you don't want to force this files in all your pages. -Then you can put <% yield_content :scripts_and_styles %> on -your layout, inside the tag, and each view can call -content_for setting the appropriate set of tags that should -be added to the layout. - -== Warning - -This only works with ERB as a rendering mechanism. I haven't figured -how to make it work with Haml. If you find a way, contact me and I'll -include it. - -== Credits - -Code by foca[http://github.com/foca], inspired on the Ruby on Rails -helpers with the same name. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/lib/sinatra/content_for.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/lib/sinatra/content_for.rb deleted file mode 100644 index 31848c63..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/lib/sinatra/content_for.rb +++ /dev/null @@ -1,58 +0,0 @@ -module Sinatra - module ContentFor - # Capture a block of content to be rendered later. For example: - # - # <% content_for :head do %> - # - # <% end %> - # - # You can call +content_for+ multiple times with the same key - # (in the example +:head+), and when you render the blocks for - # that key all of them will be rendered, in the same order you - # captured them. - # - # Your blocks can also receive values, which are passed to them - # by yield_content - def content_for(key, &block) - content_blocks[key.to_sym] << block - end - - # Render the captured blocks for a given key. For example: - # - # - # Example - # <% yield_content :head %> - # - # - # Would render everything you declared with content_for - # :head before closing the tag. - # - # You can also pass values to the content blocks by passing them - # as arguments after the key: - # - # <% yield_content :head, 1, 2 %> - # - # Would pass 1 and 2 to all the blocks registered - # for :head. - # - # *NOTICE* that you call this without an = sign. IE, - # in a <% %> block, and not in a <%= %> block. - def yield_content(key, *args) - content_blocks[key.to_sym].map do |content| - if respond_to?(:block_is_haml?) && block_is_haml?(content) - capture_haml(*args, &content) - else - content.call(*args) - end - end.join - end - - private - - def content_blocks - @content_blocks ||= Hash.new {|h,k| h[k] = [] } - end - end - - helpers ContentFor -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/sinatra-content-for.gemspec b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/sinatra-content-for.gemspec deleted file mode 100644 index 63242e6b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/sinatra-content-for.gemspec +++ /dev/null @@ -1,34 +0,0 @@ -Gem::Specification.new do |s| - s.name = "sinatra-content-for" - s.version = "0.2" - s.date = "2009-05-09" - - s.description = "Small Sinatra extension to add a content_for helper similar to Rails'" - s.summary = "Small Sinatra extension to add a content_for helper similar to Rails'" - s.homepage = "http://sinatrarb.com" - - s.authors = ["Nicolás Sanguinetti"] - s.email = "contacto@nicolassanguinetti.info" - - s.require_paths = ["lib"] - s.rubyforge_project = "sinatra-ditties" - s.has_rdoc = true - s.rubygems_version = "1.3.1" - - s.add_dependency "sinatra" - - if s.respond_to?(:add_development_dependency) - s.add_development_dependency "contest" - s.add_development_dependency "sr-mg" - s.add_development_dependency "redgreen" - end - - s.files = %w[ -.gitignore -LICENSE -README.rdoc -sinatra-content-for.gemspec -lib/sinatra/content_for.rb -test/content_for_test.rb -] -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/test/content_for_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/test/content_for_test.rb deleted file mode 100644 index c9560f22..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sinatra-content-for-0.2/test/content_for_test.rb +++ /dev/null @@ -1,156 +0,0 @@ -ENV['RACK_ENV'] = 'test' - -begin - require 'rack' -rescue LoadError - require 'rubygems' - require 'rack' -end - -require 'contest' -require 'sinatra/test' -require 'haml' - -begin - require 'redgreen' -rescue LoadError -end - -require File.dirname(__FILE__) + '/../lib/sinatra/content_for' - -Sinatra::Base.set :environment, :test - -module Sinatra - class Base - set :environment, :test - helpers ContentFor - end -end - -class Test::Unit::TestCase - include Sinatra::Test - - class << self - alias_method :it, :test - end - - def mock_app(base=Sinatra::Base, &block) - @app = Sinatra.new(base, &block) - end -end - -class ContentForTest < Test::Unit::TestCase - context 'using erb' do - def erb_app(view) - mock_app { - layout { '<% yield_content :foo %>' } - get('/') { erb view } - } - end - - it 'renders blocks declared with the same key you use when rendering' do - erb_app '<% content_for :foo do %>foo<% end %>' - - get '/' - assert ok? - assert_equal 'foo', body - end - - it 'does not render a block with a different key' do - erb_app '<% content_for :bar do %>bar<% end %>' - - get '/' - assert ok? - assert_equal '', body - end - - it 'renders multiple blocks with the same key' do - erb_app <<-erb_snippet - <% content_for :foo do %>foo<% end %> - <% content_for :foo do %>bar<% end %> - <% content_for :baz do %>WON'T RENDER ME<% end %> - <% content_for :foo do %>baz<% end %> - erb_snippet - - get '/' - assert ok? - assert_equal 'foobarbaz', body - end - - it 'passes values to the blocks' do - mock_app { - layout { '<% yield_content :foo, 1, 2 %>' } - get('/') { erb '<% content_for :foo do |a, b| %><%= a %> <%= b %><% end %>' } - } - - get '/' - assert ok? - assert_equal '1 2', body - end - end - - context 'with haml' do - def haml_app(view) - mock_app { - layout { '= yield_content :foo' } - get('/') { haml view } - } - end - - it 'renders blocks declared with the same key you use when rendering' do - haml_app <<-haml_end -- content_for :foo do - foo -haml_end - - get '/' - assert ok? - assert_equal "foo\n", body - end - - it 'does not render a block with a different key' do - haml_app <<-haml_end -- content_for :bar do - bar -haml_end - - get '/' - assert ok? - assert_equal "\n", body - end - - it 'renders multiple blocks with the same key' do - haml_app <<-haml_end -- content_for :foo do - foo -- content_for :foo do - bar -- content_for :baz do - WON'T RENDER ME -- content_for :foo do - baz -haml_end - - get '/' - assert ok? - assert_equal "foo\nbar\nbaz\n", body - end - - it 'passes values to the blocks' do - mock_app { - layout { '= yield_content :foo, 1, 2' } - get('/') { - haml <<-haml_end -- content_for :foo do |a, b| - %i= a - =b -haml_end - } - } - - get '/' - assert ok? - assert_equal "1\n2\n", body - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/.gitignore b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/.gitignore deleted file mode 100644 index 3a39d3fb..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -Manifest -pkg diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/README.markdown b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/README.markdown deleted file mode 100644 index ced40ba9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/README.markdown +++ /dev/null @@ -1,59 +0,0 @@ -*LOSSLESS* image size reduction for jpg, png and gif in the cloud - - - no image libraries needed, everything done in the interwebs - - less size (up 97% saving) = faster downloads = less bandwidth + happy users - -Install -======= - install ruby + rubygems - sudo gem install smusher - -Usage -===== -Optimize a single image or a whole folder: - - smusher /apps/x/public/images [options] - smusher /apps/x/public/images/x.png [options] - smusher /apps/x/public/images/*.png [options] - -Options: - -q, --quiet no output - -c, --convert-gifs convert gifs to PNGs - --service PunyPng use PunyPng for image optimizing, instead of SmushIt - -v, --version display current version - -Example -====== - smusher /apps/ts/public/images - smushing /apps/rs/public/images/social/facebook_icon.png - 2887 -> 132 = 4% - - smushing /apps/rs/public/images/social/myspace_icon.png - 3136 -> 282 = 8% - - smushing /apps/rs/public/images/dvd/dvd_1.png - 5045 -> 4 = 0% - reverted! - ... - -Protection -========== -Any image that returns a failure code, is larger than before, -or is empty will not be saved. - -TODO -==== - - only optimize 'new' images -> save time when doing on already optimized folder - -JS + CSS -============ -reduce images and minify css + js -> try [reduce](http://github.com/grosser/reduce). - -Authors -====== -###Contributors - - [retr0h](http://geminstallthat.wordpress.com/) - -[Michael Grosser](http://pragmatig.wordpress.com) -grosser.michael@gmail.com -Hereby placed under public domain, do what you want, just do not hold me accountable... \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/Rakefile deleted file mode 100644 index 51bdf855..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/Rakefile +++ /dev/null @@ -1,20 +0,0 @@ -task :default => :spec -require 'spec/rake/spectask' -Spec::Rake::SpecTask.new {|t| t.spec_opts = ['--color']} - -begin - require 'jeweler' - project_name = 'smusher' - Jeweler::Tasks.new do |gem| - gem.name = project_name - gem.summary = "Automatic Lossless Reduction Of All Your Images" - gem.email = "grosser.michael@gmail.com" - gem.homepage = "http://github.com/grosser/#{project_name}" - gem.authors = ["Michael Grosser"] - %w[rake json httpclient].each{|d| gem.add_dependency d} - end - - Jeweler::GemcutterTasks.new -rescue LoadError - puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com" -end \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/VERSION b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/VERSION deleted file mode 100644 index 2b7c5ae0..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/VERSION +++ /dev/null @@ -1 +0,0 @@ -0.4.2 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/bin/smusher b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/bin/smusher deleted file mode 100755 index 83a80f40..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/bin/smusher +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env ruby -require 'rubygems' -require 'optparse' -require 'smusher' - -options = {} -OptionParser.new do |opts| - opts.banner = < #{after}".ljust(40) + " = #{result}" - puts '' - end - end -end \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/lib/smusher/puny_png.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/lib/smusher/puny_png.rb deleted file mode 100644 index ac48b26c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/lib/smusher/puny_png.rb +++ /dev/null @@ -1,17 +0,0 @@ -module Smusher - class PunyPng - def self.converts_gif_to_png? - false - end - - def self.optimized_image_data_for(file) - url = 'http://www.gracepointafterfive.com/punypng_staging/api/optimize' - response = HTTPClient.post url, { 'img' => File.new(file), 'key' => 'd1b72ab4813da6b69e1d6018303ac690c014599d'} - response = JSON.parse(response.body.content) - raise "puny_png: #{response['error']}" if response['error'] - image_url = response['optimized_url'] - raise "no optimized_url found" unless image_url - open(image_url) { |source| source.read() } - end - end -end \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/lib/smusher/smush_it.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/lib/smusher/smush_it.rb deleted file mode 100644 index d38db523..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/lib/smusher/smush_it.rb +++ /dev/null @@ -1,22 +0,0 @@ -module Smusher - class SmushIt - def self.converts_gif_to_png? - true - end - - def self.optimized_image_data_for(file) - #I leave these urls here, just in case it stops working again... - # url = "http://smush.it/ws.php" # original, redirects to somewhere else.. - # url = "http://developer.yahoo.com/yslow/smushit/ws.php" # official but does not work - # url = "http://smushit.com/ysmush.it/ws.php" # used at the new page but does not hande uploads - # url = "http://smushit.eperf.vip.ac4.yahoo.com/ysmush.it/ws.php" # used at the new page but does not hande uploads - url = 'http://ws1.adq.ac4.yahoo.com/ysmush.it/ws.php' - response = HTTPClient.post url, { 'files[]' => File.new(file)} - response = JSON.parse(response.body.content) - raise "smush.it: #{response['error']}" if response['error'] - image_url = response['dest'] - raise "no dest path found" unless image_url - open(image_url) { |source| source.read() } - end - end -end \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/smusher.gemspec b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/smusher.gemspec deleted file mode 100644 index f09c4494..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/smusher.gemspec +++ /dev/null @@ -1,78 +0,0 @@ -# Generated by jeweler -# DO NOT EDIT THIS FILE DIRECTLY -# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command -# -*- encoding: utf-8 -*- - -Gem::Specification.new do |s| - s.name = %q{smusher} - s.version = "0.4.2" - - s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= - s.authors = ["Michael Grosser"] - s.date = %q{2009-11-22} - s.default_executable = %q{smusher} - s.email = %q{grosser.michael@gmail.com} - s.executables = ["smusher"] - s.extra_rdoc_files = [ - "README.markdown" - ] - s.files = [ - ".gitignore", - "README.markdown", - "Rakefile", - "VERSION", - "bin/smusher", - "lib/smusher.rb", - "lib/smusher/puny_png.rb", - "lib/smusher/smush_it.rb", - "smusher.gemspec", - "spec/empty/.gitignore", - "spec/images/ad.gif", - "spec/images/add.png", - "spec/images/drink_empty.png", - "spec/images/logo.gif", - "spec/images/people.jpg", - "spec/images/water.JPG", - "spec/images/woman.jpeg", - "spec/out/ad.gif", - "spec/out/people.jpg", - "spec/reduced/add.png", - "spec/reduced/add_puny.png", - "spec/reduced/fam.png", - "spec/smusher/puny_png_spec.rb", - "spec/smusher/smush_it_spec.rb", - "spec/smusher_spec.rb", - "spec/spec_helper.rb" - ] - s.homepage = %q{http://github.com/grosser/smusher} - s.rdoc_options = ["--charset=UTF-8"] - s.require_paths = ["lib"] - s.rubygems_version = %q{1.3.5} - s.summary = %q{Automatic Lossless Reduction Of All Your Images} - s.test_files = [ - "spec/spec_helper.rb", - "spec/smusher_spec.rb", - "spec/smusher/puny_png_spec.rb", - "spec/smusher/smush_it_spec.rb" - ] - - if s.respond_to? :specification_version then - current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION - s.specification_version = 3 - - if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then - s.add_runtime_dependency(%q, [">= 0"]) - s.add_runtime_dependency(%q, [">= 0"]) - s.add_runtime_dependency(%q, [">= 0"]) - else - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - end - else - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - end -end - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/empty/.gitignore b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/empty/.gitignore deleted file mode 100644 index e69de29b..00000000 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/ad.gif b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/ad.gif deleted file mode 100644 index 57b499733f149e68f5b20495eac12252c14c6fed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h)6)R7#Qm$ zB&f9J_V!($tK;oCIQ#o}?d>T0`)!t_;nc5ru)FHewutjcNcHtl$p8S!x>NI3P38aq zUUJmBrF!#PT9l#P?(ReFLPFR80Hd$vS8UWRNWPJu-?qQ(>C<7Js_4pNny+2sd`ao z&-3wbA^8LV00000EC2ui01yBR000J%z!hgm5*Uv(+Gfc)IVprF;qeFrJf2N+F-kom zzZm0UvDiGK=BS~IR4S7k*=Ep)NEEgt(hHze19UAGB0dy45+)22C@wcF1}zF9B0LL; z1uz{hI0!P52@V)93nm2x7aa(z5DEzi1{gadr!@mC85s}|uL&&}C2SuB3}XWzAP$kg RI|t4OGtmIk7}eE506T1-p$-55 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/add.png b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/add.png deleted file mode 100644 index 6332fefea4be19eeadf211b0b202b272e8564898..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 733 zcmV<30wVp1P)9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/drink_empty.png b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/drink_empty.png deleted file mode 100644 index a40211ed412d95be06d475239a37c35fea158538..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 433 zcmV;i0Z#sjP)awcLgG1Ps>cqvbu;_Vq%$)JuarzB@HWl1!ZPF;C7L( zfnnMp{=@G#I2=L#pCCC))^Xy>1k(9bGie+eiDo<>3#hIg$F>C#B&%FfLPtmE4jr9a zG;-_{Q4m3n>C>c45seEj&?r%+MTanmAQ|J49v^ggr_Bq`JW!*DM#w+}NzbLsGCexH z(&UkQs(hlcVXn_1f*?uzfvMA@#REld=}z(wK;rh8c|(_Lw3$2sh-%+83%t?gYAR0w zBx>IpebHxQ^qXe@vKcLNP9XT_ljCh!!_LrUl~Y!8E6yeB4A{0s@_S@RP$z*(3_rfS z*ERu>_6-ID8Z@Z$!T^IKJgo@`D=KGHs4-;769x8Jz^zQ(5VWl+{_JvPk$HSoZ`Px@ bZR7F{-p6Gno?>^M00000NkvXXu0mjfT}81Z diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/logo.gif b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/logo.gif deleted file mode 100644 index 740ed0d55697b987803f6f4694bbc82227d5374b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 945 zcmZ?wbhEHbWMj}{XlG!!apT6#n>TOWx^?^Z?K^kw+`W7E-o1PG@85s$;K9R(4<9{x z^!V}PCr_R{efsp-vuDqrKY#J!#mkp3U%h(u`t|EKZ{ECn_wN1s_a8rg{QUXz*RNl{ zef##~$B$pXe*OOa`|sbs|NsAI7zLvtFo;7y@h1z=b^jT3KyC!(2?mZn273;f7Yi30 zd4Cl%g?hpG;^_@TCn2cVpnmE*i{QwUS94i>@n9XRI6!q1b@ceQ=zLH s*C!mV({-Q5*$nQojmS75LP0QF~{zyJUM diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/people.jpg b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/people.jpg deleted file mode 100644 index 5eb39f440af109508a1fddf7fc470a2323c33bd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2458 zcmbW#c{J4T9tZI6m|>V-hOvw-O9n%ONOnm?M)sPCEEOS3izZQwin0^3rHQOripWl~ zmF&#eLM3L&$d9p&ROagUyXW3>?qB!b_j8`lKhNhp=kq$x!0t7~Y zI9-73?ws79zXJR-ATIFkyii^~*dMzMwSoW_2n^kFxU%3X6)Lm6VoM zzpAONt8Zv*>geox`>y+aPcNA=IyOEr`C;nI+&q;=XM9~?vR2pDH#XT@-?x9eKmhn} z)^7b9_8%_9u8Ru-0Yjj_T_CRD-3>-Sxc6!D2px5Ro(~k3KX{i{#55(Zs+|v|<+vj1 zacu;KR5Hm$9AIs4 zvnLoK3UI z8f{USlVjP%rrdG!4n~s*r5;?8+l7_-`BtwYDvGeHIrn+P4I21bSXB6^UxV$N5p7Dw}~)EWy~jK75J znEP|3{-Kzxa*u~CAVZzV9hjH;Qfe+b{$$fq0Ttbo3}@tMEyZoz7G7Y@95)h6S*{c8 z!&Fv`bkj(`0$r0*ynN@*!kELno)1q=DpjXU?5S2~Toqplk-E7dn&5h?z};fgn|~;_ zCe7O+khpK})yKCx%FQbl>VqBH`9JpBpdh$(P!Ae7jSBWrd_5X}HPuW5D;_IS3JI_M zdaE*W{fTZnGCQjwnVDn7|F$#Mi};3sx^Iu2&xuB9mlsL7_G&Al?Ce);GVh+X9-nPG zIP@ra+L(u?%=NOn6s_%P&8l(yx_Y!Ezg_7|Rhpn_QrnJFRakI2wv-vuL?o48x}106 zrkBEAxQpuT%%XE!QJoGE?=W(h&F)NpMhQs1Wwl(N}n(WibBI)tt2 ziBkfBn=Wn*dx8ZE(BQ+3FWh8JN44{a(rFo1+4$t9$mcAvgMbFk(&#$VKk=JY&%*H2jFE@#nZnR-bj<5-`QqNN{*Rb@KI@OZY}%- zs!OD1v+Wx!X^H9cQV|uO&tuD&b(sc}V%BE{UG81#j8cu{vI~RjGcjBg2ekE+@piH1 z0~6pmW@g}u!t`{1LYeYVNkHx}?uXtxTkFazXl~y1!~XM0)yHF=ABw-$19thIde5V| zKbi)Wwh(*v`hu?-K#}nzh&IG1UyL!#J#5m}9kAy5CQ18b=~e}K^)vg9i*tUkgwtu% z+5lEB8PpJYsG2{fWj1sth@^tHQG&PRIrO6QzkZU8Vjs(9J1Uq53(uG=_F3SvJd;g+ zG!E)RHp+|-Buf6Ud$roz9*~s0>}ot?#;(?CR)}0Ld&dFnBi%+0J$7@ap_4`}`Vd&u ze)wFW42XJR8%7P&E%c+fx%(ZIk5vCg4^nGs@NEC-i?iw{_i83KrSmV*i;7+Cu6DSP zV&Zjx{Xb>0Bz~%lYkhR;^Ytf$u?+$Um>MBX&1B1u>4#$~>gP^Ja)2-5W9lbu>q6FV zJ~AF?J;%76rW>R$ClpS?2?$)wk!q}23o|QWR=N5pNjW9Mp8?1oBhQ!lYT6zO+39o6 zqefnd2k>O`jC3!^%ORm2h@Q7X0&wltd;*MKOGGj$$47!x!iP4ArZZU?Vl&gH>E7oj z*W8L<&q~X)Efaq#7KdaoH)70vKZ(W?-m9%r8Be*Y85A|om5)*Jb0?z72bRG1FD~`( z_!;^zre;J@dwmXT7>tD>15}xYidEg6fdQyVrRhQ2P>RD-pEL|~uRdc~a#7f9MOAQL zu1iCPHUIRb3aCC~%Vc3_!Fd6mni-7h$PcYUETx{POaav1ff#xc%iG?it^I|~g)JL$ z#rG8`zBF9b>gE6y`LD+u z2lZ6nCyCD`aLZm?I}R&=1+qhoTOK<1XkmRqL^CXlaS{$~@+N`XaJB=?ozYe z{lrBV15M&gJEgO55cc4=T$+2pfE?sz<@W9S$KJAbs@_-?4b9jb`?ld0Zeu$1jq+h3 zR%W)Xo2y)918U^ciqYZAii1L uIXV9vXnPf5@=g=SKNBWkaHM$F|B-svwSn)HVA+%3hfAHL{nw9hKKuhU1#2Dv diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/water.JPG b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/water.JPG deleted file mode 100644 index c824b19b9ef50ed6efd4c702d9050d4221823b66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4719 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 z z7=opy?L-6XX~Nw&yi{a%&e&HXm&Z1D&vG6lX6$@z)#N2^QUi=+DulK?gX0__&%Z-tqcbzo5FCx8gw>$<+I$%;q;LblofPs4t2~YG#YYtu>8pC-trIi7@-;MlWz9_o-)gtLtI=X8 za_Gt%$e7BSeSXxj<{521D%x5hqKq53k@|M_%Xno|$%L=eFh0>!dc z2zvZ4*JH58CKR{?%5ZL!sbnu5~z)QA=^3=D-o4}1zt6dM~tangy zUk=~+Xh$(xZ6W$zRI(l=z8$igX+z!j(+h!3VYn{l=S|JLP zn_QK~hdt-$pi}y@z@K{*_FrEY{^AHRH~oRaQwcScq08<%zfx6?4B_Ad(a!&KeTMP2 zyG*OTlTgQFqsmCOMfn# zPwGA$6nTZa%LR*AW#>+_mY&AK;)MdOWw)o5UcuS(z2Js}mp~^uQ7=U(oT#g9M3~hS zjJV0SS9ehg+3xqyqMh{R830ol8BfCvFM%dJ8OouD3=>t0*oD6i!zc3eG_YDzim-T$GDJgA)d1WGspWxErS=Wl0?O)y!zC99 zD_gQwPtD=zl6uM}>WNrG1C)SJy?H}7nypM&ws&KeW!Ny2tyY=5}X; zZt4C&CS{gHBwkTf_Y{4!XyD!#(>eC|jj5_aMwG=_XWNHu(`Rjts-HiGp1O%*{TTvQ z|8C2S$h`R`8maW~?k~=mfV_s&)5SqvzpgX2+eHjF$tj7dlvK`riGPI8UXIiV>Y#t` mE+VA!8dgeL_j*;Hz6fagNO=h~Cz;&a`ow^9G1`s2{Q5uJ;diV6 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/woman.jpeg b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/images/woman.jpeg deleted file mode 100644 index 4eb9e73044cea9918462dbb70df1d66dc434587f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2572 zcma)-c|2768^_O?EoRI#!;FljMiY@smZU2;8IxVv>Y9h}Bn`FqambdzCYjdoO3pZHYWhAnUSdx z073x3U3dVSZvh-N*v%&l009^P0Q$nxBA{sC&T>5qxIYqBKqx?fK@mta06r=u;T5?_&^Q0gHo?#Np~12zi6u5@h@yZJba928D@& zqTghNngC8-!$5pD$=XE%8=Y35NwFcr@bCSrCIey&;R@ng9RD(GU2!D!qgL`R5<(6T z0vE3LjS~E#gB8m7zmHC9E~t90KDo5X1H^TuP7aoWY`8f@Oh>q18?!6P5BYgoC#u?}EDlj4{Vu7Tn z@aorGu0h?*9#WVhaX1&{N)=G&#(EtT_i6|kMT8zeIHZ!ji{GY0%3HkVc6}$_;dIb) zdR&-)51x@tk&->`zE@=CNs217ysl1~*?ah!p67Dl-6!^BL7cVT@(7jto5qZ6{NB0a ztfWpYF{mI{KJ7@-9pdfBOIOkZ_;q6bu_+l$wo3+|IyARlCzCe)id`Z3!<8q!-InGr zOd(Punf&RjwGRnkteoL;$er;A2A`FE4PJJxjD{37>3@L~K2jlM!(fdzkyYKGRm-71 zrs+b~UI*>_oN9*-KUtppIGF2SKk{d&;d3>?mnqP#Da9-9Z=0T4l{xB?9@M@S{acgG zTqjl}`C2>~NGZ%=S?(UI(@IZ!*9Y}rWK8wdv+NutAMiGTuWLdO`j8m9)U7wjqvV#kaZVlb z&~U!avI1f+2}JyB?kR^IJ+S?9Lg1uq;y`|&hiN(DRH7`(UkNE)+@KQ0i>NfYw?JNw zX-Vs*5N>nHOYzF#SM4GUGmX~VW^M=gA}zfltA=e$xv)vrzUhG_?I@b5ye;w9?8fl% z4@+aips|S*k3hT4Pk-n??4VK|tGZvDHKX7K>D_ZV=aUP%aUPxTWptW%_3T95MzrkR zT}W+@N+~le|Hioi@0`_GIKF3=ofTaB<{wu>>Fg7oXuN#B=B>RCD}G!gDnBIRe>>rI z{EvWws_Vw*uqU5UUPbRQqQ%FC?TcV@bJTP_LbFv)zUO_i$%}Ikh?M_*XXM!t+~?HD z;bqHs~)+;BGG+DMyG8E3F-wLpw%|QQQOZV!yY{G?C7X zFz6%W`%d)kA5^@=39ZjTn*b=LtiFtOqJ)Qc(B$L<|p3$V^OKJt`pJCGA8tUPcqhhzP&DAcJ`d}!j7Hf z*(c|{bGvMgGzHHNMy!P?GC%d6G=>Ks&po7OcTJ{?0a-vt#=i(kwci9}yYlq-ddg)P zUpszFgzx&i@R!2H`aox~-#;rd{oS7=W;=%@OGwFB8lQ0>Ji1@#5qQ8%rBW5$J=s2y zph^2FYt5BjH0Rs<5-{k?o|q+zW^tDVJGZ$0`#r>BcR8hla#_^TE|#L%5j%kTfr9Ro zvnOeBe#8;Gzjp`rbjxE6(-M+>uL<4zSkCM{E9aj-hUY7S57So)N5P307!13Ng#n!+(;<1=yld z#CYfKxzf97@qq?qPV!F)hFWD5b`)KnNh!5z_VopVPe&Mxz<{e%L-X^QRu)>8F~8d< z{%CxBpe#SIjoAn}>T-mv-LRVJA7z*G`ie%$Gm4J2Y>$lhP#YE|Qb6sMyBvx@zd>bj z|298(dBodF+s{kW{8hfXJ0TsCynrdRk3dg1NAPOI2x`nn;(b?L8h{_Fn)0*VM7vMOnr}8qP7ncvrPkTMiza?rzmB!1BAwcDeqQab&j QR{gr~{;(H%`kTZ50k-unhyVZp diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/out/ad.gif b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/out/ad.gif deleted file mode 100644 index 57b499733f149e68f5b20495eac12252c14c6fed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h)6)R7#Qm$ zB&f9J_V!($tK;oCIQ#o}?d>T0`)!t_;nc5ru)FHewutjcNcHtl$p8S!x>NI3P38aq zUUJmBrF!#PT9l#P?(ReFLPFR80Hd$vS8UWRNWPJu-?qQ(>C<7Js_4pNny+2sd`ao z&-3wbA^8LV00000EC2ui01yBR000J%z!hgm5*Uv(+Gfc)IVprF;qeFrJf2N+F-kom zzZm0UvDiGK=BS~IR4S7k*=Ep)NEEgt(hHze19UAGB0dy45+)22C@wcF1}zF9B0LL; z1uz{hI0!P52@V)93nm2x7aa(z5DEzi1{gadr!@mC85s}|uL&&}C2SuB3}XWzAP$kg RI|t4OGtmIk7}eE506T1-p$-55 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/out/people.jpg b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/out/people.jpg deleted file mode 100644 index 5eb39f440af109508a1fddf7fc470a2323c33bd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2458 zcmbW#c{J4T9tZI6m|>V-hOvw-O9n%ONOnm?M)sPCEEOS3izZQwin0^3rHQOripWl~ zmF&#eLM3L&$d9p&ROagUyXW3>?qB!b_j8`lKhNhp=kq$x!0t7~Y zI9-73?ws79zXJR-ATIFkyii^~*dMzMwSoW_2n^kFxU%3X6)Lm6VoM zzpAONt8Zv*>geox`>y+aPcNA=IyOEr`C;nI+&q;=XM9~?vR2pDH#XT@-?x9eKmhn} z)^7b9_8%_9u8Ru-0Yjj_T_CRD-3>-Sxc6!D2px5Ro(~k3KX{i{#55(Zs+|v|<+vj1 zacu;KR5Hm$9AIs4 zvnLoK3UI z8f{USlVjP%rrdG!4n~s*r5;?8+l7_-`BtwYDvGeHIrn+P4I21bSXB6^UxV$N5p7Dw}~)EWy~jK75J znEP|3{-Kzxa*u~CAVZzV9hjH;Qfe+b{$$fq0Ttbo3}@tMEyZoz7G7Y@95)h6S*{c8 z!&Fv`bkj(`0$r0*ynN@*!kELno)1q=DpjXU?5S2~Toqplk-E7dn&5h?z};fgn|~;_ zCe7O+khpK})yKCx%FQbl>VqBH`9JpBpdh$(P!Ae7jSBWrd_5X}HPuW5D;_IS3JI_M zdaE*W{fTZnGCQjwnVDn7|F$#Mi};3sx^Iu2&xuB9mlsL7_G&Al?Ce);GVh+X9-nPG zIP@ra+L(u?%=NOn6s_%P&8l(yx_Y!Ezg_7|Rhpn_QrnJFRakI2wv-vuL?o48x}106 zrkBEAxQpuT%%XE!QJoGE?=W(h&F)NpMhQs1Wwl(N}n(WibBI)tt2 ziBkfBn=Wn*dx8ZE(BQ+3FWh8JN44{a(rFo1+4$t9$mcAvgMbFk(&#$VKk=JY&%*H2jFE@#nZnR-bj<5-`QqNN{*Rb@KI@OZY}%- zs!OD1v+Wx!X^H9cQV|uO&tuD&b(sc}V%BE{UG81#j8cu{vI~RjGcjBg2ekE+@piH1 z0~6pmW@g}u!t`{1LYeYVNkHx}?uXtxTkFazXl~y1!~XM0)yHF=ABw-$19thIde5V| zKbi)Wwh(*v`hu?-K#}nzh&IG1UyL!#J#5m}9kAy5CQ18b=~e}K^)vg9i*tUkgwtu% z+5lEB8PpJYsG2{fWj1sth@^tHQG&PRIrO6QzkZU8Vjs(9J1Uq53(uG=_F3SvJd;g+ zG!E)RHp+|-Buf6Ud$roz9*~s0>}ot?#;(?CR)}0Ld&dFnBi%+0J$7@ap_4`}`Vd&u ze)wFW42XJR8%7P&E%c+fx%(ZIk5vCg4^nGs@NEC-i?iw{_i83KrSmV*i;7+Cu6DSP zV&Zjx{Xb>0Bz~%lYkhR;^Ytf$u?+$Um>MBX&1B1u>4#$~>gP^Ja)2-5W9lbu>q6FV zJ~AF?J;%76rW>R$ClpS?2?$)wk!q}23o|QWR=N5pNjW9Mp8?1oBhQ!lYT6zO+39o6 zqefnd2k>O`jC3!^%ORm2h@Q7X0&wltd;*MKOGGj$$47!x!iP4ArZZU?Vl&gH>E7oj z*W8L<&q~X)Efaq#7KdaoH)70vKZ(W?-m9%r8Be*Y85A|om5)*Jb0?z72bRG1FD~`( z_!;^zre;J@dwmXT7>tD>15}xYidEg6fdQyVrRhQ2P>RD-pEL|~uRdc~a#7f9MOAQL zu1iCPHUIRb3aCC~%Vc3_!Fd6mni-7h$PcYUETx{POaav1ff#xc%iG?it^I|~g)JL$ z#rG8`zBF9b>gE6y`LD+u z2lZ6nCyCD`aLZm?I}R&=1+qhoTOK<1XkmRqL^CXlaS{$~@+N`XaJB=?ozYe z{lrBV15M&gJEgO55cc4=T$+2pfE?sz<@W9S$KJAbs@_-?4b9jb`?ld0Zeu$1jq+h3 zR%W)Xo2y)918U^ciqYZAii1L uIXV9vXnPf5@=g=SKNBWkaHM$F|B-svwSn)HVA+%3hfAHL{nw9hKKuhU1#2Dv diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/reduced/add.png b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/reduced/add.png deleted file mode 100644 index d6d26db7c071da62daed91569d69ed280969707b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmV;Z0$2TsP)r0bi7>E5^wl4*Pq=s22s3|2_C~w(pii%F#mUC;0&h~CDox05fEu9k&6}6$;Xrwzh z55ogy;?&Yb>g!OVjUotY!>_;I6-`IWh#vTTdEmO9=f1h`BmhbOlix0M({;=akA!S> ziKylYL0JBxI^6KQf|6RxNYQ99^F)DeT1vD}N(xAl0q)`4zcD-3=e`utjSZ??dFU?1+Ft(-FYv@mRG(DYIW@q7h%)*EqPGx?D}b1|`F!X3-4C>%^yo@T@iQu(6-qGaf5q|s3cCoM7h z+Ck1#K|WOp<7yimG%U1mz*ey$G)yEMWzIk@K^SsE`2(5gSs-D4ZGd^h0FAd1SzRen zICLCNxJ=jdnatdtbTYg1B9);@38%H64WDm4L!DEx$YkXy=3lq*U-KP7M#~=nDAU0J O00009VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/reduced/fam.png b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/reduced/fam.png deleted file mode 100644 index 119a267d46ddbd8ad502794a514f1faae0c35253..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 381 zcmV-@0fPRCP)IMa3k)(p`+Z2i*N~d1tMZk%S_C&x`1&!x;VJvzM7 zouFoNYAW8dysnesy14VA>PVx^x;`W$%Lzio`nLGiAYTq>rywT-qDo+6< zYTp`t(Pv}yn`Z#B87*^8Ao%B#<84{P&d_C*Q&w{;&L!&%*tSLTdt^vZCxJ=~Kfb)z zHUW|L4F&@mG^q2!0D~hutqBM#DrZ!vF=WUS1@>9MtxVkzw5=)r>~dw1d3;rG)}y#> btrue - FileUtils.mkdir @out - copy 'people.jpg' - copy 'ad.gif' - - @file = File.join(@out,'people.jpg') - end - - describe :optimize_image do - it "stores the image in an reduced size" do - original_size = size - Smusher.optimize_image(@file) - size.should < original_size - end - - it "does not append newline" do - copy 'add.png' - file = File.join(@out, 'add.png') - Smusher.optimize_image file - # pure File.read() will omit trailing \n - File.readlines(file).last.split('').last.should_not == "\n" - end - - it "can be called with an array of files" do - original_size = size - Smusher.optimize_image([@file]) - size.should < original_size - end - - it "it does nothing if size stayed the same" do - original_size = size - Smusher::SmushIt.should_receive(:optimized_image_data_for).and_return File.read(@file) - Smusher.optimize_image(@file) - size.should == original_size - end - - it "does not save images whoes size got larger" do - original_size = size - Smusher::SmushIt.should_receive(:optimized_image_data_for).and_return File.read(@file)*2 - Smusher.optimize_image(@file) - size.should == original_size - end - - it "does not save images if their size is error-sugesting-small" do - original_size = size - Smusher::SmushIt.should_receive(:optimized_image_data_for).and_return 'oops...' - Smusher.optimize_image(@file) - size.should == original_size - end - - describe "gif handling" do - before do - copy 'logo.gif' - @file = File.join(@out,'logo.gif') - @file_png = File.join(@out,'logo.png') - end - - it "converts gifs to png even if they have the same size" do - pending - copy 'ad.gif' - file = File.join(@out,'ad.gif') - original_size = size - Smusher.optimize_image(file) - File.size(File.join(@out,'ad.png')).should == original_size - end - - it "stores converted .gifs in .png files" do - Smusher.optimize_image(@file) - File.exist?(@file).should == false - File.exist?(@file_png).should == true - end - - it "does not rename gifs, if optimizing failed" do - Smusher::SmushIt.should_receive(:optimized_image_data_for).and_return File.read(@file) - Smusher.optimize_image(@file) - File.exist?(@file).should == true - File.exist?(@file_png).should == false - end - end - - describe 'options' do - it "does not produce output when :quiet is given" do - $stdout.should_receive(:write).never - Smusher.optimize_image(@file,:quiet=>true) - end - - it "raises when an unknown option was given" do - lambda{Smusher.optimize_image(@file,:q=>true)}.should raise_error - end - end - end - - describe :optimize_images_in_folder do - before do - FileUtils.rm @file - @files = [] - %w[add.png drink_empty.png].each do |image_name| - copy image_name - @files << File.join(@out,image_name) - end - @before = @files.map {|f|File.size(f)} - end - - it "optimizes all images" do - Smusher.optimize_images_in_folder(@out) - new_sizes = @files.map {|f|File.size(f)} - new_sizes.size.times {|i| new_sizes[i].should < @before[i]} - end - - it "does not convert gifs" do - copy 'logo.gif' - Smusher.optimize_images_in_folder(@out) - File.exist?(File.join(@out,'logo.png')).should == false - end - - it "converts gifs to png when option was given" do - copy 'logo.gif' - Smusher.optimize_images_in_folder(@out,:convert_gifs=>true) - File.exist?(File.join(@out,'logo.png')).should == true - end - end - - describe :sanitize_folder do - it "cleans a folders trailing slash" do - Smusher.send(:sanitize_folder,"xx/").should == 'xx' - end - - it "does not clean if there is no trailing slash" do - Smusher.send(:sanitize_folder,"/x/ccx").should == '/x/ccx' - end - end - - describe :images_in_folder do - it "finds all non-gif images" do - folder = File.join(ROOT,'images') - all = %w[add.png drink_empty.png people.jpg water.JPG woman.jpeg].map{|name|"#{folder}/#{name}"} - result = Smusher.send(:images_in_folder,folder) - (all+result).uniq.size.should == all.size - end - - it "finds nothing if folder is empty" do - Smusher.send(:images_in_folder,File.join(ROOT,'empty')).should == [] - end - end - - describe :size do - it "find the size of a file" do - Smusher.send(:size,@file).should == File.size(@file) - end - - it "and_return 0 for missing file" do - Smusher.send(:size,File.join(ROOT,'xxxx','dssdfsddfs')).should == 0 - end - end - - describe :logging do - it "yields" do - val = 0 - Smusher.send(:with_logging,@file,false) {val = 1} - val.should == 1 - end - end - - it "has a VERSION" do - Smusher::VERSION.should =~ /^\d+\.\d+\.\d+$/ - end -end \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/spec_helper.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/spec_helper.rb deleted file mode 100644 index 223b7e77..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/smusher-0.4.2/spec/spec_helper.rb +++ /dev/null @@ -1,8 +0,0 @@ -# ---- requirements -require 'rubygems' -require 'spec' - -$LOAD_PATH << 'lib' -require 'smusher' - -ROOT = File.expand_path(File.dirname(__FILE__)) \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/Rakefile deleted file mode 100644 index 414d7b90..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/Rakefile +++ /dev/null @@ -1,19 +0,0 @@ -require "rubygems" -require "rake/testtask" -require "rake/gempackagetask" - -task :default => :test - -Rake::TestTask.new do |t| - t.libs << "test" - t.test_files = FileList["test/test_*.rb"] - t.verbose = true -end - -Rake::GemPackageTask.new(eval(IO.read(File.join(File.dirname(__FILE__), "sprockets.gemspec")))) do |pkg| - require File.join(File.dirname(__FILE__), "lib", "sprockets", "version") - raise "Error: Sprockets::Version doesn't match gemspec" if Sprockets::Version::STRING != pkg.version.to_s - - pkg.need_zip = true - pkg.need_tar = true -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/bin/sprocketize b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/bin/sprocketize deleted file mode 100755 index c65e4a13..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/bin/sprocketize +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env ruby - -require File.join(File.dirname(__FILE__), *%w".. lib sprockets") -require "optparse" - -load_path = (ENV["SPROCKETS_PATH"] || "").split(":") -filenames = [] -options = { :load_path => load_path, :source_files => filenames, :expand_paths => false } - -OptionParser.new do |opts| - opts.summary_width = 28 - opts.banner = "Usage: sprocketize [options] filename [filename ...]" - - def opts.show_usage - puts self - exit - end - - opts.on("-C DIRECTORY", "--directory=DIRECTORY", "Change to DIRECTORY before doing anything") do |directory| - Dir.chdir(directory) - end - - opts.on("-I DIRECTORY", "--include-dir=DIRECTORY", "Adds the directory to the Sprockets load path") do |directory| - load_path << directory - end - - opts.on("-a DIRECTORY", "--asset-root=DIRECTORY", "Copy provided assets into DIRECTORY") do |directory| - options[:asset_root] = directory - end - - opts.on_tail("-h", "--help", "Shows this help message") do - opts.show_usage - end - - opts.on_tail("-v", "--version", "Shows version") do - puts Sprockets::Version::STRING - exit - end - - opts.show_usage if ARGV.empty? - - begin - opts.order(ARGV) do |filename| - filenames << filename - end - rescue OptionParser::ParseError => e - opts.warn e.message - opts.show_usage - end -end - -secretary = Sprockets::Secretary.new(options) -secretary.install_assets if options[:asset_root] -print secretary.concatenation diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/ext/nph-sprockets.cgi b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/ext/nph-sprockets.cgi deleted file mode 100755 index f1e85fef..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/ext/nph-sprockets.cgi +++ /dev/null @@ -1,127 +0,0 @@ -#!/usr/bin/env ruby - -# This is a simple CGI wrapper around Sprockets. -# -# Copy it into a directory on your site with CGI enabled. When invoked, the -# script will search its directory and parent directories for a YAML file named -# "config/sprockets.yml" in order to load configuration information. -# -# If you set the environment variable "sprockets_generate_output_file" to -# "true" the concatenation will be cached to disk. Use it in conjunction with -# URL rewriting to cache your Sprockets output on the first request. -# -# Assuming a site layout like this: -# -# mysite/ -# config/ -# sprockets.yml -# javascripts/ -# mysite.js -# ... -# public/ -# index.html -# nph-sprockets.cgi (this file) -# vendor/ -# sprockets/ -# prototype/ -> ... -# scriptaculous/ -> ... -# -# mysite/config/sprockets.yml might look like this: -# -# :load_path: -# - javascripts -# - vendor/sprockets/*/src -# :source_files: -# - javascripts/mysite.js -# - javascripts/*.js -# :output_file: public/sprockets.js -# -# The -# -# And you might have the following Apache configuration: -# -# -# ServerName mysite.example.org -# DocumentRoot "/path/to/mysite/public" -# -# -# Options +ExecCGI +FollowSymLinks -# AddHandler cgi-script .cgi -# -# RewriteEngine on -# RewriteCond /sprockets.js !-f -# RewriteRule ^sprockets\.js /nph-sprockets.cgi [P,L] -# -# -# -# All requests to /sprockets.js will transparently proxy /nph-sprockets.cgi if -# mysite/public/sprockets.js does not exist. In production, you can add -# -# SetEnv sprockets_generate_output_file true -# -# to your Apache configuration and mysites/public/sprockets.js will be cached -# on the first request to /sprockets.js. - -require "yaml" -require "fileutils" - -def respond_with(options = {}) - options = { :code => 200, :content => "", :type => "text/plain" }.merge(options) - print "HTTP/1.0 #{options[:code]}\r\n" - print "Content-Type: #{options[:type]}\r\n" - print "Content-Length: #{options[:content].length}\r\n" - print "\r\n#{options[:content]}" - $stdout.flush - exit! -end - -def search_upwards_for(filename) - pwd = original_pwd = Dir.pwd - loop do - return File.expand_path(filename) if File.file?(filename) - Dir.chdir("..") - respond_with(:code => 500, :content => "couldn't find config/sprockets.yml") if Dir.pwd == pwd - pwd = Dir.pwd - end -ensure - Dir.chdir(original_pwd) -end - -def generate_output_file? - (ENV["REDIRECT_sprockets_generate_output_file"] || ENV["sprockets_generate_output_file"]) =~ /true/i -end - -configuration_file = search_upwards_for("config/sprockets.yml") -sprockets_root = File.dirname(File.dirname(configuration_file)) -configuration = YAML.load(IO.read(configuration_file)) - -begin - if File.directory?(sprockets_dir = File.join(sprockets_root, "vendor/gems/sprockets/lib")) - $:.unshift sprockets_dir - elsif File.directory?(sprockets_dir = File.join(sprockets_root, "vendor/sprockets/lib")) - $:.unshift sprockets_dir - else - require "rubygems" - end - - require "sprockets" - -rescue Exception => e - respond_with(:code => 500, :content => "couldn't find sprockets: #{e}") -end - -begin - secretary = Sprockets::Secretary.new( - :root => sprockets_root, - :load_path => configuration[:load_path], - :source_files => configuration[:source_files] - ) - - secretary.concatenation.save_to(File.join(sprockets_root, configuration[:output_file])) if generate_output_file? - respond_with(:content => secretary.concatenation.to_s, :type => "text/javascript") - -rescue Exception => e - respond_with(:code => 500, :content => "couldn't generate concatenated javascript: #{e}") -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets.rb deleted file mode 100644 index 6271f035..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets.rb +++ /dev/null @@ -1,42 +0,0 @@ -$:.unshift File.dirname(__FILE__) - -require "yaml" -require "fileutils" - -module Sprockets - class << self - def running_on_windows? - RUBY_PLATFORM =~ /(win|w)32$/ - end - - def absolute?(location) - same_when_expanded?(location) || platform_absolute_path?(location) - end - - protected - def same_when_expanded?(location) - location[0, 1] == File.expand_path(location)[0, 1] - end - - def platform_absolute_path?(location) - false - end - - if Sprockets.running_on_windows? - def platform_absolute_path?(location) - location[0, 1] == File::SEPARATOR && File.expand_path(location) =~ /[A-Za-z]:[\/\\]/ - end - end - end -end - -require "sprockets/version" -require "sprockets/error" -require "sprockets/environment" -require "sprockets/pathname" -require "sprockets/source_line" -require "sprockets/source_file" -require "sprockets/concatenation" -require "sprockets/preprocessor" -require "sprockets/secretary" - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/concatenation.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/concatenation.rb deleted file mode 100644 index 3ea7abc6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/concatenation.rb +++ /dev/null @@ -1,36 +0,0 @@ -module Sprockets - class Concatenation - attr_reader :source_lines - - def initialize - @source_lines = [] - @source_file_mtimes = {} - end - - def record(source_line) - source_lines << source_line - record_mtime_for(source_line.source_file) - source_line - end - - def to_s - source_lines.join - end - - def mtime - @source_file_mtimes.values.max - end - - def save_to(filename) - timestamp = mtime - File.open(filename, "w") { |file| file.write(to_s) } - File.utime(timestamp, timestamp, filename) - true - end - - protected - def record_mtime_for(source_file) - @source_file_mtimes[source_file] ||= source_file.mtime - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/environment.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/environment.rb deleted file mode 100644 index 29f7daec..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/environment.rb +++ /dev/null @@ -1,52 +0,0 @@ -module Sprockets - class Environment - attr_reader :root, :load_path - - def initialize(root, load_path = []) - @load_path = [@root = Pathname.new(self, root)] - - load_path.reverse_each do |location| - register_load_location(location) - end - end - - def pathname_from(location) - Pathname.new(self, absolute_location_from(location)) - end - - def register_load_location(location) - pathname = pathname_from(location) - load_path.delete(pathname) - load_path.unshift(pathname) - location - end - - def find(location) - if Sprockets.absolute?(location) && File.exists?(location) - pathname_from(location) - else - find_all(location).first - end - end - - def constants(reload = false) - @constants = nil if reload - @constants ||= find_all("constants.yml").inject({}) do |constants, pathname| - contents = YAML.load(pathname.contents) rescue nil - contents = {} unless contents.is_a?(Hash) - constants.merge(contents) - end - end - - protected - def absolute_location_from(location) - location = location.to_s - location = File.join(root.absolute_location, location) unless Sprockets.absolute?(location) - File.expand_path(location) - end - - def find_all(location) - load_path.map { |pathname| pathname.find(location) }.compact - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/error.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/error.rb deleted file mode 100644 index 31a3b673..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/error.rb +++ /dev/null @@ -1,5 +0,0 @@ -module Sprockets - class Error < ::StandardError; end - class LoadError < Error; end - class UndefinedConstantError < Error; end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/pathname.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/pathname.rb deleted file mode 100644 index 8d3b0860..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/pathname.rb +++ /dev/null @@ -1,37 +0,0 @@ -module Sprockets - class Pathname - attr_reader :environment, :absolute_location - - def initialize(environment, absolute_location) - @environment = environment - @absolute_location = File.expand_path(absolute_location) - end - - # Returns a Pathname for the location relative to this pathname's absolute location. - def find(location, kind = :file) - location = File.join(absolute_location, location) - File.send("#{kind}?", location) ? Pathname.new(environment, location) : nil - end - - def parent_pathname - Pathname.new(environment, File.dirname(absolute_location)) - end - - def source_file - SourceFile.new(environment, self) - end - - def contents - IO.read(absolute_location) - end - - def ==(pathname) - environment == pathname.environment && - absolute_location == pathname.absolute_location - end - - def to_s - absolute_location - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/preprocessor.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/preprocessor.rb deleted file mode 100644 index ed9a636d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/preprocessor.rb +++ /dev/null @@ -1,91 +0,0 @@ -module Sprockets - class Preprocessor - attr_reader :environment, :concatenation, :source_files, :asset_paths - - def initialize(environment, options = {}) - @environment = environment - @concatenation = Concatenation.new - @source_files = [] - @asset_paths = [] - @options = options - end - - def require(source_file) - return if source_files.include?(source_file) - source_files << source_file - - source_file.each_source_line do |source_line| - if source_line.require? - require_from_source_line(source_line) - elsif source_line.provide? - provide_from_source_line(source_line) - else - record_source_line(source_line) - end - end - end - - def provide(asset_path) - return if !asset_path || asset_paths.include?(asset_path) - asset_paths << asset_path - end - - protected - attr_reader :options - - def require_from_source_line(source_line) - require pathname_from(source_line).source_file - end - - def provide_from_source_line(source_line) - provide asset_path_from(source_line) - end - - def record_source_line(source_line) - unless source_line.comment? && strip_comments? - concatenation.record(source_line) - end - end - - def strip_comments? - options[:strip_comments] != false - end - - def pathname_from(source_line) - pathname = send(pathname_finder_from(source_line), source_line) - raise_load_error_for(source_line) unless pathname - pathname - end - - def pathname_for_require_from(source_line) - environment.find(location_from(source_line)) - end - - def pathname_for_relative_require_from(source_line) - source_line.source_file.find(location_from(source_line)) - end - - def pathname_finder_from(source_line) - "pathname_for_#{kind_of_require_from(source_line)}_from" - end - - def kind_of_require_from(source_line) - source_line.require[/^(.)/, 1] == '"' ? :relative_require : :require - end - - def location_from(source_line) - location = source_line.require[/^.(.*).$/, 1] - File.join(File.dirname(location), File.basename(location, ".js") + ".js") - end - - def asset_path_from(source_line) - source_line.source_file.find(source_line.provide, :directory) - end - - def raise_load_error_for(source_line) - kind = kind_of_require_from(source_line).to_s.tr("_", " ") - file = File.split(location_from(source_line)).last - raise LoadError, "can't find file for #{kind} `#{file}' (#{source_line.inspect})" - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/secretary.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/secretary.rb deleted file mode 100644 index ded5acca..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/secretary.rb +++ /dev/null @@ -1,106 +0,0 @@ -module Sprockets - class Secretary - DEFAULT_OPTIONS = { - :root => ".", - :load_path => [], - :source_files => [], - :expand_paths => true - } - - attr_reader :environment, :preprocessor - - def initialize(options = {}) - reset!(options) - end - - def reset!(options = @options) - @options = DEFAULT_OPTIONS.merge(options) - @environment = Sprockets::Environment.new(@options[:root]) - @preprocessor = Sprockets::Preprocessor.new(@environment) - - add_load_locations(@options[:load_path]) - add_source_files(@options[:source_files]) - end - - def add_load_location(load_location, options = {}) - add_load_locations([load_location], options) - end - - def add_load_locations(load_locations, options = {}) - expand_paths(load_locations, options).each do |load_location| - environment.register_load_location(load_location) - end - end - - def add_source_file(source_file, options = {}) - add_source_files([source_file], options) - end - - def add_source_files(source_files, options = {}) - expand_paths(source_files, options).each do |source_file| - if pathname = environment.find(source_file) - preprocessor.require(pathname.source_file) - else - raise Sprockets::LoadError, "no such file `#{source_file}'" - end - end - end - - def concatenation - preprocessor.concatenation - end - - def install_assets - if @options[:asset_root] - preprocessor.asset_paths.each do |asset_path| - copy_assets_from(asset_path.absolute_location) - end - end - end - - def source_last_modified - preprocessor.source_files.map { |s| s.mtime }.max - end - - protected - def expand_paths(paths, options = {}) - if options.has_key?(:expand_paths) ? options[:expand_paths] : @options[:expand_paths] - paths.map { |path| Dir[from_root(path)].sort }.flatten.compact - else - paths.map { |path| from_root(path) } - end - end - - def from_root(path) - if Sprockets.absolute?(path) - path - else - File.join(@options[:root], path) - end - end - - def copy_assets_from(asset_path) - relative_file_paths_beneath(asset_path).each do |filename| - source, destination = File.join(asset_path, filename), File.join(asset_root, File.dirname(filename)) - if !File.directory?(source) - FileUtils.mkdir_p(destination) - FileUtils.cp(source, destination) - end - end - end - - def relative_file_paths_beneath(path) - Dir[File.join(path, "**", "*")].map do |filename| - File.join(*path_pieces(filename)[path_pieces(path).length..-1]) - end - end - - def asset_root - from_root(@options[:asset_root]) - end - - def path_pieces(path) - path.split(File::SEPARATOR) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/source_file.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/source_file.rb deleted file mode 100644 index 8dfa5253..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/source_file.rb +++ /dev/null @@ -1,54 +0,0 @@ -module Sprockets - class SourceFile - attr_reader :environment, :pathname - - def initialize(environment, pathname) - @environment = environment - @pathname = pathname - end - - def source_lines - @lines ||= begin - lines = [] - - comments = [] - File.open(pathname.absolute_location) do |file| - file.each do |line| - lines << line = SourceLine.new(self, line, file.lineno) - - if line.begins_pdoc_comment? || comments.any? - comments << line - end - - if line.ends_multiline_comment? - if line.ends_pdoc_comment? - comments.each { |l| l.comment! } - end - comments.clear - end - end - end - - lines - end - end - - def each_source_line(&block) - source_lines.each(&block) - end - - def find(location, kind = :file) - pathname.parent_pathname.find(location, kind) - end - - def ==(source_file) - pathname == source_file.pathname - end - - def mtime - File.mtime(pathname.absolute_location) - rescue Errno::ENOENT - Time.now - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/source_line.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/source_line.rb deleted file mode 100644 index 76c8ee69..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/source_line.rb +++ /dev/null @@ -1,82 +0,0 @@ -module Sprockets - class SourceLine - attr_reader :source_file, :line, :number - - def initialize(source_file, line, number) - @source_file = source_file - @line = line - @number = number - end - - def comment - @comment ||= line[/^\s*\/\/(.*)/, 1] - end - - def comment? - !!comment - end - - def comment! - @comment = line - end - - def begins_multiline_comment? - line =~ /^\s*\/\*(.*)/ - end - - def begins_pdoc_comment? - line =~ /^\s*\/\*\*(.*)/ - end - - def ends_multiline_comment? - line =~ /^(.*)\*\/\s*/ - end - - def ends_pdoc_comment? - line =~ /^(.*)\*\*\/\s*/ - end - - def require - @require ||= (comment || "")[/^=\s+require\s+(\"(.*?)\"|<(.*?)>)\s*$/, 1] - end - - def require? - !!require - end - - def provide - @provide ||= (comment || "")[/^=\s+provide\s+\"(.*?)\"\s*$/, 1] - end - - def provide? - !!provide - end - - def inspect - "line #@number of #{@source_file.pathname}" - end - - def to_s(constants = source_file.environment.constants) - result = line.chomp - interpolate_constants!(result, constants) - strip_trailing_whitespace!(result) - result + $/ - end - - protected - def interpolate_constants!(result, constants) - result.gsub!(/<%=(.*?)%>/) do - constant = $1.strip - if value = constants[constant] - value - else - raise UndefinedConstantError, "couldn't find constant `#{constant}' in #{inspect}" - end - end - end - - def strip_trailing_whitespace!(result) - result.gsub!(/\s+$/, "") - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/version.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/version.rb deleted file mode 100644 index f9303add..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/lib/sprockets/version.rb +++ /dev/null @@ -1,9 +0,0 @@ -module Sprockets - module Version - MAJOR = 1 - MINOR = 0 - TINY = 2 - - STRING = [MAJOR, MINOR, TINY].join(".") - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/one.png b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/one.png deleted file mode 100644 index 5626abf0..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/one.png +++ /dev/null @@ -1 +0,0 @@ -one diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/two.png b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/two.png deleted file mode 100644 index f719efd4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/two.png +++ /dev/null @@ -1 +0,0 @@ -two diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/assets/stylesheets/script_with_assets.css b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/assets/stylesheets/script_with_assets.css deleted file mode 100644 index da84fa5f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/assets/stylesheets/script_with_assets.css +++ /dev/null @@ -1 +0,0 @@ -/* nothing */ diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/constants.yml b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/constants.yml deleted file mode 100644 index 9ea45ed8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/constants.yml +++ /dev/null @@ -1 +0,0 @@ -VERSION: 1.0 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_ignored_when_strip_comments_is_false.js b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_ignored_when_strip_comments_is_false.js deleted file mode 100644 index 43fc8474..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_ignored_when_strip_comments_is_false.js +++ /dev/null @@ -1,8 +0,0 @@ -// This is a double-slash comment that should appear in the resulting output file. -/* This is a slash-star comment that should appear in the resulting output file. */ -/* This is multiline slash-star comment -* that should appear in the resulting -* output file */ -/** - This is not a PDoc comment that should appear in the resulting output file. -*/ diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_removed_by_default.js b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_removed_by_default.js deleted file mode 100644 index d87c260d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_removed_by_default.js +++ /dev/null @@ -1,2 +0,0 @@ -// This is a double-slash comment that should not appear in the resulting output file. -/* This is a slash-star comment that should not appear in the resulting output file. */ diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/multiline_comments_should_be_removed_by_default.js b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/multiline_comments_should_be_removed_by_default.js deleted file mode 100644 index 8b169adb..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/multiline_comments_should_be_removed_by_default.js +++ /dev/null @@ -1,4 +0,0 @@ -/** - * This is a PDoc comment - * that should appear in the resulting output file. -**/ diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_after_it_has_already_been_required_should_do_nothing.js b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_after_it_has_already_been_required_should_do_nothing.js deleted file mode 100644 index 497a4c1b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_after_it_has_already_been_required_should_do_nothing.js +++ /dev/null @@ -1,5 +0,0 @@ -var before_first_require; -//= require -var after_first_require_and_before_second_require; -//= require -var after_second_require; diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_that_does_not_exist_should_raise_an_error.js b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_that_does_not_exist_should_raise_an_error.js deleted file mode 100644 index cd8230d2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_that_does_not_exist_should_raise_an_error.js +++ /dev/null @@ -1 +0,0 @@ -//= require diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/requiring_a_single_file_should_replace_the_require_comment_with_the_file_contents.js b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/requiring_a_single_file_should_replace_the_require_comment_with_the_file_contents.js deleted file mode 100644 index 86d8a974..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/requiring_a_single_file_should_replace_the_require_comment_with_the_file_contents.js +++ /dev/null @@ -1,3 +0,0 @@ -var before_require; -//= require -var after_require; diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/requiring_the_current_file_should_do_nothing.js b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/requiring_the_current_file_should_do_nothing.js deleted file mode 100644 index d9305bd5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/requiring_the_current_file_should_do_nothing.js +++ /dev/null @@ -1 +0,0 @@ -//= require "requiring_the_current_file_should_do_nothing" diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/constants.yml b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/constants.yml deleted file mode 100644 index baf4edb9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/constants.yml +++ /dev/null @@ -1,3 +0,0 @@ -ONE: one -TWO: two -HELLO: Hello world! diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/foo.js b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/foo.js deleted file mode 100644 index b8514fef..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/foo.js +++ /dev/null @@ -1 +0,0 @@ -var Foo = { }; diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/foo/bar.js b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/foo/bar.js deleted file mode 100644 index dd4d767d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/foo/bar.js +++ /dev/null @@ -1,4 +0,0 @@ -//= require "bar" -var FooBar = { }; - -/* Hello! */ diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/foo/foo.js b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/foo/foo.js deleted file mode 100644 index 290e951e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/foo/foo.js +++ /dev/null @@ -1 +0,0 @@ -var FooFoo = { }; diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/script_with_assets.js b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/script_with_assets.js deleted file mode 100644 index 91aa4298..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/fixtures/src/script_with_assets.js +++ /dev/null @@ -1,3 +0,0 @@ -//= provide "../assets" - -var ScriptWithAssets = { }; diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_concatenation.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_concatenation.rb deleted file mode 100644 index 18c490c0..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_concatenation.rb +++ /dev/null @@ -1,28 +0,0 @@ -require "test_helper" - -class ConcatenationTest < Test::Unit::TestCase - def setup - @concatenation = Sprockets::Concatenation.new - @environment = environment_for_fixtures - end - - def test_record - assert_equal [], @concatenation.source_lines - assert_equal "hello\n", @concatenation.record(source_line("hello\n")).to_s - assert_equal "world\n", @concatenation.record(source_line("world\n")).to_s - assert_equal ["hello\n", "world\n"], @concatenation.source_lines.map { |source_line| source_line.to_s } - end - - def test_to_s - @concatenation.record(source_line("hello\n")) - @concatenation.record(source_line("world\n")) - assert_equal "hello\nworld\n", @concatenation.to_s - end - - def test_save_to - filename = File.join(FIXTURES_PATH, "output.js") - @concatenation.save_to(filename) - assert_equal @concatenation.to_s, IO.read(filename) - File.unlink(filename) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_environment.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_environment.rb deleted file mode 100644 index a65e3bf7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_environment.rb +++ /dev/null @@ -1,64 +0,0 @@ -require "test_helper" - -class EnvironmentTest < Test::Unit::TestCase - def test_load_path_locations_become_pathnames_for_absolute_locations_from_the_root - environment = Sprockets::Environment.new("/root", ["/a", "b"]) - assert_load_path_equals ["/a", "/root/b", "/root"], environment - end - - def test_pathname_from_for_location_with_leading_slash_should_return_a_pathname_with_the_location_unchanged - environment = Sprockets::Environment.new("/root") - assert_absolute_location "/a", environment.pathname_from("/a") - end - - def test_pathname_from_for_relative_location_should_return_a_pathname_for_the_expanded_absolute_location_from_root - environment = Sprockets::Environment.new("/root") - assert_absolute_location "/root/a", environment.pathname_from("a") - assert_absolute_location "/root/a", environment.pathname_from("./a") - assert_absolute_location "/a", environment.pathname_from("../a") - end - - def test_register_load_location_should_unshift_the_location_onto_the_load_path - environment = Sprockets::Environment.new("/root") - environment.register_load_location("a") - assert_load_path_equals ["/root/a", "/root"], environment - environment.register_load_location("b") - assert_load_path_equals ["/root/b", "/root/a", "/root"], environment - end - - def test_register_load_location_should_remove_already_existing_locations_before_unshifting - environment = Sprockets::Environment.new("/root") - environment.register_load_location("a") - environment.register_load_location("b") - assert_load_path_equals ["/root/b", "/root/a", "/root"], environment - environment.register_load_location("a") - assert_load_path_equals ["/root/a", "/root/b", "/root"], environment - end - - def test_find_should_return_the_first_matching_pathname_in_the_load_path - environment = environment_for_fixtures - first_pathname = environment.find("foo.js") - assert_absolute_location_ends_with "src/foo.js", first_pathname - - environment.register_load_location(File.join(FIXTURES_PATH, "src", "foo")) - second_pathname = environment.find("foo.js") - assert_not_equal first_pathname, second_pathname - assert_absolute_location_ends_with "foo/foo.js", second_pathname - end - - def test_find_should_return_nil_when_no_matching_source_file_is_found - environment = environment_for_fixtures - assert_nil environment.find("nonexistent.js") - end - - def test_constants_should_return_a_hash_of_all_constants_defined_in_the_load_path - constants = environment_for_fixtures.constants - assert_kind_of Hash, constants - assert_equal %w(HELLO ONE TWO VERSION), constants.keys.sort - end - - protected - def assert_load_path_equals(load_path_absolute_locations, environment) - assert load_path_absolute_locations.zip(environment.load_path).map { |location, pathname| File.expand_path(location) == pathname.absolute_location }.all? - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_helper.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_helper.rb deleted file mode 100644 index fcb2ad44..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_helper.rb +++ /dev/null @@ -1,55 +0,0 @@ -require File.join(File.dirname(__FILE__), *%w".. lib sprockets") -require "test/unit" -require "fileutils" -require "tmpdir" - -class Test::Unit::TestCase - FIXTURES_PATH = File.expand_path(File.join(File.dirname(__FILE__), "fixtures")) unless defined?(FIXTURES_PATH) - - protected - def location_for_fixture(fixture) - File.join(FIXTURES_PATH, fixture) - end - - def content_of_fixture(fixture) - IO.read(location_for_fixture(fixture)) - end - - def environment_for_fixtures - Sprockets::Environment.new(FIXTURES_PATH, source_directories_in_fixtures_path) - end - - def source_directories_in_fixtures_path - Dir[File.join(FIXTURES_PATH, "**", "src")] - end - - def assert_absolute_location(location, pathname) - assert_equal File.expand_path(location), pathname.absolute_location - end - - def assert_absolute_location_ends_with(location_ending, pathname) - assert pathname.absolute_location[/#{Regexp.escape(location_ending)}$/] - end - - def pathname(location, environment = @environment) - Sprockets::Pathname.new(environment, File.join(FIXTURES_PATH, location)) - end - - def source_file(location, environment = @environment) - Sprockets::SourceFile.new(environment, pathname(location, environment)) - end - - def source_line(line, source_file = nil, line_number = 1) - Sprockets::SourceLine.new(source_file || source_file("dummy"), line, line_number) - end - - def with_temporary_directory - path = File.join(Dir.tmpdir, [caller[0][/`(.*)'/, 1], Time.now.to_f].join("_")) - begin - FileUtils.mkdir(path) - yield path - ensure - FileUtils.rm_rf(path) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_pathname.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_pathname.rb deleted file mode 100644 index 7860a704..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_pathname.rb +++ /dev/null @@ -1,43 +0,0 @@ -require "test_helper" - -class PathnameTest < Test::Unit::TestCase - def setup - @environment = environment_for_fixtures - end - - def test_absolute_location_is_automatically_expanded - expanded_location = File.expand_path(File.join(FIXTURES_PATH, "foo")) - assert_absolute_location expanded_location, pathname("foo") - assert_absolute_location expanded_location, pathname("./foo") - assert_absolute_location expanded_location, pathname("./foo/../foo") - end - - def test_find_should_return_a_pathname_for_the_location_relative_to_the_absolute_location_of_the_pathname - assert_absolute_location_ends_with "src/foo/bar.js", pathname("src/foo").find("bar.js") - end - - def test_find_should_return_nil_when_the_location_relative_to_the_absolute_location_of_the_pathname_is_not_a_file_or_does_not_exist - assert_nil pathname("src/foo").find("nonexistent.js") - end - - def test_parent_pathname_should_return_a_pathname_for_the_parent_directory - assert_absolute_location_ends_with "src", pathname("src/foo").parent_pathname - assert_absolute_location_ends_with "foo", pathname("src/foo/foo.js").parent_pathname - end - - def test_source_file_should_return_a_source_file_for_the_pathname - source_file = pathname("src/foo.js").source_file - assert_kind_of Sprockets::SourceFile, source_file - assert_equal pathname("src/foo.js"), source_file.pathname - end - - def test_equality_of_pathnames - assert_equal pathname("src/foo.js"), pathname("src/foo.js") - assert_equal pathname("src/foo.js"), pathname("src/foo/../foo.js") - assert_not_equal pathname("src/foo.js"), pathname("src/foo/foo.js") - end - - def test_to_s_should_return_absolute_location - assert_equal pathname("src/foo.js").to_s, pathname("src/foo.js").absolute_location - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_preprocessor.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_preprocessor.rb deleted file mode 100644 index 1933767f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_preprocessor.rb +++ /dev/null @@ -1,107 +0,0 @@ -require "test_helper" - -class PreprocessorTest < Test::Unit::TestCase - def setup - @environment = environment_for_fixtures - @preprocessor = Sprockets::Preprocessor.new(@environment) - end - - def test_double_slash_comments_that_are_not_requires_should_be_removed_by_default - require_file_for_this_test - assert_concatenation_does_not_contain_line "// This is a double-slash comment that should not appear in the resulting output file." - assert_concatenation_contains_line "/* This is a slash-star comment that should not appear in the resulting output file. */" - end - - def test_double_slash_comments_that_are_not_requires_should_be_ignored_when_strip_comments_is_false - @preprocessor = Sprockets::Preprocessor.new(@environment, :strip_comments => false) - require_file_for_this_test - assert_concatenation_contains_line "// This is a double-slash comment that should appear in the resulting output file." - assert_concatenation_contains_line "/* This is a slash-star comment that should appear in the resulting output file. */" - - assert_concatenation_contains_line "/* This is multiline slash-star comment" - assert_concatenation_contains_line "* that should appear in the resulting" - assert_concatenation_contains_line "* output file */" - - assert_concatenation_contains_line "This is not a PDoc comment that should appear in the resulting output file." - end - - def test_multiline_comments_should_be_removed_by_default - require_file_for_this_test - assert_concatenation_does_not_contain_line "/**" - assert_concatenation_does_not_contain_line " * This is a PDoc comment" - assert_concatenation_does_not_contain_line " * that should appear in the resulting output file." - assert_concatenation_does_not_contain_line "**/" - end - - def test_requiring_a_single_file_should_replace_the_require_comment_with_the_file_contents - require_file_for_this_test - assert_concatenation_contains <<-LINES - var before_require; - var Foo = { }; - var after_require; - LINES - end - - def test_requiring_a_file_that_does_not_exist_should_raise_an_error - assert_raises(Sprockets::LoadError) do - require_file_for_this_test - end - end - - def test_requiring_the_current_file_should_do_nothing - require_file_for_this_test - assert_equal "", output_text - end - - def test_requiring_a_file_after_it_has_already_been_required_should_do_nothing - require_file_for_this_test - assert_concatenation_contains <<-LINES - var before_first_require; - var Foo = { }; - var after_first_require_and_before_second_require; - var after_second_require; - LINES - end - - protected - attr_reader :environment, :preprocessor - - def concatenation - preprocessor.concatenation - end - - def output_text - preprocessor.concatenation.to_s - end - - def source_lines_matching(line) - concatenation.source_lines.select { |source_line| source_line.line.strip == line } - end - - def require_file(location) - preprocessor.require(environment.find(location).source_file) - end - - def require_file_for_this_test - require_file(file_for_this_test) - end - - def file_for_this_test - caller.map { |c| c[/`(.*?)'$/, 1] }.grep(/^test_/).first[5..-1] + ".js" - end - - def assert_concatenation_does_not_contain_line(line) - assert source_lines_matching(line).empty?, "Expected #{line.inspect} to not exist" - end - - def assert_concatenation_contains_line(line) - assert source_lines_matching(line).any?, "Expected #{line.inspect} to exist" - end - - def assert_concatenation_contains(indented_text) - lines = indented_text.split($/) - initial_indent = lines.first[/^\s*/].length - unindented_text = lines.map { |line| line[initial_indent..-1] }.join($/) - assert output_text[unindented_text] - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_secretary.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_secretary.rb deleted file mode 100644 index a2e33250..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_secretary.rb +++ /dev/null @@ -1,83 +0,0 @@ -require "test_helper" - -class SecretaryTest < Test::Unit::TestCase - def test_load_locations_are_not_expanded_when_expand_paths_is_false - secretary = Sprockets::Secretary.new(:root => FIXTURES_PATH) - secretary.add_load_location("src/**/", :expand_paths => false) - - assert_equal [File.join(FIXTURES_PATH, "src/**"), FIXTURES_PATH], - secretary.environment.load_path.map { |pathname| pathname.absolute_location } - end - - def test_load_locations_are_expanded_when_expand_paths_is_true - secretary = Sprockets::Secretary.new(:root => FIXTURES_PATH) - secretary.add_load_location("src/**/", :expand_paths => true) - - assert_equal [File.join(FIXTURES_PATH, "src", "foo"), File.join(FIXTURES_PATH, "src"), FIXTURES_PATH], - secretary.environment.load_path.map { |pathname| pathname.absolute_location } - end - - def test_source_files_are_not_expanded_when_expand_paths_is_false - secretary = Sprockets::Secretary.new(:root => FIXTURES_PATH) - assert_raises(Sprockets::LoadError) do - secretary.add_source_file("src/f*.js", :expand_paths => false) - end - end - - def test_source_files_are_expanded_when_expand_paths_is_true - secretary = Sprockets::Secretary.new(:root => FIXTURES_PATH) - secretary.add_source_file("src/f*.js", :expand_paths => true) - - assert_equal [File.join(FIXTURES_PATH, "src", "foo.js")], - secretary.preprocessor.source_files.map { |source_file| source_file.pathname.absolute_location } - end - - def test_install_assets_into_empty_directory - with_temporary_directory do |temp| - secretary = Sprockets::Secretary.new(:root => FIXTURES_PATH, :asset_root => temp) - secretary.add_source_file("src/script_with_assets.js") - - assert_equal [], Dir[File.join(temp, "**", "*")] - secretary.install_assets - assert_equal paths_relative_to(temp, - "images", "images/script_with_assets", "images/script_with_assets/one.png", - "images/script_with_assets/two.png", "stylesheets", "stylesheets/script_with_assets.css"), - Dir[File.join(temp, "**", "*")].sort - end - end - - def test_install_assets_into_nonexistent_directory - with_temporary_directory do |temp| - temp = File.join(temp, "assets") - secretary = Sprockets::Secretary.new(:root => FIXTURES_PATH, :asset_root => temp) - secretary.add_source_file("src/script_with_assets.js") - - assert_equal [], Dir[File.join(temp, "**", "*")] - secretary.install_assets - assert_equal paths_relative_to(temp, - "images", "images/script_with_assets", "images/script_with_assets/one.png", - "images/script_with_assets/two.png", "stylesheets", "stylesheets/script_with_assets.css"), - Dir[File.join(temp, "**", "*")].sort - end - end - - def test_install_assets_into_subdirectories_that_already_exist - with_temporary_directory do |temp| - secretary = Sprockets::Secretary.new(:root => FIXTURES_PATH, :asset_root => temp) - secretary.add_source_file("src/script_with_assets.js") - - FileUtils.mkdir_p(File.join(temp, "images", "script_with_assets")) - assert_equal paths_relative_to(temp, "images", "images/script_with_assets"), Dir[File.join(temp, "**", "*")] - secretary.install_assets - assert_equal paths_relative_to(temp, - "images", "images/script_with_assets", "images/script_with_assets/one.png", - "images/script_with_assets/two.png", "stylesheets", "stylesheets/script_with_assets.css"), - Dir[File.join(temp, "**", "*")].sort - end - end - - protected - def paths_relative_to(root, *paths) - paths.map { |path| File.join(root, path) } - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_source_file.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_source_file.rb deleted file mode 100644 index 6c3d8945..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_source_file.rb +++ /dev/null @@ -1,34 +0,0 @@ -require "test_helper" -require "enumerator" -Enumerator = Enumerable::Enumerator unless defined?(Enumerator) # for 1.9.1 compatibility - -class SourceFileTest < Test::Unit::TestCase - def setup - @environment = environment_for_fixtures - end - - def test_each_source_line - source_file_lines = Enumerator.new(source_file("src/foo/bar.js"), :each_source_line).to_a - assert_equal content_of_fixture("src/foo/bar.js"), source_file_lines.map { |line| line.line }.join - assert_equal 4, source_file_lines.length - end - - def test_find_should_return_pathname_for_file_relative_to_the_current_pathname - assert_absolute_location_ends_with "test/fixtures/src/foo/bar.js", source_file("src/foo/foo.js").find("bar.js") - end - - def test_find_should_return_nil_for_nonexistent_file - assert_nil source_file("src/foo/foo.js").find("nonexistent.js") - end - - def test_equality_of_source_files - assert_equal source_file("src/foo/foo.js"), source_file("src/foo/foo.js") - assert_equal source_file("src/foo/foo.js"), source_file("src/foo/../foo/foo.js") - assert_not_equal source_file("src/foo/foo.js"), source_file("src/foo.js") - assert_not_equal source_file("src/foo/foo.js"), source_file("src/foo/bar.js") - end - - def test_mtime_should_return_now_if_file_does_not_exist - assert source_file("src/foo/nonexistent.js").mtime.instance_of?(Time) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_source_line.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_source_line.rb deleted file mode 100644 index bd2d8181..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/sprockets-1.0.2/test/test_source_line.rb +++ /dev/null @@ -1,89 +0,0 @@ -require "test_helper" - -class SourceLineTest < Test::Unit::TestCase - def test_line_that_begins_with_double_slash_should_be_a_comment - assert source_line("//").comment? - assert source_line("//test").comment? - assert source_line("//= require").comment? - assert source_line("//= require ").comment? - assert source_line(" //").comment? - assert source_line("\t//").comment? - end - - def test_line_that_begins_a_multiline_comment - assert source_line(" /*").begins_multiline_comment? - assert source_line(" /**").begins_multiline_comment? - end - - def test_line_that_begins_a_pdoc_comment - assert !source_line(" /*").begins_pdoc_comment? - assert source_line(" /**").begins_pdoc_comment? - end - - def test_line_that_ends_a_multiline_comment - assert source_line(" */").ends_multiline_comment? - assert source_line(" **/").ends_multiline_comment? - end - - def test_line_that_ends_a_pdoc_comment - assert !source_line(" */").ends_pdoc_comment? - assert source_line(" **/").ends_pdoc_comment? - end - - def test_line_that_contains_but_does_not_begin_with_double_slash_should_not_be_a_comment - assert !source_line("f //").comment? - assert !source_line("f //= require ").comment? - end - - def test_comment_should_be_extracted_from_comment_lines - assert_equal "test", source_line("//test").comment - assert_equal " test", source_line("// test").comment - assert_equal nil, source_line("f //test").comment - end - - def test_line_that_contains_require_comment_should_be_a_require - assert source_line("//= require ").require? - assert !source_line("//= require").require? - assert source_line("//= require \"foo\"").require? - assert !source_line("//= require f").require? - end - - def test_require_should_be_extracted_from_require_lines - assert_nil source_line("//= require").require - assert_equal "", source_line("//= require ").require - assert_equal "", source_line("//= require ").require - assert_equal "\"foo\"", source_line("//= require \"foo\"").require - end - - def test_line_that_contains_a_provide_comment_should_be_a_provide - assert source_line("//= provide \"../assets\"").provide? - assert !source_line("//= provide").provide? - assert !source_line("//= provide <../assets>").provide? - end - - def test_provide_should_be_extracted_from_provide_lines - assert_nil source_line("//= provide").provide - assert_equal "../assets", source_line("//= provide \"../assets\"").provide - end - - def test_inspect_should_include_source_file_location_and_line_number - environment = environment_for_fixtures - pathname = Sprockets::Pathname.new(environment, "/a/b/c.js") - source_file = Sprockets::SourceFile.new(environment, pathname) - assert_equal "line 25 of #{File.expand_path("/a/b/c.js")}", source_line("hello", source_file, 25).inspect - end - - def test_interpolation_of_constants - assert_equal %(var VERSION = "1.0";\n), source_line('var VERSION = "<%= VERSION %>";').to_s("VERSION" => "1.0") - end - - def test_interpolation_of_missing_constant_raises_undefined_constant_error - assert_raises(Sprockets::UndefinedConstantError) do - source_line('<%= NONEXISTENT %>').to_s("VERSION" => "1.0") - end - end - - def test_to_s_should_strip_trailing_whitespace_before_adding_line_ending - assert_equal "hello();\n", source_line("hello(); \t \r\n").to_s({}) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/History.txt b/lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/History.txt deleted file mode 100644 index cd4a548e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/History.txt +++ /dev/null @@ -1,3 +0,0 @@ -=== 1.0.0 2009-08-27 - -* Ruby 1.9 compatibility diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/Manifest.txt b/lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/Manifest.txt deleted file mode 100644 index 50b749dd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/Manifest.txt +++ /dev/null @@ -1,64 +0,0 @@ -History.txt -Manifest.txt -README.rdoc -Rakefile -lib/templater.rb -lib/templater/actions/action.rb -lib/templater/actions/directory.rb -lib/templater/actions/empty_directory.rb -lib/templater/actions/file.rb -lib/templater/actions/template.rb -lib/templater/capture_helpers.rb -lib/templater/cli/generator.rb -lib/templater/cli/manifold.rb -lib/templater/cli/parser.rb -lib/templater/core_ext/kernel.rb -lib/templater/core_ext/string.rb -lib/templater/description.rb -lib/templater/discovery.rb -lib/templater/generator.rb -lib/templater/manifold.rb -lib/templater/spec/helpers.rb -script/console -script/destroy -script/generate -spec/actions/directory_spec.rb -spec/actions/empty_directory_spec.rb -spec/actions/file_spec.rb -spec/actions/template_spec.rb -spec/core_ext/string_spec.rb -spec/generator/actions_spec.rb -spec/generator/arguments_spec.rb -spec/generator/desc_spec.rb -spec/generator/destination_root_spec.rb -spec/generator/empty_directories_spec.rb -spec/generator/files_spec.rb -spec/generator/generators_spec.rb -spec/generator/glob_spec.rb -spec/generator/invocations_spec.rb -spec/generator/invoke_spec.rb -spec/generator/options_spec.rb -spec/generator/render_spec.rb -spec/generator/source_root_spec.rb -spec/generator/templates_spec.rb -spec/manifold_spec.rb -spec/options_parser_spec.rb -spec/results/erb.rbs -spec/results/file.rbs -spec/results/random.rbs -spec/results/simple_erb.rbs -spec/spec_helper.rb -spec/spec_helpers_spec.rb -spec/templater_spec.rb -spec/templates/erb.rbt -spec/templates/glob/README -spec/templates/glob/arg.js -spec/templates/glob/hellothar.%feh% -spec/templates/glob/hellothar.html.%feh% -spec/templates/glob/subfolder/jessica_alba.jpg -spec/templates/glob/subfolder/monkey.rb -spec/templates/glob/test.rb -spec/templates/literals_erb.rbt -spec/templates/simple.rbt -spec/templates/simple_erb.rbt -templater.gemspec diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/README.rdoc b/lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/README.rdoc deleted file mode 100644 index 8072eef9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/templater-1.0.0/README.rdoc +++ /dev/null @@ -1,266 +0,0 @@ -= Templater - -* http://github.com/jnicklas/templater - -== Summary - -Templater is a Ruby framework for building code generators. - -== Description - -Templater has the ability to both copy files from A to B and also to render templates using ERB. Templater consists of four parts: - -- Actions (File copying routines, templates generation and directories creation routines). -- Generators (set of rules). -- Manifolds (generator suites). -- The command line interface. - -Hierarchy is pretty simple: manifold has one or many public and private generators. Public ones are supposed to be called -by end user. Generators have one or more action that specify what they do, where they take files, how they name resulting -files and so forth. - -== Idea behind Templater - -Templater is designed to be flexible and designed to be reflective. Generators created with templater are definitions of what goes where, they provide no interface for the user. This allows you to use templater generators inside your own code, or with the bundled CLI interface, or with your own interface. - -== Example - -This is how to create a very simple system for generating things: - - module MyGenerators - - extend Templater::Manifold - - class BlogGenerator < Templater::Generator - # directory this generator uses as source root when searching - # for files, directories, templates - def self.source_root - File.join(File.dirname(__FILE__), 'templates') - end - - # uses blog.rbt template (note conventional trailing t) - # placing resulting file to blog.rb relatively to - # destination root - template :blog, 'blog.rb' - - # does simple copy of me.jpg placing resulting file to me.jpg relatively to - # destination root - file :me, 'me.jpg' - - # creates empty directory public/javascripts relatively to - # destination root - empty_directory :javascripts, File.join("public", "javascripts") - end - - class WikiGenerator < Templater::Generator - - def self.source_root - File.join(File.dirname(__FILE__), 'templates') - end - - template :wiki, 'wiki.rb' - file :img, 'wiki.jpg' - - end - - # The generators are added to the manifold, and assigned the names 'wiki' and 'blog'. - # So you can call them -END - end - end - - # Surrounds the filtered text with CDATA tags. - module Cdata - include Base - - # @see Base#render - def render(text) - "" - end - end - - # Works the same as {Plain}, but HTML-escapes the text - # before placing it in the document. - module Escaped - include Base - - # @see Base#render - def render(text) - Haml::Helpers.html_escape text - end - end - - # Parses the filtered text with the normal Ruby interpreter. - # All output sent to `$stdout`, such as with `puts`, - # is output into the Haml document. - # Not available if the {file:HAML_REFERENCE.md#suppress_eval-option `:suppress_eval`} option is set to true. - # The Ruby code is evaluated in the same context as the Haml template. - module Ruby - include Base - lazy_require 'stringio' - - # @see Base#compile - def compile(precompiler, text) - return if precompiler.options[:suppress_eval] - precompiler.instance_eval do - push_silent <<-FIRST.gsub("\n", ';') + text + <<-LAST.gsub("\n", ';') - _haml_old_stdout = $stdout - $stdout = StringIO.new(_hamlout.buffer, 'a') - FIRST - _haml_old_stdout, $stdout = $stdout, _haml_old_stdout - _haml_old_stdout.close - LAST - end - end - end - - # Inserts the filtered text into the template with whitespace preserved. - # `preserve`d blocks of text aren't indented, - # and newlines are replaced with the HTML escape code for newlines, - # to preserve nice-looking output. - # - # @see Haml::Helpers#preserve - module Preserve - include Base - - # @see Base#render - def render(text) - Haml::Helpers.preserve text - end - end - - # Parses the filtered text with {Sass} to produce CSS output. - module Sass - include Base - lazy_require 'sass/plugin' - - # @see Base#render - def render(text) - ::Sass::Engine.new(text, ::Sass::Plugin.engine_options).render - end - end - - # Parses the filtered text with ERB, like an RHTML template. - # Not available if the {file:HAML_REFERENCE.md#suppress_eval-option `:suppress_eval`} option is set to true. - # Embedded Ruby code is evaluated in the same context as the Haml template. - module ERB - include Base - lazy_require 'erb' - - # @see Base#compile - def compile(precompiler, text) - return if precompiler.options[:suppress_eval] - src = ::ERB.new(text).src.sub(/^#coding:.*?\n/, ''). - sub(/^_erbout = '';/, "").gsub("\n", ';') - precompiler.send(:push_silent, src) - end - end - - # Parses the filtered text with [Textile](http://www.textism.com/tools/textile). - # Only works if [RedCloth](http://redcloth.org) is installed. - module Textile - include Base - lazy_require 'redcloth' - - # @see Base#render - def render(text) - ::RedCloth.new(text).to_html(:textile) - end - end - RedCloth = Textile - Filters.defined['redcloth'] = RedCloth - - # Parses the filtered text with [Markdown](http://daringfireball.net/projects/markdown). - # Only works if [RDiscount](http://github.com/rtomayko/rdiscount), - # [RPeg-Markdown](http://github.com/rtomayko/rpeg-markdown), - # [Maruku](http://maruku.rubyforge.org), - # or [BlueCloth](www.deveiate.org/projects/BlueCloth) are installed. - module Markdown - include Base - lazy_require 'rdiscount', 'peg_markdown', 'maruku', 'bluecloth' - - # @see Base#render - def render(text) - engine = case @required - when 'rdiscount' - ::RDiscount - when 'peg_markdown' - ::PEGMarkdown - when 'maruku' - ::Maruku - when 'bluecloth' - ::BlueCloth - end - engine.new(text).to_html - end - end - - # Parses the filtered text with [Maruku](http://maruku.rubyforge.org), - # which has some non-standard extensions to Markdown. - module Maruku - include Base - lazy_require 'maruku' - - # @see Base#render - def render(text) - ::Maruku.new(text).to_html - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/helpers.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/helpers.rb deleted file mode 100644 index b1bb9918..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/helpers.rb +++ /dev/null @@ -1,563 +0,0 @@ -if defined?(ActionView) - require 'haml/helpers/action_view_mods' - require 'haml/helpers/action_view_extensions' -end - -module Haml - # This module contains various helpful methods to make it easier to do various tasks. - # {Haml::Helpers} is automatically included in the context - # that a Haml template is parsed in, so all these methods are at your - # disposal from within the template. - module Helpers - # An object that raises an error when \{#to\_s} is called. - # It's used to raise an error when the return value of a helper is used - # when it shouldn't be. - class ErrorReturn - # @param message [String] The error message to raise when \{#to\_s} is called - def initialize(method) - @message = < e - e.backtrace.shift - - # If the ErrorReturn is used directly in the template, - # we don't want Haml's stuff to get into the backtrace, - # so we get rid of the format_script line. - # - # We also have to subtract one from the Haml line number - # since the value is passed to format_script the line after - # it's actually used. - if e.backtrace.first =~ /^\(eval\):\d+:in `format_script/ - e.backtrace.shift - e.backtrace.first.gsub!(/^\(haml\):(\d+)/) {|s| "(haml):#{$1.to_i - 1}"} - end - raise e - end - - # @return [String] A human-readable string representation - def inspect - "Haml::Helpers::ErrorReturn(#{@message.inspect})" - end - end - - self.extend self - - @@action_view_defined = defined?(ActionView) - @@force_no_action_view = false - - # @return [Boolean] Whether or not ActionView is loaded - def self.action_view? - @@action_view_defined - end - - # Note: this does **not** need to be called when using Haml helpers - # normally in Rails. - # - # Initializes the current object as though it were in the same context - # as a normal ActionView instance using Haml. - # This is useful if you want to use the helpers in a context - # other than the normal setup with ActionView. - # For example: - # - # context = Object.new - # class << context - # include Haml::Helpers - # end - # context.init_haml_helpers - # context.haml_tag :p, "Stuff" - # - def init_haml_helpers - @haml_buffer = Haml::Buffer.new(@haml_buffer, Haml::Engine.new('').send(:options_for_buffer)) - nil - end - - # Runs a block of code in a non-Haml context - # (i.e. \{#is\_haml?} will return false). - # - # This is mainly useful for rendering sub-templates such as partials in a non-Haml language, - # particularly where helpers may behave differently when run from Haml. - # - # Note that this is automatically applied to Rails partials. - # - # @yield A block which won't register as Haml - def non_haml - was_active = @haml_buffer.active? - @haml_buffer.active = false - yield - ensure - @haml_buffer.active = was_active - end - - # Uses \{#preserve} to convert any newlines inside whitespace-sensitive tags - # into the HTML entities for endlines. - # - # @param tags [Array] Tags that should have newlines escaped - # - # @overload find_and_preserve(input, tags = haml_buffer.options[:preserve]) - # Escapes newlines within a string. - # - # @param input [String] The string within which to escape newlines - # @overload find_and_preserve(tags = haml_buffer.options[:preserve]) - # Escapes newlines within a block of Haml code. - # - # @yield The block within which to escape newlines - def find_and_preserve(input = nil, tags = haml_buffer.options[:preserve], &block) - return find_and_preserve(capture_haml(&block), input || tags) if block - input.to_s.gsub(/<(#{tags.map(&Regexp.method(:escape)).join('|')})([^>]*)>(.*?)(<\/\1>)/im) do - "<#{$1}#{$2}>#{preserve($3)}" - end - end - - # Takes any string, finds all the newlines, and converts them to - # HTML entities so they'll render correctly in - # whitespace-sensitive tags without screwing up the indentation. - # - # @overload perserve(input) - # Escapes newlines within a string. - # - # @param input [String] The string within which to escape all newlines - # @overload perserve - # Escapes newlines within a block of Haml code. - # - # @yield The block within which to escape newlines - def preserve(input = nil, &block) - return preserve(capture_haml(&block)) if block - input.to_s.chomp("\n").gsub(/\n/, ' ').gsub(/\r/, '') - end - alias_method :flatten, :preserve - - # Takes an `Enumerable` object and a block - # and iterates over the enum, - # yielding each element to a Haml block - # and putting the result into `
  • ` elements. - # This creates a list of the results of the block. - # For example: - # - # = list_of([['hello'], ['yall']]) do |i| - # = i[0] - # - # Produces: - # - #
  • hello
  • - #
  • yall
  • - # - # And - # - # = list_of({:title => 'All the stuff', :description => 'A book about all the stuff.'}) do |key, val| - # %h3= key.humanize - # %p= val - # - # Produces: - # - #
  • - #

    Title

    - #

    All the stuff

    - #
  • - #
  • - #

    Description

    - #

    A book about all the stuff.

    - #
  • - # - # @param enum [Enumerable] The list of objects to iterate over - # @yield [item] A block which contains Haml code that goes within list items - # @yieldparam item An element of `enum` - def list_of(enum, &block) - to_return = enum.collect do |i| - result = capture_haml(i, &block) - - if result.count("\n") > 1 - result.gsub!("\n", "\n ") - result = "\n #{result.strip}\n" - else - result.strip! - end - - "
  • #{result}
  • " - end - to_return.join("\n") - end - - # Returns a hash containing default assignments for the `xmlns`, `lang`, and `xml:lang` - # attributes of the `html` HTML element. - # For example, - # - # %html{html_attrs} - # - # becomes - # - # - # - # @param lang [String] The value of `xml:lang` and `lang` - # @return [{#to_s => String}] The attribute hash - def html_attrs(lang = 'en-US') - {:xmlns => "http://www.w3.org/1999/xhtml", 'xml:lang' => lang, :lang => lang} - end - - # Increments the number of tabs the buffer automatically adds - # to the lines of the template. - # For example: - # - # %h1 foo - # - tab_up - # %p bar - # - tab_down - # %strong baz - # - # Produces: - # - #

    foo

    - #

    bar

    - # baz - # - # @param i [Fixnum] The number of tabs by which to increase the indentation - # @see #tab_down - def tab_up(i = 1) - haml_buffer.tabulation += i - end - - # Decrements the number of tabs the buffer automatically adds - # to the lines of the template. - # - # @param i [Fixnum] The number of tabs by which to decrease the indentation - # @see #tab_up - def tab_down(i = 1) - haml_buffer.tabulation -= i - end - - # Surrounds a block of Haml code with strings, - # with no whitespace in between. - # For example: - # - # = surround '(', ')' do - # %a{:href => "food"} chicken - # - # Produces: - # - # (chicken) - # - # and - # - # = surround '*' do - # %strong angry - # - # Produces: - # - # *angry* - # - # @param front [String] The string to add before the Haml - # @param back [String] The string to add after the Haml - # @yield A block of Haml to surround - def surround(front, back = front, &block) - output = capture_haml(&block) - - "#{front}#{output.chomp}#{back}\n" - end - - # Prepends a string to the beginning of a Haml block, - # with no whitespace between. - # For example: - # - # = precede '*' do - # %span.small Not really - # - # Produces: - # - # *Not really - # - # @param str [String] The string to add before the Haml - # @yield A block of Haml to prepend to - def precede(str, &block) - "#{str}#{capture_haml(&block).chomp}\n" - end - - # Appends a string to the end of a Haml block, - # with no whitespace between. - # For example: - # - # click - # = succeed '.' do - # %a{:href=>"thing"} here - # - # Produces: - # - # click - # here. - # - # @param str [String] The string to add after the Haml - # @yield A block of Haml to append to - def succeed(str, &block) - "#{capture_haml(&block).chomp}#{str}\n" - end - - # Captures the result of a block of Haml code, - # gets rid of the excess indentation, - # and returns it as a string. - # For example, after the following, - # - # .foo - # - foo = capture_haml(13) do |a| - # %p= a - # - # the local variable `foo` would be assigned to `"

    13

    \n"`. - # - # @param args [Array] Arguments to pass into the block - # @yield [args] A block of Haml code that will be converted to a string - # @yieldparam args [Array] `args` - def capture_haml(*args, &block) - buffer = eval('_hamlout', block.binding) rescue haml_buffer - with_haml_buffer(buffer) do - position = haml_buffer.buffer.length - - haml_buffer.capture_position = position - block.call(*args) - - captured = haml_buffer.buffer.slice!(position..-1).split(/^/) - - min_tabs = nil - captured.each do |line| - tabs = line.index(/[^ ]/) || line.length - min_tabs ||= tabs - min_tabs = min_tabs > tabs ? tabs : min_tabs - end - - captured.map do |line| - line[min_tabs..-1] - end.join - end - ensure - haml_buffer.capture_position = nil - end - - # @deprecated This will be removed in version 2.4. - # @see #haml_concat - def puts(*args) - warn <`). - # Currently, only `:/` and `:<` are supported. - # - # `haml_tag` outputs directly to the buffer; - # its return value should not be used. - # If you need to get the results as a string, - # use \{#capture\_haml\}. - # - # For example, - # - # haml_tag :table do - # haml_tag :tr do - # haml_tag :td, {:class => 'cell'} do - # haml_tag :strong, "strong!" - # haml_concat "data" - # end - # haml_tag :td do - # haml_concat "more_data" - # end - # end - # end - # - # outputs - # - # - # - # - # - # - #
    - # - # strong! - # - # data - # - # more_data - #
    - # - # @param name [#to_s] The name of the tag - # @param flags [Array] Haml end-of-tag flags - # - # @overload haml_tag(name, *flags, attributes = {}) - # @yield The block of Haml code within the tag - # @overload haml_tag(name, text, *flags, attributes = {}) - # @param text [#to_s] The text within the tag - def haml_tag(name, *rest, &block) - ret = ErrorReturn.new("haml_tag") - - name = name.to_s - text = rest.shift.to_s unless [Symbol, Hash, NilClass].any? {|t| rest.first.is_a? t} - flags = [] - flags << rest.shift while rest.first.is_a? Symbol - attributes = Haml::Precompiler.build_attributes(haml_buffer.html?, - haml_buffer.options[:attr_wrapper], - rest.shift || {}) - - if text.nil? && block.nil? && (haml_buffer.options[:autoclose].include?(name) || flags.include?(:/)) - haml_concat "<#{name}#{attributes} />" - return ret - end - - if flags.include?(:/) - raise Error.new("Self-closing tags can't have content.") if text - raise Error.new("Illegal nesting: nesting within a self-closing tag is illegal.") if block - end - - tag = "<#{name}#{attributes}>" - if block.nil? - tag << text.to_s << "" - haml_concat tag - return ret - end - - if text - raise Error.new("Illegal nesting: content can't be both given to haml_tag :#{name} and nested within it.") - end - - if flags.include?(:<) - tag << capture_haml(&block).strip << "" - haml_concat tag - return ret - end - - haml_concat tag - tab_up - block.call - tab_down - haml_concat "" - - ret - end - - # Characters that need to be escaped to HTML entities from user input - HTML_ESCAPE = { '&'=>'&', '<'=>'<', '>'=>'>', '"'=>'"', "'"=>''', } - - # Returns a copy of `text` with ampersands, angle brackets and quotes - # escaped into HTML entities. - # - # Note that if ActionView is loaded and XSS protection is enabled - # (as is the default for Rails 3.0+, and optional for version 2.3.5+), - # this won't escape text declared as "safe". - # - # @param text [String] The string to sanitize - # @return [String] The sanitized string - def html_escape(text) - text.to_s.gsub(/[\"><&]/n) {|s| HTML_ESCAPE[s]} - end - - # Escapes HTML entities in `text`, but without escaping an ampersand - # that is already part of an escaped entity. - # - # @param text [String] The string to sanitize - # @return [String] The sanitized string - def escape_once(text) - Haml::Util.silence_warnings do - text.to_s.gsub(/[\"><]|&(?!(?:[a-zA-Z]+|(#\d+));)/n) {|s| HTML_ESCAPE[s]} - end - end - - # Returns whether or not the current template is a Haml template. - # - # This function, unlike other {Haml::Helpers} functions, - # also works in other `ActionView` templates, - # where it will always return false. - # - # @return [Boolean] Whether or not the current template is a Haml template - def is_haml? - !@haml_buffer.nil? && @haml_buffer.active? - end - - # Returns whether or not `block` is defined directly in a Haml template. - # - # @param block [Proc] A Ruby block - # @return [Boolean] Whether or not `block` is defined directly in a Haml template - def block_is_haml?(block) - eval('_hamlout', block.binding) - true - rescue - false - end - - private - - # Runs a block of code with the given buffer as the currently active buffer. - # - # @param buffer [Haml::Buffer] The Haml buffer to use temporarily - # @yield A block in which the given buffer should be used - def with_haml_buffer(buffer) - @haml_buffer, old_buffer = buffer, @haml_buffer - old_buffer.active, was_active = false, old_buffer.active? if old_buffer - @haml_buffer.active = true - yield - ensure - @haml_buffer.active = false - old_buffer.active = was_active if old_buffer - @haml_buffer = old_buffer - end - - # The current {Haml::Buffer} object. - # - # @return [Haml::Buffer] - def haml_buffer - @haml_buffer - end - - # Gives a proc the same local `_hamlout` and `_erbout` variables - # that the current template has. - # - # @param proc [#call] The proc to bind - # @return [Proc] A new proc with the new variables bound - def haml_bind_proc(&proc) - _hamlout = haml_buffer - _erbout = _hamlout.buffer - proc { |*args| proc.call(*args) } - end - - include ActionViewExtensions if self.const_defined? "ActionViewExtensions" - end -end - -class Object - # Haml overrides various `ActionView` helpers, - # which call an \{#is\_haml?} method - # to determine whether or not the current context object - # is a proper Haml context. - # Because `ActionView` helpers may be included in non-`ActionView::Base` classes, - # it's a good idea to define \{#is\_haml?} for all objects. - def is_haml? - false - end -end - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/helpers/action_view_extensions.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/helpers/action_view_extensions.rb deleted file mode 100644 index 6c92b161..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/helpers/action_view_extensions.rb +++ /dev/null @@ -1,55 +0,0 @@ -require 'haml/helpers/action_view_mods' - -module Haml - module Helpers - # This module contains various useful helper methods - # that either tie into ActionView or the rest of the ActionPack stack, - # or are only useful in that context. - # Thus, the methods defined here are only available - # if ActionView is installed. - module ActionViewExtensions - # Returns a value for the "class" attribute - # unique to this controller/action pair. - # This can be used to target styles specifically at this action or controller. - # For example, if the current action were `EntryController#show`, - # - # %div{:class => page_class} My Div - # - # would become - # - #
    My Div
    - # - # Then, in a stylesheet (shown here as {Sass}), - # you could refer to this specific action: - # - # .entry.show - # font-weight: bold - # - # or to all actions in the entry controller: - # - # .entry - # color: #00f - # - # @return [String] The class name for the current page - def page_class - controller.controller_name + " " + controller.action_name - end - alias_method :generate_content_class_names, :page_class - - # Treats all input to \{Haml::Helpers#haml\_concat} within the block - # as being HTML safe for Rails' XSS protection. - # This is useful for wrapping blocks of code that concatenate HTML en masse. - # - # This has no effect if Rails' XSS protection isn't enabled. - # - # @yield A block in which all input to `#haml_concat` is treated as raw. - # @see Haml::Util#rails_xss_safe? - def with_raw_haml_concat - @_haml_concat_raw = true - yield - ensure - @_haml_concat_raw = false - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/helpers/action_view_mods.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/helpers/action_view_mods.rb deleted file mode 100644 index 8bafa325..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/helpers/action_view_mods.rb +++ /dev/null @@ -1,177 +0,0 @@ -module ActionView - class Base - def render_with_haml(*args, &block) - options = args.first - - # If render :layout is used with a block, - # it concats rather than returning a string - # so we need it to keep thinking it's Haml - # until it hits the sub-render - if is_haml? && !(options.is_a?(Hash) && options[:layout] && block_given?) - return non_haml { render_without_haml(*args, &block) } - end - render_without_haml(*args, &block) - end - alias_method :render_without_haml, :render - alias_method :render, :render_with_haml - - # Rails >2.1 - if Haml::Util.has?(:instance_method, self, :output_buffer) - def output_buffer_with_haml - return haml_buffer.buffer if is_haml? - output_buffer_without_haml - end - alias_method :output_buffer_without_haml, :output_buffer - alias_method :output_buffer, :output_buffer_with_haml - - def set_output_buffer_with_haml(new) - if is_haml? - new = String.new(new) if Haml::Util.rails_xss_safe? && new.is_a?(ActionView::SafeBuffer) - haml_buffer.buffer = new - else - set_output_buffer_without_haml new - end - end - alias_method :set_output_buffer_without_haml, :output_buffer= - alias_method :output_buffer=, :set_output_buffer_with_haml - end - end - - module Helpers - # In Rails <=2.1, we've got to override considerable capturing infrastructure. - # In Rails >2.1, we can make do with only overriding #capture - # (which no longer behaves differently in helper contexts). - unless Haml::Util.has?(:instance_method, ActionView::Base, :output_buffer) - module CaptureHelper - def capture_with_haml(*args, &block) - # Rails' #capture helper will just return the value of the block - # if it's not actually in the template context, - # as detected by the existance of an _erbout variable. - # We've got to do the same thing for compatibility. - - if is_haml? && block_is_haml?(block) - capture_haml(*args, &block) - else - capture_without_haml(*args, &block) - end - end - alias_method :capture_without_haml, :capture - alias_method :capture, :capture_with_haml - - def capture_erb_with_buffer_with_haml(buffer, *args, &block) - if is_haml? - capture_haml(*args, &block) - else - capture_erb_with_buffer_without_haml(buffer, *args, &block) - end - end - alias_method :capture_erb_with_buffer_without_haml, :capture_erb_with_buffer - alias_method :capture_erb_with_buffer, :capture_erb_with_buffer_with_haml - end - - module TextHelper - def concat_with_haml(string, binding = nil) - if is_haml? - haml_buffer.buffer.concat(string) - else - concat_without_haml(string, binding) - end - end - alias_method :concat_without_haml, :concat - alias_method :concat, :concat_with_haml - end - else - module CaptureHelper - def capture_with_haml(*args, &block) - if Haml::Helpers.block_is_haml?(block) - capture_haml(*args, &block) - else - capture_without_haml(*args, &block) - end - end - alias_method :capture_without_haml, :capture - alias_method :capture, :capture_with_haml - end - end - - module TagHelper - def content_tag_with_haml(name, *args, &block) - return content_tag_without_haml(name, *args, &block) unless is_haml? - - preserve = haml_buffer.options[:preserve].include?(name.to_s) - - if block_given? && block_is_haml?(block) && preserve - return content_tag_without_haml(name, *args) {preserve(&block)} - end - - returning content_tag_without_haml(name, *args, &block) do |content| - return Haml::Helpers.preserve(content) if preserve && content - end - end - - alias_method :content_tag_without_haml, :content_tag - alias_method :content_tag, :content_tag_with_haml - end - - class InstanceTag - # Includes TagHelper - - def haml_buffer - @template_object.send :haml_buffer - end - - def is_haml? - @template_object.send :is_haml? - end - - unless defined?(ActionView::Helpers::ActiveRecordInstanceTag) - alias_method :content_tag_without_haml, :content_tag - alias_method :content_tag, :content_tag_with_haml - end - end - - module FormTagHelper - def form_tag_with_haml(url_for_options = {}, options = {}, *parameters_for_url, &proc) - if is_haml? - if block_given? - oldproc = proc - proc = haml_bind_proc do |*args| - concat "\n" - tab_up - oldproc.call(*args) - tab_down - concat haml_indent - end - concat haml_indent - end - res = form_tag_without_haml(url_for_options, options, *parameters_for_url, &proc) + "\n" - concat "\n" if block_given? - res - else - form_tag_without_haml(url_for_options, options, *parameters_for_url, &proc) - end - end - alias_method :form_tag_without_haml, :form_tag - alias_method :form_tag, :form_tag_with_haml - end - - module FormHelper - def form_for_with_haml(object_name, *args, &proc) - if block_given? && is_haml? - oldproc = proc - proc = haml_bind_proc do |*args| - tab_up - oldproc.call(*args) - tab_down - concat haml_indent - end - concat haml_indent - end - form_for_without_haml(object_name, *args, &proc) - concat "\n" if block_given? && is_haml? - end - alias_method :form_for_without_haml, :form_for - alias_method :form_for, :form_for_with_haml - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/helpers/xss_mods.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/helpers/xss_mods.rb deleted file mode 100644 index e5b25285..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/helpers/xss_mods.rb +++ /dev/null @@ -1,95 +0,0 @@ -module Haml - module Helpers - # This module overrides Haml helpers to work properly - # in the context of ActionView. - # Currently it's only used for modifying the helpers - # to work with Rails' XSS protection methods. - module XssMods - def self.included(base) - %w[html_escape find_and_preserve preserve list_of surround - precede succeed capture_haml haml_concat haml_indent - haml_tag escape_once].each do |name| - base.send(:alias_method, "#{name}_without_haml_xss", name) - base.send(:alias_method, name, "#{name}_with_haml_xss") - end - end - - # Don't escape text that's already safe, - # output is always HTML safe - def html_escape_with_haml_xss(text) - str = text.to_s - return text if str.html_safe? - html_escape_without_haml_xss(str).html_safe! - end - - # Output is always HTML safe - def find_and_preserve_with_haml_xss(*args, &block) - find_and_preserve_without_haml_xss(*args, &block).html_safe! - end - - # Output is always HTML safe - def preserve_with_haml_xss(*args, &block) - preserve_without_haml_xss(*args, &block).html_safe! - end - - # Output is always HTML safe - def list_of_with_haml_xss(*args, &block) - list_of_without_haml_xss(*args, &block).html_safe! - end - - # Input is escaped, output is always HTML safe - def surround_with_haml_xss(front, back = front, &block) - surround_without_haml_xss( - haml_xss_html_escape(front), - haml_xss_html_escape(back), - &block).html_safe! - end - - # Input is escaped, output is always HTML safe - def precede_with_haml_xss(str, &block) - precede_without_haml_xss(haml_xss_html_escape(str), &block).html_safe! - end - - # Input is escaped, output is always HTML safe - def succeed_with_haml_xss(str, &block) - succeed_without_haml_xss(haml_xss_html_escape(str), &block).html_safe! - end - - # Output is always HTML safe - def capture_haml_with_haml_xss(*args, &block) - capture_haml_without_haml_xss(*args, &block).html_safe! - end - - # Input is escaped - def haml_concat_with_haml_xss(text = "") - haml_concat_without_haml_xss(@_haml_concat_raw ? text : haml_xss_html_escape(text)) - end - - # Output is always HTML safe - def haml_indent_with_haml_xss - haml_indent_without_haml_xss.html_safe! - end - - # Input is escaped, haml_concat'ed output is always HTML safe - def haml_tag_with_haml_xss(name, *rest, &block) - name = haml_xss_html_escape(name.to_s) - rest.unshift(haml_xss_html_escape(rest.shift.to_s)) unless [Symbol, Hash, NilClass].any? {|t| rest.first.is_a? t} - with_raw_haml_concat {haml_tag_without_haml_xss(name, *rest, &block)} - end - - # Output is always HTML safe - def escape_once_with_haml_xss(*args) - escape_once_without_haml_xss(*args).html_safe! - end - - private - - # Escapes the HTML in the text if and only if - # Rails XSS protection is enabled *and* the `:escape_html` option is set. - def haml_xss_html_escape(text) - return text unless Haml::Util.rails_xss_safe? && haml_buffer.options[:escape_html] - html_escape(text) - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/html.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/html.rb deleted file mode 100644 index 2d805093..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/html.rb +++ /dev/null @@ -1,260 +0,0 @@ -require File.dirname(__FILE__) + '/../haml' - -require 'haml/engine' -require 'rubygems' -require 'cgi' - -module Haml - class HTML - # A module containing utility methods that every Hpricot node - # should have. - module Node - # Returns the Haml representation of the given node. - # - # @param tabs [Fixnum] The indentation level of the resulting Haml. - # @option options (see Haml::HTML#initialize) - def to_haml(tabs, options) - parse_text(self.to_s, tabs) - end - - private - - def tabulate(tabs) - ' ' * tabs - end - - def attr_hash - attributes.to_hash - end - - def parse_text(text, tabs) - text.strip! - text.gsub!('#{', '\#{') #' - if text.empty? - String.new - else - lines = text.split("\n") - - lines.map do |line| - line.strip! - "#{tabulate(tabs)}#{'\\' if Haml::Engine::SPECIAL_CHARACTERS.include?(line[0])}#{line}\n" - end.join - end - end - end - end -end - -# Haml monkeypatches various Hpricot classes -# to add methods for conversion to Haml. -module Hpricot - # @see Hpricot - module Node - include Haml::HTML::Node - end - - # @see Hpricot - class BaseEle - include Haml::HTML::Node - end -end - -require 'hpricot' - -module Haml - # Converts HTML documents into Haml templates. - # Depends on [Hpricot](http://github.com/whymirror/hpricot) for HTML parsing. - # - # Example usage: - # - # Haml::Engine.new("Blat").render - # #=> "%a{:href => 'http://google.com'} Blat" - class HTML - # @param template [String, Hpricot::Node] The HTML template to convert - # @option options :rhtml [Boolean] (false) Whether or not to parse - # ERB's `<%= %>` and `<% %>` into Haml's `=` and `-` - # @option options :xhtml [Boolean] (false) Whether or not to parse - # the HTML strictly as XHTML - def initialize(template, options = {}) - @options = options - - if template.is_a? Hpricot::Node - @template = template - else - if template.is_a? IO - template = template.read - end - - if @options[:rhtml] - match_to_html(template, /<%=(.*?)-?%>/m, 'loud') - match_to_html(template, /<%-?(.*?)-?%>/m, 'silent') - end - - method = @options[:xhtml] ? Hpricot.method(:XML) : method(:Hpricot) - @template = method.call(template.gsub('&', '&')) - end - end - - # Processes the document and returns the result as a string - # containing the Haml template. - def render - @template.to_haml(0, @options) - end - alias_method :to_haml, :render - - TEXT_REGEXP = /^(\s*).*$/ - - # @see Hpricot - class ::Hpricot::Doc - # @see Haml::HTML::Node#to_haml - def to_haml(tabs, options) - (children || []).inject('') {|s, c| s << c.to_haml(0, options)} - end - end - - # @see Hpricot - class ::Hpricot::XMLDecl - # @see Haml::HTML::Node#to_haml - def to_haml(tabs, options) - "#{tabulate(tabs)}!!! XML\n" - end - end - - # @see Hpricot - class ::Hpricot::CData - # @see Haml::HTML::Node#to_haml - def to_haml(tabs, options) - "#{tabulate(tabs)}:cdata\n#{parse_text(self.content, tabs + 1)}" - end - end - - # @see Hpricot - class ::Hpricot::DocType - # @see Haml::HTML::Node#to_haml - def to_haml(tabs, options) - attrs = public_id.nil? ? ["", "", ""] : - public_id.scan(/DTD\s+([^\s]+)\s*([^\s]*)\s*([^\s]*)\s*\/\//)[0] - if attrs == nil - raise Exception.new("Invalid doctype") - end - - type, version, strictness = attrs.map { |a| a.downcase } - if type == "html" - version = "" - strictness = "strict" if strictness == "" - end - - if version == "1.0" || version.empty? - version = nil - end - - if strictness == 'transitional' || strictness.empty? - strictness = nil - end - - version = " #{version.capitalize}" if version - strictness = " #{strictness.capitalize}" if strictness - - "#{tabulate(tabs)}!!!#{version}#{strictness}\n" - end - end - - # @see Hpricot - class ::Hpricot::Comment - # @see Haml::HTML::Node#to_haml - def to_haml(tabs, options) - "#{tabulate(tabs)}/\n#{parse_text(self.content, tabs + 1)}" - end - end - - # @see Hpricot - class ::Hpricot::Elem - # @see Haml::HTML::Node#to_haml - def to_haml(tabs, options) - output = "#{tabulate(tabs)}" - if options[:rhtml] && name[0...5] == 'haml:' - return output + send("haml_tag_#{name[5..-1]}", CGI.unescapeHTML(self.inner_text)) - end - - output += "%#{name}" unless name == 'div' && - (static_id?(options) || static_classname?(options)) - - if attr_hash - if static_id?(options) - output += "##{attr_hash['id']}" - remove_attribute('id') - end - if static_classname?(options) - attr_hash['class'].split(' ').each { |c| output += ".#{c}" } - remove_attribute('class') - end - output += haml_attributes(options) if attr_hash.length > 0 - end - - (self.children || []).inject(output + "\n") do |output, child| - output + child.to_haml(tabs + 1, options) - end - end - - private - - def dynamic_attributes - @dynamic_attributes ||= begin - Haml::Util.map_hash(attr_hash) do |name, value| - next if value.empty? - full_match = nil - ruby_value = value.gsub(%r{\s*(.+?)\s*}) do - full_match = $`.empty? && $'.empty? - CGI.unescapeHTML(full_match ? $1: "\#{#{$1}}") - end - next if ruby_value == value - [name, full_match ? ruby_value : %("#{ruby_value}")] - end - end - end - - def haml_tag_loud(text) - "= #{text.gsub(/\n\s*/, ' ').strip}\n" - end - - def haml_tag_silent(text) - text.split("\n").map { |line| "- #{line.strip}\n" }.join - end - - def static_attribute?(name, options) - attr_hash[name] and !dynamic_attribute?(name, options) - end - - def dynamic_attribute?(name, options) - options[:rhtml] and dynamic_attributes.key?(name) - end - - def static_id?(options) - static_attribute?('id', options) - end - - def static_classname?(options) - static_attribute?('class', options) - end - - # Returns a string representation of an attributes hash - # that's prettier than that produced by Hash#inspect - def haml_attributes(options) - attrs = attr_hash.map do |name, value| - value = dynamic_attribute?(name, options) ? dynamic_attributes[name] : value.inspect - name = name.index(/\W/) ? name.inspect : ":#{name}" - "#{name} => #{value}" - end - "{ #{attrs.join(', ')} }" - end - end - - private - - def match_to_html(string, regex, tag) - string.gsub!(regex) do - "#{CGI.escapeHTML($1)}" - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/precompiler.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/precompiler.rb deleted file mode 100644 index a7dadb01..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/precompiler.rb +++ /dev/null @@ -1,1043 +0,0 @@ -require 'strscan' -require 'haml/shared' - -module Haml - # Handles the internal pre-compilation from Haml into Ruby code, - # which then runs the final creation of the HTML string. - module Precompiler - include Haml::Util - - # Designates an XHTML/XML element. - ELEMENT = ?% - - # Designates a `
    ` element with the given class. - DIV_CLASS = ?. - - # Designates a `
    ` element with the given id. - DIV_ID = ?# - - # Designates an XHTML/XML comment. - COMMENT = ?/ - - # Designates an XHTML doctype or script that is never HTML-escaped. - DOCTYPE = ?! - - # Designates script, the result of which is output. - SCRIPT = ?= - - # Designates script that is always HTML-escaped. - SANITIZE = ?& - - # Designates script, the result of which is flattened and output. - FLAT_SCRIPT = ?~ - - # Designates script which is run but not output. - SILENT_SCRIPT = ?- - - # When following SILENT_SCRIPT, designates a comment that is not output. - SILENT_COMMENT = ?# - - # Designates a non-parsed line. - ESCAPE = ?\\ - - # Designates a block of filtered text. - FILTER = ?: - - # Designates a non-parsed line. Not actually a character. - PLAIN_TEXT = -1 - - # Keeps track of the ASCII values of the characters that begin a - # specially-interpreted line. - SPECIAL_CHARACTERS = [ - ELEMENT, - DIV_CLASS, - DIV_ID, - COMMENT, - DOCTYPE, - SCRIPT, - SANITIZE, - FLAT_SCRIPT, - SILENT_SCRIPT, - ESCAPE, - FILTER - ] - - # The value of the character that designates that a line is part - # of a multiline string. - MULTILINE_CHAR_VALUE = ?| - - # Regex to match keywords that appear in the middle of a Ruby block - # with lowered indentation. - # If a block has been started using indentation, - # lowering the indentation with one of these won't end the block. - # For example: - # - # - if foo - # %p yes! - # - else - # %p no! - # - # The block is ended after `%p no!`, because `else` - # is a member of this array. - MID_BLOCK_KEYWORD_REGEX = /^-\s*(#{%w[else elsif rescue ensure when end].join('|')})\b/ - - # The Regex that matches a Doctype command. - DOCTYPE_REGEX = /(\d(?:\.\d)?)?[\s]*([a-z]*)/i - - # The Regex that matches a literal string or symbol value - LITERAL_VALUE_REGEX = /:(\w*)|(["'])((?![\\#]|\2).|\\.)*\2/ - - private - - # Returns the precompiled string with the preamble and postamble - def precompiled_with_ambles(local_names) - preamble = < 1 - raise SyntaxError.new("The line was indented #{@next_line.tabs - @line.tabs} levels deeper than the previous line.", @next_line.index) - end - - resolve_newlines unless @next_line.eod? - @line = @next_line - newline unless @next_line.eod? - end - - # Close all the open tags - close until @to_close_stack.empty? - flush_merged_text - end - - # Processes and deals with lowering indentation. - def process_indent(line) - return unless line.tabs <= @template_tabs && @template_tabs > 0 - - to_close = @template_tabs - line.tabs - to_close.times {|i| close unless to_close - 1 - i == 0 && mid_block_keyword?(line.text)} - end - - # Processes a single line of Haml. - # - # This method doesn't return anything; it simply processes the line and - # adds the appropriate code to `@precompiled`. - def process_line(text, index) - @index = index + 1 - - case text[0] - when DIV_CLASS; render_div(text) - when DIV_ID - return push_plain(text) if text[1] == ?{ - render_div(text) - when ELEMENT; render_tag(text) - when COMMENT; render_comment(text[1..-1].strip) - when SANITIZE - return push_plain(text[3..-1].strip, :escape_html => true) if text[1..2] == "==" - return push_script(text[2..-1].strip, :escape_html => true) if text[1] == SCRIPT - return push_flat_script(text[2..-1].strip, :escape_html => true) if text[1] == FLAT_SCRIPT - return push_plain(text[1..-1].strip, :escape_html => true) if text[1] == ?\s - push_plain text - when SCRIPT - return push_plain(text[2..-1].strip) if text[1] == SCRIPT - push_script(text[1..-1]) - when FLAT_SCRIPT; push_flat_script(text[1..-1]) - when SILENT_SCRIPT - return start_haml_comment if text[1] == SILENT_COMMENT - - raise SyntaxError.new(< false) if text[1..2] == "==" - return push_script(text[2..-1].strip, :escape_html => false) if text[1] == SCRIPT - return push_flat_script(text[2..-1].strip, :escape_html => false) if text[1] == FLAT_SCRIPT - return push_plain(text[1..-1].strip, :escape_html => false) if text[1] == ?\s - push_plain text - when ESCAPE; push_plain text[1..-1] - else push_plain text - end - end - - # If the text is a silent script text with one of Ruby's mid-block keywords, - # returns the name of that keyword. - # Otherwise, returns nil. - def mid_block_keyword?(text) - text[MID_BLOCK_KEYWORD_REGEX, 1] - end - - # Evaluates `text` in the context of the scope object, but - # does not output the result. - def push_silent(text, can_suppress = false) - flush_merged_text - return if can_suppress && options[:suppress_eval] - @precompiled << "#{text};" - end - - # Adds `text` to `@buffer` with appropriate tabulation - # without parsing it. - def push_merged_text(text, tab_change = 0, indent = true) - text = !indent || @dont_indent_next_line || @options[:ugly] ? text : "#{' ' * @output_tabs}#{text}" - @to_merge << [:text, text, tab_change] - @dont_indent_next_line = false - end - - # Concatenate `text` to `@buffer` without tabulation. - def concat_merged_text(text) - @to_merge << [:text, text, 0] - end - - def push_text(text, tab_change = 0) - push_merged_text("#{text}\n", tab_change) - end - - def flush_merged_text - return if @to_merge.empty? - - text, tab_change = @to_merge.inject(["", 0]) do |(str, mtabs), (type, val, tabs)| - case type - when :text - [str << val.inspect[1...-1], mtabs + tabs] - when :script - if mtabs != 0 && !@options[:ugly] - val = "_hamlout.adjust_tabs(#{mtabs}); " + val - end - [str << "\#{#{val}}", 0] - else - raise SyntaxError.new("[HAML BUG] Undefined entry in Haml::Precompiler@to_merge.") - end - end - - @precompiled << - if @options[:ugly] - "_hamlout.buffer << \"#{text}\";" - else - "_hamlout.push_text(\"#{text}\", #{tab_change}, #{@dont_tab_up_next_text.inspect});" - end - @to_merge = [] - @dont_tab_up_next_text = false - end - - # Renders a block of text as plain text. - # Also checks for an illegally opened block. - def push_plain(text, options = {}) - if block_opened? - raise SyntaxError.new("Illegal nesting: nesting within plain text is illegal.", @next_line.index) - end - - if contains_interpolation?(text) - options[:escape_html] = self.options[:escape_html] if options[:escape_html].nil? - push_script( - unescape_interpolation(text, :escape_html => options[:escape_html]), - :escape_html => false) - else - push_text text - end - end - - # Adds +text+ to `@buffer` while flattening text. - def push_flat(line) - text = line.full.dup - text = "" unless text.gsub!(/^#{@flat_spaces}/, '') - @filter_buffer << "#{text}\n" - end - - # Causes `text` to be evaluated in the context of - # the scope object and the result to be added to `@buffer`. - # - # If `opts[:preserve_script]` is true, Haml::Helpers#find_and_flatten is run on - # the result before it is added to `@buffer` - def push_script(text, opts = {}) - raise SyntaxError.new("There's no Ruby code for = to evaluate.") if text.empty? - return if options[:suppress_eval] - opts[:escape_html] = options[:escape_html] if opts[:escape_html].nil? - - args = %w[preserve_script in_tag preserve_tag escape_html nuke_inner_whitespace] - args.map! {|name| opts[name.to_sym]} - args << !block_opened? << @options[:ugly] - - no_format = @options[:ugly] && - !(opts[:preserve_script] || opts[:preserve_tag] || opts[:escape_html]) - output_temp = "(haml_very_temp = haml_temp; haml_temp = nil; haml_very_temp)" - out = "_hamlout.#{static_method_name(:format_script, *args)}(#{output_temp});" - - # Prerender tabulation unless we're in a tag - push_merged_text '' unless opts[:in_tag] - - unless block_opened? - @to_merge << [:script, no_format ? "#{text}\n" : "haml_temp = #{text}\n#{out}"] - concat_merged_text("\n") unless opts[:in_tag] || opts[:nuke_inner_whitespace] - @newlines -= 1 - return - end - - flush_merged_text - - push_silent "haml_temp = #{text}" - newline_now - push_and_tabulate([:loud, "_hamlout.buffer << #{no_format ? "#{output_temp}.to_s;" : out}", - !(opts[:in_tag] || opts[:nuke_inner_whitespace] || @options[:ugly])]) - end - - # Causes `text` to be evaluated, and Haml::Helpers#find_and_flatten - # to be run on it afterwards. - def push_flat_script(text, options = {}) - flush_merged_text - - raise SyntaxError.new("There's no Ruby code for ~ to evaluate.") if text.empty? - push_script(text, options.merge(:preserve_script => true)) - end - - def start_haml_comment - return unless block_opened? - - @haml_comment = true - push_and_tabulate([:haml_comment]) - end - - # Closes the most recent item in `@to_close_stack`. - def close - tag, *rest = @to_close_stack.pop - send("close_#{tag}", *rest) - end - - # Puts a line in `@precompiled` that will add the closing tag of - # the most recently opened tag. - def close_element(value) - tag, nuke_outer_whitespace, nuke_inner_whitespace = value - @output_tabs -= 1 unless nuke_inner_whitespace - @template_tabs -= 1 - rstrip_buffer! if nuke_inner_whitespace - push_merged_text("" + (nuke_outer_whitespace ? "" : "\n"), - nuke_inner_whitespace ? 0 : -1, !nuke_inner_whitespace) - @dont_indent_next_line = nuke_outer_whitespace - end - - # Closes a Ruby block. - def close_script(_1, _2, push_end = true) - push_silent("end", true) if push_end - @template_tabs -= 1 - end - - # Closes a comment. - def close_comment(has_conditional) - @output_tabs -= 1 - @template_tabs -= 1 - close_tag = has_conditional ? "" : "-->" - push_text(close_tag, -1) - end - - # Closes a loud Ruby block. - def close_loud(command, add_newline, push_end = true) - push_silent('end', true) if push_end - @precompiled << command - @template_tabs -= 1 - concat_merged_text("\n") if add_newline - end - - # Closes a filtered block. - def close_filtered(filter) - filter.internal_compile(self, @filter_buffer) - @flat = false - @flat_spaces = nil - @filter_buffer = nil - @template_tabs -= 1 - end - - def close_haml_comment - @haml_comment = false - @template_tabs -= 1 - end - - def close_nil(*args) - @template_tabs -= 1 - end - - # Iterates through the classes and ids supplied through `.` - # and `#` syntax, and returns a hash with them as attributes, - # that can then be merged with another attributes hash. - def parse_class_and_id(list) - attributes = {} - list.scan(/([#.])([-_a-zA-Z0-9]+)/) do |type, property| - case type - when '.' - if attributes['class'] - attributes['class'] += " " - else - attributes['class'] = "" - end - attributes['class'] += property - when '#'; attributes['id'] = property - end - end - attributes - end - - def parse_static_hash(text) - attributes = {} - scanner = StringScanner.new(text) - scanner.scan(/\s+/) - until scanner.eos? - return unless key = scanner.scan(LITERAL_VALUE_REGEX) - return unless scanner.scan(/\s*=>\s*/) - return unless value = scanner.scan(LITERAL_VALUE_REGEX) - return unless scanner.scan(/\s*(?:,|$)\s*/) - attributes[eval(key).to_s] = eval(value).to_s - end - text.count("\n").times { newline } - attributes - end - - # This is a class method so it can be accessed from Buffer. - def self.build_attributes(is_html, attr_wrapper, attributes = {}) - quote_escape = attr_wrapper == '"' ? """ : "'" - other_quote_char = attr_wrapper == '"' ? "'" : '"' - - result = attributes.collect do |attr, value| - next if value.nil? - - if value == true - next " #{attr}" if is_html - next " #{attr}=#{attr_wrapper}#{attr}#{attr_wrapper}" - elsif value == false - next - end - - value = Haml::Helpers.preserve(Haml::Helpers.escape_once(value.to_s)) - # We want to decide whether or not to escape quotes - value.gsub!('"', '"') - this_attr_wrapper = attr_wrapper - if value.include? attr_wrapper - if value.include? other_quote_char - value = value.gsub(attr_wrapper, quote_escape) - else - this_attr_wrapper = other_quote_char - end - end - " #{attr}=#{this_attr_wrapper}#{value}#{this_attr_wrapper}" - end - result.compact.sort.join - end - - def prerender_tag(name, self_close, attributes) - attributes_string = Precompiler.build_attributes(html?, @options[:attr_wrapper], attributes) - "<#{name}#{attributes_string}#{self_close && xhtml? ? ' /' : ''}>" - end - - # Parses a line into tag_name, attributes, attributes_hash, object_ref, action, value - def parse_tag(line) - raise SyntaxError.new("Invalid tag: \"#{line}\".") unless match = line.scan(/%([-:\w]+)([-\w\.\#]*)(.*)/)[0] - tag_name, attributes, rest = match - new_attributes_hash = old_attributes_hash = last_line = object_ref = nil - attributes_hashes = [] - while rest - case rest[0] - when ?{ - break if old_attributes_hash - old_attributes_hash, rest, last_line = parse_old_attributes(rest) - attributes_hashes << [:old, old_attributes_hash] - when ?( - break if new_attributes_hash - new_attributes_hash, rest, last_line = parse_new_attributes(rest) - attributes_hashes << [:new, new_attributes_hash] - when ?[ - break if object_ref - object_ref, rest = balance(rest, ?[, ?]) - else; break - end - end - - if rest - nuke_whitespace, action, value = rest.scan(/(<>|><|[><])?([=\/\~&!])?(.*)?/)[0] - nuke_whitespace ||= '' - nuke_outer_whitespace = nuke_whitespace.include? '>' - nuke_inner_whitespace = nuke_whitespace.include? '<' - end - - value = value.to_s.strip - [tag_name, attributes, attributes_hashes, object_ref, nuke_outer_whitespace, - nuke_inner_whitespace, action, value, last_line || @index] - end - - def parse_old_attributes(line) - line = line.dup - last_line = @index - - begin - attributes_hash, rest = balance(line, ?{, ?}) - rescue SyntaxError => e - if line.strip[-1] == ?, && e.message == "Unbalanced brackets." - line << "\n" << @next_line.text - last_line += 1 - next_line - retry - end - - raise e - end - - attributes_hash = attributes_hash[1...-1] if attributes_hash - return attributes_hash, rest, last_line - end - - def parse_new_attributes(line) - line = line.dup - scanner = StringScanner.new(line) - last_line = @index - attributes = {} - - scanner.scan(/\(\s*/) - loop do - name, value = parse_new_attribute(scanner) - break if name.nil? - - if name == false - text = (Haml::Shared.balance(line, ?(, ?)) || [line]).first - raise Haml::SyntaxError.new("Invalid attribute list: #{text.inspect}.", last_line - 1) - end - attributes[name] = value - scanner.scan(/\s*/) - - if scanner.eos? - line << " " << @next_line.text - last_line += 1 - next_line - scanner.scan(/\s*/) - end - end - - static_attributes = {} - dynamic_attributes = "{" - attributes.each do |name, (type, val)| - if type == :static - static_attributes[name] = val - else - dynamic_attributes << name.inspect << " => " << val << "," - end - end - dynamic_attributes << "}" - dynamic_attributes = nil if dynamic_attributes == "{}" - - return [static_attributes, dynamic_attributes], scanner.rest, last_line - end - - def parse_new_attribute(scanner) - unless name = scanner.scan(/[-:\w]+/) - return if scanner.scan(/\)/) - return false - end - - scanner.scan(/\s*/) - return name, [:static, true] unless scanner.scan(/=/) #/end - - scanner.scan(/\s*/) - unless quote = scanner.scan(/["']/) - return false unless var = scanner.scan(/(@@?|\$)?\w+/) - return name, [:dynamic, var] - end - - re = /((?:\\.|\#[^{]|[^#{quote}\\#])*#?)(#{quote}|#\{)/ - content = [] - loop do - return false unless scanner.scan(re) - content << [:str, scanner[1].gsub(/\\(.)/, '\1')] - break if scanner[2] == quote - content << [:ruby, balance(scanner, ?{, ?}, 1).first[0...-1]] - end - - return name, [:static, content.first[1]] if content.size == 1 - return name, [:dynamic, - '"' + content.map {|(t, v)| t == :str ? v.inspect[1...-1] : "\#{#{v}}"}.join + '"'] - end - - # Parses a line that will render as an XHTML tag, and adds the code that will - # render that tag to `@precompiled`. - def render_tag(line) - tag_name, attributes, attributes_hashes, object_ref, nuke_outer_whitespace, - nuke_inner_whitespace, action, value, last_line = parse_tag(line) - - raise SyntaxError.new("Illegal element: classes and ids must have values.") if attributes =~ /[\.#](\.|#|\z)/ - - # Get rid of whitespace outside of the tag if we need to - rstrip_buffer! if nuke_outer_whitespace - - preserve_tag = options[:preserve].include?(tag_name) - nuke_inner_whitespace ||= preserve_tag - preserve_tag &&= !options[:ugly] - - escape_html = (action == '&' || (action != '!' && @options[:escape_html])) - - case action - when '/'; self_closing = true - when '~'; parse = preserve_script = true - when '=' - parse = true - if value[0] == ?= - value = unescape_interpolation(value[1..-1].strip, :escape_html => escape_html) - escape_html = false - end - when '&', '!' - if value[0] == ?= || value[0] == ?~ - parse = true - preserve_script = (value[0] == ?~) - if value[1] == ?= - value = unescape_interpolation(value[2..-1].strip, :escape_html => escape_html) - escape_html = false - else - value = value[1..-1].strip - end - elsif contains_interpolation?(value) - value = unescape_interpolation(value, :escape_html => escape_html) - parse = true - escape_html = false - end - else - if contains_interpolation?(value) - value = unescape_interpolation(value, :escape_html => escape_html) - parse = true - escape_html = false - end - end - - if parse && @options[:suppress_eval] - parse = false - value = '' - end - - object_ref = "nil" if object_ref.nil? || @options[:suppress_eval] - - attributes = parse_class_and_id(attributes) - attributes_hashes.map! do |syntax, attributes_hash| - if syntax == :old - static_attributes = parse_static_hash(attributes_hash) - attributes_hash = nil if static_attributes || @options[:suppress_eval] - else - static_attributes, attributes_hash = attributes_hash - end - Buffer.merge_attrs(attributes, static_attributes) if static_attributes - attributes_hash - end.compact! - - raise SyntaxError.new("Illegal nesting: nesting within a self-closing tag is illegal.", @next_line.index) if block_opened? && self_closing - raise SyntaxError.new("Illegal nesting: content can't be both given on the same line as %#{tag_name} and nested within it.", @next_line.index) if block_opened? && !value.empty? - raise SyntaxError.new("There's no Ruby code for #{action} to evaluate.", last_line - 1) if parse && value.empty? - raise SyntaxError.new("Self-closing tags can't have content.", last_line - 1) if self_closing && !value.empty? - - self_closing ||= !!( !block_opened? && value.empty? && @options[:autoclose].include?(tag_name) ) - value = nil if value.empty? && (block_opened? || self_closing) - - dont_indent_next_line = - (nuke_outer_whitespace && !block_opened?) || - (nuke_inner_whitespace && block_opened?) - - # Check if we can render the tag directly to text and not process it in the buffer - if object_ref == "nil" && attributes_hashes.empty? && !preserve_script - tag_closed = !block_opened? && !self_closing && !parse - - open_tag = prerender_tag(tag_name, self_closing, attributes) - if tag_closed - open_tag << "#{value}" - open_tag << "\n" unless nuke_outer_whitespace - else - open_tag << "\n" unless parse || nuke_inner_whitespace || (self_closing && nuke_outer_whitespace) - end - - push_merged_text(open_tag, tag_closed || self_closing || nuke_inner_whitespace ? 0 : 1, - !nuke_outer_whitespace) - - @dont_indent_next_line = dont_indent_next_line - return if tag_closed - else - flush_merged_text - content = parse ? 'nil' : value.inspect - if attributes_hashes.empty? - attributes_hashes = '' - elsif attributes_hashes.size == 1 - attributes_hashes = ", #{attributes_hashes.first}" - else - attributes_hashes = ", (#{attributes_hashes.join(").merge(")})" - end - - args = [tag_name, self_closing, !block_opened?, preserve_tag, escape_html, - attributes, nuke_outer_whitespace, nuke_inner_whitespace - ].map { |v| v.inspect }.join(', ') - push_silent "_hamlout.open_tag(#{args}, #{object_ref}, #{content}#{attributes_hashes})" - @dont_tab_up_next_text = @dont_indent_next_line = dont_indent_next_line - end - - return if self_closing - - if value.nil? - push_and_tabulate([:element, [tag_name, nuke_outer_whitespace, nuke_inner_whitespace]]) - @output_tabs += 1 unless nuke_inner_whitespace - return - end - - if parse - push_script(value, :preserve_script => preserve_script, :in_tag => true, - :preserve_tag => preserve_tag, :escape_html => escape_html, - :nuke_inner_whitespace => nuke_inner_whitespace) - concat_merged_text("" + (nuke_outer_whitespace ? "" : "\n")) - end - end - - # Renders a line that creates an XHTML tag and has an implicit div because of - # `.` or `#`. - def render_div(line) - render_tag('%div' + line) - end - - # Renders an XHTML comment. - def render_comment(line) - conditional, line = balance(line, ?[, ?]) if line[0] == ?[ - line.strip! - conditional << ">" if conditional - - if block_opened? && !line.empty? - raise SyntaxError.new('Illegal nesting: nesting within a tag that already has content is illegal.', @next_line.index) - end - - open = "" : "-->"}") - end - - push_text(open, 1) - @output_tabs += 1 - push_and_tabulate([:comment, !conditional.nil?]) - unless line.empty? - push_text(line) - close - end - end - - # Renders an XHTML doctype or XML shebang. - def render_doctype(line) - raise SyntaxError.new("Illegal nesting: nesting within a header command is illegal.", @next_line.index) if block_opened? - doctype = text_for_doctype(line) - push_text doctype if doctype - end - - def text_for_doctype(text) - text = text[3..-1].lstrip.downcase - if text.index("xml") == 0 - return nil if html? - wrapper = @options[:attr_wrapper] - return "" - end - - if html5? - '' - else - version, type = text.scan(DOCTYPE_REGEX)[0] - - if xhtml? - if version == "1.1" - '' - elsif version == "5" - '' - else - case type - when "strict"; '' - when "frameset"; '' - when "mobile"; '' - when "basic"; '' - else '' - end - end - - elsif html4? - case type - when "strict"; '' - when "frameset"; '' - else '' - end - end - end - end - - # Starts a filtered block. - def start_filtered(name) - raise Error.new("Invalid filter name \":#{name}\".") unless name =~ /^\w+$/ - raise Error.new("Filter \"#{name}\" is not defined.") unless filter = Filters.defined[name] - - push_and_tabulate([:filtered, filter]) - @flat = true - @filter_buffer = String.new - - # If we don't know the indentation by now, it'll be set in Line#tabs - @flat_spaces = @indentation * @template_tabs if @indentation - end - - def raw_next_line - text = @template.shift - return unless text - - index = @template_index - @template_index += 1 - - return text, index - end - - def next_line - text, index = raw_next_line - return unless text - - # :eod is a special end-of-document marker - line = - if text == :eod - Line.new '-#', '-#', '-#', index, self, true - else - Line.new text.strip, text.lstrip.chomp, text, index, self, false - end - - # `flat?' here is a little outdated, - # so we have to manually check if either the previous or current line - # closes the flat block, - # as well as whether a new block is opened - @line.tabs if @line - unless (flat? && !closes_flat?(line) && !closes_flat?(@line)) || - (@line && @line.text[0] == ?: && line.full =~ %r[^#{@line.full[/^\s+/]}\s]) - if line.text.empty? - newline - return next_line - end - - handle_multiline(line) - end - - @next_line = line - end - - def closes_flat?(line) - line && !line.text.empty? && line.full !~ /^#{@flat_spaces}/ - end - - def un_next_line(line) - @template.unshift line - @template_index -= 1 - end - - def handle_multiline(line) - if is_multiline?(line.text) - line.text.slice!(-1) - while new_line = raw_next_line.first - break if new_line == :eod - newline and next if new_line.strip.empty? - break unless is_multiline?(new_line.strip) - line.text << new_line.strip[0...-1] - newline - end - un_next_line new_line - resolve_newlines - end - end - - # Checks whether or not +line+ is in a multiline sequence. - def is_multiline?(text) - text && text.length > 1 && text[-1] == MULTILINE_CHAR_VALUE && text[-2] == ?\s - end - - def contains_interpolation?(str) - str.include?('#{') - end - - def unescape_interpolation(str, opts = {}) - res = '' - rest = Haml::Shared.handle_interpolation str.dump do |scan| - escapes = (scan[2].size - 1) / 2 - res << scan.matched[0...-3 - escapes] - if escapes % 2 == 1 - res << '#{' - else - content = eval('"' + balance(scan, ?{, ?}, 1)[0][0...-1] + '"') - content = "Haml::Helpers.html_escape(#{content})" if opts[:escape_html] - res << '#{' + content + "}"# Use eval to get rid of string escapes - end - end - res + rest - end - - def balance(*args) - res = Haml::Shared.balance(*args) - return res if res - raise SyntaxError.new("Unbalanced brackets.") - end - - def block_opened? - !flat? && @next_line.tabs > @line.tabs - end - - # Pushes value onto `@to_close_stack` and increases - # `@template_tabs`. - def push_and_tabulate(value) - @to_close_stack.push(value) - @template_tabs += 1 - end - - def flat? - @flat - end - - def newline - @newlines += 1 - end - - def newline_now - @precompiled << "\n" - @newlines -= 1 - end - - def resolve_newlines - return unless @newlines > 0 - flush_merged_text unless @to_merge.all? {|type, *_| type == :text} - @precompiled << "\n" * @newlines - @newlines = 0 - end - - # Get rid of and whitespace at the end of the buffer - # or the merged text - def rstrip_buffer!(index = -1) - last = @to_merge[index] - if last.nil? - push_silent("_hamlout.rstrip!", false) - @dont_tab_up_next_text = true - return - end - - case last.first - when :text - last[1].rstrip! - if last[1].empty? - @to_merge.slice! index - rstrip_buffer! index - end - when :script - last[1].gsub!(/\(haml_temp, (.*?)\);$/, '(haml_temp.rstrip, \1);') - rstrip_buffer! index - 1 - else - raise SyntaxError.new("[HAML BUG] Undefined entry in Haml::Precompiler@to_merge.") - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/shared.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/shared.rb deleted file mode 100644 index f031fc44..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/shared.rb +++ /dev/null @@ -1,78 +0,0 @@ -require 'strscan' - -module Haml - # This module contains functionality that's shared between Haml and Sass. - module Shared - extend self - - # Scans through a string looking for the interoplation-opening `#{` - # and, when it's found, yields the scanner to the calling code - # so it can handle it properly. - # - # The scanner will have any backslashes immediately in front of the `#{` - # as the second capture group (`scan[2]`), - # and the text prior to that as the first (`scan[1]`). - # - # @yieldparam scan [StringScanner] The scanner scanning through the string - # @return [String] The text remaining in the scanner after all `#{`s have been processed - def handle_interpolation(str) - scan = StringScanner.new(str) - yield scan while scan.scan(/(.*?)(\\*)\#\{/) - scan.rest - end - - # Moves a scanner through a balanced pair of characters. - # For example: - # - # Foo (Bar (Baz bang) bop) (Bang (bop bip)) - # ^ ^ - # from to - # - # @param scanner [StringScanner] The string scanner to move - # @param start [Character] The character opening the balanced pair. - # A `Fixnum` in 1.8, a `String` in 1.9 - # @param finish [Character] The character closing the balanced pair. - # A `Fixnum` in 1.8, a `String` in 1.9 - # @param count [Fixnum] The number of opening characters matched - # before calling this method - # @return [(String, String)] The string matched within the balanced pair - # and the rest of the string. - # `["Foo (Bar (Baz bang) bop)", " (Bang (bop bip))"]` in the example above. - def balance(scanner, start, finish, count = 0) - str = '' - scanner = StringScanner.new(scanner) unless scanner.is_a? StringScanner - regexp = Regexp.new("(.*?)[\\#{start.chr}\\#{finish.chr}]", Regexp::MULTILINE) - while scanner.scan(regexp) - str << scanner.matched - count += 1 if scanner.matched[-1] == start - count -= 1 if scanner.matched[-1] == finish - return [str.strip, scanner.rest] if count == 0 - end - end - - # Formats a string for use in error messages about indentation. - # - # @param indentation [String] The string used for indentation - # @param was [Boolean] Whether or not to add `"was"` or `"were"` - # (depending on how many characters were in `indentation`) - # @return [String] The name of the indentation (e.g. `"12 spaces"`, `"1 tab"`) - def human_indentation(indentation, was = false) - if !indentation.include?(?\t) - noun = 'space' - elsif !indentation.include?(?\s) - noun = 'tab' - else - return indentation.inspect + (was ? ' was' : '') - end - - singular = indentation.length == 1 - if was - was = singular ? ' was' : ' were' - else - was = '' - end - - "#{indentation.length} #{noun}#{'s' unless singular}#{was}" - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/template.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/template.rb deleted file mode 100644 index 1aa26a46..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/template.rb +++ /dev/null @@ -1,85 +0,0 @@ -require 'haml/engine' - -module Haml - # The class that keeps track of the global options for Haml within Rails. - module Template - extend self - - @options = {} - # The options hash for Haml when used within Rails. - # See {file:HAML_REFERENCE.md#haml_options the Haml options documentation}. - # - # @return [{Symbol => Object}] - attr_accessor :options - - # Enables integration with the Rails 2.2.5+ XSS protection, - # if it's available and enabled. - # - # @return [Boolean] Whether the XSS integration was enabled. - def try_enabling_xss_integration - return false unless ActionView::Base.respond_to?(:xss_safe?) && ActionView::Base.xss_safe? - - Haml::Template.options[:escape_html] = true - - Haml::Util.module_eval {def rails_xss_safe?; true; end} - - require 'haml/helpers/xss_mods' - Haml::Helpers.send(:include, Haml::Helpers::XssMods) - - Haml::Precompiler.module_eval do - def precompiled_method_return_value_with_haml_xss - "(#{precompiled_method_return_value_without_haml_xss}).html_safe!" - end - alias_method :precompiled_method_return_value_without_haml_xss, :precompiled_method_return_value - alias_method :precompiled_method_return_value, :precompiled_method_return_value_with_haml_xss - end - - true - end - end -end - -if defined?(RAILS_ENV) && RAILS_ENV == "production" - Haml::Template.options[:ugly] = true -end - -# Decide how we want to load Haml into Rails. -# Patching was necessary for versions <= 2.0.1, -# but we can make it a normal handler for higher versions. -if defined?(ActionView::TemplateHandler) || defined?(ActionView::Template::Handler) - require 'haml/template/plugin' -else - require 'haml/template/patch' -end - -# Enable XSS integration. Use Rails' after_initialize method if possible -# so that integration will be checked after the rails_xss plugin is loaded -# (for Rails 2.3.* where it's not enabled by default). -if defined?(Rails.configuration.after_initialize) - Rails.configuration.after_initialize {Haml::Template.try_enabling_xss_integration} -else - Haml::Template.try_enabling_xss_integration -end - -if Haml::Util.rails_root - # Update init.rb to the current version - # if it's out of date. - # - # We can probably remove this as of v1.9, - # because the new init file is sufficiently flexible - # to not need updating. - rails_init_file = File.join(Haml::Util.rails_root, 'vendor', 'plugins', 'haml', 'init.rb') - haml_init_file = Haml::Util.scope('init.rb') - begin - if File.exists?(rails_init_file) - require 'fileutils' - FileUtils.cp(haml_init_file, rails_init_file) unless FileUtils.cmp(rails_init_file, haml_init_file) - end - rescue SystemCallError - warn < e - if logger - logger.debug "ERROR: compiling #{render_symbol} RAISED #{e}" - logger.debug "Backtrace: #{e.backtrace.join("\n")}" - end - - base_path = if defined?(extract_base_path_from) - # Rails 2.0.x - extract_base_path_from(file_name) || view_paths.first - else - # Rails <=1.2.6 - @base_path - end - raise ActionView::TemplateError.new(base_path, file_name || template, @assigns, template, e) - end - - @@compile_time[render_symbol] = Time.now - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/template/plugin.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/template/plugin.rb deleted file mode 100644 index a270a38c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/template/plugin.rb +++ /dev/null @@ -1,75 +0,0 @@ -# This file makes Haml work with Rails -# using the > 2.0.1 template handler API. - -module Haml - class Plugin < Haml::Util.av_template_class(:Handler) - if defined?(ActionView::TemplateHandlers::Compilable) || - defined?(ActionView::Template::Handlers::Compilable) - include Haml::Util.av_template_class(:Handlers)::Compilable - end - - def compile(template) - options = Haml::Template.options.dup - - # template is a template object in Rails >=2.1.0, - # a source string previously - if template.respond_to? :source - # Template has a generic identifier in Rails >=3.0.0 - options[:filename] = template.respond_to?(:identifier) ? template.identifier : template.filename - source = template.source - else - source = template - end - - Haml::Engine.new(source, options).send(:precompiled_with_ambles, []) - end - - def cache_fragment(block, name = {}, options = nil) - @view.fragment_for(block, name, options) do - eval("_hamlout.buffer", block.binding) - end - end - end -end - -if defined? ActionView::Template and ActionView::Template.respond_to? :register_template_handler - ActionView::Template -else - ActionView::Base -end.register_template_handler(:haml, Haml::Plugin) - -# In Rails 2.0.2, ActionView::TemplateError took arguments -# that we can't fill in from the Haml::Plugin context. -# Thus, we've got to monkeypatch ActionView::Base to catch the error. -if defined?(ActionView::TemplateError) && - ActionView::TemplateError.instance_method(:initialize).arity == 5 - class ActionView::Base - def compile_template(handler, template, file_name, local_assigns) - render_symbol = assign_method_name(handler, template, file_name) - - # Move begin up two lines so it captures compilation exceptions. - begin - render_source = create_template_source(handler, template, render_symbol, local_assigns.keys) - line_offset = @@template_args[render_symbol].size + handler.line_offset - - file_name = 'compiled-template' if file_name.blank? - CompiledTemplates.module_eval(render_source, file_name, -line_offset) - rescue Exception => e # errors from template code - if logger - logger.debug "ERROR: compiling #{render_symbol} RAISED #{e}" - logger.debug "Function body: #{render_source}" - logger.debug "Backtrace: #{e.backtrace.join("\n")}" - end - - # There's no way to tell Haml about the filename, - # so we've got to insert it ourselves. - e.backtrace[0].gsub!('(haml)', file_name) if e.is_a?(Haml::Error) - - raise ActionView::TemplateError.new(extract_base_path_from(file_name) || view_paths.first, file_name || template, @assigns, template, e) - end - - @@compile_time[render_symbol] = Time.now - # logger.debug "Compiled template #{file_name || template}\n ==> #{render_symbol}" if logger - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/util.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/util.rb deleted file mode 100644 index 4cf37213..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/util.rb +++ /dev/null @@ -1,289 +0,0 @@ -require 'erb' -require 'set' -require 'enumerator' -require 'stringio' - -module Haml - # A module containing various useful functions. - module Util - extend self - - # An array of ints representing the Ruby version number. - RUBY_VERSION = ::RUBY_VERSION.split(".").map {|s| s.to_i} - - # Returns the path of a file relative to the Haml root directory. - # - # @param file [String] The filename relative to the Haml root - # @return [String] The filename relative to the the working directory - def scope(file) - File.join(File.dirname(File.dirname(File.dirname(File.expand_path(__FILE__)))), file) - end - - # Converts an array of `[key, value]` pairs to a hash. - # For example: - # - # to_hash([[:foo, "bar"], [:baz, "bang"]]) - # #=> {:foo => "bar", :baz => "bang"} - # - # @param arr [Array<(Object, Object)>] An array of pairs - # @return [Hash] A hash - def to_hash(arr) - arr.compact.inject({}) {|h, (k, v)| h[k] = v; h} - end - - # Maps the keys in a hash according to a block. - # For example: - # - # map_keys({:foo => "bar", :baz => "bang"}) {|k| k.to_s} - # #=> {"foo" => "bar", "baz" => "bang"} - # - # @param hash [Hash] The hash to map - # @yield [key] A block in which the keys are transformed - # @yieldparam key [Object] The key that should be mapped - # @yieldreturn [Object] The new value for the key - # @return [Hash] The mapped hash - # @see #map_vals - # @see #map_hash - def map_keys(hash) - to_hash(hash.map {|k, v| [yield(k), v]}) - end - - # Maps the values in a hash according to a block. - # For example: - # - # map_values({:foo => "bar", :baz => "bang"}) {|v| v.to_sym} - # #=> {:foo => :bar, :baz => :bang} - # - # @param hash [Hash] The hash to map - # @yield [value] A block in which the values are transformed - # @yieldparam value [Object] The value that should be mapped - # @yieldreturn [Object] The new value for the value - # @return [Hash] The mapped hash - # @see #map_keys - # @see #map_hash - def map_vals(hash) - to_hash(hash.map {|k, v| [k, yield(v)]}) - end - - # Maps the key-value pairs of a hash according to a block. - # For example: - # - # map_hash({:foo => "bar", :baz => "bang"}) {|k, v| [k.to_s, v.to_sym]} - # #=> {"foo" => :bar, "baz" => :bang} - # - # @param hash [Hash] The hash to map - # @yield [key, value] A block in which the key-value pairs are transformed - # @yieldparam [key] The hash key - # @yieldparam [value] The hash value - # @yieldreturn [(Object, Object)] The new value for the `[key, value]` pair - # @return [Hash] The mapped hash - # @see #map_keys - # @see #map_vals - def map_hash(hash, &block) - to_hash(hash.map(&block)) - end - - # Computes the powerset of the given array. - # This is the set of all subsets of the array. - # For example: - # - # powerset([1, 2, 3]) #=> - # Set[Set[], Set[1], Set[2], Set[3], Set[1, 2], Set[2, 3], Set[1, 3], Set[1, 2, 3]] - # - # @param arr [Enumerable] - # @return [Set] The subsets of `arr` - def powerset(arr) - arr.inject([Set.new].to_set) do |powerset, el| - new_powerset = Set.new - powerset.each do |subset| - new_powerset << subset - new_powerset << subset + [el] - end - new_powerset - end - end - - # Concatenates all strings that are adjacent in an array, - # while leaving other elements as they are. - # For example: - # - # merge_adjacent_strings([1, "foo", "bar", 2, "baz"]) - # #=> [1, "foobar", 2, "baz"] - # - # @param enum [Enumerable] - # @return [Array] The enumerable with strings merged - def merge_adjacent_strings(enum) - e = enum.inject([]) do |a, e| - if e.is_a?(String) && a.last.is_a?(String) - a.last << e - else - a << e - end - a - end - end - - # Silence all output to STDERR within a block. - # - # @yield A block in which no output will be printed to STDERR - def silence_warnings - the_real_stderr, $stderr = $stderr, StringIO.new - yield - ensure - $stderr = the_real_stderr - end - - ## Cross Rails Version Compatibility - - # Returns the root of the Rails application, - # if this is running in a Rails context. - # Returns `nil` if no such root is defined. - # - # @return [String, nil] - def rails_root - return Rails.root.to_s if defined?(Rails.root) - return RAILS_ROOT.to_s if defined?(RAILS_ROOT) - return nil - end - - # Returns an ActionView::Template* class. - # In pre-3.0 versions of Rails, most of these classes - # were of the form `ActionView::TemplateFoo`, - # while afterwards they were of the form `ActionView;:Template::Foo`. - # - # @param name [#to_s] The name of the class to get. - # For example, `:Error` will return `ActionView::TemplateError` - # or `ActionView::Template::Error`. - def av_template_class(name) - return ActionView.const_get("Template#{name}") if ActionView.const_defined?("Template#{name}") - return ActionView::Template.const_get(name.to_s) - end - - ## Rails XSS Safety - - # Whether or not ActionView's XSS protection is available and enabled, - # as is the default for Rails 3.0+, and optional for version 2.3.5+. - # Overridden in haml/template.rb if this is the case. - # - # @return [Boolean] - def rails_xss_safe? - false - end - - # Assert that a given object (usually a String) is HTML safe - # according to Rails' XSS handling, if it's loaded. - # - # @param text [Object] - def assert_html_safe!(text) - return unless rails_xss_safe? && text && !text.to_s.html_safe? - raise Haml::Error.new("Expected #{text.inspect} to be HTML-safe.") - end - - ## Cross-Ruby-Version Compatibility - - # Whether or not this is running under Ruby 1.8 or lower. - # - # @return [Boolean] - def ruby1_8? - Haml::Util::RUBY_VERSION[0] == 1 && Haml::Util::RUBY_VERSION[1] < 9 - end - - # Checks to see if a class has a given method. - # For example: - # - # Haml::Util.has?(:public_instance_method, String, :gsub) #=> true - # - # Method collections like `Class#instance_methods` - # return strings in Ruby 1.8 and symbols in Ruby 1.9 and on, - # so this handles checking for them in a compatible way. - # - # @param attr [#to_s] The (singular) name of the method-collection method - # (e.g. `:instance_methods`, `:private_methods`) - # @param klass [Module] The class to check the methods of which to check - # @param method [String, Symbol] The name of the method do check for - # @return [Boolean] Whether or not the given collection has the given method - def has?(attr, klass, method) - klass.send("#{attr}s").include?(ruby1_8? ? method.to_s : method.to_sym) - end - - # A version of `Enumerable#enum_with_index` that works in Ruby 1.8 and 1.9. - # - # @param enum [Enumerable] The enumerable to get the enumerator for - # @return [Enumerator] The with-index enumerator - def enum_with_index(enum) - ruby1_8? ? enum.enum_with_index : enum.each_with_index - end - - ## Static Method Stuff - - # The context in which the ERB for \{#def\_static\_method} will be run. - class StaticConditionalContext - # @param set [#include?] The set of variables that are defined for this context. - def initialize(set) - @set = set - end - - # Checks whether or not a variable is defined for this context. - # - # @param name [Symbol] The name of the variable - # @return [Boolean] - def method_missing(name, *args, &block) - super unless args.empty? && block.nil? - @set.include?(name) - end - end - - # This is used for methods in {Haml::Buffer} that need to be very fast, - # and take a lot of boolean parameters - # that are known at compile-time. - # Instead of passing the parameters in normally, - # a separate method is defined for every possible combination of those parameters; - # these are then called using \{#static\_method\_name}. - # - # To define a static method, an ERB template for the method is provided. - # All conditionals based on the static parameters - # are done as embedded Ruby within this template. - # For example: - # - # def_static_method(Foo, :my_static_method, [:foo, :bar], :baz, :bang, < - # return foo + bar - # <% elsif baz || bang %> - # return foo - bar - # <% else %> - # return 17 - # <% end %> - # RUBY - # - # \{#static\_method\_name} can be used to call static methods. - # - # @overload def_static_method(klass, name, args, *vars, erb) - # @param klass [Module] The class on which to define the static method - # @param name [#to_s] The (base) name of the static method - # @param args [Array] The names of the arguments to the defined methods - # (**not** to the ERB template) - # @param vars [Array] The names of the static boolean variables - # to be made available to the ERB template - # @param erb [String] The template for the method code - def def_static_method(klass, name, args, *vars) - erb = vars.pop - powerset(vars).each do |set| - context = StaticConditionalContext.new(set).instance_eval {binding} - klass.class_eval(<] The static variable assignment - # @return [String] The real name of the static method - def static_method_name(name, *vars) - "#{name}_#{vars.map {|v| !!v}.join('_')}" - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/version.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/version.rb deleted file mode 100644 index de0b0017..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/haml/version.rb +++ /dev/null @@ -1,64 +0,0 @@ -require 'haml/util' - -module Haml - # Handles Haml version-reporting. - # Haml not only reports the standard three version numbers, - # but its Git revision hash as well, - # if it was installed from Git. - module Version - include Haml::Util - - # Returns a hash representing the version of Haml. - # The `:major`, `:minor`, and `:teeny` keys have their respective numbers as Fixnums. - # The `:name` key has the name of the version. - # The `:string` key contains a human-readable string representation of the version. - # The `:number` key is the major, minor, and teeny keys separated by periods. - # If Haml is checked out from Git, the `:rev` key will have the revision hash. - # For example: - # - # { - # :string => "2.1.0.9616393", - # :rev => "9616393b8924ef36639c7e82aa88a51a24d16949", - # :number => "2.1.0", - # :major => 2, :minor => 1, :teeny => 0 - # } - # - # @return [{Symbol => String/Fixnum}] The version hash - def version - return @@version if defined?(@@version) - - numbers = File.read(scope('VERSION')).strip.split('.').map { |n| n.to_i } - name = File.read(scope('VERSION_NAME')).strip - @@version = { - :major => numbers[0], - :minor => numbers[1], - :teeny => numbers[2], - :name => name - } - @@version[:number] = [:major, :minor, :teeny].map { |comp| @@version[comp] }.compact.join('.') - @@version[:string] = @@version[:number].dup - - if File.exists?(scope('REVISION')) - rev = File.read(scope('REVISION')).strip - rev = nil if rev !~ /^([a-f0-9]+|\(.*\))$/ - end - - if (rev.nil? || rev == '(unknown)') && File.exists?(scope('.git/HEAD')) - rev = File.read(scope('.git/HEAD')).strip - if rev =~ /^ref: (.*)$/ - rev = File.read(scope(".git/#{$1}")).strip - end - end - - if rev - @@version[:rev] = rev - unless rev[0] == ?( - @@version[:string] << "." << rev[0...7] - end - @@version[:string] << " (#{name})" - end - - @@version - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass.rb deleted file mode 100644 index c8243796..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass.rb +++ /dev/null @@ -1,24 +0,0 @@ -dir = File.dirname(__FILE__) -$LOAD_PATH.unshift dir unless $LOAD_PATH.include?(dir) - -require 'haml/version' - -# The module that contains everything Sass-related: -# -# * {Sass::Engine} is the class used to render Sass within Ruby code. -# * {Sass::Plugin} is interfaces with web frameworks (Rails and Merb in particular). -# * {Sass::SyntaxError} is raised when Sass encounters an error. -# * {Sass::CSS} handles conversion of CSS to Sass. -# -# Also see the {file:SASS_REFERENCE.md full Sass reference}. -module Sass - extend Haml::Version - - # A string representing the version of Sass. - # A more fine-grained representation is available from {Sass.version}. - VERSION = version[:string] unless defined?(Sass::VERSION) -end - -require 'haml/util' -require 'sass/engine' -require 'sass/plugin' if defined?(Merb::Plugins) diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/css.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/css.rb deleted file mode 100644 index 43929848..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/css.rb +++ /dev/null @@ -1,404 +0,0 @@ -require File.dirname(__FILE__) + '/../sass' -require 'sass/tree/node' -require 'strscan' - -module Sass - module Tree - class Node - # Converts a node to Sass code that will generate it. - # - # @param tabs [Fixnum] The amount of tabulation to use for the Sass code - # @param opts [{Symbol => Object}] An options hash (see {Sass::CSS#initialize}) - # @return [String] The Sass code corresponding to the node - def to_sass(tabs = 0, opts = {}) - result = '' - - children.each do |child| - result << "#{' ' * tabs}#{child.to_sass(0, opts)}\n" - end - - result - end - end - - class RuleNode - # @see Node#to_sass - def to_sass(tabs, opts = {}) - name = rules.first - name = "\\" + name if name[0] == ?: - str = "\n#{' ' * tabs}#{name}#{children.any? { |c| c.is_a? PropNode } ? "\n" : ''}" - - children.each do |child| - str << "#{child.to_sass(tabs + 1, opts)}" - end - - str - end - end - - class PropNode - # @see Node#to_sass - def to_sass(tabs, opts = {}) - "#{' ' * tabs}#{opts[:old] ? ':' : ''}#{name}#{opts[:old] ? '' : ':'} #{value}\n" - end - end - - class DirectiveNode - # @see Node#to_sass - def to_sass(tabs, opts = {}) - "#{' ' * tabs}#{value}#{children.map {|c| c.to_sass(tabs + 1, opts)}}\n" - end - end - end - - # This class converts CSS documents into Sass templates. - # It works by parsing the CSS document into a {Sass::Tree} structure, - # and then applying various transformations to the structure - # to produce more concise and idiomatic Sass. - # - # Example usage: - # - # Sass::CSS.new("p { color: blue }").render #=> "p\n color: blue" - class CSS - # @param template [String] The CSS code - # @option options :old [Boolean] (false) - # Whether or not to output old property syntax - # (`:color blue` as opposed to `color: blue`). - def initialize(template, options = {}) - if template.is_a? IO - template = template.read - end - - @options = options.dup - # Backwards compatibility - @options[:old] = true if @options[:alternate] == false - @template = StringScanner.new(template) - end - - # Converts the CSS template into Sass code. - # - # @return [String] The resulting Sass code - def render - begin - build_tree.to_sass(0, @options).strip + "\n" - rescue Exception => err - line = @template.string[0...@template.pos].split("\n").size - - err.backtrace.unshift "(css):#{line}" - raise err - end - end - - private - - # Parses the CSS template and applies various transformations - # - # @return [Tree::Node] The root node of the parsed tree - def build_tree - root = Tree::Node.new - whitespace - rules root - expand_commas root - parent_ref_rules root - remove_parent_refs root - flatten_rules root - fold_commas root - root - end - - # Parses a set of CSS rules. - # - # @param root [Tree::Node] The parent node of the rules - def rules(root) - while r = rule - root << r - whitespace - end - end - - # Parses a single CSS rule. - # - # @return [Tree::Node] The parsed rule - def rule - rule = "" - loop do - token = @template.scan(/(?:[^\{\};\/\s]|\/[^*])+/) - if token.nil? - return if rule.empty? - break - end - rule << token - break unless @template.match?(/\s|\/\*/) - whitespace - rule << " " - end - - rule.strip! - directive = rule[0] == ?@ - - if directive - node = Tree::DirectiveNode.new(rule) - return node if @template.scan(/;/) - - assert_match /\{/ - whitespace - - rules(node) - return node - end - - assert_match /\{/ - node = Tree::RuleNode.new(rule) - properties(node) - return node - end - - # Parses a set of CSS properties within a rule. - # - # @param rule [Tree::RuleNode] The parent node of the properties - def properties(rule) - while @template.scan(/[^:\}\s]+/) - name = @template[0] - whitespace - - assert_match /:/ - - value = '' - while @template.scan(/[^;\s\}]+/) - value << @template[0] << whitespace - end - - assert_match /(;|(?=\}))/ - rule << Tree::PropNode.new(name, value, nil) - end - - assert_match /\}/ - end - - # Moves the scanner over a section of whitespace or comments. - # - # @return [String] The ignored whitespace - def whitespace - space = @template.scan(/\s*/) || '' - - # If we've hit a comment, - # go past it and look for more whitespace - if @template.scan(/\/\*/) - @template.scan_until(/\*\//) - return space + whitespace - end - return space - end - - # Moves the scanner over a regular expression, - # raising an exception if it doesn't match. - # - # @param re [Regexp] The regular expression to assert - def assert_match(re) - if @template.scan(re) - whitespace - return - end - - line = @template.string[0..@template.pos].count "\n" - pos = @template.pos - - after = @template.string[pos - 15...pos] - after = "..." + after if pos >= 15 - - # Display basic regexps as plain old strings - expected = re.source == Regexp.escape(re.source) ? "\"#{re.source}\"" : re.inspect - - was = @template.rest[0...15] - was += "..." if @template.rest.size >= 15 - raise Exception.new(<` - # : The arguments for the mixin. - # Each element is a tuple containing the name of the argument - # and the parse tree for the default value of the argument. - # - # `environment`: {Sass::Environment} - # : The environment in which the mixin was defined. - # This is captured so that the mixin can have access - # to local variables defined in its scope. - # - # `tree`: {Sass::Tree::Node} - # : The parse tree for the mixin. - Mixin = Struct.new(:name, :args, :environment, :tree) - - # This class handles the parsing and compilation of the Sass template. - # Example usage: - # - # template = File.load('stylesheets/sassy.sass') - # sass_engine = Sass::Engine.new(template) - # output = sass_engine.render - # puts output - class Engine - include Haml::Util - - # A line of Sass code. - # - # `text`: `String` - # : The text in the line, without any whitespace at the beginning or end. - # - # `tabs`: `Fixnum` - # : The level of indentation of the line. - # - # `index`: `Fixnum` - # : The line number in the original document. - # - # `offset`: `Fixnum` - # : The number of bytes in on the line that the text begins. - # This ends up being the number of bytes of leading whitespace. - # - # `filename`: `String` - # : The name of the file in which this line appeared. - # - # `children`: `Array` - # : The lines nested below this one. - class Line < Struct.new(:text, :tabs, :index, :offset, :filename, :children) - def comment? - text[0] == COMMENT_CHAR && (text[1] == SASS_COMMENT_CHAR || text[1] == CSS_COMMENT_CHAR) - end - end - - # The character that begins a CSS property. - PROPERTY_CHAR = ?: - - # The character that designates that - # a property should be assigned to a SassScript expression. - SCRIPT_CHAR = ?= - - # The character that designates the beginning of a comment, - # either Sass or CSS. - COMMENT_CHAR = ?/ - - # The character that follows the general COMMENT_CHAR and designates a Sass comment, - # which is not output as a CSS comment. - SASS_COMMENT_CHAR = ?/ - - # The character that follows the general COMMENT_CHAR and designates a CSS comment, - # which is embedded in the CSS document. - CSS_COMMENT_CHAR = ?* - - # The character used to denote a compiler directive. - DIRECTIVE_CHAR = ?@ - - # Designates a non-parsed rule. - ESCAPE_CHAR = ?\\ - - # Designates block as mixin definition rather than CSS rules to output - MIXIN_DEFINITION_CHAR = ?= - - # Includes named mixin declared using MIXIN_DEFINITION_CHAR - MIXIN_INCLUDE_CHAR = ?+ - - # The regex that matches properties of the form `name: prop`. - PROPERTY_NEW_MATCHER = /^[^\s:"\[]+\s*[=:](\s|$)/ - - # The regex that matches and extracts data from - # properties of the form `name: prop`. - PROPERTY_NEW = /^([^\s=:"]+)(\s*=|:)(?:\s+|$)(.*)/ - - # The regex that matches and extracts data from - # properties of the form `:name prop`. - PROPERTY_OLD = /^:([^\s=:"]+)\s*(=?)(?:\s+|$)(.*)/ - - # The default options for Sass::Engine. - DEFAULT_OPTIONS = { - :style => :nested, - :load_paths => ['.'], - :cache => true, - :cache_location => './.sass-cache', - }.freeze - - # @param template [String] The Sass template. - # @param options [{Symbol => Object}] An options hash; - # see {file:SASS_REFERENCE.md#sass_options the Sass options documentation} - def initialize(template, options={}) - @options = DEFAULT_OPTIONS.merge(options.reject {|k, v| v.nil?}) - @template = template - - # Backwards compatibility - @options[:property_syntax] ||= @options[:attribute_syntax] - case @options[:property_syntax] - when :alternate; @options[:property_syntax] = :new - when :normal; @options[:property_syntax] = :old - end - end - - # Render the template to CSS. - # - # @return [String] The CSS - # @raise [Sass::SyntaxError] if there's an error in the document - def render - to_tree.render - end - - alias_method :to_css, :render - - # Parses the document into its parse tree. - # - # @return [Sass::Tree::Node] The root of the parse tree. - # @raise [Sass::SyntaxError] if there's an error in the document - def to_tree - root = Tree::Node.new - append_children(root, tree(tabulate(@template)).first, true) - root.options = @options - root - rescue SyntaxError => e; e.add_metadata(@options[:filename], @line) - end - - private - - def tabulate(string) - tab_str = nil - first = true - lines = [] - string.gsub(/\r|\n|\r\n|\r\n/, "\n").scan(/^.*?$/).each_with_index do |line, index| - index += (@options[:line] || 1) - if line.strip.empty? - lines.last.text << "\n" if lines.last && lines.last.comment? - next - end - - line_tab_str = line[/^\s*/] - unless line_tab_str.empty? - tab_str ||= line_tab_str - - raise SyntaxError.new("Indenting at the beginning of the document is illegal.", index) if first - if tab_str.include?(?\s) && tab_str.include?(?\t) - raise SyntaxError.new("Indentation can't use both tabs and spaces.", index) - end - end - first &&= !tab_str.nil? - if tab_str.nil? - lines << Line.new(line.strip, 0, index, 0, @options[:filename], []) - next - end - - if lines.last && lines.last.comment? && line =~ /^(?:#{tab_str}){#{lines.last.tabs + 1}}(.*)$/ - lines.last.text << "\n" << $1 - next - end - - line_tabs = line_tab_str.scan(tab_str).size - raise SyntaxError.new(<= base - if line.tabs > base - if line.tabs > base + 1 - raise SyntaxError.new("The line was indented #{line.tabs - base} levels deeper than the previous line.", line.index) - end - - nodes.last.children, i = tree(arr, i) - else - nodes << line - i += 1 - end - end - return nodes, i - end - - def build_tree(parent, line, root = false) - @line = line.index - node_or_nodes = parse_line(parent, line, root) - - Array(node_or_nodes).each do |node| - # Node is a symbol if it's non-outputting, like a variable assignment - next unless node.is_a? Tree::Node - - node.line = line.index - node.filename = line.filename - - if node.is_a?(Tree::CommentNode) - node.lines = line.children - else - append_children(node, line.children, false) - end - end - - node_or_nodes - end - - def append_children(parent, children, root) - continued_rule = nil - children.each do |line| - child = build_tree(parent, line, root) - - if child.is_a?(Tree::RuleNode) && child.continued? - raise SyntaxError.new("Rules can't end in commas.", child.line) unless child.children.empty? - if continued_rule - continued_rule.add_rules child - else - continued_rule = child - end - next - end - - if continued_rule - raise SyntaxError.new("Rules can't end in commas.", continued_rule.line) unless child.is_a?(Tree::RuleNode) - continued_rule.add_rules child - continued_rule.children = child.children - continued_rule, child = nil, continued_rule - end - - check_for_no_children(child) - validate_and_append_child(parent, child, line, root) - end - - raise SyntaxError.new("Rules can't end in commas.", continued_rule.line) if continued_rule - - parent - end - - def validate_and_append_child(parent, child, line, root) - unless root - case child - when Tree::MixinDefNode - raise SyntaxError.new("Mixins may only be defined at the root of a document.", line.index) - when Tree::ImportNode - raise SyntaxError.new("Import directives may only be used at the root of a document.", line.index) - end - end - - case child - when Array - child.each {|c| validate_and_append_child(parent, c, line, root)} - when Tree::Node - parent << child - end - end - - def check_for_no_children(node) - return unless node.is_a?(Tree::RuleNode) && node.children.empty? - warning = (node.rules.size == 1) ? < line.offset + line.text.index(value)) - else - value - end - Tree::PropNode.new(name, expr, property_regx == PROPERTY_OLD ? :old : :new) - end - - def parse_variable(line) - name, op, value = line.text.scan(Script::MATCH)[0] - raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath variable declarations.", @line + 1) unless line.children.empty? - raise SyntaxError.new("Invalid variable: \"#{line.text}\".", @line) unless name && value - - Tree::VariableNode.new(name, parse_script(value, :offset => line.offset + line.text.index(value)), op == '||=') - end - - def parse_comment(line) - if line[1] == CSS_COMMENT_CHAR || line[1] == SASS_COMMENT_CHAR - Tree::CommentNode.new(line, line[1] == SASS_COMMENT_CHAR) - else - Tree::RuleNode.new(line) - end - end - - def parse_directive(parent, line, root) - directive, whitespace, value = line.text[1..-1].split(/(\s+)/, 2) - offset = directive.size + whitespace.size + 1 if whitespace - - # If value begins with url( or ", - # it's a CSS @import rule and we don't want to touch it. - if directive == "import" && value !~ /^(url\(|")/ - raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath import directives.", @line + 1) unless line.children.empty? - value.split(/,\s*/).map {|f| Tree::ImportNode.new(f)} - elsif directive == "for" - parse_for(line, root, value) - elsif directive == "else" - parse_else(parent, line, value) - elsif directive == "while" - raise SyntaxError.new("Invalid while directive '@while': expected expression.") unless value - Tree::WhileNode.new(parse_script(value, :offset => offset)) - elsif directive == "if" - raise SyntaxError.new("Invalid if directive '@if': expected expression.") unless value - Tree::IfNode.new(parse_script(value, :offset => offset)) - elsif directive == "debug" - raise SyntaxError.new("Invalid debug directive '@debug': expected expression.") unless value - raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath debug directives.", @line + 1) unless line.children.empty? - offset = line.offset + line.text.index(value).to_i - Tree::DebugNode.new(parse_script(value, :offset => offset)) - else - Tree::DirectiveNode.new(line.text) - end - end - - def parse_for(line, root, text) - var, from_expr, to_name, to_expr = text.scan(/^([^\s]+)\s+from\s+(.+)\s+(to|through)\s+(.+)$/).first - - if var.nil? # scan failed, try to figure out why for error message - if text !~ /^[^\s]+/ - expected = "variable name" - elsif text !~ /^[^\s]+\s+from\s+.+/ - expected = "'from '" - else - expected = "'to ' or 'through '" - end - raise SyntaxError.new("Invalid for directive '@for #{text}': expected #{expected}.", @line) - end - raise SyntaxError.new("Invalid variable \"#{var}\".", @line) unless var =~ Script::VALIDATE - - parsed_from = parse_script(from_expr, :offset => line.offset + line.text.index(from_expr)) - parsed_to = parse_script(to_expr, :offset => line.offset + line.text.index(to_expr)) - Tree::ForNode.new(var[1..-1], parsed_from, parsed_to, to_name == 'to') - end - - def parse_else(parent, line, text) - previous = parent.last - raise SyntaxError.new("@else must come after @if.") unless previous.is_a?(Tree::IfNode) - - if text - if text !~ /^if\s+(.+)/ - raise SyntaxError.new("Invalid else directive '@else #{text}': expected 'if '.", @line) - end - expr = parse_script($1, :offset => line.offset + line.text.index($1)) - end - - node = Tree::IfNode.new(expr) - append_children(node, line.children, false) - previous.add_else node - nil - end - - def parse_mixin_definition(line) - name, arg_string = line.text.scan(/^=\s*([^(]+)(.*)$/).first - raise SyntaxError.new("Invalid mixin \"#{line.text[1..-1]}\".", @line) if name.nil? - - offset = line.offset + line.text.size - arg_string.size - args = Script::Parser.new(arg_string.strip, @line, offset).parse_mixin_definition_arglist - default_arg_found = false - Tree::MixinDefNode.new(name, args) - end - - def parse_mixin_include(line, root) - name, arg_string = line.text.scan(/^\+\s*([^(]+)(.*)$/).first - raise SyntaxError.new("Invalid mixin include \"#{line.text}\".", @line) if name.nil? - - offset = line.offset + line.text.size - arg_string.size - args = Script::Parser.new(arg_string.strip, @line, offset).parse_mixin_include_arglist - raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath mixin directives.", @line + 1) unless line.children.empty? - Tree::MixinNode.new(name, args) - end - - def parse_script(script, options = {}) - line = options[:line] || @line - offset = options[:offset] || 0 - Script.parse(script, line, offset, @options[:filename]) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/environment.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/environment.rb deleted file mode 100644 index 5440c213..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/environment.rb +++ /dev/null @@ -1,79 +0,0 @@ -module Sass - # The lexical environment for SassScript. - # This keeps track of variable and mixin definitions. - # - # A new environment is created for each level of Sass nesting. - # This allows variables to be lexically scoped. - # The new environment refers to the environment in the upper scope, - # so it has access to variables defined in enclosing scopes, - # but new variables are defined locally. - # - # Environment also keeps track of the {Engine} options - # so that they can be made available to {Sass::Script::Functions}. - class Environment - # The enclosing environment, - # or nil if this is the global environment. - # - # @return [Environment] - attr_reader :parent - attr_writer :options - - # @param parent [Environment] See \{#parent} - def initialize(parent = nil) - @vars = {} - @mixins = {} - @parent = parent - - set_var("important", Script::String.new("!important")) unless @parent - end - - # The options hash. - # See {file:SASS_REFERENCE.md#sass_options the Sass options documentation}. - # - # @return [{Symbol => Object}] - def options - @options || (parent && parent.options) || {} - end - - class << self - private - - # Note: when updating this, - # update haml/yard/inherited_hash.rb as well. - def inherited_hash(name) - class_eval < Object}] The options hash. - # Only the {file:SASS_REFERENCE.md#cache-option `:cache_location`} option is used - # @raise [Sass::SyntaxError] if there's an error in the document - def tree_for(filename, options) - options = Sass::Engine::DEFAULT_OPTIONS.merge(options) - text = File.read(filename) - - if options[:cache] - compiled_filename = sassc_filename(filename, options) - sha = Digest::SHA1.hexdigest(text) - - if root = try_to_read_sassc(filename, compiled_filename, sha) - root.options = options.merge(:filename => filename) - return root - end - end - - engine = Sass::Engine.new(text, options.merge(:filename => filename)) - - begin - root = engine.to_tree - rescue Sass::SyntaxError => err - err.add_backtrace_entry(filename) - raise err - end - - try_to_write_sassc(root, compiled_filename, sha, options) if options[:cache] - - root - end - - # Find the full filename of a Sass or CSS file to import. - # This follows Sass's import rules: - # if the filename given ends in `".sass"` or `".css"`, - # it will try to find that type of file; - # otherwise, it will try to find the corresponding Sass file - # and fall back on CSS if it's not available. - # - # Any Sass filename returned will correspond to - # an actual Sass file on the filesystem. - # CSS filenames, however, may not; - # they're expected to be put through directly to the stylesheet - # as CSS `@import` statements. - # - # @param filename [String] The filename to search for - # @param load_paths [Array] The set of filesystem paths - # to search for Sass files. - # @return [String] The filename of the imported file. - # This is an absolute path if the file is a `".sass"` file. - # @raise [Sass::SyntaxError] if `filename` ends in ``".sass"`` - # and no corresponding Sass file could be found. - def find_file_to_import(filename, load_paths) - was_sass = false - original_filename = filename - - if filename[-5..-1] == ".sass" - filename = filename[0...-5] - was_sass = true - elsif filename[-4..-1] == ".css" - return filename - end - - new_filename = find_full_path("#{filename}.sass", load_paths) - - return new_filename if new_filename - unless was_sass - warn < e - warn "Warning. Error encountered while reading cache #{compiled_filename}: #{e}" - end - - def try_to_write_sassc(root, compiled_filename, sha, options) - return unless File.writable?(File.dirname(options[:cache_location])) - return if File.exists?(options[:cache_location]) && !File.writable?(options[:cache_location]) - return if File.exists?(File.dirname(compiled_filename)) && !File.writable?(File.dirname(compiled_filename)) - return if File.exists?(compiled_filename) && !File.writable?(compiled_filename) - FileUtils.mkdir_p(File.dirname(compiled_filename)) - File.open(compiled_filename, "wb") do |f| - f.write(Sass::VERSION) - f.write("\n") - f.write(sha) - f.write("\n") - f.write(Marshal.dump(root)) - end - end - - def find_full_path(filename, load_paths) - partial_name = File.join(File.dirname(filename), "_#{File.basename(filename)}") - - if Pathname.new(filename).absolute? - [partial_name, filename].each do |name| - return name if File.readable?(name) - end - return nil - end - - load_paths.each do |path| - [partial_name, filename].each do |name| - full_path = File.join(path, name) - if File.readable?(full_path) - return full_path - end - end - end - nil - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/plugin.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/plugin.rb deleted file mode 100644 index 5339e7f9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/plugin.rb +++ /dev/null @@ -1,222 +0,0 @@ -require 'sass' - -module Sass - # This module handles the compilation of Sass files. - # It provides global options and checks whether CSS files - # need to be updated. - # - # This module is used as the primary interface with Sass - # when it's used as a plugin for various frameworks. - # All Rack-enabled frameworks are supported out of the box. - # The plugin is {file:SASS_REFERENCE.md#rails_merb_plugin automatically activated for Rails and Merb}. - # Other frameworks must enable it explicitly; see {Sass::Plugin::Rack}. - module Plugin - extend self - - @options = { - :css_location => './public/stylesheets', - :always_update => false, - :always_check => true, - :full_exception => true - } - @checked_for_updates = false - - # Whether or not Sass has **ever** checked if the stylesheets need to be updated - # (in this Ruby instance). - # - # @return [Boolean] - attr_reader :checked_for_updates - - # An options hash. - # See {file:SASS_REFERENCE.md#sass_options the Sass options documentation}. - # - # @return [{Symbol => Object}] - attr_reader :options - - # Sets the options hash. - # See {file:SASS_REFERENCE.md#sass_options the Sass options documentation}. - # - # @param value [{Symbol => Object}] The options hash - def options=(value) - @options.merge!(value) - end - - # Non-destructively modifies \{#options} so that default values are properly set. - # - # @param additional_options [{Symbol => Object}] An options hash with which to merge \{#options} - # @return [{Symbol => Object}] The modified options hash - def engine_options(additional_options = {}) - opts = options.dup.merge(additional_options) - opts[:load_paths] = load_paths(opts) - opts - end - - # Same as \{#update\_stylesheets}, but respects \{#checked\_for\_updates} - # and the {file:SASS_REFERENCE.md#always_update-option `:always_update`} - # and {file:SASS_REFERENCE.md#always_check-option `:always_check`} options. - # - # @see #update_stylesheets - def check_for_updates - return unless !Sass::Plugin.checked_for_updates || - Sass::Plugin.options[:always_update] || Sass::Plugin.options[:always_check] - update_stylesheets - end - - # Updates out-of-date stylesheets. - # - # Checks each Sass file in {file:SASS_REFERENCE.md#template_location-option `:template_location`} - # to see if it's been modified more recently than the corresponding CSS file - # in {file:SASS_REFERENCE.md#css_location-option} `:css_location`}. - # If it has, it updates the CSS file. - def update_stylesheets - return if options[:never_update] - - @checked_for_updates = true - template_locations.zip(css_locations).each do |template_location, css_location| - - Dir.glob(File.join(template_location, "**", "*.sass")).each do |file| - # Get the relative path to the file with no extension - name = file.sub(template_location.sub(/\/*$/, '/'), "")[0...-5] - - if !forbid_update?(name) && (options[:always_update] || stylesheet_needs_update?(name, template_location, css_location)) - update_stylesheet(name, template_location, css_location) - end - end - end - end - - private - - def update_stylesheet(name, template_location, css_location) - css = css_filename(name, css_location) - File.delete(css) if File.exists?(css) - - filename = template_filename(name, template_location) - result = begin - Sass::Files.tree_for(filename, engine_options(:css_filename => css, :filename => filename)).render - rescue Exception => e - raise e unless options[:full_exception] - exception_string(e) - end - - # Create any directories that might be necessary - mkpath(css_location, name) - - # Finally, write the file - File.open(css, 'w') do |file| - file.print(result) - end - end - - # Create any successive directories required to be able to write a file to: File.join(base,name) - def mkpath(base, name) - dirs = [base] - name.split(File::SEPARATOR)[0...-1].each { |dir| dirs << File.join(dirs[-1],dir) } - dirs.each { |dir| Dir.mkdir(dir) unless File.exist?(dir) } - end - - def load_paths(opts = options) - (opts[:load_paths] || []) + template_locations - end - - def template_locations - location = (options[:template_location] || File.join(options[:css_location],'sass')) - if location.is_a?(String) - [location] - else - location.to_a.map { |l| l.first } - end - end - - def css_locations - if options[:template_location] && !options[:template_location].is_a?(String) - options[:template_location].to_a.map { |l| l.last } - else - [options[:css_location]] - end - end - - def exception_string(e) - e_string = "#{e.class}: #{e.message}" - - if e.is_a? Sass::SyntaxError - e_string << "\non line #{e.sass_line}" - - if e.sass_filename - e_string << " of #{e.sass_filename}" - - if File.exists?(e.sass_filename) - e_string << "\n\n" - - min = [e.sass_line - 5, 0].max - begin - File.read(e.sass_filename).rstrip.split("\n")[ - min .. e.sass_line + 5 - ].each_with_index do |line, i| - e_string << "#{min + i + 1}: #{line}\n" - end - rescue - e_string << "Couldn't read sass file: #{e.sass_filename}" - end - end - end - end - < css_mtime || - dependencies(template_file).any?(&dependency_updated?(css_mtime)) - end - - def dependency_updated?(css_mtime) - lambda do |dep| - File.mtime(dep) > css_mtime || - dependencies(dep).any?(&dependency_updated?(css_mtime)) - end - end - - def dependencies(filename) - File.readlines(filename).grep(/^@import /).map do |line| - line[8..-1].split(',').map do |inc| - Sass::Files.find_file_to_import(inc.strip, [File.dirname(filename)] + load_paths) - end - end.flatten.grep(/\.sass$/) - end - end -end - -require 'sass/plugin/rails' if defined?(ActionController) -require 'sass/plugin/merb' if defined?(Merb::Plugins) diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/plugin/merb.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/plugin/merb.rb deleted file mode 100644 index fb931f37..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/plugin/merb.rb +++ /dev/null @@ -1,49 +0,0 @@ -unless defined?(Sass::MERB_LOADED) - Sass::MERB_LOADED = true - - version = Merb::VERSION.split('.').map { |n| n.to_i } - if version[0] <= 0 && version[1] < 5 - root = MERB_ROOT - env = MERB_ENV - else - root = Merb.root.to_s - env = Merb.environment - end - - Sass::Plugin.options.merge!(:template_location => root + '/public/stylesheets/sass', - :css_location => root + '/public/stylesheets', - :cache_location => root + '/tmp/sass-cache', - :always_check => env != "production", - :full_exception => env != "production") - config = Merb::Plugins.config[:sass] || Merb::Plugins.config["sass"] || {} - - if defined? config.symbolize_keys! - config.symbolize_keys! - end - - Sass::Plugin.options.merge!(config) - - if version[0] > 0 || version[1] >= 9 - - class Merb::Rack::Application - def call_with_sass(env) - Sass::Plugin.check_for_updates - call_without_sass(env) - end - alias_method :call_without_sass, :call - alias_method :call, :call_with_sass - end - - else - - class MerbHandler - def process_with_sass(request, response) - Sass::Plugin.check_for_updates - process_without_sass(request, response) - end - alias_method :process_without_sass, :process - alias_method :process, :process_with_sass - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/plugin/rack.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/plugin/rack.rb deleted file mode 100644 index 9275b4ba..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/plugin/rack.rb +++ /dev/null @@ -1,65 +0,0 @@ -require 'sass/plugin' - -module Sass - module Plugin - # Rack middleware for compiling Sass code. - # - # ## Activate - # - # require 'sass/plugin/rack' - # use Sass::Plugin::Rack - # - # ## Customize - # - # Sass::Plugin.options.merge( - # :cache_location => './tmp/sass-cache', - # :never_update => environment != :production, - # :full_exception => environment != :production) - # - # {file:SASS_REFERENCE.md#options See the Reference for more options}. - # - # ## Use - # - # Put your Sass files in `public/stylesheets/sass`. - # Your CSS will be generated in `public/stylesheets`, - # and regenerated every request if necessary. - # The locations and frequency {file:SASS_REFERENCE.md#options can be customized}. - # That's all there is to it! - class Rack - # Initialize the middleware. - # - # @param app [#call] The Rack application - def initialize(app) - @app = app - self.class.disable_native_plugin! - end - - # Process a request, checking the Sass stylesheets for changes - # and updating them if necessary. - # - # @param env The Rack request environment - # @return [(#to_i, {String => String}, Object)] The Rack response - def call(env) - Sass::Plugin.check_for_updates - @app.call(env) - end - - # Disable the native Rails or Merb plugins, if they're enabled. - # This is automatically done once the Rack plugin is activated. - # This is done so that the stylesheets aren't checked twice for each request. - def self.disable_native_plugin! - if defined?(Merb::Rack::Application) && - Haml::Util.has?(:instance_method, Merb::Rack::Application, :call_without_sass) - Merb::Rack::Application.instance_eval {alias_method :call, :call_without_sass} - end - - if defined?(ActionDispatch::Callbacks.to_prepare) - ActionDispatch::Callbacks.skip_callback(:prepare, :__sass_process) - elsif defined?(ActionController::Base) && - Haml::Util.has?(:instance_method, ActionController::Base, :sass_old_process) - ActionController::Base.instance_eval {alias_method :process, :sass_old_process} - end - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/plugin/rails.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/plugin/rails.rb deleted file mode 100644 index 8d4a5f40..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/plugin/rails.rb +++ /dev/null @@ -1,24 +0,0 @@ -unless defined?(Sass::RAILS_LOADED) - Sass::RAILS_LOADED = true - - Sass::Plugin.options.merge!(:template_location => Haml::Util.rails_root + '/public/stylesheets/sass', - :css_location => Haml::Util.rails_root + '/public/stylesheets', - :cache_location => Haml::Util.rails_root + '/tmp/sass-cache', - :always_check => RAILS_ENV != "production", - :full_exception => RAILS_ENV != "production") - - if defined?(ActionDispatch::Callbacks.to_prepare) - # Rails >= 3.0.0 - ActionDispatch::Callbacks.to_prepare(:sass_process) {Sass::Plugin.check_for_updates} - else - module ActionController - class Base - alias_method :sass_old_process, :process - def process(*args) - Sass::Plugin.check_for_updates - sass_old_process(*args) - end - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/repl.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/repl.rb deleted file mode 100644 index ee955bf8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/repl.rb +++ /dev/null @@ -1,58 +0,0 @@ -require 'readline' - -module Sass - # Runs a SassScript read-eval-print loop. - # It presents a prompt on the terminal, - # reads in SassScript expressions, - # evaluates them, - # and prints the result. - class Repl - # @param options [{Symbol => Object}] An options hash. - def initialize(options = {}) - @options = options - end - - # Starts the read-eval-print loop. - def run - environment = Environment.new - environment.set_var('important', Script::String.new('!important')) - @line = 0 - loop do - @line += 1 - unless text = Readline.readline('>> ') - puts - return - end - - Readline::HISTORY << text - parse_input(environment, text) - end - end - - private - - def parse_input(environment, text) - case text - when Script::MATCH - name = $1 - guarded = $2 == '||=' - val = Script::Parser.parse($3, @line, text.size - $3.size) - - unless guarded && environment.var(name) - environment.set_var(name, val.perform(environment)) - end - - p environment.var(name) - else - p Script::Parser.parse(text, @line, 0).perform(environment) - end - rescue Sass::SyntaxError => e - puts "SyntaxError: #{e.message}" - if @options[:trace] - e.backtrace.each do |e| - puts "\tfrom #{e}" - end - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script.rb deleted file mode 100644 index bcacabd8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script.rb +++ /dev/null @@ -1,59 +0,0 @@ -require 'strscan' -require 'sass/script/node' -require 'sass/script/variable' -require 'sass/script/funcall' -require 'sass/script/operation' -require 'sass/script/literal' -require 'sass/script/parser' - -module Sass - # SassScript is code that's embedded in Sass documents - # to allow for property values to be computed from variables. - # - # This module contains code that handles the parsing and evaluation of SassScript. - module Script - # The character that begins a variable. - VARIABLE_CHAR = ?! - - # The regular expression used to parse variables. - MATCH = /^!([a-zA-Z_]\w*)\s*((?:\|\|)?=)\s*(.+)/ - - # The regular expression used to validate variables without matching. - VALIDATE = /^![a-zA-Z_]\w*$/ - - # Parses and evaluates a string of SassScript. - # - # @param value [String] The SassScript - # @param line [Fixnum] The number of the line on which the SassScript appeared. - # Used for error reporting - # @param offset [Fixnum] The number of characters in on `line` that the SassScript started. - # Used for error reporting - # @param environment [Sass::Environment] The environment in which to evaluate the SassScript - # @return [String] The string result of evaluating the SassScript - def self.resolve(value, line, offset, environment) - parse(value, line, offset).perform(environment).to_s - end - - # Parses a string of SassScript - # - # @param value [String] The SassScript - # @param line [Fixnum] The number of the line on which the SassScript appeared. - # Used for error reporting - # @param offset [Fixnum] The number of characters in on `line` that the SassScript started. - # Used for error reporting - # @param filename [String] The path to the file in which the SassScript appeared. - # Used for error reporting - # @return [Script::Node] The root node of the parse tree - def self.parse(value, line, offset, filename = nil) - Parser.parse(value, line, offset, filename) - rescue Sass::SyntaxError => e - if e.message == "SassScript error" - e.instance_eval do - @message += ": #{value.dump}." - end - end - e.sass_line = line - raise e - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/bool.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/bool.rb deleted file mode 100644 index 0f455dbd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/bool.rb +++ /dev/null @@ -1,17 +0,0 @@ -require 'sass/script/literal' - -module Sass::Script - # A SassScript object representing a boolean (true or false) value. - class Bool < Literal - # The Ruby value of the boolean. - # - # @return [Boolean] - attr_reader :value - alias_method :to_bool, :value - - # @return [String] "true" or "false" - def to_s - @value.to_s - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/color.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/color.rb deleted file mode 100644 index 6e1cce11..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/color.rb +++ /dev/null @@ -1,220 +0,0 @@ -require 'sass/script/literal' - -module Sass::Script - # A SassScript object representing a CSS color. - class Color < Literal - class << self; include Haml::Util; end - - # A hash from color names to `[red, green, blue]` value arrays. - HTML4_COLORS = map_vals({ - 'black' => 0x000000, - 'silver' => 0xc0c0c0, - 'gray' => 0x808080, - 'white' => 0xffffff, - 'maroon' => 0x800000, - 'red' => 0xff0000, - 'purple' => 0x800080, - 'fuchsia' => 0xff00ff, - 'green' => 0x008000, - 'lime' => 0x00ff00, - 'olive' => 0x808000, - 'yellow' => 0xffff00, - 'navy' => 0x000080, - 'blue' => 0x0000ff, - 'teal' => 0x008080, - 'aqua' => 0x00ffff - }) {|color| (0..2).map {|n| color >> (n << 3) & 0xff}.reverse} - # A hash from `[red, green, blue]` value arrays to color names. - HTML4_COLORS_REVERSE = map_hash(HTML4_COLORS) {|k, v| [v, k]} - - # Creates a new color from RGB components. - # *Note*: when modifying the components of an existing color, - # use \{#with} rather than creating a new color object. - # This preserves forwards-compatiblity for alpha channels and such. - # - # @param rgb [Array] A three-element array of the red, green, and blue values (respectively) - # of the color - # @raise [Sass::SyntaxError] if any color value isn't between 0 and 255 - def initialize(rgb) - rgb = rgb.map {|c| c.to_i} - raise Sass::SyntaxError.new("Color values must be between 0 and 255") if rgb.any? {|c| c < 0 || c > 255} - super(rgb.freeze) - end - - # @deprecated This will be removed in version 2.6. - # @see #rgb - def value - warn <] A frozen three-element array of the red, green, and blue - # values (respectively) of the color - def rgb - @value - end - - # Returns a copy of this color with one or more channels changed. - # - # For example: - # - # Color.new([10, 20, 30]).with(:blue => 40) - # #=> rgb(10, 40, 30) - # Color.new([126, 126, 126]).with(:red => 0, :green => 255) - # #=> rgb(0, 255, 126) - # - # @param attrs [{Symbol => Fixnum}] - # A map of channel names (`:red`, `:green`, or `:blue`) to values - # @return [Color] The new Color object - def with(attrs) - Color.new([ - attrs[:red] || rgb[0], - attrs[:green] || rgb[1], - attrs[:blue] || rgb[2], - ]) - end - - # The SassScript `+` operation. - # Its functionality depends on the type of its argument: - # - # {Number} - # : Adds the number to each of the RGB color channels. - # - # {Color} - # : Adds each of the RGB color channels together. - # - # {Literal} - # : See {Literal#plus}. - # - # @param other [Literal] The right-hand side of the operator - # @return [Color] The resulting color - # @raise [Sass::SyntaxError] if `other` is a number with units - def plus(other) - if other.is_a?(Sass::Script::Number) || other.is_a?(Sass::Script::Color) - piecewise(other, :+) - else - super - end - end - - # The SassScript `-` operation. - # Its functionality depends on the type of its argument: - # - # {Number} - # : Subtracts the number from each of the RGB color channels. - # - # {Color} - # : Subtracts each of the other color's RGB color channels from this color's. - # - # {Literal} - # : See {Literal#minus}. - # - # @param other [Literal] The right-hand side of the operator - # @return [Color] The resulting color - # @raise [Sass::SyntaxError] if `other` is a number with units - def minus(other) - if other.is_a?(Sass::Script::Number) || other.is_a?(Sass::Script::Color) - piecewise(other, :-) - else - super - end - end - - # The SassScript `*` operation. - # Its functionality depends on the type of its argument: - # - # {Number} - # : Multiplies the number by each of the RGB color channels. - # - # {Color} - # : Multiplies each of the RGB color channels together. - # - # @param other [Number, Color] The right-hand side of the operator - # @return [Color] The resulting color - # @raise [Sass::SyntaxError] if `other` is a number with units - def times(other) - if other.is_a?(Sass::Script::Number) || other.is_a?(Sass::Script::Color) - piecewise(other, :*) - else - raise NoMethodError.new(nil, :times) - end - end - - # The SassScript `/` operation. - # Its functionality depends on the type of its argument: - # - # {Number} - # : Divides each of the RGB color channels by the number. - # - # {Color} - # : Divides each of this color's RGB color channels by the other color's. - # - # {Literal} - # : See {Literal#div}. - # - # @param other [Literal] The right-hand side of the operator - # @return [Color] The resulting color - # @raise [Sass::SyntaxError] if `other` is a number with units - def div(other) - if other.is_a?(Sass::Script::Number) || other.is_a?(Sass::Script::Color) - piecewise(other, :/) - else - super - end - end - - # The SassScript `%` operation. - # Its functionality depends on the type of its argument: - # - # {Number} - # : Takes each of the RGB color channels module the number. - # - # {Color} - # : Takes each of this color's RGB color channels modulo the other color's. - # - # @param other [Number, Color] The right-hand side of the operator - # @return [Color] The resulting color - # @raise [Sass::SyntaxError] if `other` is a number with units - def mod(other) - if other.is_a?(Sass::Script::Number) || other.is_a?(Sass::Script::Color) - piecewise(other, :%) - else - raise NoMethodError.new(nil, :mod) - end - end - - # Returns a string representation of the color. - # This is usually the color's hex value, - # but if the color has a name that's used instead. - # - # @return [String] The string representation - def to_s - return HTML4_COLORS_REVERSE[rgb] if HTML4_COLORS_REVERSE[rgb] - red, green, blue = rgb.map { |num| num.to_s(16).rjust(2, '0') } - "##{red}#{green}#{blue}" - end - alias_method :inspect, :to_s - - private - - def piecewise(other, operation) - other_num = other.is_a? Number - if other_num && !other.unitless? - raise Sass::SyntaxError.new("Cannot add a number with units (#{other}) to a color (#{self}).") - end - - result = [] - for i in (0...3) - res = rgb[i].send(operation, other_num ? other.value : other.rgb[i]) - result[i] = [ [res, 255].min, 0 ].max - end - with(:red => result[0], :green => result[1], :blue => result[2]) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/funcall.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/funcall.rb deleted file mode 100644 index 7e144cf1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/funcall.rb +++ /dev/null @@ -1,50 +0,0 @@ -require File.join(File.dirname(__FILE__), 'functions') -module Sass - module Script - # A SassScript parse node representing a function call. - # - # A function call either calls one of the functions in {Script::Functions}, - # or if no function with the given name exists - # it returns a string representation of the function call. - class Funcall < Node - # The name of the function. - # - # @return [String] - attr_reader :name - - # The arguments to the function. - # - # @return [Array] - attr_reader :args - - # @param name [String] See \{#name} - # @param name [Array] See \{#args} - def initialize(name, args) - @name = name - @args = args - end - - # @return [String] A string representation of the function call - def inspect - "#{name}(#{args.map {|a| a.inspect}.join(', ')})" - end - - # Evaluates the function call. - # - # @param environment [Sass::Environment] The environment in which to evaluate the SassScript - # @return [Literal] The SassScript object that is the value of the function call - # @raise [Sass::SyntaxError] if the function call raises an ArgumentError - def perform(environment) - args = self.args.map {|a| a.perform(environment)} - unless Haml::Util.has?(:public_instance_method, Functions, name) && name !~ /^__/ - return Script::String.new("#{name}(#{args.map {|a| a.perform(environment)}.join(', ')})") - end - - return Functions::EvaluationContext.new(environment.options).send(name, *args) - rescue ArgumentError => e - raise e unless e.backtrace.any? {|t| t =~ /:in `(block in )?(#{name}|perform)'$/} - raise Sass::SyntaxError.new("#{e.message} for `#{name}'") - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/functions.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/functions.rb deleted file mode 100644 index fef69602..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/functions.rb +++ /dev/null @@ -1,257 +0,0 @@ -module Sass::Script - # Methods in this module are accessible from the SassScript context. - # For example, you can write - # - # !color = hsl(120, 100%, 50%) - # - # and it will call {Sass::Script::Functions#hsl}. - # - # The following functions are provided: - # - # \{#hsl} - # : Converts an `hsl(hue, saturation, lightness)` triplet into a color. - # - # \{#rgb} - # : Converts an `rgb(red, green, blue)` triplet into a color. - # - # \{#percentage} - # : Converts a unitless number to a percentage. - # - # \{#round} - # : Rounds a number to the nearest whole number. - # - # \{#ceil} - # : Rounds a number up to the nearest whole number. - # - # \{#floor} - # : Rounds a number down to the nearest whole number. - # - # \{#abs} - # : Returns the absolute value of a number. - # - # These functions are described in more detail below. - # - # ## Adding Custom Functions - # - # New Sass functions can be added by adding Ruby methods to this module. - # For example: - # - # module Sass::Script::Functions - # def reverse(string) - # assert_type string, :String - # Sass::Script::String.new(string.value.reverse) - # end - # end - # - # There are a few things to keep in mind when modifying this module. - # First of all, the arguments passed are {Sass::Script::Literal} objects. - # Literal objects are also expected to be returned. - # This means that Ruby values must be unwrapped and wrapped. - # - # Most Literal objects support the {Sass::Script::Literal#value value} accessor - # for getting their Ruby values. - # Color objects, though, must be accessed using {Sass::Script::Color#rgb rgb}. - # - # Second, making Ruby functions accessible from Sass introduces the temptation - # to do things like database access within stylesheets. - # This is generally a bad idea; - # since Sass files are by default only compiled once, - # dynamic code is not a great fit. - # - # If you really, really need to compile Sass on each request, - # first make sure you have adequate caching set up. - # Then you can use {Sass::Engine} to render the code, - # using the {file:SASS_REFERENCE.md#custom-option `options` parameter} - # to pass in data that {EvaluationContext#options can be accessed} - # from your Sass functions. - # - # Within one of the functions in this module, - # methods of {EvaluationContext} can be used. - module Functions - # The context in which methods in {Script::Functions} are evaluated. - # That means that all instance methods of {EvaluationContext} - # are available to use in functions. - class EvaluationContext - # The options hash for the {Sass::Engine} that is processing the function call - # - # @return [{Symbol => Object}] - attr_reader :options - - # @param options [{Symbol => Object}] See \{#options} - def initialize(options) - @options = options - - # We need to include this individually in each instance - # because of an icky Ruby restriction - class << self; include Sass::Script::Functions; end - end - - # Asserts that the type of a given SassScript value - # is the expected type (designated by a symbol). - # For example: - # - # assert_type value, :String - # assert_type value, :Number - # - # Valid types are `:Bool`, `:Color`, `:Number`, and `:String`. - # - # @param value [Sass::Script::Literal] A SassScript value - # @param type [Symbol] The name of the type the value is expected to be - def assert_type(value, type) - return if value.is_a?(Sass::Script.const_get(type)) - raise ArgumentError.new("#{value.inspect} is not a #{type.to_s.downcase}") - end - end - - instance_methods.each { |m| undef_method m unless m.to_s =~ /^__/ } - - - # Creates a {Color} object from red, green, and blue values. - # @param red - # A number between 0 and 255 inclusive, - # or between 0% and 100% inclusive - # @param green - # A number between 0 and 255 inclusive, - # or between 0% and 100% inclusive - # @param blue - # A number between 0 and 255 inclusive, - # or between 0% and 100% inclusive - def rgb(red, green, blue) - assert_type red, :Number - assert_type green, :Number - assert_type blue, :Number - - rgb = [red, green, blue].map do |c| - v = c.value - if c.numerator_units == ["%"] && c.denominator_units.empty? - next v * 255 / 100.0 if (0..100).include?(v) - raise ArgumentError.new("Color value #{c} must be between 0% and 100% inclusive") - else - next v if (0..255).include?(v) - raise ArgumentError.new("Color value #{v} must be between 0 and 255 inclusive") - end - end - Color.new(rgb) - end - - # Creates a {Color} object from hue, saturation, and lightness. - # Uses the algorithm from the [CSS3 spec](http://www.w3.org/TR/css3-color/#hsl-color). - # - # @param hue [Number] The hue of the color. - # Should be between 0 and 360 degrees, inclusive - # @param saturation [Number] The saturation of the color. - # Must be between `0%` and `100%`, inclusive - # @param lightness [Number] The lightness of the color. - # Must be between `0%` and `100%`, inclusive - # @return [Color] The resulting color - # @raise [ArgumentError] if `saturation` or `lightness` are out of bounds - def hsl(hue, saturation, lightness) - assert_type hue, :Number - assert_type saturation, :Number - assert_type lightness, :Number - - original_s = saturation - original_l = lightness - # This algorithm is from http://www.w3.org/TR/css3-color#hsl-color - h, s, l = [hue, saturation, lightness].map { |a| a.value } - raise ArgumentError.new("Saturation #{s} must be between 0% and 100%") if s < 0 || s > 100 - raise ArgumentError.new("Lightness #{l} must be between 0% and 100%") if l < 0 || l > 100 - - h = (h % 360) / 360.0 - s /= 100.0 - l /= 100.0 - - m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s - m1 = l * 2 - m2 - Color.new([hue_to_rgb(m1, m2, h + 1.0/3), - hue_to_rgb(m1, m2, h), - hue_to_rgb(m1, m2, h - 1.0/3)].map { |c| (c * 0xff).round }) - end - - # Converts a decimal number to a percentage. - # For example: - # - # percentage(100px / 50px) => 200% - # - # @param value [Number] The decimal number to convert to a percentage - # @return [Number] The percentage - # @raise [ArgumentError] If `value` isn't a unitless number - def percentage(value) - unless value.is_a?(Sass::Script::Number) && value.unitless? - raise ArgumentError.new("#{value.inspect} is not a unitless number") - end - Sass::Script::Number.new(value.value * 100, ['%']) - end - - # Rounds a number to the nearest whole number. - # For example: - # - # round(10.4px) => 10px - # round(10.6px) => 11px - # - # @param value [Number] The number - # @return [Number] The rounded number - # @raise [Sass::SyntaxError] if `value` isn't a number - def round(value) - numeric_transformation(value) {|n| n.round} - end - - # Rounds a number up to the nearest whole number. - # For example: - # - # ciel(10.4px) => 11px - # ciel(10.6px) => 11px - # - # @param value [Number] The number - # @return [Number] The rounded number - # @raise [Sass::SyntaxError] if `value` isn't a number - def ceil(value) - numeric_transformation(value) {|n| n.ceil} - end - - # Rounds down to the nearest whole number. - # For example: - # - # floor(10.4px) => 10px - # floor(10.6px) => 10px - # - # @param value [Number] The number - # @return [Number] The rounded number - # @raise [Sass::SyntaxError] if `value` isn't a number - def floor(value) - numeric_transformation(value) {|n| n.floor} - end - - # Finds the absolute value of a number. - # For example: - # - # abs(10px) => 10px - # abs(-10px) => 10px - # - # @param value [Number] The number - # @return [Number] The absolute value - # @raise [Sass::SyntaxError] if `value` isn't a number - def abs(value) - numeric_transformation(value) {|n| n.abs} - end - - private - - # This method implements the pattern of transforming a numeric value into - # another numeric value with the same units. - # It yields a number to a block to perform the operation and return a number - def numeric_transformation(value) - assert_type value, :Number - Sass::Script::Number.new(yield(value.value), value.numerator_units, value.denominator_units) - end - - def hue_to_rgb(m1, m2, h) - h += 1 if h < 0 - h -= 1 if h > 1 - return m1 + (m2 - m1) * h * 6 if h * 6 < 1 - return m2 if h * 2 < 1 - return m1 + (m2 - m1) * (2.0/3 - h) * 6 if h * 3 < 2 - return m1 - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/lexer.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/lexer.rb deleted file mode 100644 index 268331e2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/lexer.rb +++ /dev/null @@ -1,191 +0,0 @@ -require 'strscan' - -module Sass - module Script - # The lexical analyzer for SassScript. - # It takes a raw string and converts it to individual tokens - # that are easier to parse. - class Lexer - # A struct containing information about an individual token. - # - # `type`: \[{Symbol}\] - # : The type of token. - # - # `value`: \[{Object}\] - # : The Ruby object corresponding to the value of the token. - # - # `line`: \[{Fixnum}\] - # : The line of the source file on which the token appears. - # - # `offset`: \[{Fixnum}\] - # : The number of bytes into the line the SassScript token appeared. - Token = Struct.new(:type, :value, :line, :offset) - - # A hash from operator strings to the corresponding token types. - OPERATORS = { - '+' => :plus, - '-' => :minus, - '*' => :times, - '/' => :div, - '%' => :mod, - '=' => :single_eq, - '(' => :lparen, - ')' => :rparen, - ',' => :comma, - 'and' => :and, - 'or' => :or, - 'not' => :not, - '==' => :eq, - '!=' => :neq, - '>=' => :gte, - '<=' => :lte, - '>' => :gt, - '<' => :lt, - '#{' => :begin_interpolation, - '}' => :end_interpolation, - } - - # A list of operator strings ordered with longer names first - # so that `>` and `<` don't clobber `>=` and `<=`. - OP_NAMES = OPERATORS.keys.sort_by {|o| -o.size} - - # A hash of regular expressions that are used for tokenizing. - REGULAR_EXPRESSIONS = { - :whitespace => /\s*/, - :variable => /!(\w+)/, - :ident => /(\\.|[^\s\\+\-*\/%(),=!])+/, - :string_end => /((?:\\.|\#(?!\{)|[^"\\#])*)(?:"|(?=#\{))/, - :number => /(-)?(?:(\d*\.\d+)|(\d+))([a-zA-Z%]+)?/, - :color => /\##{"([0-9a-fA-F]{1,2})" * 3}|(#{Color::HTML4_COLORS.keys.join("|")})/, - :bool => /(true|false)\b/, - :op => %r{(#{Regexp.union(*OP_NAMES.map{|s| Regexp.new(Regexp.escape(s) + (s =~ /\w$/ ? '(?:\b|$)' : ''))})})} - } - - # @param str [String, StringScanner] The source text to lex - # @param line [Fixnum] The line on which the SassScript appears. - # Used for error reporting - # @param offset [Fixnum] The number of characters in on which the SassScript appears. - # Used for error reporting - def initialize(str, line, offset, filename) - @scanner = str.is_a?(StringScanner) ? str : StringScanner.new(str) - @line = line - @offset = offset - @filename = filename - @prev = nil - end - - # Moves the lexer forward one token. - # - # @return [Token] The token that was moved past - def next - @tok ||= read_token - @tok, tok = nil, @tok - @prev = tok - return tok - end - - # Returns the next token without moving the lexer forward. - # - # @return [Token] The next token - def peek - @tok ||= read_token - end - - # @return [Boolean] Whether or not there's more source text to lex. - def done? - whitespace unless after_interpolation? - @scanner.eos? && @tok.nil? - end - - private - - def read_token - return if done? - - value = token - unless value - raise SyntaxError.new("Syntax error in '#{@scanner.string}' at character #{current_position}.") - end - Token.new(value.first, value.last, @line, last_match_position) - end - - def whitespace - @scanner.scan(REGULAR_EXPRESSIONS[:whitespace]) - end - - def token - return string('') if after_interpolation? - variable || string || number || color || bool || op || ident - end - - def variable - return unless @scanner.scan(REGULAR_EXPRESSIONS[:variable]) - [:const, @scanner[1]] - end - - def ident - return unless s = @scanner.scan(REGULAR_EXPRESSIONS[:ident]) - [:ident, s.gsub(/\\(.)/, '\1')] - end - - def string(start_char = '"') - return unless @scanner.scan(/#{start_char}#{REGULAR_EXPRESSIONS[:string_end]}/) - [:string, Script::String.new(@scanner[1].gsub(/\\([^0-9a-f])/, '\1').gsub(/\\([0-9a-f]{1,4})/, "\\\\\\1"))] - end - - def begin_interpolation - @scanner.scan - end - - def number - return unless @scanner.scan(REGULAR_EXPRESSIONS[:number]) - value = @scanner[2] ? @scanner[2].to_f : @scanner[3].to_i - value = -value if @scanner[1] - [:number, Script::Number.new(value, Array(@scanner[4]))] - end - - def color - return unless @scanner.scan(REGULAR_EXPRESSIONS[:color]) - value = if @scanner[4] - color = Color::HTML4_COLORS[@scanner[4].downcase] - else - (1..3).map {|i| @scanner[i]}.map {|num| num.ljust(2, num).to_i(16)} - end - [:color, Script::Color.new(value)] - end - - def bool - return unless s = @scanner.scan(REGULAR_EXPRESSIONS[:bool]) - [:bool, Script::Bool.new(s == 'true')] - end - - def op - prev_chr = @scanner.string[@scanner.pos - 1].chr - return unless op = @scanner.scan(REGULAR_EXPRESSIONS[:op]) - if @prev && op == '-' && prev_chr !~ /\s/ && - [:bool, :ident, :const].include?(@prev.type) - warn(<] - attr_reader :numerator_units - - # A list of units in the denominator of the number. - # For example, `1px*em/in*cm` would return `["in", "cm"]` - # @return [Array] - attr_reader :denominator_units - - # The precision with which numbers will be printed to CSS files. - # For example, if this is `1000.0`, - # `3.1415926` will be printed as `3.142`. - PRECISION = 1000.0 - - # @param value [Numeric] The value of the number - # @param numerator_units [Array] See \{#numerator\_units} - # @param denominator_units [Array] See \{#denominator\_units} - def initialize(value, numerator_units = [], denominator_units = []) - super(value) - @numerator_units = numerator_units - @denominator_units = denominator_units - normalize! - end - - # The SassScript `+` operation. - # Its functionality depends on the type of its argument: - # - # {Number} - # : Adds the two numbers together, converting units if possible. - # - # {Color} - # : Adds this number to each of the RGB color channels. - # - # {Literal} - # : See {Literal#plus}. - # - # @param other [Literal] The right-hand side of the operator - # @return [Literal] The result of the operation - # @raise [Sass::UnitConversionError] if `other` is a number with incompatible units - def plus(other) - if other.is_a? Number - operate(other, :+) - elsif other.is_a?(Color) - other.plus(self) - else - super - end - end - - # The SassScript binary `-` operation (e.g. `!a - !b`). - # Its functionality depends on the type of its argument: - # - # {Number} - # : Subtracts this number from the other, converting units if possible. - # - # {Literal} - # : See {Literal#minus}. - # - # @param other [Literal] The right-hand side of the operator - # @return [Literal] The result of the operation - # @raise [Sass::UnitConversionError] if `other` is a number with incompatible units - def minus(other) - if other.is_a? Number - operate(other, :-) - else - super - end - end - - # The SassScript unary `-` operation (e.g. `-!a`). - # - # @return [Number] The negative value of this number - def unary_minus - Number.new(-value, numerator_units, denominator_units) - end - - # The SassScript `*` operation. - # Its functionality depends on the type of its argument: - # - # {Number} - # : Multiplies the two numbers together, converting units appropriately. - # - # {Color} - # : Multiplies each of the RGB color channels by this number. - # - # @param other [Number, Color] The right-hand side of the operator - # @return [Number, Color] The result of the operation - # @raise [NoMethodError] if `other` is an invalid type - def times(other) - if other.is_a? Number - self.operate(other, :*) - elsif other.is_a? Color - other.times(self) - else - raise NoMethodError.new(nil, :times) - end - end - - # The SassScript `/` operation. - # Its functionality depends on the type of its argument: - # - # {Number} - # : Divides this number by the other, converting units appropriately. - # - # {Literal} - # : See {Literal#div}. - # - # @param other [Literal] The right-hand side of the operator - # @return [Literal] The result of the operation - def div(other) - if other.is_a? Number - operate(other, :/) - else - super - end - end - - # The SassScript `%` operation. - # - # @param other [Number] The right-hand side of the operator - # @return [Number] This number modulo the other - # @raise [NoMethodError] if `other` is an invalid type - # @raise [Sass::UnitConversionError] if `other` has any units - def mod(other) - if other.is_a?(Number) - unless other.unitless? - raise Sass::UnitConversionError.new("Cannot modulo by a number with units: #{other.inspect}.") - end - operate(other, :%) - else - raise NoMethodError.new(nil, :mod) - end - end - - # The SassScript `==` operation. - # - # @param other [Literal] The right-hand side of the operator - # @return [Boolean] Whether this number is equal to the other object - def eq(other) - return Sass::Script::Bool.new(false) unless other.is_a?(Sass::Script::Number) - this = self - begin - if unitless? - this = this.coerce(other.numerator_units, other.denominator_units) - else - other = other.coerce(numerator_units, denominator_units) - end - rescue Sass::UnitConversionError - return Sass::Script::Bool.new(false) - end - - Sass::Script::Bool.new(this.value == other.value) - end - - # The SassScript `>` operation. - # - # @param other [Number] The right-hand side of the operator - # @return [Boolean] Whether this number is greater than the other - # @raise [NoMethodError] if `other` is an invalid type - def gt(other) - raise NoMethodError.new(nil, :gt) unless other.is_a?(Number) - operate(other, :>) - end - - # The SassScript `>=` operation. - # - # @param other [Number] The right-hand side of the operator - # @return [Boolean] Whether this number is greater than or equal to the other - # @raise [NoMethodError] if `other` is an invalid type - def gte(other) - raise NoMethodError.new(nil, :gte) unless other.is_a?(Number) - operate(other, :>=) - end - - # The SassScript `<` operation. - # - # @param other [Number] The right-hand side of the operator - # @return [Boolean] Whether this number is less than the other - # @raise [NoMethodError] if `other` is an invalid type - def lt(other) - raise NoMethodError.new(nil, :lt) unless other.is_a?(Number) - operate(other, :<) - end - - # The SassScript `<=` operation. - # - # @param other [Number] The right-hand side of the operator - # @return [Boolean] Whether this number is less than or equal to the other - # @raise [NoMethodError] if `other` is an invalid type - def lte(other) - raise NoMethodError.new(nil, :lte) unless other.is_a?(Number) - operate(other, :<=) - end - - # @return [String] The CSS representation of this number - # @raise [Sass::SyntaxError] if this number has units that can't be used in CSS - # (e.g. `px*in`) - def to_s - raise Sass::SyntaxError.new("#{inspect} isn't a valid CSS value.") unless legal_units? - inspect - end - - # Returns a readable representation of this number. - # - # This representation is valid CSS (and valid SassScript) - # as long as there is only one unit. - # - # @return [String] The representation - def inspect - value = - if self.value.is_a?(Float) && (self.value.infinite? || self.value.nan?) - self.value - elsif int? - self.value.to_i - else - (self.value * PRECISION).round / PRECISION - end - "#{value}#{unit_str}" - end - - # @return [Fixnum] The integer value of the number - # @raise [Sass::SyntaxError] if the number isn't an integer - def to_i - super unless int? - return value - end - - # @return [Boolean] Whether or not this number is an integer. - def int? - value % 1 == 0.0 - end - - # @return [Boolean] Whether or not this number has no units. - def unitless? - numerator_units.empty? && denominator_units.empty? - end - - # @return [Boolean] Whether or not this number has units that can be represented in CSS - # (that is, zero or one \{#numerator\_units}). - def legal_units? - (numerator_units.empty? || numerator_units.size == 1) && denominator_units.empty? - end - - # Returns this number converted to other units. - # The conversion takes into account the relationship between e.g. mm and cm, - # as well as between e.g. in and cm. - # - # If this number has no units, it will simply return itself - # with the given units. - # - # An incompatible coercion, e.g. between px and cm, will raise an error. - # - # @param num_units [Array] The numerator units to coerce this number into. - # See {\#numerator\_units} - # @param den_units [Array] The denominator units to coerce this number into. - # See {\#denominator\_units} - # @return [Number] The number with the new units - # @raise [Sass::UnitConversionError] if the given units are incompatible with the number's - # current units - def coerce(num_units, den_units) - Number.new(if unitless? - self.value - else - self.value * coercion_factor(self.numerator_units, num_units) / - coercion_factor(self.denominator_units, den_units) - end, num_units, den_units) - end - - protected - - def operate(other, operation) - this = self - if [:+, :-, :<=, :<, :>, :>=].include?(operation) - if unitless? - this = this.coerce(other.numerator_units, other.denominator_units) - else - other = other.coerce(numerator_units, denominator_units) - end - end - # avoid integer division - value = (:/ == operation) ? this.value.to_f : this.value - result = value.send(operation, other.value) - - if result.is_a?(Numeric) - Number.new(result, *compute_units(this, other, operation)) - else # Boolean op - Bool.new(result) - end - end - - def coercion_factor(from_units, to_units) - # get a list of unmatched units - from_units, to_units = sans_common_units(from_units, to_units) - - if from_units.size != to_units.size || !convertable?(from_units | to_units) - raise Sass::UnitConversionError.new("Incompatible units: '#{from_units.join('*')}' and '#{to_units.join('*')}'.") - end - - from_units.zip(to_units).inject(1) {|m,p| m * conversion_factor(p[0], p[1]) } - end - - def compute_units(this, other, operation) - case operation - when :* - [this.numerator_units + other.numerator_units, this.denominator_units + other.denominator_units] - when :/ - [this.numerator_units + other.denominator_units, this.denominator_units + other.numerator_units] - else - [this.numerator_units, this.denominator_units] - end - end - - def unit_str - rv = numerator_units.join("*") - if denominator_units.any? - rv << "/" - rv << denominator_units.join("*") - end - rv - end - - def normalize! - return if unitless? - @numerator_units, @denominator_units = sans_common_units(numerator_units, denominator_units) - - @denominator_units.each_with_index do |d, i| - if convertable?(d) && (u = @numerator_units.detect(&method(:convertable?))) - @value /= conversion_factor(d, u) - @denominator_units.delete_at(i) - @numerator_units.delete_at(@numerator_units.index(u)) - end - end - end - - # A hash of unit names to their index in the conversion table - CONVERTABLE_UNITS = {"in" => 0, "cm" => 1, "pc" => 2, "mm" => 3, "pt" => 4} - CONVERSION_TABLE = [[ 1, 2.54, 6, 25.4, 72 ], # in - [ nil, 1, 2.36220473, 10, 28.3464567], # cm - [ nil, nil, 1, 4.23333333, 12 ], # pc - [ nil, nil, nil, 1, 2.83464567], # mm - [ nil, nil, nil, nil, 1 ]] # pt - - def conversion_factor(from_unit, to_unit) - res = CONVERSION_TABLE[CONVERTABLE_UNITS[from_unit]][CONVERTABLE_UNITS[to_unit]] - return 1.0 / conversion_factor(to_unit, from_unit) if res.nil? - res - end - - def convertable?(units) - Array(units).all?(&CONVERTABLE_UNITS.method(:include?)) - end - - def sans_common_units(units1, units2) - units2 = units2.dup - # Can't just use -, because we want px*px to coerce properly to px*mm - return units1.map do |u| - next u unless j = units2.index(u) - units2.delete_at(j) - nil - end.compact, units2 - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/operation.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/operation.rb deleted file mode 100644 index f8b2f59f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/operation.rb +++ /dev/null @@ -1,45 +0,0 @@ -require 'set' -require 'sass/script/string' -require 'sass/script/number' -require 'sass/script/color' -require 'sass/script/functions' -require 'sass/script/unary_operation' - -module Sass::Script - # A SassScript parse node representing a binary operation, - # such as `!a + !b` or `"foo" + 1`. - class Operation < Node - # @param operand1 [Script::Node] The parse-tree node - # for the right-hand side of the operator - # @param operand2 [Script::Node] The parse-tree node - # for the left-hand side of the operator - # @param operator [Symbol] The operator to perform. - # This should be one of the binary operator names in {Lexer::OPERATORS} - def initialize(operand1, operand2, operator) - @operand1 = operand1 - @operand2 = operand2 - @operator = operator - end - - # @return [String] A human-readable s-expression representation of the operation - def inspect - "(#{@operator.inspect} #{@operand1.inspect} #{@operand2.inspect})" - end - - # Evaluates the operation. - # - # @param environment [Sass::Environment] The environment in which to evaluate the SassScript - # @return [Literal] The SassScript object that is the value of the operation - # @raise [Sass::SyntaxError] if the operation is undefined for the operands - def perform(environment) - literal1 = @operand1.perform(environment) - literal2 = @operand2.perform(environment) - begin - literal1.send(@operator, literal2) - rescue NoMethodError => e - raise e unless e.name.to_s == @operator.to_s - raise Sass::SyntaxError.new("Undefined operation: \"#{literal1} #{@operator} #{literal2}\".") - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/parser.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/parser.rb deleted file mode 100644 index bb6b3dcf..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/parser.rb +++ /dev/null @@ -1,222 +0,0 @@ -require 'sass/script/lexer' - -module Sass - module Script - # The parser for SassScript. - # It parses a string of code into a tree of {Script::Node}s. - class Parser - # @param str [String, StringScanner] The source text to parse - # @param line [Fixnum] The line on which the SassScript appears. - # Used for error reporting - # @param offset [Fixnum] The number of characters in on which the SassScript appears. - # Used for error reporting - # @param filename [String] The name of the file in which the SassScript appears. - # Used for error reporting - def initialize(str, line, offset, filename = nil) - @filename = filename - @lexer = Lexer.new(str, line, offset, filename) - end - - # Parses a SassScript expression within an interpolated segment (`#{}`). - # This means that it stops when it comes across an unmatched `}`, - # which signals the end of an interpolated segment, - # it returns rather than throwing an error. - # - # @return [Script::Node] The root node of the parse tree - # @raise [Sass::SyntaxError] if the expression isn't valid SassScript - def parse_interpolated - expr = assert_expr :expr - assert_tok :end_interpolation - expr - end - - # Parses a SassScript expression. - # - # @return [Script::Node] The root node of the parse tree - # @raise [Sass::SyntaxError] if the expression isn't valid SassScript - def parse - expr = assert_expr :expr - assert_done - expr - end - - # Parses the argument list for a mixin include. - # - # @return [Array] The root nodes of the arguments. - # @raise [Sass::SyntaxError] if the argument list isn't valid SassScript - def parse_mixin_include_arglist - args = [] - - if try_tok(:lparen) - args = arglist || args - assert_tok(:rparen) - end - assert_done - - args - end - - # Parses the argument list for a mixin definition. - # - # @return [Array] The root nodes of the arguments. - # @raise [Sass::SyntaxError] if the argument list isn't valid SassScript - def parse_mixin_definition_arglist - args = [] - - if try_tok(:lparen) - args = defn_arglist(false) || args - assert_tok(:rparen) - end - assert_done - - args - end - - # Parses a SassScript expression. - # - # @overload parse(str, line, offset, filename = nil) - # @return [Script::Node] The root node of the parse tree - # @see Parser#initialize - # @see Parser#parse - def self.parse(*args) - new(*args).parse - end - - class << self - private - - # Defines a simple left-associative production. - # name is the name of the production, - # sub is the name of the production beneath it, - # and ops is a list of operators for this precedence level - def production(name, sub, *ops) - class_eval < e - raise e unless e.name.to_s == operator.to_s - raise Sass::SyntaxError.new("Undefined unary operation: \"#{@operator} #{literal}\".") - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/variable.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/variable.rb deleted file mode 100644 index 74c28fe0..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/script/variable.rb +++ /dev/null @@ -1,31 +0,0 @@ -module Sass - module Script - # A SassScript parse node representing a variable. - class Variable < Node - # The name of the variable. - # - # @return [String] - attr_reader :name - - # @param name [String] See \{#name} - def initialize(name) - @name = name - end - - # @return [String] A string representation of the variable - def inspect - "!#{name}" - end - - # Evaluates the variable. - # - # @param environment [Sass::Environment] The environment in which to evaluate the SassScript - # @return [Literal] The SassScript object that is the value of the variable - # @raise [Sass::SyntaxError] if the variable is undefined - def perform(environment) - (val = environment.var(name)) && (return val) - raise SyntaxError.new("Undefined variable: \"!#{name}\".") - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/comment_node.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/comment_node.rb deleted file mode 100644 index 6ec6ae57..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/comment_node.rb +++ /dev/null @@ -1,84 +0,0 @@ -require 'sass/tree/node' - -module Sass::Tree - # A static node representing a Sass comment (silent or loud). - # - # @see Sass::Tree - class CommentNode < Node - # The lines of text nested beneath the comment. - # - # @return [Array] - attr_accessor :lines - - # The text on the same line as the comment starter. - # - # @return [String] - attr_accessor :value - - # Whether or not the comment is silent (that is, doesn't output to CSS). - # - # @return [Boolean] - attr_accessor :silent - - # @param value [String] See \{#value} - # @param silent [Boolean] See \{#silent} - def initialize(value, silent) - @lines = [] - @value = value[2..-1].strip - @silent = silent - super() - end - - # Compares the contents of two comments. - # - # @param other [Object] The object to compare with - # @return [Boolean] Whether or not this node and the other object - # are the same - def ==(other) - self.class == other.class && value == other.value && silent == other.silent && lines == other.lines - end - - # Computes the CSS for the comment. - # - # Returns `nil` if this is a silent comment - # or the current style doesn't render comments. - # - # @overload to_s(tabs = 0) - # @param tabs [Fixnum] The level of indentation for the CSS - # @return [String, nil] The resulting CSS - # @see #invisible? - def to_s(tabs = 0, _ = nil) - return if invisible? - spaces = ' ' * (tabs - 1) - - content = (value.split("\n") + lines.map {|l| l.text}) - return spaces + "/* */" if content.empty? - content.map! {|l| (l.empty? ? "" : " ") + l} - content.first.gsub!(/^ /, '') - content.last.gsub!(%r{ ?\*/ *$}, '') - - spaces + "/* " + content.join(style == :compact ? '' : "\n#{spaces} *") + " */" - end - - # Returns `true` if this is a silent comment - # or the current style doesn't render comments. - # - # @return [Boolean] - def invisible? - style == :compressed || @silent - end - - protected - - # Removes this node from the tree if it's a silent comment. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [Tree::Node, Array] The resulting static nodes - # @see Sass::Tree - def _perform(environment) - return [] if @silent - self - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/debug_node.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/debug_node.rb deleted file mode 100644 index 0ca7e4ec..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/debug_node.rb +++ /dev/null @@ -1,30 +0,0 @@ -module Sass - module Tree - # A dynamic node representing a Sass `@debug` statement. - # - # @see Sass::Tree - class DebugNode < Node - # @param expr [Script::Node] The expression to print - def initialize(expr) - @expr = expr - super() - end - - protected - - # Prints the expression to STDERR. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - def _perform(environment) - res = @expr.perform(environment) - if filename - STDERR.puts "#{filename}:#{line} DEBUG: #{res}" - else - STDERR.puts "Line #{line} DEBUG: #{res}" - end - [] - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/directive_node.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/directive_node.rb deleted file mode 100644 index 0034d5d0..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/directive_node.rb +++ /dev/null @@ -1,68 +0,0 @@ -module Sass::Tree - # A static node representing an unproccessed Sass `@`-directive. - # Directives known to Sass, like `@for` and `@debug`, - # are handled by their own nodes; - # only CSS directives like `@media` and `@font-face` become {DirectiveNode}s. - # - # `@import` is a bit of a weird case; - # it becomes an {ImportNode}. - # - # @see Sass::Tree - class DirectiveNode < Node - # The text of the directive, `@` and all. - # - # @return [String] - attr_accessor :value - - # @param value [String] See \{#value} - def initialize(value) - @value = value - super() - end - - # Computes the CSS for the directive. - # - # @param tabs [Fixnum] The level of indentation for the CSS - # @return [String] The resulting CSS - def to_s(tabs) - if children.empty? - value + ";" - else - result = if style == :compressed - "#{value}{" - else - "#{' ' * (tabs - 1)}#{value} {" + (style == :compact ? ' ' : "\n") - end - was_prop = false - first = true - children.each do |child| - next if child.invisible? - if style == :compact - if child.is_a?(PropNode) - result << "#{child.to_s(first || was_prop ? 1 : tabs + 1)} " - else - if was_prop - result[-1] = "\n" - end - rendered = child.to_s(tabs + 1) - rendered.lstrip! if first - result << rendered - end - was_prop = child.is_a?(PropNode) - first = false - elsif style == :compressed - result << (was_prop ? ";#{child.to_s(1)}" : child.to_s(1)) - was_prop = child.is_a?(PropNode) - else - result << child.to_s(tabs + 1) + "\n" - end - end - result.rstrip + if style == :compressed - "}" - else - (style == :expanded ? "\n" : " ") + "}\n" - end - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/for_node.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/for_node.rb deleted file mode 100644 index 7d5a655e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/for_node.rb +++ /dev/null @@ -1,48 +0,0 @@ -require 'sass/tree/node' - -module Sass::Tree - # A dynamic node representing a Sass `@for` loop. - # - # @see Sass::Tree - class ForNode < Node - # @param var [String] The name of the loop variable - # @param from [Script::Node] The parse tree for the initial expression - # @param to [Script::Node] The parse tree for the final expression - # @param exclusive [Boolean] Whether to include `to` in the loop - # or stop just before - def initialize(var, from, to, exclusive) - @var = var - @from = from - @to = to - @exclusive = exclusive - super() - end - - protected - - # Runs the child nodes once for each time through the loop, - # varying the variable each time. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [Array] The resulting static nodes - # @see Sass::Tree - def _perform(environment) - from = @from.perform(environment) - to = @to.perform(environment) - from.assert_int! - to.assert_int! - - to = to.coerce(from.numerator_units, from.denominator_units) - range = Range.new(from.to_i, to.to_i, @exclusive) - - children = [] - environment = Sass::Environment.new(environment) - range.each do |i| - environment.set_local_var(@var, Sass::Script::Number.new(i, from.numerator_units, from.denominator_units)) - children += perform_children(environment) - end - children - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/if_node.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/if_node.rb deleted file mode 100644 index 2fee7ab8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/if_node.rb +++ /dev/null @@ -1,54 +0,0 @@ -require 'sass/tree/node' - -module Sass::Tree - # A dynamic node representing a Sass `@if` statement. - # - # {IfNode}s are a little odd, in that they also represent `@else` and `@else if`s. - # This is done as a linked list: - # each {IfNode} has a link (\{#else}) to the next {IfNode}. - # - # @see Sass::Tree - class IfNode < Node - # The next {IfNode} in the if-else list, or `nil`. - # - # @return [IfNode] - attr_accessor :else - - # @param expr [Script::Expr] The conditional expression. - # If this is nil, this is an `@else` node, not an `@else if` - def initialize(expr) - @expr = expr - @last_else = self - super() - end - - # Append an `@else` node to the end of the list. - # - # @param node [IfNode] The `@else` node to append - def add_else(node) - @last_else.else = node - @last_else = node - end - - def options=(options) - super - self.else.options = options if self.else - end - - protected - - # Runs the child nodes if the conditional expression is true; - # otherwise, tries the \{#else} nodes. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [Array] The resulting static nodes - # @see Sass::Tree - def _perform(environment) - environment = Sass::Environment.new(environment) - return perform_children(environment) if @expr.nil? || @expr.perform(environment).to_bool - return @else.perform(environment) if @else - [] - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/import_node.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/import_node.rb deleted file mode 100644 index 4ff03415..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/import_node.rb +++ /dev/null @@ -1,65 +0,0 @@ -module Sass - module Tree - # A static node that wraps the {Sass::Tree} for an `@import`ed file. - # It doesn't have a functional purpose other than to add the `@import`ed file - # to the backtrace if an error occurs. - class ImportNode < Node - # @param imported_filename [String] The name of the imported file - def initialize(imported_filename) - @imported_filename = imported_filename - super() - end - - # Computes the CSS for the imported file. - # - # @param args [Array] Ignored - def to_s(*args) - @to_s ||= (style == :compressed ? super().strip : super()) - rescue Sass::SyntaxError => e - e.add_backtrace_entry(@filename) - raise e - end - - def invisible?; to_s.empty?; end - - protected - - # Parses the imported file - # and runs the dynamic Sass for it. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - def perform!(environment) - return unless full_filename = import - self.children = Sass::Files.tree_for(full_filename, @options).children - self.children = perform_children(environment) - rescue Sass::SyntaxError => e - e.add_backtrace_entry(@filename) - raise e - end - - private - - def import_paths - paths = (@options[:load_paths] || []).dup - paths.unshift(File.dirname(@options[:filename])) if @options[:filename] - paths - end - - def import - begin - full_filename = Sass::Files.find_file_to_import(@imported_filename, import_paths) - rescue Exception => e - raise SyntaxError.new(e.message, self.line) - end - - if full_filename =~ /\.css$/ - @to_s = "@import url(#{full_filename});" - return false - end - - return full_filename - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/mixin_def_node.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/mixin_def_node.rb deleted file mode 100644 index 77d0a2a4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/mixin_def_node.rb +++ /dev/null @@ -1,29 +0,0 @@ -module Sass - module Tree - # A dynamic node representing a mixin definition. - # - # @see Sass::Tree - class MixinDefNode < Node - # @param name [String] The mixin name - # @param args [Array<(Script::Node, Script::Node)>] The arguments for the mixin. - # Each element is a tuple containing the variable for argument - # and the parse tree for the default value of the argument - def initialize(name, args) - @name = name - @args = args - super() - end - - protected - - # Loads the mixin into the environment. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - def _perform(environment) - environment.set_mixin(@name, Sass::Mixin.new(@name, @args, environment, children)) - [] - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/mixin_node.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/mixin_node.rb deleted file mode 100644 index fea53911..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/mixin_node.rb +++ /dev/null @@ -1,48 +0,0 @@ -require 'sass/tree/node' - -module Sass::Tree - # A dynamic node representing a mixin include. - # - # @see Sass::Tree - class MixinNode < Node - # @param name [String] The name of the mixin - # @param args [Array] The arguments to the mixin - def initialize(name, args) - @name = name - @args = args - super() - end - - protected - - # Runs the mixin. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [Array] The resulting static nodes - # @raise [Sass::SyntaxError] if there is no mixin with the given name - # @raise [Sass::SyntaxError] if an incorrect number of arguments was passed - # @see Sass::Tree - def _perform(environment) - raise Sass::SyntaxError.new("Undefined mixin '#{@name}'.", @line) unless mixin = environment.mixin(@name) - - raise Sass::SyntaxError.new(<] - attr_accessor :children - - # The line of the document on which this node appeared. - # - # @return [Fixnum] - attr_accessor :line - - # The name of the document on which this node appeared. - # - # @return [String] - attr_writer :filename - - # The options hash for the node. - # See {file:SASS_REFERENCE.md#sass_options the Sass options documentation}. - # - # @return [{Symbol => Object}] - attr_reader :options - - def initialize - @children = [] - end - - # Sets the options hash for the node and all its children. - # - # @param options [{Symbol => Object}] The options - # @see #options - def options=(options) - children.each {|c| c.options = options} - @options = options - end - - # The name of the document on which this node appeared. - # - # @return [String] - def filename - @filename || (@options && @options[:filename]) - end - - # Appends a child to the node. - # - # @param child [Tree::Node] The child node - # @raise [Sass::SyntaxError] if `child` is invalid - # @see #invalid_child? - def <<(child) - if msg = invalid_child?(child) - raise Sass::SyntaxError.new(msg, child.line) - end - @children << child - end - - # Return the last child node. - # - # We need this because {Tree::Node} duck types as an Array for {Sass::Engine}. - # - # @return [Tree::Node] The last child node - def last - children.last - end - - # Compares this node and another object (only other {Tree::Node}s will be equal). - # This does a structural comparison; - # if the contents of the nodes and all the child nodes are equivalent, - # then the nodes are as well. - # - # Only static nodes need to override this. - # - # @param other [Object] The object to compare with - # @return [Boolean] Whether or not this node and the other object - # are the same - # @see Sass::Tree - def ==(other) - self.class == other.class && other.children == children - end - - # Runs the dynamic Sass code *and* computes the CSS for the tree. - # - # @see #perform - # @see #to_s - def render - perform(Environment.new).to_s - end - - # True if \{#to\_s} will return `nil`; - # that is, if the node shouldn't be rendered. - # Should only be called in a static tree. - # - # @return [Boolean] - def invisible?; false; end - - # Computes the CSS corresponding to this Sass tree. - # - # Only static-node subclasses need to implement \{#to\_s}. - # - # This may return `nil`, but it will only do so if \{#invisible?} is true. - # - # @return [String, nil] The resulting CSS - # @raise [Sass::SyntaxError] if some element of the tree is invalid - # @see Sass::Tree - def to_s - result = String.new - children.each do |child| - if child.is_a? PropNode - message = "Properties aren't allowed at the root of a document." + - child.pseudo_class_selector_message - raise Sass::SyntaxError.new(message, child.line) - else - next if child.invisible? - child_str = child.to_s(1) - result << child_str + (style == :compressed ? '' : "\n") - end - end - result.rstrip! - return "" if result.empty? - return result + "\n" - rescue Sass::SyntaxError => e; e.add_metadata(filename, line) - end - - # Runs the dynamic Sass code: - # mixins, variables, control directives, and so forth. - # This doesn't modify this node or any of its children. - # - # \{#perform} shouldn't be overridden directly; - # if you want to return a new node (or list of nodes), - # override \{#\_perform}; - # if you want to destructively modify this node, - # override \{#perform!}. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [Tree::Node] The resulting tree of static nodes - # @raise [Sass::SyntaxError] if some element of the tree is invalid - # @see Sass::Tree - def perform(environment) - environment.options = @options if self.class == Tree::Node - _perform(environment) - rescue Sass::SyntaxError => e; e.add_metadata(filename, line) - end - - # The output style. See {file:SASS_REFERENCE.md#sass_options the Sass options documentation}. - # - # @return [Symbol] - def style - @options[:style] - end - - protected - - # Runs any dynamic Sass code in this particular node. - # This doesn't modify this node or any of its children. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [Tree::Node, Array] The resulting static nodes - # @see #perform - # @see Sass::Tree - def _perform(environment) - node = dup - node.perform!(environment) - node - end - - # Destructively runs dynamic Sass code in this particular node. - # This *does* modify this node, - # but will be run non-destructively by \{#\_perform\}. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @see #perform - def perform!(environment) - self.children = perform_children(Environment.new(environment)) - end - - # Non-destructively runs \{#perform} on all children of the current node. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [Array] The resulting static nodes - def perform_children(environment) - children.map {|c| c.perform(environment)}.flatten - end - - # Replaces SassScript in a chunk of text (via `#{}`) - # with the resulting value. - # - # @param text [String] The text to interpolate - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [String] The interpolated text - def interpolate(text, environment) - res = '' - rest = Haml::Shared.handle_interpolation text do |scan| - escapes = scan[2].size - res << scan.matched[0...-2 - escapes] - if escapes % 2 == 1 - res << "\\" * (escapes - 1) << '#{' - else - res << "\\" * [0, escapes - 1].max - res << Script::Parser.new(scan, line, scan.pos - scan.matched_size, filename). - parse_interpolated.perform(environment).to_s - end - end - res + rest - end - - # @see Haml::Shared.balance - # @raise [Sass::SyntaxError] if the brackets aren't balanced - def balance(*args) - res = Haml::Shared.balance(*args) - return res if res - raise Sass::SyntaxError.new("Unbalanced brackets.", line) - end - - # Returns an error message if the given child node is invalid, - # and false otherwise. - # - # By default, all child nodes are valid. - # This is expected to be overriden by subclasses - # for which some children are invalid. - # - # @param child [Tree::Node] A potential child node - # @return [Boolean, String] Whether or not the child node is valid, - # as well as the error message to display if it is invalid - def invalid_child?(child) - false - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/prop_node.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/prop_node.rb deleted file mode 100644 index a392b7b8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/prop_node.rb +++ /dev/null @@ -1,121 +0,0 @@ -module Sass::Tree - # A static node reprenting a CSS property. - # - # @see Sass::Tree - class PropNode < Node - # The name of the property. - # - # @return [String] - attr_accessor :name - - # The value of the property, - # either a plain string or a SassScript parse tree. - # - # @return [String, Script::Node] - attr_accessor :value - - # @param name [String] See \{#name} - # @param value [String] See \{#value} - # @param prop_syntax [Symbol] `:new` if this property uses `a: b`-style syntax, - # `:old` if it uses `:a b`-style syntax - def initialize(name, value, prop_syntax) - @name = name - @value = value - @prop_syntax = prop_syntax - super() - end - - # Compares the names and values of two properties. - # - # @param other [Object] The object to compare with - # @return [Boolean] Whether or not this node and the other object - # are the same - def ==(other) - self.class == other.class && name == other.name && value == other.value && super - end - - # Computes the CSS for the property. - # - # @param tabs [Fixnum] The level of indentation for the CSS - # @param parent_name [String] The name of the parent property (e.g. `text`) or nil - # @return [String] The resulting CSS - # @raise [Sass::SyntaxError] if the property uses invalid syntax - def to_s(tabs, parent_name = nil) - if @options[:property_syntax] == :old && @prop_syntax == :new - raise Sass::SyntaxError.new("Illegal property syntax: can't use new syntax when :property_syntax => :old is set.", @line) - elsif @options[:property_syntax] == :new && @prop_syntax == :old - raise Sass::SyntaxError.new("Illegal property syntax: can't use old syntax when :property_syntax => :new is set.", @line) - end - - if value[-1] == ?; - raise Sass::SyntaxError.new("Invalid property: #{declaration.dump} (no \";\" required at end-of-line).", @line) - end - real_name = name - real_name = "#{parent_name}-#{real_name}" if parent_name - - if value.empty? && children.empty? - message = "Invalid property: #{declaration.dump} (no value)." + - pseudo_class_selector_message - raise Sass::SyntaxError.new(message, @line) - end - - join_string = case style - when :compact; ' ' - when :compressed; '' - else "\n" - end - spaces = ' ' * (tabs - 1) - to_return = '' - if !value.empty? - to_return << "#{spaces}#{real_name}:#{style == :compressed ? '' : ' '}#{value};#{join_string}" - end - - children.each do |kid| - next if kid.invisible? - to_return << kid.to_s(tabs, real_name) << join_string - end - - (style == :compressed && parent_name) ? to_return : to_return[0...-1] - end - - # Returns a appropriate message indicating how to escape pseudo-class selectors. - # This only applies for old-style properties with no value, - # so returns the empty string if this is new-style. - # - # @return [String] The message - def pseudo_class_selector_message - return "" if @prop_syntax == :new || !value.empty? - "\nIf #{declaration.dump} should be a selector, use \"\\#{declaration}\" instead." - end - - protected - - # Runs any SassScript that may be embedded in the property. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - def perform!(environment) - @name = interpolate(@name, environment) - @value = @value.is_a?(String) ? interpolate(@value, environment) : @value.perform(environment).to_s - super - end - - # Returns an error message if the given child node is invalid, - # and false otherwise. - # - # {PropNode} only allows other {PropNode}s and {CommentNode}s as children. - # @param child [Tree::Node] A potential child node - # @return [String] An error message if the child is invalid, or nil otherwise - def invalid_child?(child) - if !child.is_a?(PropNode) && !child.is_a?(CommentNode) - "Illegal nesting: Only properties may be nested beneath properties." - end - end - - private - - def declaration - (@prop_syntax == :new ? "#{name}: #{value}" : ":#{name} #{value}").strip - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/rule_node.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/rule_node.rb deleted file mode 100644 index 825c7900..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/rule_node.rb +++ /dev/null @@ -1,223 +0,0 @@ -require 'pathname' - -module Sass::Tree - # A static node reprenting a CSS rule. - # - # @see Sass::Tree - class RuleNode < Node - # The character used to include the parent selector - PARENT = '&' - - # The CSS selectors for this rule. - # Each string is a selector line, and the lines are meant to be separated by commas. - # For example, - # - # foo, bar, baz, - # bip, bop, bup - # - # would be - # - # ["foo, bar, baz", - # "bip, bop, bup"] - # - # @return [Array] - attr_accessor :rules - - # The CSS selectors for this rule, - # parsed for commas and parent-references. - # It's only set once {Tree::Node#perform} has been called. - # - # It's an array of arrays of arrays. - # The first level of arrays represents distinct lines in the Sass file; - # the second level represents comma-separated selectors; - # the third represents structure within those selectors, - # currently only parent-refs (represented by `:parent`). - # For example, - # - # &.foo, bar, baz, - # bip, &.bop, bup - # - # would be - # - # [[[:parent, "foo"], ["bar"], ["baz"]], - # [["bip"], [:parent, "bop"], ["bup"]]] - # - # @return [Array>>] - attr_accessor :parsed_rules - - # @param rule [String] The first CSS rule. See \{#rules} - def initialize(rule) - @rules = [rule] - super() - end - - # Compares the contents of two rules. - # - # @param other [Object] The object to compare with - # @return [Boolean] Whether or not this node and the other object - # are the same - def ==(other) - self.class == other.class && rules == other.rules && super - end - - # Adds another {RuleNode}'s rules to this one's. - # - # @param node [RuleNode] The other node - def add_rules(node) - @rules += node.rules - end - - # @return [Boolean] Whether or not this rule is continued on the next line - def continued? - @rules.last[-1] == ?, - end - - # Computes the CSS for the rule. - # - # @param tabs [Fixnum] The level of indentation for the CSS - # @param super_rules [Array>] The rules for the parent node - # (see \{#rules}), or `nil` if there are no parents - # @return [String] The resulting CSS - # @raise [Sass::SyntaxError] if the rule has no parents but uses `&` - def to_s(tabs, super_rules = nil) - resolved_rules = resolve_parent_refs(super_rules) - - properties = [] - sub_rules = [] - - rule_separator = style == :compressed ? ',' : ', ' - line_separator = [:nested, :expanded].include?(style) ? ",\n" : rule_separator - rule_indent = ' ' * (tabs - 1) - per_rule_indent, total_indent = [:nested, :expanded].include?(style) ? [rule_indent, ''] : ['', rule_indent] - - total_rule = total_indent + resolved_rules.map do |line| - per_rule_indent + line.join(rule_separator) - end.join(line_separator) - - children.each do |child| - next if child.invisible? - if child.is_a? RuleNode - sub_rules << child - else - properties << child - end - end - - to_return = '' - if !properties.empty? - old_spaces = ' ' * (tabs - 1) - spaces = ' ' * tabs - if @options[:line_comments] && style != :compressed - to_return << "#{old_spaces}/* line #{line}" - - if filename - relative_filename = if @options[:css_filename] - begin - Pathname.new(filename).relative_path_from( - Pathname.new(File.dirname(@options[:css_filename]))).to_s - rescue ArgumentError - nil - end - end - relative_filename ||= filename - to_return << ", #{relative_filename}" - end - - to_return << " */\n" - end - - if style == :compact - properties = properties.map { |a| a.to_s(1) }.select{|a| a && a.length > 0}.join(' ') - to_return << "#{total_rule} { #{properties} }\n" - elsif style == :compressed - properties = properties.map { |a| a.to_s(1) }.select{|a| a && a.length > 0}.join(';') - to_return << "#{total_rule}{#{properties}}" - else - properties = properties.map { |a| a.to_s(tabs + 1) }.select{|a| a && a.length > 0}.join("\n") - end_props = (style == :expanded ? "\n" + old_spaces : ' ') - to_return << "#{total_rule} {\n#{properties}#{end_props}}\n" - end - end - - tabs += 1 unless properties.empty? || style != :nested - sub_rules.each do |sub| - to_return << sub.to_s(tabs, resolved_rules) - end - - to_return - end - - protected - - # Runs any SassScript that may be embedded in the rule, - # and parses the selectors for commas. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - def perform!(environment) - @parsed_rules = @rules.map {|r| parse_selector(interpolate(r, environment))} - super - end - - private - - def resolve_parent_refs(super_rules) - if super_rules.nil? - return @parsed_rules.map do |line| - line.map do |rule| - if rule.include?(:parent) - raise Sass::SyntaxError.new("Base-level rules cannot contain the parent-selector-referencing character '#{PARENT}'.", self.line) - end - - rule.join - end.compact - end - end - - new_rules = [] - super_rules.each do |super_line| - @parsed_rules.each do |line| - new_rules << [] - - super_line.each do |super_rule| - line.each do |rule| - rule = [:parent, " ", *rule] unless rule.include?(:parent) - - new_rules.last << rule.map do |segment| - next segment unless segment == :parent - super_rule - end.join - end - end - end - end - new_rules - end - - def parse_selector(text) - scanner = StringScanner.new(text) - rules = [[]] - - while scanner.rest? - rules.last << scanner.scan(/[^",&]*/) - case scanner.scan(/./) - when '&'; rules.last << :parent - when ',' - scanner.scan(/\s*/) - rules << [] if scanner.rest? - when '"' - rules.last << '"' << scanner.scan(/([^"\\]|\\.)*/) - # We don't want to enforce that strings are closed, - # but we do want to consume quotes or trailing backslashes. - rules.last << scanner.scan(/./) if scanner.rest? - end - end - - rules.map! do |l| - Haml::Util.merge_adjacent_strings(l).reject {|r| r.is_a?(String) && r.empty?} - end - - rules - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/variable_node.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/variable_node.rb deleted file mode 100644 index 1d03fac3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/variable_node.rb +++ /dev/null @@ -1,34 +0,0 @@ -module Sass - module Tree - # A dynamic node representing a variable definition. - # - # @see Sass::Tree - class VariableNode < Node - # @param name [String] The name of the variable - # @param expr [Script::Node] The parse tree for the initial variable value - # @param guarded [Boolean] Whether this is a guarded variable assignment (`||=`) - def initialize(name, expr, guarded) - @name = name - @expr = expr - @guarded = guarded - super() - end - - protected - - # Loads the new variable value into the environment. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - def _perform(environment) - if @guarded && environment.var(@name).nil? - environment.set_var(@name, @expr.perform(environment)) - elsif !@guarded - environment.set_var(@name, @expr.perform(environment)) - end - - [] - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/while_node.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/while_node.rb deleted file mode 100644 index ebc18cde..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/lib/sass/tree/while_node.rb +++ /dev/null @@ -1,31 +0,0 @@ -require 'sass/tree/node' - -module Sass::Tree - # A dynamic node representing a Sass `@while` loop. - # - # @see Sass::Tree - class WhileNode < Node - # @param expr [Script::Node] The parse tree for the continue expression - def initialize(expr) - @expr = expr - super() - end - - protected - - # Runs the child nodes until the continue expression becomes false. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [Array] The resulting static nodes - # @see Sass::Tree - def _perform(environment) - children = [] - new_environment = Sass::Environment.new(environment) - while @expr.perform(environment).to_bool - children += perform_children(new_environment) - end - children - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/rails/init.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/rails/init.rb deleted file mode 100644 index 13d5baa3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/rails/init.rb +++ /dev/null @@ -1 +0,0 @@ -Kernel.load File.join(File.dirname(__FILE__), '..', 'init.rb') diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/benchmark.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/benchmark.rb deleted file mode 100755 index de9ed36e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/benchmark.rb +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env ruby - -times = (ARGV.first || 1000).to_i - -if times == 0 # Invalid parameter - puts <=2.1.0 - base = ActionView::Base.new - base.finder.append_view_path(File.dirname(__FILE__)) - base -end - -def render(view, file) - view.render :file => file -end - -RBench.run(times) do - column :haml, :title => "Haml" - column :haml_ugly, :title => "Haml :ugly" - column :erb, :title => "ERB" - column :erubis, :title => "Erubis" - - template_name = 'standard' - directory = File.dirname(__FILE__) + '/haml' - haml_template = File.read("#{directory}/templates/#{template_name}.haml") - erb_template = File.read("#{directory}/rhtml/#{template_name}.rhtml") - markaby_template = File.read("#{directory}/markaby/#{template_name}.mab") - - report "Cached" do - obj = Object.new - - Haml::Engine.new(haml_template).def_method(obj, :haml) - Haml::Engine.new(haml_template, :ugly => true).def_method(obj, :haml_ugly) - Erubis::Eruby.new(erb_template).def_method(obj, :erubis) - obj.instance_eval("def erb; #{ERB.new(erb_template, nil, '-').src}; end") - - haml { obj.haml } - haml_ugly { obj.haml_ugly } - erb { obj.erb } - erubis { obj.erubis } - end - - report "ActionView" do - @base = view - - @base.unmemoize_all - Haml::Template.options[:ugly] = false - # To cache the template - render @base, 'haml/templates/standard' - render @base, 'haml/rhtml/standard' - - haml { render @base, 'haml/templates/standard' } - erb { render @base, 'haml/rhtml/standard' } - - Haml::Template.options[:ugly] = true - render @base, 'haml/templates/standard_ugly' - haml_ugly { render @base, 'haml/templates/standard_ugly' } - end - - report "ActionView with deep partials" do - @base = view - - @base.unmemoize_all - Haml::Template.options[:ugly] = false - # To cache the template - render @base, 'haml/templates/action_view' - render @base, 'haml/rhtml/action_view' - - haml { render @base, 'haml/templates/action_view' } - erb { render @base, 'haml/rhtml/action_view' } - - Haml::Template.options[:ugly] = true - render @base, 'haml/templates/action_view_ugly' - haml_ugly { render @base, 'haml/templates/action_view_ugly' } - end -end - -RBench.run(times) do - sass_template = File.read("#{File.dirname(__FILE__)}/sass/templates/complex.sass") - - report("Sass") { Sass::Engine.new(sass_template).render } -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/engine_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/engine_test.rb deleted file mode 100644 index a097845c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/engine_test.rb +++ /dev/null @@ -1,1251 +0,0 @@ -#!/usr/bin/env ruby -# -*- coding: utf-8 -*- -require File.dirname(__FILE__) + '/../test_helper' - -class EngineTest < Test::Unit::TestCase - # A map of erroneous Haml documents to the error messages they should produce. - # The error messages may be arrays; - # if so, the second element should be the line number that should be reported for the error. - # If this isn't provided, the tests will assume the line number should be the last line of the document. - EXCEPTION_MAP = { - "!!!\n a" => "Illegal nesting: nesting within a header command is illegal.", - "a\n b" => "Illegal nesting: nesting within plain text is illegal.", - "/ a\n b" => "Illegal nesting: nesting within a tag that already has content is illegal.", - "% a" => 'Invalid tag: "% a".', - "%p a\n b" => "Illegal nesting: content can't be both given on the same line as %p and nested within it.", - "%p=" => "There's no Ruby code for = to evaluate.", - "%p~" => "There's no Ruby code for ~ to evaluate.", - "~" => "There's no Ruby code for ~ to evaluate.", - "=" => "There's no Ruby code for = to evaluate.", - "%p/\n a" => "Illegal nesting: nesting within a self-closing tag is illegal.", - ":a\n b" => ['Filter "a" is not defined.', 1], - ":a= b" => 'Invalid filter name ":a= b".', - "." => "Illegal element: classes and ids must have values.", - ".#" => "Illegal element: classes and ids must have values.", - ".{} a" => "Illegal element: classes and ids must have values.", - ".() a" => "Illegal element: classes and ids must have values.", - ".= a" => "Illegal element: classes and ids must have values.", - "%p..a" => "Illegal element: classes and ids must have values.", - "%a/ b" => "Self-closing tags can't have content.", - "%p{:a => 'b',\n:c => 'd'}/ e" => ["Self-closing tags can't have content.", 2], - "%p{:a => 'b',\n:c => 'd'}=" => ["There's no Ruby code for = to evaluate.", 2], - "%p.{:a => 'b',\n:c => 'd'} e" => ["Illegal element: classes and ids must have values.", 1], - "%p{:a => 'b',\n:c => 'd',\n:e => 'f'}\n%p/ a" => ["Self-closing tags can't have content.", 4], - "%p{:a => 'b',\n:c => 'd',\n:e => 'f'}\n- raise 'foo'" => ["foo", 4], - "%p{:a => 'b',\n:c => raise('foo'),\n:e => 'f'}" => ["foo", 2], - "%p{:a => 'b',\n:c => 'd',\n:e => raise('foo')}" => ["foo", 3], - " %p foo" => "Indenting at the beginning of the document is illegal.", - " %p foo" => "Indenting at the beginning of the document is illegal.", - "- end" => "You don't need to use \"- end\" in Haml. Use indentation instead:\n- if foo?\n %strong Foo!\n- else\n Not foo.", - " \n\t\n %p foo" => ["Indenting at the beginning of the document is illegal.", 3], - "\n\n %p foo" => ["Indenting at the beginning of the document is illegal.", 3], - "%p\n foo\n foo" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 3], - "%p\n foo\n%p\n foo" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 4], - "%p\n\t\tfoo\n\tfoo" => ["Inconsistent indentation: 1 tab was used for indentation, but the rest of the document was indented using 2 tabs.", 3], - "%p\n foo\n foo" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 3], - "%p\n foo\n %p\n bar" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 4], - "%p\n :plain\n bar\n \t baz" => ['Inconsistent indentation: " \t " was used for indentation, but the rest of the document was indented using 2 spaces.', 4], - "%p\n foo\n%p\n bar" => ["The line was indented 2 levels deeper than the previous line.", 4], - "%p\n foo\n %p\n bar" => ["The line was indented 3 levels deeper than the previous line.", 4], - "%p\n \tfoo" => ["Indentation can't use both tabs and spaces.", 2], - "%p(" => "Invalid attribute list: \"(\".", - "%p(foo=\nbar)" => ["Invalid attribute list: \"(foo=\".", 1], - "%p(foo=)" => "Invalid attribute list: \"(foo=)\".", - "%p(foo 'bar')" => "Invalid attribute list: \"(foo 'bar')\".", - "%p(foo 'bar'\nbaz='bang')" => ["Invalid attribute list: \"(foo 'bar'\".", 1], - "%p(foo='bar'\nbaz 'bang'\nbip='bop')" => ["Invalid attribute list: \"(foo='bar' baz 'bang'\".", 2], - "%p{:foo => 'bar' :bar => 'baz'}" => :compile, - "%p{:foo => }" => :compile, - "%p{=> 'bar'}" => :compile, - "%p{:foo => 'bar}" => :compile, - "%p{'foo => 'bar'}" => :compile, - "%p{:foo => 'bar\"}" => :compile, - - # Regression tests - "- raise 'foo'\n\n\n\nbar" => ["foo", 1], - "= 'foo'\n-raise 'foo'" => ["foo", 2], - "\n\n\n- raise 'foo'" => ["foo", 4], - "%p foo |\n bar |\n baz |\nbop\n- raise 'foo'" => ["foo", 5], - "foo\n\n\n bar" => ["Illegal nesting: nesting within plain text is illegal.", 4], - "%p/\n\n bar" => ["Illegal nesting: nesting within a self-closing tag is illegal.", 3], - "%p foo\n\n bar" => ["Illegal nesting: content can't be both given on the same line as %p and nested within it.", 3], - "/ foo\n\n bar" => ["Illegal nesting: nesting within a tag that already has content is illegal.", 3], - "!!!\n\n bar" => ["Illegal nesting: nesting within a header command is illegal.", 3], - "foo\n:ruby\n 1\n 2\n 3\n- raise 'foo'" => ["foo", 6], - "= raise 'foo'\nfoo\nbar\nbaz\nbang" => ["foo", 1], - } - - User = Struct.new('User', :id) - - def render(text, options = {}, &block) - scope = options.delete(:scope) || Object.new - locals = options.delete(:locals) || {} - engine(text, options).to_html(scope, locals, &block) - end - - def engine(text, options = {}) - unless options[:filename] - # use caller method name as fake filename. useful for debugging - i = -1 - caller[i+=1] =~ /`(.+?)'/ until $1 and $1.index('test_') == 0 - options[:filename] = "(#{$1})" - end - Haml::Engine.new(text, options) - end - - def test_empty_render - assert_equal "", render("") - end - - def test_flexible_tabulation - assert_equal("

    \n foo\n

    \n\n bar\n \n baz\n \n\n", - render("%p\n foo\n%q\n bar\n %a\n baz")) - assert_equal("

    \n foo\n

    \n\n bar\n \n baz\n \n\n", - render("%p\n\tfoo\n%q\n\tbar\n\t%a\n\t\tbaz")) - assert_equal("

    \n \t \t bar\n baz\n

    \n", - render("%p\n :plain\n \t \t bar\n baz")) - end - - def test_empty_render_should_remain_empty - assert_equal('', render('')) - end - - def test_attributes_should_render_correctly - assert_equal("
    ", render(".atlantis{:style => 'ugly'}").chomp) - end - - def test_css_id_as_attribute_should_be_appended_with_underscore - assert_equal("
    ", render("#my_id{:id => '1'}").chomp) - assert_equal("
    ", render("#my_id{:id => 1}").chomp) - end - - def test_ruby_code_should_work_inside_attributes - author = 'hcatlin' - assert_equal("

    foo

    ", render("%p{:class => 1+2} foo").chomp) - end - - def test_dynamic_attributes_with_no_content - assert_equal(< - -

    -HTML -%p - %a{:href => "http://" + "haml-lang.com"} -HAML - end - - def test_nil_should_render_empty_tag - assert_equal("
    ", - render(".no_attributes{:nil => nil}").chomp) - end - - def test_strings_should_get_stripped_inside_tags - assert_equal("
    This should have no spaces in front of it
    ", - render(".stripped This should have no spaces in front of it").chomp) - end - - def test_one_liner_should_be_one_line - assert_equal("

    Hello

    ", render('%p Hello').chomp) - end - - def test_one_liner_with_newline_shouldnt_be_one_line - assert_equal("

    \n foo\n bar\n

    ", render('%p= "foo\nbar"').chomp) - end - - def test_multi_render - engine = engine("%strong Hi there!") - assert_equal("Hi there!\n", engine.to_html) - assert_equal("Hi there!\n", engine.to_html) - assert_equal("Hi there!\n", engine.to_html) - end - - def test_interpolation - assert_equal("

    Hello World

    \n", render('%p Hello #{who}', :locals => {:who => 'World'})) - assert_equal("

    \n Hello World\n

    \n", render("%p\n Hello \#{who}", :locals => {:who => 'World'})) - end - - def test_interpolation_in_the_middle_of_a_string - assert_equal("\"title 'Title'. \"\n", - render("\"title '\#{\"Title\"}'. \"")) - end - - def test_interpolation_at_the_beginning_of_a_line - assert_equal("

    2

    \n", render('%p #{1 + 1}')) - assert_equal("

    \n 2\n

    \n", render("%p\n \#{1 + 1}")) - end - - def test_escaped_interpolation - assert_equal("

    Foo & Bar & Baz

    \n", render('%p& Foo #{"&"} Bar & Baz')) - end - - def test_nil_tag_value_should_render_as_empty - assert_equal("

    \n", render("%p= nil")) - end - - def test_tag_with_failed_if_should_render_as_empty - assert_equal("

    \n", render("%p= 'Hello' if false")) - end - - def test_static_attributes_with_empty_attr - assert_equal("\n", render("%img{:src => '/foo.png', :alt => ''}")) - end - - def test_dynamic_attributes_with_empty_attr - assert_equal("\n", render("%img{:width => nil, :src => '/foo.png', :alt => String.new}")) - end - - def test_attribute_hash_with_newlines - assert_equal("

    foop

    \n", render("%p{:a => 'b',\n :c => 'd'} foop")) - assert_equal("

    \n foop\n

    \n", render("%p{:a => 'b',\n :c => 'd'}\n foop")) - assert_equal("

    \n", render("%p{:a => 'b',\n :c => 'd'}/")) - assert_equal("

    \n", render("%p{:a => 'b',\n :c => 'd',\n :e => 'f'}")) - end - - def test_attr_hashes_not_modified - hash = {:color => 'red'} - assert_equal(< {:hash => hash})) -
    -
    -
    -HTML -%div{hash} -.special{hash} -%div{hash} -HAML - assert_equal(hash, {:color => 'red'}) - end - - def test_end_of_file_multiline - assert_equal("

    0

    \n

    1

    \n

    2

    \n", render("- for i in (0...3)\n %p= |\n i |")) - end - - def test_cr_newline - assert_equal("

    foo

    \n

    bar

    \n

    baz

    \n

    boom

    \n", render("%p foo\r%p bar\r\n%p baz\n\r%p boom")) - end - - def test_textareas - assert_equal("\n", - render('%textarea= "Foo\n bar\n baz"')) - - assert_equal("
    Foo
      bar
       baz
    \n", - render('%pre= "Foo\n bar\n baz"')) - - assert_equal("\n", - render("%textarea #{'a' * 100}")) - - assert_equal("

    \n \n

    \n", render(<Foo bar baz -HTML -%pre - %code - :preserve - Foo - bar - baz -HAML - end - - def test_boolean_attributes - assert_equal("

    \n", - render("%p{:foo => 'bar', :bar => true, :baz => 'true'}", :format => :html4)) - assert_equal("

    \n", - render("%p{:foo => 'bar', :bar => true, :baz => 'true'}", :format => :xhtml)) - - assert_equal("

    \n", - render("%p{:foo => 'bar', :bar => false, :baz => 'false'}", :format => :html4)) - assert_equal("

    \n", - render("%p{:foo => 'bar', :bar => false, :baz => 'false'}", :format => :xhtml)) - end - - def test_both_whitespace_nukes_work_together - assert_equal(<Foo - Bar

    -RESULT -%p - %q><= "Foo\\nBar" -SOURCE - end - - def test_nil_option - assert_equal("

    \n", render('%p{:foo => "bar"}', :attr_wrapper => nil)) - end - - # Regression tests - - def test_whitespace_nuke_with_both_newlines - assert_equal("

    foo

    \n", render('%p<= "\nfoo\n"')) - assert_equal(< -

    foo

    -

    -HTML -%p - %p<= "\\nfoo\\n" -HAML - end - - def test_whitespace_nuke_with_tags_and_else - assert_equal(< - foo - -HTML -%a - %b< - - if false - = "foo" - - else - foo -HAML - - assert_equal(< - - foo - - -HTML -%a - %b - - if false - = "foo" - - else - foo -HAML - end - - def test_outer_whitespace_nuke_with_empty_script - assert_equal(< - foo

    -HTML -%p - foo - = " " - %a> -HAML - end - - def test_both_case_indentation_work_with_deeply_nested_code - result = < - other -

    $WY^2j}2CeEK`=(UsK)V+r@RVu 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 z zoOPo-IhYL(E9oS`?BK|Qf5p`XB6Mm82q!Cp-)aNV0K?4)0JHV8W)(U?c9vX?@H_X# zO3%WsIC0PqnApH!pi@XVKsYqKnr!6-TB$}lPbnxN>O5-;27&m*pU+yjJSz(_ryi9d zEbzL82K0VS&~QNLZaN0*yy2W=3Ss`oF<1_hOc8FM!}$H#J>6lV$c*$Zd~@sr?l4hw zM3LBGwD4PKfW5t2@{I6r*+K(kj|ZUSVQS>2Gq7IRFe)2^5C>Bln7@k@OtI2rj@Pnc zOE{9oXhj;bRMQ$*%O-&VW5*&}Qx1RLY(N=kpN#PNm?w^ghoJ)Zg9pjQ28>&g5J*DM zCc4-FFko(SMwIg)Hn8|_EjI)I^vu8=#`$d;S?xh;z%WJJ89D`BbxRFU$PS}2{yt8S zD-A>{!6>F`R#d;01}N@244Ps*iCbyFs#U6SQkI&Pt79f73Pjk8=$4mdqD{sUWHJNCLcEcoHvYt^GQhjng6GW`)p<6J0qY|` zCIoyvqexw*;ANraC|Xf(BO~Y%1Nhk7IE?%oV_I$#bTEahK3y!ADO&c!JX?^%TV5c+ zWlB5)N3d^o0VDt8h?B1Zb!b^zOqjW|*5iEf#3$ToJ!~=MwxVPka+7P5erGYCX zVCPAd1`>ggUbVWyk{2x;w6}+G%oxG`Ou%*SDyB9K(@Qf!0h%FH>UMcYbal%KumdNH znNb#pa!Gc?s9~N-jFot>yy}O`5vhqiOqfokSJpn|1 zhN&W!$y~ntB^WTlilJW8n7`ulS}iziX<+c)W$(iloFTi_U?<-ZCetc5y~V)dUJ)ij zw{#!p>AU3wFg@}Y!QKI*eAI8ZAESofoOppxG&*@i(5oM zk77iwARGhw9qu?;Y9B2{Fic^K2$-TeJAYs!Xj?;o5Fs*Ou!b?WE7}AGt{I*T{foW@ z1fnUNqNT>su;l{)YJe?5g|D#qhaWi{-Dp^nd+1v{AeyZib9b>#WEN$TfrtAoAZo!N zCw{3L(KZ(p%fOg!fUO6JW6AbKV?ryF@C-!|?uj?s5UZpCRhhkHJT|)dDbLBeaf2GP1=2EPX&R1RGo1QUMS$!Mg^f zn8v!L0;0vIsfP-dr*fqLP18g#>DY+Vk(nA>9>Cb}xd@XaPR-N-mOD5Q2tjWYMxyF&6LVxb#to^tEfAoe z1-jdl32+3{2e9@41tr|J&DhagARrnuSvN>yfl5C5$ph{S_Z;F(69}-!g>?s>PN+(m z!4+}>m1mes{k*ZG$E8q9!kybES{Bjd0qlf6u!U9- zzJ)Rm4h|CrU?>b5x>9X9%}R@02Hq5+=}OCKs{%|Z#AMVnR1vx;0816a=FuoxcTIq3 zS}5HTMR*7<2>@9p0S;iWAi-S`!1BF-8l#cKZb1Nw6bCt$IQ=2l1F+CkhkF8aV%>58 z0gOMq!H^^wA^+Z-pt(eelO1G>0bq8Gzs4WHU|lktU=4&C2GnnNDF6!b5cnP35Op4y z764}qJ}MUjyag896uTt$4pxWsct!nUX6L$T6Y1R(I!91oQkEg&2rmsuv1sxDe)QlE z5lIc)2plm)^QjldbU0stw?0yqE;2h$jE&zL-WvMZ$#(YxHG_Ts7QSEgWq%Uu%QC8ZD1G&Wm( zM~;N-J0aADxw+is;NT$Um!PfK-2X%#o2jIupMcL6JMub`wa8QuSUm)&$Ws-+X6(fzN@3$iw9YMO}#td&bn1Pl!|)f^`- z#l)V2l-B^KQjPC_n!*GqnV2-DX^18e9x#h&;y}ON`TmLdCX+*nrtUE_b=V#^P&wtG z#*FQMHpA!%%0s(U+FbvJfFp+k3OV1Y{;Ac?!wB;zAKXm;;Mr#_8TYuhiT;UX!z9O* znt+V+{FA(}D~}Z>-f8}0Ff9f6n254(mj4L%cR}0@`%IhUA5W}N3PM_u!`7896BAp> z0};yF6#u~<*b0tK&D9zHkz^PM1rQj&^ZQe$VJRH4ZLC5Ux}=OdSb+;P?Z)nJy+l*N zMa_qz$YWl6j0qfq>}F8KwnQ!g9d>FI36^G~^=G34F2xzqi7fX!sXt8N3C3Pi0)X`1 z1(#T{CQA>;N7$tPz{TMFhjWn#C^UfFvi^__2xnSw6_s0oCRL*rv)-HHklC7X$0i!n*hj0)jl0 zj?ior{t{T24(nX<#oC?*D*QHezai2x z<@I2s>Spc_i2ZPQWjj*Ztq}nRY7mHZJ83_TBqX*Z80N3K2X&Z0 z8CQ46cAc^xw;OtVvTc+}IAcH3kB23_G92Zbupc&Aiu{JHkh=N$wS(wpR;OcFjIDom zgYHqb6k>%!K20q^9fAm{8i%Q|?62(!PBDB&Z6vUX&x{>pf!WGK$eM4ie(E=a*(@e%Rn~Fu|Liwp z0`wX;SwAr_0|gp*v2Lz@kTiIxYNrTxQ}q*S2765%rRjONs3l|!MyyEbTiHbYKtvL( z9aa>#Y5Ie~4QIi&Hj2&C503{%pA2+VHcLN6x}>^+tqtSJcS&hLu+a+YfYr3J2)tp@ zN>+cDiV^g)aB4D00=2sYzS_*#!KhC~KW~RB-8M6J#Qos+$CHs6Z)$#$W7J8Yx)$!l z{1gN9=3sBA`;0L?Pr39=i%1zF{PqG-d1com%;ZDCFDy5+S zOh|8U^8El9oEafT$2-_M;b=mb<|h)Dn|dEh!~M#}V%;|LzF8Xh3-AdXI$I~4>>_~; zE(mwxebh6ealOcfVY#2|V9*jn+Q)k3I@>1N3B}iD>Xq4wAKJ{@k#R1w>M4&&xzCIc zyEPSgh|Eef#(nb;On`$RJJ{?=xWBesixI)NL0GD}N;td%CUTskiF3H`WWan-(xiKh zaer+qrdn$Fbo*I1;!%ymRa4%KZ-4Ef7W}0iSp96meaHk&{@sdi^XA*9f*oKhR1?(o zI^90YqnYRc7G?GyIwM4u?$gIN3Uhea8JD?qmE_~zP&AfMnyn$;?sY(EeqiwI5V zEQHMbSSqw!l!<)J$YP(FyVgwN0qq~|>PED0^J<|wgzc#Qy7TNqh+!H^lfY;5?1O`a z9ulhd3IlQQ#|_+j?OqAg#cB2ftToNTsi;xjS@wYeSU#s1*YRfA2jvSS0*Ef!5>B!o zit%~^?<2*wIrgbUpcrhJd}H4f`|viP0z(dqsyJuZ=Xl|RI_c)_1p9F25*xI%iw($i z!n2{2p};Ba&aXcpW=}Ss+32aAuhqDZ$4bX zQ=jQOL*fniL1HsiS?_M+Zf{Im>m6EepU|TVam)g**9D$JWzKC z?{_j<>Md1C7MJ=9BqVs#TPggopael)l*OG^ANjUo?D<2#i3!zLmnM zJ)`gqH3)1m?e$wo_v6XSlJ1=Pr2eKbi!s>WIrYapC~-%i;}3Y#za3eKNJl?pJU2n+4%GiBZnX)N1%i1 z-f*YWhu<9P6)b{U+D)fVfNz-a0eQ`Mr_%>8raL^DgJ2}?9+n!Q@3J9XrX6kdBeqwg zQ!-k~O{dQ>!kv{ZpNNdJ>FZTy?nL^?p9~0Bx)FKaiS((2C+Ewc?X7O*@Mgk@faDC7yovN- zF7L;Dy+)GW_H!el2%8BN-Q!NAPYn`9N|4VDHjOPE9xauPPp6YM8j=2CS-=5~hZ{me zyu*bl53BB+_`+r+`tuM>rg%xlqH&BkD{D5LT^Ll%;ka|?H!G?j@xla!JBNNThLdI_ z{*xia1y&jy_4u0+bsozsQO@M&dLh9*Xr0Htimq)Ht=YW zo@xcDmaSnZK38)v~{>(XW7d&Ef$iQgXa_$`Z*|2JpnjFyZ=Fl$y zA5+fkX*oP_=##^T{)gR^Wd7#RuSkhNbVuPX+uV{onk22pdQT|2&-5Q`0LBxG7%q;= zR;QdHAlr{adtlJVfZ@faRJ`J4ID6)Vx;M6evO~ zcLsebBaBHLWVaDtxs5|s0G}=;lQ2X(gMPOlBGFjVAnneeZ)_QW7)^`pfj}RLH^}Hv zWQ4lP3G`w2rq&QwD&OhzjVgq^A7L2y+?_w4;Kjin(J4E8pwB1v$^T(PHX{BlU&pls zp1^1%&|&5l%)`J5w4jO;=o6BLF^nan_htn8%RQzZ-Y%KR*z@O)8n-)HSK=f6PM;5U z5122~o|HRo`h0D+Etz~JEa2l#pI?ZE1vvCs$MH^|k4`L{T-x6_dGGZ3l`z+^xWarz zPM_a!0qZQXPsU)s_cB0f#-2ws6&2W&Zj0wCqFgcXn~Kr z(h<3dVwYy_F`GG`nzk7V0VO!@%=vg}xc8=jl+v9!-*TDjjSm=@-7AARv?4x<{C3HA z=KMkeNM{0oPAEb)bv{S}F7jv;!K$^X^I;anz$-w$&re__2vncKa>qO0%=so2W28`!l|3@&19ON}pi(Dy zXU;dNStOwj3pW{a{`>$zVEl!|wWvN&=c5@7_>Y)f9}nF5aCjE7eL60fzRjIa>~}HU`rrq59htOKLRkeEWdZq6rNeEN9%g z^P#sQL7O4pFr|yWF#&-nP%&*L*uI84YKV+y8}xV zt1F>wLt`68r9a-mP18-bfpYNwk*W0mfBEk+|Nnpbrw{MG`Tn<8e&h4}|3uQubN>H` zeAmD6|NkZa{rZ#to=C#};>f=^!rzAatCD_|TpT7U@ z2|IcU@A|v?^fPtXf1&>y!qe}+{P5N9zIp$T@4tD{DgN`P|NHCO>o30f`nx~;)Bp4C z_J982yYKk^Uwzd4{_5#B-~aFw^pc;x{=mmyfB)T&zx?+7hu?kw_fJ3j>ichh|K$(w z|L()r-@gC#5AVPH=I6K1jQ1`7ZnwYv-Pb=p{pRZ*e*B>4`|e5q@%?w-{LzN>-@p9f z+dusN-R+|zzsqL)-EY49@x!lfPp|$l;%5yXzW?x|<>?PUzW?FzzkmGWk00KD`*i#9 z58rx|-Z+Fr(39R<^0Li)OM2dNSbTQ2+`j$#yQh0QIWJu($3x4j?|!D`_Tz`Y|HW)x z2N@c{^`V7$yxiXBEnGeyzeQ$APjvhC{g>Z8{7SHgjn7*0i;;x+u+PR8_SpWXhxSa> zTzY)cYP`(HvzB@v+w3jHHMTGR>EXS}8`8BRK8)@4JOA7)Xl#$OU=DTe4=vC!Js%rP zF)zm!=GfHRzn^oT+dB{`Xdnb@iMhU`$cpN;xLWi#a5_-6K?A+KqaLP$DtNm6PPYE| zhC#xn@bvuOcYCHj-*Wry`|ls06zwzJXP(X11$+C4`#9FM9z?@id;9kNvsnn4+(LhA zZ~x%q@ZQiWd2?@1ul|MmUp_s_BY%e?czyiExn5p>^{X$x`R2#x|Mkls-+#4R^uPc3 zOPX)D)fe!kr(gWP`#*KT)_?wo{oi`?4ss8U@fB4!knw`LAxj`}()P`?VhBAK(A*$G@}x zpgi>Upa0t*zWePj{#SJ?m*d0NKYsZ7s~>;$^bfxdWrqKre)i=zzyIBr^jiM<>FvH`3-EGbF)BmieG~tM+U;oY1|MvaU3(X!KJog89cl%dx{*Vh`BfGb}*ys40&+L4! z&L8+NAFcS(DtUSSkog+vp#@pW65F#D<2ru))+f&&d)Q|!FHf5=ANJYUK5_o&!d0K` zRn>A|?Xe~0``A8v{xk@%_pbbBpFgB@>f_i*5j`JUwgAravAsHfN`99JBS0Q)E!qR$ zfiE-ex!IEYJ1dhNIoOHxC(j@1jmy*Xe}BgLgDU*9`MR>lzc_yYB;<47{YY=G&L8sn z<*mJauzO}cfSN~p|KMnbXXZF0-%TIFtRN3~!`6Dm&+4;kk@o=Q{{QUgsk6)&U z<=OdD>a+7_we-(y zcoW03ZTr%qe|enR*z!XQN%8C(p0}VX^Z2b#9H-G9_Hk@+KJ2rW{%UL=KTZqL%JO&| zLHe7YZN|+s1DlU*j^o{v5>Q}-2OT| zkMyo0dPJ^bwd8k(mIZuA!=E@#0gviHetQ1zt;Z=@SUt+K`MPpsJwHwnsgQ^D*4|zm zrxB>n+Yi7O$0=Ru#{Aaao?iWXcATbuyfaF$$6uW5~6 zMn2&2KeNXD@Sh<)J3o7U>xg2U~|A3spT zI#B=S*N-Ra|MKVE=KcZ)P#Qpxk8wYM;D3KKx}kmljYfFTBfoX@u0$M*aHG79qJ;V;h|K+neZ zI134G|L4a|vZ&x^TOND!1E{}4#sYbkIW~@)WNJeFsGn%L|Fa|G)d2)e*71?QJk#>} z0D_zP?RTbE2N1P*Z|&{X0fg}RPj>(r0qI+NdwTtEJRU%;7?srHn_TPVCpmzg-_SVN zo*h83x5tl<0(;sufBeG_@4tQj-3R@$xhcQ+8#9)l{UY!z|NiIyI`3;ge)*gC z|Ez~4)Vfrc9}g|hm)z@?&mES*s$26%{_;%A>)YA^fx<%zTr|1#Pqlphu;gLm@x0~5 zNM5%*j_uiP4f?zB_?IwUJs-*ImiyRVB;QQg?IDQwXC0Q%mc(aaUX)y)kK}dBV{d*~ zws*!k1mxUWVu4|&~k|M#)Oa)z{#oqv_+0F>AJ0;8 zxMh#A&(Z#3vCmfi^jTS+UDo3G^kEsZ@e{_+1V7tPo_qV}KYq|OhA;S`<+%~RZu$K2 zgHQQp-}zPU4P}G)&;k;MpqM(63wW|2}^F zMCu4X@|R~?UL8Ljo`s+4u78_m)$s#!%ukkkqq;u4`JjDz_3!!dlhZp>8h-fh zS}#A%UG4etQ~G#zS4+n;Xvp#GbfSd)`CaYV)h#?byC7tFcK(d)? zfwH*e|M33z@4wV-)XjTmpV0+*`q?~Vf6g_PZ@kN8{L{lKT07ayO~*g^!<^%v`r*Cw zDAj)b!*T&%{_tLy=}-Rf4ENei`{nO?ct&>+EtyxptD(O7-PggJ`{Gvz%!YUH@ocvZp++j*zI{Hu5ShhFZPw!8miKlY0k-M{$pf1anD_VO2d z&iQlyB2UVa{EIy&KlX{I{Fg4)_-FWcx&G(>(Da_L{>R_Ii}`f@Pl0afdHoN1b^liX z^B4K|@4or+w_m)Nzgzf1XUffL4ns3u8(=8`CXzH8Q)^sr5wbuRX*QyJidq6prQv2p zhSb-`VDj%ZK(9RivW+$(MdFYR-c0(6dTQcIjq2`vqg1{o)B7Q*2=eJR=9hJwLw7L4 zQ5bHMn+mB9D~E+hH}~6Qrh?-Tb)jftyX_X%BL!mwYZSsC=@!;A9h7NCgzaHQH)3?- zMNViy>7G{grxb_BHtDEgfEr!Bu7}E<%6BTXb$z)_`U8ucq=J-FKC)W-dMhQvC=w`Z zRuA*ZaKucc2kpalTdW5ZpTGcXI+88jOnI-GcuZ~`{m(FNlYT0pn>wtZ7ygsmWIG6O z8$rkf4KA&7x+>fysG!0haGNv-Li~S(WLusaY``5($4(AHG zy{`!0A8yL14H0j9gl4&1BiYu|jayoCMv|==s3ahOx#kQdAqb1*O_|p5dN&7?4oB2L za&tZz_5OOh2o)n;%akP(KSNWD@8687Ga=vt6Nssdqrp1AZCWstN(Ymco-+n784(C{ zlY%;(GgcraL!PHVHgcQX1*Y3n49ARs({1ueAp*-|MNs|7wJ~8b*4$vpfutJoyf}?M zvSJcYJXFW#Qza;X`=p9Rch2X_7+y1yFBvtuHCj{uf;1@&B-CaPfx=;u@g{|6^VQL1 zfz*kGgB%#940#>AtcX9O%r@!Fsjp7P%ne!BZBi4U76>VF(Q-18j<8w-dU(Nf3s5GS z!_tFyXpE=@MzY83zyuX~Dd;%s-Q0|Z6V7(nv?7%D8Mzl4A%ZT@TBHv1c$qpO$Qm=d zh&Z#wtQmt|35m{Rs(EG27R=Dd=Al&v`yZURCj9~> zFlF%!sz9_oMU){1L9|ahQiSk+KA5ciXoGY$oR+sq2!&*MrSQ2^VBKz$Z~#JacxQ)^ z!>8L~8_@f&tlZ517!UXtrmH=gm5pQ6ux?vpLG=+{;sm|N78FKj3NEY3%xt}~B@N2v zE5y6dAg?ucP=0Q!A;S$k2WC4f>^qcj-zLXqLew1DQW%1u6E!8)Wb~~tCBh1Ro4R;} zMH9>s18v>gWP5@i+!%YIw1U2L&KcSg=)=PP5j27|XYfLGlXjtkd@=|a`!#et+7>a= zsq2EkSk3VBbt5P+>Hrk-jQI~KW7(*Yk%wps%F%dq;Y3Q44jZ)(<7m~StJgVYMv8$H z0dft{nXUKLkXl3+)JV>pHWapUgmDXs?zc&!2}uUh9te1+3NO?oHf`L=*=*p5yG;_! zVG?!S@?(%AEfUQG$u0C^VPZ#kcrpX%J_m!QOg$mHI7tCQoZAmV3>6ZLDScO}@%W)% z1hv4D3xg_KbB^c%L@P_=BS&;gP%WtkEEhIjv@MVX&`u7~!4~uGCJEC~R)+szEvjl- zfE9gEs0ZdBcT;~rg;+b>&`CX+Uk9X+Xn?|g5Y-%9ae*`TFj8OsdJ_8TEJE8H2H9xM zi%~JNA09==%~9!OvK_$s1&hgJ}Lw5wsU}Uv>5` zvdnG*qKF9xJ0L<>^6bXC1}&u)Ce4#NGVAnbr9*z0=zY@G!1M~$B>I+-&L<@`+#ih} zfLMq0`U9E-|jIKmKxu}@fTq4wAIx3I_2`+S(INt-922Hu%z!GbL^8gu&3=o~(C(XDH zGN^aagFqZ1q)n-=FJilz!=M*1dB#b&7}>YQ;j@}2T_S$AiMYTUqgEHoMQxm8lNGE7 zoyx#ujOt|F2877#olXpRT!`#PH>M?xX35;4qS81HIPdkSE)EPsFc@ESlUR6D>5d&B z6tll*ljpok>R*S~QO!%kl$;ZDK(1&SF5Q$^gL7hXI8l>D=9;TSm`W`s_ZM-x5w;tA z!D&Es>|-(P{vgt+YM*v& z+XkwEu$!S_5H|4=iW>vfRTe+rm~1q1qBH&`+c@I0Veu}(&x*q~tb&be#!})mhHNn5~mil1Po+7m%X8{mvVxQW&cSyF#W1{XZ z>Vexb>S$Ef(Uj&G{$w48NsXIY4W`!=Ch0g@6DT5^N*uG*wj@GrMvtp=jlP}cbr5mY zos9GN-~$&Qg>oEGTvUtHyu61B_g%&jm);Mk79bTlP=sZyC zB#lE25eB2g^&vRjIGjyL#6$YY!26b_(RX#Jkwa{gx0Qm!bS)CZ_WZqbaGTs8B8qZ$ z)jTKlm;_;HB4d+NtED2|g2o6uQyh1FnlS8ta5KqO(__)@45yH%q5-{=PRi{~Qugd_rretH4J^#Qc8H*;`hm1?#Lg~cuuyB=0MdZtdWaeonyK=!ZD$tK2w zh82k~v=B5IE)@(?f%}%cTyzY>qE5lVw_y#4e?q{>Og#jd;W5r8p3N$Cwz@zMMpo8mL8OV~xK>*J**Hp1pO7V5oiS(je~6 z$%8zSCMqtqI~f6!1=Te^Wt`5Fenk6%8DK}4C%Q~9+G%`3SS0i3t|*HmZBm*hyBQa` zCEIX-gxch6=*Ru1gFA>x*#?9qq6@VU1=5sjlhAn7JO$utAT5KxsB4q{db&@+$ZOHB z)>_btkBil^*daOfRbT;&(Px!i4FVGQ=bGBrB~&LS1n|VbBJ(|2#-oWS6C&6D9!+r5b|pkiD2>$xov5y2DHNrVbJe?KP{s4@BuxFRJm`Zcjsi@+>j zAlcN!x==8k<1AH_B=l5E?vCL_2-%EtUCnb3)>#bWC-DLql$xhkY!t+39O}rV@9fub zsC2am?d7T6muqdD_Nc7tSJhs9-B1aL26INPCMMsUaPnvGiKk0b@b_$uEU=2$}KvdI5aVhxFdhAzn{KS#vkdRjjLVrV_9*^3R^WA zsAy@bd0ko~gKuLBlc{+taY77_q*dUC6_?utsd|7Fll_mqW3g4jOR7Id!mHYzQZ`LK z+T*a&SEC$`(``aXmD>mUs`9hdy!0B;$+UQvN&m(fEQ-k#-#GluVU9KI%>#mYSOB#j zseR2WJT|x@Fem8J5M8IGna~ReFuC$-UW|osJ0l;3C(-O@r>HmV)4{Hd@cgN{&XW#- zE-rGWWT<98afp@Z-W}mI=Ao9$L>RwvV?kX2b6PHw?uBfK?6%Y9UFR-Sv(p>lz`&+8 zT_!v+M z#uwdZg3+`WyAdK_7+t7kE?_7{_4*m)^oNIOE@xw`wx6973j?+cqj0=eLf2CVz~T=H zY3pbUcDYS(JHtG#k&|$U%WEpQ?T7(Yh+;K%mkEx@j^`1Lhgr>eIYJ1R5I&>;mv)<0 zR7@TjnbMUSgmVb*~GZFBYjJ}f6Z&- z{*246nP3-kzX^%VNw<$&oZ4Mr6$J(&IT3nfwYwGTe1&*e|8K(Cj?-^~%N5BVj=ajB zPq)b|7twY(`7zwmvBDGZ?z0sUFe++xRZ8Tw?UE+bOUq}<+!2NeG9I&iD_X!ZAF*HL z&Gf;XScpIonQ6!*>*kxL-xP)^TySSWt1?Zu$@D-8>JARnq~>{P*9(M={2&HQmd(AU z!2OPE9lJ5V>0T4#IZ*PHt*Q4Jb7GxoQ`C+#xop+GDMg_ytH#=i&W}Es)0$bth=4%i zOY=NmW!GG_vP}rhuIiwpn+RSfc}B{{uQ(Q`Bcx%QQwlz>@HDZObvGiJvK=Sbvbm11 zSQzJ=)`UQ4F+l=u>?!!X!X1kIgK>_h=ub;9&mw>_$>aiehuz}I?r^JCdvvGIay1nP zjAox#u7&WeLg(N3z*&+LClQ+M6=r^YFejFat2T3Zhh?{Fo-@n7$-@@ANvF6bw$2Ds zf{s`(zy0dUP5aDZxGvzv)p%bZP~hW^*=5;g0HARfl*tq=Oz>x}k%B&JxeZ8}iFgmRE3 z;VJZ3bv-T;lPHL5Im>|5?lk@eOOM2_5M0s+uA9YLMmw8)2w&I%iVl0lFhL}ll?$VLK zyCWSDjIci=NSfMm8%eIAT#g*CwmE&^0u_*qP#n*-=+I=|Mehb`a!52)OMkn@kljvs z<>c4+?V0`v!yZGfL_j1fO=k*?tO8s0Xw`1^X|sDnO3_gFQV8`87Tw_`@jqk>w~^eD+%>W%ir+}~i_Z(J`EYhwkXjy$>e zwaXz^#Rn_kHel^%-u1FEF6Z>d)DGleiYZv7&FGCxaYo~hRmg*REDEigiU-DCub!4m zrKO@pR&6KMJ5_sJtA>jgIa3Z+HM`CZUK!XGUMN=QRNjz`7v^2=cn0v`Oy1otJiG}s z5@ki3$QwN{)N4#?vGIw^I3lh=BC6@jYMu@=nEf2=O%q2+W3$)eSIHy_vzKrAF1>=V ztL{O_(Y2}%mK({Thx0;QRo0SS0?+a!D5G=Q@b?}w9| zbD{P*%>)p+5q5a$i<+xPcyYU;30H)ncK0~Ico0e8!T|u|So*6O;RFCD@*4{6F4HOV zF`*edxNbRk%)BF}fQp?cz|)-L@o7(CpeP9598OD_)Ea zj~qNn&@Jy2>>cWXw}kM(Z79Z6$av-h<2E9%ge30J^ST6{sod#8U?>VT&ox}M*Je&< ztufhjo(|SAkyiwW^fm+N6yLVkP)K{gg)av*yW$GU)h1BPlBC_`ggA21h=RLUM?s#+ zJ*fV{&X_BwQ$+1f(67-{P&fpRwYu{X!K)-D*(eB>RlSC|ARze2Q*XmyFmX%%fwIEQ zA`+u^r==&dq_=`APJCLQxb8@_J+0eDb<3`|5^*C4FzLV~CYxt~N;_{J2m*k3g5f_; zPYYxR9t&6u_G-2J1h)=+Z0L~Sr}Tl#WtlWtCSOQCUmwgzW>KILK>CPVY~B)htjR&X z8w=Jua&LZDZjIW6^udxiJkWYB=2dXL%qzp&DP@6}`<0htvSx&xg;Zpfe+iH?@nRgCMA zw}H6%t$183LOgA%klYy5?oL-R9Ri}@gEV!Cd%vy*z9DZF0O9UdA$_qx23P5B#0;>Fi9=g2KNdn?j zvn)d@c6ToBcYy{QfVpsWHUBHd1?&Oy!&c;(s}-d7bzy{g0AM^S?acG?yRf(n#;2NUrrOtX?uIu8!^T9YeLXYr4Djhl z5gv@R`#A`b+XO%7jP~)y787A{CuQ>6J;pV#VSjB zSSM*?>4QFQdJ(Q}*8zGK#)+({3~YzF67UF=f!X%x$fck3RD_&>o{-nkC+nIVQK;70 zJJ7)6H&&w1vOT8vr=5gnm>U?E(F0HdI+cUJ_gS6^4ZB!tk1wuo2LKb`C$LizN2T0v z6p1W2Q69AW%7R%D|4u*#iO3JxQMun3AyOHdH|{$6V2f93hXGPS46JIbWkm)C35jSJ z_=9E-gtUowOeoXR?pjwUadK)Ct!5K;Z97eTC&5VK7i?!)4%h%`M&$w!3P9`r%%F*( zW3ddk9<8oRvPt<8G((n{FSuocR)peI^W2#ommUUJR#^`jgos|ZXAKk8Fxq~S?bCW0 z?t+1OtgLgBGm~vBAB>Z>F=@!eu$^xojJL*SE=Pm7P^sOW`(P=d3<5#TeoxjJg~P5b zPdmY_ET~oB<}6P(v(K@ZgBvUZ6GSS60lJJE<{?hq6YVFc1_2uhai zgIOT}Zz?mj`e0#Tlj*S@Y{JZf$GZ@(?*QTTg5Up zEHeN~!@aJ!3l`)IbbCwMny{C?{cJ*`8M$}VR`tQUS!AxCfHKxvdu)y{qoZShROV4o^9|b)^y`Y3D#5jq_2>escux$#JC3j!KW| zegz9~M^o~XO{;lDG&|i=EEY^|wR$R%6bv14Yid-dl$8gt6Nj)004h3K^Q$*Yq8vCF zs?~M*UKxN2Ian(npd(k5miZvfDYsKwAiwOv5EEzy1OQ@J54dqIy zV;;C8`x~g4S-wakWDaCgcEwPa?}e5mDv*U6rG9utyBf*(g!Qm(YNXTmBAiyu6$MAD z#aFlUHM(in69KREv*o09Y67G~&9d>qoL~@Pa4=9%1n9B4$}mx?Y7$u$@Zzm5G#0TA zxj4h>r!;IlgtE;qxO9&qjIX{#F4`<-xG@@B8`O)M@%31 zM^gN zKP9AwhH=K^m+wW%5|_|fc&MSe@0F@mCuAT+vIBjv&nKOURJHU$w5q!E6(N|(u;k0M z13$gI>};h~kup$O{jIJfV z_#i;a>8N8|AGkuiDaS_k_=F!)SKN#Ku^3<_)Njf4O7HqqxsMHS()5_?^1X;@A{uTW zBHs1%y&@c4V|ZQ77LIM(#yLTQ25oHHMq{UOlQy<(+qRuFww;{V?mgfAx96EX*bDE% zo@b3-FRlq79NDwhjY^fe)PSIb`&QR&xgyn?9TbjI)m^I(+__i{ocwwNy6v0^Tk6FA z;8@XPt?&`{rr?Cj`>uL=;$E$&a4)7>l>+@~1Wt=?Ot9)cASwwt8qSc4)vi6-fvE0APNTm*CMoHc8FI6%n1k+(DdO zhP_-1vyi=|VyAX_o( z(9$*aW_xjC5kzRSB2OxTei1RTaE0q%Qr2aj@HNP(Qkf${PU?0~{IDul48nJVWX~!! zT=MTx(fmz+8IPh1y+!M#*j2aV-#AFx;&xr%-kS6+1E)E?no*JU!KGjXsxGbLAuCPL zy|wAmu&}58)}k-r@DxTspZsK=uex+~N}_+wMu9JBGgQ#b35qi^#-f#5Y=}(6E!eE8 zKwK5|WuyFHoGuKu4SiR-cw)5I@SG1#K1q4&R`>zjCk5YtxJ2?&PEbR*i%NSbZ;*+Nq(_!M zGQx=FTjDsvk~50fGr>!P?-~!RglIX}YpM9t5`Ov_KUOjmNd8!ks%v?Th*6~e)=8&2 zCrw7y_T*zT^2mm4?88(p%mezzN5onO+h4Jz6f`bF>1J1HMmqJjzS$X9tyA$X&n8P8n-Uh3Y(vR$mTdn z6eVeE_eON_PrZRqLu=lN-Mv)A6+Wl~@fv!sH4-%BE}tpRXA0k1k#sp=(+2bxzWw`H zi{cq`5eV1Yrb7oeY`tYRIISr>%>{VJ7o-anv@8-@2)s3@bDa9dL#w*L(%!1URjiBI zkE}oEi0V(RCa)A#rRs%%nS3`dTI;_clR%)%(H|2QL`iLDW!iLw1rk5rTw| zE>j&TbPg(B-!L&EY15(QSYX&4l_*-H#)bW)Z7{|@HpLN_2c_|H03Y2c+;vp*I}58S zv;CpTK*!%p1)D3FjN*nI{hGrhA-H5Ja-fp3LcrT?y?=s)|6Lds^O~>sk%W-WgiPUm zucvo1U$_?D8iMUoNe1rJFZ#3evX39ky|C>Klj~4JG}eZ7WShw56dHB>E7cnlBSu#n_&A6liuMpoN~%egEE6W5#4Ivx&5Xbkw5~;e5!VC3I`h@~+VZ5dl6E zs{d@bcn*mUZCHzFhKA`|TODG~k$(cufb8I=P~{gb;$XK=5R8o~|r1Y=owk6Lv;4lO* zO2MWVmI)Zi^wvmso6@BFB>38#YzaGtobreQ#r^|N6I^`t!Q@Hm9nlVzIcH_1KRjuH zzE^IFlo>&&GBuu|E?sl%E_X6`4I-9L?rOz|ju2dOQ(?srIBKdr%BVD}6bbNmVA(kB z?D&mFx{%O}JHcdT*2pQ;Hc$tG05})n=|XE_Yq3tWo%MzL9R!?Aad4TMkFzS_g~dR0 zYQD)Z;QjF8g*%Pb@Aa)P3Yv2M&Nw+QijF?7G8#}|t$xtr_k0FRfYgPCOJR*RQBb=B zt3;U!xzG)z^QUc*Qf4tk=c%vaiMP^^^jy{OrV@=e?DpsHNZ2E^njbYRE;|?`Q`Xzd zuvogme@lhbUZ-hw4o7pnv`gC7G;<5SB!BNyRA6cX?l3lGaxD^e_qaV(5P6aa?Qr0f zdcG>q*5@dRm(h<%UiPtvg>e+wFY47lki8=bFhZOex71v&u>Ot@HiG7uMt{R9ww3!P z&8=6mCRjfpYx)GKI!ic%BtzUwqEr#BKpX>qU7lnM&2bRA0B_?ReABCufNS)0sJ%Pu zOb-v0pR_5MiYxrA$y_kMnh(kPH~g97nCsXh@H?%iPl6B^S+`%n_ng1{D38V`K2!zP zhS+lTqE%{zoTG=D+Kc3)K~ikpcLCeKRwr4SWjNaIAT~wy4m#T+A(GTPLawl~4g47) za?Y1{{37IGcgU>JQLXw~TFb=GRY#ydTD{d#h0*Pc37r&vK5JyqD%TnN>UjB@W1@!( zjdvc#IjBHaIYPHJfX6gW@9}sAz`0e~!h5RTR<=d8M$$y3}epmIS za{3oNWQixblupzo(d`jE;Eqt$N?gh#mlOSq^48j^V!^iC(0C90b3a=8_bm|(vgvPB zx|n}b2lQHSxaEa53H|kV+zHyP_JKq6EeLu+1`jE(-ytWH_5A9%GcfnCJ5ZJojM^nI z`apY6El15H2^GwqRKFz@$@@*l&N+YH+E@2F1QGxAr7ez=?Thwa`k^>kHUDh)%@&P- zwo_COl_#lWT#vZM>R`C}34>Tqitt!3H&L%`FSoy@5V15^lDr}p1`sOeNIIq8@)SgK z27&3ATO=D-Y>`H@gO}OKvq#P^bl&nECGt*+{AC*uK1$>st#doP5=FvN#Wg5Y42~5z z#R9RM`L8Sq;kNF9JjAoN&1_;D`@h>P$n3>`gpi(-Bw>hew2##Hj=OFwME@IvH(+qo zik1&`H-zM0>kA||Q9J*mrTf3bpW@|tZKL}a zGxG|Rd-`#i^o|3JT%Fuh_orA1=EulnjR#7D=nIA%v&^~bW!B~;6q=(Nm-hHgN1N8F zu6ic7rU_FtXBmGs)p;#O+{G5~t8t=Hb>~{C?VBc`e|~xR;akhrf)UVn%85Apy5giW zM;DA%qb3zSfNs&>Wg9wd$VD>3g%Q2ixL95N_d)o6ox&{f8drFy51wp4AURTzVQ=Y@ zJNXWl7FXS8M-{O=GD(ic$>iC2(x~NLQwn)PGgr%-<+wtabdYnv)Qr@V07yib zlPpHK)a_Cdb*?wKpBUpseCfB^J#axiAjf{+_j}qUk75BkU;-_~iByB6Zz@|}XY2I3 zbx9b5kysivAgEAL11`yfGgX6$kZJpxS)Ar!ENUs0J%rzAaRoa}ApYyY$U54oD^g=X zrHvv{g~$!XZ@*r);lXmxO-BE`vY60_SBac)dw+J;kP2J z=gc~qg+DQK+tHC3Md4K&?zBT)aGsQ@>^+cNOX54@vy}VdkE5x90@{UwQ_>b1qVZ$B zGNHw0$BUMtPBo^jG23H#hF3=T@h3=w97A4`gNBMw792JnL0MwbP9=X35f5`kc30?3 z0gTjQtK)6w$jaQe8z50IBrHCkt)3*McnRVzW3_#Z^fvNg@r&|iCn<(=Uf z^~Zbr^0U{l!_Bm%O!gPiS&TFR@eYb1MPKdcZT<4egW8d=19_u?ln&VhAW06U-IZ z3*v9fgUttxkVf_FtUQwtxJUVY9()_9vaQv;qIM+BLYt`6eDGy-j2tfzuf278YPV){ z1@5ei@Y$|Z;nQT$4^g`%O*2Vy+}A6|YEuwPAE>P!eJ_Yb{aiY0u1OH#8q|~;j{>MgZ+i~j&1|rG=;rcKeZT(yCZ_Y_@lrA z1{j{-x4T791e;|flCv0PdR`99iXW;jeopt{c*hbs4E${EZPfmhJh<<L%RlN*3*YH~F%>rs@BebO1qHHPHNbk?N}sr<+GztZT1lH zdt5Pa&W>-=$OvvvPKw)ocFdk^XS(%V5mTwif$92xg7mFsK;Vm^GbND>DQ6G6WS6G?JsM zS-dQ7*jv^)*|#SZl7u&eEQ&Bxj*P9&0(jnE&-}7LbdrudfxEe#Qk%;{RZn`BBX!A%N%lQ=fLkk`+3A z;(^;=kjsCS*~(|`+dg{`p9So!@uEo^pYcwZRnl>bGY4GupV5Ffy{>CM)6StL^Y{_! z&2c-BYRpF+4`j@y&PqFZZ+QT@PE92y@6l56>h99+c&bL(>q{58MF&?I-XYJZVUI~p zZ2nhz)%ghj-xa}*r^;)IUm;h&gbw3bJ6Vk1Zxp7}jO$cDwC(&Li1>SO-@yin3ko!Y z&x55<(Zti?vu9?2W`vtW*df@b|8-ZeFGV+9uP^|Klpu2Ib1D`bFuq(4K#{O+L1Z6Ry4DD*jC%+tUMIQz!Ur7=>4LWc@fg2 z#9*yyXYqD(o(UFV)suF7j0aM9GF`=9iOw4nltfA$Mf(Ta{} z-F^ZIiI#*R=f}GAay1qX%iE*X5ER9e2FK+&ublQ+HVlWup3R?~>-Lah1#D@LR z7IhOFacgi*=#)-ps-*fa**k$PI!b@OEX;d5mbKJJ{~U#tyBst;e)%cPb-dQ;)sP<9 z3Xx-(Q?RW;*VCJW`a;CkW#f(iKw^WQHHIisHBt2aYqXafE^~XSnY26rsJ}V}n(L$j z@syU43q{Lz*8W-YsF)Cf)QBsF33Io?!I7E*7-U{z!BCGO98UvZE*|0T)L z(5Q}=BrizfX%{US+hrxs3BeXd+AM8GukXbchocNaDnGiKCn>*SJn%B4btaj<#HNUYu;B-&7V?L$xWHC& zRrzTRBB9BxtLeEmWq*{_p9L0X>v=%3@OdDPzz-eEeEqpzvP9aHYqoR3@2_BC+H}3x z5N5M_OC+uI@*<$PS}N=v{N6hUoGwndLz;B#{xaLrc&8y!;nOYw)zK7s5RI?-zQZ*5WPUDdnix-!xcyH@ly&yqOe z`=MCAGNqV_9;dPRIXOQ8ZeE*&zTuiEYSu83>r|Y8%9HmXT=>rZi!y>X={?u>dj|6` za<~IjNUo%V!8CeriYh^#ReQ6A6Ac#b16BBQieLQXm{VpyCQGHe?s4dPe;^mBgu?6l zo@xqY*EJEL8ve?qg7oUoi+IX;*Yo*wG?#RP;)1)rFBIJPoR!g@joqh60oJJ`nRRh%?!w&GA_x9H!!iafeyQDzNH@6>OJ|Ik{}U);FtFm|jG8QPBVcLO8;roj0q11oY@Vr_(*S6q)Nn zEEb{OZ|~aEJsNW|6)X6u(5@MMso#L8v<}9~S`@j2d2Dwk$yKc=jLHSJN^aC2UG?G8 zfS{%Z1u?{XmVFT)f2Q=>2HD^w@rSBJS^jv&+SiXybMF270TfLIan-zl(JCAXJtwxs z08k~|I9+5~;PXq-a`?3GJt`jQ&w2(ooHTg4o z;6=emPE-!B`~bchMUY!d2r`l1;~bD~Y9T;&Y)`u{9~yWvivQH4rSFL+n+I2|?%0@u zM}gHXTZ(tf#8i$H`Vc`lyQ066?2@=f1wQwoHhNlzlF~=}6=TLSDZ+*EqVOuiqMFq- z>o}7zS3Cxpn5(|{w0k7oUr>x0-%z@};zoo|v5H`)-jCHSN3SEL0uxg?pn(X9%N;E7dn}+9-untn@J;IaCK!K` zKK@*n;*J^UB!~=)i8q8=yx}&bARp;zHLDy8J@Vb{S{3%=Cgi)X4HwtJc?a_s6pg6b zg;Ir{h^o)`xY)r{Z7Vul!4kY|>VCwVy&;O92}wt$rEip!9Ar1L>rz`-3oDYjty>4{ zH6k8pDV5n!zZVDnC3>)GCBN97>L!F5&FiXOz*65i+J1=CX zLK(^tLU=q?IM8NHK5oF}76^Oq5-dM9s^}#UYY!n&Mg#kismthgx{~wQ!*#iin_B9J zx@Xl2i;LtQitaj?`$vW#eSi%dB_r%|;y%-8NcfORIr{j1k68-?Uq+5!>zujf?V?lc z^AWg#?s3-d+%%%#1OFP%n1AS${zy}5<*SY$+b=?Mz0L#l1#7JHk#O|>pd1YPHrLlh3+D@$9N#pnuY&RRYnKh! ziFFxPl|d1bTBHD2#f?8$HVIEiDa|1FR{PFF_+Z@CCMQPl9aIeyllyA~cd)Q7_)AU^ zbkYtsBcW-GGT-$)KJNLg#%Ruu&+=+9MflEWfP&MB9XY^e^HJDRfwn|G^wD0PZF5Fy z=(Xf(3weeEH0BKPL!%H#>ejw2vWUv12JO<>ei5SwL;Mk{j;vkRGl5xMV{xDpsNtJx z!lIW#gb*4PG^Ea$jp=EfuZ=p%m^CKu4El^MO~9#c#9}y*t3fMRdj`#@AfU zw#MIzF=FoPKj(VYgotQpH936Ggt992aSq{dHZZhPneT2azemxlz_;vt2C~zmhi{TMmMeEeLc$7adJJCo#e;=CT7;%5~w;azm$?#XdW`aR+o#ktIA$j1p1SfU`de z5Bn-zGO=B7_{oxD=w~stNTZ4xQ=>Y9S3$#&ESa7MHn_~f%|rqg5O=AVdE}bQjr zlgq@E-C!oR@*uxG^F~rUrkmyh7NXu7YR59#Jv(ru)ZklitA(m{bp;>(E#pxXsn7bZ zhI#YkX2&jD8vN!wfOM*Eq2Re_F9BG$Ml|GaM^j0fX4J8$G5ZbwZ@ zDu}w&4*8Jp`HDXxq7SO}f)rkjg8qc*JH;%Mg zd}v#Mh+RqPW-;M;SMT6ml4q-3351JhjUN(U3^%muCzr5I7Mq1}E@fID70ep5F$(ax z*Ih9?3(@RnD;g=x#E&QMf7A#n#Vua)u@V%=@{Ye?jgp`4XpxNDLHQ}Y6ndTt@_ZM^ z>zFe}NbRGu>9MLWVCk7PFBNHTDih~sTcc&7rWT=TBEfm-fFD_2Q z0Thh3T>>@5sw?CX%-!$JkD7H^AkQg=YMSx`>Uc~4=w`mKsR4K3%8JWfzrE+yR74~- z$ViIb!4GfBdVWra~fAh4)+Kw~oV=$Yz#t(I@BT)H!wIuK_tD|^_}3Z7izG^S&+ zesK7}ath#6q9^-SN_SV{t<|Y!1&eEWpI)Q6(ap^qVU9Aqi-q z=7)ZOiYGkL_JUZitr$ibmG3L`RO-l>REcIkhHc^iuv0}pGY>%vh7~pG4lYoK=Q*bI zBwcD_!%M4L{=;QT&gs@EtAvtBGv7saZU>3*-<3$_<`vRAw`7X^>Ydt z7ugs-bcUy4-IF=2eq~B9mAIeKY56UOEP}+7{4g=sw ze)mYh0CB0WiV7Jr`h9#~Ncd!xZNB-NYj(8z7`D6;h8H(VJNkWSBfkODh@6DTiSGG? z_rz)3s7V)2W!-CT)!$v2ax9If1F=9<%HrfBCm+9HV=7msev@?58Ad&qP;9-xj7SXJ zLgO=N12W&+pi#Y_Se20V622xws0uM+a2*Loz_W$F>o)OSmojX~g08A*U1l}fkLk;w zNK@$jl8)aEjlw4Dm$D#;)d0>{H7OqE|JeZ;g3RYNbMKSWxv&JvDc8xL2%OtYz{j}* zv$TpktoZDjMCGra@Av;{JGur|eN`;{u`Ded*b+W}^4-E680z$C!|`JqtwsH2JjiQW zsoo(|!c}DcP$xFALuJf&rY$YM+K#vEiM1d%f>mPZ;rJ?kbhZj4z&iXrx9l{V1K?QA z`Uq!;9b8)?9EO8%D@au?PA5^*!4$I?nOcUAORvKehp>vi*I-i;7%A=! zqBVwK=Roqhp~AB)nLzJ%4%cng&|hYJrFK(-)h~L)ze~jpEwkO z&5(1~I|A;6iip>Lz*~nhWVZ%9?FBA^QnDeVlwc~+tgsqe5u`RA=Eg2ZVJnXLq(_c` zWnM=4+ooltq(?xJr*gWNd*7F|ijpo27GWRUH1HXBt+Sovwdr{%EuPUWS~x2=N7?Lq zqO-YCpIDy`j(C9gW@a!)Q@k`WFlX;vs{MSiVoZ6?mN4nXPp>t{HLXI^uPa`Im%mSc z_^dG)zE46ms(rk?3Si$I(Z5(>dDNUxvzgS+;_lg5DAd?Q3M<`dlQn9hd81ikK@dh< znh6B#p+R%RbsZEQNDjTm14)(&?baW4HNnr$Ak4Eji1#+cty~S4p{r3{qUQ*JOMW> zN=+|-o>$XunK0i3Y(&z2`h$>pxcaD*u6v5AP`MgZ1vAa_}u7Y~Cr zo4z{|7Gn*O;WzwSQUxA*XCSDmk(<@`F*Y*$%c26Mem(2SOMAlEokrOmBoK<~w1u#+ z(BtGxgIPzg?La*_BUm>zW&Zr!kQ0X+R==L~LX=B!cz^G0_6RomO|!^@ap=Jb1BAB< zJ=ofI8y&13UH*ZCMg81vj(65-RpzdOUpU*6ZIbZLL^hx8-{RTc?zPMs3=lQ=0sr_W z0MX(a#92|Ieks+JT&FT_L49(h8}*hw24hfJCk}0L6muT61d@9C zuIzf;thD~%syR-3vX~~-bRxM+gr)u(%OAHm0JjYRDkgEymmzVu4!8CLy(hEjADst8 zINIma{_3V1#HC~UI(*`Ipuo^1Dnvn}<%zC-vl_I8u{9&gnwfzg@prAR4J<##+J?>u zF3y%*2dY=38taa2R! zf60O$MYJydRSKY5UNC?yx)@ds?I3yMlb4K}2z~^)LXU^#3IVG2m?HFXc?I`U@1z_@ z^y(6rBC0A(*a;)#%jrJ6%yBifE0242B4)ZCOGiX@4Lq3ZSKBwWvkZtZx~G$9O27`* z{xOGeXGIM!i0;qM|q6@Ba!991~g#WWBZuE!#gzWkp*37rLAX+W+ z2D_`eN&5pKg%s{0x`@rN+LU{IOY-6|6G2Qm{0V|g=kk=_jbMeW6vWG^0fYxf)aS`_ zcW@Z%cf_Oh6%2c^mY1Q~dro+rD(Ex?CnVhET#Dg!1a-MqJ_;}=0py%S8|Hs%SEXyw z-=FS5+19TdEq>|kXiAT4ewo`JHCZl0v^gReVIk{&G%;`JfI>lQUbE?p^wPvX8=f~7 ztaUH z{nvXQhkrPG%0m_5mQ^E^wh+2NppV?l2mwi@+7*ro2SXagj$>35mdP8{$?zD;Hxv7M$hFED8<=Yb~6U z*Q&bkcHVUf>(|v&F|qJ|;!JGn5rt1KA@`uy2=FB@M!t87WxUVgO~fLD}UA(uw zxzK-SdYme!DUL!{KU$17`gfR~=A{~b%bsm0U(mtv35QnAZYOwGPL_}6*B`F*94kqX z)NgK$g(HOfof!oV74X|e@YFK^{a0}$4>zZ~^uHn|LD?AJdK#%=wJS?{whXFD0ro@K zMh=U_F&x@|f2lJ~WW0ZuG|p^V4aMuaszp4Ng^oy(o!}j}u>3^c66s1YdY;}_C2WYH zodvrmtMM`p3GT}9E%lxl*kY`!TK(0nPydmju`j~wa-KSF_VOH`%1hclgHt<;EKJVb zvZpbFqU?)5x_&)&TBVJD*Q9u6%L+q;e8dsLf)A5b#dWssu=Hd5tpVF`q|Bf&|3wii zF0F?PYf}wiVM@ju zGIQ~t?mmL15*&EYwO#WL@7cTT3)M>p*qG<^yJh*Y)~{y0&ApBzBf2>;)UWD)Cb?!G zGojxmL_8LNcqgm{pB`lLPtW({EFB_^wJFIz6=02$`Z^O`gVeoFU0_V9Mc!R2gZNw+FFau2<^6bp_PW(J8U|-8dDp_zyXIS__kPr%&e@KJz`vplw_GE3 zESR=0SZQE@+oIblsM!_(eWc%?R~F%>+1#|U_@eLZUzqrb>u-!J_~Y6!NH#?Mo5R#F ztJTFgFUlT#sZ&dW(nbc>VlxjZlf_~|l~0bv*UUpm2!3YL_3?+dxjz+Q{_kL}~kOhASk zk{FE|LMUDgS`Jy5t$R^VZU^rH!v>ZMuz6qrf-PHi_gLb30yL&LplB!{i4Eo>c z>DVEFt1?^bT5Zbc*%sz{uM-lIIv=|;g$!HSqKa!wpon-l*9;)YThWV=wV@xi7$|{iIJV;+wfOnS+!3wZG5GMGZCbN5jcbAF z2oU}Gm$i=~V)L|y2U)2c*=?T^+KwiObZ(+Z;d`{LI~XCgI`Yx%xi03#=FI?Sq*TI+DZ**$<1tE0uKwMzMfl$8#oK56$a9l1!8NHdpBVV~>EhDy zezc~6kN5vU6jHqq@gm8E)zzpW_R&G1{Km{pA!Si@-$E;FCG<1 zHK~Jv;?N@Z!PoAcs=#B6X|m0bN~ihAAgQFF->E^i zbf3Z*I$dO02Quw=;jR=K2iW!|n{<+4Il7_$iQ=$-R8**==z)<64E21E|Zsf;Ss8epFOWJH0au6Ma&`1Wi@0e4xur&$vD7MX@Sl_5zBs-rW0;Ln* zZA%X>3ZlSeK{z?Z%ZtX^{XUl@sGLS&_Fz-j1#iiz)&YwX8c4GM-l(+3zk*DWWG`%M zK`af&@)MYGUe9bv@_(Pbf9N5xZqu7Lz7nC}D9hF&HaV~oFj|P>Sw*TFZl|EM*q&y| z5Nd=kDoFP(vf^-?wM_{-%Qzp;r+j~dmnlMS24b6Rs*B)|FNJa{L(vRE8)q4OZP}v7 znf{NH%H?yCGsjCJ%foj@CEb2$1#kSt<2Qi_H3qPcs2@ZBJvk6eGV;hqQprM9e`*8> zFK^LMY}{&6Revr8SnW580h0*0l3=7p;YDw$#4jFQhkLbPw9$j6U_p(E7erjSmLU)} zd2DB__AM09(s1wD5lzLfB4i&Tma$W&=H);GJLCk=qLq_y}Xo$X316ypsO_3fU$ zHBdVyWO3t3{$*3pQnoX2g@=s$B#=fP!`77nOqSwvOVUbNkB1)wQL?!`BnnmJsR?eV zF(JyWZ}lMfVJgVw>mOR6jJcNNTyJ$S`yW^k8x8gY}ldKWlfy?j~0B7AX%#&x4=~%Ji0&fAlYvY za*VVAOQy!#uAcm`c6dJov6c!IzLY!_Lr0zOv&?kIu^~zooK){_ZYfGqjp~p@+COE` zI_M6@MP&x9@}Lb@%qY?7*7x2>fu}^0sGpiYdx{qGp%D@>I3qyN(RFfu-w!~jcc5HZ z7Ec_3#xxUzk?3Z|)4j208KK5Bnxgh|$=%j>*tg}gd;=m^O9ZSWe2#IXIqVHE9!2b& z3D-Kvr2c&}#5CGw)2i5d1ekr3@ekxJ=+lU?!DfO(O{5y_HfH1Hb>*~c4Hq@VH2dCf zlw)&B1)1W)rJT+dGM%F}BI&D7r8m}G%o^!NMm?GUfq27F>t2%_I$xwqYnb*uGuF0&Ven#f;9od5*G}+&#Q!F&g2Yk^7{g0wA zd5_cx!w|-?KX*o)<=c{H_Y= z?cR0#P8Mpk{(+|{ z^^M%jp>KfEZsl4r)jZd$%8(flnBh2;2VXL9ESoQB0_qUz$>0;@q;fCu)Zg`EefNzF zb4p93PJf^4qCL8eys1vQ8!xS3xLBFF9UiHvgxIk3cKi07JWl=79lmnsqZIXjz(`fY z+}$p*5i%122|&>$(lXIC%5a*6Do{SsioB;U@A$B&ranv?-4EEbmpxg3 z6|;;G2-3Pj;Z}+fw=@b{B$5WBlzJ=&`?PeHf?OyDXco9CkZ?)qs)V2rCIs58X{MHN zb<$$*nZfxX_|A1DK>q8bOGM%m+mmBuP&r4+5VEvfQ@4@$k)Cqt zDv=EFHr&mmU*Y-++tv?OG~0cUg7<#^_1xthu7OA;r+kUb?0l7M@uqR~wq&Spf#LJ0 ztpe396=G|pGWwTZmy3ZIv%I?@?cWtYVb-(eLifKuyxs7^ESqmLM7ahv>#hb(_t3U_ zv98Etx~%$LDM>ehg#e@#e~o`b)xxA8SzrBv`SMyG`{JkoUR`g%kF=2wE<;QzGNaC` znmoZ?XR6%t`{zd=sVEfSil$)VhUQjJrY5h`1uVQZnA>#-n~@`=W~N|R^LmeX-6eJ? z#&H+>4pwUq5KQO5Z$CtR>j$?m55o4_%AfRzG*ZyCV5_7Z6Xk+K>P@_RGmE#d44gn& zJ`HKey_Vs^SxWJ@(RoHr@KM+Q3(Ar)BbV*v`rdEI%N`aXrr&_&G?jvQWAmB@wml7G zpHv%-C$`)Y4CpFQ)i1+6-GE_%1xB#WZt=YjBZvK3I>=^q!ZKh@X`FBr<6C^oyHo&o z0x|Q^BEPzzJ(4B+PyE`yi`JHo#i=M6yGH}U$eJ#iVL49mJTFSKHQipWXw?hZ>;lUg z1MU=i>O~Omu^b5roew`H_GblLuU19SeBHql8mJY(j%Sh;z!Or_?4<*7_l|GV9(>0< zyf-+SGX4o_sZwJu`?O*7JT{ZYh`0KR8W}qD_i6>|l~`mK+2dbWq;JG@Z?Ju@ev9?D z=?*edu`Bp?AdN{a3jQW{s5k2X1s)en>nyaox%qkxq#!RER55T*GvxYhkJ&vhX_yj- zy>^T-S+?Mx)F4(87%dXozGZ}fseD(uCNjMBVeWoh)}#uvwkL1@eJYO`6Kg;E4`oG| z+Wf4jMK@R$w)?tGyiifZOCNZ(LfZIbWnyFgTY9+f+gJ|`Sa}W()hc=H&+MVI%g2}& z(uD!Af65n`lCYrcaDP-(tT}jfk=y4m&3Iw1oX^l4>)T`An1Z?ATD;h0ZiW8WA`+^^ zMiq87M#ISPFaSnFGPa39i#$jd=Y6Xzu-O^ctO}AYu|dU=57A-$kL8g9u0a=!?HFH3 zLDHj3UX^Ol@?*hebBRd$_1O(D-GeK0vI17r3(HB~0q#-TnGEdG@O&06W(oeJk3)|X zFST0|{>>1xw(qO#NpskdV_175|KX?$Mh^$O!cRqPlXdj8L$oI+Y?JL1 za0ajU|EBD9afQ<~QlA5pD3k)M;PSVDh61qb6JQ5LfGK%#aW{#a&VQ6}1y+l>foe+9 zqPx1~XAI*ip!adv?pmE{pHZ%T=gcgWFNE=O)=p6TDp5c7;dwbWC_DX2A46WW16WeP zWyZDFRBQ~I2nZsC-eyrzst+?QYx{-4MrU%h$%dx&-()Y~@^@v5|Ll@nGBN9rh?6*C zYcUTr$iuYze9hwtyMhOc`Yrt_p)_Y7<0i4C4f+tpYoLp!OA9F>^2= z@ipw!XDH;&1EFC+y;AMZbvO(1`LCCTUyh3eBIk}!e*@xZY-~L5A6#j`%_o*9nK4$` zpSI-ayKX*at{>IfdpANb%REqUs2`|9Hz*I@31HF0tVN>y=4SNOJra#_Y2WZqAPz7+ zoYEbsZk}UOdcTCFbR$6QtFJDW+=w-ctL;XUZr%q^kS6*s*0edniElSrHam8KTFCyV zXp)lMEYy}kE8+k772~U7G`Yi}VqlPPM16DX_XN8$D^@ArHrQ%+V;8WrNOs-Yb0U_M zXs#deID<;AUvDYqM)IV{VFtpn9OY}kiJ11~qT@#i(qq;7Kuu(SD|C=RGlAaIsOn&eVyT|Um&xht*DU=)UC^*i;qVLt2=U& zZ_eSqk(_(I0U^|G!B$>G%6SEBa^l2m^;c^Ca$A88{sPXm#?E3{FN0X0_2}IYTbJyr zKv=pZ%aAt{ZS%VSSyFG>thgdoRaF(U|1eb`Id;5DJ6SgoP8aNqu)mE>goC4p9?mIU zFyEDA$tP(sJs*u;!oZm8Z4oE3eMLz9B^CnFiA(pMPkntw?by`sOe^k(FZ&U4Qdnk!5KE_aQW$b6Q50+OLLgit z+JrBC>a-y$>9j&3ER*Y{2}I^IH(zS`r2QYRQ{)0^3ykjF;E%=pA8vtV;MzTaKBeDc zdJ1cgr%GU#bOO0|X5NinNZk8LDsZqhpH^0K*@iKhOqVniTcC}r*}xAE}lgf#5vt!>Gz*~B&%cEsSgNRHEaB}#PrPk zd}Lq{y8+q{fyIS2Dpp}kqzb;5Xh;Ee`bcSB&DW4)i{+1iRaGOSBNf}&?@G)Jkaj+L zW#a!hy6U(nn=blN(%mQ^-65SKOE=OiDcvF6T_Pjda8J@cjk+ zcG-Pq=H5H^o^$R@NZh%@YwNDdpAQFhMms=JWc(DT+=u5VU?wL^Vk&;cPa%h+vQof; z2$a#qHgZwFWUi~tARKD_8pv~k50`_U)PPIskgE3B4g9s`O=PTcHd&7I!eFGwV_FoZ z;V=lFIa_XPw}Vk;=t|bN(hqtct#-%o=YRVT{hfLJk5^W{iYQ^`_zpw%BY|6vqEvuK zrv;B|`}&3d!I*m`^8-?BIas-O5CeM^Kf&4wMnKdTnR>!>5&vdF2W0Mjhq`Sy@s?=S zRJRnCUOxju#cF!X5F!2TB2BMxt6dzJyDOvGWvT2*BTDeuePB&5U8RoK9(UH9x!}(DBsaGW$t$HJJNsbYW^LrQ;H6w zdZOT%RNzX_RJ6I~%byN2$vb)t)Jj=UAt*iuKY|wqUfkXR!KuK5jXNAmPM3ZaOm&y3 z9i4u89eQ+Q8Lo#L5H~@f+cjYqjV2A4pQAo`t$W)HwbX4DFpGiDcYHIk((->d{w!OV z*Op1d|I*}zqSuf-&QsP6j2u7hOzQ7}DkrJ8|6(f>R-UuD+qlzA@8MobxS!t^ zx__$gPz|dRCNE^IjJB2szJd6NY0w^UpQoh&5Ch1p($p2-i9hXUaLr@{I3a*Tk$%9K zn!~fyD}UO)!{TZWP_7bonnm-CKQ)%`go)kphg0e^Pdo_sPs>JM{+rohi)2`@<+SMG zm(NNKIf@94Qetl%Nmo=goA~{gy7@wR4L;P-PLnSZl*7^^g0L<)RoQQjZ?%HRZHzoJ z@`jE$30T^P3OtDvTC#vwMmvD{dUhv~7%~5Fe`kHb8!^{FPNqL!%jwjjM%5Ab_F&6o zg-=R?1gM?1Ozy%t*+O0Uj$Y=$!!4i+s)|?zTmC|^XE#gy`J1)OvyxdZ^+-yxA4bMw z_s3(dAmPW=q;NFosM&alPQoc>K!0{8tD zQdqiDI`;bO8ex6X4Zr1LYoi-WGQ!=jd;S)NL3htf9UYHb)X&E!&;6qvPuCp}!$FU? z4SCNGqnD#w5|6<3P&+2TjbYFH!yUI=63=((CV`I$Px;RWJI`0RLAMn_%ec?rJc)bk zVojT;l;OjZXHjQ@a*2R<=RwUycLtA>L5Sc|q{e=h2Smt@NOqu+c|@ zpy#`-C*0d>-Jsi+yrBD|bd#XF%k;eGwUQO!R-wn0pz-~ui}aw!A>algT=AzJlfb7V z->FiZJe-BYMajkBT9uhPIfcsnL8o%(=(C|VjgIHd5`S^y&vOQB<5y6hh{JT!v6koE zakZ`Tr~AX-D%<9BvP>N&)jO765j2)p{OKA<9V=D+9g-`v+OD5*s}DqP9|OhfgBaUv z1PU^X5sri(Gp;^T_MZvuG1tRoG-)-S$#BjPy7&Io zCo&o5cwbxGWUST$`{ArxuZ^uD)51QeHpKl2#wN<@6=-&GfL;O|d6ci#l+G(hxqm2D zMtVdhyfRJR`kE@nrX}5-QR6C=X&Js}k+>dRaDz+}n@GLwo^0p?Jr~#^r5u zbIgj(xq#A!heM2LAebt`BRZyl?!m{EqmUC>3RQ?QjP@sU`VorAKH7JYh{fLltOdqu z4ymoFp$X2#a~&x|SE!S7oOBQA-423dZ&c$wMZN?ASJoG}es@>pM?9XC1P=O@{GKsZ zIYA85!`gDeJ7+ECC(K?c+R}$~ER{ujh<8nOnF!839;?(+2i)E=`Txt2lYrls#rD%~ru;xFsB*(A2uWeme+DG^(Zqe z@eo)NUqtJxA6z!-U{adZe2l@At2~_N{QZGb^sIIPvXvMes2^eyS;Qvkbh)&mJ4B`aTl$KaQmK%I{jaMC?vd|$p;V&r*tO!C9?QbR+4-n^$N6r_bhQ=u+={sN zKSl4e2mU_zq1epwgm|rO!i}VNG}_(JYg*4VVRzeYL-8E+=Ang9&`$;%>%+ESG?Cxp zL4`Hiw87lxUb`(p4^+?yUcCYf#-hqxcMlOXivIVsHi!(cr8c#hGGwsx`+hk_QtOL^ zl#8+Q9}L<0ncw|4E@hrCCqItiji~2mAszPDa)KIA=exx7oaYEGJxGejLdWt3E_%l7 zH?s~eNX8fWLhGUl;v`VNck`wWT$14^&wN*zd>eKRDUu*UK-xZ+E6_+pa$%ksaPJPf zeM7RSaKdEwd54;kWJOfMw1Y2UT!l}OGy|pIU{l7lPrwGhIB4Wtw3e3JghC{W^OMYV zhU}$-G%_Ego|fmL@M`{*?550W8{egx^M##wHQmqP4`WAPa?)3LW}406m>XN?^R`RS zupd&&n8H6wul&BM>{kz5P21*D)gApq&Yu_^Jx?QaaDlUYOfU`uby({PX7&tS-P;`a zc#~;v>-xv;$?CCpocm+BXwNF?$*CXwbl)HRxxL~pq5K&fLj*!93b3-Y0vG$wZJ*+$ ze7h9StDbuGr)NVxo;k*7`kFb0zcgd|N;wVJr<9&~-w)Sq?m}w^?76&Wum0MSKqrjj zo5plv{M%$(r=K~bN+!pdw7imJlOt!5=Zve|3L_zLr1pHg<|z zGTan)L871gV_k`D>m6_WYG9_G~ z)+Ke<-(fM@V^Z%MDI5Hy|N5nfj}V9r<&|#Lm5bcTzlK0*<97`KEF+AmX?otWnbd&g zUzy*PYI?86xRCnmjCJfddZmFdl(M$=d9{zv~(Ui#HD zY-579ayd$vf3?pD^{{+OqTKk{8`~pBm^x{MRiVl8CZ`~Q@5pcM{=E;87GipkFd}fY zxO-_t=zrI(i@&p33MTXg{i^9kA*z^vc7%yE5NWn$=iNiC z=zn%flF8e;g>oy*@h4@;^w9SRbl~~@{Vb1dm4k$qz^LfEFgXc@&aM1@o?GO?>Rvm# zgr7;$d@G6Dx=u-xu)%KorzCA(F@iOC)tB!*bKg<1i%-VpE!N-I9Db-u?T)+3IqR3mBwT}sDq8MbjANK>t!AUu zz}wU*WJ9a|Dpki%(gEczyDhzKl2k|N@oT`wcnt~tVZuR4Z+%&%qajX>pnpYKAFuwV z*NGbrlKNoH#N*oRNz{tnClK{}c_&NL4YuI;qqaqZ*`BsYLzd2jOACTQmtysP_sLy`1PK5ft zoxKdL3W1A0Q~c;FTVOS8PQJ^1CxZMovo%%`a?F*O_{73?0NHwvEKjI0T$ZY|UrR$U z_nWN{l$mHJ$;3zF5OHrt*j&Uf32W*C51rgcQYJ{71|X^tt#tlKvB=xn@lchVK+(Yz zm*k}r{lVdj6~!rFa&*So1M-B zG+&DskJxIMkeao;uHrFg`SRn)!a)^SDLL&UGl~!9>f!Yxc&5W!G9|9^f*S2%o}GB6 z9OoN-pWF6~)3&{sMV@Ww5f5GRIt$s~W}B6sm@GHorS?S_FStj5W`PXZs_~E6R%zF_ z(U34_G|2D2IxKw#2lrjkf#piC27iv4d6LN;w8Fw5p4%6laqdtFBElzg$ksH`7#2mP{M7Zw6mvJZ=` zvW)sdI=jY^7iDITyy#aTlGhv z_^>>AnU&YKee1G>P9O2`b5und>8m8a9-aW8(*L_wep~pULINoY&Re%YuQ~YrCgVaH zzS$>mN?<1bg@0!|K8*bWr-v-(H_p8c;#px4HW#Q zVshH`HpbprQO9*^{`Hb|;ch=#bUQOGAZgS{*+*CX^VUnj2r-Zph;VZX1oJ=%^5}>GR zKXR_gQ=u>6Wa>$v*(mNCAH}@(Kyn&XmTDdZjICVZZ)~gx1QWwll5Inbnairjdh#7& zOZ$?y=|`0D5m@N&Dv0Y{a)e{wb0AO_oS5`|fGl*D7h(k@M!dn5HoX)|tD?UVVVc^= zr;V597(BN=%D_m{TS4hcN}>FxNm(^mW)>ec2S_8258V$cFTyxIQR1)I%JqiS-N1nQvoRyx}L|?sL zP}j9`DNx0t31yI24X85xy#l|p8`nn$N{Se~gI={vJ1}LT7A_ zQILIIMIKf)x3~s}+lp<(581~_bF@8iXzSv%Sj^LyW+qE;?FW)*6OqsvrCy(xJqES* zZrifXPiNN=S(hv9uDE{9#THp7)*?v?aY8;EEA`oeHUIE+(>_mC#c;T_XgwcdMY>dy zjNTdP(nP!*?Juy9QoT;<9Hx2q!ygk) zjfIld$mz8MEt=_r!nX_MZ4GI1mCaC$8aV#FO7r@jJP;wQiJJ@Tjrm$ww0zhR(pzMC zurL3NeG*&h4+6sZrEgiePpT0Q%YQgzUE1FK*40jeB9RrAW)W7>-T_m02Nw#L_2m_s z-?Y}?@k2SZ4W4dvbk4%L_-nBFh{*TleS;*YRtNXG^%*)_wK8foOYiUT?|VBW8uR$N z;AUX*5zGHpz+bWrR7@}bl*L!1gysY;9+XdfJWQ@M$ucYmx>p*kMo^az2NVlZO^!g28_hd-J2Y~_L<8(P z!g71+=YG>2lQVmugSwCl+MB?lWjPpDjpkSPeE6bstpZ6iJ5nPaxMghLQk#cqAdigK zhu~uGK)uVkzVpq$iuf~u3sI_=vAZ-KxDgt?=6s5SsvK>PuWM>Ny8|?}j1@Z$nBHie zPxt9r6jvml=<$p>a$)!24?H1)qR_|4e|LvBALZE!Nr$q^z3f_W);zrR?Y4gXD7Ow5 z7{N0X&y_L1dgqLlOaPk4GaUYP06THywL}l6wI^`#fktK`QMPS1rK%I@0>DKon?VM> z{LLz;8fh<__flTU3#0)>!bHb69L83o+K$2%z7Pqmm@A`i0zKipwk>@xi&*6#$-zhP zCWRWiLRF3jMX$QK;2hDKsdqL%CI_(+1@@=#ap~}yosH;Ka`4cQf=xrSjp}e0VdgAL z&-`ehh%CVNniaF9+8}+F+qnTyoE~3F64JZ)b}z*fa~jYgA)F!yt5nhPhA%Wp(}Rab z@!f{@{dF#%3@ck>52(^epG6$5V&Bk*{SHB)GqsKOV6uOOz^siCbLUBQgbITC#te{3 z6jZ7{ouu=Awv*vn18nKr@?VssQ4C69B^zK`e`iLi3X!K@p8BIf(ipYUuJSI{DX1KU zJjyxp;pX5Jk!hL3o`=$x?TORN^3<8wh{cY%O$L~)uOUYI>_ae7uLqXDBt7q)+9!6) zQ~ooQDmx}{A?6w@PqEU6YO&_S#(B|eLMC`58!(Lqtp{v@sA@LvaoyfCnq)Q5#)ObQ z-Xq1o#Qlm7i&qv`?G0e0UY4I|KdCYuFna?RfPJR54AkDsl2Y-RXnm`ubF}LzWcFjQ-_p- z-CbyS2Eu|tv9dJjIi77|dyr2}c06lqYDD4g2^8fqj70&llGJv|UCX{rty?3%0pGMu zK6bIFvf>x}TH@%-u+bO|?&N8{N`C#tA$n*RfO4Phn|H;D zQY3lxQjEwsR{NLE%&$%a3usIM=lfaa06ooBLd~~MSU^Na^gbYm{g-cyPQX08Qf-m=y+)XpGDyi5|9K37fsnNA zI}DPg%o#8rc*hAC7*?u9SmBD%K5m0EvChGP?-ouU0R&I31~8zAPc+-$i4m`AehVC} zd^je|od%Ev29E!~TKQ(WuT|MezM3jW&K|B1@;%znwFn}{)xvmi3Z@N-_t$1eM_s)fzsyj92Lw zBjB&^Z0Lq|VsvRF5WqsdS2r5JCavO^A|?TbAZz@cJ7NFs$F-0)lS(j5Y1}Hxu_ECD z99I%c*XhYbdY2h^bK%ka-@;NVoML(MV;D>U_^%P}sWr*hv-anU9zUy1j%NpIH)oc7 zt3v$?8`XjDI|d^s^OSA(W_nS@OPOARA)ikSnLkq)pxIEqGF75oMD{Yo@<*b+`%S<4 zIqe+uEXhik+2@wq_M=*<2R9}X=hJkAc7lCZE?T$Mm!e~ZPHnMT{=r2y=)_3=JQ{kV zSX!H{E@KB|ss3nKCc^3XFZT#;~U6)Ag)l zmsH`LlsDz^AJ)z1L9~19gbcAV-G1qUJ~x$@?_2K+U;QAgF#6io9S5HnU~V%W zn+GFzBR9maRF9HbI_ItI3r`PjHaK6?76F;!yZg&J^f&^SCUbLLQczcI`AW8G1X>N% zTzPX6DS_-t?V=_PsPZ<>*0}l+rpxlJ39zhnf2sKZ5f}I6*^i#ZMJ4}4+Pn>}UsG=H zg=t-0SccD7_AW?=&byT~Y`-=M+`x^`W@w#n0eyML!lz32+078KA_7LC(4Y}V4B8o} zVE+XF2@Y3vnit(9W~Bk>h}&y$m6F~im_tnNZi-^qDWxA24op9>!!*}xHtLS}Uv|xM z+)T6)qv!Fx=xM*2v%LbU7}{=nQt41f3fO|bBO$d!7N6cx*Dw@w14$ zZfE$-uA6PUNt>pA^rbyenEFGpE8*#vC(lM<0}3GGYC^yUB$hM2(($j+8?#+>Ne;YO z3~BFPzdb;#7l;Vy0gV zoIffe;VN5P1Bw~%K@vEAUpD1j0D+4(*W8_hAU5z-{S_Bt2y01-(R6CSr=OwCaFY4V zQ-yES19Z{MM2K9>zq&9q=1u zZ}M5;PBiY`r#IBghxOo5c1h2I%IPty6Ld(0-m)>PBkQrQe+pJXtOARTMr6aI_63k( zw2i)6N~kl10oPHycK`|l7Q?xhiTSik#0katTo4jTr!1?Hxb(6rDQHa>AD6#rGH<`= z0H?^N`~Trg)VxeO!6#bETZMdFmRZ_Xl8WHH#9v<@*4~PVbA9>Gz}PwMq7Lhnp(mG# zd-ouHXK^y{q}U}>-p3&XMHkmW#kRf`bMOE|9|;PpeasxZO@i@yfn4MPI4C`dlg@X2 z&zUQ0eeGau{tw8Y#X+-v+^)+X-kfDXuBManIKNFg@&}mw>g{P}@j4M6?QE+jA_n)y z^5v?C9>uc#hpSkz0LnGEFj}nYXU=V|^c#R^}Epn%~?3fJ-M;LrIKNIHLu~<<>2^q1H}CQxpyovk|)0^Udj|0=6-hO?KAS zCZu2!5|B~7J9SAf2&XJr_4z}CvBcb>9@#Imm{$h1`L)YLfxgRhri6Sw=w2K56#t{SR^iM}QSiun%=(>!iyHNQ2D zqSr1A%AZtgX7YEo%qvMK!DW_cBXI*)L`+iAmyG(0?h00aKhEOPczW}ZbcaA&9{Y~3 zq@rP~Ity(GC7s;?LOjVVJrrWPstcCim*e9~=)Qw0g@xIUJpJ~=sgB1|eKBfOW#vzN zR1RmC=%lLYdQ_{|i@5}FroKzTx`BPnsY_8MMTRe3TZ-CCfY^+q5&mj~bZGdCN+sTb zMR@b(hvA#vrIQPf-AOw^&QfxZnV4=w@KnRe>L+-U={ zZuOkvGD8T-ev&JD7rdh0$$@X$zVQWczpeV(h7%WY)XtBpTQ3tkNFw|hFjuO3kA~4n$$GFV&EyMnzF#l@P$v5B z4=;kMTrxus_N?EI&j?keDj@kdZHB1%_5%MSmg1sK_Q{T0P-&&3wYA*Q8tQqf`V~t> zAsvr5`%_hFF;~k#y4=xF9z-H@pPpsoY+Eo@p3=dhEls^90x%i#ZXMc;yN=DQh%M>rcas6-{ ziHEt91nFRYx*FgP%<`lavC%rG2?ZAq5a>IDpwp}G6T@Vh9XHpgkfxM>cH!Y!Ryogg zk8WZjn*x9Yjl2rA-AT|>gf7(nbK}IATYOZ}JE%aY{h9aSj{oD`6I`qvc9rVOKslTg zTiMP_13InAUG?$Zg)E}BKtl@e^;&`>6# zOgGqI@~p~+4ZZoZ^5Vn_(eqAUD(l3ihs7}=#?aI?z2ePKPda=W85h_;5=h(*vmjN9 zx_AXJo0G<0o#eDcN9O;Uc=>7(b-_a=Y6DO!(_8k1&8%LOp`r(jAGNFk62_AiJGVG& zI#O~xM3@jOqZ;n!Iq0oMXoAv!K~lvP_1J1AhM)Zd#DUyfBCo^ma`+ZAigW;-$#j<% zC#hgBN`44h6@1?2_n5qZGuw8xD4apt<#Lx~@ZlHT#56aQPus;qpc|_r0{XFnAGr3o z+GKdBo}d?hdWjC&s%;7+`Flhnq8+<8es?^G2SYMwA3rR7wVq5lIa=xnKNE{Lwcf;O|-OK~&@WoWV1M{1^yQeQ#V z4;IUDRkyOhavOu;wX>WN{hRzroQ*e z9i9MAV!#tm5ptyxLjnSm8pa_<>SP`CvFT=ie#E0Ua)IrVe7r(Vak^QbMbSN}DY{?& zIa!EdR>#`t>wZudegllgSU;o&C*tBtO~ml^i?<7$&j?V43FwgOMO{bFAkH+`O@H2f zOO05;LahPXX8qUQv!4r03029f$iX*!PvJ2sa#1KafFEs>-w>gEX%7${=Zg@+^ekgO zNB}I!01ET_UQK@J3{<^-@_PiuC{(t7Y*I>ezi=8}c`LOgO|!W#Vts;dfLYvPb1m;l zK}h&u@v6%`UVAjiq+%nfO=>=(qojO_az1Tj2;de+cQX~u4g=WR>1Wl_L>F8uWc(8 zBoej9V29J$E4HNI94ww3W81M+~d`3!&G(tUO;g+rPHD9X+DwK0OH zOW#25otG%Qs{UwfYR9^vCdDGDIjc$11#xk_}+Su!gbr&7+ z>y{t^IH^-CVfBXsAHV9RNpgHcN1RjYkEB{+#LrW4t>HSj4wtgDntxL21M)*ED^{E- zztXE4n3!XS0d}I?u{>4t@kXqD=HHb89bHy5J$|lSsV%II);$owO~pjaw7%?pHX3s- z3T6b7Ni1yy`cxUA8x=osO8K_d$a?h&&0Ph;zhXd;_PHmYL~yhr0sB7L|m^F!QnM5FzzI8IMBufs%Y6b%`Wu_GPM@~7|y@x2zF7}s}!d6a6L+9X9GyywH|f@|bgsGcE)2Xo+4NBl-cH7%1-W)Axft}HnA z2t_61cci_CmpxM=8;EvP%>M`nQm(-oFIfZXGrm7jdd5Hn1Jo7 z&8|Wjf<1mGXmqJAPi&l%=pvt=ijcqR73wY_?N6+CB$zLL^OgY{8wjnk*hguU#vW;c z&iMDDC4D#3m+!D>wM~JzEsD*W{Wkj{Uhbivi>`D!sCo;G0#A=k47{8`-on1l!@$=P zFK3WaGnc0h=Ppr)gqFMEcki~@&8YB19m@l&51_To(fc(YK@Vg=<6eSY9F9k^Q>l3% z6Ut4L{UkEnDzc(#HN2P*=Leo_=GeR#vXX4NvTM#^O{@+fSiD%9x6K0Tw{R0Lw*fpr zBwwB6}K_a1ChW#B@h+q8i9Ox3>p*5jna%> zvL~pT4hoK!v;!_GLqpPGUU})TszoJil@x{v#=F}!0B@!RbDMX5m=ej49O&^}yA;0m zN(VRAvYxKW*JcA#yyoF5R}i-jeL^j%n2eZ7|MD*dK?J>V(Pd^>+N^N8{BVUj?(rVT z55ekeuEaAm%CmGtH0i-Z4z=ShyQyhz)qMhPcJ2VVH;7h-Lr=5GP$?EjNi!V^7HKDq z3Cc|W5eJW$Jw~a)b6{uwa*sw%WE35+hgOsvP2w_mD>3T>aeu9zoK#W z+ZAgKj##zKotS#yI0Jfq z#`fP)mnGeM#TfO2kacnGT-Q6fm$Q4GZak3nc4*mKqz=ESqC2&-bW)IhD$cv{CUZK( zyE}UwWa`U_032~gZ!vy<7dCfcbIs8Oe`*#Ei>@6dGJh$ITpO2>B~YA;u8+ zoJR~v691IR2fz#}K3NtJFTLTXqp<@x7l3JyoTwSh(E*+zebr79a^ijqU=1%rw7 zsa?Q^nMb2ll1xtcYb5>nSs|oMZWo%3L+Gq~pe0^ba!mQwU0)Ae-$cxvB) zD?X%)7fr6F5$xjrV93Q}A;c)pTuV;o6K6mec)Zn35<02K0w&eC@oF^citsG22X*^MA zNf&JlO6lBRW5;22m>K_?eC@tKzXta~+rvw~cJ-Kv9+gGpRMVNDY{dUMad{b^p$l{x z)|OZW)h@*V?lcDx0y+~fY?S1HId3pnpr=;Sef@J)JVF7`K>y%haJtC7%K<4!0Z*f& z^rIr_R>@phoWLb6Jxbj`Z*@Uyl%~@P05)KZHBVJEt z5vF6%nyeiKK4l{Th2yU|B@-Sa8dz8udn@oMOh5RM-?5K?y_WQlnPj42H77UNSP5+M z25boF*Ui-}mAdtvOKnBFWq34KmbCQ5bImGwQEV5N_CmP%E^^k8j|R+xDnL&!SHSlS zq{d!*<^doxx=dO6O2)(NZZV9P_Z7&TbD0MiIEwu0v?J4WZ7#3CumeY^fH#}emv%G= z$ymYQ;L-8V0V4oOIX%Oh*o(c8G;#+iHe*1Xi_(_q@x!pM0)fp3$+la>7S*lN)C(7w zC@K45mIE^TR{U8ys7^kd4dzROUpw?CGvDPUS9WXs5R$OBPg#Il%?Kogf}tSP@5bv` zqQD$-Ma60zl(+m;8OW{fu0Vy6$me)%b(0d(woW(XxUR&U=&j?QBq1CA4h8cK_DHNu zW-$c{B{Q~);C>1fh`_Pw5^V#vbqdL_T?4O!kDzuGpq-H&xguzac>TO`Wjpm5K{4~+ zyqKSQebg%4RP1@#fu=*boaGOY})`SM}MJYn$~%8cy#>AHx^XUS|A~~1etm%)F*DRO*p)iBDA7NMB1x?11>|q?082Vq9r60te;QW* zZh%Vgd$}ks+s~35w_PFzDHm76+n-uCg)o}$pm2(Q@@~wy!Kvu z_HB}u9T9J2XMkkH_^8=*=5~w$&`PxW`f=oZs_Wv~p*q@_!8dMeBdM~%yomU~1C$+A zGFM4N8-~WI?!G!efCn?DfN0*$cU!*C?07uZJ;0?>h+b`OmFo(fCG&ebZ7mJ>zTce= zB&U6Zz%-BY!_n|b1%;~07a%o`43{x6kHz!x&gZwNz*J& zHRJglr&-Fe1~+gBKuURe7LIbbMzj7#`*J}6T?7mgIiR~%5fcvpbt*b)4-;nn3{ExbwlLNpzCbhGe#W>pdlHUs@Z zz6lTzm+T`6F)S&z4VXG6{DR3=!kbgXmpW0&i^;JiaEg&}PUmFGMG$w^Y<5zPRLN(-8l!n#d!WhsxY7Ib64btE}Z6F3r+~ zc=--;lQA*u<7+!`*U;z zb-E{oSwbr`@fg4GN6Z;9llxKv0zm^UrVXMFlP|%%--z3p z$ZeXxmf%}r00q*m+8%+#o_pdrpRUxVQF-V7Cyrg8?ex8CAX%B-KU%dY zNP1c@$4Yro``Pt|$k=b;D@y|GdD;CQel^=P6HYrT^!?5e*>#jbl`KIEAipeR_`I{X z6MZ{J$6^JH(pdS!+;wRdB5mPh`PhChSSBpM*UF%Kc&{BuZTn&MB9koaKi?7A0==dp zD4!PIGaEe|<16C7G*2=HFaNw-$srj<2*e54`mB*i@7)@*H!BoAWA%np#CL5*UsRB{ z02zqU%R&z6DEj?F>j8ku5!Tkrm7I?m4+S5V+H_aQ)vxkyD{_mGZ;&x`SIE>;z{!!h z_9_T9kX5`r5J7s?meb#!JbQ$RCV&JuSp5p02l_bSa|~(c#Mi+v_$RIVx!3$54;abl zow@z;*u&x*vHS7#l^fvrG{8y4^>Z{50=;JJUM4#y1W#?c;M!DwWv~8rgB%|`JgB(n zCV=}(hI=AHhYN1^MkrHD^*mT*A_9IK@yi5Xib^f&$NUnWUL2-*mT+3@TZ9?t4;@zU z@_vpgEhzHGT`3g{0V{_k#o}DKfGY7Io*qZ3cIjQ3-J7NeM2)+rEtsF-q^GGbjHE#9 zrC^n%XsY&F$mTl1(-1G_KOU}1EvOs-9-S%#-oh8dpvwqtm(ru83UR!cnB9u2SvbH0 zM@5;!HuxH}cc#&DI;30zh?=X;<8Ux#sRn*d#ts6KjbiQdb~z>z5g;NrX2zhG5VywX zT!bZ(+GA8rE+NvFVc%`lXKYwwR8ztCzin0tWMt01PzhylON>>!L!KMNeH)DGk@o|J zP^~6N@5l;EYx`l?{3A+Vm}wf&A|*Q_*Tk3lXj?Za!-EF6s934C2*;2Gn4w7n@=Q;cXo05 za!TF-d#GO7KYaS@%<%y;gK8{TeBG-O)@lUKFPOt25;T9Zd*7;iT&7YRJ|kFsNrBik zv_oK=&fB=Fl8F@(Em?~U--02>X6SXLQ??9qNy5ueT@x3z1$JtgFHgHG?S(IYI3cms zxaxcbsQ^}Bs8`VdF|utWNKWFkC&WT(oE|bHln^0q_fiLfpxy&9BL-r?oRTU|39yGK zsmw$ab7D~ZQDkxV0qp#gLN6fHUc=6K*9DOv;PEWF+jAZ#^XXNV9N^7*43eqAMxRM8 zVDg?!R~5k5Z%Y9KCUD?fC9&h#kB!WL+TI6 zrkmFXI>p-;`HJkv%DN8P)l8VstEfiq>PN@%<&!)2d%`I1h8M)kaI=Es>?H+z}iR0tC?B0BqS+$!*)KOZQDN8{5O%ZNIQ6Bu)%>cat( z5dAgKkgD2kC^ib4oMGr*g4CX`Iz<-`zM#M3iYpqme~!r{pg^l+s6PFo6mU5HH)7Xh zU>RDEb>{c>aIy@r&SY#ZX*s;xZ7NC4d8UESz(QD(JW=2s1cQ*dfxhx1!ecN61yuHD zCpE%)3mFTjBBIvxgECV4!Et_BT{^zb(YX+^?$Gyy2(yQm5O+bVR70@gMliLpMGS7s znr`!yn)63R$^~8<5s@EPP8;4=sZ{l_#|O8`SB%$|VOk^a(N=2$gKfv)Z@_R8LN(K5f(^YMAUe7F+SB`~Q&Yx$V5WCIU8 zY@j_boeD~ZkhaqB=fj&&=Qcog=qIa;P?75&mB!zzyx@=YQ~WQ7{9M?d#5H<8{?K}# zrIQc)j-=$p&YtzLb**Rb<9N6Zrsdj@64BO4>-E?W8f01NAeSD))V9gP{fejC&dZBU zYuEAoZ`4E@kjK5L_=d2h)o{*2FKxqbuPA`NEo~WNMV|^B2DH^07KYWdC=bVk)4jL} zIQAQFD&wS*aXcdovur6_H;$sZMr45tv<$$T>u;R$3fW(n228Zopzn273Anj!UlZ*F zD04gCK}OgFia_NuwcAD}{n9Q*;o8oH{Cy+Fhgrcl50;UM`(MMz?+sGAdwHQpk%@My z>r)skYa(4|SVd@nOTJ-Kt2RAg%AsQ##?w%FhAnM*MUjL~iiA(EVfE1W4G7rf>i9OF zMvjSy(PV`eF^O_cA-s6TShJfjFT*W9SPv*V76UE^4?hErTL&&GLvXQuy-UK~kkcOD}SQvV4Gl$sYFFB~N(XGW+!g4Bxl})!4F7a=Pq!Dp4W;qx#^|blmF?nlc@o zes{&5q~3Lt84NpPAe(*d^5|y~Z0WY&n8*W=>s)@&3F~V-c^~plr2|>_9IQ!EOEv$& znI7nLU})rYE-!;%HbfCxP>q(a+VvsjbQTg66+m`w_Rcu-FR{&CslTfc{z)`51XYk) zOWyt{V-6Tm7ybn}zb>x-G}!P!@%l)a%zWJMW3?7y8um)Z(?!S5%F5GOLeTZ~^9InO zcyIEw-SPCWFdFo3y>u@&J)d!PJe}!2 zCrCVXJm1ck1l}K+JU^UwJY1;-U8{9G-3>`RJS+s=mjpf758mCx#bp>jTku}OgPi3y z^4c>7C62^)?n<6ro=-A@gKmeMC7#Rkp7Vm9hq#{qq2}E;JUv|wJyM^YR6nilJnxiL z>zpV`6m_&$KTPJGbg1%SQHnz8HGdgdN_?B+VdaP(ILgrtpwcK&5y3!)?b%&%AF*D1 z*3E7Skf5&+(!CiFu+IE|J3Lf5CF?dmL~5Wv@3CqbUWS^x3F}aD<-*?t-Xli&^;vs%ncePs1k5d5>srt74M^i#PjM!r9^>RSDJ({89d4KwG?L|8_xzgA>6H`rEBF|$;ogx=*laKTh~^cmeZ zr!);pvo^`R1NkH_|BNbnWU}lRFX>0RTKaK(FZ=b{L+_M+ZLp=FCgbnwyL@Y>nR*yS zTRJmuVNB*X-(_cyNi}yD`|V%!9MIV>*vUuk2n@`r)n`?D_M1@_UAwGvRL8{BsmT(O zW6O@+L5fQ_OA%E^bS2{Hkp>NQ$5k^|KDz5M<}TeFvIbXKOZ2zsmG>aY^WSHcdJ8pg zAVtN>y7|EGKb@17Ay$(5v{?F2lp_CC&B2 ziKP7v#k{!mFDOqv9&gKFN=UWGr zYcHI$L^|IcTCfTk^0Sjb@RZ)Vg;D*>3_mjahLWqp!o!AkVap`JCi{nNxm~fsOI)Qs zYrZYzGcR9+ZXE-iwq*2lf{t(5d#+c!L>#)|i&+AL?D`W)YL7%^m4b+RJmpKPs0J!0 z0h5hcYWsJy18-TmF(zAlF&RXV#HEj34?9xyNmjPANd=Ba!;9?`$!P1iy2>Wzoi{UJ$)dzp+b!jfEP%X)eE>ZlvC3(c`z)mCv;<*eNNjUTjE zZyG`7V7C0}SKzb~GiS?oxeeo|)D<%pf{d&YBSD>v0rKGY_2dbRLqPM2arLRo(q6B6 z?S>Box{&?*m&5_18x&>o%eSQx1&vRY{*hzRuL~wwkEZ+UOc#3cuQ?W9b5A&Giw}Cw z#@O;X%nG_sm0THa87rcG3)m<|6x~o|(8kzbYcsvOjg(D#b;ObXTv8#C*({}ruD#FG zGp418OBnFB>b6yXu5cneo=?Y4X2LC;=uNSxQL0E3gyi)7E?wNKnyKbmvltTR!bI%Z z_bmK#8mJ#bu{NValfOD=8R|+p_J~bXaRsC)-z#>2PB@!A4M#m?|O7jqLb8HDz$sLaRnE%@B;MDblVr2^jI?)9hdqo#F zUOzslxm}NKXpL>O%`u|OPSYKTg~n7hCMecZ*gyPL ztMg5vrPcRc%u7;Q!%Vp|Qp~^fo-K(A2S?wpNPZ!q?iKW!q1_YzQz?Qj(7)gTYh=%^N+&>=!5N zWb$eCKXN2_lR;0&jH@Zp|5+LjjgA?>-@GqFnZWE}uFq(Q z;QkIIRXThq-HIyn<}rf4(WB6! zD`(lOn)1ipv18SR$R9aY8l$xzWyI~H?U0lIWB$*{4y6EZ?Eu}vWOdOxi*5FVU&t>dZo>VH#5+Bg@*UEq znUpte5*nHQ@@Ls|=`nohl&;-`5iiBU?s*(F8N(5Vf<;Ca_qoSNxJepsd1q}Cj?f>T zS0)#=)%+Y|OvQL!8S;CUr;^kxi!D8IgnJWlRw`2`3!&%FE91Qe$0ToH=%-D=t z3z5t$V()T@2327s74egc zCa!;e7HzLG!OQ`{1B?NCX>^zsVx-b=g^{kulF**kj^k#@{a91<*hx2gZ|-zy_>6$v z<51HJ*PY2tbYF9)=g-+ghd``Ns;p2OtC~`}w}xFDdZ2XK3$I;mSNo==Oqz*hu-wRDm`&q+uDaI%saOukJu z3k~{C-X#i^-?doCE)Az36k6TO`b9#khc!$)cqpT#`V9VULvF&Y*pT9Ds~Hn$Wd>7W zdgWxMeWq6$y`W|IAl|GeLWnyUqSY0uBq(K{`4C=ok!`5wj^!nLg(ON1 zbvt671YQ)?f-IrXqU6et1;ug;e&gOr(^{&>fPx)ct2?nR#)L0ZulLO6LeUN(jZ3$F zHrw8%I2VI)7pLQqd0ag=slNJcE-#ral+BKk_A9uBbVg6IobpEn>4bz}aUJI4dvQs2 zz^Sfl8!a^S*l@f6C9Sovukb|K;_f?%=6Z99NKEm?C9=MA?=xhE`SJSP6xPojyr=$J za*9J)qr{llSrz8wzW7;$u`5GRJ6B3n z&!44jG`4~T`?0~UZ03|yBbpuME~UfgO);Z>IlrLJr#J1DAA5@G%LP&EB9w^tEj{XS zaNg~nW>RAp$wtp4fMDFDJEvLCi;a^U3%!C2>%`w+ zd5E#3B31>DBOGsf`XmKOGeXj$b<(kZSt%4o9KN~TJ|?qHb=mqoHDI)ss;G))o(7o^ zI`29e-SmFRk8cPoi$M2+6>4vW=6jak#S@_mm2R~8$>X9$F%~X%wPxe;B-h3dB=Ws6 zLG`$~l)7~v%_{e3-aWgvS#ZN%s&{R+XLX2RkdU2Bg==nh>ygz2Cfl|L_4wJbxZ9ql z#Zqxv)W@QdF$SeShRVJ5mbEp-`H4S)BS5#fZ1z+p!cOs>U{LtYZi}jE>Wo5=ZZ~3V zzwYLn1Z%kz^V}8{Qh}Z2BFntvoqdj4DFaO+rO#AQ>+z$EWwBsB;ueDc>1Al4HdC`p zA|qPGtSPPP*s;h-CZFcr97vh+2Ye(IU4irWSymbHnqct07^a^4cEv}i(KlK=YZ5Hx zB{N{|H2F@!j2>I1%)TX{U-3EVv7NF^{M8ly_g@(-*!_9A5-zZz)cvcZlwRero=~Rv z)AsqU-ECdyq}?fc)~FVAyn6gtil}^YbV*5-)urdIgtZj-$=Xgp&~sZ?ZnLx>q(HCo zd0W@TJ&+)cPO8Dr_Qz?kbrMGBz4joDg^ZhC-x+y8zF3_bPH?G$vGZFI@*uc@giSPr z3wK?`Y$qujdKEAM%(9**A7sWyNUK%I)r*-UT-j9k}zaVwO{(d}hKE4SJ@Y zzlNefDwIuV5+x`5y6PYoh*9gjtCc6=G)P>9gdeFO?~uu*3J=NJW|bbB-E`BrF6|bu zv|Q92xZzY6r6=e_^1k)F+3+(F5Z#&wM#xnj2NcL5tD6G}dUgaE1u^NOBsR2Xt(-KD z)1O!&mmdc796C3|woepKhW%B{a1t!4jt(w{bsHbWEGI2E%J|-wc|v1mOB51*WNY>3 zx?Uc`3DtHJQrw+x^{a39AH5Zg1EhpxD;M)Zk@l<2iocOSly$ZxiJmwg3`PQ~9@}N7 zZ-0$8JsxbH+m_9=OoT-O%SJ0@b`xF8q)HmZ9gwJ(>J1qvav9rJlx1B!>A&o@iA)?O zs8wq0$WJc&(3vBH@cLyaHdi*SE-Uemi{KMB$9yb(amWyy> z8!|E*P?VZSGn%BYH|+#YK@juUO!rRBlAf8UOdw!sUJb4*ZQTafqelL?p)#z}LL{~<#&lk^fVwR46bH=Wv>Zgfbk#0qGZER+W+h~PvpdWU1tXNcD(y`ESn0M^ zA@G8hWfH#BW6Q(Z_f*_|w0qLy$FGP_v7$IgF%Wbg57Z7kYIh@E6QIX-SARND@5?av z&SC~rp|gPo$1V`s_1srfqf2l{b_kCzO9V}D>e1S$;}ztwGm&xy+u)#OwDEWDI|HY) zrcGy&ow0Zh|1_#(2ttI#L>sJNGbLGIKN}$c8eF2$XuMWe}Y;_+z8eATO zDMR+x=s!a~0FR$lC9*B$Gk1s?5Ij*i?h?9?(1-+0a22zc^eN7=-Mlm--Rvdu`bq5F z_94Kw(A*R0+K#y)+gEe>SWIw);Kf**U6RMPRdG#@LcC0Hy(|}%b_|1HV8VaTuRaSa zLlTu-ITI_WF^dU5T+KVu#kE||?OfGyP1Ev>LtRHr^)THH!ySILn~f+Ns6HlB<_gD_ zXO<_ApQXh^lDTwJ$lmnW{HGPGe|ufm7GK?~RJc9S+*H?DJ$D5>#&&@hJl0Fk&Fa55 zk@<*i~OPIB3jL0+W45(JB&}e3htP5i3BBxnX3isCXO~t z|3(i+jm3OT^sKJXX|s&FD#ok4my`6})f*S6nQi?)`QDf_Zwz*XYe6u9bn zdk2Y<$6e3aSIt}^F#r<7hD&>B{jzP?i7#Pu^3o=;KGqTqEFT~7=A_l*Wje0l4%fWx zyLc_OUvXAR5#^n{p~tqWB(WttWeKWYNq?=SN`HbK5F^xDi*MM(J-IQ%+KEW2HkX4; z2Ws#Lb?SMuL!^?!(m_6HagV{Y6GL{A{bHW=_<2`&fk4c7^5v@gnaWnpJD9g0n<8EW z@X6)UDZoCnY$MbV(QGnU7L0k;K6S@nglcvHt~zV$t|q*eb*Eoo4P4ct zcbip-PK5j1*ECr44!>&?nDTZKT}Fd}DqIAW#&f^d^JmKvh{qSJfp48?(K`~1AeBW6 zp(dI;!(}hQWGW~S?5k!rVIbphW!DkIsoni*I>GV5t(~WFSzFCS62Kx?ygoy5G&h(kr|4u zD#j<#L|zJmsy>#}<`C#4D3ZUxV4f|zVEIG268e@HGn^9sN;vShKU|NKyVG?L+`HKg zy}9)Vk7AK_)=0nESrc`b`z4{V^1WR%GE3@XJKcoAw&egp35jwRwac_KAlgi^6;tV~ zcd)}`5;}2{=&{EsxmpsITC|JecWu*>{nq-<2B6tU^{AazukYq584^7W$WoXf1k%lU z=V5J~^Vm<|kJu$!hs#wp`{~~8dtqfD(xk_aHcs#^%CskB0-mNV?Y)z~u=8nKQq6k8 z|EsAP`-YMDxLHqwPRF#em15nQfgZjh+NkrW?LO0&aaAT#Akk_>9YN)^Ggj&q5AJqm z=<%|HN0+SuQ3w7gcI;DzaRd3AU~o{1CsVwP;7Cc_p+REabGQ2fAaQo z4L78AIx#J2@hfU39z%*EBT`(1ksD{*WrQ~*;u01ZSfwmib~IC)#I>l>uYo_CK%bBxDQ)#&-nI=4{Sc-Rr)VGxwpSW z$w?Ijkp|sqlsp2=6#xTCtB$Lb2#X+IV#$7MNMRTFQiX9zG@kEK@#j1_Xl`!AAkR18aNUvJf`}Cc`LN-3JGl3xO~3Y^#pc8%w(+# z;w?+D5rc&0QWGcD)@t)Dy+~l9o#GyiZ(UMXJ4aL^L0NxrCn`CCSlgUY!kU>IiVJ*1Jdy%yOL_#%$g$Q zV*7n|yAVBgy}V7>nOQFx1Nwt|XE>a9!(Mdi)y$kK6Gb? zpxOvzW^f+!c{ixYo1?P2)7ZM1K}CiPWx06Fn4IqWmSPoBKViY&VxHF}lVJ-X4kLTG znMqX%$>Lhv3`jhG7PkV`N_BXr4XK{n>rxd>W^YHFKJU3un&++AU{)^r-KV}h15HvZ zcP5MUmzz}ZqhtacGERvs>My37o9^bfER?ysZtJ-@Q*ow`ecJb(&;J-zI-a=u)A12? zuE!P;Xm|??axilA{MovN1Ru62?Ts_y?Hs}}MvlqaB=^pBlM00AU5%|n=rX!z8awKj2Ad0~cbnBGpWItcj7cg_dn$d& zH?ADI6E~3t`2_F?!Z-4iNYuO03)465-r_it@Pb^;bD(4Z^zER)`_DOQKB?_A*ES?< zyAN-(sz#@aq>e<~G_si6vgCqF_9bEd%C)_D2Gqb;MSj{yE@-=+2`^&O^EY)wuTMG{RRvAYO;uGCExv40%e$W2^3tt# zk|#`wj~>4^q>l96FiLlXHZE(jgdc48=ekkEQ;$8|LmMT+s%!V!&>x1YJVL__obYsd zY=mwrowIJ&eOM$fb9W@!hm?6;p1S#^wq4H&ExWVv*!1$k=gi%YbaYKl%6=#2nj!^4 z9`w~;uN0m=vZ)q5K2X8IX|~YqFWZ!y*nI(O|FW-u$yb@-kp48ktD(MGNvA~ zD(Ck2lQ%$(%wts%uOl2r>b8!Y%Nhslv_rmt<4ZJuP&?cUI1TiAUW z(%lu37tFhE))d*y`3VH<#9#fv9IQBnsab<-NBX6E;TsiH9qJk)$GT5+b5GqIGkCPN zD^-szpFC5OPJ|9el^&a#8av67)CyTidaSiwf6b{utbu4wTRWk(n?02&V3BTZJELAp z=y_0j0v&C^*}yo9ZC!x`XZ@hKL2GLU6`4zrC`~KDIySN!MZ|-8{`l&M*qIR9m-O`|TkauSQ6WP7GWkEf~P1Jr-5QzpfYYOvtB*g%V{b0T?6jio|yJpqAu zM9^twOzCZR4kF3WOt2YK6HZ)I@h&XXV>2x{I?=h%!6C#<3(Cw!r)q#ydObG}1}FoR zjWQ0#INc`0mDhJA(%@I$GrIg|8Gm zEuzF%w>&5km>XHM`d!?s-IK{1*_@mV6!xHP%r!+mNF&Fg;`h>H+pu^_FoN#!h=0~K zQRS4=j&p`r` ze%Aafk7E*)CJw8AnulfAJw`uwd_OauCl%_Z4jy7Y$dd`5cXv%~C)|W=OJ@*A*m74K z?)iPuBw0_-%@sGdnI_b74QDv^!a8g3of$%5--g5Tt{9!G7d(x!>-sXoV!KRcBGZw$#>=~#~67eQ_pSJQiM0i z4Im<;#}=X{jY7u>1u)Wz<2EBXQ^%@3g4<3uthHmlvD*e+KBT&+I2x}Nm3MPA3Jb~N z8JE7Yj~SIorlbIK>tjA{Cga#Sn)nMLL(y~7Q2a3E z{+#f7`q&lFAyhn-lp^K*@#b^G&RqmK_FE-)(_}1xhR0!-{SV8CN|f!(M#Wb{Y1l9; ziaytClZq0$(__nD+?RZsHlqb8;Pq-eEjRpUI8EcMPuW+t#7)?`$)UIIx`?o0n@nGPV`TE9W5&=)!n6%LIT*__1w(lOe&ftqO$k& zIGa&TiYWeUVnTXsW+UBcG~_~Io~F5Y4gwrCvk~a1pa>o?O zeOzpz62e{`W=JJ6oOYHm304yC>EwhgcYt4rlf5uJ(6<|N6mH#QdgytxMbu%6U#x8J zw4R$EZV>KC`w~iVc{M*A`Hki2B_=~u6Y(TUu~kSME}*Vv;&8{>i^5$yY^_3W!HK9+V8JOfDkye)irVA+y@>3k|4+*WLuC3 z7=~dG#bI%#<-QE7YDA9VAMgFFbBV||Gv17-ZZ;)ja(J1F+4l8uKab*lT-i=ZbUyE-KaHs32KS&WxXr0%{@!qIUZ9tyIWR z=Eg(z(9}vHV*(*sg|y8*-=`pvImC;y9(H+FtU>SwV1VLx>#Y%+BGguK^qCv>QoTlx zh`WuqNPP!`u#CW?icP>etn{({VjU65f_ycwWBaJqy~D2}DmZUYO- z^hlYpz1t|$gHR8D4kZ$b-E()YNQVMUAvcNtnmcH!!Rg=#NyypfGIn2B7-8yIIlS5R z+QWK4xJWdvLbv5Qj(#w{QuYn6Jq^t=y{tGw(hkS^--A>u0IASCVJ!vSyGn$>3aBq= zWbHv~pTm^wCSp3OZ?^0Gjcra95(M~rkaXwnU1^c?Z1h1j@z6|+1ku6~o{*zcUMi2| zpY2kFi)<>hg7X$5>RMEY78g(~{#Lq&ML?7~0%|L(UG3AD1S(Mvib`yNl^&)-i);lT zmx1)s+XQ~f@;_=`a4_q+kI05h}h*(tOp+kqio^$Y}b2vG5k!m>chhCU6u|| zAgYXs#qgn(J2E$1?e~0DuUr4 zw8~5XT9>cvLH0R$q7FJ=ltDnS2mj1251(T}ptNwfV-1kxed|kDRte=%SZ6nrj(uOl z72!*y6QDBc+VuGOj-$D?PpGhrnmxi#ye*(Chv3}E0mde<%Ff4l8M5#khSI80P4G)X z?`^eU{wE-vBxr|rJN02UFJY4@>}Qf=Z)-Jf5mkX1dc~oz4g`QoV!W4tobIUETZ`&y zSBgU1kU?*1OE9fayUmwdM}aZ^x&9_e+IJna07%VbF+xc%VrY;rI&z|g0RoMh1z;j}3N(x+KDV*2!roUK2=UlLnNG8t5q8GZz+E zcEDo*I@@KbRr&>nuIk8`q%_^5M6j7rO-LHH3<2pz5ux@aBp^-b?gI!IvdSlizov(+ zpaD|bwW$=3%BN6Z>NICG6BUpebGtE+Vh-P+KqS+g$4W;O4Ss!_B2uF+BdFJu0Vzk- zAM|$)83p2~dOC(;i(4sdP*5I`3(&=iDM*asKSEM*;MZL<-izo&wR#K+3 zl|`E zD8Z)xrAnepw>l9lfP$v}(+@RPU_w!RLn$hP$WlP1q@iy*;*t_KP1V$sLshzo|WYdn(4ClI8>Ju|YS zte~eNMx(vTO(8~Y=wyYJ+pbb*9BURdQ9u=`M8WeItOz8e+4-`7Y-KoGfXnfZS=uGZ z-BW^vgNtWx1>KZ~Rv}?*s$%IF(jQ&hN9Syy5gv2|U!wb23nk+b?=LWKl9U45P*fk= zs+;irgVg`p+&2G?rCq#*67*}k2Fw!yUF}t2hdNl!bcBhp=t#v0LjlqWMX3q6U&VxKq#4M(rxX5 zINt(-U<5TawjM->b->=WK#wy7)`-HX-iL!MoMPR}qHvc3t`l}=$e=-Vm`JIKJ!1-+ zvDraU1WrDQ@O_=Jol^C}6cH53kG1Qhr75FSk+c-Wy2p`V8*zd$x*-zg#AaYeWf(P( zFzQ*sOfZ~zR3vycw7d}QprV@60u|JCc`hY%3S^{IrlS(svw}{6wM6a`)Tv~&+I8p% z;F!jpTcwQEx+{pTk@S&MF=icEK_>^#jvEBEhJY2t!D!hMc27vT`Cj(cSVi$usB@Rj zR6jQ?I=1DwYNfB!#Uco6ODJI?6lq2@O9i9CK`HH6M^>Q@vD`4hPXmEq!frN$qh6m9qtUZFe7(m4_QUL6b9*>NtCC}g39-IY%}gnoKElikR@He@K7y+$(VylbLMp*( zj|=LXkWYI~5=5*^#PE`|dB!Q6!*HTZol3&4x1)zA_y_;1!$J`SOQ^%i ziX8LU7K#Ker9jg5FgAVL>iK0r9dP6cK@L+R3_vNMk2MIWC==jhtI!;OktfSxgvpY` zWz@{f9oVgzB;vUR0>z#z1d%3g8wPQd@^w?xv<@&kC@>f#oO){NQ-DSxE9d|=BJJ6IEsyJNE=Ljv zO_GR2+gJe?W;L`*M`0u$SOJ;+iHMP;9@>5323+91BfS(P-_U*mM-eDP%1Yp#oD@`$ z6^gQ-6)X>(1-xIVwStP)yrdIGv;y+fEJ85&@i6 z%b+i2jSA$y!5>J8pdan3N?IX8LCj_Zw{RH&1%Su(?4ot7*se+o1-}9vyv^StsR)&( z!jR(i@8@*ZJgAw_Z(wa0E*GmFpaCK)#5hI5-+n{MFNMrm=fxmu{jcM@A|wv=8_9;T z@FJZrA2=8n*=U{MI(2d?uxJDUDS6fP=i;RQ)6dWM^9KL_e|-P((}z3q|KID{W6J+$ zKX35=lbm_Z|F6P~Kk@(n96xXJ|C8zmE&v0rdHIbO8bFaFATC@*=l@r^x)V`u0mt7g zNyEyKBpTTH|AQdaPLTw2Zu0nZ;83EIOm=YA8dNwJdV+v3mD-MAOBT^js*A-l536fi zk?jm&uB`{iM3`o10KfxJt`;UlF~jy3pw^qc0l#=?0N4V_M!cvz4eru*HB*1h3aJ=p zI~57sgt&kRJYrV?SVW)$3!(XSFjMPHl*PgUbs!+8a+_?s6ov(gUIC;H82}Guk9Vp) z6ANH}2&6by@i>bXuU(C827zya$-loG_`WDaPJ)%KzZ@WjNSTVAVx$GoPU8eRCB;es zqmDsI$U^z_)Dqvu83;Ks5o^)7v;fpDUkrklK#b$o4nP1h78Sig8dtg)0R92sRe|uu zmea=wfQ6Mpa!$fs3cv?dwb4b?m$ZXVq^cg~XY$?Vk14Lq_UTpLUYAD4A=5=*N+V?j!EA|jHT<|=o zU*{Ph$OxdFAfBYK6JHR}ZAnmPWaU^|5Si#1S@23p1l4N2*H(y-o$A^t*=s|RQUY;% zkhw@h3?Qh+xPmqXv(&`^$euv#0ixaCLhm$1k*LO5gDU&J((A(K(AbYtlLCOW3KXj* zJEau7mII1Zvq<4di*_Y|RRoX~&I5DayAXg!{E^%<;f6Sb0Pv-WOss(LC{t-;hJrv% zNfHOQc7mZOwh(nvQZ#fa0M;a!aT)fJ(gvP&m4cDjry(fPxrO5xEEAESB~@9S0Xa0G zG2hC^QdiqBZ%5Te5}duIv4Q}y*SU>&Oj^gP5LTT4qoCEDex2Mjs#|L$QgPEk1+1Ei zKZ>X{Z>dQfkl!O*OSy%l0NTBPe&d3omeRb|BKY>AXf^ECsgtjJ-Uzh_NULvYPBA!2 zJtaV_t$q23(o#@BF8eM8fD6uJ!g2%S+D&H?&^D0XC?j5h&+xQx5)s0W)V8^<1h9&q zgKQh|fLlL_2%gG9o)?L+(*K(LT`%;wOL^ z!5(xq0Coq&Ko?c*wIFWM>JH$Aa=FyR033(yRT40P61>_qhy|V|v!!Ha?c7I6yfM7t z5~dgcJSare=m^lEZgFFAwjGk=Hgs2#0?-lw4;nElVt-Q#0D2LUH6H9Re8MeoOHr{M z21TGnVUJsyKn2)$7}*wx+a&}b2q#T@EfeOgE_g25-lnep!%55qig6xJ5Oc8pk&AZ?l{-!@xlJEs%C4Y-kOdvBq?x# zFbD~jcM$-RbTH&7ngAPjD~h$1e1#aEm`hF40BBn=r)m_Jke-zWKznFPuWfijE19MS zfbBwdxL0-S8ui%fNNUD$p)z<)XskO88^Iq{f>RGSBmkhfgP4qB_~fp|$I&o7Mw8I|u)Z zpl}tTzaPsDrx5jhif2nNJ<|kb@2bQ+*9*LCV&`{^Rv>|qbx#7r+TK7qOw$V z*XFjeyh{K;uPJ3fAQaqM?Ei}>(C`B#>L3#99+FK_nM08KRh;diZ|hVwQZy)ad(r=E zF$Vmk`a)Z8avl8t1P`giVdXSO%7vNXcb%M9ove5)&W#h~dqq@TmL-`2QRZQqlp0k1dj&@e=aH_LYO^X+76(ET)rpQM^eRLZIMh>8@4CW~(voZ~ z9B{&<{$Iq*f@hUT7iDq(FG|0`oZCKH%%c8p+b0A&e04a;lBoZ+6%ebWrT}MGy#H-{ zMF7+ZMkV5UE)PwI6*!X<*wt;M|2PKJ2o-90y-5ExeaZfkCWnp$xr97UNuseN{U&X< zUJOYx0yGUv6iY^rxIzL59eIEfQsM-;9R@%`Qt^);vx@Qm>lOp1I54WFkOO9(2s093 z5@n0x(I2IdUKyc^%Db5TT|X;BjSFQeTmCA>e|-a@>a0>h(2L3U55~TT4~`m$jqo25 zstDvCVVjV|_s`=83a!aPEfoenH-fDMgaJK~;`2!IbiRKPG^lQs@<%7W{}#P;jjEr0 zCbG8oSZfj~orj+!NN%sEw(%Pa%yb}u+@$*#YdwiJfaZ+)P9OsLc*ugNdq2tkxtmh} z6kV@6$^MD70}d%Lo8`1)`v;{&<`nm9*|YtxVo%3g6QkN-`-d`A6b&p|44&o~shBcW z$+s1DkRDzo7SDMN77o_ibyT`0$_*H9jjp__B#}TMP%MN&oNWK%3WnE(8ddhVLHCbO z3@A_)1hDxI0yav4Ai*JTxK6fz3jI0JazdvJu(SO;Jse3-7KbRde@%W+)37Ho#FL+N z|BAXN3L*e_R?+=yd&ZxJvMnnYJ=p$X(yaDf#eIN8%b@#TIb;_WzbdZh0UiYYh)>H- z4Q>6%X+vhDQ?*%oltnt<|H?^3nQ(2KlkcBw4`C%Vu3$KreE$i+bx;8f8`av9+DYp< zcqh*Bb))-dZzRJ=Y8=h5b+E9BKd6X0H9%tBi!_2r#@PZ?2sar2fxZDoXDKCyvW_BV z+vwreOYjPmN%wF2x`V|q!9)V(^pCDBT246*0FM{lzXmevv}g!aWH;FUTT#1?g4B!VH2MDFxF^AB zx8~%t@%@LQIc1-F6-ji14YDp~81^FJfgryBaTH20>w(N-0Unh90E<`DR&2aLzp?hD zc7{Fy3LheLh(ffaHU!@Ac!2#T5H}eA7a&WS6dVv{hG9nz!v3qHp<5f@{m5#=xGnYp z!F>kfKUFcn&4EQYT^@`JRCx*m0&)?JjSd_H{0;zU1-B>y{*efy`b;FHkS2JM{_};{ zI1mqoUyb=S_-i@g1MdRt#`GHeAxydoLpnN-PQ?Fh8wJ}B;|P$LD&l{6Si04F8q1+~`)vVG;MIf}mS*42le`!%!i5f^$EluWs*cn93i;urTkv@2AshOg4 zBG}z3^8Yr$z{QuGMBf|+`+p%L4rN&v)@{Xb-74Lw1JxUv63UKhc#!*Q+v>n1#d z*8`y=JS1z&XY&oHAW!JS^7)5L1xSV3WY|2UMKFke3J7kBzVJ0W`#&F_=Y$Xx%DW`~ zf1VzgJgbQ~{>qO2-^t^yAn*AIgUuF7%LFb5RgtvO|HDIolL+F5SaL7WNKndB7$V|q z(f{|gzZS9ivQ5#sd2}unOVpiv0iA~cKx+wAQ(|U}+U8ef{y^*yD8be#0Kk|Bo5r~T z<)t+bhD^95;WGyAA0+_L9hoF%4lzu#S#(aeMUvw9NLlTaQG!FfWGtYYB>Recdbnbpfv=~c7!}fQd4U$eubvl{9tIl0c1}h0FVc8B~Tp@M9SX_=mgsr zM-o`qt^>fczzhWyDZSo{GmyIlUgar>XA`MIo`ll`b!H2(jVT1c)AIpPWFd4gr2z0) z9NrnF;8{ulZSA)UUc!S!aHbLf+kKES7{`IU(*cl#8x?_2EOs3LLdHb0Lo39cIsnw3 z5dkcM@}#K)utGbv!lf_ilBokAVw6OeNxdshApmh^z-z;~SC7;2ppbdjD%OjVf|LN- z)&=AWW|XXQlOY8V!CkV`q1on!6abzgX)t2J(j|7Im@LE2EG;Mq-G>l>xbgtkW*Z81 z3IW)7fdCZ;lkiEF5383wL zxIFf~z_j~yNC7BMh<8MsUC%hmUKQ6{r2w0cbW*;Omi~rL z0Qv$TI!V?6xmqOy(1!gASu{XI&`i<+=$GXOY5{O|uUV)N8;3&+fQ4P*KO!7HOADa& zEXQ|N9t7^<5Ch<_m`IUv)T+AP4@1aq5^jy;YNONu+8SOOhA2t7YpMZ=HJh_4-x>$L z%K_l$7mZig*M=H^1CxSZNM0yTHGmZ{!$b>Y1Cqo5+9YH!IdQe}VLD3CGXmw_fw?SG z3?Q~j>L`*+dOQrK6wvQBEg^MVhZulF2jQ2-?SM*P$N@m^Nr`X-u7#R;mjg(m-ioeG z=OG6`hNUPc2c=G&asco@*tkGHJb8%$=ra}xojBfy>Pg@6fl2CUtCG1&*Y|Q)Dy68m zb4lqq$pJKnlIhko;0TipK>!5ifoO|)TRH)ac3WDswo(@AX`|!-bXhuaJonlp3+gz7 z+O906S%`&(AOJCN2z7&Gsz}YIk&hx$RTNi@Zk>_-OW!mB+SDWw%V|(TCB4oS5;0FvN9}q|IPp>xuwG*@?g4 zMiHs$iU36QpRnMD$WN zg1>So15ne{q#+_q=0h34_8t_LB(I0=Sr-OiuRvQ}Rc^o;W?)K?fzU`Z>l6lnO`M^} ziOeHq(;QLIOg?k3_5C%ynVS|U+Mm=Ex;yXhb!2UtQgx|?z3}pal zs}yL1vVd>U!%{)~I-I@!17BL zpnn8H7u0tpv9K>)+(IFFKdny2#%Zg1np&3J&len z5(Q`jUxnPHTEHem$pW-+l@iR2)n_e|1?XWQpOqk@$TUb7pg9{XqLNy5BDEf@wlMls zgsrPod_zy(!3ymZtb$`#vHhEZCKaT4=@qQXRjL4OcvH-kP@%SaBfKy` zMFq}>grGR&FA@f5Psy($T+~!~PGtaGVAY)=5S5xVK${KL$=#)c47E!G;FVFzp`(>Z z_d8Fdln9CNfu|qB0K^-KN&%oI+Y*NR#Gz17+(b?>OlbgVa*1^!5fqrx08TOoVo64j zZj%P!lnc~w{|0Ng-~24WoQu!A3Zo1_3G)|A!dzNZQ# zb||f0@WewJz>~>~VgQIxX7_j$X?5t+r5jkJ46ro$Z&*{9u8}W4T&Gx?;tXpUl{iBh zK+j;KLj@IeQwBhSw1_Xmi&{7Ic$CQITXv$ZBI57NRaHc&;535NEkYLrgCjzsC8Qpu z44`ix*fbGe0+}LR06jek2t+IsWy6~+K&+}+A^jn&M(D99NOcpTMbcm_I9(P1Xn&5J zRx&gPp~s>Syo#P;0O@~87+`6owq&?PP{q482Z|$8bS=VXClJX3=*x?A)J}FpC)`j4 z@X!=NKnVgpB&h(p>{$-K0iPn&fThK_~!BPT4DMYC{;nzO0x+QR@X@6*^A{n6aX18Np)?U4XzE ztp89mQid)705Qq4kb+*OE&wPM$W^IzB!fA00ag+rg~L=18e=^K1ymhoBO2SArCho=%%80DvU+B7(Vm$X2x)g#{#COYS>K6@XV-q;dxs6RAvT z0`TnYp^i*`MEr3|0^pNUf=ZnMdqs~vQS<_JDEw#k-G(3l`M))b+A2#zrWaADWT1*u zi!wPW0zTB3Z)Nn1fR2?8ul`V4Uyib*LV3w4w3BRyiDmr@n!0ko(H zprt|;KgaP+5CHFh7vPwm7C!|6SOlq}mxdhP#BiM|Fgs~Fup3GaK*Po%%OR;Z5uz_{ zcsw8t@FD@^b};~;mgbkjaxVS%*dtGYxb3QvP@;uW1L$E6)!Uxi{ab6TpA^=P;8Gz>9!6yOgoiDZo=>Vu>`IT=(UQo2ewNF^;6jdnAz>*ArHZDXz zIo?;;-z5T|FAsE>nnO8rQv)E8I4|O-QnmQd0Dvb56d6IasHdONQz|f>R6?TPL;#xT ztP|!pM~MKmsQ_*b#{_}tRVo0BfD^i(F;Kx@*zu(R(1x~vO}J8`#2*nSpmvD2D%>Fc|Gq@@6gXB0)BXhutY^E04yzv?r=zeZrD1p2>`633Zu;33D(>~PRMFd&#A{TDNc8`0Iwf)%ji?>@k{)!*Vn6|?OL%ad^#4h^-H>gQ_%EXW zUlis6uOz6f#@^8F&V=DOEdd9b^#A62u{}v)gtGL`{%@lNCPI*^0mnb~a@55&P7Iq> zt0V^ossaQTkXxb)LEQfuz&IoDaS(;A8}~o{Nakq8rx9!a`c-|0el>gUf<$*vxm+AU zr>e=9l<%m6{9jrdRPp8@>Cf1lCaAz032z3eGnoGYJ%GSnan~WvA2BBq#H2lWo z%I1f_s#fv0A4yZW1xS4>7qp+q{<2v$-q`N>W5lHaJe`w5b+gVuXZ_T?XjGOIlzH;Cq^*kGf5u?!+%c+gcm*_HiE?T+jn;TOiGsqA^+R7c=5gd?)z6{U*Tc-L+OUVW%CDIh~OA1?vfB*%g>U=9=W)i&7Oy zDs?4$?O&Zu+*2TuPk!F=*#bt&*DGeCuV2rWL|dE~yxLagAv{_Su1&81FeVya)KuvkoI*;vV zXSH3IWJ`o4>DA;?^B|&m;Tww0cw@}VMJOZaw}y_c4%JSCxJFgZfE3mz6QK3+8TI5) z1snptCyI?*jQGyfcb0=-`tAFlghWlzTxK`^i^fsQZJLzVBF95$<~VP9d38=;wu^r* zk&~XysH65ic_-f|*|V*REPSu-+ZTgdDm7=!QOo#DV-Gk#<_OBj@FG?12fij;?V2n< zhOo4-X+-53$|d?@pmKHdr+7_F5}t{w#%W^@=(W^r&l@ta$h=sLl5Dh7c=E*bK*9MJ zuln)-!lv?tC$#v}DOZb+W6=4~s!c&1f*~tt-%YhfTwxB&kU=_$u3^!|LvEeC19xw| z7|E|piEoPOqKva}i$m)~#@&csUpbyk2dHwp(f%Y|@4H^P?M*g_h}91&i8y1zXKP^G zR(F5;mjjdd>+5<~(yj`T)YpR*0$558_QM5IBA18SthST~n<&Gr2ZYQMuZr0^Fx%d9 zFA;>F(*u3#gsFN~FYp@TSAIxlXFn7TY7C$22m6Zq=f96>OYv^yjW@LID$K;HNTA(- z-u@;GQ+hg(oP7|Bp=^3Em-%;Q-RkbmI_{Vr-Dy26ZeL>cvjShFUuXaI@x`Xq&X75A zKZxN&_&aR27l{*-o2jb&u~WVG-E4Q3UC^+z1~NP&8I8jFLU5Vue=QLwOlBa;miR%{ z^v{@8x}neqKi0A(@G&wUuUMX(*8`KQ%Edj{9zs~7afeL5e|44&n1Af_WsvwCQdX}D zr4qOoVgq4s56NwAGM=yydr&7a~d-|LFbjBTMo=(;-t6 z@F(=&hx_?3mTbl0sfM$$Fhp5wd)epu1y_s5p3Cf8xxZDYr$JelUxULuSa+=?C!v>( z+QOQIOK(5i?(DUP<{uX2FTI?U!}osCI-e$%3krXG$o*N*(END7NJWHKF`=+78oj6+ zVaBNXLBF{?9UaIK=Pb7OaImAS6uro&RD*l>L)l&To(QZ$LtP;pWYjF7Sxn6a)*$^n z_f#KaP`}RbNgNil59P59%D|>`RSqMq!c@as8KPCoQp$uyQ>0&O*@SzBhjyk)H&1f( zn<#rmE9PaLV`~c#!s)OdWPHSICUS)(0$UZh-=AM|&K`5`8pTk~gL=v#KH z{bBe+oLDo#L`^dctM<32Z<2_4SF986AK~;P|NKXb;k{SMZnl(LHMy;^D1wC2UX zN~&Qp!@SCUrBm8O0h~jNQ7?Qzh_gc7dm%?7$?TVCyDsF*G;BdsZ&&<9mGDtAHv{tm zl~M_3E+}|3lAkQxI?JOOUwJJ+mE|T)WWvTy9O_NqhxxXw`0@#sx;zzT zzXhL;sLW7h{NuHlY1l0HmQ6x3GAO6CpGzB`YfJfL<@@$KnSBSUUV37T6^w8u@!4() zZ5NdH?VtH2J@KdSPf-vY#%!i&Cbri5VkG+(HO`lx`+v1UKsC}fA`RX@B7(j@QYYbl zNMGFS8ExO2J5L}QM6g96MpTG&U8I0%ggo%K=L-P^uPI63?py0yi3Nay>qZ?|G$X!E z^&|4I-YSL>dNOQY*M9h&Jou>B1~2Jj4eI2 z;BUzfJn7O79}{F=&$6)PY@(wRC=>?upRTQW`G5!;RP|Odp*D=0=rf+9p=P-jM;oN; zfxwwT?|VZ{?wlniNxgGLuD2m;jf!LRnMy{>UEogAiMtY?$Xmr(RJ{&Lk4Y`Do29t( zBN7iip!WDH|CiO79Q}62Z!gPdQ%TO1`Z6Eeb5jwry5j|qs%1~9-ATy{2p>u}*c6T& zyWsHKrDGKm(kUNRk6gzm{d}>;|Mi}Ls6a+dKK^uJD@nR^UMc8x?0WLFoM@w_YRIJS z(`@uMK}~9vKCiw$^Kb<|zu1#X``JD%2$Qp(fB1Gr-G{Gh!n+8zwVm&w^ri z&%Y@vmG$t=!{?>4zD!i4Nd)E9T6iex9K<|M1TFGBZz%21Df`+F4ffTw&d1*a9DHY} zL-+{1zU;DbTCGi^%@au^;D2W*kSMQSoOGwQ5symZ7{Vsl5~Bo3EB*cz@F$au21G~q zfOuvK|N3PdsPZh^&75B~QL>!tDX6{N=pDJ-KtmoInxi=kPszeO=sd@G zwt%pZ%hyPhJyNb)g_xI(=VTHuLhkuA+oaFV&mTH=n~vre7oSgLDrOY9zY@+Xdq1<` z`Kx+|B|NmIoFjtke(kgrkY?R^+J`eR+sOEI>j~8JMqKI1U946_X5`kWTn_eexX|EYY6U&F2)sa6A95p z65-`>;uva}WGvlt?NQRbU=vw^v$Ob+?rH$<+QrMyhY-4xVENHe(tCr*Eb<2lb%h;X ziQy40yz8ESJ>s*Eezs5`-mfO@MsXVKTj17fP@&?Ul#W7Sch`n8Eo$y+j^1Zda#b;R zreC;!A?mZH;D7LjMBLo&f%+|P6(gjZ4Z$w-K{3wICFya_(1V+UdVG>EtvV`qUu#O$ ztrMS8J7NlV8NzfJR`czdCQI0U+j%9a3K7qS49*&7l@6Cjzal34R`lv(PRHXzGI*s+ zoVv8__f+buTSYTs+#gm_%FHiVr@^k6%Uyrd*Xx7^XQN-^;o|&o3VIIHEQ$@@Wm}s#U22?gzP2w~O$^8wH&jV#!A~c351d zK^4NBD8@iWWwMKh>qM*%UTiBwgnO7`sR@2cVm$A0akd-X^kORC|U|GUrk!SY+o z)7)KQ%xr|=OewfOiHtwrA00fVv}Kb2&JtY%t&H_idO81a#7H@ijckZS+1-!qZdBnf zUsLTSrL(%h>E(zC@!w6q$!BGS2Xh1L2a0i=9A!0=mtcz|yjK=jA*Yv+THIisQIqWg z=HG(YNmlzBQ#ow?4HQ>BIM985!d*el?vT*^Fy>(ktT9Vu;c5f><0yzzl`^M{B`5lW z4#lFPNJ|KOR+gUNZT++PT)f+_30TuOf0|#RLb9p5OAOW{X6b_NKVC=_zNAT`VmF5x zDs#VL_V~eWE>|NG_>m*o*x^0J)ri_@<=xxW%vUXFyFB43>lMCNZ1BV+c@}IjRerqM zOUTcs&P=C17r|wJZ&4c&0&Lr)Wll+#kYe&!AB%TVKS?J)d=8N~WanyRH-<*=22n?l z-bzK3=Y?Y3P8R=e2%i1@F1q96mjsH*^YK6Nbm1g)g+;I5q!BPieI((FS$HUxam(mJ zF|1={QV^Xxo+2Uru~m&;ky=iiy1ee?M=hKbRM$ILs*~06q?+Ux+mF~wR*e6~XTb53k%TXk_ zGvh)Z6fCOViYN-rKjU{`*>jy6qQ3r>Yf)r$Ynu1K=huIUtFAN}AQbkY{53T}dD!e{N&9W3C$q0j<>5}5pa_4v)g9&P4h*)Gs(|y zn1_M=ZWr%9PfQs#a}QuU47gZ|X9Fno7@P%M8Y! z8A6T4@E-Wb>Roq8ty4s$NBGc8ms4lB^7t1U+;P*KniU#@)tXVmCLYmlbm@N-;Uelv zE}!p%LadbEPCk?&K&7#C*`xeog?@w&{f*CLoTp3?1JDYQTP^Z<9>w^m8<7Y%4WFTq z#(sVHB?8P8-MTKP84#jYd>>Qy&ER9&ws_*xjO=@kT|X?`QAZW;=i}4uz4Iv>|G|U_ z(K_C=9NAW;l=hgvKeY8<5|=+Lmu!3WFo~o6VH1mw(FVtAQXvJa5bY7Q}`_ypVqfwi?K9)uDnAyL?pG8Zxazlg1AK#nY`Xw3-MA!hep5o6R-GWF24UzbqHHrP&6pCgp7nHX6*G$ z5}p`7A5qW^d&9V(nmaScW#%|3JhbsyDTU?RL(y-;!3kH7i;2}0L)rc&Ua`JQdfXeL z(@UCMFIRK2u_o}bTpYCst}BQ>eI{&mM8VBw^t@MxQ|mj+q3aQ=XUn%=irx0!WkE&m z{bwq6Q3xh8yzIx1`9EN#41ceeE9ICW_`|V(cRIVuB~Dq@i+$I>ptVb;`rctn(B^24 zl$H3~(Pzo%KNKzDxrxdA58vzaXikN2**ga^dyEM4O3k86-Cm450b8FiK9GH^z|t_J z4E=p>JjAD8b8m2WtylKICWPIn;z9`btnF)WjG(R{hYSJ7`v?EAcDd^(UO_%RFp+q@ zdVQgpegDZ(l`DWbNz+Mc7~MI^Fjz!lKS<+~a*r+FX{MP*2X#I z{wSh`EHRxeWm~jAM3ki1GMzrUpkoXJOlP8?n3Mac_+vRtjZP<~6?AvE17$SC+#;Fe zg3xyZcuU83(wiXmr%l&^Xk=eCXdQ%+2tnUXyDo#!cWWDlOmc0Qt8$oJP$LEvrFC_z z1-iSq>GAcsK{73aXcWqSeeG=M%5`-^SMsynx1X1;J zD5{g#Hi6G0rc+mypT&8b{KzriWvl)#o{+Y;%zFPx*Yr^dlcHtw6?LSNi|RDg+1?i_ z>}Rub{VY!W>geievNH%aVKh0&IVaW1_20bMqUXr-ECa94dfG1?6A=rZ$-zHR?+N{h zzM{7}+8d@Phe^$7ZnuBFLLS{HXqSgH;Qrnqj^JANl4}}rSd4fdM7pbX4!Mqmdm$=_9n*HxXDbENWr=QVQS$`^-J$$koN5r?x~ zZ6m9ZIkeQSP}k2iAgnKo=84leoK>sy8B=sWUsWis`ygXj&VxNEqb2;j zUJ?s72}biQdrL~^92~xT_;ZtTj*cwva`ooz4xURgfr-i9!ZKNi->duVY-9uod_J;D z{+>%`Gegv)b$N4q{HuP`yu#beR_(v$ayJHSJs$)p)oA{sy;(1gIEAEcxcz#lCvR+@ zmgogTvoV_0sdVS_yUZx)i=OVDu7j0yoT^=Km zlSnk?7#zr4?8iDoXQe45y^{HFmo!n95NT&nJoEwXZ16}Pd)BG?2~FZFB=aNv6bIUj zyB%ailjx}Ttsm28L6O*k{NAc2+GMDySOhKK`Pr;2i9ldFic9_HYs<^a%kIGbxCLVY z+^PFcO2jW*GqAPhk$MhwSaQhi{JgEZoNw#sQ!BI_RgkZbvf0GQ0cvnQ@~H_zJW%T4 zsMgGXE5Q{_#4jDoR&sRZisz2UveSPKc;IJi2fRFhd*J7|Wy?;T3gXH55Wn%+L2+o7 z{g+D=MBrS8?RkutYbqyejLb2oO!Efu3Vf4F%Gg5(eoQnSA+^EPk88gm;gtnF`S@3I zVj5PO+7g&YX|b$B`D0a-_~#JLaxkXetHl{7XRXcT>lzX*jWL^8L3(3N)UfuYl^sjM zTTzt}u35V3Mr3vQ3~PuRJ=Rsk;zMk7BTMK+8-$2u)55|Rk5?K*72)fO_Y|2=H5jv_ z6)}OTg=IYLL7x5K!`<`GeCz&0lLBIaI4TqGY|Wt`*QpMW!{quu$zC&&(&3mDHbKmm zE~)mSqzR@}!&FzT;7!s|7^rTs*il3ep zER9JpD|;Sp(P7U>jEGPB+!8$%T<_~wQK?CF9IUB8z%}D*_*@o~t9?B8cr9vQnG)Kz zWjE9RWaa3&p^4K$D9{n%%@)ZqC1<3hp>94z**~USisjv%cUAoWUYd!Ln%w(|o=40K zRU=s;2^qx00WJr>e>x7Y%)J+`0Ur>*WR!~Nte@Tb^u{srRUmHigMm&P)#c;ySJ9ME z=!^On6FkpL-Rx=clx4>ho^lbCxs4rBZr$U*n2!oyk|Mee!WbD-p+@Kzx4E{_kezKV zQq9#G~`rIiPWn^y0;G zs4{)N=Kyw*#t0!GWgW>T+d)Ut?CWPw>?LJki7uA**?Zz0I2wnNk2Lgy@&i=c{oBCh zdX}pL*>5W23f`RXkK;iOB^5PT?C>-$)+;`ULOPVx&-hz6#mgCj0CuQn{BWP<0lYfYzu3?Efk{vi&Mpenvx%%2HTw zS%T=Q1+og*3cPXH$S4^lEKNSYIOo^mO>t6v)F3p4Ks2g#n%)xh}pTkj34grmbu!hxnr zH^HuIR+SL6NRhr2sq7pg#Ie**+Dqy~M+~8x(`cdjCp`=ro&o_2|)Yv5gd&mGtU~ z`mmO5o0Sl@f!`)^8b1y6z+&0t{4!a0c}PGCCg$%W(RjQrJP6V;U53nn517^2S-X{t zNaG4Khs_&ZQ}b1s@Jmf%-e_cW?fCd7$`8{S(b7`aAIrYk;=K{1b~VjF!zJ6Q5*Y6{F1dBj-kwJdKydO{*QA z#nDX_IsPc$wD;n~oc>}{rQUy~d;GaKq!-X6P+$7? ziH&4$yr1}W8e}8VVqdOZ%us;q&vrF(_*8E(JI!x$FmX{qy6|=A5AEhw(`P1%-;~0h zS&~s`p;i$G}5FE})|-W+vx{ zSoX8{ei*TKm%DNz_ELxM@mIUyFOghjqmf{lrNtX&+)IA)ofmIK>_rWWFUUbye242T8T%$bd(R$!zfaT;EpyLuTDC>v+ll&Z zdwCt0uO+0Y9lvm{c(i{ix)HHi{bLSZ1SYCk>8*QqM5w#{^g#IIbNrVNNTBpFQ=6IA zF+E0-94J4nH_5OW(Bmjl#&I8|BP9Z zK_!2HGWQom^=B(VunHr*;@3mnD5+ls0 z!Y@sk0d%SmsCRMP5Iu9VQ#~@~YE*)%x$}|pvN~8aHjMwzCRoZXn*3{Zl*QCIuQOK! zUptuSSi*pSiLX&tVX1C6ik-in-@bS+(L6C>ZEAN}h~<0ZCx~K~nsi~c#zhTZY*{Ws z;)gv_kpAm)QK^0YpNloifx33AI=xqi>zA*I+I^}@bKsK7l$Kv-ve8%CM^Rfx(_Hlh z=C+Bc`P${D3v>|9Molig=*lK#=0?I*c9 zWyvG-C2y5}bOQXT8Tu`VD5!6v{{K2F-ZmYZ|bQ zz?EgBJ_6Y9EVGAye;^Y|^2&aKuPWza;Ef#LxPYOXWRbx0S&uCfGhtKq}rPhTRy`5wdF7f$Cqi5ta z!9V%XfQzW(PV=(IAl&ai8JT9(y;FYA0c1kGQX`36AiEWM-S}8Z2ZvYbf&!9=M@CM z%Q_?q6`ydGZ#F-79cS+P7QFJtpsqalB_qqmnB8Cvx-_V`LBPwDX?t(=1Ch|+g;lJw zT#9+xn?7aoq%V~m2*0%NI^EU5TyVS;Se35;Nyc9>#H`ncEXF*w1)T#TjPQ@&tOr9w z6@!jLj6j{FXn19Dy)rzV_b^{Gs)#~n@(G9J z_xjhB)OPv1BiwWkhZltsF05t>_az^xZJSKv)Tpf>^)ml!jz>z=2idDFo!;ir4(;*E zovCs^xgc-|Z&{XnUdBv~~rk7V0~^n~a-C;J-w*lR+KCFX#uC^pTgZG%^!fJv4`0rrMjb=X|-x0!q0>HrumrCsjyfwZV< zHwUZ#cdgCp)$w=+akw;L_=C}8Y7>b#;4D}o6zcaPmWcEgbawc~S0#?$peBmUaF6F- zhV!X+H?JJmSWrA|<^S-G?ESaQpC_?7X|X=95^DOLp5r*Z4xfnWX26&HWr!tK+Bd*F z%ld5L`ag81^A{W8#8NI>A1R41PUn_38T7MzC&Ds|h`My-5~NZs!?uuxQ;A9e(^?*taQ? zx&FzU{Jj_Am>~N?{-xI%+S8P#VFtnwe^0@5D-uxQbuj@`!!mShP`X)Yf`IOC7(u753u(ha#jKgLlR*^AJhE*3K zH02fKr#SdrQ(8B4)1s{HQA`k8q_Wz667H_Xx(RWQQDV#$9_>F|=1o+hV0KCT^}&+M z*mqoYI<1Jmg2aiv?fyR5dnXpSs?R#)yAZi|kbDfsP)X0D@yG!PV!0{fySaJsE<}Fj zRQHR=9Zj^Pj}G|%*Rvar^&g6MOz~|=$WO30YNzD9Nl?ES+~YAHJe|*Duz6I8Fss_TydJB| z7-b76yg$jlGH+}MKXyu`I`&=$W50NasZ4f7x{id zi@#sIb+oL6W{G<~9RW_8Plt~lE%C+dSWX+ewnFs0?LPPj4W=Xp=)q>soqx#Pw1Ho>C&Z90$s87yHUJsq#Ky!Lg#*ZMvEbqFg^(p3BI->at(lhJ~ z%$&pLcC&s3N*#>;mb(c@opuiZW>NgwkXdkcaa2lY*i>y?>+GUK990Ot`8-rhRTOBW z`N!N04%m348~54aK0sUy2Hp8Dr`=$T5#b8xS3*0x2V8gmh=qI_|C`#I3lA>0>S2*)BLBG@s}O|t?kLJn76`}Bu@53 zbU!|8FTQGk!(o!1<=>>F!!yTt;y5V%r5BUh^i7XPD}?N+zV7&c`Py`HJ-cX{vNw^Z zRK@+t;n#)&O@)-${x3!7G~fr``Y0Wji`XfZQw^J`7HPh>bD`4Ss`7k1z)1vA1fu_R zNS66*lMy$sVUP41#XT5_%h-!)E=z>H6Y8bXA@{l(vLVwtLfGd>D83sYQmN@!vQdr7 zAOmhB8S~OlbP$Eq7o>KiPtPsX_$+U8iqL}trS?Nv0=}6los^!z0AH#kerJsW+;d(b z5f3$__&ociK?uC-V?i*EYulpr3_#x4s{rM@A2=6V$Qrb>PI2nSi**hEy2U){Wz$Eq zgMamfEc(K|wuxZu#=yM9^dpBH02SCsCY-sk-qB_0*7UC#8t;DvK3Kfb%Bv`6chW0W z3O*{OKaRHpdX2*QE+us^JT!XI*{3?2njE;-^mqQBRtXl^B|t4Of9uhk_8!}Ia`n|| zAH43;c3IagDp0qvV>D{5J1586PWD}5-tkZ8_V&a;IX~WmvC5AKKfU4EEZ4c-f1|BI zZzXDn+z=8f#rpL`@$5<=l{6%g_8++2^?7D|O?bIQjS-%`tXk^e& zi8+Apa?ZkqM!guig|bW+cA;bu$9A4?0Yar^Zv%+Uo)MOpNYl7?mRTMsh7B*$E^l{E-6{wiz!aF}l!Qwxw)z|1%zWcH6~A5bkiibC2V zGe~9h0acD_0`z}Jef%%ix|lXG^!#|QLMlFT*9QqkER}7O%7B1NAfB5XXLi1H)NLns zvnz-rrR@21bD7iJ**sH&C3h%b2k=?&C@lO_uF+4v6~ce9)Fa54^BssTQUMA83a}?? zuk9CbCmv$W+@G6*a-SOs0)w^b)_n3$$UJZ}K(L1K2nZOA&Q5h7Fv$ED+Q~4MrW{{} z6`zS(lGfq^Zr@v(_RAd_=Kwdk11*e?K2z}Jq1HtS1fAVgOe^BR9#1eE-f-r#IswGs z)%F^$Gr(_#!0!2>S140iiZ^vD>2NbgsJNHSCnKr$k|QFC!nx|1xXifuPqk4!sV|JQ zTy#AKWT-0Gdwi^9Y(6T|Nkl!F*kPPC`GGjk#a=glG^={7ddxB1PeblDW{!!G<*Tyt%HUpSH7}`g@>juECsRvt}05P4568{D4?mgt0 z%@bOZ`DFh{27b=8usHM`=}LHXw*?FTNSApf z%H9EJ-&0~d%L250nb3yM($dZ#L2X0TiTvLd7Q;8{7rKcCb!6=`<>WsCI4Gu;^=QGK#?$7^l+R}`IYcbhKo zi&I1aFkUob%iW0gv73dN>MX5s!hlF|DMM!6-wcq=&H<0ar-mdzw9)PR{UM&sSUY-9 z3uvC*5Vg<@=$bXVM2na7kEOhj0&FwRF19L#&qfCv;7?XGSAiZi*!TIF|AlOdx*R5R zvc)qglqsOa&VyTM-0M*HU#v|aPoF&lqNA<}C9`>GLRVS6VQqPgunTVHoMeojcL?@p z83hC&eF~a^ewkmb2eH36IN%}mrrY|LrSuCIfs6yx$UVB6fTzA1KfJX+PDn#Nike>< z?%%j)U7o)6+_;f_)dWzw)aS0l!wNaEchjc|ET$lryLVA*?|{2z^JEjgpEz#W@^#k$ zwv=3!Fv`lDX3Pz)0QfRlypktkKMOaSP!?cx+L-OTdcUYD-g@eYC)Wj*lkmZIxWOom7{kCtAsv5Q|ohis|YIl|f|*P@tM zwACiU+A6m~s|<4fF_WQ9N{XHsaC3~%#B6`%DE}YpLHN5-=P$gY%_6Rv#J_z%G#gpE z3a>>?8UQNC1su7I=bDGbcwfCV^i}=-A3)HOLO7l-CRYP+l3be{2?{N;wl6k0&D68) znZVB0SsL+Tw;%bIQcHPR#Qqsc`$qz$D@wC!0F93T2I8`?<#1?nQ8MSg&x6OQJ9962 zxnIVhO?Ht44i7DzoeZvUFXJJnsZ9R#$=;q(CS3oCg}n`T+(sn;7_)}mBW|=ZlRQzeQ3*_3ffp^6M-Kx~B{)Gu=ndSgfnU@TJ zPLmmYxEnX|P!oGsii#e}7yr~`rUevL55`JBDOPLss@6HfiHo)&Ixb5%uy0#fAxgponr-hW2+<_A2giS3eJ3mRsB{B*i zxGs$Ev%rdR}p1tM8CwKwWJ);ESCJKHZh2xH= z!~Uu0vGT8c9m28s_rRSkwX!wT;_*m<@nt;V%El_`VF`ev$0w%UlSTpSetD7>{TrgF zzWALLAye1w$0*yzBd2eqmrHx;*5Esb(cWFJfCg;6@0l>@k{D`4M4Bg z@8iE!0seTixf?d~86Y9+{}4e;)Bp+9c?E5A&8D$>^b%o9H5K1^+;GmOvD0Pz!|b-e zzht3+4zz70I(BSt$B8F>d;_T9IUxOx>)%5IF`VL2Y{t_5OMc&I=)Y4wdcIWi| zU|bCy%)nVXo0W`0b@iK6is5}3n#Up&sJ&*1b$n@eVSJ zEf+E3$O{xQ4|Lw@Dt9*r$gF&U*_y`OXmITvxI%BxWSDDEd+U9PTo6VEgrUXjIp)hn zBckH9-sP6K%6>Q*1B|)d@@106Aflkbw|%Z5*9hdXT*&nSY$XV}HuwJpL42-cxz}$) zTp-X}xL6)=e^z{+>>_;#<|F2M4dsd{9k`7`GC@&2$18Bs+EstU7zb+H~b5bU#d zPL_9EC4Ij(9TkrPfo?ZSU`!o>Ey1@vzW2jVSFnhC=AIb*pY z#~n9l$5u^j;;DOhDlG_gHY{k0y0~$LE>|V*gY`OFTI*C`0;luTp0=K!Xgl6J=`dJc zIRk5ypslVmBir_dv#s_qN49w~rs=RNIp9Qvt|tU8zLAG%?P&C{4e9FsRprm6yrX+L zL`Rl{8F}olBlY0ZR0|7t)N!NJSf#{Y9hO7rrb(_`miZ80?ij=#Jd0LtW!RSzib<_< zFf0tDJ*?mQbWFTR9T*~S7a;0sIMSN^-qX77{?C!G=!CCjdU41}E2^qIhf#41R+Vm= z95r@*vm9`KwMZs+xIDu!b9giZaa}Rv^u)IUc#^>Nu23|^T2O5NlI(3x_tGElaQ1u@2u|`jS8As%4S07^>Jw1@H zRXzCqw2IOaW_sBZbRfbeGrX0zcmzWA>;N!2Ih~$f3Aw&o6U(cFVAir=(7@X)CiLkZ zas_>Ivv&`H-mmS^iV}ACWA3XL@i{POds$G-pxntF0LGPeOdQW1^y=yudIxxCSf<{h1;q8|PwqvY_)UEoi_k%2F!u%9m7jti%#n znTCW0YPHVpuAt%78)s?9E>+&w)6m<7_R^g1N5I+jmNNGTz&f`zF}a|->owC)p^c}` zd?$!2SR3YVopsb?%_8Vx33iot>tP1-Kli|VwVtmol5@e-dde?Dw%?nQ=A6T-l!o&c zBO5WF|7aeKjNF&BAD(j~QCflX_OQl|4onKeQA%BFcev>lioQa<3UTZJ`*91FSphkN zj1EHL?%YvY=JVlKmV#S5u>Mq97|jA$W)W1!NS5sX87^3LESQr2r{mPeRzo%%ytd*) zNp{R7(6#zH*cLM+FbB_Ca7hMp!;pFPi*W<6a#TG0!*A3*J9&~x515g0asY7~SVgD~ZyUneF4ARhCD-tpyyT%*%`nUjm?h8ib3guqZgvEwr|qV;zSC{rpp zc+LlU9&wJLKh48jql=EN&V4WlCOJ!@``xJ8bAB}V9_a(`_q9M%VQwTsG+{rrLAF)* zFb0gj#2va7|Gq8gP!7}1dq3U0bQK3i5^)UMwkGAdF8REWal6WGU23w+ZbllC!b8&x zeRv_+_J%>m`z@{O1;&>9U~X)_+~y^1wuN6oJ03*c|M8&?)jI+y=Pa(~!Ob_$QfXPj zS~buWb2W)iu-WR~qj?jjkR#aD=+>20?cr|-_gbG}fdAIumPOF05AS?)&P>XZ486fi zBy4*DtdSOIPKnUMemG?UPVSQO^c*v00=3d$cy+p{^pe2p+{f>CJ!$Q~BXUMQ?S!o- z)5AnVI`U*LuZMw#XFTk8o<#>+sZwc+xg;Q-U`HpIIU@3LfcZgMgUdT=RTEcuHhsij!c}IP+RNqkR8J8DlB?x4}?#g@?s>%6?JojdHeP(dUrPYiv&LUz5= zfQMm6wyRzCbYwYOu2e}Q>zmhe&Hbq!Jw$#wxRbrSUUy}B5tUnFt`M#Gw4pT|5wJWU zct|*<#BL+sQJ)sL91A*tA)z;^# zX-pYDmz-NIhaFi&veF>Ysy4qy6x~E}{PAJfV}(3)WN?W6m?4$QfzOM8nLv{>lsmDi z0UvBl_j&V~?Dr3bP2xeTr{~{};atCw0&nu_f;a4kj#Hw2+PCvoZk7|^ys-YohDp>C z@=El{f0tyKD;+0Tuq*0$^rEzMjErQ?KltYQ;GED-fkXDrw@TDnXU`a}rfpt(I1Mzs zXxY)uzkb!4nHv$DZVc0{bw94gqhChR-|n|e%T!+{fnJI+IH0$`EH-caxp4BMK^gbd zPBYGBFZX#HgVe8Ka&x5mhxw6$|79DVof~(hrb$guoD9e|?6y$V{OSdm>kjkZ-hob+BBn>fb<7C*4~2ck0%JYCDy2@M_^c`L2`^ zAMtrB1_`E>n$V3FhjGi@kftP84!25O-JB&K$~y%#GH(RR>x{>R0xgh-ka}HO8-p6}?Kx5R_Wr?`Qy_l?wP8ZrK!$qtA}EaENuGAd z))|cP@q%kTMqj7kUMA$D*{;dm&dR>meVojC>T~jl9fiAr_eeKO%vJw#ja6ad!)hH>`T++j_qxY6M=0jBJB~;YQv^TU(dr#U*Ge2`~Rw4wbsxssK~WlmtfN` zEPJV~?bk`wpB5HzKaor{6oqL)F`)xzSxnA5H}#kpI4;^Pw5Bh3o}6>!j8r$)OhR>; zB=Mr^_QEE*-fSU_BykjCVr@mVh8BA7X?ZL~a=}k}%B{GmRC2QgZ`m$O>M)cX+d^p` zP3}%%Xw?-mXjd zf|kt}snAF?b|dba-T9)oJC@IvY@l+zG)>e)A`4l1pl7b;6a2Jzp6XwAh0XjhUXPuW z$i?215In0?DWJQW-P@fqyqO)$oTZ%8J%3pgbcQut$tnC3TO{7!dg%7-4jDmQ1kY2= z9huL~PoByRdH`8k0I^b0G5Z)#FF05>qoQ$o5shZ!0XBxLCBk_PE+ z1O^yVV(3OdT7jWMxv|OB zAAte@a4IZh(-jV^7|q?WUbqL%2|?&S|frhfyg;8JwL%N#LvoyZ-tU?SNWv! z;oZVVvN+lsWFvE9zy6RoMEO#3Oy^3v`SMR=MWehGjs{w&-!#SdS8sBuXZ@RRI`kLP z-gIU8>fNVEtuBqmArd);-)Sgy-N^MXge~bHj1|a&zmh2}2h#`Z+bqL7w}kvzg@FU7NF*s^k8@Ty4yqwp8AoVIN9VB|-8IM}2X7 zzt_VkM;#O&tMP_3?M>NJ>0LxIxL%mx1kw0Mct;QK;4Iv!eB1nW&7bGn+$T==x%d>D zXA*IOm+Kn}AVR=Df%futiN39yHa6fO!Gqy9N~)a#N{LgqmI0lPj=SYM4mE_oM)v;7 z@~4f*m3*KyC$wApBA(CKlB69Fh?x^1Rgc3u#DT|e@|}D=1tpH)91`|GE0bo{ez|rK}6%~ zr<|JUvwcJ7#-k?sKbofEG0ZkbJ5lw^6GG4h&$`2*d#Qk3mA3&Z>p$$ojRN1f;csJ^ z<23g7w%(ev6?tuEYjM($Cebt@^(2M+jR=k65hpvh4>U6~)xIec9Bz%H?iAr*H*)h6 zt33J@VX4|1FZWNb-5s*x^#O=T=l$G*oR@Zy>Y88Oi%05mv>ckb65U72e%R@dmuXx* zgKmG$SR7O^q0q+uer3A*!K{milq);&h2n8}5l788W{6`bE+4Mlxxm{GpE)M{n3pm{ zZFALl zpM(|r=a`~*73!PpJBILW^Ve7mZEXHx-nxFWIwJ5&7CDjkVQj&aEETIN^IzBn_(wC& zbkU%t=9Lnb3$nB}*NJ1jU5N#DV%y>9J^Fr%(xLX{;B;YfD-*PfUh$f)FV&^R=ghyF ztt1tzJxXZQ4}RHjT3nTC+`eYEyWq(JL5W|ng$ z(*NAEwVx(h5WAyEaNe8jDMsMirOr7%QskS{MsKup`8ccg_AhSZC8QhF-b@+~?{AEJ zh0k5ZyvjVTebxEliV|Dzyh9Z>4{fC@^XW?oUiPX=+!|pLVd5m4_WqJL5V;WB%-_%7 ze4%`R*0WusI3H%kR{v9&^Z9eBgQd*BBOkRHZ;TCXrf(*<|G%s-7rZ zjYR~WwYEL%hX0Uge0%$2#QbEE!Qv;IN+rJ|RcCAkr^?|=FS3pj{!cO2JiXaTmnG3; z1$39&)3Q6`-ESICOjRsfoIln*s~~!i11mKcGOqp6z3qEkp5NJ}cKP*bQt;iGG)C9s zyaBmQan8f@L5vMyuJ;L*ku^zJB2J--2AhdSsr-)n%2@0<0=z=q)h8h7&o!pPAd%nc z^WS@8CwX#Kg0p!={LVZWSEZb}TLwsLhQW|#SHw3~+P-&MTLH%qmhm^(TD+G-YHul9}G zQl7mxJ0&4P^nq1C*)S2Sme9dRTG3{gHSXQy1mLVs=xXQo%4f*(pf>(-g`v^e#lf-~YL+YUW* zcB!%{$$q3204cCWBuGg84~Z6GB>9Bw6z3ROlE40<_A~@B1m{bq3m&+}y*uS`}Cl@yL59TwOoHo9XEj z{^H^<=Ft3$`r<{t=@N-@{HX+OX~zDBR^mwn7|!qL!dPBE4~2@S6b*A-r_J?4U7#%V zW5jF=UeFKOX4PXYwuNrysZe&?)U6k81r~jG*Yd486&h+X1;L8^ zd7QK2E-V0>)?=JhLU5M5f3Z62_{S@tqY%Y%%E|L($jBPa(W*C0=!=-Pl<5z~#x;N0 zl)}QmIvv~6OIhs{_rxZO9{zW47Bols9;|a-9wZg5adI5Zh3zQ{W?*R_Pz)lIRWv}h zKQ2R(t{MzeVbL?WPgQ-uWuXj0tx)ayv=+xNTmoQ)A!|(9Puo*&5r6V*d!9jY`xg#J zd7OW!-5!Z$N`JEPgYY!>|ZVYMxaj1koxH z>5oQCoHFIL&vRE!D#)=UMMZb`Wcy@5d+THMI&*eJOD_9NdcywO|3U6&co5TWw>6v+ zB84!W*VanN#5%KZW~aIEy!DyornzDMUB5wUciU2ke~A=poR_Sm$+jJr+zn#%o^A1X zx+OHqfXcYNfjNhW3TL6$e8dd_e>yvqdQfJH8GTA`DLoz>$FcRFa-P+@Xpp(K7~P(c z24c1+CZ{T}wqZPBhK(}?nAA5(*2ta~ZC$bGnUB*8%!PyM!b?2R38Qq+{{XC?HRRQo z_LpD3ZHsyQ7w~2&$BBL=or?AH{fU`&A)aUZ2O*x1ik1QXhG`k19D%>h>fLr;CI<{o z|N5uRH%Q)iy~>m48|!RnWr?F`7Mb$=rW7w2vOoJtC(n6%!<(X2&cq@!tZW#{W0rH)W%* z2%F=Z0S+Sa-<%E}wr~eCYT!P73dV3*0|kPVE=`0s1K;tzi)Q3|<%ABrj+Qb~IH5LH z*$^quUeDMuJ{wYzgO4P~M68*P8!JtcoefiIeANWkYl#~%+vF+*)2Sr2S@J_K7Q?Yap>4;J78}o72yj6x7+Mk*3a#_NOe%19wgJNDl(2HQqxxWKM2MH6-O z&<`7X#tIC%Ij+m{d%slYwz=QUEF73{NrL{nzb4bUhjZiCK2zrkP$&BPO%Cxs-&G>q zyN??sIx88uEEF!xI*3Qu)5fI!3zkQQTAQpmTmMdtH0s(oP@+G*o+atxHSrFb_;4d4_ z)w&v2K*tA)^Zo-RM#J1D+bY)G-9ncw<{9fKR!xlH<>FMcN2GwJkL6H5R)Y1E&AzvF zQltQQJy65T5Fa%JScA!}q?T z_dK7O{)x+}Umqmwto?5RcTe#5ZHWX>w6x|hdK|tp6wjzYrQAN% zT-l5CY|Oe@F6oGdq8c|6izYQbdv=O2`J|a>^QO1b{(BiEEzoe`cqYilrm;5m3~!b% zK(M83UE}Bt1=}w_BOk42)EXE?RkL8NwzzWji_ut0jxfd^S1|CdU(R2 zzVFU#D$Omn;W(O={npGYn*Po=X`)#MsC#A3YwYV7QoY2zYX7n=NJ^{zP5G4kJ5dD- zJD{@WNPbXzSG;~#Es4m?EfWx4i*biM=eakyfNUO>1!NsgIGZSCRHI(Ntte2jd9IRA zceGjL>{^Voa6le|N#w&`9DPx&8bGy!u=#jz{}f$Fc&5W4#6(~e$l9~NcKb-BXGf}x zzs9)9zFTFD0*+Q=Qew95AEG{PK%Hz*2cPtx_-iLc?s+xhryJOoIqi-$$xy`pecxN% zw4Zk*ko>mP_eD5{X3HAL2(hjs4t3ZslJI|*UvEbP84Z|Xs}ZVoq44jcNr{5m=Z}T^ zHMvd^$m_nS8l66!JzVUWOG^HV62cxHph?+Eo!(gT7`7VW$vvcHguXJU!ZNj6?EYzf zG?UV7qvKDw=m}4l2`Qe!g}l`^HLiS&OB=jvY7G>4-=TFoKpsmh7RG3HQyj+Nb~|8f z?5lw-`O77@HqEz6c{5_4ucBH(H1ilM?gbi%gBNpTy>g4B$^bLW#OWZL_#0StgjTd( z39mCXw+lXI?@kli_Gu2!qf=FQcYlX|(1jl_9{L^5&~EG}Kg4=2ocmnSI202f zeMerVy+%4JTpSe@TVD@yi;-pwb{$$ZqNH;REiNPf*5v48Q^jlD&-mHo-r=;1umn|; zgA<0LuVwP`5(z6HAlg1qPBz3!m>&{e1L1Wh_Q57bK9u?rN6Y?ol<*9TPf01L7rrs~ z<{E$SGOyvICQ6k;3UB|8K^#U;(xcFm%8=+%Tvu=X5Mjz~ekDDUnm8`0-gCu+{HNJ(@IQFu%f~onC=BzYAk7!D%?&FlE6GS!V^!XA#y-vb-_uHrl zLs{1`c9wah{Msw)TIkm?JzEDPXMUc)diX2`ugf5j$NhXhjA_tdS}2 zFgG=Y?XiG>KP{G#(pIo~-N;rSiV`9kRcJ(bAorX;We0vNg(5v7#gEJB@Vb|=u=*Ut z!!({avEI_#Vs25aWpJZjDlViO;@e< zG4r%ZORPZv?S+{VO9e)qsVe2Svp!j;1pVuJM+MVSlDO&dFK^OYpDGou&k?ekEj^%g zPGKPs??llgM@*or91Lt20@0t^vGqJK#4x&iD<|+ihc4^cz9&DO+u0_j#T3@28kvSH zHn5U4EcW4nWtFWH13yT+_uh`$l#OJl#uBJUy%}q(kDFZH6j2=2woLw+(a2UT8Ro0P za+4UEsCV{F;FzXnbJt&WtIb0Hoh5@yg%$1!jlcWaSlujGS5#m3+cpM~$8uHrE$L_b zmmbS+$M%Sc7(Wl9R~K*?F0`Mr7)VjH6Luq-oxQaWX{t zQ;O$hP}7ut{-^E*vLLP`1$_oI`DiO zs!jSrCz_M?sfYgp`7&hwYF($TkZ~qrbta07`37|JY<+9Ub+eETg&w!0Y_SO|?OVBT z@@fRPx|mZ$1ba(m)Zw}ZuKL-fn%_JBp?_@p&EUjXcIVdg^8Hp06t}wl_DUY%ECtkJ zHf9Kt&Gw5(7+3B$l#mJx32q-<|H-vV@%Bv|ZbbZ)hlj;V!hK2S7pB?h*6b?O;X}|9AyuLcLg8w*OyRWeb-vGyv42V0!{UCXzIGMQ4V@3 zp-e0l2i{yH*;VPuzUMnyrl}$y#^P|)V>tEg6%dF8k~afqC?%vxAQofmS)GnF!*2M= zQRJpELidc_brd~Yr+k-di0&0V$Qfb`9ArlQOZ zWJG&WyI#`P_Kxzss6!(vq&!_(sza`a@f9+OJrE^CPd|X=)=c)zv11+Iy}^kmL2vfd zK77QSGaNgxWgqt2?Dwxkv@qHLZnUcULXaGs?(dWmRq+2mr~O=cm{&6Q)9OAvV9(Q5 z(k&ELc92#Dnm=IMQ|L-z=Vn^^@eH|TF<$H*2tDvs&i=c#&3(o+^B+!#KG5}OG- zE34X}{avb+9k>P2F}`#6`m$=-GRC5Mu{5ZqOSA80pYtqVOtik^jtykfH)2imFHG9K zcO>owiqwEr|A>xB>S<51#hW_r6vr6`NX)e;{M8^!4ZWFWEga z%|qcDdL9@W6#h)Oikq$HlqP*t8YV+1#l2rkW>Mr$PMW^8^?IR9)ZqJfId#5pqIO^= zr(tuaOn#wF(&9Yr%?y&$4z6_3l4*i0B)*lU!-c2Mvl3U+dM}>>fK9< z+)}fCi%yIOa`0<%qxr!=7LKZ}DzrBKv%g118s|66z+3XfW;O-=4cR)b=>1WkYAeI{ ze=dDwLQo%JOD-WmB)&|TDM`UPDXY4%I>7~^=b9#ZgX)6(U%}BzOm4BPW~+wSAL@%< zI95tx&A`f>g(U2^cC()A#Y{ha4-X0}ov&F)l8HqLAwNkz$kRL?#P{#0B&w*Y_5;aV z)F9k+EeO{WOphLWPz|ldb9Q#e&@=^OOf+@WwArw9p%MT>%S-IJ`@Xa>nr8yiLF5C1 zo>rV`z>^dmoYZ{BLH2PZDc2(_uq+hjoxb?Cm#o0*I)#H7#@=`R`(umrGoWnlq;y!*%FDT!|Xm_XM@?WL0^vw6NbMyg?X?h=+9g{e(uceyIs1rLQS z6QR*Kuqg7s?WAbznp#%U2nR5yRZqFHaKJoohxW=sr@DkD9jC`jMoKx>!K5;`LPvR2 z@c6dp!r7bHQWI**a^!dM;l)gJbQ2D$F6W)79B!sXTGeqw;DlK&JZzPIK11%vt)&n% zy{dj=$UiFR3`-hLa@UW==iW>dG07H?^l{^YX|11(MGaM5Ik2j|mv z$ivd{{d+H5Ab@w^Z4+w>wzU1&VT@~a#RcIEl5nSMKf(IYKsE=0PC?)Vk;&3eu65Tj z#6>2jgUwN2flwY;{chmvW=&B?5we|B-sMWB?9|N?GGUBYji(Soa@NTKNYY6hRga9R zMo)Z-*a#@Yvg`8?%ivE2hts-fw=pm_cbRcJLxA_@`tx@Y;XB%t_wP<&fr5Y)m$xzI z$Z7Bx6tO zsQbJAZHM=+TgpDEYtaE2PZbxNf1mA-r7J)M1nG%(LL##o_uDiHGF07BFi)29)Y z%aW#`T2?!xLl|Cz{}i!v{##T0YX;QbudH#LBAH(`uy*MHP+i#%8g-Pd5N#<{u_wNm zsNfV-#)2=E6=ig*Gr8EYDjI9S^{KfhXD6YNj^4@mKcKSykt!mr*0ol;f-D$Db88@| z_8)L}f@q2uun-gvAk8dxk2Em>$ugueBxOC?leIed_IwmCz6E#@WqqHh+#E_7Dd0)q zMRWCm1`Gj3P&3tNP{vJ7)SpmbY31uWH0HtFB4g)5rVa^Nu^BCsbn8nFGuS@*wkv4O zp>X!;+9DexvKM(aLB}`Owt}y=`lhf^ypN@3=ho ztfXmsX8Hyc}_xw@GORl^LDxEZgcd4oDjeu_p7r(c%zC9 zC-OC_ZjCn_Y(9aUOZfTOnGuCP_3u;VJsVI2FzjzX(yyed1 zn5d=`LxZ-^w7mhskEx)*@EOw2O=0otAH~@Yf1Yi(;=mtbl zcB+zZ-)_^Oy*Ql$NB3eulsSsSqD25`@{%-wz^2}c^xz259%C~v^?^>Ohe@NBf+z5l zIo`r}MF~LlFHGP}XjPCmln}uJfleu<3xYmw^vNYdWs>zh4#9%LM&jP;S`}E!Ek|{% zaW0HFzU7O%SGnAhjCAF=g3k`v@*W7hysa6-7r|*NT~A3R;7`d)N6O36DAMfJuj5%hb$wqJLxuvu zTW4%hj1$PsZ{cLjjh|2HV*MANHW7GypJ6R?GMLI5r==To? zCN=jXJHkdvv?{YoSS>FUb(cnWB}==q6CGUm?~Zf^S0Xk9t3;^<9WArXpOdLL7~m~1 z9bEziXGcq3Y9dmxln-Rd-0i~Jv{5Lq{^bE4Rt=L^4xz&|i`{TUD(JOa>}2)4x_*p8PE!DH(p@N+}-R*w*ue1 zGFWtZ$_Yu5IK-C=rgfH&BP0caJU*(DYr>z~^0xPn8M!~w$EMUMNomX4*@7K-7{eUM zsiYt~iqvQBMU=q2QbUJKGr({!Lfs60w5pb1kb%?{y;FUGK)ibX+k8)v)m&^6u1s&U+A!326uz5F0!`| zxUAHEM)e;hB2AQ5qgC#lV z$vq#xaSDG(d9t@|fIBlegnE~QH_UJl{FQTS8gUIRHd;8C40q@q4md*{L9I0V^ zau8lJNRO7?5mM;yfRS_b1+6%`yF%$5m3|ezi4h(UFUQ1!9H~>$jGK;tD#k40Uiz^8 zVbneAcpZ3aI>(!fcKdj|&b=cxCTYGK&M+=9a#Y==9N4nXWOhdeo@U*q+U{hWMrQl~ zgA9<%ujQ;YmXKLtHM)p&@Fe{#56o3uL^g1OCJD4lIZghwR`3N76bH)z``Y4u92DsW zIa3~F=&HK1P=QqJp(k#2qzqA@tJ`^w|8Rj3@q6AGva}%hpDU!2Wj&f9Q0j_FlhF3} z6et|Z>%^C)&{StyiN`t87JK9V3gO_=A(Y`gH7704jx^D@5fRDf3)vr(gNJRIyXx5+ zr>M}nv^NV;K+y{D@0<%1&Nt^C{zABPEt%giB6rM)YR?n2A7CgGB=O4BFqucf`mjri zm*N?M#$_n^k9ypJ%d+kcpf`==`Kxmi)oO6bFgbd{v5zUn>B zh#zD_uQ7kp3oHpmWqA{&alu0axTW22AcYHZ9Gr*<6q4`&)DjeRFrK&G|I_^*$OAp6 z`X*k(4y!`b8UH|Vv?2?O#+bS0TK+#%A%;}Ls8&Od%~`c14T%;Ubq?B#c6TWtv2cz( zKFrhzyB}Y!KcJL|Fz^#wZrCg3GOz%H1Z$tzGpBPTjnSheAAJNloO!FKO-Sy7_zcq4 zU&$F~H0L&v0|F;AXS`#)oh@^{PLxs+;Yq9zUiQyt2kC;%@7Myr^X#<6A#?CRu*(7~ z`}3*NJ{YgFtgn#xG#xd2VFvUJVCf+&UR*z)X{K%;fjz#^AsIk>HH@^b#yYV8rF7H2 zii|qo3HaJeuuq4C78SkRir`5jWn16%0Z65=^7pY{PV>$xRk^$X?DH|WkoT9~7`W~t ze|EMwi%2eUz?KDY#B;GV54SQv4()*nIazF27^v8DOKKIQZDLPy~QV2(Giw9Fqk z$Y+CR?x$2C}$Zhdj;MibmqIIN|CXqKjTHsWdUNL^}UQvlXXk)Xk%Rv{r{=M`#j8K6k4>5 z$xe8Mj+$1ZJ;)N4O8K#rD>f7(q=K#!TggD>&-T-&Yh;Bo4n!5jhc|{A8%U6b!6zDL zuP~E+rilGAJtp0OfY6>Pv&;yWM@qRO ztLgvN+R|Par*(^lStI}o1qH5Rs93uT3K)b*EWQYY62Xi1rGgg!?kWxdG60>wKs3Lz zey$x!kCx84*YTE>h@c>CZAV5M2Us4~y{uSQKvWj%(1qgnU$>5$6VIpsCL04}V{v@# zFl8%1JPunGh~ikPO;=i?bc3K|RNCZkB^c;pM4(Y#B5_i2q(A@DGGLY{;#$0% z!(1-Tub^moMDa6LCK9rJQa}<_KOEOneZEEtIJ_>=1BsCBXS?6)NWxPTz7GafwhDZ1 z1(4FQr9i8!<+ZX5|NOsR1j@uaVu&&cKN$RKk6g@8mniTBZdQRJ*hwuyWyhEHd3?w3 zOO_XvpWB5_ohV|l(RUY|*CuBY19vBMEUB>OIKMB&dcFg`IYTq0kQjX)9{q+2uw3P* zjDIH4ATD}gLT>`0n_BJgpq>bilaMPwU?HUpR1fqZivma(6d>QY#lX2KoDD_;fJLvu zj?>2*mhtQ8)`(XKfy3feFLGrL7w=~S!it`sMXfg9nhbz8ROrW87NQL+eJRp6qJE7O z`Id!J?OL%UmacvAz!!|pmy8f{9!?n(yI@NyBG~psmb!tVyQn}Ale8L`Ir|8dDF{8k zPgAL1;;p3c*ae;{nca%5LgD4wB6#rXBTAWEp(b_9gms3}iO?(%W1D-rxC-yJ>*Ed> zKnh(*0T+{ratel0H_iX3)xM(Nev42tifT+FS52?4-K&$>aTv;^S<7Te6ZXoMQd;S}%PIh)l;nMijFP>;$;YPm7ihq`V@@gPyc^t6!nG7)5O6T@?wfZL zq7AVh>L|L6`bnk#acR;G`~r&9I=+6PZu(Jb$Be`5^Hi|&)}Ln9H$c?#0h@qttOJ0;BGPZl1>E0S+;np$PO^Z=t4P<3wIJYawMcKz zye9Mi1T-~nie%|~Vioz=yUzw8j?fFO6~;!ZYh>ny=&QG7$b+ z6}^m&67nwRzLY6uV={?K)A)qh&FS|8_b@6A6~M*GA+5|F-bb7*|8?A;SLMR^H!eFw zj{Iz~J?G5`n#Lqa8dP1rp$-rJNUP{w6og^H)WMeobopM#_60!IQ(sg)2b34eo;~A5 zgVYJoZwiDa`yEekstY2}r$}O?2dZQu{r>D=69CmUrnZ_H*FI$K^0(77H^+Hhk>{`& zGyT&!j)J!JE1<7LicEQ0E+nT+m3MA|19D&M*jZd7?veoH!3b}RBrD;g_=N1yI!5ER zS^$_RQh{Z)Of7qvcKa3uJ`Rb$+gL;`ZA3EBJiGo6qXa6QzrU$5=72r9YGWxP0+S~& z%xlQ37Ku@@;g{aSiV(PVZl)VBX?B+O1@No1FHZU(^a_K}sVk5qxxaqem0rqOb7qO> zKb|Uo!yYijDf`j{s%X_Gz~tOh7nU4de5z__1Hjhef<;@3Wr5TC8L;plv{bkXLeXVS zo0NeViNAoo!=#e;$rz}K_jN0eD+{t)+uS<(6b87pBV4dg#GMM9ym6Khfi@>0gRyL^ zYv?6&tBvMD4D2SXEHkKIgjyvS{_crTUU1Zkg_-yb6igXZMjL$>8hQ?-mWXOOS`2@3 zt}zQgP_|yJ%p`n|buW-nrR^~RGMDL0qwMibiK|C54KR)+2?KZ#^CMEmahO>){qvrk z+S+$)M`(Achwa+|71R>bMzP($GRB9Z8Pj;3EtrLxbzUazqv)d-&fV5OeBq5-vnRut z@IPyJD{y|R_b+MlEkl2vn$H`{CY1P4qVCzhNr?e16R~~*Oz4KE_SDF4owvC9uTz6- zO~b;Y0s)g_`p+J5mrjJ^toCeRV7cM@vdBLiY=h0s?Eb)5v94BL7}0V*OF!ZSc^nJJ z*Co9q0Pq|0zO?+}d+?<#D;;8pIYZMpra5dsRwe&^C0B6cMD+c->5`zre*;csp?W2} z97E8jHEo3Wh27K=TDa^*tB6-^vzDy)0qb zXY>^51Oy9Lg5NiKc3Czmv3osUI)r9&Y|eWc+c}E|!0riv?1}><8g@s+@rnuCaHUYk zQW6UGlVa(v6y?#L@kg0_M;scMA;5acW0Fk-ke=C&FHT6_NR58XNdVA@A%B=#gMUd1^?0ApPd5uGbtnsigv0}ymE&G3+a-JO(&h(_s*S_ARIYxT zY1|;!yUHJ^h*^q}*TKWx-hwn5=;_mT()@i_dSBc%h5wVzao%@-XpdRAE8Vj@?1H_7 z2tTzb7rJT@V5(&*I~m=fs?NlOtkL)2IZbiAIyq;rKymYkza=&N&|7W4%5054L`N~F zFa$J<*dN}PW^?Z^7_(=Ei>vt4(r1-4#-`SenCnUc6hU7zW|oUVN?UOrweA^67Z)zf z>Y+l@YI}L!_dXv$eqrRFP-y+o!#V;5*??A(R9XF=UyOzJ3RwKwU6_tfciZB8$tSx& zq%??WjQ5Y$NQO%rb=SNJZ?SxxQP7$0B&tp0dtxMGxtoeJi5@R41zUff>?ffdxBjz- z+cbY~TK9M;5lhE{h?U!h>#c@};t~;y|8Nql{@diF*x@JSUZJaZ#HzX+<2I)^04_n$ zjHSWNj{{#kJ`@XU8Y8u!sQf=gI#OzZmd=#DYI~!!P@q`rDK15T8?GY!!B#1<7kRsu zd&DAypam(@4Nf%Qt))sB4g*p&77AHRMd9bTJf0MzL2<(>@+{e-PpWL4`47rx6`Bd4Ac?@CZo4 zHk3X>~bV<&ERh(EG6 z8}u|!XSzr=+H+*UmW-gdUokrXd|!6cJwquT0G$&xSp3?!(@n>+z3m(-R zlQ{re=0MJqkQ=FjXck=5nWzTr5{B2ZQ4p)wK;l$6f+0V_-@lqi`jxDx{I?+9x@K+y zaoFk}XQhH;GH&wO>iF!qi)BYVavQ4tw`GD!?13 z|F)@;)`cJT*TJ9X+qZOt7?2OYYWZgiMJr`vW}3NniAHWr&%)Ck zRb`giDR!9eFSxHU$_x}1Q`cOn(y&Q#ml5=D_GRL(`N`1d>dtl;M*R_F(Tc)1%Tr=w ze1w{Ss_?)^5Xc2;74BsbTk_J>avh?f&iq(ozWmBXSGx1)o*{{uT%{bsK>H;*E^R7z zvJfDb(Tea$flm${mg9Jx{g(UMus&_E?X}PUnGbJC$_}LXIUM7afDZLi9r*oAhlI;1 z2(AY+YPx|FSc~eIo^fuwUbYLt@R#@ZpC3rb)R!6!jUF`3O3|{yMbb|?!IScwKzq8# z6aMAbA-&uA0gEIs#R~491(Jv8yM-LpXFQfS zgmaiccjm3ckoVu$N)=@PwV6qiUP`2#>i7J6Q36OwOSwU2JAJa^=vaJUqUm5F-JLed zw*PiKp~DTW>#0Wzg?RzDt&;t@x+Klvy3R#Zc_tQc=S!9jJ(RbZt$j4^EsXdTRi$9G z?+hHeGV0+2@vAeLuP&p7XGcZ&T7G>6D41GcW@YZcpOgQZ|05m8A9?VL8tfF{sTwnu zZuK7knllpXt#a*k>kQbTlq~U_nVF!`T#;pPe2X*)wqxWl)NCJ1%^PMCZS}q&gP~Qz z&&uz=5dw}?)_gad=<=j}*_eR$=8l@7Yd2PbB|Etw6N7)obhg`ig>$N-rEp;D^rvh5 z{1x&wm>YCl`zsLOq`^}(32QARR`SkF*u3|YI*ci<9$3lgIy8r*fQrfao#)nlo{;l8 z0INhpwybpdVQfgU)9=s^;QJ~HEahjm6;;w~7)HI&B1@0BdCk|U?fyVpUXRATcxaUN zZIYSu>}P;OD(?9#;sCh@yYfqNqDGw|U&vnb(Yp0ArZHBBw4#D4<;(V|&1mOljx$bX z4D_>U8-~E{LFcPsD3H$w4Hcgy;C^lUvAr{(wdqOi@qV=W>3Y(k^WlCtuJitW@^!%d z;dtjsXTVL$)6;(E!|lTOQ_p(9!%fKwr$~!jMgj3ho3y)mpU(GfgtQOjoM)Wo1Vaf& zkEYRKgdIm0UIR8fXywo6ma_B=SGHxUeNTY9(yK_+f3X@XS9{yha?+a&munKs`@U?Q zzbm{vV@e+OHTl4r0>apR?WreDrdbWUU#3@?RB7p^#&T=Tl`-%_XM~L_$B5^lgr76! z4`qChHC<&?*w{vMm6doYtfC34yPfbXesN@j$^JE)0y@TGzvW@=Z9+#MViRf>d^Ot1i>ej>i4C-Uk7hkMROTt9X>AgNO+xp-qGa_ zR&59`tFN3qT^%6mN1*>e!I9g7DGcmVxS6n_MDs@+@i-5AS)}Af{muV&DZQ*YMZ@`~ zf4HF9@3JH2>c?B&k~+mSOp{65SoZ!ChG#yewktI%VQ6i0m4dXw|?;?XYOC;0H;|K90)b`u^Vvc;@G&IuaJ+e#H-< zG~<}JKX%9oOcaNJ;>T*7U9RV5*`buY|GZ&n6rNeEyC?g!myYCx$X_|)KzJzUp93@?`b%U?`-Kmd}JFl(0WlLVKZCFszLTOwYlpiHhH#m2aEL*Vc_l(->Oq7)9fknZ`zk9+TCJO zP=riV(R3Q(DSK{%sejY9N6g1gcIzrKfRL`h+dfeh8l>efU(~G$)+ULsWIaCw`KUDM zxRSsiOH;1Csf3A39WRKg%_yxjKbKUo^Q7fMCN8M2Sl>aI8cSW%hUPv#T^FMG|Jxb( zN@VWEs``e7&@=@`o7)aE8on!K$H;Z|FFuhf9wyr_O-s3r(J$!r($@93(Iz@HaDt@N zFYPdWVV)x?=Y;w^juedPbS9Ob1P9KL)oD(ixmoTWt6X(}_@!`*4HR2ZK7DTy*G5Ph z29@avUF7~`G%0j)6Z5l7=mT@y)y5D;?RTVy-YU&AG2{;DuU$#W9gs0hm5zgP;m{9d z>!sU&vk%7)rq-#3hcr*Rr4PqdH^ELnyc-NBe($nR!3RDgRd#w1((^TjGq)CQ1)MZJmt+M;9j$h_=^n_mjrX@OVdek6e5U;<;Xy+eR z&(UYdG+=O+R<&uxxJ-Y!YjB<@X||}`@uDx=ioR^i(CuC;bWq8pZJ$${WySf;i5;F+ zT}0oxvHb(rfYzZIZ$v@82}?(Kcq&?P`DEnn%p%80iC4!9IhC|`N`BKqr^yj> zqEXcau>B421?`T`St;SmI=5h&YkB>q9os^CYhv(UzKGk^g1G=n7NU{UMYq7kXZEA0+=%gf^$9{!#Z6(!yp*|MNcD zGq2yjDnGYCkyM@)IxD2vXLg0@NUVUfRj!e=9{H-)PjmkUsVaGZ!vwcg!_RLqzYYnU z{j#?!m~#ktFTr|l6I;RGxDGB$d|s058%1znmgdi;5PmS|$b24QOwZJ%)%QC-n(s6k z*wkx~>^ibs;P^-j?A#r+VYj^Fm-@hs#sm|=86MU-IGWOZK}cB0e)j;IBq31`;pwV=tP*;|UA z;vT9t*6ya%r>7oqeSr04jWWqaa9~A-W&%~!Q69W3C{8fb&0%ahZR3Mukd_^R-mXQ18L>1*AN@nn| zn3l*Z^;a9!NguRpA4ity!g&*{om}s8e*i4msXmQtop`n)Y84w`+a$g@`wLs#z6czz z;x!M{`JCrFv$A=<&X$jaKD>p=X^N-5+e`x*9o-XO-2$j2PEXhap>Q7+9#H1D>TEn>-&@M-=;wqJmnTC z9+?HI9@T;Y{SwjApZ(=H1BEY{bOZjAN7g83W!klJ9{$ZF`S!O;$*uZd&P+S{OQNm2 zTuE+EmdX-$oObzdN(oBR2bB}=1M8&HFa6$ zOm)LBVyn?PnOcN+=!uWW-njAr*MGA9x?*Z6Sfbx^<@tn+dN5y0sVGJhx5oz@Tk5Lb z#D4Li!6#qfQjd=QoB0z6?D)j2s|>TM#d1hkk0K_!_&73Tmw>8upof z80o@p>fxS&JXdDPwwk{&cqVB)Z=U7>t4l9C%E`6H3xp#4$uk%zaC&#%X$YF5AW6D# z_TuyXwUwil zc@YuZXV5c&T`6oe&{%G(S1NZL`F|D05&x(w)i()oDm<+3}!Xi zGxu6(0Uz1o)@8R`=L>Vxp%2eP6loXExbAQ$QsNiuoi7gxvMjeu@%+ZqV`JBqRtm|&?F$5o6deOqyIFvNQL93!m{r6osy3ze7D*7B@*%Z~ zm{qh?&8pgalOSrZ8m+2LjZnMxrgo|EyS~5w?#<0Ox%ZrRJn!?oM^Uz3L8ceTr}~PZ zBhR5wrGM@G=Vx-km@u4*uJEF|VO#TOHUiYI5P~qr?@2R?@AY0Q(6~3TCc}m3p#zcY z&D}<{?y6f6<6$2rBju@wI%5EcgX?<0r=H%5m4ov4<9nw^Lax8R7w?JpJaHjM{PW5W#my0JqSg{f z+xG5em$`t6U%dLXgwT8^%(|$p3sC2ko@_22)tM*K*AL0Hl(j_li96(P~2sTTp0CZ_>9^aZaPYNT{;>+#3x{l@8+9t-ub|2)Q+0W3exk@p%o2m zY)vIX2t6$%XTH|OgwfDHQ4BLR1Rcr1qj0^Eiwektl%41=i>vtzhXHhCqnE9j=gCoo zrHpw{X0nG*e~`QTUIAvTuVRzy{x>cbhn{SJ1(*cB7^?2j^>Fa#{2hsZb8V~7dT)kb z#^my*mU$W890k%24}M`JpkW~j88(@(`VXqNH*Flqf2$19hx6a6S2U;6D3=X_E49fn z`1-V@QXsNdeEJ8foJz9Q+y0erd{QSj9Jo3#!WftTD!@vZNoU4JxCk+XU4 zYaadc$^&$42FF?2tIncaDZg;nQqA1OY_DW&i7^9%aJs<3q-wkm?#bt=vd6!v4HJko z6X~f#gU2jj#|U+~Om#900&%?iN--Tc68PDrg>}4>C!QU-pNuA=v#30OBIkTJs{%)i z2Nn8HWL)|xK1I#*j7C~VnsG?`8vxkp)>V)?!>cchaZ{4>x5z#s4Uc|{UpIFf^c#kq z4}sgG)4T2iC=UsSVQV+9@oS9-I2>HS!p)<#xh~Y~X$kn;urXZpazFf)PuGoAR)Rc% z&R__}S(&>=2{4QW=V^$oL%-lrv|7YaQ{OCnhd_FEl+d7jaFa2eNBzJ-O4gFf0J!y{ zpzu^E+*N%K`Oa!pVP!gdn}DnCPOC0S3E~CM!*foShsSF#ci#I3=)eQh!5$6w_D^(j z>UxS5RW#jNub(M`h-m4@=|;vX!;<^76%?TWibRH?AP-OVE&Z8oX9SFM1p~c1pOGb; z#)b!svFPFvW=1sk7uZ!2;NDn_z_}8N)8cvky8&W|J_s3u>ur|Flm-0YzTr?@TfC2! zv?L7pP7>IH+?s;){;R`va#8)n@ovtVYW~Hq>v{y>A=5iTm8!jO?^2 zxgpT$9Y1N=_5}>pZKIypCQxG^>i+eEsJXWEb6!CEhbT9m@@YH<@&da8gqYfrMDpry z3WvXmd4)#DJ|odG;011m+!my)c4Eq0s%H-au{ z6-bk|q%w(F#rT^g`^w$@3>1xR|E`8Zd+Og>rUOjnG!!jNIzol?w;7emY+0ZcqjZo0 zO&n@=#2_r8{!_R_hs+#sY6Fq5tnBDVr$sb~>}Wl`;*+2%%iN;X{2u6(jaA~IH58&W zC;M3PFS>cpVqtJWPGz=U56U$X;EZ_oZs~^iPj_L`nU9_4%ltr+6;-yin7#_QdER{g+f@xy{l4h_gcV@%>Z=lG*Iq!?(Xj ztRHxD|JM4kUcAcsCSsf5L-q~VCF3=8ZtHs)nLPns>T-^WlWj1c0I$1s%46}X_>hkP z-HE9Zt#Jk|GH{aQD3HEAc=w%zR-1n4&DtY@o8OdcRV~jfyK}M+uq5#3hJoDRH($v= zbHiCxNHX5RLEc~3Iq<(OTLTk7aj3x2hWjujK?j}>5Tka?{=eKY(YElVX_6BnXw1T% zTGYoK`Mior86siIlc*m?59eIF0_&0}42)AKO7*;>o1D~*Ki?-zHubQ1(=uLVDiwP} z?lUMXP}KYOO=y!(#OAO48p7ZitHIQ{BaZbh5W8K#DBijs@5vS2K%u3DT21Q=9o!LH;zY^H#UeQ%gKKspD zERGlACdyoY@Z?5LqycxL&B;&pY967bbuSz^>#7&9yhv^IY306CfLwZUa;yAEQ>?ev`b#v6Gb?*D6)A60%&?B$DUz@ttVm| zl7N!1#<6hXhPx04dIE}xK*KdUyX1h1jNnom$?F*3uTvnR00MDi&z(RCCl5xFzy zL+YPR%!Km~eZV55HOMlG3`iDpz{!yw0Om6yqaykDGER!v{&xwoWzerP@Fo=?V3jgr zzOk_g4Kzib&KkF6gqvKPHbT^1(A}5zXA?i~ttSNO)_=Y)ug+u$XiBOWg3Hu85!S0F zl)w{B#kzT>#xi!es}$&~u!=n7{0@Wr(Voq(MqwVYF@K`KrF^Hcm4#FgVe=0cLEZOoQHN;7{~MXw%D@-o!WH&Z?JMm<|ZOpfg3I51-F;T zK!#vXqXmn_4f`<8)WNCsR=o-^{d%}=arECkF#g|U-C&WC1C;+u=wvzWxiH$;rMPOi ztX?XCJhN1UEe-FBGKPbAc0KJ@4wUXE4>1uVj0>;@2()MZTS2o`Um!6wxrWW~4EC=t zKko*5$M|SUoV)%UW?|)2d1vJZXbU1WV*Ez&S;9rZc-?c!%V$er6dPWmBxOl1@Z4>i zh@&Rg_UcZCIFwMyav$vQ$i<#*2q*>>Xz4I-UfWnW(-h}kIeM3f5yP9uQ(o1(5|;cp zFCI~9q*L!xh-oCi51jK}&mJP>cx?$w>^Jn~L79D8q7lN0SOS=x&{HL_qqjb<$wVyR z^5J)Kb;vZ>ag2TB4P~UyR86;0WUcHHnSZ_1Ax|Zy+Mb{cEKZ$Ww`d6sVooX`$_W>G zl0d#s2#;v9DBBke`kB2CghsIZOJHZv{Oni)Ttyo;Ia?LG>oIg|Pr>}F>n(Hd>10T` zV1(G|+oBiQ6(l)GiA4WI%-z4U=`?nr9EA8)o2F1iuz;Bz7DDzibvBNbf0e4OYWNDz z0Am-!&|2J~zyEZ$CTPX!LR^5E^^l+hp$ku3c{iB;wzLtn^s&+uJ1^D$VS)&1e4aoN zckIB96&w;Bd%78Egn=iQaQe?p{sbQMd=DAsm@%OJ1?ps??YJ7oq{jV~9&1n(>1&ES zX)y~%fw2wN3G8XS0q?cRpYC|)4PN{VR*jQ0b|otj&`TWqp$Um7)EIXy6QlDuFaCscxNS$ zYA(mOIFrn|psjSnKhEp@nu{QP<<;t4ZE*)Gbjr^Ce3`?;NnMl&sGR3sHy<@23z}Ya zfOA}X75(fO4Pz;Hh)Z@+Sl9~w>vz^z19HV^@;<{m=Wnlm7xVyMnDhx!qQ@pXadEGh zcM^zP^Xa*t89l~_R}mT*hhigqGmQA=)D*lUPY7Y*nI)U}8ZCQszWaa>r^G))GcE-a zCAjFz#epWlROP|Ao@dqQ2y>!VU!1@Q%WtnJI!xfOse3ZeMz>u!WXo{-o|jO-vn1Ln zCs0V-+tT!5<4SUPlGp=oe6lk@uGq%5?cpzgj85(E>G&5pb8WTnBZdGYSRxg3CU!#S z&MdF5Cy68{|0KV3+W?>g2qZW48qZnMiLnY7S**-e!s4v@mM=WZ3%NTsOQfw5Ljm3Pyb7aL&)=?lW{*dp4=#Ln;D=SZTbft(k1 z`lvS z#ZeIi_`g??=Fd_2i_RqP0W4uSdjy?G=2B??-~V5mv+v1vMcpb*-`jJE{0E54HY0Uy zGWZko^W?pfxo^H)G^jRj7t78zoTvqW5h>HxvLw5JAZjU!UcT)fr|NQ=oc&w!2E>nN zI#mh{5Y@Ha-uq7h(VE=xtOxj(d7pxDJI;FaWzaM(Ye$2qMD1*Xw^qfLzh1zNfY5j{ zA!xqf4gkH5SF&`<(r3Bm34h^jPm5MpC3~^c`_ALh2Owytfq{IN2b=5FPkmW9@Ivz!HB4x->M3E8D^_GSFPA4p+a+jnPzgbcll&W;wmvN>RIr#M zeV%^%#~>J@ODQ1)Yj{;VPV|RnE-mPmIggwCvFtVjklTZxp0rq8zK<0T2@x()b;RMP zh_(LyLL;!^gK4AAO1B>^f7!tRq;o_ysHC5fio5UMgOG|6^@>M+zus+Ig|EI+657_}P>0R`rK+k5gYUST^3WM3`pa|LKfic+7Lc|Fu@oN@-nt@Ice7gXpeTxE4+ zh6zrBQ9I>zy?AJux}aU7+76H26^Wq3eaV}YodsIW_yl9^d`f@H-x;!HF{%9n%kl4n1O30T zmyzQ9M`}d5K%(vT?cfrw>6NZ+>sqscd4mKwMn9~@rYl(~Fv|-Ls1;H_f?ZMoZnniy zc;gJ3v79A!$uAhreW6VeCfGNPZuR-x^cMDh;{bkmCT)%dm+jJm0+9K=_cHa02odG6 z5Nv^Xl-$Kh29~%0M+;{J8V8wK8v=m1L-3f5M&e;ThPLYL=$a4_?uTvlQKgEL5&VR$ zGvlY~-S*&o4!kE7M*M8zJg^}&7+#uBAIM4Rhb$S8etIS*u7Bj!z1Q&k zi}aeeQK+uFFs1fdqOXy{ys$3^Bexd3L~9nQ4iLLr9zD)Ac;4i33EH8s8bIF zs{gMku+o7&?R~WRj{^djeKWPirxTjSkRuRHYsKCDq4!Qf7TX!YNA_ zEV1w438vPQd}lS@Eb0wg$%`VLorPx0nLI~>UNsRS=0u-qZUCNW>jirR zxS@YAJc!$NQuZGsF#>QW(h!J&k!E2B2gJH|n+QKXras)~9ur)OShf>g&k|e}c=f8H?Qd+4`PWTX{o|zUMF2SmqI0CmkM5yJHP+bCH;>vo-6`vVMfAhA#^LCpX_l!*M5r zWz8xv9((@Q5N5v117#mIcAPrIs?dQ zwXiIu&@mIe12BfT0GR?Q`7Fmj+tRo=M&2;xBDi_)nltyDN!?p2zrrCAHjgg`rhIs_ zeccc0D)w&&jbO+#@&>_I5am=+0iS5XGv9}|IT6RFNrVgT>Ib#!*$VDc?5+2Jhj0Na z;oQvq#{8S25tztZCZMRusn3NqDe&0;MrdtYgE}z?vhRmx$qUK+HkE@#wAGh}e^?#J z8<3A&AuBUs%p}`u6I2}{rRmGGSf!RHWAlUgc7R#jGRVZpI*R3?(S!=YcZ_T8#nUi%lU`)>^FJd3kZ6n@0>trJP=sG=ObwlYzt3YX`@HbjctV4hk1d*d5xh! z^R22_xS@*{FC-7@DM(ttGM{Z?{v-2y*c^~2L-Rixp)D&my`$|K#iHGoVUT|`tM-tnS7(f`s+akL+B zt7~xEo%pn_GXhWkhr)Wuy)l$vmxMM{cM{-N^yt419_^9# z6-#B28PrO_nO@}5yF?G|FmT>3d1yp9M|wR(8&7~0y$X~J1_I?2!{emZ3lnk^AWWNw z?%h;`jdK6?eG=7PHBYBN#O&_{-1!NN;kNd1*U||1tS2>yt>yf%5e+Eje;v~(BqaaddXpJE@8DM3jFggu)-N;A@T2UWzV`4DyWYg zgsML_hb?(3u<3uNSVGuJ_aAhkt(@4lK@2J{qu98UFpkO~W>;TVreNrCa#Y$vvIKK? zb%3(KDF`xpZ1gJP?@v1sI zbnAHq2Rgi@HB~19=rSgbe!trGz$+4u-36>HdSl&A<|<*8?UimgFmX!_ZHh{+Q=;oj zU-A>-9K3?o2Vc!szx(O=NHPwEhix9>1+`X8b%-%T2Y&S^ruOkUG*E|h-~jHj?5^S) zWZ<%)MGZCJaNfcnYoGO{DUVUd1_G>pDai6y@&oR_GEBhwTD=I;KJh#Ezi%>Iju}%k z6vFLoI%)%$Us*#?=B)L>NeNp8NeRn>73HGm(_BnzRz7({8r{{vkg;&}2o7B*VyJE8@ro&1$fO^xJ^f-Vcc-92ZQ=C2pG~){2yzh@)0;W7% zFH!mz8KnMAIQ1YK;DQKi`Ldx3I>rh&vd+6ORb~YL6nbFUL5f|(h0TU!JYY+%5E1AdoM&o}F&Hg7V20V1AJ^m7w zs5FCD?FPCv%4rOUJ5{Jtt*%D)0-=O(!X7j8Age5Kf$+4HUUKZ_C=yL_MdxnXD|V`E zKyy+9`e?^#jh}+TkKfXX2AUz(7Sahz#}hW2F@Rlc61{p!9WqY)S;c(8=9c*^5!_;7 z0WY%rN)%XFnV8;jp^RtdvurL*gvn=T-;YZv?lKGRTnGZ~j-vCpP7VL^^K1t&sN5uq z7*!ImUu}Yi3reY54EwNA2oahAU#q9;sIaHolU*{H4^rWMkw8l3Viy|5l}HTz?jeJR}-xQ1-&c zX%jkOH~s%-uarXpP+*&V*5K<{X5Q;BtU0JJLHq)hIxZXX-~_d1S0HlL?|L-S=9C%|<884#=+YgVFBUf7|K;WI<0}fg6E8M5 zKn;ixMC%9@h~73{H*alqOKkO=g#4_#l75G<~>9RV?fQIugsVS2h& zrc>J1xGo1?{dyMZI>p=!(q>PXH49HZP3a3Zap4`_T-;hos+?09S zsmpuifiM2|co(p!hi=v(a#PRTS?!oJ9Ax!)2ZG`Qczw<7$s5jh)p^?J=Oh2pn6q1u z7OVa3I?E-05L6#81H?pnG5h+$KRK&jk1sWC0vcmw2^KSrREkQEFVME`#aRuw{Ug8&@=2V&DZGbX3@oczWrC{r#sL`lp2Aq z>ifLi=s4aGOfiy%(AY`|TZT*1dfGi+x9lYfDigjhFA!~t|ExpjFjR;5jEqqSgN=Gj zWmL#d`a^#vXn>8K@Mc3ZvH~k7R)?p+x4&uBVMf5bj02>bee+)bb ztHEIJCAtCc)VNL{hr@pqxb6ybTGytj7S_ZUe@$A;!dTQX#-xyXbKM6;U_(0Dc}H@>rmY;bWAApE75k!ya14|ORg&f~de@8U_4Y6E&S`3fV!kA9 z^`<)me!T3~pjalS`HcPkD(ld#5~MN2vd2Q&B(ZL(>5q&xFy%RugbHWEm!(x?Ols?3 zb~*=!AD@FJwsx%1;Ep|V3+kJ0u3CjArts^UX(o3dlX~(Y(zb(td+KOOo&=kIpdaIp z?9Veg-sU%u=xuX*;%Or%meuB$2hp25huA7|SXFSbu2@ zQT_Gr*Gewlsba)A)Z$p!&Je4X`*&*Qm{9nBakM;1(wIa)dM)!mpx;4PinZoYL+Sj_Dwxq_! zwe{`|{drMF4j;J#T82tojT#k@#+_ftJ~4H!pL+Cw!S|-wY@f!&-wV}(2es1^BP>7y zFAv`pE}I>B%Z=^()0d((S`#W2?qHGpg3TJu?~zx_%okpJjCVWrHT#OKE%IOEyqQN5 zRf?+YB=Nh>mT!Xl$gMjA%OYtL-n-xAb;i-y{<)1!4Ga}mmu)+$#t1H-vqIe8I=FF@ zRgUAH;AC#W?k!GzBuDtXfWW~sC9@QB%??C}Y#)A^dTcX0&%S5T0L_!zoH=O8V*ly0 zzrNBrzzS}i7!FxTJ|>|V>F(t!-e124;@Qkn(EZ=S&Tigu%HkJQ&K;+%{Ws8JHh8;= z9Yz{h+Edh5;YBk^jh1@w^JDf6^WWX6-7Lo{fSoEi>h&*K>@$)~{5+QKzOQWp5Bchp3 zklIrqA3b-oNGLn|1+*^QjD*=RjVt7*F)}a1Im~IXHbJ@MU1$4iF$MV7BhB@K0l}QU$l__+xjq|!lXbfmpV2SnGEpofjA*k>qm3ib3LTwkS&Et?Hh=msDzh}mZNuj z8PMMamY7$^5c$VD8wqd6c4E~Av^KNOGbu|+%63m++eLYn1JNG=!~s8>h3)pOxOi#b zC(6d$NBA?OaZzQUQ@8KW3+Glv^adi(#8PfFTma~C5R(sw7i0F{b6Mj22#hFU5s6%7 zBb*a(W5P{sAM8KIK+!0V&&fAvfd*Vs(w<{>7+rt}ZfY{>(b?gmrW5^cw0dw}|2mf% z$nj?}-}(z6rts5NK)@zzAdz6n@^Ee9)y;KmH=rP1gxOBE;bZVfe3l+j3XTts+vaHn!Khk|bfE8ht!PkXkoTz&i zCZ1t#zQf&K8EUiNrHi9kRnoesKa6Y7!zNG`R5FceAt1+{3Cv|be{ zG-gMi2l9)?=&Pqt(c7_BR=D}6XZD#SGtE@Z)QIL(qZuzwABo-rKU%R}vRzhd3N_3)4m%i%J-KtYfEaIo+kx6>5UHT}BKNi2-F8$t=4Y|1J#DG= z_(I?IQ?z6ew3tm0jtgS)RbyFCw{!Us?`hB7v6xmdh6Ad zmMOi!d&DIyOIEIs3zyEWxFMjKa9+@G$-ohPwyak$e&DY$N~0RocR6{Z4(9-V0F}5` zACvHkbd{i_?>aupoQ97<8kXz^bhiN)Ldl`3yVC06i;C?VcMCRUQq=EN4-Zx+bXy)R_3hV!x(t$qMIg#tCAY9}q(K{o9l7d9ZN4aD9CkG?pFo_e}r#@6h$Zs0gsv zZreW*#mkdX_A7~N&dbZ7bM~OWDLw==I?t`|I;Qx1g&o;Bp_JV%w;{K3`M36ngXeR5mmhc}PR4=XPbvg5060_)xUZZsT-MqW=Hp9sn$1`IAl}yfnz7(x zt+vg>#~9&4jkVS1%*JN=XW}mMdOG%ca{9yK%Al9kn;H$p+ZcZ@ZTen~h4*G$32s?- zsrFkNi*i8@bZ?}nwOR5y8opI4MAO3J1WCE690q%86^1_+Y4S0Qok=erk81t7j@2lhk3E}7$ zADulAcS#a*yUn79xIk>G0zKG;|CT}7s&hidAL}9n(Iv_f3Z)E*+}BK=ruG_qW|bA$ z*pb^Wf%354`O-SmNI4$1ih9$ZCjl5CrO#nsF? z+~d+ln!)zm_QgK;>iZ89&(XF@@SRq+WX_*98Esh_{sx#bA z?<}feKgE-uw*tIMad4sa@d4=*lng|L9=a&Ujf7RWU^Gmb@nL}u`S3&0%k=Xg+X0x8 z$lf*tZ@F{S{>YxQxol;Y4{I8M6Jx-~`sy}3nG8%p=9#qhenuA*s2K2smR$CJ{jHknZs2K}^#=%2j|jo84CVTv|v4fSbM49{c( z-tOOR7OSj4MQvkk%Q7z+v|rT1^^#1M^TwhK=jRsg&_`;G}6A?3Q2Jm~8VTSL4GmHIv4qMS;&1z(zOH-tdjc z*vY|h2HwI?O(*YdYNzzj``o4NhLvx|$ETzl{-UCwl`7N6Wnv|PsYTt=?7Z*}8C5BP zU(xTV0!J<_)nRa^P260@rjPHjwR+|Z7ndm9>FuW4gkdslzg(e}^$tW*3bcUH!I;WLH{6jj9 z2hhngw?Rn~PGtNd;1W$jgSX0$O^IL472o@wKV$P%uP>5k`cqEc&lLsq-~O=kGOx=Q z5B|k8^^RFX*H$H}EOPvwyolKhF1**9rcu_^SG1+%N9S!6`6&OfurXZ%)idXA+wzIk zNHPz>?m;i)Q)*6?w>sY6}(F84*;(!4vw{`iE=P*OXFfY%4ohgtg zs{WFxmC(SRC>75|jI$awgzyVC?_=$O7xESAu&5w4?yJ^ZQJB*V!npP!pqlZ)idi7>0pBG3N=*(UWGet}<4A z4r1{8HSg?_tOuop-+!WM>!=^te-hBClq`QCp!8++4B-{Mxwcb#&al04>v}erXQyC%N**RKm56@(`^bAK8R;=ETqF}gro;o;FtiIQ z%ke3+b|SKIJPo;G@6>a#>5OGR_fKj342Ri#t;stItxJgJoaP4l$$JH$^p#Rh7F9)h zdmoXuV#}7!5Z5poT>cY9#kRRW1-{Ey0(p)rmEexWnE$d@6APTC_!Hy31Zr6g8hBH@ z3lI(#GR6Lnft!;-Z#rcV9xRNPNC?!!&^D>=e?XZQar77oP+MPN(uzMne&9sA=%%z~ zbC~j<=9Zr!2h2@(M_Xh?1=#R&PXpxls=}f!3e#Mz={Fj}OYz3K37Xns6W^PgM|-N` z+$AV8%-JVz_V{w+HwzcuZp}{;>$0%#iPS|g73DMLnUC81&?@GCDD%jWXd_onXYpHB zW96aX%Bj37Y_4??qUy|d_{FR&T~iSf1H*D*Xv9)9lVes)xpP8ykv#$}+tt`oZkw|P_dt1(`FR@9uP?bHn^=qLDXVoAT$RX#k z#ueA}KJJ5+pRVp?q|Gnp!e0NC&eD18>p54>m#_K4F?^mU6dkUdg*+0{G7NdkXWyzH z$8s@hoiY1bbqqdtb-_PNRu7D*pH(*GAEfz@cwY6(&N!SUqRBR5L3V$Jn!nO$;)#)f zz=!&HP83lr-!2`)Z^x!FT1u}^Jc4H7YcCpEO*E;*QS_q4c2*UTwn}^6DGBhuSI13W zYK~9N&s>YbEpe@nGPNf*IlIAKKEe{tq=glKAM|Q>ZyUcB7zFvs$uHdF4-7R;ZLixX z&VGy4v7+fJq;h<{rlY^cV?BqRVak0fKIj|C=dha!iKLJ{@_Kh`EL=c9G-dxRY56>q zM9SkY0}7rLy;^C7O*qvgF0&LEhG7IdGzJNs7SbYGVAPIBIIg?YH9s7~6Nu(NiEv@) z5YhkgLFg}1e%17@wlyD~XsfpFHHzqr!uXvZZtQ(ZF56r?O^sd%p_dwYthIISt((D3T^2A5^I4@hK~-^*yF@in-#?^t z@n{=I$OQVU`U1_6CM3-Y*B%`0IARl!#xo05~V;z*v?xF*xusYmONLS@ZQ#`0Mg6{BHv_4I|t1%drd zbT~(?1n76XGR*eT&>}Psw&}aYaOYd~>yD8;S2|JS#*GBwA(3u}eve-mnz)g(>ekvq zHA13&5xz{S7x5$_5-2EUL)lrTJgw+C+cT$VY~fm-_4MB;2a0TZE%XEN+jIX$3JT=- z%9SQ3xscJ5uk!ush~eGZuhUKXUk7EC`qBII4GlPzB%yK=B)M%rIJQ1?`t-?MM^9N= zZsPu`hH;F*6uH&=WjDFLal3AzmaMgt$Ywc%s^04EjHMHqJMi!bGYZ)H*^{tG*OQcW zuy7CaSl-83>G~$}6psnBru{z(?D4TnC69rUw=|1Fzktr~Y+kUII>pXV^S$*j=-vMC zL9H-acJk-cNW}L-!O$yMeUe7ynynqrD zXXJFAmqIfRJ)UB61Mr8A*w_T)k1ZZ@n~lUM~E;uKs?rY++ zdv0LHBK006V|;2reDUFzNxD*7ayX)dB5uuL2i?L|Ig+3HLic3Sc00EMyAn4wraGFx z{1Pr?6T29(=J#vJo+G^LPS;_%I;XTYH~VHdz3#{O4UF)rsfMjWk>-YD#=_lUn~g>% zs5vapE-mKV_e)YKrGV~nV^29F@K&@4FO-4e*JICTA=DP~dDH42*3OW^^DU8n*n5QN zU#TpGkOR%uyv4^mt^805&i7tsmUsD!h9C21*=k{3V(vNmwKDcMa?g0W{CBxnuHJJQ zzKMV#zv63-_#`AUl3mjwqW5Kh=lSDNNeQpEdE{6P;_WY2_9Vnr-t<|w0L|u`;m(v^ zE5X^y-gRNrV%{FsV&nBNIFaeBp^QQ1kv)WOm_uLWwW0Z9odmEW`e5(xT{$cD>LYo0 z^pKQc#6_4iOQYf#tvXI;gSqF3zn0A?-&unCw%n7gr}*3Uu1}y9UTwZ`)m*Ly_p1F@ zZ4P02EHC5Y(x0XZ|4sj+;LGnc=H(taCNzq2uf!#gK&-?`WnQQV3mJ8!CM zFp7J7?0gt>ST+57`C)A=j?BQtPSX`K_DzA&tZ6~qhF)C?YRq@C@kyK%c z$!}zbhQBnws(Whby4A*V*SRUw^9bAp+gC*Kn+(;rOgyhra7!_E!X~8cmB@B{+4FP7 z!Vqhc=(RXrjTe?p3Fk{My9jS{CZsZ&dHxJ}@=tzHDgfC#HV|35nANZS4_#=BQ}^4^ z&e&-y_`zdT>}8~u`qsHlVYpC_FsQbgVJ(iuXiKDjKV>hqJcq)>_0iQg290BevnxC zKRmV|?8$&pbSQ#}I!6L|JfZxz;$XGKf8H&--B*IR$@uH%dlmtL zn(^ZDuXp}}ZqpKJMp)c^?Zf+%a+`v3qeBbnc$@qUhhU_<#AwTA-)C&vGWq$wKRc!5 zP+5PkgYU;h+gx4h@G>dh?a+Xf^z`YKK!LLGrdJ@__=dg)vbU}eEn3S!%>ulVh);Tc z8y=+;E6ZZOx2fuI(vHTDa4(O*VgbWCW``59O?Z9-@25GoC$F~{B1yDJWn!Jhdk!>G zj!F599`h$_jyog>$>^JkB#V5Cw(5;Q2GIYKcRGVP%YdP$N-u0YvMC@0(#lga>vJP$ zt5)KCVS$l9Gar@}K$RpeU3|h{!+^u%V#jzt?WXN!p^$F9-So_Dja}%+H>61*Ios`q zW|*{CY;3A-=crv9ke2o`fbLJol4)Rwi1%&eBjm(kK`gx zA>{9T@HM0O8A&kbmA}Y%bNI!I3O!wqv3#6^1exT|l%rCwl;9ABKhJABH)O8Z$(p!D z>LWGeG;>t$X-up|jc;-N%PAbNOl(=^H$`;z6Q|ppq!srMB7|8f0yrjK1nMj1`l!^# z;F^aFU%r*#J0d<~8`d!R`O=}7NAKB*Bm7O7dOD}xT|7^+PvUK(1)iW3a~ zlk)2ilp^B^Dvs#rqhB2|RwG1j;qzCYihLXoozgVUm$B&;2^)IZ=8WN6$htbRt8L49 zwtXFMS8)#{{g~36kRH7Z%8%^)`|+2D-ycx^w*a{ig!w*w=h&j`)D^v@#C@$R_=WWoGYlTbH$7f5icS6>tUAH83H*fBNC^f{&luq zD}mmjI~OB3hGu{Ht}GGjEld8N{>jVD>ZCw0ZLR5Z;JEv3K=DW7Q61le$Y*zlg>8o; z$O65}HK<8?N4PQ`Om@JaX;gx@D{q5KKgb0Nw6}<__ki?RVT%7YYv0f`JQK7ir+GIY zB9N}xt+f7fd66+nr$LA+ps0$9vG6d|FugHgvZeIpf&!|TbD(T%>lR-O^Jm8UdnF3) z;ZW+wza9N04gG7(OKo0~`M(mKo3s#^EhUzadN0*=;eN==^8B$Zcxm``dzX&4Y`lf_ zhqYK~hw=OCdPpi62BWbjEdoTS??7@xAK#C+&|(!t5y-rJEe}6FPt&82T=+uBnpqq` zQk+sqyCU=_@968R$;6I2hqPE%N6#u*6T-n3J?r-_8WR&eA!{TF#J9ei8^`F9wMSD+ z5WQ=}WjfJ9@&+k_1Opi3pp_^+@n9bH6G4s`i_DTwi1b%wGc#&NPdcPwEL>#50qa_% zhC@GV1>XG5*_udwWN4Sy8U3Ne6Yee2=b^^f{AAk0&y-aCnFQa$aDV*(D$zBVeQN$Q zbK3HT{Uo(rSRG^Nf_g>%UW6>f>?uj^yC$t-4PWTruL)W@+2fPeNa@JCHX|!enc^=s z1|2v`Snu}o+|A&=t=^Nt`gL0v!LeoVKDk?Xb9lB>MmM=<@L5OER;jy|aMaFJh?l;l zO=(Fc10&_n&u6Xo%hg7Hm2v&NJR9!fV$NOg77K6MeH%7yfSOa1{q*XzvV^qu;x2Xk z!~f1qGE}I>SzB*goF1{8rK$QjV+5Hfu@y7rA{p{_Wu5nLTi+cel;96I_@Grh>i$ME zht<#58Z5^{{%@VOlx4!BQV$_fSeT(wGInHZZouRVw9cpwZ~Q=FDw$;*Z`Y%MkaNVB zJEVN0_ipiE@Tm$`;0u+b+O%6IX0PFYDW>J+WU$Z5QT#B{r*>3h5e?BB{*qg#B%^gM*&0PcI z+O*tcnjaP4hpbIESLpAibQE0xLI_s24wVW9e@8gX!+=JTp|Rj2BU`Z}F1eejMT{38mAEl6bGngGQ-NsG`xrgz6Qj zE+3li?GT#~=4NHdM3R)|?1Zd&9omKTw7rPA%ggrHQ22t)BkU=C@O~^f_3<}`g1ozF zcE8^A;*DSMkd4#FCXRn<9zuJ#=En#36I%_9600zV#8I^{8o0| z7k=gcA4gXi)<)Asad#_P+zW-`?(UM{?(Qzdt%c(5PJ+7^DQ?A`LU9Z3(l77#FPqJ? zyL08-bM9Cd-+RZr)V(e6HSIEVc4Vq2X`O_($wq=-$7d< zrWuQoNwBrWAg!w0t2m`E|2G5}fv+Wh|Jr2~Fu&1M7*9_Wcg_H^-Ok~xWigXPb?+xY z?w0>5QRa{#?hU%leD=HcxdL~g*uuK7GQ(6SRQenH#j4S?-u8~Xf%VPnC*#V48Wz}g zh^LsLqGb0`UntnGEuIgkHswu$l-fRgaBm3&mUQAvN?z-WSE*<=lw98PhmH40dF)7t zy1w^Tf=1-FQ+E)$%HMqlPlP3Q6V2qFw!v{-Mp@m+G8;g`@>ShgHq?yIS)jWj*XW;4 z(?2xT$NR776mKkKIKL(j=P4!sbgEHja@mWR!ZsYkKYc58Ei*t5`{@Y(+2*g_~4B3r(-OHrD2i&5<#wdoU9ix z+hO_^zcRrJ%&i%O>*AT*5~`ctw-aP#Vfv<_Xbdks`C+GH*`tFfD5TwM-r< zdx=9rC=o}?S8l3vhJ05mI!5DOH;3td1*H(%|AG~0rL?McBC!v(cUJE+t!pkaM(fwW z(=UY^cNIcvWPYkQyRrzXXQ`KM>E>4qq5tSSawJro&4Dv?7=F!!Ca05lJyd+)+NrvA`A~(K<+K)yt~%L zhkd|<`rVL7WFFK9+j30?`P%r7N3TqtkGr4#$qEm&U3{msp!<_rCDCu+a_LSR5{p|! zrtPIsQ=O(ecr7NeT^jL8LZApca67)mx+p<0p|q3L`d3*}@gWvkw&-Qj?*8dlc&E!) zp};*-r2Y@%5AgB)kl5oEO$uVB_3fS z5GRi+G!(T;1#yf_afbZ)1XM2; z0S&iw!k!AOhNXxKfF9lzTpHOh9cW79$EMoPu_a8xT{-dgc}^K9m@T6%P1Iwo)xn=GR0(=BS9fS7+rp`|QG222Ft zqkF=#<`Y38&R9}b<%bx`t50i9mI!1W`TjfCp%r9>`;a9;e{G*hUEy<3J7NZavRXu` zmVpzGg?>**`(cta0fw3K(ycn{Qx_8p?+RfJ#(gCui-*N(9#AEVFK$F=urQdcS_s0t zn?7ZW{vIt|h9z;(Da?iCl4|AE8R%z-ZMi#vYk9spXT27iz)65mh&%DC=17z?lqTF3-RwX&Zhma3Ua9i z+|}JqrVAb9i9_X& zO)fYY?Z5gr6hC`5xTxgNg>x1j?B_N`Xg|{Y_%I=12NJz>!#2l0s~V!Yg>xY?2hvjgbGEO!LE9XBaVt2^g*)6O#ri6 z7mAQ&D;mUK;#fUjF3Us(CDKm)!)ZxvJ_Zzp9@=zNmg%g4f0^DQCE@R=Qgfco62ie zTtmc$)1e@R?3eMNEt)zN5iuXbQ?~p4cH?G^OL*@4!}SqcgyYr;S>Jbg?3?@7v<*u@e6`GtE+q8T{4#b$T5POGa*^9mop_wHG)1F4(QJc@4ILMGUW4Ko)f!H&@%WroJq~ z7FNwjAb#SFr#Y<7PbE^5e(Crm+rLebW$SP>j_o=)pJNw;~ z(o;kZ@jCwn25!?HqR2~-1u%2Ar2`%Jo6RvZ{ah2WADD>JKe46xYebCabUFBbw>&Hp zC%J6(?r_ldu?HZe7Xhbdg_Dt%KLqhKKj9KPd=UH+{k3zc|F3Y;1%xzu2mhV7x^y_P z!l-Fv$5v`t-=O6#yj?&;JbRP79^C;q>dN}m$YfOh${jvi&C0LKO!+#qH()0@kv7yp z!&$*Yj!i3Z(XN*vNS^Qg5)hiM@%WKhNhn*$K5|Z#^jMya=PgReJ}a3jgf>L$)bsKs z^Ee=`zf+^n$$3Hp-EnhuqYgg;#%F=)E1jVg4!P}5A$vqIT2jJoJMg*)Pxj9m7L__7 z4lPL4F{4D6{Sq$uQ(+yfCW+J#g#cX8HtlC`mXh7^?3=agg-_fB$I(SUaboP;juDcV&D`!j zi%gY^-!1LKUAeNm>?1ZcTgKfJ-kweKMD#uj_F_oxZZrrJtq8|?(T|Z+Oa<{&&hvz8 z>y6S}K`|6ojJ2b0Y9g?HOQ0o3+S!f?wy<9gE0^|MeBtE_*2CgaE;*1|9yjEp&yzg| zffT%%F-mbaA_;c1T=DPZdG|rRQy07|+JW<=6aI;E?uVtlN{t88Ac8r9pzSAnmf?Mf zeGv|R#(i1bc^cuMFj*gA3Jw?&%TF4@hlN357P3*M{L#cbCJ$ zUwk>o2r0qh@!gvN2gB-f#pO-4A@qX`{NW!JPB$x*a77^SUj!r1jQ9bus*u?fH%q&Z zMoq@Aib1~!9qhmzNsb@)4~_@0Y(E++ZIZr^4(S^gb*!gfw)h6Xu-A_mJLj~D@;lTV zVE*gwSZ9z(qlh}B*Wl?`7r23O=VI5SH@errCodc=GEBrdmps~CfmbR795k79%%tPh z@Zr`evcywSa@EpDibj4v;_rNMB#-L~MKNsviTXAsB?WvGmz6NN5G8vX%PM45q2UPX znvu=(;4!6Decsq9!7A_4#DuO@(P!daZ>|e!MXfsx_adj|Q)9_|A1djZAo?80G9c^; zdkpVm1k#8nkxdWYJAyQ7JcP_vu!>wt=)xn5!~yvjWV!yTlF^ft+KpMx1ut&em86br zJ5(#+Xh6D%Q3+RBpMSs1LccvkK!`>7K{FX=hPi<@*0{4TpYx*VHXcIwJId;jIrAr_#$;L2s=n6)$yfYc%M1oHJ2_Yp@)K%4b@2p5k7(B@ctaUM z)JmT2-K&yJ&8VI}Yo$7^|4x+qWbLG{-Z1+(rALJ5ek^`}md@WF!S{+@pbRHDNrj~L zZr>vba^GTG*cFVRJ<;TK5~N%6LA*?wa(5~ox08AmpWx%KwI?U7*DmC*EaeY2ltE{2AT2WPhZj4gV{`tc;(k;QIUWU zW56`-BI*E_(TB(ttKALD)IT1-Eyu=?J<{uB_e2U%EPfsFr!&wV_8PNbMk?bnhpfcA zzC0JskKxutrJ`j+63F_mq)CKb5n&!Xc4a>Z9Z3V@Tyj?-jhdM`$7acT%EM;oB~2-; zk;r>7{(6I=n2%T(Y-^I8FHRB2Ud8eY_JDRWO7!Vlra|IiTBou>PcmwG&s ziOW~arymE@N&6j{;X&RhJesG5c0XsAM#E=qEc)UDH{V+2g$?b+XX3Lc9@fRr8Kyv2 z_~<82n7IcCLL$F~Y+pOI@P_^^jADixAG7`wc~AmPbSb#X{^ zniZU2p8YYcJE2s3l7CMo2p1pWty*}`YFKE#UX43pyp-;J<&0UMHkjTpWIU59+0yf4 zezu+8^bk2WdvpS)uV(mEFoOhE^Ljm`-m}CZFW8aZkV=HH!dk4+{2P-t22wZCXXC{u zSe|Bbp|a&q6%ERrh+cOu3s>|N;$>7B=|+J~4m0{mykT?V>*`N4`THaq;rydSDU1&0 z2&K!&&6`)c-9DH6%dHhjvDd|1OAT}LpBB;$ z-PE5Xb&eBq28t27cJ6bB@Es)N?9WG=#nxlwYHA@Zelgp&AeqhYaw`3YawJLNOg**} zY*6TiewpMwr{)lt{+`c`)UJaOz(%aHe}{_uVHCQ-`-Zoh+O!(e8lx=Y-?#?N+BPiu z$XPACq)uO&IyE$}rFbUG@nzlDM9FWc#}dWA5J#PT{;0AJRxQ4(MGa59@eRmFRH{u6 zF>V+_`f#I5ZwP0S`*}VcpY|pL|)hoZ+X?=`88kY=A*S`#- z{Y*Moe!>)UUwn|!@HmG~@`XEFN zzZR~^6~@JP_vrWOt9i2U3ZOfR;*58ynxy$jF*#p73BIlPpG;Nmef$?e5Y^c-t?(y) z_osM3Ep{h2(@63QAU@wof94y1Q!WC0V^ZxCa$ydxLP_^Z%)&;ir6zf4qabX$W_n^+LH=Z>LO)-uqbO<)zf8+*)vMtA-*#{R-O~EbXcA3q4 zMo;%8UsZKpm0{7AU-O_9-4upI(7m|+Nbr{t9!dBk#e|PkRX3kw8b8OlAG?-6MOpAm zy*gjk5+SmbePT8Llg5Z$9LU8!HFq!;yYGbaOQkBi&lfJePPFMM1Zlgl#~pKnFX;3^ z)e$d)LrM77FbEZ5Db926gZ5x!9M~1nUw|($X^3qpEyzym@80-^-wKj*0rG+>qdA$;H zhr!-ytaAd}uOby@mZVwC=eOO7ymDCG;%%-FKN05}c!y&8>`n$6$m*)cr)_c66GVFy zfI<%Kk3yrQqcn8neVrWm3Y!hZ^-+Jby)|-v0);&+d|(0_cq&xRKdrB%Gl56-%b-M0 z3QxjPn|bkTyZ>5wZdj5!KiTBsNjlqfoP|#A&X8)dh`xM$W8Pjh8xS_eLRlhmOUr|S zhymeefvVv4cn*HGu5HwkYLD2tS-rgvB|j)O*0iMN8_NDTB5q$}BjQURvg!@`{mP|n zqgJ|ZSU6EES~W^ca7t9fAR`kq0gKhQ9A$Uhn|lt}Gwp3{ezTa4IqheS;85^39o4}w z{GPmpYV!x7gHeUV0WpVj-ZMwq7ZO49zgL6uE^1g#;namN_t(!z@2J z__-=GGAUvzRhYILT1%)J`ORaNWZ_}x^$Lp-o0RbpZkq~M%KJ40T^5iL{rkuFb^R6l z-+RWxMLv%B>&{!(56XX!Vb?n;Vvjh+`(I&Hb_D)O?frf>d7^x$e}BInY;zF{4t#hA zKU{3RUoMUmh@C(;@hJTI^>H`)$3^hMzF2p_%T?wlf$c`z#3|jn)47zN%N?ErZn#q+ zd88N*Gpnch$&1Q(%^4ZJaU(-YsdgRJrbg;o)*1QlYo{AL$FBK4I55ZW;F?}K|7VQw z>C)e0BXqPFNc9N(mQ!^i7l%>m2?|%d7!)b*RlPFVdOuq6hC&BEnoH?)U!)X#t22C7 zWPEWzSz;N@p<`*`L|(&Zhy9HNgCUVMNc47u%TU!teTFAnE@fjuH0Wo@BGbdM9`R;%!DDiCao=1MJ*@c7$}z)%6;FqigEDqwJa|h2J12Ie9l>I`B;H^*X#J$Bw&9| z2ZmiO4`C)Wgqq{H?rqPepqTsvaq=C8hWtdArUCEk8QQixz3je55Tq|-$yn%93oMRZM z_fbjCd5P6~RN;N91WN5!Xd?!inliT>#o!Ejp}1(tnc9K#4z*(3QH z)9RK6+wbi1<5Kt~bx;1@^B5Q+hq%HTTC!BDQNc3 z%%~L*Um4WBlG8!U#1Z#^ov)j^XJe01wG|v2u=>f?Hp`nG9L_XaY*Ym~fbQt#Ce%_l zOU4hs)^z0@PlP5u706*Ze{Q^cDF3pma1qB5TsqH^h0o!e`Z$U0(yJX3u;Gm-FMm6g zYiAQ5V#DcV)9h;2GSs>65O&I`!y+JMuTpieg{zTp_HJEW^PcAg*Ip0m2<3u)^6bX+FWPg&f2DM{2N~Z`uL-%U+d<$OHkYy^5$8D$;<*i)^b%N8DQhB98M^rcie1d)W0 zWmj^vz6C727uBOUz7=rk)v`Z3ti_VPQb5XYo|@KDcX)-q>EOf8blW41AazPkfE`~` zQE0hr!m`IX24^os^XzwP#UEPKX1G7C8C~MCrm{XR{!ZrPz*UN3N2==Zg6=^@mP2i2 zl(AEtj?74}l5sh$O^m#Arz(U9vv=yh+R)QO9`rG$&>*r7=P0t~gZW<6vQU}d%J#r~ z`o+fjY=!%Q;wlkOTFT%%M7+`<8$L8MZ2;AO$vZzRyXdqGxc1NYih#rM(}LT_d6}~9 zg+~(Pz8*4=OiyHvs^Y!;Pq>aN$()?_OqB2s?Q(g zoU;qQjs1qO&mxQ{TUqaX^7u==Bx0=!?T5UNjMMgZI8GNip%zvC--gw zPXJjho{rQ+P?pP6+K|!#(<4cKgi512U`w~#jF_<|_P3|{=lQ;}KUwp>q+e@Rzkr%{ zVg+}XuA|qMJ>){&1x{g<3&wD}1@UY-OBi{(8Zw5xhkJyxHC9z~6sbN4WBR)?tnJMI z)RBV4GY#zGB|a&#ha>l37;qL-;B?<|$be0ayZ4d&O2(xbKk|SF>nMvLVyb#_o)M7r zJ}n~`(@63<3d|>jjAY6D-TaNB(6c?P9;JbrBZK&coZ1M0b$wu-v->sJdSF`x+wr-B z%j;o(z$!0Y22txr?XlllJ6|TjkF4TC6g;NM+)B>1FXPN4Z&!EjYA{yvA-O?HV^o(a z&Kf@_Nz2Vk$Co|CSx{U(3KVYF!>fjWI?lkJpx@=E;Vr};+72%Ss`B~#PJ;nor1K%X zoJ=w8c^jUUd_ zobW#W3H)x$y^sMY?;}fWYCKNex6EBUvUL>zy_7t**xq!QzitQYIfAqv?9r_CdQXaHE)%oxnYi)+odfzQmXekI>|d2- zU+z8#fA4$2OKQHkcSFqcLDEvSc;Th?BFOb_w^|$aNOe_?d}JiIQsgFb3*Z8_IfkAp zl)1557Ouy;zT&|Wv2V`%r8{lp|8P9p%NW2fFMaEATFi!h7PuKHxLLo5FB3d|vH|Hj zi^+M!d455|p`0%XO0U^Xob8%9*g}sZiW&5q?CiQAsxTR;3R6I-HSdIYM`_I{EISLN z%Q}#~-5y3U!tHq98CJ&Q;cRyUge0P$EW;S(Xm)XHL!MP#S%`PK7^T1R_}o96vd29+ z9J{l_Q#Rf8>{3e~>nz1WJI!Fds=DXfs4?T4>tsu9TIk=P5KkCj6A{scLXGT594xfgcwyCs^2E`&X+3ut|p5CL=xd6n3zf;5pS?%1ZuX%$2Md;n$Yh zqNGQ$+2}*Mnj?|Xmgm%@q$k2A6V6o`8zOcwg(@>W-#pNp-k({L6tKG~Z=hq2HtGm= z7JBgRW_O~PNA^wf?=fOwbGq9jAfP}1DmXY|Sj+1~Q`TVUR)zfOAdDf`T+;i3ErJCr zuD*Ni5U^*{Hbrek;jHt*AxJ75i}}G+9v~uxXei0~1+-l7dJ~=mn*K!C@(3eIuA)?7UBPT46nU5DN#);(aTAEa%F>+_V&k~ z+J<_X5fFUWqGWRXPU~MgUO(GU#=gt7e_JPl)TilY1(L5G%<4I|mW`Pf(TXIK2pnd5 z=OxNRkRR1vFvY}*;v+C&STWIBKw0gv0U1ZcxL}vd$5d#+3d8sF&vX_-bACkF%EqFx zRxM}18PfgS8sUpdc?TyA4pso4I2FUdgJcKqw*2v!9Wn`-479$0v*{$+%+iEaL9ygZX-T z^6WV`U%Q7P|RF%J6K#H{BJ(57dojg9w(|@ zDGx%h=?EK&MvRMH^VBMNtDx*{{Ynb)xcZg}I=hn-KSlLh*t&-f=Mo)89tE|YL)5=% zFnkgl&62U{-HSSKtor+tYY#}YDtUqQ@Y7-LSIWxW3poya3V@U@Pz4F@IZ))R9rQa; zdPZkf6!2ZWu=K?bz>jUNA5_9|0A0jYvYm%^Zn4=A;Mxl7u3!+2V$1V)Qm4OA*`1Hr zX?fVR6wGCSnB1*VL{hmlZQAJRMH7uJrOSeeRh@VC9g=~;2by`IaN%=S)Dy9gacN9< zE?e+*C>iri^tUH`ZgZ8%<^>w3gKBx1oIE=Q|A?+LxM0hII!TK(;Vvkml55Vs{}*dZ zhSZ;zCYQQ*;Vi382suJvLrk^8?$~>+W5gVCnzVVk%n&=!t0|xNco_holPPuee@XVq z@LwSj)=o0H*apS2Ki`y^IRk=?#rBD<13l%6w9PhxpM>{``*m`sL|%aQE8ZT zCnS{!P19FM>Vh~Itv~5Q1k3PthIaC>-khlC0BX9kKT*Qci01O^^r7RnLNqA{Z2xxc z)*7INjUIF;ov;6?=AX>_SBOJ&=u3LScUY@k_nZqX*|n2R4NOVgqiy{)GUc>ZV_8}U zQWn7ej~X&Q6P2_^|KV{{Ess{krXJ*^PM}&Xk|GUiK-rAAYqua6Fn%JU$(U%>&SiEc zfCoJ?(u@yIH+vm0kO_e??ZCHmyCJ+^BmSH``-!k6WY_5(qT~DjDoN*-90|dEv%+u7vXS>DLegHEYoHh3OaRe<3hs|l&Px+87qVDbK9zRWm~LTWeJ0q4%z@p^=P*Nub$8PJ5L z&_?~`qM}08-oV4C3A`ve38_%^`cofc1nTs!)WxN!oF{4Qd4odfqRbt*ow-g7Ig>F% z!|BprNepjt!^~#WtLj8q$0|XFD%#I-|G)x@sXA6iV}12Y?N;Ma+>7&Am=}|zN!EVD zo6Hn*+83pug)KN4@dz8G7;Z2AThye#vSyx-7}K+0{4b>y^TxzsI&;Su372dl6m#<= z+#!!yoiVmSG(r>3@>(JWh`9EHn@;&boiEO%Rrz&cd~kD{!qaTJh|o&;0Fam+zqAg- zGKMTVS%=JU#oJfwsL9xgI1bSuqlmCJD1MbY2YK^_uP*V#Ix?gF0JzWXosxBDvGl$B^$Tm=2 z*!V8rV5)Nl(NBk#SH}4`hn|?d9!#k#6?0U(R)W%0R=yrJ*1v+wLR3`L+fzWDe^awUZ9T6)4 z%uCb+xnRPJ0|WHX;ttOIyznmMdg9#EGH2o2B41yD_QdCVz?+|s)skf(h#T|JG5cY!OJ!3Szj&K{`z z99vpLESp&e8>hl<=4eYD-@u5&<`w{&TD-#NGSX$}H!(zXx3oB2pSwF0E39k>G_O4l zri$d1=DDj5G>yuBIaMeT%sr)c!}T4-aBWN%^ydY=36xe~Ej|noZ{=%O9mAc5f2-4+ zYHwSlx2t*pCRK#JR;0EQPD0Dxl{n!><}r(GJLSZ}Io?hv2!oB@lgi1ZU|e%Sp%7h) z#8NDjcuN&S0*=no>|P{1zEgx&6QHJ(7awl)dyUe-l*E;^^h_oMfog@?ef>x-44%rb z@gxwd*!@MIw0g_XD_Q1uSB)PyMCUj_vL1^vWbuh5_0>Sh3R({y88b z_OG?7YL-4u3|O9Nl)fn+TB{oLM8zEM-tRZ*`2c3H#nYX#pp`D!c9ero87N_YgaKY% z&nczj780m^43Z*8&eV|5UATpC<12;Jmi^GBHdhMH2eS-sqqUg6Va%O_=hsTB z&Ur@Ty8io+59%Ccq>in2nt-*{1R_6%+lWe`qMM!mzxDzEemzgj@@MCVFaZB04Kl{O z*J!}4_cAx19XR}zurnJybX&d&OGBw}nvm~J=du2pkO5CNDKQtn+RxSB2UZ%{t&ZdQK22aEA!KJvw< z>Ll!CJ{MS!^a5Hd1F-_`%5Wpt0Y+6IT~n?oD`#|KM8)<69pf}Dacow2Uk?t=1&H+` zQ-@>DDkvwslvCiSfRHvBN1^H0DWsE36L3)-)>XR?M{&0@*GLVx^8~;KU&e7Qv-x<* z11Mg9sPe!G-Q{+S2FweVg0)hL74bHK##^u}x#gnm%hReLOEY;Q@B zWs}3#hnr;<=@s0#`RrgGp9E$I%z_xgb*b8WTwst~->~2xt;EAR|BdR@#+9(x#VBXC zos+{t`9hdMh;*kyr@ymIEY-?Hg_dF}uc^Xh0pfb#`OuMf?BxLqoC}-7@}`A(VhF7e z4pp>}cemjSk!>23sYq(nY|Dgj{cH(R3W@L~q`DHKEu1uXW``EEsFuD9!)lN7-rm#u z!5c>cE;5k(Y8eiHSHxpSoNCxyNbLsPXj%v@@&imC_iQL3(d}N+2UiB#)1VN5A$|di z2{yiV_u!aYkR$K=OB`%BLZHyc`Bvb#H+D%8>A_Io0?Ed6<=^_)^`OwC5JhTzssN3| z8kR=q!XcQ@2AOxcGe7d3B)D&Ro0t8h7spbCR04|zaa~B^*b{beb zcZyG_5c4Vj+uD|{b?f9>|6av;DJ#H_trgD~1yjfs5o`S^X*>DVf}jnr-+pjVSmS`SZZ^$#cX>^!&c!z44-NUoj!zIYT_yL>&`;{k;@u&N0% zrca_7xp9NL&mDu^=>~rD4b9tiE##$}B)F>k1aKRVBdD%#AcTpb#cFj&U)Dqt#yq3j ze^#OM1*CPlnWx26-rb|9Rn)cy7a3@vZ%wC_p|_aKrfpq%A_84cO2xKZ*kb5IDK(6& zGXT~qru=|{1SuDVF<|`|aS}(xZLp^dAmb|sOp54 zd|SNVe9R!|wbSGaxi!GR`Upvw)4QGKKWXN(I0{qRzpc~ONQ&pW*Lh}7H61W6c<$#5 z=-(wJinp4y45kci_P|2^Z>elK~_h{bx+CD zbJAS$yZ+59Rod~ZGuDU^n$hgywiQLd$W{+!M^}|r9o{WyRDoJo(d3Kd&eOlL3blws z4dx7F&MwgmaAePBu<~*TRk8`^)=QQ3)azulvdi}!o`pS>wr<-0}vet^(r5wSX3?1$P@|Qvrsu0EpQ=wbz z0{Il>z2VjNzfVuKxWHT;d&j!Eq@k#^OCHv}9UT@(fdn^9BAM%zfiHPOLZvn6cpS4o z9L0Twk|L;$D5lYOhB+B-AQ|axmpH=xWhmM8>G{OPqFk6ha~lWz#<9!#0MVz2fqNf3#pV76A&{!EE z0I$pY@L~UK2gg9KYV7*s?ssxkOKVN77c@(a(V70?RA&TFw??d6B$W$(U5w%G9qnud z^4(9;iQEx^KM*RkA=9d;G~r)5^6*dHtGWW=5*i=Dwmeg5tv5BPQP2o*utywI<62*n zMa+jf1AtVhS4QRA1g8UsRd*Vg<=iVmTm^d2J+2Rc`%Egk5kfEzCCO7ECh|{I&;rAz zEg+d?=&_V^lYN+zCXVNtDq~8xA5O>dXINGy8G5~}y0CweUm5)(dKA)X{l5{;#*}lm zh^WyiX-%-``pG`IyD-W4KcgT&R!hD>)Z@6l=5%;CvMre;8uG{%=S|)SZOWnA(By9P zCeWE83+n6ga{ICf<>$aAVqGX97XYi9gu6C2jS(=P6xR)iRlf+c;<+l{x(F_s5f%x9 z&h&oK0KDM93uCl^{fRBS~|WF8lF2t02sA3vrwei zrRJT5$LpF!Z+<5xh0I^StRkgzoGP8B!fGaFYx6Vsc0mgOY#+&XbMOt|n48Z6jT7Yj zFpV%3GEh#-7sT8C_P2Wd0_fif6(l&}g{y-^0snOl9Y9c+Q;9p-0BD1c&X)#|dYg{2 z3A}odI@Sn$iG>DahdQ0b$dNc5&U5D3$V^%T|1qfK^%pv>!><4mW<4LKxQ{^(Iy`Y) zauet&M+c>fS|12Z=gTqQt#iLuv=u=4_$FXQivot-xv_>MsaDW0&CqI_?<2B@&koP= z$)xs<(5+<9aEH&QQ_V#?Z0dx(MmQWSbI%!OH1P0+5t+!{Af?kbmR$!qu5okk_HRYclvO3zZL`Pi=;x_FGOj z|8H2PHRf2Z@vie;U|P#-d>}GC(!PLi1h!SbB>s1gLEdHTSt8Dd*@~b3PD2G9bkv#v zn_9T9;l?5DtA^B2+>{Baf3j8f=W(+rAkkc0G?dY3PXEWy)d6kB)q&x{W>yXv{`8+W z$V1IWr5p(8)mu5TU)W6MkOILQT~sAY6AOWzznAzIkNY=Subu_bLvsT+FypB)Ob3;} z9Jl-wE8k0T>lujr1L{j|P$Cfb)!;6#EwXeF-Ox%T8N(wc!QRtDvXM?%uBFVMH}BO? zNJzjM3cC~K_lBlB7(=AheBR1XB3q$1<-XBn%oc=cpf*SM%L&ws(%g~U3d-{QX~|D; z=~0-G)5M~JIiaN@m`eYqvni>Q5>nz{ej;Q005J{oT+9OVFXE=~#O%L>qs}di8OX@D z%_4nT4*EtZ15KheZ7DbsOPaqxi3lhjjA(ZR&%!$4%Kj(rz;R)B`IUUD{4^)`CAHd% z9{fB1Rc=*fxo?rN}w-Yn2 zVJ~}?rl`S z;VhcTvibr6Te(2!^JxcBXNDkRCXJ3)@YrdB9wF5YCuF%aE{}ub+JBN!Wy|D;xl<%HwDJ!mT5NkT~aeh9w#fJ zM%4paV4bzYCz+iYg7}0i?4UDe{UNK}0lo61t*w&`fIG)U1qbgVL96?kv;VMK8Ad%6 zCkIzF`sLTne}1k^enQVMX=z#Kf!0p|k1p$EIEukO1RA>Ede{2W_WsRy{8Ax=&P&y@ zJiRx@ev$r0dG(($b!u6Ze#*-%jierJF0YqW2W2gCyCaE;IYnOlSN>Y@W-tVSLn8W; z(C0&Mzt#&F>Crofl1?y-z;H_b!;qtQz$Z<>2%M#08TEC|bYmHf(fG+KsCE-g^g;{C zzT!?53b^MWZ6mPHRqV#cc+bTYfd3qp=H$omaAz^l4N#*pJvYnIL9!HVK~rs4CXX`g zRoDGrhnf~l(KuQ>Wi2NKWx)L1`l=L#eG|QgMPn z6P~m3Mrk{2EL}J(O3`49kwvpI8iQ~WIU$O+>j(^ao9xKBM<~au>rR0RcdEXo-tipl z;um_0beItT@IikF%aI-+V42;!HUDhb`iw%lF6foCo)b#}`7<>iLcU?RH+BjD_ z*F+H&kc{snT9`PYQQ8>heuIUIeY3)VJ2<}6d(Y+)KTsTT+jrs?YlF-iJXh`+K!bPu z(DE3r^E7C|vj|4?!n;Q(lZq!#HTqs*t&zPqhJsHEil#I$rYq>;8U~|eoo|_;f*U_R zjzzIMrgu58%WH_}$e7uT;K$l|$d*={?f=6U#}_1a%JueYqiZi&`x|o1NmRH0Q>X&U zH330(FVM0PbNH{IiS`fqcLE;Y0>x}?D#*W_1^%BG z;>AQd+c!IE-vc9^qLxnaiGb1BCTi@QwhQQ4bNdt2TUAwn;gSXPUpKwT zMNp*#YN$HHX%RE4={O#P=8mCSZJWJ7Q@auql;VAH07%SCci4_>qT@mvHIv4GPLdTc z3|>3LSMYsV6*?tpd))H)Z?m5cN~E>vS)^qHO20u3LkCR|!bl-?*vJO>-5O|{JyeR; zHX~l}7Y8_{;I-%DW)jqWH$Q`AY!bH&wpd_Np~(*>HT|v<8Mm0%FR#;66(^Emp?qqE z4)-5JXaZ$j_763*?!(eSi3wmVwlLYW31aM{6z1|zo%V#9Nb=YD2-GT7EKcYg)5vJ3 zj5HTU;OsI`el;mSm8)%J4Uro(VYIYhZPOBtH~gH_XrQA})@dR2iZsk>bPM~vDR+|q zqWRhrDzjaa2j$)}UKrw04fPjo!!&?A5di9*>J3oy&-nk1pbbEbDO{!*)c5&v0c|H; z6bBZuAJ%>lr{Uem`ebyc4G^k%$bavtQAmTLHcN)@K?O#xPqZeqR#nbjX`ZU8;+4@n zK#wc)tHNHR^J!SSVHr7vO zjLuy`q|kX8z!;0y+P~)g$QmF3nr|1dg|c*14vZWn>pxm`!FZ;!od{veOCHdcAl#*r zADDjImP^ly9=9-t&Sk6TB@CSE1*Z+43!b$d^hBxe8icNEuLhLJGYH!U@r5vWc1iQ2 zUEX*coF68(0v~_{H#S>&ODs-#V=Vk*cS>qUeJ*0L&0gi;Js6z7)YW*;OX)ggH6G#f z&;{=T^SijeK|2$|D3>x3oY3TdkEMsfb8U`dFRcnlGNUk^32|z?U z))k}02>@i;E(7G<1_q2YA>ALWFm3;*gy> z5^goVNNlVPB&6p`a~%ej#6bD$1)Ob!pJ&3T-8V7`=+qO#{0V*Inh&eZf7P29CVG=- zU1qQ04yt+8bTrzvc&M%L7j@whf~U7Z#&xY-)=Hlp&$6K*`LV%XdWz1%alhN^r={=M zIF(>Y_-V(ybM5+%-fKV=&WgOqMX1VulVnQ!Od?Z zWh^I5xT)7ND7&EC>XR=wsFM~AvLiz=hQ>xY;Jj>Z6PChc1GNTp|HZTI zTG+DNS}oglH`lV=;>|5v%eHOXu4U_HEq8zS`}^;CJ+FtK^Ev0dkALkUdo}EP$o=2Y^NkQg zmd3%lkx?Uyp#r7b z<_jtzXgX6?iNd?0oj}B!-(#CR^8SA90=cWtLxo($!GWBLdgo+IUxN>Atmp!U3i5*1 z8We^=1deHebO~hc_Tx&VUOKzI67Q+UVoo`Y1^|qyqj8h(ndYb*#8e2Z98H3vv-8y5 zd4~K2Dynczh}Yh?vr~r{iFDrYnqFnm&Rh+qxJ=Ju+ci(++UX#A|0c6?Dtf<7%d8~` zzhOhYVq;PLi&KG+mLCS{EIKofV^1@_1&(x6yJFa-Jj^>$2O?JMcn5e&eGGGt+!56Z zOI;AcFS6Bd#4;Oy|0fiMyKn+=i??Cip0@zqM(wJ4Y z{c0+xrMsJrPtod-8|y4(8|~$`oWjaE+_HH;Q>P46%|z^PZDwIwK?3;NWbuWzD;(0j za{zCR!>**#hF8rK1&CnmuNYS%yA{>pFPZUK$+DVXvYN_Zp3@*`N;`xYE-iDiYnE1j~HL>HWSO!3`prOu@1T_rG#ySOoYGCLh_QC`b{}z^S z=`TU;kVvkyhGav$zw8&*A@t2nYvy9}n{F$GmAEL%2J(VcpW8f5AgN%ds>>2O51GFo zo3S9tXIdJeRDx1#J1}z>p|E0fYvqM!P7m7~z8Ga7S*@{c{Hi|{%kt`*w|-FVLax zsj@?fjfT1!)w)_Y|MA~X32Z->GH#Ti&0T2?LW11o$jP_Q2Cfun;w==wCV=A+6=*I~Vx$3dB)QEWNTu;_Vd2?+?z_=WQ42Cm ziYz2#;+i-+%Y~p{;eXm?SKiVJF1YyE0Fdpopkd~U(%AHCUhy6R<4xUQ)dR~pxNJQt z{=?Y%@I@-|Y${nO5G7k5+^PcfmF*PxL-_@OmD|f*G+@1SwiXBr!C5ybHZN1AqOMTe zYuD5}MA`K(qHqcjaJ1FT819%cj(GAYGv@mG&AeMy(VIjvK7G0hsT*S8pjF18aZ_He zIKdW)KrC`s%|2*oGGfqJmOLaT5JsqFfj->Y$W`m_3IVevC_N+!@fjZdIF3<6Izw_x zazBqZGSsX<8*ys%)cjmn<{UXf7d;h1Wo;t#4W1${u5tjlLzVXUGy77 zgOkIII!{?LP9AGA)xwbu)Iqs9Qn1j$Ms3bM(rdUaGd_!co_19|=Br?pRXbKuBo{9- z;$%LlSa)I6kB-rS-^Gh;xsN`tv==geS7na&h0*Q*KI;ncP?SYBf+8a*AuGcVfDcPm z;rArJx$IC-T}-Z+&&z5jq}tuWfuP3u@?lfn(4*;kIaLk1Dr-w9R`Ydh+u8So-9n9! zV$mr*n@A*WQyDn`SSB{x(Fto^*p3tV(O$T5LPdhb>(%9oFGfRWK=YjqdB(==~rAs zD+jP>MlrrW6}hjvu7o4)7Vo`A9S$J2n10==82eA}-%#buQf>QUFxX^Qqhfw5%}QG> z?>J+X1JLCf+pFmMCI312v*vCA2^?uvaEu5yV(V>QQ`Wmek1{of8o%vVl^y{h7osrp>RlslEzLW zzL<}_ceXpk{oD^4`nI>#s99$1ru2Xs??AodSdPl0&TN<~yr9{f3gTQ^EHzcMSo)97`P)rsQt9GDecNjsL~Axdsq) z^mn3={;b5P*v&5zUxtzqZ}8gTnM4Zxm)lY2-yJ-xfLt19w{Jry?NOke( z*e~r-gxNXK1>(TiZDVY+`aFGbuv?uG6rXR9trzek(K%SLOnXb)O(B9;w?cJE1ddpz zkMF}TG5;4=83|&hOIIw*$A5;Pnd-vWn03?6Ht;(n9#&S~pt@&e8Ox{A!YZLJ?9VU( zu2H74O-_f9xkIlfQ%M+x`hXXcBt;p0wsV*TPY9XYT#nE~WpPUD=l)TmGyu?yQa`pl zPpRD|KnF>QXicW>)Ga?7^uF7K#87oiu0u8Ll0=`#`7HZYM`xz{uG zd~G7=a+&$4sp0asy4ycZv-wG9q=P!esJV<8NRorPM!6S8R(aHnjRo&-^(8e8$D!av z`Z;nUe~9eig6X%~vW&3)M5NdLPPC;1??|qnZ)dB4edasnm?2w3%z(V!5s z>hHvxs+uKye3}T3sNgLuYiMCacNSl(CU{=Dpd$`7I62pfFV0HRoDFDcxQugr8}oaA zW!t}U*m}Rea2M(Zg8hI`Qx4m{KCcfHw=1W9PZZ#*nr-kcmmk_Y7x?4i74vEf{0Te{ zhRi%E@q0W9&GGAb{6sHR^{iB!%@6KT_;I3?eKMD$wg2lqG4u|c@x|}uaUwLD>E$uHW0+0;XT% z$jfWXmEYSTrbEmO|6|TaU-kRa&GlaF@!LT^q^?o0GyVhvl)vy5^Css zFZZmF$Ex*Vp#`}8^YY|Tdw|jKs70a;K#qSl9ewL zmuhP(ddU9Bq4#6>XD=Sk65jI3;9?8!$A2Ys^S7LTO90haNeN7>Bd-Kbn_uwD zraw&dOHsw@dUq!UPq0B|_Vq*3HA8$5WC?3keAFr|70&i0@5b}mn_7|m0k>TBv~3MMO@wZDz5m;vx$2R5c{F@my4if}0bgdQQhZ!) zz6yOvy-FeNbAN35y&RTo`@K6*YuXQwTnYKSeXL{pJzTeJA0%znp1cg?^t|t4Zg)x8 zK0_Y(ahc)#F_b~2$M(8w2rO{I*we+_eya%ed!HDAT=@JBS_4>a$Z6)v$DhsGw1TignVndf}r{bq_V=hfi^i#kAAJqQ54%BH@h7zevg;C5UG!zbkt1j@^VV_Y=ka)LK>+nU73$#kHs$wneW%ppNkIIpM{jCh<8c3+)1|$) zEtv7uy9qp)^YoH7`HEutGVjhL9B>8V2^rh+j=i?&rjd{i&HgVNo zP-rI8jHo5AK~dI-TgeUaR_We`YGG``wxy=MO;*4x($CnX@U5Ot>iW7Nk7%3h>mUxZSyW$ zG*#3yHPnxkl<1c-3a1#HoxSu!G!VL#>OLtAKU+X%S8?Gn)i6z=Ina{-ww+&!xFJTl zGqrz^+$p9Wk$3Wbn`Zbs>aAEja*5s!O-@~}b`C@8bIk$?$13Vq=`lle z{;hciq-$zZ43#@0yaBqXvJ2_z@@rMZ^# zubCwn&sVrq;+FcVQ%JmnHl?z}z%|oS8Zi3@%g*>#<;W(uL%RC->r=l+63=*)0UFU6 zXzZ}nw;rSG)Ae{m@RJRPWrgiju4;V3aiV(F0^CVs@e%#dl1|Hn&w)6@v`Tq}sFY`6 zU!ya{kb>f3ph*^Ov}!&uPPmAmmq3wwcbv3vDFEFcPYJ5^OfRO=)Cwb69-G{HMPvUV zCH-e?zslyxEMCPDW<0Nt%h;42!e*IT5y|I400!>3% zc60nBDWuBSwT-pF<}fkee43@yf}}5oNTtw{^`07FC}+VyUQDv(MGk4p2u11$7}vx6?leB}B2KvkS@w?-o2XL0WK94x4<3R`Nc2|v?gAk#mmMjAvL>reFzIRg=pdZ8P1DpG)SfXiAWsm>nfWP0X#N2o-{?m zp=}cb6tl=$947v`ga4EPS74%-RVS8lbBbWm>jA&$vwSxDa1fcR=9O(G{(#$lS%F<` z2;#bz{ChUD7YWeR0K+CYR<|2$8d=&@t(oOMF}Gh9Bzw=UBQ?4>J(Jj-)GJl;p8+y+3U{=iz3JPSN8qUljogG* zSA|9TP4f8%NXe`u6m)9f$C~NQG|h}r9)pr7%#p2I2rypYq1Ac&@7?IZBkX~+pQ-SR zYYNasMU9rN3n^STrDRH271U2}H;Y?vZ^VqUDsu}?+cr1*;EgmiO8ebbfzT{00vK#6 z6-P)5+ahQYSvvlb ziQ)-A@NwwV*ApzJ`8I-$i#daekz&~2IdNB~8OSUXI__Ff=5}6!r-iJ{Vq7Z+EvM}j zwYw{(OoA&%xEqgi1&FRhGsIa=$A}(BXxZ2gOFr8QICiRW_@mOJc)_P1L@hpf?Oj36 z1!tH00n?T@GQiQhClAEIjZCy17QW9cJzHLhsM?>)%Q*m{=j4F|mFKkW=^l#i!C#A{ zgDO9vPuc_dN`~zh1>UMVL{+auC)!Uj6+2>6$L-dVl)Uv92vIVvELTR#!uY32SrKxG z8YgRQld5NSvzMu)QKjmwGA^;yqQdu>#l@6sj}U(FGN606bh^i&9NnR>XY>`$vRcz2 zm7C|9T2T1cA@Gq`#v#LMmmZbS6E!u`LN^;Z-aJ?}G<{{F(}shJA0NJRgv4jlIxOic zkTbzM({Yp5W~I3yb>ibXwLy}PypPRaH}j-7kP4TevSPN%Ud43gU6uBxglR~M#qd5y z1Zx*T-B-$FlB@We9>{AB=y2mMHJN@v`*HiVvamz^wybe|pchd9guOw>c#G!9{L@g1 zrbJB~Q!?NbnU<{mcW>NUYErK!uv=Lte>X1FsA6aO`~#wO!4cxRG!Z4~zuZnZ!A zic+P;c^ypj>qCk4B|oK0I`9sZFvJ)Zzwz0$Ub0E(*~sI`cqxEg)3}jHlqx6njyzLl z2D9-Z-QP@z&$n$L3gojUh)M~$RM4@Q-> zf%qz-hm&wf9kRM-YKL8`e%8qJ@;`SHHvnvTSK zk}31Im;YeL0C(9C+}Ds~;S1-U@fQ)c&|meZ!nl_CpGu)j2@ZMkzIR%tqd~GrSCNyK zHPZ)3V_Eq5upIMNm&?Kz63V+1Ut9|bc{`Yw64JT%V%&4oKXi?n_vHnz3Yx^3&ur5^ zQv55$1wkV+`u@y`tgl*9&Gjq(7JROogv{8H#rPOOFuUkNBSx8!hC~?NnazWQF^*m= zCBU9n6PSKl!pee1Dc2r`UhNVV3N)4H2d5W>Isg5l2S?DDy#yw%)k0ttGNYR)&)mMa zs=HPv2_igCi4#IZqq7IOReI-H1S#fMWuuBv`1iuQj-huxJ3Z{lGPoO2v=3+4nvD91 zF#V`YVd&>|=(V|3fGp`|5J{7%mMQ4hvQ+`j>rH=qr z!E$6Jh1Q#(KD$Ro!RcO^p40&DfvCq?bW`m8#T!c(Lz{G z6fmW9@W(=qjL_Nf8I+VLrvZgWS1i#u>Q(uG!k8Wr;7>xS*b^>^)-M~cmi*(y!%gdK z>R5J$(Hr(>#erlvERInDDg8r+)#^^47wM!CEq%%|6N)1>7MRgzyK7LGAqM*wM&f?W zV*3S^w&@?$y$BL?<{rqDUu(U`2GVOEVH3K^!s=Iob)I+E3Tz9r;s;sno0l8W{-?0# zZ?*k|-`Xt8y%o&#;L-=B(y|UYv9nIlQvQTjzoryOjV+54e~yY`3Um#u6u+5&- zMlR8R*RO{o7codJpjG@>jtJ-8hO?UKL_G>dx}bHmc6IAsTidNga8s-n-2R0*hxK9h zK@wHleraN6b4oh?m7ra4WUZ947K3Of!ELjPj&g3$fyAJ+`c(^&8aJSg>YOKw&ckE} zf&BBRRM$;~QY{IV#32^izgpJy>Vo7icdN*+M$<8<)HpHsy`Pc*mOAGbo&!4Qrm*a0 zLN}o5psML|viqbG{pR^g5r$|3*wOy_xe<63`YWhK&R0Y4^VQSe6)M`PI`-O$8k?Aq zQhwyGNpRVwF$oP(SyX0>wV$S9t3BZ5(JsED;|#B5a&%X+_YNK5^*~& zy&O3L8r0nT>tT-S-TkTB22rczhE& z0duo>h}xbht>}ob-4pXo1-@8%RZDsDWE~t8kQ0FB3S06g(T7gMN#fS3^{7(HR(w0V zl^4OF6f!~Dy!%rPu2HdeVZe016_$jV8)+7^^PUFk>*xXdixg35QBeSh&*; z;z4+YePA?`gtz)(=C8t24rrZz1GqwODz5rKh2$));<%=5*G){2rOyvW2LAEJOxmy@ zQ+3zH=(lRbjNVSGS}PLQsOkkg*s^1t!&YX<7R+Uh*|6#&Wgk2>|^^ zvLAsGBPIk$*a>_J1meTgCxnIZV_CHSy!IkDCx_zshf<A* zAG3%j@YQM0YHw2Qqv(wM&!~sb0UK(sDnoTI+_ANfb(y$QZE*G@CX)TM9$FBwY{v3&f(nu+Hr_m?4ddzaRbcM*_@cQ(1ji_*FI z?%u(ooFHu*QmF4hphfoclvmaFCuiQbII-$NRwe%2%BomL-<9gIL_=U>aJXrg86wWz zNoEind=1EawVX*X1zNKpZNjdm=5BprbnTokF=W#IjU z0ByhXThRiV^|*=til3<+RP5rz-X~@SqhMKSRnX}KN=QRuV5n?QdiCq?#HL-W898BX zke5y@)m1{F&LKnOx?!t}8*kDsW1-!qRYb7I=z|5SdvX0DfW+zw#%qO&r3Bd#Aqln^ zf9eRgB-|Bg_g}<=V@(;ZOTQZw{gpJi6C+0_j1(;)Z(PU2Qu=2FQ3XV4>oUQ1+}iI8 zMvCH08t!z$0GO!}W8L=4A@nEjV|@7mlF2ySl=9u}uR=sU#LfwGG$R{Pb3wb)afwl| zX_}U#0mln&6s$E(^%p16-&iSF5%o*YPYh_D&xtE+39`iG&Am2&C5y3qRSE{#%yZ zqSeLbqR~F)F)?SPm>*8%5 zix#>Mlwba3;%Wo&Wtl}405n#-#YDkDY;2v<>HsY&G6eaU# zQNZNMy5>HTo&M8cn*N0@a3#|?QKd`e;OmGDRBPIK_S={21+oamc@@dvt>a$@3nLk$ za=J(ew(sObRxi*XRyj zJ<4v9Ca`iRMPn#dZ|YG9G^Lz;TiULq>1EHbMi-q--E+AwoyD2s2ES~xu!nnE=k-N_ zq`Hkb83=Yemt~Ug8gS`xO=Z?Z9K)V(L)aF$+pzhVE%RAlw_xo^N^tA|dcPKhYMmRL z2FEN$cO&}YK4@^MEQ~Gr0nIU{*ueGM!?2dK+w-5ap3$*zqa68k>kC%iWY9pY85b?r z%wSwseo{xQgHz72%6RSzgpR3|O`E;H!sg6ajVpW+XIa)E1Ag@1=jq+kuJGh?m!#U| zLTAnualf(z^zZ4M>`q^D;8Xs7EBs+s2R&GI9FuT%?@UqtXprKfi#Ut{eqzCyeO@j)jkp*N-18Zd zQHmRpV#C%R8gCXqwan+`pSzsq+rQ}D^M8b^enlR)8SDRKcTltP2w26DGT5Zu*C|!H zrODtn%BtOxKuOvNo!?Iko&6a&CAG2{x~EZ3W0gkj+tU65=bX~!NV)gY^s4-46q+Jv z#E19JE3ZVjM^R98AdA~OBwwT-*oh}_5KK^!6#Y~B!icYInpKZ%Rm^~XN7%<62MJpf%SXV2fpDq|G_tvF@L!)E^_g#G9m0Mi7=jT9TV|h>VU&#;l^ir|_(uP3wo6uXs?!sMCnd z6|sk9KP#Q{ctQ>IpLO-~S8^;wra{U~yuT+eI<;hc*x`uk)g1`1CP3$e2=Vd=K1JmI z9&w)^sz;|9iqxhkaFJx`rusd&vzU}rOKAsY^L}i$R!B8Fett4+ z$=jDT=A+z$304Ym=*6S`hOmmG!BBg-wQpsD+fdG~ZzKD8T{)b7Hgj7DU^`qKyQS;5 zt|%*M^5>Xm-0j1=G=n?-sdM`Z8wxUih1)r2oqsanYW#avBf~LLzWPwOhf+y?m+#iD znxgpJ_Bg?EY{siLy8I$fb*AFGmkB-Zh4^g<<-Y~sT+%;KV4N3p?)fUyFSpooHcnpp zkWQDUu;o&qAYLOY}CBRBx!}s`Pac-)3^~LRz!mPVG zjtSo6O+HXwVsl_SdUBY85~Q7w;-HqQvzuJ%Vp+~iaAIT%9{tfdk8z0@PS|WUE1Crv zDb+8X`~$;!#+S5j7Mtp>ScBsacQ=YFt^E}8jF?=UTUH6`m~JCS#8IO%oQN%Tmyo$g zH({AcLzzkdyg{!tD(89L=seHcn#z^$R3*HWU3i|fe(vImoWB5JtY!C0T%438V%8bi zUTV2zIk5`M@wfRVm8jnD9%w%aG^Ph+$d+eDa5U(AWh7+lJAJpPhT7$77{#^v~s& zvbn6~Q{UL;QY>Q0!|hqBcXeoA!#*>GIZ-uO$tM%qHJX|MOh1xc;7s^Q z1z$hyw--RbM`sj44i2*=K(&W^gwX9^g^TjJo8*W~ z1N&23qRqO^zqmvtp=dBK4(Qy@J!7C`)psUsX_~-MND*5HGLEWX@vcm4kt`PP@Pig1 zUyG=Npd=u^(PG_$OALP!a3Hou71P&mqh^v)UsGRDDe)$Iq_drM79*S*q;(cvI+|AW z#Jcym$re2{9xkCT`g_jrI;vO9Kd&rM;%J74U1h#Z)#*W<<_;JmuMYf)*MPmjo= zLJ6-}M$uwrQ+D_1WAD(=U99uF09}Ir!zl)P%VF!~z6{s9>+KG!{3bs>N=k+AMqFW1 zb*f8QU|#I20Hd}b2x3oHPFyymFlNNCMF{)3bk9{H;J8@Fn++-_c>hx#`OVurLBBqWe?u4#S%j#X?`~txkTHl`+ERSBpq~K#$i5 zW3~S4Wk?n5Ocb{k_uQ@r9&MUy6^Qp?YpeNYfvi>(*E+eFL-7TV?R=ojtwcwET!i5nOkiJ`k&2*2*^xrfNoe8^0GRr7#7hhhs)~rq29b(~XrXo$|Qc zJJYF1rD)O;^kqQ9vlLnrI8H@}uf!4RQX@sUj#Q#45h};XaCpYv&tUUd)UZEhpzOt6 z3TnQWnk}NYch& zEPhOo_6;_763s?OXOOhr&37EB=1Gh@h#&iD1)LuWaH`eO)+w17^qafVou88d9ye?F z%w2g0Q8(#2IKkH#x)KvX)8^&r__Ovkb6$-9%=1f(`*7uEW|<<-1Urqhr~E7!5SFYd zZubHH+N^hsrf|`>naq7zu2y7kjxUX`8lF;W8`+c`Un7Ytq?L7N`9kHWr^&}2arqpR zT5Lp@@fGv3&UERz(yZ`y=urfz67%VP}p-neBmGEMruPQ`JAY zXU?$x4X2h#L`p=^!GMuz4@K)LDW;LWC^WyZ_p@ldNT1qcjvGW~5*(A@4a_$jq?diH~1`SF`{;_08DeDXQ4Iiu1JkUFcRf=7J z`c^2D7w|yAcn{Wm!tOw0xw?s|>JOk0>2mUNfySOoQPscD5v`zkPVc7SjizH4f*T?y zn=DU3`v%X*jc6PW+#67_%gEYz!;syIdqYf%k9J^Ldf3+6Yd0O?F2$PwATXz5L_adf z3mS9BT{ZNrDSH14^f0Z*WY9}nbDi4h?=MVDuEyO&d4PB6SQaa5{WK6ERfC#qeU@9J>&&szwm}@LKh@Z!CCvpM@;OdTT0gBndr|Hosw=r8eEyRej{Mb_-RSy4 zzFyNp?|qNN1km_XaoGvLb$CW}<`K^Sp?vSW-zBKEEsXw`wI6oN8Bl?_++eebn%yvE zV0UJx8mV0vZQ61c!H+h7F#YcyLqK*E;6Aj#TJCgGz1|opG;)FR_0Z_RWa^(Lm3sCv zqWDd&GcelYTs|*yaNJL4`-sQB*&{Y4Gwx5dZ{>E`Rte(sC@dLvT7-|&CsEWD^^{n) zYAm{6KhOYac{2LK?k^fr(Y!$x(#?gqLSG!Wz(`|_jikJA*bmYB>?;l&(LptZnbPmZ z_ImP6$*T%iFRj~u&P{h2_v<{ZsHi)F%Hsdwq^!&w%WbJcl_Aw%8A47{w*9)o1WwOz zin2T6Dy-5iX-ALOU?<>rVFa$}>O;1Bu<555M(9jZaWXh6Y9@C$1yQB(VVi@_Hyp7^ z-PJMc@6HA#-S@mX_CZAKdB>ed!XQ@YA6QLyGfRmEa>ev<7~vhz9?^uC%>TsQ^)1J$ zZ8lo3^M3~~&cS5ch+7OH1NIjf0Q7@!0fk6kK3HAUPlIAUYv=qKBfMkaxY zy4U<|9y8eG-XdNrF0vb9%Mh3kSoR$#0hF+%hEYxH25xZ7Dul1ME;G4kmj%(CJLrj7G4@7f4gG1e9O*O>~f~dvk9*tqLN6xBP25bpIBFOgZR??foN;A z^@2q&fMoCDmgzBU+8WO&mLTv- zMAPFB2X6%#HMwukV*-2M4-Lvr^G(&2pdQ0!IO?o88&l%5HmL;p=)HfHnCUS36^s<> z8pA0_@2{w}gC9Jj2oRnT-r(7`J zxJB@UBo=Q_F)y?>*Ar6KR5Hy9^w)QpVgD^vD_vq6{&KerRT6$EL$JSfjAU^p7Tw6h zuua97sMQ28)P6jZh%T)p=RZY%jCzAe7KIUr50-SdOR(Ie`}E%9(h8y4;@w-^%vQnd zx8eh8jitDm)uQSRZ<;G4DEN&ABvkb!?uFHCS)ic4Ab3NRlJ3Ec!X>JKwau0bT6}|w zvEfQLf^~d%i12;7st5oykELHQWTjA?ImF_PrpN(aO`?QylnVa$G?{-2J zXrk|*1oVsfTaN}LoF@IgUFtP(l+|ij*Ib>FCaym#@EJ!7gJ1wXMDE?iR&E72+~^h9 z`6?(pR$Inecb37Hyo#wD(>X+pLXSvuuEZcG`R4{nc=xnCl!iO6GIt`4he)U6H0Sgn z|6jmwR~sH-!p=5^_q`mJQJl{MUc9Zk4D)qY2d^3>D=IU^k4Q6)_83DZ@XM+W)%a8j zXdYFQb`>=z=fR!1pMQ(g)V$63S$M@hP2T8{=G8zMS_NC&!*E8)&&Bt>3iN+JBXHJL z|NL;`6?-kOJ+_&9_tS>=_FLbu*IIPFNRhR zPi<2Ensnub9fk3(^6$o3XNm%ij71~Fb-r~|OM!aIL8Sxg5OwujHLYCo6yFGZ-}|FB z5bv_op`uJI(bH&fCy1|Eq@xZ)~kR3k>uK?$NU{4&3_Wn!E3zTip0L{sK|&^=Uh zy`Mh{Y(1MHMlTblT^*AnbC4IQtGP{ekV#x(S8AK(w0rECikU^jtrZ*EjLqeLggz)m zSxynl6&HS3k$F5s*10z*S8b1-;-YO(>7gp3%hbipkcFP|{f*t~qt=VS>V4m>vX6)IS9EZI=O;oYm_G;Y#B zp{W|sUN|EJ{_4s|v%Y)Gi6^%EO_uTHkL5KbnAXIn8q~nUcB9vJ8kaveS2WQPOq`6pTKt$*pe} z^VP{HF@TyHeEDqb@-a0^?h8-)hfB#)+FeRqDs&n?gC1f&ZViAwZgyq@1ifgk&vJ9f z42q{#ymz|r3v<5T8Bg$wath2a<~JV4FwP(?Eg$5H1vdyRLFAttFrINkh0le9w2fn` z-uXFw!Oc~ODwUR}uoYR{vrdJqt&!J|n#yW#rk@meFrUd12E7yq=Q}f6#B*z%rc3pJ znEuIu)Q>@%-+1linO6`{#5*7#fZ`=NdDJ=k^0#h1n|tYzt#e(J_-c{x^;wX!5FI3s zgMEEU_U+SZ5rSm$%`2qU#d~-!aZ=;$X67fUN%NF3IpyH1-!EaS%k+4oyb|4YR#)JF zIqF9j{xpuRVo#9$Mw<3Yng_=BhuP$>ahfAYN5fP`E+?y08T|dU5vQK7l5Kh+PExVa zWG^23c%*&%Iz{{g*bQHzuwi(*oP8rNJiz8%^TZ+xO*QVFgCkFQ8}nUX`n-lIJ7e7= zB1VYM>X3#WU#~8Oko7?_$_`Fh&~|CW0qY6V@Hn(skxx1``zuMr05q}ZQ=H?Ak7yl# z+3|o(&k@BA;N5J^UsQe0&RrgBLj07p+RIu>k8Baocl7RyDg=C|AG+=_389G@)Si!F1b^qQL9^xGLRPu=xRMLo z;Z77%G~laWL1)yR z7}pHBx45gEWHGgohn?<*`)el3$?MTgj;%WX2hd|DZ@MXNWf*!E+N^b28)Fa zdp!w`Ro7T8FuY9u0rBM^uaBWbh|TmwhW~_1=c|1SU1<$8z4@-dxir1CWVcf#VlBd{rw!Vwy+2 z&g(8%clL@YZWW$C+a|D$iAwKa6}XdP*Gw;|Uy!?KS={l}47h`j6DBCeM+#S{#X#^O zy6X;v^xxnQX%@@FCzkBA2e9hsqPGSQm&IKB+S>3wjU%#hWkz10mArX6waEmHkOde! z-#PggDPsn^GUsK4i1+Ukd5_J)sn9JCb}+rL#^L}EWUZPDb56RFZp$v zq+ygmnaT17h`WqTOjNz9px1nd5aL5W5d1^X91NcmHkO0mGCirm;%1gPwlT^ffq7&vP^>9{ab;+rDNM zv+WzPZ)0f3i)D#(8k4=@6nVI)i{e(fB9Zrvo0!&;JbgL(XNJO(FA3%?rTYdDA)LJI z*W5HTzU<;C^(Fc}A~zW_g3iR}*k)?5c94yAV4!E8rE^gKV36aeCk3_(YvqN)G)@VhpgEx1QkB?> zinC!Ig+t>qL?&5-oFvj!y-4Esb84fRZt-SZIQ$%IyAZ{vCojt#_Q5J40 z>d2Pn>VcM!V;f%lN`!JQX|rM|G#1zCYJvXoJL_m2aKu-Vi<}6TLcet<#!YJE5F|wz zJuE)QwBXp5a6!}CLj$!Rd?ONGHqM8nt&KZSV95BA)91pUl`LnhJ+sOn3fj~Q?Gm09 zw9rZ|8QLf2m*rQ0Q)-L0nRiC^pfOk(?ORSwsTiv;_#UpMJYHZW?jHO@qOw%k6>(zU z)qA|D5|)-V6%(7qCrjwula_TwFycp7h?J9}-sNvbiAnkabnO=ymn&CIiW}lTof}ia z<+}RsBSs#$sjuRq>R7_PFo>)xa3c>ZOP&gP_LtI!hUFxD4)@#T1T|ythXL@4t6<}BEMuE-TPUYD|R_jLC1$Fk7 z=_nm50MSe*X)HU3F!dAm=bvOxeh{8SA#xK~2xk6|)NM*u((v(jzD{j)y7(ID93`Et zdZ#}EKT~R-Ov?D`HZ)7al%}9V7_A%KnrT#uxj)=@;g?%e!cpV|I{UvoTi4pmMm<+z z`cS!JYRV&|To7nLY`0w)r&;D}+YrOUo976OS;nrKSQAzTi)AjA56ojv4wi4BMN2qP z?L#+7i<<;4eSKs)+jh4Ke2DgArP89`|5h%)6~p>6-6nV1{O>(n`kC6{2k)W#WCY9T z#`TGe3f}gNztAHbPAzfVp}VE5jYpecidLkF0vYG;gTX^qseRuy_e+Rm0xn*!)|q)Z zwThP9vdwIDvmRLfS(5rdAyxe_BL#u*k@V%3lE8~5kuWTXIj`mwh58B9; zwqcvRT;-Jj4wMx>aJe_ckI3(_gH2rSn(AzgpPVK<{Q-Zgd(@>TQXm$P?qD@?`wBrd zXQT;+(m(a7ZGTB1?X!~x!HnTu0_b=hJ?u!oo1C&-mOunz3ddk6VV z%LOk3F(;7eFdIlyIOCf&oW^a0P9XJAS9H3-t;1|!ONPC^6%g=7&7C9XktWj*yoa0H zqnJISbxN!C<>nG0Wgb7-WG6Qlfanx~Je`j_=p}VkVUz=P?Wv9K+bcnL&a?vBt&!j4 zZ0%48PN+^>Bfnw22u6w^>OTPdx&q@?ep_I(1(nJVt$2u((aL zL&ycX<&0uSYiZEi#R+RL!{rH3YmSs40J7vOhSMkCfq0kwM^=P=&NTCB=Z(of*K47`p zNhur35vcE+u7?`GeTb5DoBbf0*35@$#sJt3^jKwIA`>kh`LX>x&1&QBTY#`7WhHV4Xg1E88(+WQWOtRp$e!Y z^#tcq*OCp&_v75n1XN^TAu+QL9MMxsVR7B4>%xo8t-~O4K4A~~;Kb&x4Y>CR!X`CW zw?lY-;fuc1Txk-$3+WihU+v9Yn$?Sz7g>Zrb4BSqD|FLnFu8-wt#cU;oqOeNYd-_b z&7`HX1fZbg+5^n3A725%YDrIY9bPW5DnN_k??IUULCYmu+_i>^j6=)yBQ=_F9zyha~kU@5ZVy|`TD=sh-p4nE=K_H&IUc_|*7X^6Rf#VJ>sAfPF(Aaloxu%*rJ(ybL{ zZd(z=H-PO@d}pY+`8+JvdubKbGuYfV%w&&9Vi|jsfOFe*Dmvk>;N2Y|=e7qF#+8l- zjSyky&ZEJJVJKjECOkLIb5cnXCm!6ym#h#Oa5$1Tlbx%Hi$0m2!flQ431!}3qaA%d z;JH_d%@4uE9`5g?(b}T#Up+?;%Z1o}LoOuGb9Sx@DE2xbHPGj< zi9wCk5kd*u;{0-?S9HL0t<=(7`gDrnI*=vT(){Ig6yG24Tzl9Kk);*#W#?*Lkia9_ zHj$s1k#PvO6&p1AUp+57_b@m2+-+Ek0|9qvi*@daA63}7Cefp@#VN8L&Vtk(tqTNG7+l98 zr4@E=x5KLI-*H7P7jkZbhdPt_45#Dj3^-Rnu*$qq9;p}TnCN{rkym zr*+bct8FIm-2VF^Y1F;b2`}{A9?cQ$OFg64zxZ5sygKmDx@+Da_}snuX9a$a`8e>o z!Z8P;c+6feK3BN721gN!+T`b|0Rnr`DLm!n=Nd7RM4O(mG6A}*rPHllWa7f-on2-u zWOD8Slz0)kizo+pS%L2*=w7V0$+vCM>r2q}50Ug~NJ6X~H+)|KfhF}m`MGj5O09d4 zATK|cypX0+kN~W>&vVayWJ2%Em0o`C72^vfG?LGkpZh?TONHghe(-ZSWK*UeF&mlu z+#}s4+?AvjCqH)$`|}JYS0-fQbMbKX0ApUB<;CY__A^fcy)!#t|~Bc?I;9)NCNjWGm(=j$vjlb{Qckoq4pQP|=UKPg!ATGZC!`JOXe zj2`Jpm|R|h?$r+D`sXo!20?fA_QhNf=$`Kc=-z5GM`IRVFF=>c0Cdq4JmE{w-4qu? zU_{`U0Nvf5%;b@+<^BS6$@r0o9YzDno!#!%>b+5lJ)aRvt$s_1M$_f_5_Dti8(+3~ ziwuJ9B9zWH>91R7XV1kFyP_f;`dA2uN{>=neK0+merg0%U~G~n^$BXHKi-fkn1d@P zt?~iUm3~#xt$R}qRwqQ)TerQ+N9Es-K6jQlHIikfV!Ijb7LGSDU6rfCxxHo)M98Zb zE!d@r(G64;+&n#dlcHN3l8F;=FUyP3Jv3%r0U4G2`|*mObckDg!cLx`68nu#zFQ*v z4o7#K$Ra$U^gYAT9j|5$;{&&CzT4fglJ$gdLeEZGVd%ep;0CCFy2`_VQ%J&zGc| zB(1~wCMo_w($!lk+@>!qFG=?xBvxOIUGz)R-2xd9PZ^XGq-&|Zyj?ePydYgpl4vG0 zu~?Ur0=FyfIWa9@Z0EFa(%Kqdzf`;?NSAw#BOQ;?WqU!odPL48EJn2R0n+t4n0Rvt z54GT&9j`@|{X{LZ^t~uu&By95m`2Ei6Qygx1K*XiJ6@D7RgdN=dt=bMBeSZDR|}SC zf0A_d%GB_7vnn(3dr`V3Q*tp6iDkvP*HY2}`$6w?}NblfZ9RV7g=ZiYeFoT<3#9Pa`-s&J7Z}E3S~}}8@NN%ZC6^NE`zDL!xfzYm3MV0mWQozPEUd@ypQy< zc|s$iQmW7#l6IPHaCMzrLz2^^isZXDbzjOLcWixTWwzpfd7fhV4Ceve!wXD{PiPPQI)LLyzw;LPH5GvlxE)kg(rUy?qH9b-w%CIM3 z+R>>l4Gia1@aV4~b;q^Jkp-S(pp2+0L{_9c(cclM?g#-0sJ4KraKcAiWgR}^oK7MZ zuI^YIJdD6attP{mfS~<~n}(1jWZnLf1=3P^1WyyK+bAPD&ZUxn$hz&$YRIX#h}nfI z_+;yXeAZFK5KMR9IXhWnOJ&Aj=^USI-6XyvmfT;oE_vS(Icz$ZUbL=V^byoe6pF)c^aDXtNe`kdc3hm<8VcbrnE(OP)>293~J$IZD z5CF6lQ#Njss>@_oB0k<0a+VXT`)EejR#uP9GJfZDDNysKF>(%m!qsj6!IM%jShn3K zXx%>AS_AY(p9Z8i&?1jkh>|{ul?JygGY!e6nqh}D{T{$>U)Fbe)f6Gl5O({RP$fPc z!_j8S2(QwTiZvM5rBHU;ThQJl@TR(YCT2Hj5$iXE2pHptuVUlIm2=l~J1M(@cuhm< z;;LGMvbzWhJ9ZvM(ykLYoH4g=+{h7PIR+-NsLFLs)UFOIT7*Mx_s-q*@`1dILb5|# zL+uJIBK#&4q@3SF+ReXyvI0Fuvde6RKQu~`{=&HWY?$3F5iltLhkJUeOYi#+2oQRm+Cl6J2Ui(w{og@?4;|FrOk zPBqe#$=Vg$BH_z!G;ZsNwdxToZtnH@lf+HdE*@j__c4%qVY{||A;}smj}O=`(JLXy z%@<(8c0Gc^UAdG1RR(J}zkej`RE?Xc-2g8yaSgpr;JFh#YjT*C_QrM6c9-r8Pbjkm z>pjA)0w=Y_fi2F%lef$AgW|2A5?C@v_o*^W{N&L`Lk1p%@Ku2ZKEN?{eTlo5WnZ>+ zqsu;D;%*K2t;+_hzQsqRxIACbu=y~p(&TjI=AcMr&X9w*r z(Lc#iKQ8^gLfLIGhO8%b8~ohM*p-qu_Ya=l`S&xljPE!fxL}h`bb|X@L1SSQrat!-Tnt2e>PHfPxzYooB)A!BrLhonP!J)!y8TIuZ--K zJpE>si}GoLcGuVfpfZ;|fbLNdymH!Ff{kfp-icm~Pcmg}96u&$H>v1kQ;yVFCTUj< zNxQX3hsa@)c1Z@dMu|A{`54pYzH^*r^z{R@i^ZxA;y{S?H$l7BSEUpr5=+J4giwvv zAhhI9oG)m%PJuJc#_6wlCTDjExL5^7p3BldoeZKFBp`4ZFK2gM+s-9pU`S6ZgOw_u zB;yQ)e1=_Ou_T;zeNN0SjzzOXr$O2$Wp_nJ9o91;z>3Rqw&A)zfCu zzkpqV4A*xMkKlDP)0Q~2Z;>P4f$O%#$sfg0(HwV$t(zrc-xA{q-Oep&T_2w@DLjO8 zdJeAUsCfWbDvaw;08JcVkixYg#+3D*fQB1bS5n`(TZ|BJZv*Sn1RGg zE2Nuc#g->%-S$N+HA`@_^#ByOZr{s@IIlA)wR9_Zjh5395H&PpsRHdeackpM2ee)=_eDlQ%hDzV4Ck@EXJgi1p%imzbqXu97aV z_siEc($^sQ%w9Oe0R;&J(P7j=y{s=_S8OZWP{Wrqbl*V*p z(Ea@Ei~s5hCQSTTI_+`KKQ!nPeQ#V$^_3GQ5aV#g&`%P zATi(4VUyU^3tIC&jybPs-FCPrY|Vel*QH`Aq(9FGUY9nCCPGosBRmEafNdlO*+QE4 zgs+?b0-Ynwdp8Na*=mSfNs`fpXR51rC+sdUh;Z`KYZ&rwo8A{;;uT+YjaePBizgBH zsEb&vyolY@_EWts;iPuL?sJ3@$HU|Cp3gD@4=w@Bfisdu{8gan7tD@Z{rrQk`{+Dc zk92!nFJ3o0*h&zF)$~EvP5&eM7bev4(sivQYnEwa=J}xO@~+?mL=0j!PQ!yU_Jt6- zfXW|qUFqt&3UL3`U+~g(?^M?A&fWi@>t4Yx)Ifk(@TKd*gs-VGQv8+=yzZUu3k!;R z<%`#iJsb9exrYTjl3rS+s11#pEnf`c$Cenw1HY0rxvrkHKGKRPW^DX#;n?w~?T%4f z5$YWc%`gGG_VrB@$r10U<0b4mu}f6|XWfvgv!W< zY6c1tdm!9oo^*8h69EE03~#*34*S?q}_nnHg$|$Nd1y_>m{AB zC)S4uyE&t?SYo2CZ>i=?((V~6p%MoVZith#OHz;66-4q`K1jRu|C_Qo-31oy;J3jS z8sUM?eUf&eypB6N%d>uvc15Ex7-pP;?l-bxmRH=pM^fvbkaiuKVvcu5%r{B9NpA+x zC2M-Vq}_lMS1-wlE1=yh2+G*usXj3*yPFCg(^=j}=F-XI?({aIK&)VG0OY-Qvp^5! zj(Y(_sf6Xk>@IQgz15Y#>GqeiOO{&~4td?15Mpw6wH}B+GP&!(pPXIGP@_oF2W&5A zSI6>sg=4GO_;Pj&m6iAO#BcrO?AD{p!+7jc;6P%YaT-&bG$;WkTp{iD%}0D~&gq`p z!rGmyU=2b&!8E+xBT!>i&FMiFG_2kJ&)FPU>DYLcm$qAicT|kMEov`qx9|v#CO`+z z2W|I^V4gKH0qy=l+YJhoh5Ht5?xgJ=_E7n8j@~BHr0vFk`qmPcE#{@|D%zaSnu<0Y z=7`anE1aw(V%i?suC)MSibA9=iJH6aR*NKf*|W^}`*&mQW0wgHa=#g-JIdy9f-H6NPRWnisN*YxN`& z(=Yo0*>&E2f{jv|d?CAP6LrW^8B*B4kX>TfGgcd+PQHxY_^A^BIl7h)#x9wJHIwN2 zzF)@fniIVySe(Z_jNLY5E+Q?MvWIf>Zd&4-iW zW1*oz_yRXn%@;G1VvpD2AX#&~nB6noE8xHEgkQ?8%R^)Luxx1e=*Qg+3w7}hYUk}ngoTYrlDi9l*;f8%)X&tVags~DWq1p$Nq3?6yM zyPuTZBb_5>#9ynGe8gzZK6UuTFr|Gl$GOoN(?hl(FJu>Z=M?Q?H5h~wvU_mpiM4fn z-e1VBfCp9bVlKA7klhUe<_e^iFd~rMwjA7u9durbjCTjJSwf$*0^Mz!Z#*`!>ZZ#$ z^wSrw3r%c`*ZrXBcj9%~{Dq%Preg3w;2A2ld&1~g^6q#>4pr2+2x};rQN}aM2 zuyN^=yJ#<66&F-4gV)U<13;#p zGu7%8U|Q_^OW55(zP7lGX0@AyU1(VOebqp`;pv1BcSz3<7;t?7yL(zWl7dSWauRkG zF_Cg4N)*GMkxSdbym)vahXtfN^9v6;&k8T3t7;Nj=`AYpZdJy(x}f zz^)TZT2SE8{|R6>-L}8 z^$VKJB~0UyM~l)iKr4XA=Oyfh&J`8R7I&!$*bVmlO3C(a6y0&xnr4|rWy}4b>nf_J zrlB71a!0Hd2goN$ZUNE@*HtaTbz%Hhcj}j|OS-5ZWQ#)TY-ru~g~0}MBX-(fvM!)4 zSOig3P^=?bTVrA?j66H=cHFsuGKwME>F34j#z&1X(5h;s8qpdZ)T4lj7k$1^UBx0R zrwZa@mW^ml;_Z%q;gamqi_}%aS54Jj1_C>gx`jAd%X$`p7pV)+u%$SP?^#0B?O&YO zq_VB&VGv5IoqyWWjDH3>eD*bZhHM4w>blc~9YCirWn=G1cAB?)bE+LGt#H*T4rYzCCi=JfO% zkM^lvCv{`k=>GrrfBy>q_dopoKm6mLU-<9;{P+L+fBeUP z_n-6OzXJXJ_}{<6|0Npur~F^S?fu{QzyBlt_t*Kqq5ozpbOO7qfKQGeKiLJb*A9I& zW^Y}5j`pFh!}LunbN^)TTaVbVDwQb9{FL@D^?WX&$Huy@e~7ifl8+zUPltRV36Zz0 ztts8=2T>I`O=}DKX-62RAj~sDpB-j!?N^E=^JudHUvGz(HMS!*#T)V9XYF^jwmQ(h zN&Eb?a|?wS<%EI=Vt6~WtVs7ZpL&0cJX%)y3cBTfA}&Q%w94fG;klq3`GLDXSEsXB z>xvcHIVDsYk57M2f#vI;?#?ggmALAsolw>wU-U*6k=W1HZ%t`S57-L1|I^MU0W~}P zrB!eLiMEnEV8r!WoPzeMAKJ0&rhg}^2wm0w^EE~pbSd>1@zXNKHOjS3!-~?n{%vL{0ilps@fd7U zrxqmk?RN|TfA%>LHf9qFJkNX;wg3WWAyeSX^MA&wBz?aupT?Ry_HmrmRp zJ+Ekn8G{y>>XGTtJk)N?`%+7N^wd8;sluPB3_ht#rY$e*(nfA#IDMxztG};DaZyZ1 z7yr}F3G`BWI5|9UaA}8xl}O!z_mNkoweAy7ze>W_hkmk8u@h0123k+-& zp)_@?%LRv~eNRg#&1NQEjSiIqHj;<^r}S5*q7nt;!w9n-1lCk3Ptq{w^q(?@BDU>g z8I{5>W0HxLROOQVxR$Y0#b>e(8KuRZv<2&B7eanwSxWFvc2mssB`MpV7WwN`UBzt* zdn(j@VNANb#;fvfR1)p4p(n4&;>KZi+#8RfkSWQauYPYr=O{3hr+-?0b`AVIx%lRU z>JsD|Wk{H|Jh3Qswej=GDOl^uPYdudG~qIyb~^sK`*7s7maOTit)P|6r6(@9x=7HT zpH?p?Z>OG)&78_YzbsO5y(9$GKX<<|r^9*#l<>J^rCkEJbNozC?e)^L8MzyJ3zN$& z{&Bf6`NSudH@azL>iQq^WFIQa)2Xnp_*{GV2P^wZ@w9&{&*5;Q$%DI5pMEwuaMREw zpFYt@#=Ls{EkQfHvs@Ev<;4}WfIYB*Ou**N{Pb7WoC7KSSo}SG zrqw5QP`Sc)Ty>xBQw?r2d`K#gm<_a7;b9zGP}gU?2gWk8E9P(lj`KjB?}3=EFh6M5 z@g1CeeW$w)te{v=`cw(zyXQdmPko%YCD{B+pKxge!P+~5 z7GL@;>cN2twTFP{d`d%C(b8-)d0bAY9{_p~%d<_PKZ7NozPVJu?t^6d&JY(1pn}Q&%^{bJV zI6=a`_dKaUZgo6AC{m}nKsGR9;MPXetp%){2Y<2}dcg*FX92G4ZpF-Bw`nY(v7J7C zO^eU{8VgWnNu2JgN_&h2>SZf|r{~2>h^v4RPdemaU2@SqF&gWr(iknvYbhWxnRb8m z4gM89RN0=;)z+lQj$tUkn~&%nu*ja={RE=wi>G|Er(Ij+n%I!vu)3jCc5@RDUXrfy z8;aA#(IQN*RpsJ{m}2dT(2^04f|PcY_zASx#Ed!XcZTILw!p24riy&euoD0ei71YE zz)L^+P4W_;D0=pW?_b)Ie8`E&ISJk4CE&7a)CGuAhb9xyH8MiYIl37ryPppq0m+#q zW>H&SV-H@OG5CH3oOKN!0m*aXA8Qvy(y$RAvgcoin;oY7*>4gwQg>tF$F#QEv^per z+XSwbw3MbDpY+5yA}mXD5b%!`@%A*1>;&q=K>%AzBJ6-gU|i6{7;BnD9BvLaf9Vlg z(s=r0_qbY=ewS^U`Y*ENmOdjR@0J-?qgd0qvD%RDu=Y+2(zP_e{7UB=Wg3O&+VYw7 z5&BaOa+3HSwD}ly%)uWu%9CLopbe1N8@O8%yE_NKS; zs|b_#8SC-b2EbdZ9?AP^20G&!;NW4iq7;oEeLMp)o=6oe*;#R?WxyR@W4a=Lb{m!f zYhwJp6;1D97?AZMj)<&X%J2)Q%at^tPUaH7ie7ETUZ)V-V|0GTE};Hv>R3Gw_1=$e z7EmwSksD-giwk(H0<3ZhSMg_5l6sv2NGvw3{muf;vpu}2YeCxdMBLXNtAO_WG_R4u z)(0K0fP6~pM88{K^S;L{AS>&o`%YsH(ahcL0(jrnx3Ht)ALc>wlsNF{3Mw~L&T9vZ zJZV~6Bl7opduf^OWsAq(qvScf0-&Md0pY2}5}*xMvlrx4BGe>%%9yDKvo+*#d(iW` zKWy1jZW4kR1uUr=tXNQ5HJtHNPu^lhO70@Pd&VTdb?Z`py4t3cX%YZpD^u$Xb6;h+ z1VEEIKBUNn+`jbT3RzA!kQ&A?30RHby7CAsH6U+|(dN|DP$$l#(3w z(}j^~%i;q&8%=rX#YC)A)Q2FP_F)eYqf=z&8f`eQcXt3yXF}z({ticzZVr$n1Pk># z2T5VOH-L4gM5TL?vBVm{gwpQ;eV;`59cKWe1pfp7KCSHW1u#>Q4e|DOvv0Zrtn5OQ zB+-X*4_AORyPIJ*LDD%)0rdC_$1Rvoe&y+Nfm-zn1$A|oy;RI@euK6R1SFmSu3P7N zedz~tob8M!0OJfR!KMna1pVJxd&eEI8R^@ z53h>>=N&tMJZ}v%Sao%nKx%Hi9&DwTxW7XjyW$AYVn8aBOZ&BI$#4XCv|!e$qPBC# zK%l+OI~9oFe*#t58a(82jEbBJk7AD@K&(oXz7%D7lf(`nm!dmTukZmBINbo!GnBHw z;?O$W09MV2K?L*qm}US8{;wd~uJg45uqs)Tbr3Kv8dd;F$fWnEAd$ohAU~qcw_S|} z7$bo8#GNgjMRX2tjlkwe7|Be1B!?BE*M0ZM5u=)=_#8F>y62)ouG3Z8uIFp~=oZYZ zEavn8cpOCzqPpAiHa!3iW;ZbRxEI0qXV?nOx$n48MhIt{nT?Jc@5-&j0YF4bBv?<_ z?i1d;M?FV`rQF=e4z_6kfDj^HyRw;<=>YKLBTa*6bSlFE;DHNdw7_@j!vWxozvx3R zuZp}ylBdfBeX1VlB!I*J7nI^q(6b8juF(HoA*v$VZfBP=+5e)A8z<$A$L(PMuW6e+ znb-m{P4vILl`VpR<96M>oU1j*8U~Y0h(6i>WOme~N3xb-|H}z#<02$kutP%r7gpV= z`(c3z-?vuC)sNz&Wp(58zIE|ktlpl;#_Q#jaR1wt<59-2I4f#b-epVL0xmcy$F^%s z&YQ#6!z_Eb2K+yap%WxO`J=Vd|49H9AX(L4#$n30YczgA{L{{a{ck9j^xno#HSf5q z?c{lPDXH0zg0Y7H%o%Ov`g(!I%WEBaBlbCyCG0<85Z8?*WO%=r?R%iI*Lpi^9RtkpD|ll$~H+OsvjE{Le{LV^pjL_)Bjo(#p+kt&Ar5 z5!%0(CREhLAWCE4(q(nguxRAb8m4H_BcQCX@d^Ti-6rh+j@8Q%5d3Ab^q$lUeUD?K zRR`3#ML~_aghQ&d9@Kx*lC0P2^2Ysl3+X@W7{4Me40~|N&8*%=fcoWS7;OXde}S(f z`Gx_rPt3o>XqxzZw@%7G9ZU9VJPN@5uA{p$U6VovKnmvHZGvTH$>AQohVpMT*Lyqk zCnO*bp({$2T@ujUC?*}-@){vYjy&L+;29!jr4rGj+o(mwb_55|8C zn{kJ!N};j4c8=q@WE1l^{d5iTPm~~~P=9&LKhE5w4{k6jx$KVkXDh#i^IK0M@dIcA z141qV2(UX)_=tg0NP9wCxt|yE|2PQkF$tkg4&*=Aof?GUvjgEx%0K+?5>HX|kSCP? zTsL98PDf~lF#h{84t*|{4h-K&A2jvpVvs1y$AfTLC#;+%Skk>u!2c5iYFNBem^}gi z)aZ3qQL)#UmbSil2IZKw7-HBR3M=ePS1<> zXD4t)^i((Kp#6IyYs|pme2dP zVhO7=tJ!kxlj=`_hUiW+pSRbQa0(5mLmS%^bnF%m(OTYgKBZ9^_LQzdw;&?A6^QmQ z{gYr8>mG3;+5+@XY?G8reXwUr8-wS+#Q-~QXe?hQ&tEICvzVOk7U2Fq4)`&@*wYtq zPN09i@FNYJx@z}3K>sBGJnu5Dj90_?=cKI8-N=N9>ZxKSS;6p9RGq(gx3!P_6DSmj zwW0hog_Hr7Gr5BB!h0~(wWYLCGC;}=6{4X7%5XB@EtJ!`_aA^lT>`T3G;V4KcrTVtfv#^e`PI} zPLC*dZ}HIG=8eDbPdNTd(zCHI7JlX7_Gl;! zE*TpAlSWH#4UNlKJ=By0ruT&SYYf#pEXu{Z9uWUn>e|v2AdjLg%SR)lCOM@cmg@A34|SNeAH_dVgD4;X9wSk1h?~zoZ}IjPcvu zCx4Txkr-=jJg<1>O>}=ydfbmxe=%x%ALt#z1v8@(nCr2ODayQ--u>WKFxmZTYrCFm zwZFZS`=dgqtE%h7Ro_G-_pbpqC*6ojGr;|HDi0k@A$LCqxIZz76O6udbnOukNq}A< zkKODckKR~dsm#P$RTA%@``a4Qj^FhGsLxDx|Iz?jw?Z8uZ|ME`{p?RCWGnCCV{LnA zWSSF(AOU%J#B_)+5^@*;9h;?>ny5386n1-Uw){_MVU=Y>j82{W;-CKc@_(1#B|= z)6g$Mvm6~{RfF1}LVbNan}%3e@SY-aP(bqmn?3ReMkR&h07EPY`cV6q*m8yzA$Aw+ z9j$i&!w#)RRC;)=t#`n|Q5)=%jNC#y96X5$meu>QZXGpStJiE0bT%KBO_|}iY!v2D6189&H(o7+Qh6% zFY`Kq{datkPi?b~3jy}G#i}ljYfx-wsQ+RAeTw|IoIW1ae9G=4erp0h4EQ>yJFb>(AS(v+`DXP|iAn>-Vp9 z%V=Q7Jq{gzZO>f+uHKA**jVZz5+-P-Ln8id!ulnAafA1i%brQ=KXm}e=TI-yO?A-v zL)~L4qAG0`w=jvO3Uy}Ng31i5KO+oH?qNr{YFRp3!K?(YeGrm`m2ouvzsza+7LI7_ zCa2%qyc9T0;=u3wUZcs;5C;8rEj?{yB)S<=O7M2ET7_^Vjbhtl7IusZqf)_+s> zK>8CVfSBVfpwn$(^yk5>0n-~9@)AeW{qrJVUtm}l{P-Rxr6QoLnhKYr6DaLO<1hr+!hZ%h8qrr&ZgXeEEj})l1 zjy3ym@5;O+0G*PQ-Jizi&!v-bN!nSN$P$NE=-ShQvBz=j3ZXyixLN^o!#ljRd+=pdlt!7c{I)I=|5LjuoQ5i^1ks zWEF$QQ3e^eSJ3ugVD%A(J$H7OBf)jt+0>uTkoopgVJqb5SW9OKGr?Mtd#K*y3 zW@p--%zjBB?U-bKB?l|}ZL@*zT}S+DA6N0%&?_gIU!rVJI(UhT#M#27kUC+jSu*T< z!2E68p}>eoS2g*w;W5aW2#$AK&=n?s8!iPOD?njX?8%FTrd~+qg!>c8Pi_VHP+Gxx zBKd8D)ES|x8HEFAa2hS7)YJK zM`--6e9zepRv|E*b9!rQkc{v286dZ zLWjiP*M?gMkARUbc5l0kV$6m9B%~;V!+)fgS0H*R-3|^v)rKv6vzvS9Jxbcj5wMQt zc7g8M)k8#=_r7&w)e;bYo^E~bW^gi;5Zpb9bTlud5--B7OceipCQ4Ny0`~|&B zOoDG+LyCdo*Lo+Kb)NHFI*VUpW2AQwZ~J8NC-Wo2X%1Wy#Sf~wr%CQfxn`jF$v)c` z2~8%7e~(Ze)$ zG6mH6Obox0k6nFp+zG|LPtz-sHDZB7Bt9_wGUOg$2`%fM82*j6QcK$%YC|ym`R5*` zHmN&qB&n%c15m?rD%6#Jwj`1*s&V90O7;-=U7`nj2dB%ldjj}RB&ibnCxrP4;E$9D z5L?E5dHMS!rt;qsGMO~P)2I$~?WkhK;?cAy$;mjh*(-{%!1tG)<#(=VCCIa-k(%aA ze51Bq0^ZMn!6+cEK>1lGcmHH{y4%E=bq(r1IwAmyetITKgSt=u8)c?U80C2x-GZ7S z)2&SF7wUdy3=c4>H7<2WnERR2&z7;IS=arvJQ9o|GU6Hi*%{z|rsG50yk(`ckoNef zzQMG%+hZ3?!!=^TBT_G@b(T5j$R%Adh6l1L`c=-svtavLmc94smjT?DqB`OWA?I@q z;6BkS=`3>qrb-jI|A6z84(xbU9k?HKgFpIzBn)Y;p{oWAC?6NK!s_1tKL%;1Zw-DKpY%}UZ++Q00{|G{XlynbqKQr$H zWC3&CG8}s|q=YLw7;&7o>H*v*>Sl4fM0q_SWiZIaLE5+Ya(E zK3#b%xy9YcUhV&%@)&pc4O&u2*sAyZM- ziyp3iRzeitJHDSG{I;Bu!V`sU?3%B#fGZi4)62= zTdc!K9ZOFt@#VQ&>z5Nrxcb>VkE``n1A>;x)n`<`hm~T#3Ri!L!=J;lq|6!Y^1xAm zq@tLf$updjtFIY%ry>IKy(U+G4`ku?qH#qgSD&Gn1j*9sr<1GCuR!-4jV{9I;Ocvs zjENasX6Wsm^SOa^n%sUeSp9^GR9F}T3eDG~>Wj44uCg1uu^r0ZL7(QBXg*x8N!8ye zkx1V}>be%E+C(?vH1{n2ue8rjJIUGf5jZb;5w@TRE66oM@WoHd*=+ zXdht&gk(He`sM-8DMfILT44JAeV#2E&Dz$QW&(Mpflcz25BwRFex59F(L=k>p?b5^wbJdK{; z0{fEQ!b9N~n zoS&#!Ct64q&T--9XJv}(DR&Syl%eM5!RQ>Y%VCS`FEif?z=|MIxc0zafFrcyS)v;! zdq^+99oZ$efN!a(2Qq(;F^|&_lH(m>el|KC3?)oHv2AHVQ&hEUY~bWig3C{^^N4lo zlTa%yf#qk_4u^A>Uo3X0VNnFKta|kHRk)YnSo%D1lM8fyqVkWF0wqt9)tsn&Xsey{ zPy*;YgUV0z!XqQTubJ}$#%dKH!`wp~DJ`uet1J-!aUqXfdI|2KJS;gTt@)8QfH5%K z>h^>OH!=BEaQB;Wu)dW1BZ3|2=qF}U1ClSM=V!u%wnh!1_Bsb&qCv+jyp5LFBig z#G{DeaJ_}AG4k8BJA=j2OgMJ+i0Mk-1qb?bOJ8V9Lu@T6avGA`0OS)Purqe~D%n@d zDy3N9AiyOQwY!H)s=yMcB+5rV?}L|_HzlZK{qn-`54C6cQ1S<4=AKy6poXG$Y7WLQ zUwf{QY4^E_-}CX-E69R!G;i@&u=p8_SN`Z7H=G8=Uz$wbSwOCU8QnnQlgzLLQbQA7 z4I+LHI#_W*=$;dZFC0{eq^gtq8a({H36ahS366%t7huIvSNn4MYeK`%Y66xTInx>f zbxSNAjVup6$6fWGaPYTQQj#|q`=sF0%WH#{spV=i zAoy#{W+UbVPYMG+F?o$j?FUC>L?Ph2`Yr67^-N#$6aIbQoOg~cT&X;o;hC+mM<*+5 zwd;l7@9H3NhFRGlPxieO>Z#K=%%FRs@Aa*oY4N^fhhOylse2)oEIVC7(D&_W3f~K{ z_70ETig1b}n5Wt^Wf89Km>q1;33N<{J)!q>RlBA_oifWcq4yDeB4Zz_{acv#?dsV! zvP+??-zM^2jv5nL>QRxX6YmvrN(*#k__u+)Ct}7TcjRh-{I=ihF>}>cPv<*{_q1z) zN70w>lX$P&kaye#-B^wg@7qOsnxX<*T8Q^;(AP^ulP31yki?xzmFR-H1J6iP4I1-u(#*Shq0{sH^liIEYCGDT27ky5C`dl@zq)pzQY| zTnLPu4%C@3!Fv%dwg^d9!GEk1bnoQ9IVNiPM)&U#(@tAS9~ZE7F!$L%>c3y(QxoIJ zs|+{gv>4Sd*?9zU->%X6!;Y&^4Gh4&s)6@s1?ZDhpDMoQwx*SJGVJ%jh3s&V%uj?pm;*(X zqWEco-D9)iqT&6hkDn7@zmZIIIi=E{pt@2%Gm{ zi>`^cE-RrEq@VodlnY-Je;Erl|jr?yn zHI)FVA=O3lrvk+aYiL=fiRD+$$X8liQW^XSQ8WcNBI*JZrcj2dZaldMgs*~6D9;#W ztS^t{n$^VI9idb}V22#L-7!PyRf=S}`um@QwF4m;qh((AlJ=`0=f%NU?E?jJS9dvM zDv#S>JR}bc9G`l(ek+$^)nOI)S)uE)_x+fkk)pjn$@_<>&h^dZF3 zIXI;m)Md?rF2rqEDS_LPE>pBsEL5))dlUs+KX!-bSxOxgH)^3&t^i5j^mEs2bEZ{r zu$wyc!T{c;&C}m89p7L4whtz~+#t|@_aD}uXQSF?tS%~KVv}#JwMH=&&-#kgpZ=1} z)^faFYEXuhEuA_j>ZNU;EHr3J#~Co$@+e+J(?T@eUY$+>r`rsK{8sYk5ag4%IJ?7# zJQw43Br6pXVY1P#p{%$iTkhw@rJVSA+=VaMB4Yi*u3t%94rUe|Qz&LNL(o`3#?#F2 zhyCL3w7LKte)M~aAyUi$+|h%O%j%rM>c)NAX>%g(2j~B`h2LdFZIIkD1)7}wvKocu z*`N@l470iDF?Hi{i$8aL+)?y=7wbKJe#)Pi_TRt&wr}^4yE6Vc;hhuhB-beF@PD~y zSkDffGD|-tiiO}JFp~XRP0R8Ms;nEG3MX1%FaE=$iSz$^+$7|kp!;izH4sx|gZgux z*ofF!3h&g-z26&79T{pIB;mgQ75a})EKCW+Cd21m%h z)-`{DPvG~_p5MzVQT-#*ib<9+Ob3$$c=4+}_Kq!!AFnu-+RcS5o^|;$ znW?uJ<*I|wL$kadumm(khP9{23T~L{Fn%RaySVKhR0!&h>#5nk;#DuS+8xAaHo6V$ zka_DnV^-g$_U*&V)KUi$VXn8aJ|iXc%xGE&n%#zHcDp*-O~FT~<9mmt5^vnv_g-_I zTo>8Sui|z152}<%LCVwy@(6+MUS9Sl2odu)`Wv=pawLXTI|%ouJHJ+^;pn5do2}hh zY1r_vXXVz!kKpVnsZ?n!(a}t1ak#-a{jsEJJH~73Cv8sg*bBd_zN?x()SpN^;F4q0`5{Y%0Dcv{_YCj+95n41`@ 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�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®htgPl_x_fFZ)}N!t)ax29 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%0AL&aAwrzt^4z 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�!eB6CwAH$?ngA0R*I&Z^B`T zh^dW$xm$%G$*=IL&_NB?t-5!om?-wWCinycYY#y4?Mzj?yI{j+r7xB`4#yZolx%*K zyrDfykK?4OFtI;$yldD3K~R(HqSvdns$Z_TFFT!%{n>O@p=_Ak|J#>st&*>zzwZTt)&eUf9kf26@r4qLfv%O0 zCrF-h`&2ha*&PdwO$DauNh(1=BliZl^R8M!UEMq6R%2WxL}^`B-XfAF_CA6D8U!y) zEbr1w2xR0jtYKrJoyT&J4O`_#rkk6aXG*h_^@krgyh3$Y`>&INakjPDKs>&RMIHDQI-tpy+z2jh?c_*4dU?Zk- z!sPlPS9X8ZLIbxDO< zvTsq29sI^bk3ifgp%h9Z_%QttO!@Mz$a%vFK{^zI@gFPiHPGvBY~eO5XXW2y>J;`r zRAB!d$3M&Lf9v<}`}x1`J?MQo|M@H*WB*I1Io-~#F#qilc@RbNgB=ccEtVctzuk~d zQbC}iV$0lB^zevEqa4bB-q25#4iZ+RY-Hy(IiM-r?y@fyV$DHrQ;v-Z>P~)jlcwvO+1_GhF__!79@4R`r^%JnI@3&uL zbOwZtEie*JErr*ri`aEx00_$=V@a9R@hj@C^y38i=4c$AWI+QTe)W9o`?o)k!DKd% znuxN~sv4q$KGi;S9TFIUvi2{yeN4}e-zb_0{-9`EDTPI3+Z%_^sBRW3m9|>i>^3*6 z&6F6ewlt+_O>5#d`BTtPE@E>`2{GYgOv(j2;9_X>=J4=D9MK%8^AHq@oqbE1-zHD!35oo31di zZu^CT)boscuI%<4LYb)*9w;S=p9YPK=on*(bkU43i^gh7vWhM-NQzOsd;(HNgVJtO zNNM-VmD5w zXaQHaMHPsNd?kqA4OaAX#mGXmAAxd*KWFnKFb_=JN1M=+aTr$MU}_=;!{7 zJyjy~Mom;a3{aTGUnHxej{~KUd9(doj19^8P*@Gjr~)Y{K>-3k#lm}*P9|s(E8E;u zKaTP+9z$nN73D``qQAY<^g^cs$Z%7x;r{JlOxgSpio2s-#*)y4OkdJyTbbHSi~4tY zW6Vfa-s7K+DtcX8)_mD_E4FYTo7(}(I=-lL&{whr8VcY&Me?C&K>CMY!_&UJtKxi- z+AKtnki>8I+Pl5pt|6D1H>^k|EgSZ!#LB_NMc358bSE6xM?Gn5?*8yo>D_c9>LVA9 z-MHoQCd-^)3}QP&VmEUI#h@4BCGsxu5*eO&D-TF0k2!N=34N0W@nw3#MGg+dJ7wB3 z)%ka4HrMoYUF@|m7NPYBN9#B`5pna-qsFAZgKgtUfszDmhR4{yntOV-^4_m;O}DP; z0;j9!n;&H4vXjn7uHVn&@lccZ5%MLDt?7eriM3!Q6j_w>*5CGMCJ>`hP44zUK@Xfb zVknLuMj6v#Jt%hG*#{jf@8Hmimy-jar|CGoB62$HKvxDK5W|5E(eZ&d{SWFax1+=g z%+C4jhwUzKdh{Xh2M0V>%qCw_-kz4untB*qAG$4C3N}r8m;|fAfr5$bZ0iyoAxK+k z>9$_Ru;B^7i-xc;dNxC=KeF!73nmkf#C}JDyJ=eq{GLQ@vu#hUv20q9r|he#zRGcA zDS{rm1X6+zN%R(-_C?Xj+165WwP0&j*0wN=5Z{?6*=an=gFCunDO4rpN}yT>E{upP z5ld^8mLqTk+z~ethAK*@8%N0YWHH?H%@nioW}e7lZB?`K%&POSyp9y9;;snNj-b?_*tt#!V0&Ll2lmECrBCLX_GUuV3AlEuU2<)6p1&fs(y zgACu5;FWMOpM=?2fW}GjZg2nj_G_3hykP^?V87}n^YOUm7TI~bUs49-@6ao_wY$5t zpm&_1d&z@WGI52;Qq0hbW!yh(wc&8bR#3mFH%V;@M(PqtZRNdg5sF-c(qKh|Fh8Q9 zeXl{Pg0O z;{W?uJ}bfITiDKa`@u2Y0(?Y&qWrh$>B$82ZFD(#{E%O+pk=*14wI9o@odn+i{=Ts zlqOMr3w;VtX3?}CY$n556lTHSqtk>U64?*~@g(v?OIAdj)Sjl^X~ZoP+h~u;)rohs zsYus`ec67FURQiOI5-Zoco2+GOdywAv_=_EQu3!r0uZsF7`g{Bd>av&{f^^7)KLM> zF+63GyMDg}69bCtFp~;QW>fnba5}>ew`$S`<7Lh9Rj>k**O97CZWt?>d|)=r6+hSk zCgf3<)3hM8V#;n(vU`&Zk^;F;IgXPl9NY=|XVDe#T9ryCEBKpn(6|>97tC8Xa(XG+{Ex=`1Dh zUVx%PhAKC+FtCCgc0kW*JmgMK;uBk#?iA}N7K%cKf$}#*G=NJ7+am!^bt|UmsV$RL zT2aP~0z(<+Y}H#`0%|xt1*zjW&NE&^)FNdVM8xPhjFO7L#tBeNa8$E?1Y+?}w^O9c z{nIG3bEr~nQSLQ#ots7`c?Kjq@11#4_q&OnhJ_PavGnUjxj-IE>$p?ItZiKgm3S8oqGW++5eTovg+(+Gn?h^r-QG6wQm}sNA%e$J#;DWpd(+Ko zs1{0HRmkar?`MXe0h5{gxLDJcYGLO#o;sQ*y0wQxy<7QBRQbM@xxO( z6$ooPgfI*Ipo2IQGZrjZ9U9W<{>lv4WGCP}kTB1RQ3x=i9(heB`7EXQAj+NE&>qi) zG)%lo6QqJECOuHmAySGyJph3;ov5%Q8M`0bX6#ndac4wx-Xm92tbN^EdGC|YfyV1F z=mz($FKfZqq6)_AO@@v2J9ie;bFRHRqrDPrU6K@*Ib1bX7q(1-LY-|!-`9vtU=VkV z<(U8sk(7&w-O^Ppvq4$6a?@~X5SG52Kf-cJ!?iw=p_DuM9 zJs%kgkUnq!Xm%S2x+G3^l%_{andqEpA(#T z?2kBGfYow%GaR2sDv+L{4BS5uUEO&!ctM+A{j|0F{m$N&i;TN^6@=0StKS~}wvt(tqaZTo5EjvJj!Z{g>`Dh9E(dshRmuo^{8A;;Iw+ywLs=Xc z2?e>5S%CdbxK*Z%2Am8@Ox%i#7;8TTiNjxE?#{tc|Lcw+gED1ny%|KH3v4h66IkoG3{-SRR>(9)MN7=Z!Z9hLGBoy_9g%O}0X zw>taIL;O${qOuWdF{&WhdU}kgyx=1YJM~eTqHX`iRkhK`*ou}{@vTJb_rF_*rE$~h zYM`-AHkTbu)J-foRtrtqRF2JKJb-RU_vIFx68p_ZT5q1}Zb)Ysd?M1r7R@{F#Z>vW zH9ZrxZf&7a4(eT(+k*Va@&%(ywdVR!7Z?A4?M9&H*=-hU)Hl|rwG>4QbE!U!As*EP z{^c)D-4Z1QAGd;Ge8Pyx$J(L4-L93X_6ivk-?Z$j!E9L5&gmo^G-QglOjJrAE;x7#c47tqdig<~kD&~+#m zO`ng0#=YKm4}vzaKYCU^=~XIoxd1?zQv=Z@O7dB7?{5orW=~0V%?TA`;FyxDRoY60 z)?4lWeuefEsk6?kE>>l|wct{XyTW%sPTbpj+3)}OYV%p=G`eI))iBSW({GsTA2-)< zh+CR+TY-dRn*5*OCG)@cQ_%k=(PV&eCO%vKkG0|w}5j%zeXXUdUPo+q*1r(kJU zAA5^T@nrQLgWTe^P|Pus2gNRco{BM5F337%UcX7xu`$&vNH(C_AUp?PnX5|P!B{GE z?&YchpxpKpcuq{q-bw}m<@gPcQNuE7Rhp=RnH((6R*N1b1Q54pI7<0sE& zS@|^M{m3|}_4~$Q!|^uL& z;4H%Y3GY9gwa!1_G(1B{#UV2}mK(mp{mOO;`JGg2N4tl$iuNoW6P_jsYpB3fug}5uidyobAbjfDMUh>G^fl z;kO;FmW)hc8tndKZ+~ZZ>vxMT&%Z_N7uL+&pEOfaOF{q zzL0uH);FALZq=`D>tQVPkIZH;wSm=fvbnftqUaE&TT!AQ%xL(eoWd8LDg$@WFH4Sj zXqRyehmHP@F5cI#R)aO4quzKq$>U}|R>m_ddjbvnrPP<1pj4vd(gR*K z+%U7l z1{!c>fSR!}Goo3}PHf2nJTVKfqPqO`#5JOcS527U_re`f@gX|Zz)*n_3bH`+LSW}v zWZWQOuA2;9jjw-?34;V+JkPY?toOP;P?pD#IN>YoZet3HCRQ*^raEb6vwRfO(W*)v zO`#x=u3DH|iQMnAU<4a1+xpRy+krMsGY-WKykUwL*FZ=#&tUrJQP#QT)W8U~ct{Hp zy9A}E*%{FemI>OWs(kk9K%Wm<_sM$%Jw&Zgv$2SeLkFz-{QTUHo9LXN{$*qkc z-yk}T#&lnR0AxU$zc&Is1!00_tAmX*_Vk`%sQhzFXv@dpmbnh|G| zE0_^L;SD9P358Phlb@pNG1||p=W%!r6v3gNlc4OdP32Y&E@J4Ja+qJinI6Z3IHzFg zD3g`@TI&aV{NNztddk56Cs*v4@#+faYI8a@wj^<-j`AOt%q2Mm5CrLpvdlTA%ALg& zX_{|NaEyNc=dJHC^c;ofFsMoMAQ9MSG!62+LKk@N{zEoBM-VDIQLVJ~eFn=FCM63b zypOP1N&AtfH6CObW(^O>1?WF$&~hzVi#0bsOV_Lf%}COIWJ5i*?EGP5;!ekP_BJ9n zR`<@FZBHF*ShieU=cskk$@SwcSPgB#dapf}v{qbVxGJ$&Et5MJPs*n=@_ZyM6v)do z^gqjDqewsuQ?HZ;KGLkBsKPhSSO`QaM`rhv2#BVlM*&xzcL8<-#w9hkATa`l1 z&L0BK_ExiTRM%=_W&rI5dxI21vOs0vO(AQQ%q@n3@x@t;eZ^6;+#%1 z(D!73UM;uyaN;})K^;#pUm9P>!zjuK6B8}wIp*G)@sWngz~Brcapz|{ulKip*#}dZx$eR9lO6sQNJ6Yp=m!c_8GC9!*b*ZvZJe`USops9{+nY%^EoO?K8kAonO7>`NJL)-wF-;;0Z`&+)!A&n8Z4z4Se)BLNo!dsL2;;VHW*SJ`Ho>2BvEOKvg)B*!bf^M%B z%48;&R|mykdem@{bv-or9Zcqt;s!^isRPxDT34XP9KzUMF0M{l51`S5D!`zJ^OwUC zK(eTTq>6V2r|D!`);cijO6*q+_5_Tm9J=8RZxN8!`s!MzQ`wsANy#k^=Mpsmu@b!N z!0)8FGMeIbhoT(WNNyGP3sBFp>w(xL2+Z=CibHSC0;>QmT2&u{+Pl04%XBOvI~Kr< z#`EmdWUe>dwZjof8pkoYkv2>C%4s7#{;e4lJ}ZIDwyhGpK~eRSwjNm6HbkAiIRFz9 zPNO4ahy+?AEr-6eq}D&BkG_L0pahEYl#sfGr^(?o*PHh9-@@c14IT~YFKBe=ct^(v zQ1V$iy_#WOwV*L*2J5}vecpp#h8GmmEch#I+etWX|D4WXhg=EXW+v~U%1s!LVtDlZ z-g6++0jS0i9yRDBp%)jOOFWPG_CY6|opkSZ?sgt@pY6Q)b$9!RANSWO$nVPiTY7^7 zT7UGY{^S0um-SnZZa?37hAG7Y{2jb``~A!9XF;vq?f!iCS-1Oq|2e<7*XgYV`?D~~ zR0OeZck6YHlWi&#F78t6`@6Im-Rq9iG>baJd{}#Y>k&Q*@bF}#7A5om*wteg)<+m* zhI-OQsp@>ArV@*{bK2q5uMNA+JwzvoSr+9R^L*6)wia|P9AtPKwOM+c=9#Gbdgt|4 z>-Em&?z11af7;SD@;Dzyj~{)#aT<8*DERs@1~;Quv~hj?_)(XOW5q1L8gsTmh1MX; zYLAIVsGoOWkmL5h?S1_a-T%^Af91i02M-rPziXiP*P=<#3p)4lk9mL3 zzVC^*5@O(j%t_p}QQvqBWakHi!9zVX=%olEcGM5_w}&DfO8?>%L|6lvMn6ZtLjHCN z$el+sN^#!?x$`9H1B-ZQrfnVCylW>mN3y3{2023nQ1Su%e@)jAIIN5!{O@6a)TWvl zMIlQ%biJuZ<}8AaW=e8tVl(3ikwk zi;^^!^b>{1e5lE26i(vtRezEuDLHSubDIw-D>4+mh==(ptRNt`vI4vaF!;oujb7=O5XWN}IJvso3N-PA8-dd7Zk&b~FoD;I ztT~y4m^s=^3XPt#0-SQ8j~ul&j0P#Y3pn$?lFgyo4EF%RA%d0BXiz9ZoV%1!a&v*C zbW>|SUV)u>aE4wFSqU`;jE+li!Mdfm3P>~wYS4QuphVr^OV$K!aFAgJ}kV~WcO zJHczpK)^%yFk#DrGfr~Rt!Oc|WxuwQG;dR2bFbd$0sdF0D$38tVtMuGKe?x`$OT@7 zkutlWCS1|Jvmn=;2K2D0?N9T2o-F|@M=@?1g6Nr-Hhj9?@*dz8Z5B60A&$>21rRE2 zV8H^HLUor~+G4s{i&#L;9es<+GU&nJ?%kdz1RSShMF5YwM6E2Vk*z@rYrlo(p-S(E zCA!^5x7%%M$SCM1QNG2&hqCXlo}one8klS&-5O8uUi@r7Ji!O_-MnsErq=BSKXVjn zbZ+@8$jg)saW6^Jvz8RwGknq+gx%lL1EL@apv{MV#>Ft2#UqmGQJuF<|0 zI9$ZZFumxc30@OGBbdUeVc}}*DpsndJAn8!SZF$Z=!FVdqJcRfdDSz8ppzuF!)3;>`{K|Jv&Xhd#8 z*{Cpeg(rG8gC{}#7*FWyLEoETONsig^u;J02`@oKs3*h6k5Cn3U~I|f zSUc99jsU3)Y7RkVaZMMdI9qvxVo_xlCbJEjnYw_YgXYiCaV3^`B%vgjBaTIl1BI{X z{DN}buF`-t4K8j=T^^WQG>~^6|8+i@0?GDa-0o5#5EgNctaz*JM~}ww<40j|I*Udd zHH;qFMiHv^_=m0iN8J$M!uyhf#8$ZEo1MLdMcH*%6;{bS7L|{Zb5(fj^-r?kqwai+ zA>NR@bl@jg;8i7%_NoQ`88#LNjKL=vc0ZCr?(I z(CIYHv*PB}?dr|5>UFcmv!+JhQnQEYb;+1@({agwM+pMH<-8~#Uc+r_-Yk>Fpg5WT zo}QOdA+NYjr(@O_E^g}ZA`+7)V+&}kUKj+TtGb~pA?+x_s_w`_$`T0u?;$N&j<{%b zA#T(*Qo($M+HKgcI*^y%7R+gRZ=!nMMx!>VueF~eZhG)SIoD~dc=OkD4Q0#>KFam+ zj{ZG!ItSbCPs-KR?!ofic<#NRUDb?*1O8FYl8-ZZ8sjXTw~ zYePj8Ozb=ydz9p%tV9GP1B`)V1q-KuUH(H@_BbnC1;FdmMXE|KJOHwXsuS08{zWg1 zbis6juFQH$rjK8z0d$<5b{=)7x{zUJdddqTL)oO`oBv_6PALDMoObMa)x3*|cLl(m zoxg2w?Um2I3Jdx_g8Pr1sk>AX%CG9n5rhMtvdBtMP@Av#-Xr%P5>$~;Y#veF@0VJbw0E@SqH zd?_B^LQ{lrZvm-JIo+Bzd1(eC%*l?{Qmd)JwN{c{rl_dU;Mv6$LHVT?Y&2I zu^f)O2d#)1ha}A`?u*lZc?; zUFq>fc!fd)`mjaAR)8UEP`_l~^6B`B@`&KQ9U2?Y)0>BoxYFly>i($U?y3;HRv9XP zqzC#Quntyidd_9TY~`ciqIOtPvD z8t>KA61>M7!M$D&&-w@fx=ScxMf-#xqD9}pqdU-zn}T{M_V?c$?d@;wzuh}}w)1>z z??B*0*#hiunN|`}aD!PF5yaYVp93>bRbHp2AjR5tknJ2_$%k46E3xDMVHzKH+QKmcL1vPb`?I98UlJ{ezb3^b;l%Uus`ZYy0XCi zNtQ?*hb!_6zUM$PVblDxxObu{Fk)&};xRxC($ zcm|IHxyOI~Se&1&mFf4mCWV48%@BB8tIWf%=$y0fDeqc+ETTNpqI>^`eXRbE zVao@fT=&P%68(RDeeJHN|KGd+VC{?k|2aNh_CAjLr4}?%L@AUr z1U|e184kWH+07anR4lTrf2$;2AJuOKedtDpy3awaODPLTujJBXUEnrR+A;%4S76Dy zK}HX*XYa$;7!D?a7*YrPhmfA#F(Q1s&?-*Z6}tajWQ_c zb6uXd+9AB1r75N3tMLW*+DCV3fKi%ffr4rK=JiR#U)(7!gfP2zILkIaVBpYOVNjv| zRb7!Ui*i=9tnkp-Xi4~+ba5D~QFtB?FwV~)H3kG8ED^g2epC79@vJkw&{tib;_@&V z7Xv!%$6l+x3%G#w*| zQZtD6VH6RYS@HdW@_UgPk-#2Dp`S(iVRFaGBt!tlDu=!2yPI$K+uQ4JI2xkCmMqz) z6hag$6*?7l#K1kp*8wh{haOfKb;xp$PCy|o-rhbHN$GfYXPr#c9H$~4OB zi35p4&*jA=<5Y}^>63e?drt4kZdH3ES$YfZvgnq@Pzo45E{T=`Pw;8M<(7Geaqnd3 zt>GRtVHtw11QLd~Nz@YzYa(wjw8?kjrw{A2Kc2z{p*Sbih35U59pe)BVBM;vzHQaj zw@ao(CS(O|*|l8c3iCs(M|67!i-&lnredjZl9+XIKal7+WnKVTd3)b4q%(Eu@79R* zSB@A`tt?b56$S0sHFORFj-SYi@_*g?BtQQ>4q~^e>(`n`(YS;4>#DNwpi;ZQNH9PL zQZki_U$Ih>9;D$`=Z)H5b)_T5K-X z>Z&o|s3qzGH{q7GK~<8X_9_&St#7dpWU{e+G(?rXRi#1UwxZ35>Ll&h zMh`w%dktPz@gXOY`Tl#WGFO5E=_d~=tCa^d(V7*0)$X66`#-X^pv{mo9$O)S?Be)V zTTnr7_%k^briS=?7=qE7145hCPu4@FQtO3`Ni{8{H@mu?u4Xnw1%5#_9FUo*#ta85 zi!1fX(WXchjSSL18qa~#b$ap=+12tz9k_yRp#NWr6!jBA?4o>_M1M)h-Y-k{CiEYv zwQhp^n?e7rEI(Y%+JCI9tlY_eZsl`NHSRZHFLncVL+^M#Y60M(6<$AbZ6gp=G9v>x z(FBAvq@07q!`wgWD0DiFj&p=0jzsQb2|A09&O(m@oSwNImeY(-wXZV=^@2oGiqeG> z4+923OXy_#LQj(a$arV~B2|9thG_JS)XAnItt|!R3zz^xS_{oY5(;Y+20Fy} zJ@xOgizy07RSaWwq8J!ng(_B-iiZxRG$Pk#l2jadaD=2XX6~abN<=+TVocLQbuSJE zt^~h-?hJ8IwWhhwSi4*`#uIEPz?btv_29ph)A((@@z2G^kL_mT@Ih_CxBV3>-&G!b z+tR7sE3cO-_l=VO+g7bc(eJ8Is@5EjP&aO_>o}}d6yE(0Dm4pLX~4FPE6^&BP>b&0 z`TQFf+rSy~BCvPhtm%&Zf(gS=9^g<^rKTrdeY*PH0ZiIy^w%3N4?itk)M)O>)DK|Z z9F3ReC&|<+ukTmV_P`Xe@wy>9uvz6Wd=<}9A{o0K{2EYD$q&xc8}dLEr}Z z&{~KZlTE!q{ce#*Xe5jABc+AP8f=}Vnr0S0{+{fyk2T979N2|Z3W4}v)$;F^8dAF- zTHo5V`YDGqWV-mn2RvE89khzlVY0MrjB-4l<-v&^D34!?*C`M`6bm3lnV4GY=bzQ7 zO#r1?5WD1>I_P3b+Ecr$R2s>2UAyLK!6YnRMkq3_G5y$Bi(bm?1b{o>?=Q6>%(9Pa z>8+7as$@6-xUtP6sq#N{Y9W`c{t8gB0gwP^Vz)jq8mDO>(LTkqKXtdx*sIARGt-0Y zarMLc!H0tnhlls!TA?owY99{o>nbNi)$?M=BgucFzOBgPG+bb$CprXqGI*)9rpgH~ zTeK5lv!+TP92S+wQ1l0ur5>@mR;jUC!Fa6GnwkIsn4tRMzy|NPWQLe4RBb+}eVer3J@y8@ zHd^hcIIFJ>3|`+V0S(4d3=KhR$Q*u?d5y_gs%CO_aMlTDLf5P(AhC|-6buLJl56tQ z#l&V39B4O~hPRagVG6t{3Bomjo8VY@XeNWJ&YSDA5m>f|1bubJ2tr2c{4R~p_03Dp zE2-;t@&#zOd1_tV2hhmJLv=B6#W4&lWBHTX#hUqXTDvHcoLw;eTmHU0gT}SSlbv|# zQX@f7UDVcTyiJy;^j;p2gf~5Ldab8x0ZSG3Rma(KR~LXC6PRSDC4J%cDefx0G?RLh zSv|G8wZVN@#>~X}=gi?`%x;S%p)^c21lAly9>bk}2%MKi+IXUor5zZj@#B z*qE4Efy5%87^sB%19$>}zK33aD%X;vto-h0dN+s*UOk~#M@6qH^y=R7kNJ0%as}Vv zRDPOuTC7PVr-gH#v^!`tr-ckvlSa-wLj6$}4NJ@u4S#&!lm=-U|AFVRr}Pp8K>~_Ih+W z&dc_-oUcG}zw(8xOK#$zG23k$`SRQn|C>x7nmTn=;%P}!nK~X3ISdmaL;9|*7D4uV zRj_j~DAV+FR&=E71BX!}kkfCoAH_G~h*MYEVRY>#Rk zAW0J`DPH=CMX|)k_%F49Kd`>l0zNua%4&h0nELnBy4E8jGTnXoTrIU0f2?CZcv6=2 zV7vg%V>fi0R;}&kv*xNuXZ1Q8RoQzE#A?X(QZu4judqdYw zg$?+*kI$;*@0_~&uGjdk)A;UJ_1){$@7}C_x2Imc+2BV~a}wMYZ2INamBbuL6*f^qx_S{InM8sPw6^z`6vw>L5G@q_Z78#g$j zlQDlPpty=kBeTHMnnJD=Rs@(8J+Di1sd3m^;|YzW24P_|U3Cg#$R7O!Eii(bjTur} z`rHFvP$9gONk6QS!o)D(6AuranWW=E38Q3v( z+0y6Js(|H*s#GxbDrr8Sus+<%7>mF2wN27kGOFB1+~LI4#hTJtE*Trw=3e5$Wz+;I zN3R!Qe`MST*rrlxvNLb5 z9S2XVtGcM(JH#q!r9+ygHB_yBpQXhUvS*%FidvXR&Fdazp3fz~lUN3m0dnMWzGd2> zv4>tHmI<_jW~lwXO9rVFep@S=D5J8NzN%x){Y#1_v@&k0^$E=pj{~#xd@ZKGr-M$h zpj|A5&`gMZrgh9pREiUyfeLf7+9uNowjzR>(%hLbG)huh+3BvhDhvBf-Apak?qxJ{ zi2;#r)l}*SAxy4Eb}YPMnB^B}%VMQc8~2g#TSaqQYvt2sy6rw$M6^RIB`k4|m2k{P z#u{?Hz-7m3*`Y`_Xs}i^R-+c}J*-x{sqvwiD~>8L1vVqdW33_^6mCF=BjdbLf3v)| zGu6q=i%ME$5M>SeT5{x`Re4O4TS@f>#n%3oYAxN#EX!OXzUYE&cz)!P|K_R7(k)tk z;H48Id=-S=k%tcW>~9N)NZMdT#Wx_JV0%v_PUGrloAMOqvCppL@H~}*+NwqO5`KBg z|EzM3XsR;-M%KQ{wak^RCG;ilmL>SZN=X0<<<9nJu zDBOSQzQei#fc)^L@w8UO32ZHwnLWFM!|F+PA$j?<@K*n7_JT7XH|gPo9ddBERy|1x zhjohA%*No6=i7ycCz-{@_KJHG?$H`NaEXDBPN&$8Y1KN#=-sc=p-cCg2{m=In^+38 zVLf5rlA7sv(gc|fkO5A*zR2`9=`acJev<3YdWHIq+*8wU!79Mu|%Qj_Ahv>3zssY+{Bom^aa~yd_*TsNhiZ9bJp{zC48;??tm^}Q3 z`<--MaB%ocgWZAagr7g|REPJ}#wlAVaArp`-&T}d1}z!cUR46Rguy8E&>UIZcAL_| zE6E?;Bl`$#20@yT15!-Nl zAP0tMs_|dd54}&zfY=^XKkT9Et%_zcO|n?5e%r2D#BS!piRJkFy-&k~*5L(N34Zvv z^ca6HVI23+8(qNfdYQGNxp*IVVF)-|i;GmB0-kvO*savfn-;&>1DJG=k%Td#O{>rn z7lKz^%$MySnRiRN>78G!XVU0%G7IlnFQlP$l8B|=Ec2V~z;CRN;f#b{ObIU3W)d;e zD!!tNE3uBW-aX`ZyFeJk1+O2;WSkJM;DQ2=xxgFDXx?Cd;^gg;RNs6`DTFeRnttLbS!(b=mRFlv&ZU#dPZ8SZ=+PiN5n4UdrFB z=2y&aa?UAF!!BF(*(H`W6v7VWin3l=(@g_uMbDLe=oOY&N2V&(@}s0WZ$eH?VBSAA zJN@Ii!i|XXU12v02Ks}BA@d)|Uk76w5pv1N`T z@khj$+#95|b_yr6w4^&9G5VpX3OpsNluUUm=$@o% z%LKVq^}-!tG%UYsSCvt}8y$r})8~QyP;d54bUsGzVvn6ANm*zWYbBd&6CHGMd#Bo2 zN)F8{z>H_kx%JYV@$eMzhJwSRW%E`cnU2)XZMcW}5YYYjcQOAY`0JIk%F4tkmZXoT zB?{EGdlbZYeMVNn$9n$JxZn4>6cKAL2HarnrH6V)V{aQDV}!Hr>>?2m>F8@@qe!ES zBvcz+sl?NX!~yx|V+TEYeb!i>Q`8q~N^ZLMoBOZZ+dJ)z?fuRDU)#@iUi^v~AzY4= zRfUVM*=+szV~rRBl&|8=0sjEn6p`27uWz31Y_<1y?8_6{$la$+i&gn#I29aqT~iu{ zXCaP4lOLMI6cf@9(eI6gx~jA*G^*%)$RgLCYgM+PMtms2sEws0wwPs>C4orTR%7pc z*a{w9M=Soa}ahYow)4Jl$OTjik)!45&S zx$}NqNHwYaE*d+7!FfF$0qq_|*k!*!?X-qM1RW=&S+Yi_-stXS65=K{!lX8C551ht zjPHpEi&GNR)qU81_l3F8mZ~Uxtz(bm4?mV>%2dlVloBgxi9}mBT*`DP-u)DOX|9%0 zoft(yDAFQ7Ze!J?*^GRFhin%`%}vUKL@e&tIMa#EE3a)%5 z_1#}dcb1e*Nkr_5#Z3cfhsdQs8w_Qu6wZo6xpjllIgL?PE2*EJYs$-y?OWsH!hTaP zY*9v<4MqQ?L7O`z%|g0)F4i7;MD$nXryLKUB%-?do-z&9)V*}PyYy(?JK2VdJhym_~^zxj53cOTIHyX_aSR9Ir&dA7Lxv263HB*bGwSc8qy zQc`0WaC%Uo+~wQ*ZHy{c0o43I){K<;F8uw&x@l#hdB1~1D6H$+hw@W2uq^*nM+3|9 z)8FlE=P6gswERgofP-%|?tS{Ul_(bRV;d)1wZ?swGG$ffNQq`;Ej^vBjqO+auO-H% zRm<}+IH?q-fRFT~a+oaxJ0DYml?sO5mY9yYXpa0E^|G*jwwgqyAoW_0mVa0&O`b|) zE!~w}6!B~un(C89aAFILAE7MP%mkcXHPukvuAawx8#^zxJy-`wHjSx~2q~LQqdQ5) z$kR;?5^eGps!vz%eS$X^wWn$4S5xz%$_0LJG-}$%gFk~H7^!qVI?7_4_5$Wbp+KC* zSeic;I?Z5Wd5X=XYK(#68gM7yf6x2ve_$f1GDLoSqsw4oG$<#LJYXIV;J;d?f*CiK zj4&GHH`T?u@*XS!4gr*i3M4$`xoYY1OIFOydqD7!@`&o?Dq2&=t`8QpKjjNAGWj%{ z_f5GqSf?^N`h57%{2fp9VeNjc{5u@(pFTu~_iL~+UR|{ga~)*>o9=9%lD49~JTLL2 zM&=mlhv)$ZcNByJV=6zD_Q;nuRd@5n>W2tT>$zVjth>(j?e)`hfVK?Pk}YdCTI$9v zBdKO+u5y0yxth5a>0ZPKX-zJ_&DVC*_(vdSE6gUAgH3|01ZxXn1JdYmkj?y#)*CvF zEFJ*oz`M{=GH1Z?^Us-ms>`cJuC-dWje=2kGssI&=FeFS`P5+3)y%7jC=NgKpgG(W z?70owp{xBWGIIy)fW|A?(dW>3H+u;b%sRDFQD%K$G-)&we#}m)cpWzHN~~W}{J_J}J!VWbjbt;^s-4*IuML1IIrRMflKle5ALT_y*=sbzD+n z4#?0y(+=@h`AdO)LM9w$Ie^*Qorkrr)&83N);tQcD3vJDx$5S#C+Z$Y93g`Q(bM+F zgMoTa8Ac-s`*Gx*a;9FEvbZQjfG$Ee%r#e~SX*v*j8WT3!Js-}fKg1wz*j0@x-p+B zi5LPPZXDS9-Pksw(hb3T*#8V?>|aMCaVO3tSw!-IdJ5?H04|CT3x~C*h};*36Dyzx zP4Q}dT1`qlu{h9GzDb^>uyUc14}4a2eO=cuMNepj;St}wPYAzV6zq?0%rF4?P2kXG zZWvOtV9-9p_@nRxy~==P>;^+*rP-63Bm$Ela+_1n&QAtmgiWSscD_vT&hVqd)@qts zq>M4-JdnY8@kEkq-s+XOkF5G5*H;Bql&29*hxHq)PQsbDyRLb+dSP=m;3F zx`4O7Swk|F^rBhphUm>|=E5HABxb;J=FzaqLCtVu?9-5NV;W*?K(wafaBN+%gu24W zzU5P%N`-Dp__>5{hgC1L%*jR;0g3gFeW%ydz!`RW4q2IEd)w1OwnQc>-8IE#B&+o_XiH< zZ+Clb!v*W)4oM;D+IZk5rlj^Vpc^UguBT{d$*GK1Rr%oFC-`}BnBut$S8T$1P4=C_ zPj;i9)RN~RNLnDTN3-(SC6b{Phu6J;F?-SR(AS+j0KT|!8>@KqN$?c=ufZ4O` zl7r3-`2-WeQ>BSxo$7azZ}3p9<(4SrbZ&2?0t}LEQ7<7QZM;6xlM?zV&8bWkFycpK zm%+&Ot41&fI4JCt+2W~Ru-U3@kw5?30Ghsp(xkkQ?BYXMD&i~YHg4ek^poTc zxc7-1Maw@WtT8;ZlTYxJ@<6yKTb(fHd+!sKwXbt~B&_hnVgfM~t0WMs5#N9n;Q!DR zu|xP1=b46H8b`@ix@L%&alrVBMv=jjWQT^%2^0EnG(Loun`nCPXZPuZ8#ej(j~2{S z$A7w+$WQ#45&!eyqgFQl)AG_?{LkC@q!P?Lrvx*P>-hHv`uijPZ7r(j$DtR+p5v=+ zcYNZ7UA(@29*x5RS!w~pxX?ZJ&8sJ+dnJwrg;X-8ml>R6D9SkWfQBX;f+Rx?Fq}gQ z=mf35+1zh%IuuD&(=4HY(N&m{W^?-$hWxZl#SpVc!8q)?Gz_T|Eet(OJk1S^jz>*Q zxuXM{EArW34P~98R#W6~48}tSis&Rp-udVx*aa4t!&}{xD(u`#noM-z#d)rClplJD z0s{^fijD*xMe__(cJrt;#i*suI1Z2yq^PBCkNnr_&{`BAbCE;{b^Ty`bgce`6thlZ zCZV|G;Bqij-4|+roB7aOX8I#BF*EV0{4p9$DlajbK)(C$8@qd(JKN~N)2g$)GUZ}Y z+!lec7sPQA{HbJd9#V|(rF0->!c7ua3fYkF2*a=2ksIe~^t~giB>c*iz`J!z5H9C#7;pM4$*Hg@=h~dzb0vz>6wLNnU2xN zz!ZS*>9<>+Z#o&k_srX%dt%UmcKYz72(U1DOxq!|CsltMjLGO&<;rpxTX0qt8GC6eFSQfTy*l)+z_ z5~<{`rX)Od&C`61JxMy3lxCG;rlcfDC|jvg(j_?du`a>E)H5ZJbT&m`-oQr5 zY~NvS?{Fcu<4TvxEKlYb(9i4=rkl~pIm=cgMKr=BY-*uTCrUtpCZ-D=d{WL7TkimV zcDiw9BviqXclNl7>Sm5uM9;VvpQL%+#?_oJtc02I9Zc%9; zU*yZb72#RF0&@)c8buJ1Dk*p*3`MdYduRbJ7pRT0(H}H998_k3y+pIHeH#RWY{?Nk z%a(iN4!aJ}a@n#&d2U^;_tgD$GA0Y7`zX!yF$*|d+hk`LAA4bsw0-9o;uFY0AhXVb z(2iElq$2xcAcZB?X(3Tk5-<{pH6RBz)?d8Ypy%2<;-1x{5+hlp>7-GKze4^Bs7JB8 zb^9DcogyBNJDQ5a)=irY9qQazx=8|9JLISUAiFSnrC`9-0tZ?umY z{NGY*aVf+9EiErTzT^LHWPLKw&ZB5Tt*$1uRiUDSyoB+JobG>ETL z5()ntm5LEm2s*K(c}6Gf(Rqnv9D4#PC$V9(Y49)}GI9iC{+2oyK^B;yCLZ>J|TW zX-YA*x_8+g1a$%Y{{{v6Jq!1I7aS1gqd;tnP~zh-G9BI_I6(GzhB?oP@8+|?e5Os zH(zYLQ04VK_+73mG&kRQx38eY?)vuruWIL|THpRv{j$0JqOLan@pgA(Z%^&)mNwtK z-P+uMXPev4x8A)#vB5K_x4pBkwl?2v?n9&dI|@6LrZzYBu(3BAyU$<4&-G`UTbuj8 z)=Mup_qValmpi*^U7^@;^ZC22^IqpbY5b$9>Y&Sy>i;sD z)pr&KaEDAzsO0r2y8bW#rk^B}K<&PCqWJl%O_YbCkwtl-tTQ5E_;L&#;(dfW1ZV}$ z=Sa6s5-w$xb&BjpqDQkwIX^IQ$x9Q~F&{m|a!${t_L~{TBb!A=Czi41E~#bIgQ+QJ zR6)J8A^AM{@^;WrbQ~f9VPd^gOfa22isa2I9Aowb1~OLLqcj8qy@svkN^@zsPHRMQ z<8cMJJs_N59U7Q?u)!HsP%vIbWf)p<0Re@13^1~qqyW6T1OBidQXw3^ zg(k)ZT0M2@p+IQ}m%-2()J>DbL83HM|n5YhlyfMp%&*=#%=`ga{g8>^BuD{*n z^f+#(B)4!qBS4cp$c6#LJ2XB+3uWSeqo9FziQ6kBcW4b~3;Z^wr8&Z2WbBNF<=~ni zFJu(6iISByj4)#u$Pp=7n`Cc6fM-tI-We~v@SyUk!>sWrWd}soG}@`p|!#N z`wRCkDu-6&$L#03v#M72+T^LSah2MAvGWft4BUIW@w`Sug06dBXb-6Zk1F)e{pfaC z`OJg<`DaBwSK|@C7p-bL30PWz@$x$iKoj zJHq!EicuyR4Be4)6U>~TG*`>4$yU`t>H~kzHIJwX4fQ&XX%U$KCu-;>mMYxG3aV(ZB3=9dd~UgO5SQrT_~nf zrT0eU1C)Dx!T?mYk3M=>n}{uGP7k@1C>1(T7Y%V5o^OS`h4n#o>3xYNqK(UpLmdY6 zXQc&Mn>C>%(Hv}|f;uEWIMYKy1GW2P(1v57Hxj@%8h6ApPiq*2sOwRLkI1ykj`!F- zblGtg8WQqsBpk<(t>_SpChF3eEe^x(jnd=37$aEv?^LQvt0u*;MG<>z=^3m(O2q!aw|XkN?^7Vi(pN_9X%bP6&<>J?yN`WyHL~ zdeDiE+$gG8DFox{bg;MaZ`A55gl*r8j@9Wh{Cs;nCg$%gLfk(}vIC;fF6gxp(sb6= zM@VhasluO_d+=k8HiPGPVBNlf@9%uC8-zZ5`)3EOz|Mgg@z2r8!0VYkug>5cqhyN} z_T&)h6R2aFs-96@tL;iA)uH2`BXM?Aw5Z9^&#tR8#jb&Zt&p98U`(qWgqm4IY)VNldPjhO@Cb>pmr#lmm$XH%cj7fe8dwu`%CCVRxkrsQ>=nYyQ93x6B^)l5 zo(Y!b^p$jbvFg$SKF2fCBk02I9}F=<9*&ZP)G5r0`6VKeMJGMgX%`DuyK0b{HUWc{ zLfCpPei`a`gqiy;f-5xH!xCGqX_`u#jbd+IjOK{L;IpKSq=O^kACsCXD>$j@NN~xq z&*!735{o#AgGqs${a7L`4LO*(ua&>Y?qGyTd-0Z~tq*)t_k`e&=pOB{+++xB^@%-e z<7zgTQ)Z~JYpf0P4T>G~3C24k@F~E#7Df|@3^7qx2FKVJXNhmt$yX>T8nB08#J03{ zSG*lcI{zt-4d;ro@iRboj5D4GK458J7?Bp*WbMWoT6?3aov9lI>rP7xINzWLo3JoO z*1XwJ^8!PF7YT)w+GrUu77h#-L+%mU6mBU`5x||-JsF(S;%NhhUZCS>5kToyh{ydt zqR$cK_hnDx?h_oWJ zuILYI&EIL1MsFgnS7?Qwg!h#X;>W^zP#8NZ=C7NyM;I)mLxgM+Pw{^^=) zKp`^+y08R&D)OBX@LF+HE5Sg9fCPc!p3sqMG}tjo!@w52lGU6rV9^40wm>l1m4m`w zQNZ=W1`sqQUNFSWM5e$3iNZB1GZ#(4n2fZQkQE*v_%A*KQpGuO8)z2WqcSRXA|zjV z^HBH^e9E7gIdQ(MNeL{Es(zqeYip6^wt4!z2Jvw=c=`fdWYKo;S+)DhwL=kWK&AWG<77(DI+nAZy+HpnWO?g7~rx?x#x%e79w zAxgX_b>a9V$5wZ%Ot;!TgJQbx*sW=U0lY|%y;;D4HI|wy&BZ3*tLD*fR1?0ckH4Mv zRq^X?&w4>mnhVM8&}eXK&$Wed6f(|X-vHQt^d%bi0{W$=uN!SPa}y)B$bw$>JkhQw zy&Q*#jfX+VR;;wl+Hzir$$XS-FSCbW$!T?g=)|2V%dc9krB%{H+GuNyk#J?|39@}ucZ z%?PIJr6|06$l{Usj-tV1=q>1t`+5#%3TJ-?%gb?~s^|x-DG~HMr4U>RNm5HTtb~Qc zTnI=TAi?SoOKXQkU~x4^EQ3Mt_}(Ck)fpercBw0ucu1lgVNIEW5A?22I1<*FKz z&|PXF-^5$uWq{}*zb96>t8FB?GrZoaP#u2ayUU@Ms{C_w;Ap?yIenbS^FIx8>t!6}`4II65#1@Z6Y=Jvp z?YqvKl+ni;(P~t8;p^V<5 z6JDd^?1Wcozt&tKVc@+XV+A8}7zHEJFTL4(v(X?yz9w)yl*7fCnM~hEddG5#FjgDH zu<*mk9tg_E(|6MjNeO@x5C<|AU?oy`-LRl(PTR_&iAZlsn39#5jPj;QhBULUQahLR zOhaN@c)wAyo7A@YG1*po-pAr?)#A2adLNbXj#hDqBH;*TuBq%H zL^#xz9|w$aOe{H6a{zNdjK3!4)`%;03!Bukjxpy~;z>gg6jz`f%awlyb8=bEN%w6} zV*%Fh1As;m#*qu7PSyz?tm{61WSm;m9*m zH%<;H`ci2FiCh3#(fz3LAP@*sUR%KnY?NXyBC{D`!9ov1`{-l&FAUi+!pz)8L$`|F z&#S9^*9uTA{@+5glq_s5xe7BG#@ON=~0>QemCiSxZ0lj+#)MqkEjV=`f|a zNzRFTb^sY*NRZYK2@cpmey|V)v^0@D9Kmypu7Z$;6{bxp7NSua29(ZWEX+G|kw!Fb zu@{KZ$QKv&+MJ0|XgP#)d9A!E2!VskAu*)Jz9gDXWT3h&k(`+1tRh7)J3LuRI+&3= z^t!=7EEG6t0CclT*Pel(hHp)~1#)H5A|1iLU(U zHxDpFh$0GSgxd0$r5XjY#&J${3G*Ishdi3ps-oCy~69FrLPN4!et*X(wbSq%ShxNQ4SnfOxTZ%llzV{c>&AZ}&t zBcX{Te27&rvdAfnIKnwp@U%9ABTh|>T0XCDSo{|OZp{doeisP(#8W7OB|CPL1Ce6V zNV$d~q7cfIeI|X-xE3RB(ZgbFjn&nBPCm))!{^sZe1!4+k>S9g93HU-_f4)OV_buX z60b*31)^c5226W8K@J8%Zc`9sX@?)9^jn?yNUb{^R6cN$WE2PlkuFLxk1*d7MvB!c zHsYu4Ry@{{wO=DJbQ;6Gja?wP#1AXPqy|L3M+QWcjZN7qGdwlKcXJj>6W|WHOV~Bu zZ=y_uatT!{Bkem#FT&`x-p4nWCP!+qHismppwO0#E8DC?B;Afth;lK`6k-?4wge1< zRx@TJ*``}0xa6v2QjrMPOCd#E@@!+1F;4fYRga=_rCCyoD58Z;aIQ7S*cEAywSZdh zAG>`{y(E*TDB9_<(B&?RgJ$>!nX#PG@e@>tj8Dfsc22#3LA`;tUtL#Yt%QojCR3E9 z@Glq+Iz$qL7${7vW@1>6VVdU_6SNM?r8z0WgRBgcX@2e!xb7mq(>D#-2phsfsa(kioZxOJ{y) zbzWPYt|m>rZJv%lj!Er<@@v$u!NW5bsvLPwM{Dfa-~j|tokf#DCDoZbfF=nCQV>fV z!adS1;YRRLy$IBQ*ll7!1s~-nK4#a(CE14p+MFpZRj8-waJ<0_<2zJsja7~Ad8EJg z$Fx}0&^bEt=y3qZgM>j93)bm4BcIDGpmvN^<-#l2a z-N22HVQ+UZeg(Ap#))HCsa_9bzr%__0ob|`3Y6a-djs_v?zsULuB*MKdPX*1FP-t= z#K+ptf(RD)4NT+2>tYM0mtOe4|MzI@{-*ZB0Qk`V{eOZwMy@~cFyVnWhBJ-7VUbV- z{3;CKICfy7*v5a1Q5^zH2jsW=TV4I)01E@1hTd;5+~e~xaJD{|PI!!W#^phw%Ev`E7jcg#nPRQ1%>JW#s~E4#dR8L>x+UOn`kc=KlKt zB@D0O@4!=A4sKUx`IT!P^IAQ(_Y_lvYhaq_fDMPV{wB@UCiY%ULNUIB#~pY~ z-KPyDX_*3A3goRkti5gSyw4MtC zJL0=W6tQCS{C*FZW#9;h=Fp=axY0w?6C3(y+Zu!?M5a_uF>@dnfUQOs0?|$pn$Pee zp$%TLl6do*``R)T3R#km9l+wE9vWlDXahM398)TNMo?L~H1DDd-9;C=i!OAV(S^Ro z;6jL2wmhO_8MUWbgp^C_!V@Y}iAYFAkF|ZJT`yHdo1{~7PfA7!B<5Da5uj;H(n5yV z=UzD+32`fAZm=(xOm@TtOid}_MN$lg-Q{d925@cxILh;#vLA%&f>Kd8OKW-K;?jEF zu-l{9qU`d**H#s&8HYm()z}PM^kD>p2PpS@&@64nlJuI~_y*`PgC>-m+KAb<`<5y3 z{Sp&|DA0=%1sHh+aD6mJkSsTFKjQUxp9PBd>m(St&!S-bscrf0qovCICUf_$+DN)% z2Sdw}*`!zUDNX?!k74*9w6I5EA56QXRPKFL~DH*^WDbYe)|pFaXT+4RQ~EJ0nqj@6^BhEXK-&N0h{ul z@~e&gGLjx;lt!1ECVmxVr$A ziWeIY%I>f2y?vz0?e#7`aSRN+SPI*Pk8Q?02P~^)%>;2Kut&A#YETi6T@(OO@aE^(+$C_BW&&G0K^kDGG$A+76Iy z#UT9@-k)#=Hf%Ip2`t1%v2Nu?(GGiP`0a-1nWs~vWM?d*G8BEojo3Bk%335KY6@%W zxn{w|)-*V7a|6kFFcAbqlwW|nX@1d+HtW{Xond;`X*Jm%qvOKiNp?yyuNt1qsSWUgB2^M9rz2ncyoaXMOU7s- zA81%5hD#GZWOy>M-)S`gU4_9YM4?d1-dQ3bOsN@aJNHfBSYGjpdXW`yAxFTaC?n!B zlTh>q2CKB4Y*QN>B{AJeF%>Wub;`{bai)ZC6KAVt($+W}v?E{@hpuk!0rHU#5N7l( zdQcbF9MU8Cxzm)iMfMcB88qT1@{DKBwiaxmX;mRB{%ArSHu2BZAw4P^`Ra;H{N}HG zA^zoxi#)9A_%5*JK$?60X>h_exsJ~Xj>UA?v*Hej&$c9IWX-^thcf5%fTUb@L`bgy zK7dP$98*7IY;z1G9Q$p|UQq-Vag=vIvgJ>;L$1Pd2_KCelB&Aj)C@V7@su45IQS?@ z>3DDwkrXyAnuYXOs7=}_uTLip={(DhOS`|rWq=$f`eRWOsm5u{>@+JwW~Vh61X_<( zaYqD5#S>lN4ZVRA)|#btW9gVWUn!0^5@KVdO}>FQB6rTPN1*{ME5r4-n=noosGp!J zLh=?zQ$kQA$+Wa>w@ohE=9_v^*4Ye$*sXNvoJebTv~7UceNsB(iHK*PREfwvGcwU5 zTAf&fN>`H%t~K+f>I^)BwiBs?!?oH^lW7^$iEaYrP#4l zSrnb7kp8emP>vRUZNf1;A~BLxD?@2;MVGzYp?;3+5ItyUClTi;K{hRc8?b-?nOxZ> zDpHj#Qbem@C&-m@ZN_jN`gWx(A4PnPANUR7;iv&};7=&(1zz{0ku1-3g(eC%7PWKa zow|PAoJ_P5!gcEbgB){^ah%N#Uw(y*p={su7&Tx3_e5?id{(ANa@3O%!;ngrjv*rS~w;h^k&Me^Lu9hQsA?Z9Cy^jySZ}@pElJdG{v&8F=?SC1FF-j9t zm@2htHuD26^}xnRcwT(>2!M0yYOJKHPuA38&5VzE_y^oH*DkRHS0hRee08p`1E|!* zeocokRvH5p#6nP_&Q1!P*nnitB}HyR6sv!ThLfg#=RC$-WIA9-idD*XMASNUhMpxAIt7QPK z+cS`IY1}+yahg}70T6RNHpoqCCY}-~IP~2!^q-NyJF;ecU}@9QE}w536BBaoxdYu! zB-@q_#mqKv6N`&jlq_XQ>4S(tw6u(wja6D= zRM$il^3vLhaJzdWmT!mycayKZK1C`J%dV2rnm7~y@gxY8)^-zOE)Iyhvi;l`lDx!N zo)S6_&e`ZVjWB5frY3=o{8I&TMusNv6JbJHG@!Bb2Hn#Zc1~T~Ig|!X5K1F|8o_1# z!8kf*R7S6h)-MU=saH`upjgU5Ozpw#Nb{Fyh$1EJNebipdQkIi$8@0*rQ`_09;-(w zz(pb^f$Ii1CFUc?;oQJa%UA^V#;9E{2FGD2k^G%6M$7%a$vB0K+==V+G@?boc@Jv5 zYlSo*{~FqQ4j~8NbsdZ$rCN)N$?CHsLPQHM^0(ZQ%k71L;v*~mq<|KH5~k<$q-nR3 za3qPxX*1W2P0Ty$0Z;z{R<4)yb85+uUaN*ILUiQ$t`+AIDe_D`mZ{PPaXH*7HquDZ zR!ra5OGw28>>_BjAi6tEyOjoHUK!Peh^t#o=mr~!oZBKC9mQ1{3JDD33``Pu(OfJK zPo8cSx1NcEm~!#0E4K-FPQPSTg&Q~64wFa4C2K%9j?gHR&l0lOVLFo3dxERAn06NdOlK!3rz4Ma(GT{W345rE5em0B9O~B4_ z2YpR$>p}Y|!-GAo@QxDkUdgx%YpS)0p%r7@ZrT=u&{my8d@&s$NQ-Sl00rwnY7^TK z2j>R~?lB}PkFVtQP(t26H$uxm3ugP`4b7?%C0Wtg`Gjj>$e~y?-=i?-jk~;Gb>dit z>`y{hv4oeT2rMHk>8Pcg0(U@+K}^ZGCAjrDdy6I^4KYk5`qH2ayYZ|Ijs3G(AW1rZ zE@;}=qv)fXmF$$v%JI_HnV3NTMVs?!TD~TG0lUz~NqFmwVG)WG@g_q)a()TZ zjj{KbdIcvPr?zRLkDs=hi>hjclp0YbvSb4)W?|%xBK*@>geDhiKs{A5z9J>O>CREU zgo5h9sg7QaxV8^SD*h|xu`*HQC|YwHombkF&$}6RuB(q3`5#smTgw^yzekTA-{pV0 zm5=BxI33G^q+>A;$(b$5@m|Ti!Nl`WoDkv1SXJz(2^2G|qIyB8#Ci2Fm@3;=RNkYK zCwd=*gC3?-;rw<|Z0wuRPHml|Z{Q3&Jx6^~zq|hF@9F@Z2J%MLhs;-}|JS zyI8&VNjC`4ZjNBU)$;H@`bu!~g~O|AbA&bZ>4FEqgomDc^T>^>m4!-O8!lv~iT<)- zY)!D;MJECbPhZv7qMn#sl1#KTJ8siyvK2*}xSvcZ=4qrbb0>hg3Y*f3`^x+G?;Goh zKcHJl7ndm<6dFd_DOhKd^eMMRQ$_H`6_+Ut; z76!)gweRxWgUjxFRry!oVqPx2Nh>!xd?qn%E&n){C_mRQ6+$pG=Q4FG14hjjqb-CY zj&#Wi;8f}`GjGD86K1}$xTu~vCP)HKyXW=EWGg0zS;ZP4B8GGOY9i`+;h}H2L@t;$ z>1n5Y<~h#+N8SUcGwZY$?+nKKK)GDeFuNgi~GjV}LlJ2z#eoh!u?AdmH zt4Kg93P4LB`Xo>Q4hEM!dw-j^<}nq^H+)f>xrnT`Z3hx;)f!Ja3hPwP@!I*%s&=$O zDXd}Qh~3Nboe~LRE#dv9w!zh?g(k{d6Lt^DP0eyDO_EyFyNr^Y;V42D@5WurcphgU zj#b`oZj~ucZA20j_ zWYkjl;N(!==x#8&{m6tc&32t0=s|^_Rt|H;HB_ql2+0n3ZF4L53+D0*?QO6ui9C?HRoVt2|fXw&F7Lg7DE{H~PU zpvC(#(_^hvwEX}D3@{%=hW|k9h|-0UY?3p_iwlN|kM#;g1J@lxgEpJ{@@>We(HM{0PMK56m!L5I!O88xRR}t!|RY|?= z`e?n*C43w|{+}MDy9qrigWyjOK<{^WDF?!O-ITDe0^D>>4Kb>l!wrn}7#TDR&W^qF zrtgj>MfIpoVs*>H>Y`8$d%H;FXvG3B>pcAlBw+s~)4!CEDwe>RG01Orjo0=&b zm?@0Aya=xHYGWTIK?_sGS%sV9CgoYA?k<*NS!1zAU)Qu@y@)ivVd)n4d{bahRUs-3 zm07D?jlwD>*3($$PXOczqF=*ETxD}T3p(@9`r1y-gqi5xKkt~Fg@J!``!nH4*|9UQ z!)LQede`NQ74XhXip(3Q(3IO)t%;6fZHkEnCqby7&)?E@waRqV6SY(bp34B}D%aSD z4gq5gnaK~Gg$xM~RLwYaF9(}6^E(|+6$s&zJ^1fnbj?^AodS=Nt0XX2f?jQ>@unodpgrKxc~Y7vGFpv{DN}xl7qh9-76j%ouo&XQwx$-%(?qM!70I3f7Q&9+lU@?C zB#@S#SS{&i4^WPpR6dy3Vyd$93!LiA2g zKljx6n5?l(ec5-FT$_@HYrzzN63=Cm9$}cmRs6M1W^u!yHy*eud5}E9{58P<^Vy}a z^y~NPXSIv|M70#YO-D@rn^y0X|Ir}-)L!G+c^M5t-tBHy%M%k)lx=ifmQhnup6Hu$ z3ZqU^?5wJLpGf@E><7U`c>+F8{^h?2`89P$#%*bKYn{Qmx+ixgG{BSXQ|F<69-T$}pnM3|3dt!p$NBZG7 z91NXNwkQV8$cy|W>9ruoUeKi^0BaOuq6y3`oPUbdQKbhxkHi|)cKhY#)<(NcoHmg8 zErU*}7$Qq)if|y5STZFnL;UhWH*})oGGfgMylxN-%V=oNtt=O}0tmOD4eR>Oe}wl^ z={t?kcfx#?$z7#Uj}o<_r8YC#0xND~l^dB2rmBGkSqK4gUb)N4k?G z`n!Bso5E8`OPa6h9(fD6X;S=^TrhJrfS|i--8cw3PA^s658`$|7z-IR_Y|7Vh0ef9 zwFJaK$LsZ6zeuh(5&mb#PE4`1FqIvusCrji16cSK3?j6$chn2ZgU36n9FCMzgK zAS+rk^l6kzY8r>Nn)c1VWcL`M3_}OHXUdjhO$FN3fHY-nNq;~8Op7spoBAM3X?yN= zcmd}gW$QCXIscKHI6V8X%-Is!OU*mO<*PRv=nxZkgyZB-mi{~Pu9x=1&kXwS;o{O# zhW>lFys~&l|J}xCs{99^=}b~N^6fPT5e3BjYEzK5_IB7$JY=Api|NLryf@)-Kz22i z#U}laO-%kqLCn_Fk4uZo$(3R0$o{GM{{G@GqPRt=EA8eRR93taCD}#tYTxCn=gSi!-y% z7t^j=ibt1-T*z^YQMo1~rMFib`$+5%mBr24&Lu>sPVR@o2I`@i-f~T*h3il$tDib3 zOXee;mbIKRYSuk0WGayo4XW*J?ri7eFZgny)ohiEdwRROv%m9vXY11Sc6Rr(b!bN= z&Xl=27&1IHBifjg!Aha>5m{=-)5)Ms`m*EWX9q~xd5X$g32l-(ut1dPWnu-%rjn{* zyq7Z-bYhsI!qcXYSp~G~E|9*qfN%;B(joJ6Ym2R9mnezqo-59MOy~lG%jaukOPdh% zxuV&UcFMPzg>hg_6whJs&>K5V^Bj-kUU23oXF-x^onU0#*26kcL8&+B`&7lJwRFEy@QzdZD}J*4 z-|^T#aeKFG|NF2&|G#`E|G$;bY@1%$64}S&*c(IzLVYe>mS|6szg@F@u76sn{WLo4 z(>9c^TJCDXK=6ePgg?GW-^2V0{d#J7TwbBkC*d_jDeDKBkn0&2g=yxG?qCq$C@@Y& zg#uT7lh{H|FgX-MKNMQsPr)fMRw5HG1W?w5P^VrmiYkzqL}A5)%031M@4I1RLoy6i zGB;1ftZ}M=0tNBI58(%&K!9Ib_($QNNBD<bBx=N;b>6KucX4DLc0AumG5YFEym|Y50QkWdm z&)2scHv{5aXL`Ro0~DZ~UvA&$hfcQ)XL*RvzltL;51KIpz6#_IS_q6KRI@EFt{gTo zc?J0x@Zj3er#KuMwq*JmNo*^uhiBp5C##_g%SfttX{^H8OW<>%T?}ulLn(EI-JaM` zeU;2rmj357A(Tw_+L(YD^#9W1CxS0>)r%ARmWCU7IOl$aRXA2$rN{WCBY33m4{Oj=Wf;(+XuC+E7 z{LC?!F4FC{e{;j&dU`0HWqC2(b%9(9mJM^_SjlaR?1p9=s@iL3FstR?rJIpXY@}%g zYbz*1Y9*9ys}BpRjMpAq6%4Zr3IR7kU?&rE{BzC%PpqD#<}>rcLTi%tXmiK-qg-ve zb!;v-XL#1+qjL=tYUn&uvVqY=M<^T2A;lp@KXcVGTmPmOvGI9x#iMf_6SdFa%}>=N zm*EbXTyh8fCV3z<&C^s_DqvM;EiD%o0sKYp%g02)ogoFM`Na9ijokh3_dJf`0C2e` z3Sid#zm&88ef(&#b$9>Y#%H?yhc|R{cYmRbFtu%pu6gtRl^bWB{4ITpgPexu6W9S@ z>|-D`rss)^*z7mnAa~)py~du0QRa@lIMLDIprL^wQW5*`9S-nWlPnaV8H@8P8X4h< zLQ`JN7;ZUHY`U+kJu$rzM~J#L;s6tDGKUAUbYUEknVsK!*?zP0V)NzZ#*6me=JxXq zVnI!RnH~y#BmtI_oBXdV)$oBU8@2Zl7YDhwK%#Z4|i^L4%T$NcFb?Y5|{^Ne~ z_}@Cgx5NJ}F9WleT5^#b&r;L03p=f+W14;}bAjl3xTIa)Xe3wN_f ze1>9r5_&9?POC0Tt@1=`fz;?T`k_x*GsD*5K~`y;Rk*d5i^4Tc00U=Xzdx_Ii?o$LN%~-%2mCOR8a@lE z*!;}{5*_0xy8A>Rc8?tl)0}}LMm{G~1FiVJp50W>*-J3f_eBre74{g4GmJIZ47e<# z>U)k;c5BCK#)c@E@dVol*dATWQg7zgm|zc~t(d+L5bg-i&;CrH|6&xz{Huug>FU9UkJLf8#mD3*BMr>1eJ-cU4n)ocwHw2 z(+`4$juTFyQf_C<=y4RlqU%H$Zxpi{da-xv!Y;uG_>|J1pMuPsK-k&d-`L*&5wS6-8 zKOm@q6JK)zfa&*tYjJrcEB|@448`y6|6BOX5&x@*DA4<4dazKkA3#S&OuK@*_KjrxT$$4S48&kP#h9&7;#ZUG5^NqLr?Tzi{J1@|27jblEJ{gx3(~SmG z1`W$-ic<_vRzzcj2o$$4T{aM{J}Xunoy@C;uThwimBZ|G{sm~>SkQ4q)t`T+*FVt; zVl9!tRLd0Z%lx7sl_Zd{q%ziYGmB4G8?Ss>hFZ?3nhzG!cP`e+@s{ZlI?RSKq}1Fk zn^NkIbXxZE-<|NBU#-(}CFQAv-go0Zs(#Y0JqJr-KMy+#Q&;^?#Q<9PL-rIrNsq7m z%ZKIGGW_>==RfKnfK!717R#2K+dZ|v^I~UJ?W2z{#ni-%Sn6MZ)Re=^jp=ys>IG5) zwPj8xICVKd{v5j@C8xD*@1`x2h~>_h!uV?~*oWmu%dcU<9>RYu{O^4gmu~_7EN%WL zEZ<6Y38$>W(Qn@9k8mJyoHxI?)XN+zTh~kbd28zh88hK3l;Ig1{RXf8Iq*8GtFK^C zyM*GYh!^M*n2f5I*&KZgS{Rm1k?tUv6Fc|eSa&ew41D+X@x)LvS3Q!^c;trHv~1HB zLuJK#OPSgS>7gCYcQT?AI2k0`1e_KU9}QqJKwzII+MaVjh@`w2QE z2ZZV2O(%FSJZ@!Ud$bC+%z7a_h{{B;2{q(WsI6cec3rigy2kVlBPe0C!6xpuR9{P1 z1)v?~g+YkOwE(io`8R#e2JX^z0r!V2aF?zJxWb%Ig7K`aPWN2mDTrPhDKlFkq7xSm zc-bE6mqk{-Gle9ooa#YB_}a}T+S3B%>3p>RWNKeyn$Mx}zm9uW&4lDvdmX11civ06 zhZnH87jc^3MohY~ARMaaFbTII$tG0K!wjA%&=c3=ImLH&BP_qOJF#4kRX+N}A9Q2d zj zvKoaxqzvD2=rQ^DZg-0*S0LnY?6{Y%3)tU1TK?|QDDb{)o)DheA2eCW zHLS~@En|pT&p$@m5E|}X?vT6B*Ye5oe@G7BvixuPQ7f1K@!_5S-|c+n(EoAv?klVQ zUM4c|Yt;G`Xn$~=S5opM+9jqpr&jGMBj+{K>osyi zFX-LmYKh8j7wA%;m%jp~-6fXc5{kUkB9LQfr1s9E*d0EHrP!c2#5X(I%a4;CkfKSx z3-{uHkiHrAq_j}RX3fS&3C%poT{Sl;R%cMQhf8C=Y22P28ZB`vBd;>-A}J#e(yd65 zFH1XT=s&i|y$LL za*FN`%dkGBc_j0S?*tD4rP*!x2hK+q>E40wAS8$Gz}I(Vw*&^cE~^G#cK z*=92UCZ(q7V|Yxe3-}-y>Jd!nS(mO>LfGkTo$&-y6DB)fz*I2iRHf{|lLiWx*9sx+ zyRII1NZw%NqoFhDDW=2p*-`GP>$43;9^#23A++Yp>VLc19F3!6)`2b9%cgIM^5lK; z&MH1*ZS11bU}hgq=wa9DK}t^BlXHx83l8Uw?_OfSQbVYiXdJo;^m^_9=(U;f`?3k5 zviCo_N!+&m*Q1qe{?~^OTX*uGTlr+JdRYGX5;wg@4P+9l0k=`&G?$OXFwL&XSYXGN zFI!aL%Qmnqv`JBOKt9ZubAMS#f-+2SbHS;7W_$%PpnkOhECp(M;O{&5^I~IbV}GNr zcHW|@VXvP9d_jXWGBQ+E?lbByaOVwX)S{r)9mFiKv5Afef*DkYbHk#H^=-%B>CQ{n z4T)kn9Nvl-QwIN|T=$mo|H|^pQXc<5yo>*QE1#?7|6}q0Jog03o2+{R&~Wv>6COo2 zaXb-Eo01do>!~yFdivZ?=VFZ9YeLxl%;(y!rs57R5|I>I*z6D)Bn%wG$mL=+u1ay@8iL3{(FSl0A1v)QY!~8Ew@qWQngbWJ%~}STl9vo~!h5 zE;$$5uN7x01}$>V?o_7}R^Spt z-`d!Iwf~w2zp`}WgXZq8H0+l<9J?Y3E_8i^#q3vn#~>;nyH^@u%8rs#pf;})qC*U( zg(kETum9?Uw9I$d*FG2>yWuqsHR(W&{S!Yp^RGTwxL*xKffoJzF^Z$UvwZ`U_#kLMhWTpwsx z&sQ*JCp^d0bCbxFIVKKdsvG*wz{Ghq5CGt!s>Qy%%k93z+#Nk@lJ8kKZclI=Vtq8a=J&wgRbb#13XdW~ze(U6wCW1Th2_IP z9BfDwS)NaZereb=o;hK1bTDH5m%|t7)1xuQJvH!rj85E(RCTenSkrU`0uVhEm}#>C z95rtiRDth)@Z+-p{v3y{J1GeBqWz*Udb7GZn2qLe0;s3ZpmtiOo1;WO6>3ZuzsSzo z4pPar^wv6P;Xqr9h#D|5{PN<8WoyISnV#hYL&ZyiMp8;bbL^y5SqRjo{sZE$KW&WALb2{t$lfjZ&j%eOfnzqi^a&;H)V5IRKyhGoA2g zj21c9%3$ZAiT(vuA+G;K;KXUAz!?XD8an>@t-_TvH~opBifBUQreqF)zkP3@c&N7k z;YRDv3|>e1?vX>8DQ*p-uzYpQ-2P{VD{fPrF>l=OU$0(c8eIR>yY<$gdgl4P>f)aY zq&TJNWWbs0g*{5LGbxLpl#rfKCym5~naRphNrSXkvI^mPnnFv<#f6aUG=+#*Op59U zlRLoKnZoSd3SjYr)zyu?x0`P_U@=m^%T`0F2Hl|Fo(%}A)FfcQshkWA+W>xQVGAnL z=A4_x%@N37_Dp0=6J!ytnOg37Jyb!8lb4pp-YnA5Y}ZH4bNzW?%;Fn{F(2&P0dWcs z{W(EPS7&bWZN;VMCzS`J%c^l-(*9GMpfG`m()IcwN zm(S@oa#ir^?0;Vny4Okh(R7qixp!P40_QNQyB+D9G=A7T3%%H_t}OkD$ZnbvTX&?G z@0&!$2A+2tIbyHyTTo?Q-Z^wG@J;qqpW-q46-{z}57x#(ocj@FD-Sxg)L*hI(L0^5zc4 zJ+XwkSl57{wb+^@-aX?{q>N3{10-m0`{b~1S8HN70v5HlCLQG?4Vx(mGd^olBr;De zN4d4MT&`Va$X<{hD(<^kf^hj;nk zZ{;&b{9hfZbiQ~`To}I4T_ZnpSz!}nZG}-{2Cm#(nSiUst?8rNahoS_wA(?S^3;^3 z#7i9n!HF7pCzJ^SU2aX1PhcZSIAlJjBs70H7BikJ2^escFe zrhvTd_`k~!bMYUS@8bX8%4d%IzbFCxV8Z3!J&|M2JkFNpaGW>}+acTIuSVy7_c#oE zU_^wa;RqRC>^Xyk3HqB|4s-dMAR&eoBDN_hHKC$ObtGd? zt<>tyIit&tz6b&nm*bW$v>g7&AZOQn1I)tzi;tGG{NLikM|b%DHa=Ojj>})1?5`*) za1Q@-?VB!#|q57%5e!Dr4X_)o7?ym7V#_ zs_)l#x4CKxB!5ZS*k9q3!T&=yJ`Q@pDQpp7@UH0|n1TOS79VBfzdwGobcg?M<#R>) zKfO=px*Xn6l^v-vLG(iryZe2N`-B-Vaw#2V)7VdC53g~!N=yXK4@lJnjTR8$>7f-- zdtA;ISRjS1Oah00LtAO$Tfb@*9kTN*ILI3|9~LlK;pQs4ELV_-6-@>WF08E!r;!jvEwZuO>M{0Dq!Smj1te`Tx@5N-LlL=}!KCJ0C;1pF6`rv5G(aOsJv! zW6rMzbpHgI4kM;w!K0xf(w#S_NSgyT7*g_IEe8U*$?#<&tC( z*+L6;w^r7LDUH#xSebINMUUfnWEIb#3u_a&!%=)bd0i<=BnlZ8khWO>{$+vFY+m+c zWNGGPM_$J|&o>eTz)cQ?$-gdXrakerH zUC+2Cf^r;DWLuO40x1KRo8zl@yIb=ERrVFZ7LjPQy0Fk0I8E!4Sp9M7$EAg#dyJWr zo+iBi+}HlC-*A};%z4YDGnM62-$Wa@LBpZ zrW}jh&}Z!g3y2HJS^Ihy{_=~yva)==w9OS4Tgu~F?&V6&AVu8~yi(Bs=vs2f2tB|D z7N)<{(*HS^`MN3C%dhfuW@3acGk(_YH|7Mu1qGZwMh}&)1K6HbX_sa*s;jWN z*Ghvbm2!PUwgJF?3~_Glqe~dMkdG+HC^B;HqfA+rrv1yxm z_;>yaEsUidZN9b?!jnOv>EL;QvbKyp3w<*uaTBkJo!Jg;fqwq>S9g+Z$(Fw*X<>Vs z4M=S1?sPhxPSWXaYWbUhk!>))GF~E>M(QQF9ftf zo1>LZ6-UNSeu|9o#F0x2S#W5i9MT1)IGV2dI;xJsbmT9s z>cYNBw(47uh08Y0p+^Q|!yZ9~GFrA0)SWnNPM4)0Lme0IN0@XL??maMD{229sp5fk zq>B?@1TiV$T}&`M+Cq=E;WPQ-ej%<}7-RVsYAntXkt-5;#}rm;^LamONJ-a##ccpZ znTR2$D-sNb^bKp~;$%!Fmn;ps)HZTTXV^*7JXo-)2rFT7lP5L_V5_wcmEIe!O($r1 ziu>B`7&rcj`Ty7>*PPsB{EvEbYo`{y|JB&qx%L0KiI3L*zi-l6DdOOR@nB82$|WS~ z|3epRQ)8BKa}03A{fB&OYC3cJrAD=gxWxOtKbZA~<|#F0 z*eb3^wG607m{{;7HM-B_hf$mL1#1SV18fIZLPDn75uNfL7u`9PWutHch)5c)OZ?M5bt2ETm{yY^{zpB z!sVz5BEFYIJ%&(NPr?S>U`&_BcZ6W53gt)z!l$%zD0>9nxt%;q@VJ*rbHUG@W2*3h zInm$`VaU@|Un8RSvj!rwMJ3awQLBlW50^H73 z<-wbnT?Q|!^-8^@NA&ja;P~MA!K=dc^oO0br1IJ$7cR9aGdr$wVSLBz>lkxGl#07m z1ZTItQ9sd@m##|7zCGcMeqDKLT7gZaR0yxgM`}>vq?%@6YD=fJ|M|}^Ns!v!hL-2y zLf#E-sjE`lrWlR{6tIVquZCu~1x!GBS0*f+V+$uN4A|1P#v|;)EsMYA^NV)<+vHrh z`;^MP*j`mm_VK0{lRVsF6QTz{gzP~$Mv(E%VE2pd`ZX{-^XKw!n^0_%fnt}Mw;JUu zomLc^Us1)Fd-v}~<++fE^1D~ZfCAz{cMjv81C3&GtunpcNb`{L<}-Bfz-6v6m(KDf zEkb*%HTO(*NaI2w+}icLbLLLwnFH7KOIOh`gKgV=NBidReTR3N9t@LO+c3iH1#2%2VK+HO5hl7 zU{c#9vf7MUI}}!M?*>Lo>n-#WW%i>+y?(V03w~zagke;%&>LdqEf@p$qrw=HfFejh>20(aAh%C&nZWr69uWc%F+4{kR)L6HzY|g5%{h( zz#vThO9CtB)k#;-P|7I~hd|Jz7cjJv-T|``-odogszM+%V**4cB8U~t28wOPvLF6{(M0pp(z;9Th6P?Dg5gnX+;JA-?Hja>bkV#$)e*l zK@Ddigu*eL_2mX^7EUOL(JscK-z*SGO2_8C8 zD$1-eY)_O?bIf)uD}3j2joK0QC7OKdlg?*T$V@&$&j9DaXf!pIEj zwOT)$Y=bS>sgvXGL+!xX6MQ`prXXJp>o1<-mB}8qh>lQb_7~Q^fBlOwK~6gcR8-{E*FH{Ogz7r~izy*P0f8`iM zf%tp63^QGq-SI3PomsOPOeT7Dg<)zvvL=37cr6q*qKE4h^2f-W63eFjHklB<)BOj! z2>I?MF-C@ES4#h=gQCd!k3FAERvrT|BmPruYbO@}Z)bb^_Wb82KI(Z**!>wNInwp; z=n2ak3PT?VkiMpdAJ~4jGZWGJazp|&V=(|RY9A@}YqhC}i?ej3KKMJ@f@ny-tAE^C zab*0v=3wr6*2h(ae#1}3_}{A68`1IqpmrPo;YL0=;=ctlk?+hmj0BNKTO11DLRpA| zR&E!}X7wbsAUnp$u^GbG-O_KHZw-IE`O-dh!dMd0j=fs;7r3{w$!>Ut#ntWPum+FG zAgr&@@PcQ*|mr1#OU0 z6JN_sXN$|E7g~u1p@{LEp zP=(W%CsT7Qqe{Kk41VF>ykE$(KO*(`OtIMYpV-z0=L$@4I7kwrill!KNFxB!SYKCf z2(s5f{HPpxB>0{^2qKC;lu2eI>nWCR*s%lmdYf?%v;P}AxB1_0aPFbJlsBwab}Hr2CU zP>OjYB={n*BAg36W~R;|DTEeiYlu@oyO zUu#Lca00f@sWqBY!FA?7%HY6p;Tn^A{+J+vhsKMUM+&d<*qO0=5w zGOC8G%6qbn)C$6z_Bl&+r02;+jY$kxMp@cOsj{=wn<-NU`ko>Vk? z6S64fxngArChhL+9Wu1_M~zDT!NUsp=4LPvViAhSWO8S$rz$;DBy>t>iA+H5mRu)6 zI+raNcQeEFSZroFO2{%wzxsqns{R4}C;Jm4yeyrnu42`KN>q8r%d(ziH)_#UlRuCv zg2$ug=Auxpa2dNO;3yMuUFTu&(;y})9Aix_&&$Kf&)gv(*gFw)$F5DyZ8+dmt^w5~QmXTH~<_>f+vH(c}FvWFgze`K6OvLfgm z@WcuFC*VDANIaNoLZiOP*#W<-FR2hYFBTpI6VtFgGM|wn6C8)n%u90WI#Us}32l+P-IG-?ARO*NBlL4C zlnK;i7Xqv$mC&`v3)5Y*KXyv~woU2*U2s&`CRIHJ7 z5OUFM(?&}$7Ent75q}z=@)98z)f1tV&=J84L?r-w-s>3<>eoAm%YEz#7j96k#Bm{Q z*~%7AeBu1*hx57JrjUQ2{Ar)gC(>9As9M9uMlvvWDMvq*Pm)S+kTQj=uSDMsgLJNu zx~OqUDhNs?yo*4J&q}AJ>xP-$`X*hT_;lS2>0#mfcN$8Vzng_;UY;KS~#)ZV-aE5QPlMj4#eHLlV;>i(e zv8cJ3d&44kL5gpr0cHVUK}p7rz`K^s%KgkV|VHCES({6bGEbBd;jwI1#9nb zuV2B9Bwno)ql8nDwj>=m&Y6{cmRX3{=LZM>dD$t+1M)En#rTJ*vVnl8bBiO?UQK2B zAVH=$oi@pO@TL$w%B9>Wsg1zwXfEpti+>P0&vBt1# zkRF)$z8a7);dG^)cW~r5)RoGBBCRUgF&TgqYBeKlgQ`YzoFNBA;`AiemZ`~(xslid zN>)(H($#f^l7o!suAqT_fcvf@JE@$%rKoy@kO}%+K^p(o(gG;p7*pzWX3(;HH-&K1 zDvRJ>5Y+;ho-Bar$zrJDkOKddBItRg#qdY7y=3B!Rk*V};=nTpBL3vze`@6%LyfK% zCu**g!UGOK00cdeD<5MS=$0H-+0d65Ng2SeVeqWJZ<2;eCZ_8d9NGPqHWJt+aUS6w zzJzBZxZP#uF-lgj;VzwE5wNYE?H+DGrjEY#=@X>Z#D5+?dqo$0)cy*uJ;#>;ux#zY znSxXzcAyozOfTKv*H+N)=us+DYsJv?#TH;98r(LEZcfTf$c0e3caK~vNauta)LE2b znfONPG-(%`Er7yg3eZ#P>CauVJ2Ymnr-U2!V9nPbKGvs{+-QD7N-A$ zdxsy4ZVoMP=6DutVYI?yy~mhCsaeezq@S*`=FZF-#|MKhM+joCDqu(39_=f##^84kp#_OZ4^Ow)Z z^+97Yr@#MwbT$}CP2Ak1KY(p%qd4d2RX>`oBu#dOjaYVtOn5x0WN@B_ks*?5#m?Te z`x#+;>aZiz3o@b6dF!fb#?5d@4O38PN2a1#@Bvc{cR!adNi zmZcowp0d}iBdCdb+XJ^f@J;tX(yd{;>|-b;-=UD{qI2e&KAmrE1HvnLWbU6n4C8M} z5x0UwIcIQ6N!k7Vf1V%gb@*HMqg{S?y#J6JHB0w@!Ybg;xqVhKN)i|!R{`?Dsx$CS zf0IS-64QFOcF}yWQM-7)Pyedz(!cf}o>XR3MApiKAIs}kx;Z&qnXOL1Rxe_U3R#kv z2|@cT#7vW`OqMjxB8^p=K0R--(*)a_yQU&Yl-a7h@q$Ak)^WKe=ZR2N`t#A~ zlGG~?D?gHBP5?oimVbE@RwUC;p*V%YgqM5;WzGl%^N!PcU`HT8W`>%}t)Tz#M*8T2IYyfnM`eOwis-OfQ%cQA=FS zNV?c1jU~Dqv}}Oui=9WxE?SX;kZ;hgwfdL73Gdg*lc0cjMq0t6V1*on?NZa2VQ=GJ z;n<%}V3%CHeub-UEPw;rcX}QK_2Q6&U|zRdNvqsSV&jCiZeaFIPQ_Yj_vrb{mzxit zy*w_hgZGC}2-1yewF*}fS;29F^fD0q0;69LNlz@R7t-|r3e*OXJ#wIc;*p~+Bx8{{ zk|H7F*1|4kEeg6)IMq$UX#vZ*;lPD>PZ!a!P`OW+SO$RS&pU6Ad!09QasziNXwe1b zEKi}NbdM>NIirI`hO(`R>VUb{Jz0+zD}mD;4V zd9oe{83Up#^rHsVk10R}8IS*J*DBkLTKb(9Pp6p{&O>tuZi84uI)>@A|Cn%GKLSz> z8VM$#5cMRi(4yK2If+{1G28@@VPgtj=`0Ib95xu( zEF*p!d&FXlamW>G7JbhGqsfXN;!qS)GLmM(EWn_1%2jX;I_$hYIPTz0Z|31sZ!{~? zpK_oE;<0z)Ws~smCS_v_O2)3h({HRwqq$X){)9+%6ebqFK?*k-^+rYdlR}n>X(>bVA^%71lRd=wLd;3^?2h zE}?#c|HV%%{+Easzrp}u>G8kn%?I`EX#B6O zt>$g~ubcRQeoT)4W%`=XUn0D3JkFPrKp{}zV*~u2Z4WNvzyxg20W&*Nmd?)r)8}Mo40$Cz#U#fO_vc?ja*MG zvE1b1z69XZT~8F3ej!2*oCL@6sb-5$m`6|P@~H1br1z6*fjfTaqnBP*hasqz)YAC9 zn5+gW#VQm=kHH`^k0XR0nf~T;EEOYD7lTWzMqoNoW2<;}{eeM-Ks}a=D|_%6FvBZ0lgorlHp}+a=N7x(9$qDCArY|L{0TG4 zRBY$`e!X^;gCDdxgRuzLT;*`ul}crUd>DQhZqjd?@CE+EC#~QwLf=)BLRw*hO9)!5 zyTz4vIOc0SN7H7>xbiewmEy;o(6kW;&c!US^L4idFd?EP+5`9Q4s3A7OLBdI>t(BL zN?e2F)Cc^sn*y%bKo+ByOL5uV|C66zA16*W zLx<8fv|!75A?At7@(qEUhFPK=)2uZlJEmKD<*;M)^lN5|lDt9j?W~CI9SxVqnBQjZ znWys!oOgM2Bn*5f%yZ*vX~t{5O4{5wVXBD>a7v}eI#UH+s)h=EqFMdlNh3(HVNPzA zGHE9y4{>;CV~Vrsn0a`ERA+PbWP@ziYJyaqT+!E=AWGEuCkOv2rNLqA1HF7og2{4n zf^zVUGf32lDfKeM6?h{hA;D8HB!QORs%=S+qn&Ye!y=wEdKs0t29VhUC+py&Jz?d6HEZ~%;XX* z_$7q*CRF06M7a2!?<@>;Stib?C5TZ@Ex+s$Y+VNP#aPg=B(4;Ka!P{2MWIWb7%#FM zP$~geDHLaC-W`BXiSQD^H1m=4?WuW`l%XxQ9Mn^9Z;mMFgr|AwoZX4T5h_9|${Upm zYcR3k=7kv~oK#;^5WQ14_19qBuGJU8$g-DmjB%*Klu#=Pi({d_(d+=Ec2437{?dTO zew4i6%8ODfD8;eoS?V+R2~=cONC|V9R$9Guqr}O7!b%bUgocOfKmi2?u$wlJ5+FScIQW&0-eTuJ z;LZt?v+(a+!8uSy{>SYHTQ&9kr%|gncW%#rZsL=E{uAVXiJk$eQc}Ki#~T}T-s=TN zLIw#7k(UR=K`Szv!mbA?aWm+ zi48AdJK|j#8|G4Gw(z%>$78Z-g+YFRUi{ZH1|Y4HiXWZ?%ft3EuwjiHI=s8CaTy-s zAu3!%gAXlu1&jR(R*1#Ke_Mcr2SzX@vJb=t|ahSd?5&CdKTO<&~>b7vZuJ&_Wt2MGXMPi3v^tZS`YJ=gREp`fVrz_!qQ3UL{5U&th< zmJ421*3?WEAaTV;43B)|D^(*)GGV19qG~LGtD(xZbZtD5fjGAyKj`ApbSIY>hE6nl zPVG}1WoXG_*=u2zGR?(#hwEedGD{E69M7}*<^%>2P|ZnZ;t-QiCOf7^O7l#(3>O=) zGOi#F4M>)!hpRz@c5=+=L@^jRte_BvN+yOKnjmbylPX4I0v&TH*(m`bihV)}K?6mN z$|>svkw!`KC$Rh;V?(cRj*X9IZ(^O9iB^%!#yq5hnpqXuST2-9^CKM;0SJN;e@a@? z1QE9M23mYR26^GL8P6-k6Cib5*LGU1&e7YKa1mrV9zY|XsuLkj*O;JK!L&h2|8?fD zVP5uwNqB5|-$m1WFVCHuSQ19pf9!(5P3HfsHMX|uvHYJ8ZvFpmKR!8 zGBMHk0J0ZR7eG2HJ@VTof6G*ujsJSmyrR2TA}$D)G2Ie3`S{V@DcIk~Spv51(pl6kat#Ld5-^6FJ`Co`h z+yL0OCh^%{>{#K=a8Q4DeW#}h#=9?qQS4c6Wp+LcHaXnjQaNeyswr#2BTgNM4z|4@ zxCbXtLeaohQ5lsd)15pS4U~s79FB-QCZ(!BomFw&Q1LIQ+I}2Z_q1TB{t=S}F5b$32;qc?h;RwiIwrHxlz73au}B zE^&`f^%B4GPIC)YmYQgB-VAM!){x|~v`CCu56oN^MZ>w4w-D|N3@vY9xI-_Nht-t6taeAU5d2~4OY5>~?!#cd_dhpvn<8i-OISUGs|${K;6@eo07?q36U;uvm@ zPa51ya|}XGOg0aN8*F}Vak}Wp7v5p1d{gnn?tw!PidVhYyKmn@m}0DhO=)8!bGmw{ zvbJ0)Jtb(ksSb!VBF20{Yn~1$qi+D3`xs6Hy@({`#c;i*dJ~iytc9_nWe&@Q1U5qR zH=^evR7EQzGvZ-wBV0-2ZhT5W?~-5%t}!>t3(ab4-SQi77Qz5Nl}d%K57zVdPEKX3 z;k}A zq&Kx4?#pExX3J|+tcl|9+vIk(0b<99@@;7jl*7_Uy4*xgx(9n7{#JimO?N<~k?-&N1tOlv~b zqk4>3Bin%{_{MaG-X@stoDZnj_+W=63pYzSW~e8!4G+Q;iRx|8h4P548iM-KDS0-r zXqC-PUPrX32QBIay;vGkoTfW9?9Fq-+eF`Savx&4*KYm)Z{(w0|B1-^`gNd?jdH96TMI^?hO0s8jXwr2 z2n_X@v_yQ(@kqX1OgPWX%lHH!O1D~jo&DW+ua0{MZ;xLdygBN&X!#Qb0IrxQi0a+X z63naiTDP|O$k;sH-P}L9zy6q=NNX3Tu$Lo+JSW^BMMd z%?r!(VJn!SkoXRotv7R=2}JQUr_U3JhS2QZ%ovz~t=IxtX>nO8Cy|i02}B6To5DL~ zksR*wCK`MIF=Cl!Zw^Hiom?;9idxrn$V25$EgSQivw^4IF5@ydHD>5jTdSdgp^!WlXU*nuxy|HfvpeI8`}^ieo>hZVxjd|1Y^pKW-)b8 zu9lOS7Mu*pT+3!!QS=!*1Sx8Y_39v87v^h2L$qNwr*m)lXkwapn2PfOFjFX|GR(f; z?{%KN`u0{3>^hy8<=20Jn$4cheTSGg^s;lO(j-IPh=^W!>lA(BJqpXtKZoS@WR0Taj-fG%?b^?O45?3G?!5iQzN^ z+Zc{)VPgXWA@ek4ghh86N(0KH!vv%(WDQj8(ZPgCm~8-s1|sb6xvXkkR?|R9+3zqef35 zC9*;4Cm{#`4hSpw7oZ5?ZgAg&#np(%s^mlfrM0tUO%?yU#IP^nUMj?%BxCxAt|NyI zUhgJ-)2E~6Nn`^6ZuYUGj1~!^MVJOe!JeA#C|G~W`vNu`c5u;FmZax~Ym@TfoCR`` zVB;1h2IYv!K{>y)EHtfYci2*P8W!B1(aE09{y`xN=GuvG^zt0fK-Zd-pP(DS*WI!I zbSxVx5$BXJ9*YEsOd?`BNw29Y!}%iZnC=^}H_eTnbcCam|mW>zS3QG5h?*|3dr< zV1oXyun6{7q77lJAnw>5lE)u(%c0Ch?*=HFIzf&6J6M4hk|)O`1sBoPN^Br{Bc$`MV~ep)k$7ADp>@F^XgS?u;) zg58UTvsWQUK7`E|ZV5xY^ys^n#2C@hP$>yquN-5z3?i}?{I)#d>qLz^^2f-WvNWZW zNkGOXi)a2vjGCMDXH4+_L#bF*42X39zj~9tjNbohHtM(je>d?daQ_QrqS)=PxVK-D zuisk=I|vS(;^hbBl0E#g{QG40KJ@O(UOav)H_w<}%=G9h=FgX8(lTV(o_q!U_|nm3 zd+-(X-%CSxC$9&WeqRN|P`{^A&~q!@Z%Y+uQDLzgeYu^rinln=(TKG56Ye-_Z?Y6{ zoXY8rwMv*7x98H_uvRZhoaB@XbrA)){FS-|Tu-h?pcZvF$?I;Cv_Zba0bAbVHNiAy zn@6ngdO%*WP4gvA-twNi<)pjdpY4m9I*vlUh+7+6mfUS?d-A=6;Lmr0-}B}OM1Z+IkYdN2J*VcT+>v& zuv1KKmzdkJ|Gzj}7a6Kc4AbizqB(sIQauh5JPi{34AQ*}Jk`zME$;bTk7|$>IWfnA z0&WEvP6fag#h;*h_cQhhzw!D1HXfhcU$1Tmzk>W;1x0)c7V#*EpLZ_fO^|(sav48@ zoaa2rr#z`=JlQ8at2*D2t{Ub&+fhz-aNKGE|ZIs=&(1C#Bm-c0i~slF_Wb8YK6%c66q(SU0L2b=Xq`?_CmIlZ z07e#_Y|Lm0VGo2>V)Cq_Lxe9hk-irEuq)}26X*p$SL&aO^FQs>8n^L( zZse0w|1+7$ultX%d_p1!z9~%%*z$p}DTF8Vo>Dv17|D@F^QeD@YlW)6yH(rTAfMHo z_IR8Yy3oNELnOC1mZ(AErS8eeVz^ASQ8c?bObv$5XW;$A681Y0{3+VF7{S*O^P(KQ1O(-12c>v#1)bE zwFPh)!Pr8<0B6weO3R4H^3tK((GzLozDr3OH#0m8sO7lU$O6^CW8UjBRFvMof4{jq zr+NkBO!}Nn&kWBRkp9FNm#*%tq9>tC>Ora+9C-z}6pn=$xzX_;QLb}Z;w(y(T!?q# zLtIhtMCB^$R-4|~p!sHXYB$>KxM#u|_DvueMXWUH{$0C(rs1Wg=cs> zYaWX^TvPFYlwK4yAR3J6gdC*|W(}k+odnN;r0~@6sX|nSLab^NMH&U2|6_AgME?UX zSFHWB_y6MOKik_|+qe4vCO%sI&*Fcp`hHBc?!8&Yg@JxdFklNnuN-C?OB6#Xn;uzp1iYSh6}rCJgVftAP+qyo^ofHw&ZmXdLn4r0A2xWPcfl(>xJXtyz+ERzqHG>3jSB7 zZ{9jCdo!b7+K(EwE#}3*=nL0WA;IiR+%JK*0%^k)G92Mdf{H)b+)DtT3G2jVy#MQBG>8Nw~Yv-_cbg+N?e)q5wEK}Hm zgF=p^3uitbJhXPy=?q_1>y>&*kLB&*!STWKgI9&?9ULCV>OkKnlz+4Px)UqUg(PJk zWNdsiF@NTRN@r&wqXyZ1y-dG&_q0hn-*Eb&igEuRF&t4)$V92M7r@-tHd1h?TEKOGByN z%QyQ6a$6EhQ^<$^?HwH-zI^j@40g0IsMN}gDv+V!8=BHmvr%bN6YR-f^Z7-)e(hWk z_;PR~t4byY zb1B7pD6!Bft+~g7T$fxZL}y5t%g!-OTZ!dtDqTgz8QZq|jG$_a{V8`h5&7Z^m8zVBgLQ34=`O-dh!m@$AqLfquCh;sV zLC7Rt40kcb(GYV0r_2f6=CS>_9u)+aLE*QmU;|YgcLeF<5jd~}Y^<*{=sK4eHD}Xe(U&}YlB_~B{wZy| zRhj}|v4#b-MQ~XF4J7?`oz#(nlYvEpC#?;0OU<@4{if7q#h zdbs}N!-rB3dq3j0TEEw*H|{m)|2yaR8e7}<8V`2vHTFL}yw`YiuepD3`+15P5akAj z;zTd&{-uxiq$rzx+5dZL_@8=k`wgy7f4Jy0KU_Slf4F$o3BT`d@$U`xCwTs_RGHhf zdZm1?)4cbve(za_f7#u_FAeygKY3VIiR^jiER7GOFe6Bu6M!TaH?ZI` z9035?T)D4jOM-;W?OY>H6kAh=R(#y?0ht0ojIP+IBMGBUs(P+B$yvooEN!$-GK66P3 zqWDw<#m(xXyshq@WU6w?&?E(}0hh@>Sko5(mqQP*$>yX$o2jU>e=}vZ%Y?O&pJpLP zh=u*z;Quy@idKM~{?#nXwnd5H>`Wme7abSf%aiV>6S#(`$H$I3O0K%p(s*gv9VoGnACzC?F5voaRr!E^-y23}Y*-!Tvv9>kJ6zq5UEY3G)K- z#L|_)3&R_ewUOhKBU~M<QlgrwMaVTe5P)qom|Y^ z&g#Df7Tl~c@dYZN|k>ay#kjsu;LZ z+NgxZRY7oQ$)`dL`}r<89-G8*hb9O&OIt;M&;8llSL7Z71kCN3YYwdedX2Iig7wP7 zvd1CKZG>Y&Xbx{&!B9>VoZ*u=y<}#(5Kh8Fe3p%AmN=Z#xjle$SD+@Y@>#p+ES7 ztRci9_b*vp@r#0}RcZ?Y`7y0_cJ+ZXrSpyFK{F^6@C+J#vS$2e6lh4Y9=3o+00vnK zQ&3#XgPe$JmF-MK_)gy(I-m$0PzwAsmgEG%I!#MV=+9aR4v(ddEq)Y-%3QJXgXN$Q zESnb7MIi++olZ40Gti3s#|M#$Au+O|KX+MtTX5chER0~%u%)Da@xY6%mG%z~K3sIT zo5Jq%sI~qe6Dv=rLsf=}i&o3_&5`M9(Xz5VD7)6E)gri90EA-LyyP~@$VwD;v}p^W zyPWo&NhZ3MbC!rq7l4{4Kz)IM;c%AGyD+(sz`*8l=*YnEq^TsDO*I6@e0YVg=j**~ zHq#HcPfxeZhEXGxN<|28x7;~4Mwl?R{LFE_V{R{F$exO}wmLy(z@*a9^ z#^&IRrIw)c56bVEdFf#zAwZaEgOB7#Q(6tLsL7&DK_=7zuQnZSm(?N=jWj5Rj7n}0 zOOy=cZ!SoF$h#MvSFa8r*{mRK5~h(T*Beb91_Dt+G}&ST%w`u0c}To@9KPP+M*CF>glV+DDKK@(vt+z** zSJgW7z0#S$S+vvkrBO?4$KFJO4clKK!I&Q*Bsq)G#z)5jA5+_ekkE#ENu2(lbnub^ zRgbu-XPuIn<9U|6;5HT@v7b@L;KeG8fS#pJmup7&LX=eBr*ug!HOn1;xthHTn>MS` zvq84`vyI@&(OKehjgXIViDPOw+(wX6UnH2p&)HMn2A1@NKZBiK){(yN_FQHMw?w=` zNC#utR7)5WSOU?9K8^4Kg_9AHv+!=aI1PS;A**+#6ab-xiU)RYUs2#vholHcR) zug_|TNos{j0Vd;iAbnpeUu|^DWk@n7fU`)M67w-bfs8jP%&}l!d`=aBEAU5|^%S^J zbWo3qFDC_MR{+{jIKR$og5$gfypR=IAPqmW-v*7s_!}I5BMW~c6@Mc|^G$pz^w2X7 zjD5~%c@?|_+n~XeH38VQ>uDM-1QJb4YB4oAre+qVW-6v;%3L?M$xgV9D0h@&-M&b;2t(HKvvuwkmqb(%52mEX!3v>sBQ> zug7*Wob4!_?G!j$N@_vYJX!%BX7A;^#)K7y>nCsJ2xH6QlMNL_pQ>t+k!l)&fJrU2 zO$#>uqrrtr&kx=lcitTLj{p0Xg@r0pIha5aP--DnFE-E5&snhjxjVsae{;w=qi+m9 zy$MLeSy1Irs@2A>7X;PGd^T~6Av@tkCMt=*^0YSu);qN>C{N9`7C_>s9PA`1I-t|r zBUS7|46Lc;Z`!(Bv#$)-y(}rkS+2E{ZVP%cT3)(bt*-=M08=bP1AShv_!oXcJ=hS8 z))Djjo<*%gcE7kqg2W1sNr~L&vQh$+?GFsxhtgvr$l%Wq^M}$0YRXBKWb2|u!lq#{ zJ()>O^OAUIPG|7rq=GpK)QWt_c$t@3^wP#XZV;!b+;d!1>KMdT$sI08i;EwtwU`t} z>J}BoNc9!Tq~mlE+P7?2;I2eBGFacDcC@C($gIxnQ9eUDyg8CNa?sisQ;jFx% zh7)aLzdUnl4V;N%FFz>Ibx zZVz9TgP~b^-ukfT4A5KA!)`b-ec0#oKI{&smTh^yYxs`)VbAo=d}sC{q`4eog0cE7 zk7L(7x9lMuur@e?8>g_h34IQy8B78LS#xHc_h~s615N6V37iuLB=SKH@=ua^ z$ozOi9x6P;(>TVc4IzW@48L)QzECnmBCPn%S1EvBmBwTrLJZRdQG3^TR%?cFn1lMS zI&XeHet{66hF~(B=!mi{E^$BcW4V_H$Q3Bgvl;(GWp8y_fD0twl=)`ma%MWSi7EW* zb4%&f$*r8G$|>jTNw-#f%S)-ds08bQEG*6gYArE~3h#w^>~fL`u53Q~hQL>T1*$)X zQ>Z}5#q5Pb3}|Cg+&6|j*XcVHbr^5`FWnu1B1Z+`C!a`egd$nLylhU4_v6uT&H7(6 z>xE^HAMBj}`?tUTV@&2}op;9{|2qCOb&?~B>V%lhYv7}tR4Wu`{1URF0$Gr|Xh>Bc z1!OrEEc2t`R{iO$$_xyzx>d#8ppA!H^&p+P0Amb?;7D(JAsDc%(+)ehHUl4gbfDqm zgPn4WA-LY$J|n_SyZ)g0aEo{oYXCNnd0}8UKF1Ci9LNT$D=r$&%(UYQ&afsugx9kj z+_hO>hx%sAw(87ojtoAmSE?ElB|_vzbb{PBD5zqOz3 zS^wqsyPZ$|C+8oay5tpCf=FmrWWj1|H~vxek*>gr9@g7eyX^no>&|Qbe{c8r_z?bd z4s*cmX2M87O}k(<;JXMa0n27%rAWE}FacHH=*?{lJhiR?Wmg6tRY`TKe$tXbD5u4? zLu6ZrY8KNq$=s9nH@K>}KEo!Q|E^9#W2(SWFkZ(a%5^+++2i{+>s z?VL6wufx#@EhTn#k3vbtYz5SQ3I=$ZdhQur?;TT&MhzT7QZ}ZQu>Jy3oeQx$$ zYjC#O2;dp{-{EC6|9hiZyN&;S6Q3OMzsH6>oS1Hv%SN6^;7ntArt}=(^Sjd&!|@oG zZ${st3c|5_<^^2D1{d)*@!h!@bK!cyh-kImcb)+ieEtz;0{Fpl%M$#l;mW6nGaQ|y zXJV>)>Y46GyxYxz(4xo3Z;$XPYO@yPfdn1*6q4t*%e4yrSI(Q$t@W0+2kX!1m-eGZ zt&zL!U1u~L+7{La(fjBG(HVwBH$*3hE=u%hQAde789jP3f*=?r1kpu_5?m2A#6)NG zI?-$J=H2(+T6f()@7G)FuJ!KzbI#d&opbiyKh8O8ul0RrOUMO`w-ioVhD=EnPV}Xg z4|5JeMYb2VO)7-e<*{^OaApr&)xZKDqdS8iW{t(iNwkvA-G^4?ZQ>!e20!wFIKm}6 z+hXndFJ(IM9ER5GqJJ{iHJ}FW_HFyZ_GdX{*QGPGz-`{Li58qWSWcBb_cpdrHf}NE z(cd&QW+uqhVM2NNv3w`P4mL-Y#k}k>cnys~BDv{AO{& z(6fd4Z~I(5Et-Qiy|?f^5x|MI$0mHd5u_G`u0eUqof2^dr*~Jf`2}4rzjjN{JF>}P zq#D)UrA83D6fubO6sf2lh?GEA9caQU2ql+X)=U{H=7KWw_|$g=ZW>8?rGfkbu#oqL z?PGe3zI!mdtLH^?9({Dot@nbjP;x|jVzR9vxo7mdm6Jv3ii;*OO#&ZYhK#=%>0IGf zCc^$rZeD8Xs^752E?KKBN;l0}nS~BsR}EeHH9wP3L-$X@C1V?yYUsNYUHw6+sUW@KUFeq?0D@M>jK5z&okl>Wkz~gH_+k6fb#wRg zY+gns!oK7h%oY7YP`JZ|he((3tdy0aN3{tKh79+xoA}|Ve9-5YulfhAC~ui8VgU0B z-``W1#y#Jtp{?6~H`XCSW_BW$b(%`$m*yQva~U!seNN)5c*%R) z%|ycARc^UHK7;RDx)bM_!?>zmlSVRVLZ0O*oSd@?m$OT4WdV=&{64vtZK!OKhGdeb z8WcLI6E@xneU3=3&KVXCA^ye&eleCmW<&+l4^vOFTF>DeKd*Z)hhD%9&n5r${g$a^ z0l`@bdTClnV(m7s*XjJV76UcdtIK%8M;V!>EPVyw z{N?drGiR!!jr)y86kgAm*%6EMnl|ZjC%KAzMm@GX(%2i7)Qd?!jaj928?vDFk6a8v zW@sd)#7M!;#5~x$t{smg@TIH_DW1Cyy~$i7TT*xmD2e}RL-dO92ohL})18>BvN;Mh zGLH++@fC%n+G~Fw1u3-d&^jy{g~V8vwdJZm#`U5a;aV@zWh{O@U9Rdzv0obWOF*`a z#eXD4$uy#3aF6(2TorDqslBvIpRq7MseDScRXAH`&OIc%yMPW^T(r3Q0Bsmol0Zo! z9d{DEO=!cnq2iHGSjUgx6U_SHoTzEz;WkF7_=&fS{KLH;!{|CV@_}Ntmz}~}3MtoH z^d~+(EC>!wV_F#v>APINkTI~L9@{Rw)HkoWDl2pdS_GJyidvdU2#wMpFapQ873y3j z$HcwXFO9;+`rS(4%R@sv+#Tx&u8T4D+}wvq&^L7RY1Sv?HaZZ?#WCPOW)ZjWResX6 z#Xr6mY^vqC)r_9jqU)4Xkj{;BZa|C}XnpA+APO-_owrCio9M#WIR4<>^QM+Eni;tB zoky@IR1Vp#tpk&tSBcOf10oW#^vJa0&g;8k?dhOf0&z_3rdwylhu$<#bLzH}*mCl> z&HNuHo$p%<1Tin*hJ<;~Zer2by{DzGwEN+M;$?>T6pa4HkGgr5xO>Hy0K52^&Q;)6 z*)gv4OuFJv(DkGE091OU;1;z|*Xr<{vMs@^3wyc`8NxnGFO``i!Vs0shF`Z3mgU1l zH$4UC-*WCr?#a>+m1!(m$+>Ph#TYC=hjm+H327;ani_CDZ+~&2U8nJZry;H0>g2;V zEs8NFpq3+80Da4%rL|8&K5EM~{vd8zPi;~HR>|BSCRfO!5TU8(MQxYFkP&NB^6|G| z1jPE4TJbT0h9u%+!{t{{%!ay#ZP*Bo@y6bs=H|v=c9#`|+l?LYNdt9OOP+xr>ISSb z`@(VCPg|UGlYoId;|eejLuM%ci^(DK%3aLWOR4GY%*gKg$;;)#8$ui$oSPeboDN{F zCr%ImJNk=>r<1>(qn*Eu2CarIpP42F3X?<-(n2)7D=pt=%^&bK!<`4DgdnnjV)Ta?cUEajzbwB` z+-K~dQE3O>Ri?{Rr9%Ev2J3c9Va9!XpxAtRul+>(m)9?N+tp+|p4|2z66<8v`SDq8 zuz)BF?#S9=5%r>3re$aDSqpjfV-F8+_fh*(DN9osdAI?TaO`AYn8Gg*MW5C9ri?9g z2l^u^)h8B3xBRpBuB~l7`49OJs=1NPd!h{19WT)@e+)k{@v~_AjPNq=vPIVly<_Sv z1vx(td=Unf%Xch*U@bE=M!PpIQ!-2?!Jady1%5^De$C1WNsV}8tAm6D9r?XBYGYbK zKNUaArjMLfmZL0RBRM~Rv6E~u{s@;UfQnG$gEw^8eM(5U7Iym|AY+nOE>k!-rk%Kz zbXlz7W#2fkTxs8Usk+}==HpL&Qz%1#SOFb8v+3&G2?g7ka^|FV)1qdS9Mdvruy`Eq zZbs;BX7>WvP$O49=k|qpheA1hWX8^9@EujELsY_gGtT-+^rHrDIv3ts zvvAVXNg1C!64|9~ZKh~dJb}teGuN#Icuy|PgLjbxH#~*}^s9JNhF@uCIz)0r?8+0K z@dQ!@aAh+OF%-$kjB~NiWIM~63D4{ye=hG%45c)kjf{8iO0{2k2i^==|3YtWmd=#E z3+ztkQiw_-F&cAge@dQZ5UoAv2MY))c)D#=fFep^HUo(-iPQvbaw=iD-OIOyDBwlA zym-0ni&MwDCc^NC30Kul<1{H+tji;3teDYPBiYQuB~dwylf0D&fiA{nJaEZpdi#o5 zk`&{TkM3HnbY(M1C9Yk2S9oB*B3LLF)a?#3S7TDQv)Evl6C~Z!Q1|J+A`fK5sng|C zW@yZzwjMj=so<)KBbeFB+m(iS!e{yV#!22>0xoNaSGD_ah!O=yr zG6ZUF5S`>!t^cmG?c)81c6CYL)>GT;2`=B(w|%Ppsau|%7?u?8>46o!15t^#RN`Zg zTOo-qF$l!8|n4A?BjM5LDNULxv^$`DR&nuObWA*4#-9+Hk)k_)KL)-Ij?)Vl;VEjLMnPEg`FYz-rPEz38f_sW8>;noqF-e4-jd zv_z*BR?4NX;Hf*I>;ZXA&Ly)fp}v}EM5()Ahxdk7R5j@00H+}DJEMP|I8TMxanA88 oL-Kp5Y-yAd9`@w_=M&%>5>AoJ@E5%X{&wr{4E&ve|HBOY1K2GC@c;k- diff --git a/lib/middleman/vendor/gems/ruby/1.8/cache/rack-test-0.5.3.gem b/lib/middleman/vendor/gems/ruby/1.8/cache/rack-test-0.5.3.gem deleted file mode 100644 index 98180f9f93dd513a24ced5ed5585d7c5da72d06a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19456 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 jj-z7t4% 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 diff --git a/lib/middleman/vendor/gems/ruby/1.8/cache/rake-0.8.7.gem b/lib/middleman/vendor/gems/ruby/1.8/cache/rake-0.8.7.gem deleted file mode 100644 index 0740cec7b0b979c2ef51fc19144bb36092f70be7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104960 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 diff --git a/lib/middleman/vendor/gems/ruby/1.8/cache/shotgun-0.6.gem b/lib/middleman/vendor/gems/ruby/1.8/cache/shotgun-0.6.gem deleted file mode 100644 index 4bac501715c058b6281cefdcaf2c36c235502a1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 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\Gh_dB*JtxTr{7H9X6&oAp~B)`N_HX%@8T6Alj{ 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
    N(#vtJTK^1U2(Ow4R8WLDH4GNi2Gr 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%0Dfy&Yzx9 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 ZF(k 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�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

    cSmfX(Jx7t^7kY_RepyQ_bgnGbx15#EKZ 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

    F9 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%0Dvv&b#FoVEQD+K9r_$ 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

    >%CrieoxQ zucXTjRUe`q9f&s6KZ;=A@V`PV3~BHo8AKtS*>8B%7(<6RY}lj5h!jUQrrTT~Y!}*C zPBgKcsG`{sg|owQCkJDF32cS0bpBD!h!8oM`~)IUW<`P-is>N3tR5t`Jw4|q-?ZSh zaqE{&ZH|NhyyM(3DD?F!&#RPW^@+0;fr_htv#C?la5y8)_ZY$IZ81UZ#TFn2jaXtb z-$;8T-&Vc|3UrU6SJ&~plR_M#wp_DBUNBAf>{H(JCw&^I#ZnYUQ#8@^qp<2wA?u~P{c!vzeYVvmS{gdwifnEnQrjvMn$quDE;t1{|5fhr zpvdgh^zuu|YttJ?afVHgM2_ixDBG5hx6)6$po4Q?{W0L#9L)y z_u>qmNX|cj)TX!NJ^)ETw!gOnA*Br#GOD&uedya9MgY<+)}*EL7g6t}eaO0l#<0gg zjJj{-5|H$Xp6Q*rJb_KTP*1#IS3Jpto^V6|&~Oj#S(kkz$$+@}kFe$i?3gCKQnsCu zJ?zfHS1lh-M+jj$1@WAw9;RzW8rf3Bc9gJ_N+~?w>T`NgOoVkz=hZ1_iieck<(ycZ zu6lXK8F>=dC+^;HYS+U2p5-O*SE1jRW~GoplO^pDbh=4s-x;v>J>BzWd;+tXd`p)O zAu6qp;F7M8MD&M&3fq_cjJ|i)ykY%!Zx}r1m=!J{0Dx7H|4$|9zsgQy6GIm>GZRNT zAv;@V6L)7d3tMA5H(~~2hW}ZAD(ToQ(IfNNc7>8&P;#~otgrh6>AW4-8VMpnKvJgj zqX=Fy2fIruRWV5(Q985@$Q>R5S{z*gK1|06YL|iPLcuj0ua9-SZ9Dn+{EuI@VFAWk zVX>q@k?l9UYuCvSECErpn;dZ1sFiWl)m!D8>Idl^&OuZB4Q@rAO5DyL0#X6}?8yap zk{eJ9!flz5HR}X@@SC489zXdX7AA9uoqKXHKhO#FT4ajnmi3<)D0x<(3P1a4+tN*=th-E?(#lg)W zRYVAj2Autw4ePfp<3ElFSqP(QAs2RW#b1q%jUcaTOBY@b23#59Yzyv;fU(k8ceF>a zgoZRc_t{O3VACq1D4EJUjxFw8x%~d&P46vr zqc8N3T@7_Fa1ER`JC>z?K=1(CxIT4Lr_!@04eBdSA}xJF6*&3S|Tn2y&Mwsn1C z#>ml?{6=+Pogfhc3N517_Wf@@A<8Eak_6xY07-BF09^mOxAOl|H?8cERZxF#jZHmE z?ZSf7gQes1uk$D3Cx`_CiK`WW$gSPQ388qom~te9%D7&iiP6;_BJSF5F}?ZVU()h1 z?nC5FB08&DtUjovq^8VL{NCnn<92x3$daas1@M(pw%)S6Zr$eo^C+t0!ux%T5dtuD zrwwPa&xmGn=t$Qg2&EdaPeE5^cn&9^4Gl(T#^@2BJQq?7q&31y1hh^w$k!8PkY-Rf zM29%ETn8*R_T&^yN~I^y6+(0!FCS$QME|$13F-IR<_G>pRs^>8vE^6E;eKG(Hk;EU(dCu+-_lLJUhQ`u`!|E z$5M?IiireK(Ov_`&JgxmW>{;W*kq&wl;VoK@4|+bpTumXeThl$99B>{Po+j>NPyiZ z6!0IGO3luP!%4j`=gN+9VKRV)^grpW;5wuK*5o1zzF_3`K`d+Go*2#nd1O#jZOa(g zG9Y0NO_bePUM>6bV(!wqVGvhZwHQ$`YO=f%#8vXdX-nl_>m6lg=^Bz(qKILZGE1zt zMjb02&?`Cr&eOZSraj(SJunak>Tn@&|(pn%JH0B7zYJhu&Vmm zOh(kBX>PubLDIH$LF5gh7The~Bvt^0iIy=Ix^i*68MfisV57|`ByBBGnl+s%Eybvl z(xd#MjyS8Qn@572F;As*$^n3)KT4xwW@Ma5E|)#vV|vyN4}>G^#l)ErISxA|f8h_y zv(?P5@?bGmIjmg|Bhpf6J5{;}OTt&d(Ggo&T{CsZwWRQ3y_6~^rf1|IA~QK}@3<_E zQ$>onv&v8AA@{o+4siK&fRQ9}Ti;}8RtW)t) zX)$y`U!B})z~7`I)+TMxAgWHCI}k$uO+YKoLVZ1y99HiId@!hKl%9i@I5l|qld>~W zZ=dOZRl1QsFLHt(F4yRd ztpx58at8ITc^jn$`87$aGv2WYW0GoEVkO%vYM=QNl`CmCvISys3^M^a#w2h~9LdL9rY z%E><0i&{bMRea9(eK?_->k%`OasTQvZm=s3#13rI(=KXl>yXOwL2PemmfXU}YhO4n z-<{2!IY{H`?e|V^VTjx|#e7Cj6)};K9A)TwM;#{-qKKLp;hKWLf^Raeu(M&^kSma*nK~}Nd5{e#H%F-+C0VKCm)=s7!~hwks-zi{dh8oUcJC?^ zOv+sI08hY2oN^3E&9Ae*8ab*-Ja-;kD6u}bJ#MZ7q~DF8-!5p-PK==s3FVts`Jsy; zZ7&GZmk#y*3;y73DTl`&^%p<&A#8pYZ&dRaoAu$$0dg;h>Kz*Wl+F;%4>IoF$36LO z%;;N%dxFV50Iz@Q8~^ob?Saz|IP5)(eQK!Z=o7O z#hQb&0=6f8D%AjI#=G2rMqQ4H?`g>im?crTi|uf*A(bNzzI?R;7}W%RR{!9b^gT53 zx8};+WYxYKGH^YZHjqG<%c1=a;`ZyPU&r~-o)3OIZY*HS`#%xVHeDYyTK`CU@apFF zUq;3hG;gK;>m+-!9(e>eY50&>8l`??_Q`;%TQ~Aqr}rrV?#ypxQ`{f$|H{0Nh)-IwJBwcj$>3>lx=f|z4`8kRK@)q3GrVz_%KsmAX=_qm8y!0Ezl`-EZtzUit6KZ#zJ<+UItT_ z@8|7;5dc^%S^TguT5mrEg{%|<$w)J@SuuN7{~CK4epoUAepQ(PO|90T*}2smqPvOBB+?V4wSBfh<#{`b z(aeX0daA{^d);xQ%ieuOsaf*Jq-e>YPSO54Z{N`#vg^i1GUP0@*1Jcj9;4Ufd<9Vs z+>c*(&MR9SSNAkL1-r>?eI2>AuaS{WNSD-Uq)4vu0!7AZ;{}w(S`GqVI~%>ZnoU+0 z=+rZ}Y%Y@*$MrrjOLf_CbqyD5+fUR9BOMcrF_7-i_A{(5iC_H$G4ERyZ9mW_%-a3RKr75%k%UlNIT_;DedAP# zi$1N687b%Nqr58_1$SPu8Ti?8SyDb6bWdQa?Y$cI4=^nC8yxrj<~B)XUaI_#`aIwrR6=%eQciA4b42y}}}o*J*9Iax(r!Kf75 zrhhFWi$Bfk&M~l5(tW;_gZ6={&=3LyJjHwfOJbG~7ey?=FV?UKJUA5um1RXN!_Usu zU?;dDq4fNWqF)8Q!xEZSjxhuuX+`l!OjAGardl;Yhro%SEJ*sh{xg9 z1X7fpuqn#c&|eZ16y{s!9a!(lKF!mm_$p1$@IF2TxA?Wa{B56DpUZm;#lHa#FLK$6 ze}b|QW#wfF$|Wf>D{8h-c|o{|6trpVZZ&2Z!8*j zMYy*jK2R9?NKe^@zf;rq45WSHC}7#ELhJ>iTItWQra!=*oP#_HXR!y}<&6R<$Nxw~ zhmg4O{#(b$sMzKy*?($hWdZ;Ij{m(Z{;wSF(eQBBUUB)$DO>2yaH~U`z?yT9N)Sjj znF6XaI+A%L)M||RKPY?0;7p)qT{M}A?MyteZBK05wrxzDH@409jcwb`#I|kR@0_!5 z-8%c%-BsOPwbs9`>gs;_S*yCqWkziYr}(5y#98kqM^mS;en|a}2ZM#xfhh=?ZiqsKbzyhNGvam(sDE=a{8Wc9oJz%)Q^rn%nD3`ILC{>wfNbnc+X)XxL)?+N#O@ z!V2W^UhGG{B}ES~+pD4f^@0a)=D8sJ%OTVWEr50)PVQrHa9gYPMja-A@m?_f1sDqS zlo8lU-6i0@Z$`LIe;Gmf8ta$swA#y~pS-pFjH>)v8l0iaz82cT9PNSK^QnLHg862+ z4@iGefXCjUNB=f6iriu7W9)x%_=v0AO505fx}nwj%!Ce-GBtw4kxdL@BAFxe2(p(Wb zhAp(4*M*nc8hJH>nn_yfM43wS5{kfrvoDc~qQlQehIOo~WPq{vN59GwQ)?V7hNpK0 z1XA9*M=BqDc5PWR8$#Rmf@qkQH!<;qfXJH)aTBa zlJrdGw6!Tc&$SLQ>MVcSCC|vv^T}kHuGsFrH;RQ-RT8gJJm4N^7L7J-77{cr6zfs2 zqn29a$dY8*da$gD^0?Ik6aI9-s^HE8Z5cAhnSc=dkr^FpJA zq)eU4D(D%!nUZ8gFB3!(Mwy#rhz3+Mq{&k@xG@;VB>`>tb0xN=22@JfX{j**qvanGeX;Xk9OD37_)Wzx;oIBgX;V49hGi6=@(Lv+Qr*VkyqTB|G6{X1)*vcL~%1$2e0N&W9M6=XEasT$P z<4+iW}P9x+xpwhK)JtOT(3p9NNC1*5jS?+Sn?<=13sFxbF|9g?k`t> z24oG227t0YS8g0M6e~2-#5M4O2mQW3haX_$P;|phk2~QcymoEczK|i{G!(jo{%Yr@ z)I72Fh)Rnm^Nii^Qs2zzDNihrl2?dZ)K*RnRAi6-p*dNKVKC|D82(u2o~Vn9?x$vQ zVvB-lQRpYHLUV;s51R!S820c7;HH1&pWYb0Th(THu|{wwr|E+AAwJWl#Mn+&(* z>_)I#Oe3D?xXXwYqI8raHDfEpNPv>68dtECIZ-=fr>RW>|10=W%mQa~C2RU}r(?JU zc{tm@;M%wvpRqteEjgZWbTFF$_MaPEhEb?t=3*rfvIZ6F(|`^JUR>#^RIgaPY+YpB zbRI{}$0~0)xG@i!ugZy4pzv19H+G1JAKTF~P5K8uIb_+mb$j#^x_NYzA!8>yLB6`2 zovS0stvRDZh;Mi#ig^lMDsIb;y4>YrpPR37$>Ix@KX z9@cMUe$oqit}UfLCkqsQ;tO5)Uk_Ta-)RsZ-0cec(5^khv@Cp*$d=ymg!2zxPkP?z z-G=j|ncWd(l$VbCAxCTaEK9N7APOJ=_Aqoi>{ywi^-O*=|Bgb^;;G$7Jub<{seaWG zIbgCmJ>9+a*>tm=xqj3&qY8tqd`hkFb%V1+7s>847~xc$?w zOPqUhI_1X2a;5N${NTXIXZCX`Jj6D=W|y1MX1hm>_(!{L>-9PwpAmd3JZL76CWKaV zEAmL^1Kc5X@23=!GkofOuWwqnCBO`kLK$Ha%V5d5dkoT!>X#M9;K`h7r3NnGPBegR z`Z^MbK$KLmN+b=sjYgJH&_WQ*jX37gfM{RM5RH+mSJB^GR7LR*7(R7p!J*vBmU}uC{8FNjI8J{0xus+~`xN5RDVSrFS5KMl>S1IvFi6AWEpEmSm-~Vz z^Kzs0Vi>CF@;gmn$23DXYP~6aL@$7^@48}m?_YihMn%iNPm)D-&YV^8{TlwL*9#eL zyVJj#*H3-^?szpfRa_lMfXzr)uYUKJ#K{VK20d&JHn`&wi<^?VYw5nvQ&W0@Zb;fC z&lLMsY2#e8057a$!9R@7ON^i2`j5Ip*<)7HWIMl)-}EL`W#lJR%ZOvR1qx%FWBPritCMdQ!oM0Gp*jNPh zOnzp+Dz`Z;dGJ#fxLm>?ZdJ)A9(wHgdyM9|Bz-t0yK-e5H6I-`%gHG8Tyr6MF+CqQ z2GtkSGZ* z5XA7_wi}D=U?;*74|dQUC$FsJM(BLlI=p$>Fl=6bPBwqhRWqwIl6;fpU77@t95}P> zd_nE`8==aRAoRPX1KL^%Id9&?!JzE-0yc8ndpKQ)PNp~R+I%+D+U_sECh22%w@+s_ zFj`rkv92a_f_!ofKCU=DI{CsKiLNaCkz0KzYFdeRZ}0!Sifg8WCr?%3h}W90qD*Gi z6NiYST$%ovfT7D>+B!_(iKCv7U`i1zJ7o6rvLnPK5YQ$wga+uOKpM8`3BWb}oVZW# zgEn_ppT-@&kgPR_aPhqFBwk@JGfX>VP7^w2wcJ8ES{DL8s{0)mS`QjCNtjF_8aKIx zVK8h2MQGV%F$|D@co~tIhRg33&Z2-WXCDB>bWI{3N+wzEvq*<^mCH!pES@JuyptML zO#_D_n)cyc=%q|`13{OtOhv&Z+H*Mg;+rVyEVhR*XS}p0$C#?T(NXuUA%wu>*=`%R5zjvv}lrJ2E^t?@O9TWxZ@4t?b;b z+9X=MB&MsaGLZktLR*Bf2n_cQ2oj(I<$JS{TySF2bO z3P;V@r%g<^_=~QBoEg^xqA8x3=ex&0zvxZ7{t32+$6*DctC>|OA=jrEMqsZVHaicQ zbo)L|q)+{occ;$6T;>Vk2y217_mh{5dWDPUF8DCtmXQIZMCv4j8d1t0^XEfG_fJ&})Cx9Y*Z;5T+ zjm(N-we2y?hY6JW#_DxLa>=eagfd}8Dkd0gVp;X?NFW`ln2e5S+mD&f~| zTg!>2E=o{fZftyYud80<{R0BsJgZWbMH^tA(8xe3Bw=3mr@%ts%wnDgq;Kh8G}#%8 z();vNU-S0B38gc6J03{KF2xq^!UvPaSp$@6}C{#j5+$x$% ziTy1%c5y%W2cM8xFSNQfPlO=J<#_+;G6c-lsJ5u^+n`JZ(=3{`-bG2?XKv6TpyBa>2cr3Gh=BZ62d=F z(3}-t99w@kWo(||7FY`l2R>P$aZ72NkMf04!>q^rs9!oRE@n2Rl3&9fmtUDAhxtqV zwMB0qDm{32TaXInF@*NqHVkqV{0kxAYENy??E`XVi*&fxpnV_DGxvB%_E1YZ>Uf2` zd*+_#*0JFieH^mcV_kVnl@hataQXYaLJh+~PZ!igQBPQ^LS=itrrFvmL%gZ!Yxg&$GQR{WUbx z`5nsHBYuk~;yaRjeilYfJA+e=jnI%-jmOxeEhjISi0!ng3wB#CC{{69!MN zl9E?b;iE3Jpa!LG`pZ&V++<06zdU=b7WBY16R+r@wz*cBDCAW|q46us#(BZp5*M&$ z3p(`ifumnW$T2GK?JBXU*OyBAdmF9`0v^yi>nyOJBZ+Wvw+;O^jbV9}b^Lc;Mo5$`N^>Ab=V;+CkUY)6hHm`bmIHgal6Q*QSI$;e| z1D2cflr2&6;U{8MmtzgM*JJnU=d z#8ElCQTkkr&Jrq_;4!*ZfV4CB+&CxlA>5A7t6IV`(0lIrCJ%d!u)4?qztNLb56bkAYw5{Wgm-HGvA;?bDfHE}yaD1^yBjR{@SU6=g z0g((N0ZC@E@|6TdaJ{3Sl*hrYAh^u{6AOd12gJe(=Ho&IKO6?~uH&iQIioCJi-dp#CbwGL8#t4` zu=R-L6MaA1k1%D4h|;gnR=jCzD!Vn~JPV8rN(d%d$osD{i$oJiG>Y;# zr5FK^f`-L=592eG&zj$#OGlzFF1wK<`h(b#$_g1GpouSsL1d@h8Kn2JvI~N51eKTZ zCdPT|`6$$X{*83W8ZR&7#0=fSd!h>2-Y~rJA%H1-j|*K2qRsq(H=I8KR=A-jaY$k3 z7E8G*7uo!75r03CYLS$fY;S5CY7t|V;$1>uZwHR{?Awh-@K=fWt_GW6TFxUse^DBP zM>QHxe(fIrd4oYamHkK@X^s1E+9%hEi_p<@N5zr;p@AnShl%VhlpR>e5E94I*rkc* zfk!IDU+NYo&8$uwUI&OITb) z6@IsvC9%^Ev2-C^Td^ww1XWuhVM zIc-esyL?qDf!=wLon6(EvQFNJ%R}~4Hep=2AZXje!o7j4fedd!@M-JyYUBOgf7_$y z^~z%=H{ktN1x(np3e4q}*4bZNIWGZ6{$ktq{mnNTs&NQ{h%D*Gu|lc(-flUg~Y+3ZcF;}%;eJa=zwB@B{OM` zgS1=BA?lZ{6kVl6^QlvknTKMXM;0tBWMk*;uxDjQxFn}`Dr!yKNo0snO=?U|?*|)P z#_y4&)Q}Rb*MB2)?rwUaX`fz^j?tVp`prx9g(i5Oy#1SKGA>DQ>@A?iD@K#@BXi7nK3Is*tm6Fe>K82hAt@0gi#j9B(dLGPL_NdW!rU?%C;4 zctVET@qTJGjRsJ1tuJ#%y|J(NDkgO{Ci=j(oOt7qJZ^7x6 z1aQ@XElHUsbWyI$NVYpP@hv8K(-{$#9p5=b3L;bg%&rJZD^Ess8_m!|Ty;kmM0M-( z0cAvuhLvbJ+|;_(kSuo13B;JtT1^o|YqbZflaWAx5F+JGDOTO(qeb(*JbpO z9gn3+j+}TJs!?wiTXw${qQYJ@AkXrJI(6Y+a^qTzo-30|qI#ui2q2zYiz$nm*$wBB zXNG$16a&eOZmV$D;-xLDfvap6+f#bT3sGSo2eD_cM)gB`pusaX_R=Xw2rV_*B!G=C zZrjomoYDG)UVr|Ew^LT)dnG~JmfyF+#~3mU;%Wa{?L%mQwl#lO?L(Id6=gtu{%m!{Ub6D~;&M;#Nx>(ME zF?_Tw0|AztXnd=OafdYez7yWcU#$1huC+l6LOKi<2I?dON6n6>l1{5;%~5Zb(Wri7 zEM;NVPJmg+!=jg7dJ#$-J#R88HPi89b@h9eB-q-_;+WYmg$T-uIEpThOtyaw!TdR3(U7gQH*-FCXR#}L*7fN937<`^O zTuBJ5jGT0<@T+3oS)5b5q<%dq3h1R^TCcE=4qU6=%8}Nda|bUNS-VAy4c7ZY_t2Jl zWR1osx#YF}j7ZAb2I#o1)fE2b;X)-&JP);|)5z#{GSG7VEx?nI?LfZ7{Tc!I!J0r* zJvhW)6j-G<&Wqs#?J;_e8_qH*hQb0;j1hzB9eE`E!=DmgSazrUFtL#fQkbi8^a06; z860;T9LB1=N`I<)7p^5UM4U^m$tTKw9*l!ys6)Nyt4&{t%rV#PXj_*Ffgh+S9xPDB z=M9p*BAi)uPHKfcwi2Q!$f}?z$Sz9ET#FPHiStDJGJhK%I$`kBVeKFm{8T*EkQb!L z$=@b;;Falt7s|XSGx$sLXrgSxs5Xu#wFt%hN>|#dK*=Q5KMZo2l{Y?n+5s!ILr^zk z$d-q{uEfy%q`C^8k0OJ8jWZrbt#@CW6gYS+j0vBv`(Pk;Fn>j;<{A{a#uBli@v=o} z2vHqK9IkzRNP>1UBl7J^XJ_Msxhr0TcSE`6rYDf|S?o_am@88x7mVR~#i>lq8`6H| zwvEq|sQCEdKF(OE=MUTb!SXa-W7y*h?lDob>;LM8pZpy%aF^#K`UOvz^bJ72+rA0; z@W@X3{(FBXcnkVq>}2Tq%X!FooBDzEMf%O#rDH>l&#?owdmnY`*AYQsTda3?`#FRN z;HmTZld!*^IPRa^j1&qnLUzznF!qhPlgYXon(Rnw@BEiAf2ZI^h~A;&F5Xe>Tq@a) zs5d)?lG%foHXa(q5=mX-(L`VIbmSwyh6p~aF~u>EiiT|{&bS23B^eBhCbV4nM7ab5 z7Ahq+wNa_5T4|`!o3$Bb9v|>twIXgGKbv{vLC|&E7FPO-$f}wl4~h!S%$PoC%p}o3 z#O!+@=8kVsDQ3-p3*$TZU7w;B+zM)Y!@nyoqO5b|m55NMN6h!7VlpR*TbvRvP!>*2 z-GehjGN-<0p{tavsCHDlUqHGb3o)MToqEZyy%Cw!gvRE)jrk*$+ zy3@nivBuRMV&E(&KS6;F&2t|htK~NiBWfYp1Cuo3M5WLVemIxy06#I2kk(siyahgYNwJEDv22XNu-DoSd2eech^cKUe~Md zU^o1b5|AXZDvT7!d?||dD3!x2KyJQ0^q<^vxyoT>eLsKxcMT?MYn~uZ9fg2^cu0rF z#L{^8Cmq04fxFD6ic_yNi)2@JLpWiYlA>kYyTcU#6R z0tb!zW1GzmBYZa<9|#H(>8B2Kc9&9hY}G-L#*waB#6dDy3perL2xZ?2HK-9FW!*zl zxpWZIdH<|rN`mG|BAfi@%WP!ZW>08`Znjt^jXI?Mh}tAfLtib^ul6IaSQ{@!;g(J3 zkC(&9OMLiEH&bRHX?W-VnmgkuD#3Jh%X|P$V89uN&uhN&OTsbi4yJ#!h%!{>JGzhG zdmHBskt`nul1e!QW{m=D<-c|E2lz2K$Vs;49{*vKJX3%h>QWp% z&fUm5<`{Eam1Yz2H$a5ss${ixbJ69z93~h#sVa)t=f@ zcR)+(ELVHibUQugK!|J6NcIN0iFV1DZf zZa-ffTTm8z*=&;0{s-oA1#FaNba2bHH%bwc%84hr6@zP!cu8%%DOmH`&AaKem@$Nrd*1Mw z`M&2p=63LVXy67j;yWB7;3{80+c%RO(H?xYPsf%KSqVptzB7tW3keh9K_UeXgeQj~ z7{s#9pdxqYlLpeAk6DeLQ(45qB1%9myIy&f2ki7tZ*5&oKjr?s^m%SZhG~U*hA(fM z6y>moO?D#!5X6Kg)je3YGUmw@OXxr(N7^d?W=d`{4mS~zs^Cp%cK#voZp@b?d3>tM z!jcesjGp0|R|T;D(c#dB%G5q@McYA(GjaIRWme0ZM1WYvGJ-y4N;etia%*eMM>K80 zGN$Xff}8n^ps9X0RuuH6u6K~!&YvKEuns{8Y}-8k2CXjRT-CC>Q29N%OIMKk}c6bH&;)gR%K z5yttQ%tWL6@T8Ksd-&4{)p!$kS3gLK|E>@Epc_@P@4RpN9h0Sz2@f8?lO#u;7`eZE zGob4=ClXsXa=B`23vi_g#t)I6Yobh&9i*@mCXzCB@q#8iWN(`I3$%rmzaXPxZz^VD zs)t~zV%KZRgCMop%eV#Rz*BAJOcg_1)oAJI70@K70{QT zvFp9RDo4dBVbLX`xh6`OjKL;S&1eHBm7<(mT%2f?IG(JyD8T-ne#5tG#0S#5Z&Z&> zb=vNhM5a~!K%|`)F2BfIUB}CtWhx6g5x1(i{jDx%=cQ{a{rBK z;hxPU$dS}K^__$Md$e>Qo9`;*aXm{+D=(+q@&h0BLLI_Clcq@B-zey~Rl&x~H-+I6 z?o7FZ(MJM8HkWTgmeD1{-Sp4W*9`IOa|nKBjc^?QN0~ZoZ?(e4YHO4~b!AB&F%5Ad ziez$Boz->9wEp47_UQ!#&e~5=)Lbj^O+>1h{$Mm*&6*H~0Rm751deqpM3X=C& zI97_ZD7)GMe{hqK73i^a?E#AKhu;Dy{qyCgx0@K-f}dQRcXGtP2bN>_!BacHnb0Ri zr;y(jTXg=&L%X*{0>YW}{-42!mkrdO)3OnqMJTt0?O(9z;0qpD?KlxH=6#g=_-s5l z3;ryRNEJ+eT?f(bvAKQ+X{dANsBC_v-l<%dc>aqoMr$&{t3N!vPTV{hg&1v(v8Yw} zgXb%55Yx{vf2HmA*jrx(qdJT}=)1657-36`a=OI=LyhON3cK^KDY!4Pd|Cg(f9fVo*|qeOG?GMLN-zt`eerv zuAVW%!2Os1j_U1@89zR$_5fq}pooh^VJE~FL1AL#Hrw~dc0A>6p)Z=n$ya6eaK#-? zCq)k+>dvN>ByULV)omkwX1COr&|w1m#%BJ#`U7h#X?ytnj`t;rFSKVA`;yK1j}sP$O%6J zLC39}&N3|z>?z$jHtHEdD!VA+<>WE?dELO#LTFgmimeR(Kv`X=?RkH{A0+(-wWTnt z*D!`hb}i5cwE&K}Ddq|zIr3Pl6wCgNi7)saXpN@C9F4^rtByM0UdVQV7Hmn5%vWr| zzXqo#Wzpvi#9O;tNtmOv#>|H-xMP*rq-Q8Fv{zT6&#;!>4D zyfxitb6q8^qjrc8^r7DLNbYzYL373vN;xlFV_RG)-2GGS3ySXH9`G;v&*>LH++yTfO8AUz5Q4VC_&H zgx`z`7U_PuB`m!aF1?AV6S-D)i#gL=5=>~Bnfz3GjtNqd4v3Ufd+Jy>Cr)Y3f1lEN zDNKCI@6>nO`a-hXw-O8Bz3AG}i)cr?yFSHiTPccHLIQ=bOS%)&xE% zbii;EEh|Cf=C*U?YTA23T1l|DnQL>3308jY-p z2#LE4Ts@&jrTerOg@CxA4upSq&2T4*W5Ru@(pbNq@7JJi$tBkJc1cp7JdWuHO7d;> zhti@BR}6bpwrT%u2>yKz;upb6=98r9F{TyxgSit;8*;)nWjt+@={+A6Zb@14-zn1Z zU}9AF|Dg6R^#3u+aWyir5qCDS`!Cc!rK#nJp@zZFe^0@hVbxp<_ZI?oLROLj&juw0 zg6Y>EgeZuXvDqXx*>)2J=pTErfQa|Zomih&V(H&zDK;so+HWO?ajE{V$9Vz%np^Ls zr>=V;Ouu@&t*gdW5mj~YM;Rl4nLZ=GT{vp+JjTXiY5o3kFo?p_%-aH@;cd$lu1hw); z_+Y#|pKZd?=*U&DZrKqoFPw_{8tnZcNosr`lfw^r}ey0%wEk;)9K zdR(1?3%>QG@j4)*_P04~oUt~BmWTN5eII8eFiOq)%5`I|NGD)P6v}*1u zf3w7*+5Li)K84w*su*j~501kAggvp@9@oxUuJ4TRCA#r&mY0scu4iNsF-!RV(nyIDOB|UF-Ef*~} z2YA}2!<8z|`bkxV$JzL#nGv#KRN@PM7#Yt?ij#g?9`|9$&a_4OHppz2q7(d6@VSD3 zq;tcl9V= zdl9(GTlsKuZP#3am-FEF!_VPS*XuixO7BgQBx8{!1F&|;&JOn!ov{YLoyr`HGk5Ci zcTm`R8E@oa)tvjlWuT;jKKKcjZ+P=P=X+OMnKE>EUSXy*Qm8MarVnOsWH;Lu7i!s* zX{WlFuRdf>ODLS&3aD8pqD3VdO1WgqVyX}!Y|+`baJ3qhb=ose95zj zrbaqzUxur~atM_x(v#PP@a_c6uAMxKs-}7j#sAC|p~*XO$(h#}#r2jPt!Pr&Pel9! z?IzZ)b=@xibL{;59y-;(xz6sF*)r2U=f8Vvm*J(n67EvZ^w*s#FmQ%DB7q_5p?|QM z8DWgVKV3@LH?}Aq5s!TsA5GZ$g-e+z&WKsCICsG{1rbxX!X2?PF9cznB0_~L%B0R7 zp;&oF2M9+Y6b(^xLqV69sq{{~kANIJN7+Nfh~i`x>kP%&vzx@e{!Ozb_H*BSt`30~ z3|KWtb2o*1|11@g@n+@5j!U3VX-Syxq;!Fxgwrp2bYvkfpbd*)q%5eqoPKp+B;TMU znk`RCCeRCUODsKzlME1|!#F0(3!?)~SS0*MCi4`mvxRyVmv`U*fBLj_Pnq5$yB%eL zn$%{&RHD-7(6#gv*5hCtEc?XCl{xEifJ%W!GV=y^tcC1Q6&U6Ekbuh#aN~)nZerQ( zAwU2OtNUR@B`zx9!USTlES+3Hr0oTNX%D^<+n`X)H&kxVrZLjNvFHUU^JQzwpL@s= zvpV&*c%xOteuKKQsQo5kE5w{~c*=C-opiFunffr`h$(@IQtBhH_C<+@ddA+ZfRw=% z;=E2s*kO6}IP3Nec zUIc#VJZX(WmzFl_>&O{qac;Cj_<&k;>9hMB81ZlD8clEN%4zm=guL42Vn5a|Fe8@Z zYrq8GF$UXM2g&5ya$nE|mvP$a0?+P4Lw^5!?&uezOEjtciUqR|hUlN$Kcc!3mn#Va z-yzT9IN{DO$VQazbJb3yf-Lm`3KHqz_H8jD&*|NZVT zH{y=Tvf2>dC&Yz4{BJyz_|FqpA2Kko2u(0B#{Wq*`>#e_7uHvGX-V+7JHsn!3_c_T z3>{00-IUlC3I}ub2SidJS>R5P2urVJA}lL9)-$As6HtAqM75%{YPm24Ol$~q(b}eB zb0h6Pm)cctP0e?oGky*fNlXb4O<%3+9naY=GyLaWNdoteHAEDJ%A~Bp?l=4b7(MaJ zUGr}xjm?th0@PP&S2e|tffza^>qkZUopRdia$CfYH6<(5L%|e+2Sxbr_XEloiF>Hj zgeiN>;PC~kf+`N96xf+T zBl2223Sn#JrItE*NiOD4GoIQW2XyvTEkgzAHkuk40Pl-WDB<5_nEwR6LE3c75}Xw2 zS;xl_ss)$)`f*hu;+Sq-jxo?_-8zX&ye%%xEDaFxJ7ZG&O(Z_?AxsS@rb-nfFU8$g zDY34^*f;g$LsFNEH!j2omrP3o&6Oubn#EO2ijXHiMN!?sm5QWzvvuG?|%oLz7t$SF45aGIQfJg z#-Mi)Q&uY-Cki@iFDeL;p7P76#O%%FLMnNbEzRsZINrDRIY~3;_TWthttpgHG0jg=|0;__LIk7$in|MXpLOB zARMSLQiI8Aa}XT4xeSSin;Kjoi%vs2mr@dwurPp#*f*~dY!g)1ZrRGMj~ge7Yh3bJ za7a(95ms2zpwrKqEhZ5ZFi}*nW7U8gMB8^zvf^9GFpu94TM7FwyihjW1KnEgjHUOn zDjvPs5`GNB~WH&F(cl21~qgv1i9TxV$3^hYUG={rbm>R zn-o(=bI8{!AEj_WWT~f4>-bxjGsMnt7qAzUdS24plyuWDv$Em>T12xN510?bvW!Qc6 z*i&jM;Mt=9gUaZtd_7Sn1v^qIlM%K<`Y8g*7x}&g5y>VfCTl2|NguWjKj| zioZC44d|bP&M<}|Tv*8LkD{ukB2w(oSTjmSj$Uv{N=)9UY%b!(gn>R9VOhdU^f416 zbK1lbT)2N58R5hS<~^YFZq|ZCNw?W;25xyYwKar75uW9C&OP_4gG%n2JjONNFB;Y*&_=Eihl%AXtevhx z_2&OcSwXb6krY_xzQzCPRrKRp#*f_n^;U^6#Ea`wy3ig{{jA5Ma;+a*Cyq?S-46X@ z5j8_n$%P57%Z%odSbbDackv&(%Lzw5(G6amBeEMCP;u>peJW}VCd37H_OC;Oh=B;1 zW}e|y0p$C7+T5vZEZUINsR`2Q|l-nG}V3U7GKQ8C=+IAfB6Zwix~Qz=NX$$ zWNG7y%;gUdgi%h)byPb@KrH;zIL}cla1sRqPmS@O_YTW zL`$wE3nSBZ($FAgpVUQb7< zK08YaYd}}zo=q)pZ9-DIKM2aDGAV1t0q+Z1)KsquA$Eyu@6`@lUV^<}vjSQoZ>U_h z(Kc3V74EgG)}z$3afG8QheYtjV4n6H!lOhu%_eve>{9eT08U2niOck7#~!(je6)Y= z)@hJ@N1PS_RuJS0ZrqKMU`+LSM8fGtdw=kj*X@$B*&vDSpSwx65ZyUYP-bYBGa;=> z_g9w3x$P+#-@=}%A74tyikYxZU%cdw+RVVXhhIKSS^RALd4;N1P$4Dn9PRI%#Zl0J z95nk-$<*K9zVWcV7ZY)~F*PTN?|cchLM6(|N)CRR3LwhPkS-e_*;cOwhgQb~3_LV2rz_F>}fiY23xYE!a)qZj{uNjgfVqz#YW1*^To>8J4HTMr^$O1ep(3;QOq zlQgdPf%(T|;mnC!6!xuglz!5(Q)h3XLW$a_7}oPHe$H^yMsDQzh%w37u4 zXweGmljw6@6*1LXbt+XmCWz7y+m}tD&XbSG3|J1(;!6+Lq^Z`XYZ9+&TI31+EuW)j z4P0mwa_-io;t{v!l64C!nNA)%U(|9m1h)JRy0N96u3Kz_tCRR%tfAJRVL9e2{k!cb z^W&nV1V(D1tN=z!eQ19QTqdW6p>`3?PMI>UkqYG2wjb}K0HFSci1GMD+(+zi|K zG^DRCvDXl+TO>G3Me;Vx%LZOGF6zazFM<56fq7#Y84^Q#kGrMRByNH&i<@VJ5JHe> znK8|ajEh~e;rPGDnp*)C8PeXSRrHTCO+(7hz<2sbS|(xs{AO*CoaHu@*pbVNZdBSm zZ0cIIyXM(H>oPHig>AaW-`${aQ6v^^l!qD^&d@V@eL#k9cdwV`W&I-QnUV^>IdEhN z9m`-cP4fZ#Azh$2j_wWG&lX4t*&FXLO(@s2uI#g@lIpE3J3*;gnXA-Ox7eV}SLSa6 z+y)-gKl(gE%XH=IH!c#Dyi-0}$b5=@ViF&K-y_R(73&Ynr_wK2_12rEdW&_zEkuC( zNzswk05#+u+e@|-9kkEry=PP%bj}$0*XZ1XQZg90aT6`=#L62e%8R5#U8rHHvE2UmXDG*L77jT&k<#VNXbu)+HVCv zJD{JfHk4DCS#3c(R-q`H9ZuM8JwnSa3u2sEdKfl`*p-;eLdZ&L0&(HFwRM83v1^N4 zD6st9o4wj%Jomv>Hk@cN1$rTp-)R$*-*I5S@tI($YE-$?)z7cwUfmp5;N@uiU}81I zzIz~AmToTHM@%FpfxW<;$*;d|bskQ58?A*>{O_O+j^xNO?=|UudpG~toxuDeC-}Yk z%C#bqL!sLWwmzd?pJ~p%IVhhX%d^x1HSl3pTv~1P;#d%(DzY$K!Hhr^M56l7^Ze{5&gE zhjqOli*e*&_NTrD6h`sq@5V!qzA2MK^$AMsAI%LGxT{EmgwlDn$EAHChQ-xFg4ZQ) ze11&M8oy#n1zskh^WEp8I@~1EOttKBsp8wsPuWL94Y}0utg0JXpAfBLi^?=Etn4X# zKrc|m54~v#V;4*Ra{oNj8Oiv`akr{vYG>1^$d5de8G$%ZXHSa6`nspyZG!JzS*k}E zPvdJ+kGwVM@ieQt5psRw>E@ru%0ib#fS<5a()UM4fKY`r=#Iwi4DTAaVGzljqL+x| zo*LMM?GG*amIh-=WNsO{w9+AeNtYB2=?sz0Pvwb;XIf0Ju{2(>|jO70Q5M=Z67?0(PgL5F_<969&GzbBEL zyg=Ve*hc?4zE2&7D{_%z~ee5sW!H}P-{a#L%)5r|7h^Xev{TZUDF)}Lu4jDj4UqCG|K zD@Av`nVq2y+c&$;{*(`<1DApXXGeOjKh!evrClGo)LH`a7Eo&})qYH)ZXTC^d9#{JVdiE3OTJW7 zkmE0~;Lnv_L}_|LL=c#8{uuY~DN8%ST=LtV0S~Ao!*$q2w{#$E9>=Gd)S>!*(k|&| z=?(wmii@`_-!T-M7&iouoCgHlWk z8CO!FAv!PB-R?F(jOPcMkv!ihbIg@K638XkpPH7J?8)yi2FKS9A+NfKgOYzVy2O|V zq$B7LUii?L^s&W)7>oZ34$QF*F2WTbzb48)xPGz!{34DSCG4#)#_eZe4&iqe1ja#c z)*DLcu9?Mt43o$9lB$<4T+iVlzhUw$l@oYMxA$^Y(T0wa*H9enWj)sJzV-e6J^eUC#yxlzjV)mkGKC<|#1#Z{z+S z6L0}0nD_PnQ1(tSq5#Vp?%1|xjcwbuZQHgzv&Ob<+qP}np1JEJ=O%Zbr@NDWskctL zQ~mv2-Ssa4`tp9aBY*W4J^e=hNKt&J-ru5nsl@!PBV{mZ-X%y(v_<9G1%d+zYD0EB}MuT{+GlWv;r<+5okzIzhQ5(VddlnC#ig)_AOh|Kv0`yDjOnndxyo?fYuM z{VU`_ZjzTJPRof{4R#@=z!|)frgJ?G=u6tmSNBXnjq>-a}pYQ`UMQvAl5kRoPO>1;z%)Jz>7aAlBU$vt7I zZ7n-CV`>H=2OyZNGf$M5zwExQ9lt7I&%;c;7qH5#)Biaoh1HbKtSE>jkEx0eUp+QnQJ6pB3h^&-C2SDMRsD+ zP)rvL`e>UOAbC}kvFI--U!*|x{CA=>Js~*u89WOP2&y%DdA~&bge+nDA900F6Rm8H zC%w6!UK9XZaQ_5!Gi(5@IX$`&S!(JH(J*Dy+k7kw*lJp8i$Vjy)ZON=64dLweQCCN z#1N8AbK$;gx7(6~0{_w5bpfJy#!O!)cn{6-Q#Rn76(4+*4<6rF)_5maC#i%QjU{k) z*oV3(@3|=J7kR(2r#~+XgWvl50NE#weoZj+PGIo*d~X5Sq;l87Gow(#ZB60e4}aoW zJ?dLH3THq;*8bqls)(!;ZI~}5^|K|`j$v$xhN+^NfYUod^Qa~{sbiyB7nE}pwkqXM zXGDnHumX9xD&8Z#lXa2bd$r7C>?>m@+ZOP0SzICYw#STsYF9g#PXX0R8v9JRwLbD} zN#6K(lA8sJCif zH7CYu9JtvOmTy{UChsnbE^1Lw?Jd*vx~Wm2f@r@kPJv`Og3HcOqcB>q{%M)V$!f(O z@PyJ4J}i%&S$@_POX>x?Exv*NOq5{4X>Wt^&34Cl0d}Uvmq5RpcZS3lTD?>5NGzTA;m*!E!hAxR zEmCubyFQlu2&_D($^n>y~TL-YZw%e~waGE-6|KTM5VC-#55T;`2WGiy$4LHG?U&g)$vIzyTZ3WqSMo z&w>j@Rr~;A-au=vgwOkl2C^vv*0TA8y0XY^u_cZ?(&7*&MkF*RD$274;Zx-(r;BIO zw*GBZ1yme@t#_6kL4{9JvGcC6i+D}Bhb&KwwS{i(-DpvZ2IANjd8}xdC}H7fhhyGN zC}5Q!VkgDr%F{;r=F%Io-Ot=~&4R(lmF3$K18-fE#T#$ple}*~PhCbeV2ex$VGer& zh&&L8_dknOKd(H4V^A?MehV1b~$q z0j=LjFG#ADCb&5S)|_kqA<%I5CvFh!OwSsE3l9pIPyH@Q2B(F?Wl!2}b0*la2Z)Q^ z6yibT6-C`!`Oi1uk;RbPUhr)&;|?rnJ2=!kbk;+6czny8xv+!LoA28jcpjq`MV}2b z>_|mms}P4*)XD>qGbZ%@vfkPFF4n)*9T2+nOqTOR}BE@D8H>Ya|UZ48Fx8R$nzZxz5oL-%A#U&z}3Mj zH?FTBVTcWP;v|7Z&_0jpekHcUPB%9;jY7g{BH340p(H6!^{ggALHZzS>`_)^&sX|e zUbZs$$%-1u{pDON+Y@i-hP^v&9b(xH z^rAg=-BG|~GCfjYD-`eaNasdBR{;c~!5X`#{5~9KvIP@kjR4mfvxwjb7$}8DtWUk?BF5q{s|CN*bG#&pysss|)K#(Lzsf7JZUsSpwzVKx1At)Rq z3p*D9LFF8Oj;gvg$h)Pb*oqYI!*AVcZGO?GqIy;`_Xc&1K*dyt$|SUlep@&?7X&Rh zP{gvBK^!paynNeA_}PrBC2i;$I$AOcFwv7SSGDezMe2l52_uD+M|tiY#D$d5vwANd_V*cT{8 zCtkwV^LWG`eBNDIznW=_a>@;%n*$p8OqOMm&T@2nvwic`9nwOQ1*<|AK(%pKO?ZbL z*;1*x8#jU68Gp#yd1LUc1D@F}VUq;I9F;RSo8m@X(v4+~>LseZb=lMA`FHya3~sC0 z9ybLY`D3?B{W0NdHn)CGjHaxCC4Y!Upp<9DzaA7i<(ElwVlf0l$%dOo6hbkjx|TpK zJn?V}Cd`^L1@#vYoZ2!a6qNjnOYzG2u?6oJ=9*eB^aEI}Dd(vg*p znw6%D>y~gjc_#}j6^f1aaBIHofz#9iYZCZ}^7fANbg9k|FvmsIaS5chl6e>dL6)7KO zAxnBR1p$^0jJg0>#56%Tzf{$KOGuDgOhCW2E~h4F$?u$_0u%ZB$Mf_t$=N|sK;Q!d zRUm|r*^q5%-rh5SYUSlsV4!GqVSs1{dZjj0IK=GBlKXn0-UgFOWn~!j-zB!*A?$a7 zzodsW0u=xcEg)PM4VV)#=%n?#o^oU{)PRjpFpT;zZh?#ncWfv}NQ0MIN1owQ!z`lL zudRF38{ZkHO}{$35~Y;Q_)}+#a9q$}<;@oVxX40PhLOa>JGD?%n>L{^^U{r9EQcT2 zFbd9$fNvP5eLj9f&UE!afN1}lSwMFWv&kuN;utvRSoP6N@>lRK1AVDQ5NN5w7lcjl zvwKpCZGj01MAq>K@#zF>hb8g@gIeFVkwZ_c z65Bk63(<@s)_G|cWR>zv17_QNk_%O+3jBE}7wqVfYZMi}e5NH_dK9+>l8e%D919G^ z14;T}nZ$(Z3S+8NOXr=Ve3GQ=Xpwl%R(67wV~G{r9B1!TD^jZM1mu+HV?o_PD+h5i z;(YRVV5qSB%j-+*4dpL#8<41|`p?d>u3Xytg&xVdSrzrPABQ?+$( zs?3StfA`wKC91V=-2b+J@VI81*%t8UXgu6e!1q^pNx}50d2XJI`Pwxz?NW|2F|eFo zU}+?uedm=FePg6VVJr0pU+(}(2+8NSEXapoXxR)hSeG*X!$Jl41)OID+)BI=g{uOr zXL8(HydYS=Kv@O3g>p-_<}#ipS)LFgkBk|W*}38ijSfW~F}AYZ%R-F+_BM!7d(K=y zu$;)RbLpm`ZyU)5Z>5CeOq`Tdh3rN{fb7${FAU)ev;5;wJ@#0q`G>iBai7^0#Fm8I zj?K}%50pkk+KTjHPRRrmKX4mUN?@bMt*6TX-n^@xU6NF&~Yt%{QIM*}RsIJzB-I zkIjTBBK%$@+T+g)G=8-@KhoXbJ7wS9Zp{n(=Mh(hzR_=bjX$y_|MUqsqtd&^^dLOPo_=!f$r~N9 zM5ZXeO1CiigmvOGW19j^$OoU4p?icWt{EODG83F}vww)lhn(A2diKHH6V0~J-X-^} z=+hU=Taml8G@wUVM&eS&iGzq*PP8=Nfmakd)>b`U_bWB`MFn#qrT;N`q*gm%(H(&C zD5$$PJLHNfvaMBN>N^_grH~KhTj317P|q@Y|9(Ur z4&%_hf+5EY!-RV@ZD_PW*WWYW0b~_3(IW(LZ!wz4quT)`*GzhUGP=BLo;|ddvE&{; z`rNyaArYV6^j_A8^_KPIZgE80cZWUY*IM~ON|dG7X6o=Y=KZUdAXd{}K?xF}ho z&dIx{MMmupTnE3|Z|mOFHR?aM?5?$g)GtL!k)M`U7i=PSROx62d`HiU%P2V1M3?md z(i5*8M1oTU^+wdhJ32&vB#FiLMAHLEy%Ev9S6b_3{m|gYv+{+j9NiLiLm!yiRWfgy zr-O=ex?!PzniMmS+FG25>Gyea`~7~Z#C`J5JlYWTs*ld{+OK5%+PQ9O?wBL7I+i`b zTN7>{=E$v~P&XI?hXVhd#P*Q9)+^E~6i8e( z7Eq;K9fVA$H^|rbHM8z&T563w?k(9ey(&4pYH_6dL!fu-p9as2H0}u<6)DvcPsfA8 zweh?m?|cb1D&qAnN=EtcKpGL5z;1hxiHmc*mh|&W1rlqM6pt5zyO<$?Vu}=EQ78`7 z6JjUR=w~PQ@=LUHlgRZ= zZc^I%D7SF6CiQt>q8Q;5Qu zsz?}uUn;&oyO1!xO{R1|>*B%2Q#L$Yq_+qM7~^aR&I7X9jqyBK=9cdZ@?2PkFO(hk z;qXvSx>HD)6aD*t{vMIE;s}!d3u}-80NDS3zhe?{HLzATad#GQH2L2?D#>aV-v46; zw>y#_G#cE|g- zSPfA4ZWTavF9V5MOfxhZUKZf!1_s1^O)FC1DskNxv*vl9ldlFo4~1>)LzEA0?3Gl3 zi@ekpEvog+p4=a^O|-@CdA|j~^nj`1aUE$ZmJ6s2*$uP~A~$j0*1;nVCinGFH-4Lp z^)_`s1pu$lAl*m66n^4P1T%JQM~D$8dEbEJCmep%*kLPZh&UD$i}(zqqbwQTA2zPAxSX6Z@K05OgLp)5d56@l^c;>_0GfwdSU3I}x6D30k zf7R_!71Xl%uwnDC@YBEEO2#Q#t|cCz{Bjk+{cc2-sZ+> zrD&Qw>>y&3Ap{HexJO)6Ul<2XY~yN;zc<}ky_DUEl-(KBuB=c9z?0+HLf31`ILqoU zYj%LMqteEdv9zw2V8LOdXQHd-3iJ%KuL3h|KD+kBiw^@639`cwDHxJ0?_~rz{+Z)~ zw`?Bi6!GSCT6dsS{)cp@PK|Z4amZ@4GrbK*R#D_!IvQv(*-6-_Nm40SuQYiUX>rbELI4`8~zB0+^gZD67`1AP=aEOTTx>^cR56=M=M zdnh^z<}B1@m@aAsZ{XUuyNUq20~Y)qlfBKi*nryuRN!6Y+SzzP{T#FZ>;b zJ8*_)v9IyI+Nc-sl?+mg%>0Z(p1r4rHAb2Qf*e5~7%=2WRGCHO3|#Rx{Z-xUH3u z>tTm-4c?KaD|4&id1XnqZloEB()25r59h%{t)s(i+im9)`^>B^wup2K3fFUIj`_8m z8|K8^%wVHVb`(=%WN*z+t*?7sB#Ud+Ucp6;9%vg?J}wJxE0d6k=+KpTi{?)yRYBcC zny)LF1?yHRIoZkf17TJ>z#3Dp0q1gto4FC4&i3@SID?T6Rb7t6@fvzR!bN10%C+mV zXvYFYD>&(eHcWK21hpF~?UASz>&ez45Bp-Hufm}5@$0FBy+qj!*{1a%iD{77#-$18 zXAPd%PBtCRTMIPuB7(cPj76K&G+V)yvm|HcoOG1!X(dS0Y18u!(6$d91CZ*ezBqRb z?H}8#a|3{>Ztd_bYSNA^%@N=4^e$Z)bH?V8>a5f|nAlM)OVbE;0oi zya2oJfjf$~D1;Lci8N6J{g4Hl*XAQxDT+gc`q2I4MplHjf0HX{Wucd@7fXu`_kKzcFAg&a?q1S)Rp@s9Tce-2DA}q z+@pDBd4L2zWP`B2T$CJdjP4ekFqES(h8)wv;gkp^lEUU_DN3jtWf_mUK~&`77}KF5 zPW0kV4*nPRRMUgm%5h%hfMOQBvGYJ#d7{}7!#{agw)O4K^`;Mp(_VBiMP2p3?($% zsW@BZ&m|qC5tHVSq>GEwL?-3srj06g{?>W|*O<0`?KxCv%R}Xk$fEPl?`~C861-^j za;l&3#U|)$3?fiA9U?Nrly9oD`l;hWq%6Z5WM4HeMLI(O()1&Ba|a;Mp>qdw{shO~ zi8wg0!4)!d!FHykfKLJmQR9mwb}HagXYvJm5nmBTLJPP%qI^G$H=HP(2)J^J7K*eO za|VXg8q9<3*N{#^LD3=QqDt2cGa6*9+-UE^s<~68>7BwAZaj}j&|-}w4Gh4Z_vmYw zL%5BPr&MhkjiEFRoetiG@i5{aHUYdbP-DT{7N?f;z$KP^&7k!&zSs&wNj5h}t016S z{-R~Hzf`83of>ggi~iN5Po?c^cP7BHfJIvrfhj_zDv!yO=Hj%V=`hEwDT;Dnamfp# z9k$)@hp{m}up4l3#)O+U-ICE^m)>^IYT481z$tVF)h)Gg&ulrw?LfL+P=NU;2NY3(99}|+tdwL_fqgCmyHG*AP^uhLw6bWuDB+=$g-kB+b-^WBjxny>q$q|{ z62&DE!!7O3Xyn=IL~{~~W8~xcvT9dwS{dvOHM5#Q+6mE<>ZY9GMk`mVK29kst^f;b zFiRijIC->2H=J^+<&1Psc{h!HZ%bTtR7!F5OoezHb;N6?g{3qh>5M~V*Crq41_SNL zk#Yc*JQux*0+*Lz%TIxG+-=8{I-5(QYG?K%Nj>p5APA%FyO_%aZ_(Z~`vMgkUT8jt zv#DA@J&7r=s^@&_pU7C7g?o?L&vb{9YL9s|OJ7JW?s^H9a&7I-+EKg-in}>Yc>ox7 zOtW~-bH#LxIo4UJpWMEh7^Q32R4h5bxta$p6C#8^?5B=Cfi#$!-`$gKU&oTyc60Y@ zbH$-&8;_%}GlIEd2gWwkk8@Ny#TJb-!sOuqGj_uJH;x9l$3nTsezrPC{qVj?RmY-s zxdR_bZQGTKL!VH-o|t=SX3bMWz349+;Ksd=5?AhyidayppjuYszW>h~`bC{Bkwstt z077s80M`GCJ^#O^0of{AcGw~)KO>lXui5VL* z5$#F!JZUtS8jYQ@P<$W}=(<$Tu#h+rl3xHfKzImuV>(}8L+LIHp$UY6#XL?YQ|;cT zjE8Z*Uw1?Rq{c9X?8yCx48eCp0HS}FwPh2@h}f}(K;(wSznVxNGqM&*J*xSSxSiPR(Z3_(aj3FJCb>ePxaHDWuu+;akG7=|8WAH4IwR1DmV z-!_kxMY_F`pJ3Z*uOho{W;+$>r%-WQEn2c#sW;J1Sn6rJI;@&~7Ts_*nXnsHELe-J z&|K9`Fh8798onA~LX;J-(_7?a8m~H2EKPq4Cm+Bl^v=}R$5p^`+^`Z1>dYzH7c7>G zv=CV`iN_0+N}oVTBtB^fUiBKeLzTP${Du`_&4TirNHha>{q{`5!AOH63`}b^{<2uG zx6tT>1_iucmXyj(7dzU^BS|J`P9^#ZoC{+Gld3GAH)8pyOz187SQ<%m)NQwq9}mcY@2LUJ}ug$ z$$aOw$Ia1eJF;@~Kt^fil@i^qWv39XpT(Y>W~**0Y|6-iSO)99chtC5QtHi#IC`m7 z(p=Ok=_qa9sL{+q)y%JThlS#$lstI>MQ$NQf|>hSI<{&tIk!gdfWM21ttIu}%|z-{ z=_I-g=q)3!=VNrq#uVqYxX4*Bi=M$6v-8VsVZben(#zgjK!lwYLK5}F86&exK4Dzj z7T{;CIGt1MjJ}hqf1n9krOQ0|0Oa`Md!O;6@B34@%=oX&S!|n*$vEvk93Cb_W%9kb9akyvP(4M2VofVL~T1N zIrlpS^KRr0Qrhy>Bg1JNv89Y2aV+gv7nSdZunO4G_6rtkmN1@O;KNo&m$-!=Zpbr# zhl?_bK!U=D6q);Xk57rkw_o9hO7V+r>V7x=*biik)RV!EXi{OtDVRKZ(LLz`k?^O! z@AAC&|JaK>9E!*l00ICY{7V%q|5ciBF>to~U$gRLMXrAUgzy6fbIN5+ZzrfrD!&#x z6e6+!iq^g(1a>+H|pgGBBm2dV{dRdu64^{aBz zgHKAN&C$+Zb*tch7hKEFggV7`v%qX3+>gu%-AY!7cGwvqjPgtQZYfR~RFic`BbUVk zRbsXw*VXh!8(id+8;$d40ygUE2z4{wM@Nl;DBX~UB3Ego<|XXx3i2OV>Jse%$J-z( zeUM_56Dar4cc4fN(r~=Z1B&8a-Y9ld;+77jjLN0kjz*FwE-9(goY&-Q+8*ulpI^QS zZ(}$;eSFjSuu1eYlNAIaXtN_BDK0}C6DxF%SRkh6+q}40x;eLiAI)o=_S`%sm@LyP zh7p4&;2U13nmCKr7>5^`ZAXRxi9cR42Aq}jiT8M4|L3=`kXm#__`gsW`M)_EL@lgM z#7zv0|6hyxWHm_d#AD3gUYi6miQX284R~@!VL(_LhBIc%dkmDnhS15B5K60YCstVE ziD^M-+;@FWnS?oG%KXKVk%7!A_ZbDY9gFSLPP&;LgV?vQuiSbIz?!4}dO5c|IiEf` zzn?GbI`BMDfAaQ5>ecrL7}({;-fc9clH0~&q8uWm=};Zhu~QF68(xsvd?Ts0 z+K?)<+9K;VVic?XURUaHcZiNP6FO%9y&N8cwXH&Av9d3$s!pDt)oz1igKifYV-c)L zj&Uil?7p)>aB4-eb!y~mMP}__(4~$MOGS1YdzD46sFx_ZA>6t?8RubKr#{k+IN%*X zV}nC27phljyG`x3VZ2CDSc$>o{&OTi03T6)9UKN3hk&PYS2Sfj6h6b0ST4@(D!I)J z$|9BD#)>CZ9HZ`;gE*b`f}S~IJ;UwlnH@+K&#YAbAwFd+n$xL8q~PRBj27uej-!e% z7YclRe;jYV1VPQ3f>oYkOdJnaba-!0iNJ_%GGM@jnKnwNW zrBt^(B6KBF&d$QM*fS=bV@)0T5LwH+Gmwvo^Jn%ks>NB0xY@2|hB@YMI*J-o#NT*R zk`P~pE9uPaa|($?d3JC7rR=O!!;qF0cWRoNDB->{ad6W+AUpZabXif&wRwZiTb84h zbdlzJ3t^6v4R_I`HKFvE7Zapr5(E~*eST!7(SZRRMe^HKW|{@tk)uA3$sBq@LcXcp zUO&MF@umn&$V9?@b#9A>&>))F8UBi(W-#K9K4l_e4cW$;^K2SZ!fYi?1VgziQAP@r z{Y$kij5u28Qx48!dUfzpCd5MHV-?OVUQCrj%jU&NSp3mfKz2H_GB4zKL^rm4v4b!{d~EVM=%OO8|9NV5c* z5@py&W{C~CF=05wN-Wa?g+XTNReE4Db9b0HtF$1|fmxQU;PzlLX6^`Ftek;Gtek#2 zh~A|;>YT+pDsHj2=Fr`}*5F->H=dkBWR4GW-pYQKf_;xK0U=51?mtIyZ;7FN&>XmC z2)avmNV+R`P`b-^SU-a9I)jD=(GVWMc9!l^RXsFEwQrdNZ@-nX%)$3?=qEYP+$@V5 zmZU6QQLk?}BjOl-t9S5UN`t+3J%SQ?FwOVo+!W~_{DWZ!qhf-*BhFwwJXVT>WN*rY zvI>uwysLL1(LF<_!L`iZG(CPnepYXB(XRViArhZZ1n*BTV7!&{;pqw?3PLIhKE%na zMudk9g84ita2Oq&UYJ!t+u*k!cV4>!(OMMNC1&dMC(m*iFvjIOI=OyvG7b&IbX#-K zZs70-AGBXo_?Fq7Su8WmMEfmGpo`uj7F~+Fafv%WjunTt@KU_l=k7I4D9(P{!TAVF zji*>dQcKYxpj?rPD-&Nh31>h34+mj|G`DEG?G~Y+H3p#>C1Z{^*ZV*Ded~gHrZe~M z;0E|cK%*mn6VfK?LylT7+(Cd9w1n@{XT9_Tb_z)p7QV8F!5dJcM-S%4O+dNKCml*?wFa?{$-3y@)9AlAoYK`)r}^dMw-fXDxuX zXRVHGBHyQ_ch0$S9ejNpeXS1(#jim0ez4P>yQjfB?rl?@(!(3Q#duPq#0n9J9=Lz` zk1D-c==hg^9cGSVJsuD0k=;%U<1T7&Tb(=u{lu1C1yoRXMLuN-XN*b~k%g=reI(p9eulutgdBJ=-E+1EwGrr7@dr48Y=G$ZA zJgaEP3z@i}$r9A8BRATE+jMCfTfuF(d;-r|;-JP-M_yy|_atDAx+c+{1(b$Tnip8R z^W>b^zEO&|Ube8xg_D^iqb7;8i#-1T#2)g2^H1&-9g~+d?iDsN1kUuEbE1RKLrE7s zA{0F;2%#6Gs2&h^gwst&Ar?s0rO`GAW@S3@;TIv(IQlu+53>Wyu&2|+?A=nNjRwS; z*1TtVV#67FQvP10jpvxzyh1*Hh{& z;^ybcy;k)nRa}?p?hSi{gz)V3iD`1 zt{6PJ;!M=ws4A6w1|AoT9Kx}HcXzOrsU@8scbI&BGCH%Kk}(?dd3&~xZhKP&&z5?5 z7!}J^KULJ&?H=Q*x}m1ts%&{xwtLr(uy=qhJJXcRyRgUCoRS^Gs*79c z&&6nWSRoc>&PlKxI(C3on&Yl4cv=@})koNls$K}P*$BgL2jDuB>6Xg4husW(I^xn&LFb!gxx6<*b@WYo$!s-0X0WiG0nopa^1gXvu-BgYlM5_qTv$(%|%7jtX6 zSn1q^_y&MzK_+~T9PZFhUjS*>PHAFN^9KFaX1S43YZ_dBqbGnx=*C|6%?bC1pO*> zR&)w9yPc7*F9ioxyr^~!enY#YvVHT(*z__IGee(>mEhZ0i`}kwsBy% z9YL5-EB#jeSwi}@j_7(ipq(TS2(r*;z_xR7>=F1*NPPVuA1I0DWV>{^`|ck&jc3rz zbE#WpyXrHu#;u`74Jt*T>j|Lw8Q{21UFeK^|s z1^Q364e_KKhz0@xC4N+%5nl8E=4EZ}{Cl=tDNGLgoPI zb>p7&_a3HQ4lmQ!&DvQ#K#Z}``JhV$W5cl#L_ykE5YlH$%1~?uX}86lIRjB5v%)sa zVVpq?xweHS%7N!1BRdo|j5SIjx&C?{lZ^^P&7Qr+UB0g>-rxJ2NH69{<{d`o?Zg&k zDVV7AghSTol1Ew16pJoaH|g4wi4?}9L-ia5bd}zDgqnMPO+%flauc<*ck2)WMf;1u z{90n0`!PG!kWO1wnh9bl*%;$=;@B6z1jJ?y{+zYoMo(T(bGIlX9!~}EN0`@wXQkq# z0(|BAa0)gELMUMtuZW18z*R?Z{f>GF8m^`$Ym(spa9dYtm z{4jfR2>T{5cP`O)u*M$$$OT#I3lqva$~jOOe5=iWo_`-|p$)@4ca)^UvifkTy80Q_ zB4#dYD(0q;D|JVVn~fubcPQO&N+M>DuJ2uHs6E107dFlDI?*pZp)HzfNv*btFJHeH z7fR{Ha_)A+?mxHqW!Wo34+H?f3(|j6R{ozY{-0&#Y&8pSlz#$FuHja;0fzV}7$K=J z#e{*D5D+?$9|VRNK>{XJ)1-lm7`T&b^2!>i3RNVpC0w#vb;y#(lJaR_Kyh}XVolR) zUCL{d?t2OTdu~M!{`xn2d&(9L;ylc!_SEBd_PeXm&iC$X5@6uX2_Q;8`M{A_O{OtHiK2%TCQf3?O+;Et0EV4-Wk3 zUH~;0ZjaVm6fQS;kbvUQR)UK<%}-La^u@^4ZqLYTXzBP@0S>mJAxj0 zzYrkK@E{=0AQ8!1K^8tuzmemQB0$_BBnNl-0R^g_>U~qB0IHtCeRSYM05L$$zmh?w zXVqezQb}@K&pQ_A1Q=*yW|i>7JhE&lo)q@MV1GFx^FXZ0u;PB%eD=*b!_^%plc_ZevO=X_J5YR6!g*2P2&A@cqMBxmaK`Jm zS~}#ShJ^p#(D3Z7@}5;gL1Pcc0JA-04#W1!xr6 zpUOcDd)3WQ+GH6_2BHH5(lu(6sNiecN=;&6^;@?AE%!V!PeZWvsF;B8zzb@Ik;S`> zfbe){3`E7KkFyrdRCWZ}=S*U|Gv=6|A`>p+)F+2-5-J+eO^iZQ+D4#L*v=FA!81e;`_#&bV!_gM?#h zu8K_O^MEyrnJXjkjggRn>?71r;(0{MgP8BDTq7MP&ewwZ0yh~unHVL;Vb?sFuv+}% z4Fe-ijF&u~E*I%KTCze6>Wb;box2i;)HJ`An9BH_rCb8%!1+R~v+I=p>XNrDxrr!b z$^tx3o88Q7qe~jkTs7bTt7Z@qNc9t^nDQ!Tt{zdz;*F}ec<16RG|1+V5XddFssTxA zm$xjbUS5R9Q1GzQh}9FKge6NGr!|^-zV~?yHzCfTBi6t}=JUHe&7cy|R4q!`U5#VbzG0hPD=k`3B=xzD0!Q9+*Lu zxR*3*mg}%{S+QklSgi@Wl91#^x-oY}?Uub&hwkoczFd-y zjM3`P-+6iHc9F;g{rVqL{*>*@DdxV~XLWlXd|MSwKAbX*O0S_Y9b-Tas?xu54=0~i zU}yjJF#J~ECYGaxo5<4Tj3?`}ntU)##*2x~SG?=GHVU5=AtxJvC^n7TCJWQa9IzUM z!QIA(8oNo}*gM;>bInC&F=1avDktZUC%YMLz#ELO-8#X|bi4Xv^@3^Xifz3V?xNlR zLG1hZRliGwI5kl|2H4EiaSdaT{7@&;3QN&Ls_x$>2PVc={E{SGB73WYHKIyhX81&* zm(1hM?*-dfnyN;HsZNEKXk6}A1G)+}I^eXq&7ns$(kI={a9t;pj%&+mQ|MH7342q* z(RqH5bkTfPkUscmD3pjQrwO^v-3Yf}ZREBg&VUimtT&6KYg=GNUP){AP$zq^VD37- zhT__lxm?9F z`Y2*HPkPgk>tY#_*&BaZhoUCfKl&D;7i{u%fA6^J9n78@ z-vU+1QL}$T`z8Tc1Ct$qq-l>Ol8-LGHJp9REPRIIhxsOiqs)=?S93!Jk(_pQMqd$Z zLjt`$;t(eZ;DGgQNH-~RQ-S8DPr4r7X(&65?8T^@-QQ|VEipN)SslEMsvIA9_Vs$B zN;Og>>Z=Gh#{nixkcly^OE6Z6m8A=ihB;`mLEtG=@VVz2Gbyodif!8s?dQBlCJ15D zd#ULFRe53&rXnTc`~aomSiZ44ptAJgj}vxBsCdzmu!!}ig>o1cV;Qa?WRs~HS^1kZ zXD6ak`3^5mUsKjOTYgFje!+PdBEoB)_Er?71OCMjV#l6u@DMOW6nMQjj!2<#49!R`566VedX~`b!d=dzDsQl!3!3P3c?7Typhy30LKt3;UG+u5vx!b{+ zqe`dUP8E&YA#EpDY!WlLeuBp;XN@TiCMZSH(lef#Y@-s4lF{f;2r>uJ;Q_JQ3K zaF(~;s3E+f_uqeNC#o%^k+e^sEl|(CF~_ix*T#CR@2kFWuYAEh)d2||r7qtPb)%ck zbarl6l%!fny#+%DhJ4k-85fQee;30LVqjOuj#2Eq>IY6i&C~O z#!S)5eMM%uGvLfjtNP)3|6qd34+J6MDPIlbnIc=xu**BV${zUrClldM0Uc>U0svI} z*H_yAQSMap_#YzjCC$9@U6+OsMhYfIl4n>Cu2M`U3=?FB0TGt~=vU-g$4yAyPB(E) z0a5m(T+)3}mX{iCK`E{V*HB)v)GGgnM7ysRa$aA%dbw_+B3uRc4U z*@dChdAD zv%+`l<|ZeZ%Zk=BZ?zKTEZUkDT|W*mz4R!vSr6E- zyrQ)SBuuv3tTxZJw}`HovfW?#Cy-)?u?jf2Zi%PhtV(hFS3PcMb6C!BQ%pFoEr?Q? zoUm%L^4^lmr$hz~Aqupe=5%h-LPICX$c2r`j53M?pW3y%5FjFWXBDxOKQZ`K%6|04WEH+pZumokMwcO2H6H7uXW|B;7 z$ILusN=MIR9%Wogv-Rs>LZeUjOf**N!Cz&$@iHG&Q|;wr6kGX{GqWPJlvEe+{@9V< z7KsoM#FfHktX*?9C8?qMl&GgTrYnM2T$q=H5IE82?6JqG_k zES6^uA1`KRj5>KTBZ#D0sxvEKkIYjfB^O1jpZL>N60$L7>}RF3B75tsEbYIyNBayo zko2JWV9Rbqs5C?nD{(+2FtZ{JY?yFz*^m(drfoA@7qo|+45xY#R~p}*=f&6l{30UK z#Y>=Zg&UK0d(aZv43rzOsrT9>Rzl%Y)k}(D&0exc;c}`PRmY<5oxOp%((i}r>@Lne zNkCn*xm*dw#k!m=-4oi*+202*Xpgq)U${%86j6VlE!In=q~6)!Ue*hYx(PpM?F--O z;O-8-g5H61QhR)(SsT8~_KZhF<6peR|M|x7!7}XZbP?bM~4e)!NkGpKOIp<~6#PA0A9e;`m#f z@__TQe}+awSn@&m_4FE1>fVq>pY;;jX3yMuyx{a@dUxWxB7XJYqliNFggbp02ZD$j z4cDu(8hy%JAC2S_S#ETjPH=M56+aWRzq95=wE1O7*VXQ{W#BjRhU{CMJ!ZxYiyauj zT(O(onWEo)QXJ|y&bfHu^x0jD?@N9bn_mAKUDI`63NTI3`Wxswj=|_IiA?PdJB>`s z?(0amAJ!0R60VO{Gs3b(cghD(qTbIJ3v4&b0q|Zw>Sgv~dON;y)@??0!WrVXeU=|Q zy@e}GA?QsTj+*Dvk|i){kz^f}EnIemBDvby0+U~rJZcXZPf)f2o=Hb!BmX|U|C*)xOZ-`U5|?F+3IG|6hA;)@~WW;_U~)MY(52XrEom`Zf+f`{<<)!z9ldCM zSe@K~7`(Tv|A(`83ev4x)^*FaM%lJ)+xAzs%~7^(+jfnzZQHi1#`({QHDkq^`&_KK zBYKY>?K+=m{mpD|W+VQ8pW0PO#2$opp*#IR3aDICkKN$@#j&?NZ7gHrJxHS(@F@?t z)3gV77#8EH6UAy*sQopnsmK(#0(v*>=S>eQ%s~1I_UA7U`a5<#@Tn8q!&a4amf(&p zeahfp@CBi-&LO40qk`z@GJYlb0;km{W`ebANm|(1tPL&8@|MG)E{(XPltgsR=i^SP zaWzx@f>py`E$7oLgQ!=7FVwge6TcSG-wy7%FuT%d+hcF}bB2NAT#aCu$sO+H`WfDB4JA03 z-Y;m*cl#*A{#$!5r-a1A)_6q3nEDt&A@ODrERps71m+D^=)Nx1Aw*}*W94(ku1MuD z%y-q<+tLEd-IYv&x0svj4Bn-UAa+te#lUuopqyvD^hQ{fiC`IUvbyc^!xvuRjjSPo z`TMh87H^o^)xRNV%Jk$o!i2Y0!-UZVzXsn!PS zcRT(W6#w63KZMQ)Lr@&6X#GCmLp5KCaD=+lq;^(MIZb(02y-+&6tVEY+qLg;y+`$HRr0DM*a6o$P1`&%gg{+m0^qoc(Q69fnd3G6?aS1$gKRQuOWL;t#9H%DdDZcz}4FKd&% zRz|vm)p8+GIKM+MM;)CPEnZPfaT$sT9K6Clw#g}t`*LEZ8OC6cflx?@_YT+x&1fZJ zNMsq(X#6r`K7+;FY~|12uP^Yv{@4)k>eK!Pz&?KE$y&1m0pgU>p~u*LI8m8`iLN!v zmFwV`yZAl@7Fg}$JfFKUL!$Y{JOFcOMiFkLmw~v9WVxP2JvX&r!+h+OTsjYmj_<&W zK4pmkD|h*n$odJ38FF8d5v@}>qU~^AQ1o_NNH8JA?yN&-H>UXBygwRw76{@~kqQ|P z%nlbek~gQw&o*qML4Np1k2KtLOtHdUuJTadLLwWsB!`5_(>7Yv`XZS$xi%!8m%%a= z55=AVS0eXJlEk~hohaq68Euf$Eqk>Q7)J1D$0lO!q5(5D6Nn>?7V9_13qaWltWVSc##_nh_eW8H5qA?D|)XuXWG7d0|o;61O);T`@iE&&feA8R1#okV)HKpOv%5{D|S5Orejs43~^$K zC-1{hjetZd7X^a}fKh(-HLhC#H*afPrMqMM0zp9=0ww5^ATpC9^`MjllX;n$%H`r` z$$WqLp40%sUG?$cR1-m$;g>&*jx)`Ec0@Sk)4g*@D6n!@#i(VjewO7vB6(CNi`Zir z&K)aMz1Fsikz&T56ynF7NOn(&?dpiFX8vFosrf6uiD#)Ms_UMt{!hqiPDo8?HsMlY zBgh7I6)fLr3E)jS$snM`PQ1xc##<#*9!L8lQD>2O**wV!pz$b}$=pS(Gu%)TOcU)^ zDdtdqW+c@hNKV~R(0dY@2A!HtJ=)jWbZ?|=Jp=srrV8Q24^n>u0e7F|3MA`lwXt6Q z2Iu>Ox_a(Zz-CAg>EhFaB|vG8!y+twFxvPVz_r9C?XP)k3EhKBHKRtWotsXJDGhI< zFp`go8-+x8Nj!PX?3i{xUGx_r;lvrH`!Q;ngA_^A^7B`#yv{L4akr-{7>Dbeq*Hst zrSbAniY4H{7QMQE&Y$*kQF>UQ#_Ez<#CxOOY7`7>UL=xtex+-Ds6&I=qdJ@L@D@0L z#RNWL#>Qc>kHW>g08gmgD%$%Bp0iLxrhkaBMKLS!jW)l6JnpCqb=@< z$YXd$k#2n_rpBp%Qr?07Pqdr~lA(_NS(^X)&#LkNjn;qBqyg=Nwv6@HfBdFNGIb;e&Fl|VP-}+P))|#TF2Vn*0!d#72Uf+b4^i& zs%EA2!@8=b$6BXGW8Q1Y3$W~GZzkfF6hbg}#c=yp``UBswaa_=vJD9&YAJ+Nbx+0R zqdko6BVNl-bJqb>tFk}(?DY2?sF#p~qrCgQFp^CJ*1o(Qy-RH?)Lwe6jr3(xdCL9hq6?(0Dm|Fz=tMq%kGgb^KH#<@J+#NENdZBN z3l8c^!x7sKU1^`7KQ)9yB9^RswD0D8|4U0`?? z=Vqcb)=Ok?t~`#Vu-Hbu9N#=(&2mvXXSXp? z&>GrUU9+OOs4N?SFM;XnVCU-SJr&cuY!&c)nI!(3K)kbCkbhP)=njJQC8%#qtHYcsptSS!M1iR_B) z%AyOc4|fVr7H8%m`cRWfSgybaaf(%2R$(}L2r0uUHG?^)2|8<#!fWSjGA4A%^)5t1 z(~*5-&DCteVv@8A-aBb0$6?xdc&(CqGxe2=@P4@>q$9hAJnQG_aH(=#b~uZrBHg&N z?TM$9qy!w*t1V&8Nu0JHeMFwn8{D0P3g=PWx}Fm(=~yjkk+gOmqd+_vGUfT5H~P( zCbWf2!mFyqm<+OVSq3WXF(PrZ8m)<;f(AQ*X(TS5d#KNEQLo63@d|%Z9@}wXiFba) ztu&IogS4u(OQL>KCZ-pYDA8Rr$@cP_uA+UujsLLvR?E&*`TnW0H@$)Gv>~yX>W-sV zv@4~-SX`!Zl$e%R{UHY_c+fglM#l6_14K&RzIjG2eqWcm$QRG+sj- z7MAl^69QmsB*mUpIcg-%&DT@_04})nSgawek0RA%3QK)r8w2o<`g{9NtXpxK*}Q$d z!$3K`{eH?zP{z@1ewg}P5BHcg4 z=5_=Q+K358c4qwoRj}|tQGn*H*~j`yQsk=q-AEFfvY~uK#Kl`xfS1L}8|H86fgc8@ zKX*s0kMh^%NEQC zj>r7aERI9MMO3V6MV87@=N>Y1a53^F8Q3}EO{|%6fS3!)fw+gUzSB(i?q~5Lugs!( z-ORFm7%Cp>VRodvKYK&V_*gR{WFAiQg@l9ilH-vs*%;KccEKzPt(wSY$7(lbIttig z)Y56Rdu;m$_MRp9adF)v(M7zFB53r+T6Oz2&DC3=7%*|=q$1^HB!zC*jEEcndHSNT zi{W60d9R~hK>(LLEh(no5gBtIb&D5WzohR&7qCAq;LK;*lVSzG0mhLiI3~HwSi=D!Q53W3xh$4IX2_2F;L3aa`MDV3une$bJv$iLwl8#y312-U@!47 zIy{7z_#CN@8^@7jQPZw{*wlQgGWqKC0A)o@avHm>6K}sT$vdc+ab=dSVo-_GR}~Ed zsomx<>QyxQK1@eDw0X-AhcDC?=ibe^Oli!e7^X}1SaxgT+L<}&Nph4ip9=6&TD(sm zuVJ6+f;uq#!S>3#-r#MT!AKQ171VM;)#FYXpes#3H;u8|nhf6uztZ5n8EzWSSp zX>$(GxM~cgzSIcQWM!QQqSAtpTfEiI9;{Hqk!(md+DA+)CJ<3zvvPzawr1Uc@sT)hS_^F#S-6xczyoKBApA3PhVm z;}Cjt8yt;~AF3~paKaxdo*4s@A2)g+EOn8d11e>wCNf1@NV%tHBrh2ZqBXTmOI7BY z3ZXgWH}yzJG@M1FdfP@YPm3KI3@IX{;ZeVYIuqs7sOTVY()A@|scTO*TdpYchyd-S zp4*i{*PE{dUqPhwTuUo|Dpr31r_bm^)Mc2^JeHwFyK~t2#mBo7!u9(BGx&j%^%y!h znSx2i6Xr3wtU=KeLT-YnnP&EY_?T-bHNzqIG5VFd{xIHz zHD`WzEMyADUAYtHERFqxIh^CCu5c!0iS~X`#ehOnh;UR$J~?v!qbQaubc`%h=!YoR zHHz^$wvrG>gmkA|bkU|5Jbbt|H|5BpuMr3zso7pn^{c$am>~%L00x3Pg3{TUS-bA| z9JxFCVLpSShNFJU0dXTBACjMxDpud-7|1^!ExkRxq&q~y0U8BKHA;vyLHKuPJt)Rt zpbL-uFuN{His`1LH`TznDzQReJJhv^R55?l2vpb}%8TT9jzqQYFokgN{x4TWF)(AX z9`7jaICn{ReJ&rGAL>Cj{#CvJjHaDH$8Xxt>J=_ETm>0>L9t@hTw=uS7&_<5Kzf&^ zU-9O=vslP@dh8-3I zRt>m#M&O-8(l*Fdb2OO=XjStRE1jil;XsoVPX&1l-648isA)~>UP=)(n3v{Z$@|i) z+j!{#uZKahqh?%2-F~_uhz(!@IQN6KhoJ4)1p8XtR?sRk#!-^KtGzzEl+5bM-Va|y zck|hj0dWn418g_+zvB)!vfIlq$>`IWpCe%xc>}W<6-1%=_ha*hI(TRIKIIN7ds0`^ z_SL%)g{}_XL3tUR&hG{Or*e)-;Eq@RCn*~M0RrOqUn^$`S4$Cqjg1k&*!sUJ07`NS zAWUf4)Qy4RG{k;nxx9VDBSTU9;f9jo_=Nbfyvf_0XldJWZ8G5k(?J4#1g1Vwj{AGS zHc7p!ZYMqGPmh=1pg^M;A(bH_5IhmO022Y(W)eszGg@3GH2;_FJu(wY*C4@*RE7i1 z5jc)#{c=8j=-uR7Sbhu@WFBp?&@9F$fZ)0zKz7sQ&{+Q0x1q}UJ>KtPEUwX_+pYY5(0qIKz&S(CoRAoe{zi^JExHH z2DM1|9ReY~OtXMC47*h^UrPizHkr%8FHjY2mu0y2@w`?RK{*oBMa6h51LB8ax)e>84wq4X@S44v%HYbqZ@V?<1-YwN5kzQvtaqe{L*Js?!&jen`x6eS z*`(BRA5T;zp{&-1nd?^QaTZh5#thZ|8mZ9nVC-4QhbI>B08uD_g&=l?=Y}XucMuO* zL#e7n_=5Sc%~604P3KFzl~%Aci}|u0f@RGYDocY661PnJLgc;e6?oa}z^@2fH*eN$a?PO;&>O-5^o2pVf{JY@94Q{ofOn=hh zETRIc#r>}8(b-r!nX%ITdv^;9X4?Ygvyd*PQhBxgPx@GBgxj9swh%rzP8@D~`Fc6e zTAwjwmc`l~t_>hdyQAKO`ia4n9r7!fP-KH`BbPQk68myiUgAKN!?+*I?e7*f8;a0g z3%&UKug&+rl%ZSURc=QLs>Da>a3Tddycn5)^%}ji)KW@@4i?n=PaLaklunA2?3f~N z-Ah1POd85qLvOQCENYcE~@87!9>SJEC;Qqmm4GIW|@BbdX{{m0dTLV=B?JxW~ z5kL!HOsJT;HaMH*Ei6& zd`nLgw2{SKcBA)9P6p4b@2&lh*Yju|kc|hq_?;52GdXws`GBQQwL1sfJ87(f+z^vJ z$|s9lqvICyd<@TrgT~|$tJczyGpZ*onZxW5Gfd{A7|82$XJTKaKEY4}#%P)&ugMu= z@hz0Q+(*D+1!RW~oJ~Rj#bpH{8nrH}o!o-~!Ow#zIbG)!%|giOgxWiC_G^h@`nb2> zdacJUPc6-r?Y%CT*ltCr+nJ}GA*9ZN>$OeQ3a*Ixh?2ZV5`ZydRl1c%bzL9YS0d$f zWEC^IS|jm@@s`rFPJKQ3r*h3Df+hYn60IS>{d~&=dp{MGam&M-k*q_DCauJtq4r3X z(wA(@%mgi=K$ML6Z=M4tiphwx-Z@Kl?2W-%KZ0ID!C4_;GJF3d^AuI6%J_XK`e>7L zr8ew%JQ{iqyA5?lop__@IIS0pV{G`lsKo3IXl8g=t2Ny4TV zfm)0bg!vBn5E700SaQd~@>ij*gUhp*x(lJ~FJf`Qf>_O2$MzL6x6*LE&pRVPJf73jY*73u|aX>eXxAuP=+WnbvF7 z9imZc>{j-@wS0v(FUt3FKBt2KxLa=?Fi4V&MYtqPt=Sqi)qKcXL*7RHl8cJ(_4Ak^ zN#X9 ziFzwW%F9T_;DDr0OdD|TzW{uIvY!sBox@p+_RdzSSmkyoL<&TUQt^Gkc*Vtdzo%EW zga!R>35PqFxkKv9=~>HdAEgoqw32+cOuOt8ANO@3DwDQz1vH5nrng~5+L@-gclb8~ z$umy$&px+DGu6`kJIcMQ@0y4aRZ49Ujarx#_4Z{2pQh{67j6d*33n)c-y4qJ2n`(e z-#uK&T8B`}od85nI4rw8`rCf=M7~`p5UFU;dHN7&7)NXo$wS}9G1k&dA%%JAHxXe8 zWr)o7w8J`FAb7+ZlaVFq%qBl%ISij}Z{2GUBho7k{NK-J1SJ(&16HlBq z3^f?V&GRi9$yjBZ+2iKV59c&H&m**6N*lX?r=7D}&~qn^@c*}d$gDxg{G5OOa0uZ4 zi4c(kSlW?FDLUDEc>dQ0ldPwJs)Q7}yJ)A?Nn4Wt8>A4*f@&i24J$fgCDEojSy5TQ zZp@9VLZ-FLL;&dv`69*3d`X6FUKC`0NC(9~*>T1Vl@c1-%lTx=Wrl_2c71Wz-|q_~ zf4?-)En9{p;*psgt;Z|d<-0sUieZ+8F{hwukK50X zQ)szfB$t%bcuW=MIOO1Az^J2gmxeylB2Wm1eU(#WfYr&UOk?l+KAwn3695af!sasS~#S>PGtvG7jc3h=2v ze^p$EG+7^os$oYQmSf2twt&ly3lITGj|^y5xW2JPZ2gW{%bTC=y)s4|z5*L5bj1xy z;CzaV9|TJN^FN74NJD`E{Ig`m0Rm$DkBI;8VztUM-rpaYh1FolXFTAkFs7zzy67Vs$+3 z;dg$>5qA%I?0Fn%?3@pH-so?)XC`?(+$d&yN1I4^ab1ltP~<_*PE7^=;O*^y%5Q}T z;m6)PaNOdZ?t>vxcybQU#@=1w`*~-E5m3GXp#6p@ULWp^!C#poK0TTGKmk8sh<8_* zvwjmzU7j!br~-o`@~jV*Bm}GnLXg*dQyTJ*cTk9v$N z{GaHEf9U%UVR9Aka3KAncJJ@J!TlWyL)hMn1Ixf7`Lc@kcX~i7DbN;*!j7L7rS zzr@piPvXQvZ0YUulVC1wbv4`3okU?HFWQC<_NQ;wxetK?^IhoMy0Aedk3DC$6ET+c zh1v3nha1dY9*C2eq^H4TYg`{g-sEGzv~NyPZd;VEQyW^te7Xie>ys4QN4vY8&C_X1 z#Jf#&1M)DoD#hUSb+Xu-774j7U`$Mc%!0$AyDZbC#*k^DqG8WYto-IsmOIZDk}t45 zYgX}$nYJ#E`1Mr3_SKa1Hs!3U&1NV@T~zFBVAx(ip297IMTW9!I&&1Rx3wAN9SU=T zC)=@@pUVX;y~@-$4(H?hNDUNM3u%IcItZX~h?3?aK>*Ca+jfs3Bw+4RuKe?xM~GEY z7t8oE{OL-4-=qSGAn$T*`{o#FMI9#yk)B<2nWR-tBe{Snt33{8Geh{ zh#|@-Fh)*JwIV3FHWvwTNv$q8fHn%Wh%6IVJ>xq1Qk<-VlRKKMak5YY%UBd-9nr^x zW%QMVc?s?o4R7AWApDQlIsdZXN%C#jOeE)}JVDxmeSjflogQO6t46g{4;1WBEn+c(mY0 zT<}kuh&Xy}ib~Z?o-J~s^?0@6A3c%l?c&SQkA5ajO?HpWnnjbBnv{;M(kQZR$SqtV z@tT5(6A-V8GEsAoYvR;!o6ch1a&8XXmn+yaabDo+0-LckM^3j(=a=p+lnq3|gEZ}G zj~g@lt2Q8KseVCgRCqwvs^6P`iS-+(eZiZf@zxw*?JRk`@ywK;?X3%VoE%d4;pYxJ zQ^Q>;&xgcE`X6|LGnB6dl}BRAqC4VuzFQ%Bsp*blt{y_5e|p#p?35e;$>{2MRG^jH zT(b)ASGu~;VVSE{)xgrOnNru9jCF*F=x1MvzCFvq=&Rl{eCZ7P-z7%=Js<;TsPX`> ztMq`ctD0+28OHHYDX0$62*#Y&&Bzc(7o&X$b5tCbxMxb_siRa|?nKW}yHCfMvj#iK z6QM>*=eLSf9>P>xn=6Ci`2Z^|Az49%y8xzJGfN~W+klkDU1yRb`+KEyz-Cm6Z{((q zrrprdFqxww9r}S1NkZ+9^Q71%fCo zdFy3`i9uNkT`~#L@sE}bcGub3%T~_d%d{$^FLUuwxn&-tFUy#2joXxj-i(=9sRJYD zOo<^ZjA2(DmlMblX~~U}cHrx4R+P|z71(1zPctHGc(07mw%3 ztDZ`%STW1Q?Q>KV(cCP>2$n^hKbf{;fZ%`V(;ZBR?XHUHhMu)WzEF8Cu1QznJ=y9E zb+vpWwFFUa?8Gri0E#Mny|0nibiXP2VU7_Z=ERM$Y*=ec=7XR$!z?x9=$cu`B7!Cx z(BqqE>SM~GY$UqGrs-CH=ftOMs>BaFJu*WVkuzvA2FgS~dn7!!2d_)#lTIh9Bm6GonilaD?Gp4FrVLS1T%z3~EToH~p!$D7~prkIoBaA1f zruDU>1>AQ)frSfF0OJ%PosG#D3P%cB(t`kqk%;#AijeM(RUU_I*k0o^y`3x9^AL+@ zaSpu(+KDJ2(0yTzOUTNLR@i<^LCelSa0$-tWD%v3ko}|2H>kAoQ!T-8d0atGO$YHv z+i@QIuEiAxlpa$+<%!y<)*bSQ+Z9d&V3VXUV>dWp?Fvfj8>FmLDHId%@D0Z1R@ahy z%ikwql``NRo#n&dvOhUU(B)xFEmsh8As93Deq zKU;O0l3fktgfq^{!>QT&nvUmM`Q zBGLHSK0ST>yjt7iP<0fJkYBew;?Qmdd&_$%ajvBruT{82-4xS%X9qk|MGd3GAefB3 z*N4B;&&fvU9pQ~u+;jvgQOgTluYq)*R5*TnePr+fy#k%slpiL6ojlmr;*zQfIw+1H#8X|UxM zeLV4=9D=j%iLuU)j(dHuTMkdEj_a2QKVh4etx^?qM=(aDz4Suu#34%3U6D$)B^Ez6 z;1Udlg%<|(3WZu-%TLzPK+NsoiISvj94nX0=(!FZZ8lBO;nqV_s4`)ohD16s(Fd7@ zRM!&P%D2*%EEr^-2t}2S7FH~EN@meC%92kg(NZ%TqC-P)$($(WGF6aX#f0?hi`KI| z^!bUNEU;E53Ctzd7ls~Dl{S65z81FI97DJzaz7-*JRgxfWAQ5+OhO2RsD&~1?zo~< zmGf@}matlDn^iUE2p5U>F8yh7TJdr$!B1V94yD%Q$vuhE|Dzf*5gi z4#8X@(>T^>hWHjrQJ*NIEJal;n7BEmaVhU^X?Mn|6Yant7vfFDFNH3nI2<@dl-DnZ@gf`{b=}FCpY% zK#ggy@y~}IlR+IwAGw!!v`(4ah-3j0)%E3a@9W>}Vh%+B@G=A-Al`rED$D;~uA17p z8Ug+_twzh=M|C;n@6M~)Ne|pBSrRlbIamZ?{4OwAFhXGB-JoJ3P!duR4X25|p$RkU z38cVPYgeu2)(XLL>n6Ak7?pU1SOa4|p>4}$T&K2HgSs}&H{hD#veUNh#;xs&>sF3D z$>i*UpyPJSdG__6m+Li~C(q}VK_M4nj!?b50U?Zy_aZcK5WF2Y?%p9dY?RGMWK;=n z)TP)JchymN6qP%7$x(Tf3Qysjv*s|1ySLm9It|?A}qCIt$Lj5x6fL#JUHE)b+ZKd*AMvMS^;Oy#;64VVK?0zURo_ z@QPm^oRfoD+H%o4lXkh_~(cGGCFeKP|DlXKyvJ?itTr zAl+g9=5n`P_XKZzi2i%~adz5o3LHPdh+A(AUmTO)T7!SWxsqq z_hQ#@geM4xnB1FoMMfVn@zydI5IGHkDxvx1=qy2q6=%ynt}KyGi%(Zid`cOpOQS8t z*g++0ZvPe!(G&_V6ssv@z-eSQpyt$rw=B@>wiznHcD%|tl>3xx7}polu-fOxE38|IM`=syzFT;y3PPe zTN7>bqUdQ1GbxE}V;{)+(_4&Lqo>V^uC~_m-xE0{ge7^rSw?e8Z_ONz_NQ9R9U4QBfwDA^%b#gV8}PdPHq^vc0RuMsRuqUab;Ff@sP<;;WRE(@uIQMF72_vEZPPJ z3MbW4>tJJnC7XjLJwdC#%Z@3QktaNEY;6#SdxUCGFNPu`@o!y#vKSO36kVYfVzIiMt>`# zK_lYe7#TmSB^V|?M(wG~FC^H6pl|@1(1r(S#Gt(^S?xmr9I<75s3qy7KADtB zMvatdMv?8oTq@wDU&~b@DZ|`;Vzk;!KBuI_XK95XVdZ_Mt7)d)>VR#=2udh^%d1A; zZBnCZjP#gv+xY%DWfWLE%j9$^;KuL z)z_xgOS;{<=wWt-*wEAr@{s+99Zi4Vz{CLL4xlbEvI`afHgM%1%NJ6oa z@&(ZrG`2$ZNN%ON2nZ^(rfX-9_G}0rN~Mg{3oreSqDVk6oUvQ!umRmJVvv>54(AJnX6A0Lzug<6UkztClA6O5=n?Xjx# z=xY-SQw}v=6E+ag_nFpLrmmu&~GvkUu&>0~E)uZx@jw_UF;EKu=7j{a>R(1)Z7jo#y&(31X^orRLr8LPD$O!pd zs2LWjAD;qb4XCC!f3DRNS#osOH?&>n%Y+MD6K!qL-EM~y&f}bwH3jN_6tzW(*-!bLgB$x+r0Ez~m9KDQzK>Mb z$@_z@31=Sswg!@qhFp4F9wn+&5I*NZc*evXEN<#N!PMPQne$Su!#{KMfCb@`uj83J ze29f@HpL)iz~q9x-k>s%yU5sHKD=vof971S#ZNokp#LMnb4>0h0r|)izAN;#jOS-A zu0%vbZ6t=Tu8MotWh0kUT@k|Ssoqd&s^=%yMx-B_%xJS?FE+!k zZdS)!YWl&mYO(wYi{BnwZJXcR((&6aS=-M;<7Nlav&&=*3UT3#cy-(cS^T48pAJ1}9oal}}{8Cww* z5A0KEc_UUGumDdUy9D<=eoug6l0gnnJ^=1Jc}aJY4N&bT zC5E~lE)PIGHFe`5(aL;u@5k&Z7mt}rq)St{SnU%jlFincMYs=1YVOXX8`HO$9Xm$@F`T@!fA=+gvLd5+?i?A}YUlkF?A zjy&1O{VVNK1T=2r?W?1Kux0-bney=JjiKV*Zdwi)n6${u!ln*u!w;`vGoKUjCz?7n#$1F`(3f z(KcThs-Xs&N1hw|n(|s7_Gh(VoNMpq6cqPd*xSBi2I?l+iQW!0t561_d5zddvc)(3ez#c zT1tGY;7K~j>k&9dEW}?fhPR#Wy;3DZk#X1`-rjiNS#nE#XEmNhO-^jR_#ija`6roa z@hCjfYto&DOjeARh!^eKA=cWB7?9iL>!3BY%bes4`qJ|k?K%b)+fvJPMmoQ+*?t6X zB-Ham?np8>_#&?s8zh;U;SuDhn3aPEp~~v+HCCgBaqVt1q{DOxoM!wAo&a=Su7J2r zCz=TC;Kf@`;jpzJiF?is=CGTfIE3qvMalrP=&(^ru?Qw$m6(WhGg;xD{XyI!IOmx0 zJDg(+rqcYyb}$ZXm4@N+K8hF_$22DRSIotR&GZ01ak3X|HBJlFL!}~wI2<-kt0f(I zJyC?`MV>R6H}i?(qM>!U70$H`k=NhlpLeE>3lXDt=vQPkY`7!eq7_5iVc!{y-NHV8 zusLm)CZ7XNwt35P?e#aRU@FJ4ir9F5VcfG7v(E3hvqpil2_w|ERy^dfo-;Z0N*7x} znND=Yx04lPReZL(37Z{+s|{b(+_e)DlC?{&K>f<6c4*hC^o+kQ}zAG7O;o3G}@cL@1Lt;Pjj2hbI_?XuY#R??}#69eJzTvcwnvli(%HhDkpzvPdO9x%g<<%lMc(zkt@vfMbJ53V3}y0 zBXpY!75r!hXDsD%k7eZ$rI3MzU9s`ir~r8YrceXRcYWwNq2YxIO|}W9JurlkxjUnL z=5Fk)nnnH4+C`FHEl%^(@B8n+`5)3FJA>#!|H*m5fq(@6gS^+-8DMTIY6-BhH`j0i zI5_;PV7ru9A}KjU3NKpf_iCDz0fCn!VgER#h_`970P z&BPqfs_km`TVXkPFq~RZC)9~3?eY&>c?n$xqpU{Jn)~KF2QyS~7h!EwG5)0dMX3@R zsoh|etM6{qHbW07a_?&fn$XegXyM}h0ad826wO5speT8`a^f&j|3bacjRK~JG3UZK z0Ls^$J;wCR{`XWl6MM)`j0=Axjv9lBAq(lMX=%(O&m{Zvx5yAvm&U8Nb#Hl*Bj1l; z2(sa@tmbM0smZH{>_FwH65V_xLQjtj76;CFc;fAkbGPrbasgOjZY6?E##Ech1sR@_ z#;<5)U9+*Wd4b`us7q(%Ry>%leey`9*QY}?qsGh$LNgqjeK1ubE7g@@)K+riz zn5`xRINR{r&ZsnouPl%1UY9UO0)~vvGr0BeBF&jDyo29{D?zDbden5rh7KRzTV7y( zmf#!3rSVR&X|DS0xP#-{A+%g0%udH&Wsn#1Oo(yF#V%@zMv5v$~Xt|_A&n=o4+fh9||0zoNK%>SUj9sJpMYnPir4H z*w=~d81^5w{lU4p+hqyl78TBV;K3wHrQr;~E6#Yz`+xzDCRP~Q9@4=i>4bU1wohV{ z=(=2!%8b>MloU6lq;ANXfysD5*qJUj81OEJH`(|+8in4@l54&FHya$$9;`4P2oMm= ze>7N5&fe+2CQLa09|pLn?RI*q^beATLt&sPeXXyGmAI)sE?yt$3~>WveM=F8l`{@}Iq)-^8%j zW5+^iqspI2hVnAzKtVm|p~O3I9*IzqTl{|SR#BM^Zo_AuwBbX>l&c%ui~AzS;l9Y! zrxBQZOXAdQO)@a4vBB}&9M>VX$o3T2L$w~HEf*a#ilIM;0lJGF>^9XKlzq%fO-d4j z;;2>Rwd?J%Y*`o;?kr*g#W(fskodbQ#AahFE~rrwV-(}PibpZ8LWUOuE=7!3PviD@ zIta*4t0m*=I+q-n`tr^~BTWb%XFPc5i*OtlVIr!O$dxpxT)o6C8qf69PpDIZ2Fc)j zmLD_10$5(QQwjco)jCI);mdEpD;9ndC)SZv3zkR_BRW%MSh7V9C}k=$ESx+5NvNEX zTj@ujb?@W%V+P8E3~L{e&~H&c9h`Mg%)b${$ZXN>V>q`=);@ysZ{dme(CCNG+SSbD z*=UO^#L}wtam=ZdIx_n5>l2(Q6NO?Wl3)MUTlPyZv_$A1=4Afa|3&|=nEU_fT2$3h zSrkP3VGju&0n$b@RTQn!)Fz?>*LT5e*)fdd-`jJ}yh=`Cojd|LtGj1lBq3b(;oU+EJ zfJ)&_ppxz4-@68fJYcvk&ynP!oY2|{&T5(kL(TD!enb0l+Lw3df>41@SHi-ZC|O!+ zAV>spbS($PU|Ya^0cy351*fL);y_~%IxS=M_b$6debC7V=iQ64sqM*Gbb+E0Xy(V| zNckqc!ZUEQNvTVurnyBn4-WkNqi-(haS3;gG0AFJp~B^y+!DxE424$aMED8|(_ThD zOffxf(-Q?Fh^sqU3-Q6Pd_QnZE6?J%gjU&1p{?57f$|mpA_vjT0LMb|_debMu|zyF z)Cn@(m2?fpbqSAciS+UuLyI>O@v2cupZ>cDm~U`4aZ7;TK)7dgqGury#q7XGymV)z zHFr#qWh2#H*$`}Hveh-3je}*AIsP94rZ>T?J)%7bc0P!6`7650F$OxAp^>9S@# zfq(N(r9JcL>_P(p^`req-l_ja^k0*ApnY)Fu>Srb{WN3AD3;2^*O^c%ckQCuZnfwK z3rJ+OwGx(5(QXx-G;vRq<>65=GhZzIt=fTx2&RfKTm%ji4kO7f_yvrge-NQPtkVa2 z57aFN{KwvmV}0A^vq;YGGxpYN_j`x;ePb{VC_HMtg%j1=!y_#cp*u?>ji#MAnno?y z0sXcP;gGM}vran8TD2STR^tvBoIrK{x3${Rp@^&-UR|yE8ay?BbllQ@QF}sImg-it z4(2@*`8(%iXNpFi;++(_^F7s$k9NO4`lwM};HK)-;B|LLP}n!`R>dAYI;=xYV3(Tc zJ=V@v(Owg^wj(-Xp7GeJ+E&!3>Q)@X-3#zeY~xM` zr$=-cL&Y0&Z{Y!)PfCiHZa*q@Z)hFOTWBB!x{r$BrE4RWaf@9U?O=&*n=OuAScy5a zxOhI3aeJwqE$deF`P!+AJ4`qm$TMDS&b`a#X1R_QN%O^dkIs^Yf;zbHARLm#&3Y-~ zrK3z6ADzzK6X@5YU@=7 ztvNr)$G}K`nW65}l8g25l#M;ZZDKuxXix;SHkVw>6|__h=+~C29k`Nr=_tjj zw$~qkEu)*#n6Tx-Itpj$P)p9p@7xw%1Ve_y2rZ<;YT|yHYnu%R*I78?KIpkL7re>Y z7D>x|kRk4EGr9rU3G0AVWoC#6B_e}ARA>01DB9Prhq&S8GTg1^Yh)mYAMy%8+ zP-$GuA~Q4c6K>{;gxGZC(zgyaM)n4pOf^Zt3`yFC`J9(ht$sQC2%L5slF+z1q#Kyz zm2WV4Cdc*uU?pQ)BFIpx6pN(d%SlosNg01!#+d_#aHjVUrpn{NEe{l7VO=&zP4@Kw(aiSwr$(CZQHhO+jjS!|IVB{F>{{g%v{!yt8`$<4ZBmQbMkX0iSYB^9F># zzi5xPYWdEXyLu16QMgxz;~$zs{T3Rcf1rlz8)b&hUAf2cEjnm>&k5Z-@__T}hr#*{ zKLeBFwmzGozul}J$z%D(^eZ^zmXKteiCQ)yL#|qq!DeH38SO4UF!@#;+H-&B{!JjK zso}K59O-Ay(dGRNPkPbl=V$$f`A28=WTiOdcV8H)e*YKj-_kvmp7MRCSdEZ*p_GbM zp;#~rVaOn15h%NkXmEtyvQmsPmAi1Jf`fnN-ho$yBU*88`O*f=Cfr zCIwERrp%fMOm0C{Ezb)oqcDJZgeIUQ%*W9~32k$70Tm`IX|le9l#b#OPItS78s);& z7Kynq#V(DEH-!q_^IH&0E@05C8k?p2B{s<}A;DbJ1x?|`M6=#BF>DuFuU871m4jQW zVf3T>k|NGY3W}@_Su9ktWOx6Na;@xr7K)Ts*zF0AzH6?W+m2m~DG8WLSDKlMsN4nN z0yFkPYARprfvI;fYeJPxH`0UP<;UD%O=qhwhD*jvk_(KXam*=DB86GDSu3TGov@u` z*rVeb?bT_1JX)nKhsiY|VZnB^JXq7BY3D!mhpvPy%k!sf?3K8aCN}>Q*kyvOPg|Dk zxSJA6Q)s_wrqcTlfDGm4mQJH}mK7X!jaA9#)V3(uqHy3t22NyK8ll&j4L5!jpdVra zzj=M_w4tjj!_KXB;jo`KW;dOG1cjq2g4XZpqK!|poG35ZQ#VCuRW#-1khM*ufUK zQro=l&tZhdRRpV1d2CB;AsJh&LZN1?Af_nC`tm0>l9xXaXE_Uu-)uqb8mGC4dLD+j zup#Wy=sZUxnGnm#{5J;Hrci+f2g zQR^iR5ltIe7-x6c2Sx4}BRdknh=VK4Xw<(YIlb}kEJl08PLrLiRaod4aCu%yx^usTW_-*4PuahXZ zY2bJ%AnsC`?rOF}PmU0JspyIU?S*otB2mx7IvJ=@C-oY1Zjp2y+SMuOQM8Z938`t3 z1|M<_;(BDZ@m|9XC{bDee+_w0LQ2go2)b13a$-0%ww^pwCEWhdw~h zR=|?y2LIX&s5K_3qa*9K^etMb2GtlM{zxdP*#XXo!Gfqx6btl$f=KR6aQYEtf<CF&(uF#1(Rmh|?*M;fNRsgGZ$*>lC92&Qvqq}kQ zxIGxLM*_5K5r}VQ$A(SYNv3s&v@rGa+#m3I@FcZG+5qWx1d(OZ% z(qWt(HWnw%Hr$~~ooQL=_*p6Q2`$vI6{_1tQ?(a`$Mr+@K0drpwLqoir7A)78XVQ`#o2TH_kakrYH35~pNZo4hvLl{YQ# z60jN>!Yx2YvABPQs?-JP8rgHUf1pAkSA3M((8Ogar!tEUf;mOP6lsO6;8rIop%kBJ zNGXK?1pnr-17n|5apG8clcbfIVHNa-!>GH%cO{E|VWp}p6GFrzPu&T`rkXCbWvzG= zK|r_EGUWnkl_mPKW{}zZW3$ZAc2J}qj&cLGS2;TNmf(oqbNPB09+biZd~JDqBnoHt z!&f*##I}mgP#2PpdI4cwp}!$$vj<28q!g8!zDRxLA#XYrna4O26%`F#&4CY85&d5e zC?A~%*UbaW648)FWsk9zmcTAe+Dg?5Bz3!O8@*l##=;QnKzWOZCcvHCmgHo zBCiWAy#|tI(#+QsDP4xAX*cmEzI_hEm{t`Z<+|i;RHz|(H>3)PNHNX9ei*$fiy|3; zB>L)UuhdUPAwNT_QCUgzK7;k$oU*8kW2)!R4$lVP8j26Lf8JV7E!WVPPeI+a2rUd?UpGBu=Osq}mZxNb=IeOh4z5=AM*Jd!0WDj+I$Jk(L&67E1bp98!q|kz~H$l^lKx9 zXGSOG8Xx}}AM8?F3NemgDc%FgjNq-LZU3YzBtGwM#T~H#XX(|4lii=hF$TT2SHhYO z-_ori{$)@<{Ik+3aF?Jo1;_^pBc?8j4BKlnFNSGPwm%c^0!)1I(Fn%`@E!uizK_VI zO1@t0^lgK>Y;tg8yxJ7cH&yHN=IqAQn zHB<}GAPpoCP&o4ch~ayvIGULJpNRc`fpv@e*I$(})PL~TjSL+GbcVqqMzD(}lI!MJ zvc;-U`E+0`LIN@}UK>6AtW!N(UU$%?H9jSA&k4<~7Q)stvex547%ZlO5&#=5o24+1 z=agm({-5T&U!&a=?vz#n16EJ&;-G6q%62uadY?k zO)`9ELw_Pnx{Yyr`;Vjeyd@8{yfYvW?icGAKB$uFKJHy2RNdnz*wek2!t5kf4!30R z4oMN1Kj4$@nC=LY?ifG#p71F95$=WY_$H0RCyZp^8-DRW?%NTn5oLixUP=wPD-WE@8-h>ae$0-CzX0fRP%L7Gl{V_>YIdT19({OG6{ub-K9#r) z&+W88`Q;g&lQyLvN~;h7*}(<((;&4oLQ&8{unr7h`-v}E<|8EGMgl?&LFW+^Se zU^ZWHW%5qX;R3s3&cbeN(A#L{WJU#)Mg^Egglih+n;PZ9B{4GCv3KIM%u&qgNx>6cbz8CTB}u?vK`}v z)(c5>9@>InIN_%4cB|lzT5M>$_d)R?8|^<$E}r{1V0e%;adU{a_X}sFrjn zZKo2+GI~QY*f2NxLEw&5PJ;L)`A)E(y54Y4sbG~ssA~9WsSLKULK~S8PUa{_@HNQl zOzs6sF70vOW(S7C5lkZWN7LC54=pg`tc-f1O|+ahz4g&}8`*PKnu{R-v~RQ*n3~>X zaDOCbg4z-)(X_Hqs)-hK?7k#e)&ojX5wIKGF;1~pQxK&>X38A6U*Wz5ER40LKH9SA zN_&#hM|7asLw5hpzcG***IadmKy(zGp{Q+aReKzAlH(HueM%R%Q6*X%2-W zE(PWrfthF!)(kJDdWbhFcTCBE8+nY`7hQWX~3PQ z(g5{)MW8xk!9FWlnS&UCeMd&kzL~r3z+A>Ra2-stE{g$bwu!*pK^nAg2s_GmW?0{V z9qM5A`I zO^FRmC5@&Xd|;{50irSG{Ix4z4{&MZ(@VfK@8jk?4k9}}tcY4eI*q9wbFxCf^}Xq2 z$CUI1$%7B8`bed~DYkJh?18)Rz7mtQ5FvnjCcq|hck4{y1Xe}yN97u}lpN7ik>8=r z(XSL}8!ug*ls?p2EL+pyA$stl%jzekLYmeoMR!EuEdxZGmUoiw&a{*r(N&keV1l6! zfvCBhwpL66y$1$(=BZ9dT{8j3|HApa_4d?jBH1;oV@rh?>!@sn2$;SJuQnHu;p}{d zKQD9hlB}OQ@GA5%PReJ2M+En^lEQZ4cUA$Yg^ahq=i*?K35(Ipj z*X!(VMi-Zd`%F=pl}Z6Mjk@2C{@^>UQMgxrcBTSO>@r1LP!xZnc}&Xr+xeilwNZw7 zD_BU6ixA_MuxF7?RNNdL*yxoSG)-!9tGvgbCvDe0kX%Y96wEsEJnpjufB6c}oEzSz z%~e)tm4+8XZE91udmWbr&JP%pJz&T(H7@GJRnL*g(~bj8oz+rU+sO4)Q*+TL^|`Jo zqu;2R z2M>`@CdC_c@PtadaabQ2RwszdljIGmaKu#jg!69Z7TG_Yo?Cu+a^s0HQt9`Dc|sXK zi1ZSQIEdrAG{BW9N*Z{g%yN@`fRDwWCw$VOrK>mRL6S~@x#i#FPm1FoH( zF5L7SO;fYYz;|DM!$Wl0_wY=z%yNJ~x4B)7+V2VNQfd>SE92!AL z0pegB$io=1&<#ec9CXfdpbs3m2#Gl&aC(qJW9dgn9a6ZlUGy`DN62lCUob z2(IGD590~#?}ujPG0!8!K@sKtK|>&k{{gt9!y~;@e=~;WQEPI*?4}vq(((}bizIKJ zb96SgtIgJQSc!fp_dx;W5Hc1ntm)>S++w6#NM6}h~m zXNcI@%lJ8!+u(sGm2Ep&hN4Rn_bp-W+!ZEK6*t_J{Tt)8t&RnFkt}g?jxD#Ssijfq z$XE9@huh(2JEfBaxr>vC8?0bjy6SCkLS45;P%i8K`jQz1WZ#kE;!n(>41S(zIdv84 zM2A?acxe*P8CL5G_kHkrCR}879|S`SC%}&h{CO?G%&nqE2-rmNFs&a#7IL-DaD%K=!ep8&%DIQPQevh z@}?cBMH-ATnWkByU?)CX>U518nAg#yCzA7q+HPhjif2pb^sw<8$kTof&uco0<~a@( zp4dcr+Gb#+IUb`xJxcCmPo?fT$yl<|r!DGw1c<{?n=I*CRXL07Fsf(8(p_$Mkf=N@ z<=QTCY%1iA8U96gNn~M1@0#~bqZ_9XP6phHfZ2CvW6zvY%mSzz+ZooVZzxQZz8$}o zh^EgQf0_+C*su!BM$oii5d=rbtVh^3*~9T!@yI?Cm^`@`VoaO?3o|CpFtnMij`ASr z@$_kG5pF3AGdvL%m6F?vhi+2W#M)jBar;XmF-Wv}KrJ&(`ZKg?2UfLRu>V9U-(d$3 zD}io+E1TyK=lRAgZ(y8}`g+Slf6h}!txB|IZi9^u)A2+i$Liz8Bjb8^YVnj4Z?XHi8@N1u7Xq#`?yb#4G_)j#=p0UbDLtOI*8g6rKy~rnw?FPHqYVWY! z6$3Xr*>=srEqm27K0v|1j_sP;1HVpxhOry;=7z{RQV|)pvw{gP@sUI%&+! zs!k8Dpx5)U16CPoj+Ah;ssfemvof0y5-OfohG(plK&3XYKG5Z&ZsCi*sDgV+mYQ zj*xmve6Z2EN8OvrHFy=^{bI|&`sHH`8OF~(z_}HXS*2(7dI&*UeW;}2v397$S}i0- zKoVY<%pi<~eOg35-uwSPuAB$``Tw#d>j3?qjFVAzv#>Q2cd_{2N}m+vDJ6g)3U3Z9 z6qK+(B$XkHP`@N3CSHO%!K84F1`=9>M!O@EMWP%WGY2!$z5I5&y=+P+gIdQu$T!8* zmQi!Oqp*@s*B9R`uTSUM*qq(opL2JdF@oE%e4!}fsBD%dhhs)^SwSq_%nx6hagPRk zX+@MG_kP3&?ZK&O=4o}@whDYsyATsh&nS zFFDafQ=lNN2AkVkjnFfPM;g5bH`9PvBu1Ge{4ZEyE!EWX!G%1?sI*3U%)#&FG@3wv zlXcmi(=HVmm+N@K2RkrM8>~RFkU-hnyT?7)VBr8o+Ascm_nC`!vNTB8Ais80ibzz{Dh=g^SQ!*jRP1#X#Zh6@xcU-9Y|K!FE#-zF-B9eg@@}+eIca11niFUn zdTDka)ffyilg)}-$uwUHbJHmY9;w7}7Vq0cmCSC*mqG$qkijifI(DBiUKk~bC5nqi zGaNw6-i?YM^|Z>8s@)yQ(50fOCVhE9m`^K4h)IT`xFOxpo z?X|zPN8kv)=%3v;%?Iy^$;b8mZ(0w-@GsIRWCg)^@~t+;Yu<*cHJk z?Z$QM7Smx&F7#GQ?WWN<+pX|Yg4joKQ=O0rJcg@O5VVaBQ*l)%Ddy-ERr1+RR%tYy z2s43kWvvgAPNc*}H$rKR1vrDdnE^$SCBdNvawD()-60z;vACr4TV+5jlnF)hW$J|J zoV^FR@K9Z1pb<8?EvARYZ(aC+&AILI6u{)?)c4ayGd7Gyjn{aegTh@SNV<)`+>Ytq z>|ar8J1dhR29;)+cF;wl-N6@AX+*ioxMpVPsNPeui}V-dby8tUi1Y`AXjiiKFm0cI z3VU9Hr;H_!rCoN?|)MpCry{m>QVy%&8q)T`t1LGz5k^y>ncAD2bM6J#9;{UY}pCA;*hqO_1uYrqC$Jd9@+O z+jHn~>0!n>H|gP-yR-Cf`m1-xT4;X%uW$F=3%lLtw6^!_7X&`IzjxSHP|~tJLU)xI zhGlU96OX_pBm&1W1%jMf5v)rw#5NUkKv_)cAq8b@s;VX)tC)#2vv{Nq<)iV!Iw*zW z2Og_jOj<7#RK19-^Nc6p*$+>nmdwL_)R+>wm}68y`8c^ElpLP&$b*B55okP zcS)gX`%YP)i|X0q6*0Y$o4 zgKC6{a?<4ANhsGY$dYPlfttI1>1484h(P^f4Hd6tiq?%9ImV?3!gP~A=Y#^emwtg3 zG4Fr&SyJR_t4`>ONoKuOzuwoBNj8W;=PDAjzfFO+C{;Ple4d5-Nb_^q6=$o`m({YV z^n;LVlvTS_xh$I7SBVL;dgM=DB4AZ+fcS27Nwr{59S3;A7#YM_s$PXqVQ*K?fE2BW z4O~`)a>-(qNjrq1n0e-F+9WnK8SiZ1xx{j*N6swr%oWY5Ya8!^ExHw;pm(gO3F}@5 z$Oh)gULv=3s`REwKEPR$;utBG&mEAw& zitE(dAsC5Kx{eRXQQ9UM(V%pdR3w-hmA2`g#=aZaTA5kw7DaTbTDDCJa24L6^M0nj z$eFikKtAt0fjX$5?*_FsE=FA<;13jY|F%|bux3i#go$zdBlg?ug)|5nuT-jlloYx@|L z+wtCqe9{F({ezPCrRV@hAVN2!CyG;X6HL`3!IPLUuJl!)Oj#YQm_ z1WxKjk@DF=IV1bC!{Xmo>>LD6X2=9*m|Hkt``Bp_o)tPd&p;VEB}iP1VWAKT0kMRn z6z#Z_U^~fT-kcTd2%v5{NG2V@U^ju;yLDEM73{E`bXw9th%NP|ba&1U8(jhw3)hnE^rHXGbDmH5nREEv8R3H?x9N$B}XRW?(3kDu2J&HOb+9wJwF4R}1 zxVD0>yJv0w%t`a+eCmUc+RF|VU=0up&Q8>q*7Y^IUltG!qW7z@>!DZKK{kg!3kwN^{%L*v_IDE`+=_=J<7$IML zH;NXtaV^XYVk-z&2*-{UI}i+Lws)k`SBEdrlMz@0>7=@XajnU&cA*)#fP44gft@+Z zG+S&`D4A?~D~TZH{I6!@zbSo!r3{By-&a3ygu%`*7c~b0!oNa)%lWL0cpKQ}_uJ}+ zni4CuwY9!w**X!)o*$5(jIzwZEy}sWW0{J|`7n%4k0>R3;SM~mKJrUye%1V7xo&6f zE>As%DzUu_6iRm~mG6=_LO_Fk9kNwOm`@f@u(JkVe(m!!A2@jDQ6T3;IM}Wj)>&r;qWt*kj)>{TG-S+v{PZAkrt%_S7`Y7(1>iea$@a${2w@LS{LkXyPBBs}K9C(uI9kS*L<#NC(FujT+%c zr4i(;9$2;1^Id*pqUW_PI3y&hEnuVSA?IciQEMw#?KSQbcYPjlc4!ZkRu124vW(^& z*T9NajuqDTrq^zF8{B*PNH-ITxwVEGMgm(-0!&SleyhBQTbsDnH;3~L9AwNQ{TZS@ zvxLxMkz4qz8%GMp;7XL2{i8&)Cj#O(Y;-{THWMXi`<`BC2Er+j@56oPcIF=&6s47@O!lfS7R9ti;8 z?W6Y5!hWm|!Cl15AQNCAt!hzw7m{#NISWq-mXJWc(-7XQ=dmZD$!-U>?$K;JLS15u zCOU!snhJAPSuZevM@%P&`K(->YF}HSv9o??H>W;5DJmlf7n!);6y2R$gkLZO2j;cK zNjTTHlx*4=@N4?Vouvl!%r|Mks~7kSE}b}fdN?TC+%p7(*8ngLsMm?!-`H0m`Oh1U zLi&`dG?j*a-P55FV9a#KH0-}VGR57BO5*waV(Y|U{V8hPZ%mBFI&*~)XIb7FR(0nD z7@ccoSb6igc_Li}*+X55wSzYbMWn`&w@3#R`WGL-_=QoPQz{6@KQ%*qASMPKdq1p4 z>Ho6K(0A%lf2XdV+B+CA6aO2|o5%^9zk$Fsatn%a)W%5Z74LSQ9)lUJ zmw;4m1>O2?W!TDwI8CpIGgmWov~X=k&Vaa!!7nF@ii1WnrUnD5M$wN&QZRyVYh!W9 z5%8ha+?fX_z5dq-U?MU%C6W_VPUK*rat{_-_xlhbnL0ncBnQ1W`h2CeoL_nAkFt`g zhDa$5E3%q{2*%JNLtf>Cmn!ehQJmzTA?%TSmX~3wrHQMXdas8Jr0Toux(XD16 zA57@_pXHff2b$qcVuK~N0sxZrYjEYo1lG>jRm`9~K~opzMeQS1 z+vX;pvphB9dMv}!@UM@1sy?^ek!sRs^DNCX@%5dfCP zOJzKWLe441Jwpeb3$$u|Ptfm~Dy+SZVo)qM7eg5$&?rux+3U33;pn~A$D~z*rR^vPxt*kp%pY9RZ_Vex233n+2nP3sNqb~?(9E{ZToC>RCukVPePl3l-gShV zrCn`cHq1uw6W5H^ir<;42*9S7ZzyV@?v46A59i3KWoQJJMEgp=pqr*Q%LNZlBx2Uy zMdY-rBu1RHXT!}OSft3T!s;u5u;TqLLXoj5&gYvZ$qAAf!88D~mWB&jpFGFpf{S%#ZQWo*`&w;jYgx|I$aG1m>rxM~C|e&KH|Z+R zv=n8~H7oD90BMIzNwsN|?1)*J3qH^lGM$RY?hw9)^KwbHg}UH7){C^xRg!Iz3v^-I z{_G8M;k1*GEG8PTw(~b+KasZ#4=x8od-FMkRC$aKGT$|lZWEhk7c4=yY!`SPUp>uR z`MhL1!P@ap$W#<-2xk#ShskvKzNqWV5;wc_(fAI{?N1}*mw&0|`{>@@ zvj|Fn)x}D@s!QkBIWE+KhUrS5>!ZkiaMd%P!Fx7jf3$bi+iE)o)TS;KBLwX-p4l2) zF+KovF6_eFUBWT(P8he&Djl0D^*p9QyNnlk&$WVg8PC1xv&J@q%p&}ZSWJkcc)3f| zYv2AR5O)k0!U@%3_XYs`kt|tn*eV%soya4H5JCJ5Xa8T5#j$6*AU?(m<%Co2Ku4&!j1q;>!lGRbhfd* zgAp>k_(EkmpA=)yqxC^1;6vDzO!u(Ov$s-jrc%sx1U2jyL^#vf}9<1qw1yqtosLJZ%< zke=aaawQPO@t5?r3K&rz5i%~P5GAfR>50T=ivE+C;NsBXZ#R>%W9+%ETr&O?T+VW_ z|CPZr2g4{Ba=f}2kqRhw3@cgDU}XCwN!XrKS6!BH|OUv(t0j!_)aDnO0EAf zczs$+zQXX*Pww;VJ%&W&J%yjVw6T1KE(stTC}U;qfEiE=Ba~QWJ**-yHhW2>z+Ccr zB?&;+Zh+|mIKb5OD*XjSMaD>91=L?bRc`$l52Kqeev~x_d3E7Eb%M;pjF4_5t5zp1 zc4&@-=`A05^6=)|HMURm@r>sVcek3B*1iZ(LpF}{$0HRFL1CVILJD(qaszM=dt~5| zTpOY%;u@siFg*|A-$9xi`S@`39iSz+SQz{1rnvkfm2pBQ2GWeQm};C;Fx*vMd~GUBw&n6%XvGkSAc6NHP;HYoRs{eK_YXWKB9hG<*_{ zn($6DrotmjUZE=J4P1+~8?a+CFW7i_`AOfo^lRB7tw4&{F%+Y#=C>`3Ke4i3r4MO^a7QS^6RN1R47VXf(lT$7SzE5k~+jY zLHps~)c{98xW7X1B$h^DMe%}j4EwTV?HnohX~pWPO^mMoPh~Hpery>IT9$t=63?SX zq^eyF%{S0j($OL4)+R}FL!y~q1NvnCbUE51n` zZI99s;v)-g*=AwezlK;{WsYQEDDfE~dB+ya@KeU}Lzwr~oS3zFwwH_Z&6B1An6LbK zHY=zS*Z3?^N9`iQ>K^93XGAvanz6cXx`7WnJ|p@) zmp)NZwBvs|@G-Z;VlVZc7652d)QFmed36tM5m+UArW@GI8`4`SqLhs8ZF@2zO7G2_ z*spBa$%p=Ak#JVA=kU%n>Y|aa%QtC;wR^G{A(?@RDowIC&R93^v2Y69&~pucmTYbd zM2&L1y-r>J@>zIDO-CWei(xt_+{GedwA6p^2+*)ZI0+J{? zy&~lG8`MV<#D;9-BYMUi39xtC)7rFpvaY%F+b~z@+Yh%|tGwpb9K9N9rvsjD-c}Mc zjeHM7T*eE;TL!4ithHQg=yrGTwzs@mUV_GbH-(!YthGIud*vmRydlL|RL?Bdbt?_> zIB<++@O0^-JTTo_i=}CFJB;y!t2LDu#XrgYAudwi^K>=u#2x}&=AG{Lg<~Q*7JD;& z<#{D`)!r6fupA*PIOGng<48oSk5Pn7(W|!TyL&$MCw9mu1EqMrpM z&T>vSL29NxZxhQ-c+wenP?@G1| zsXT~U_rjKr(#Co&JB#KfTKP9^whz-Czi!&S=m^A0iqGL+69Y7Ra8R6Xz5HleG`hs+ zFHBcg5!4~!!tS=6DFbTr-d|($KCk_bGw^EPa(A75B|99l(w%!lZ9-D~ z{?kQ#n2A3|mu!t4LH~A=-p!t=U-~7n1X@+uv!;>TU(pc!g2dFXo#)6eb7Sh*f{T{hd*U0pUE`(QZWpmLS3$jmMfg`Yqs$&nrA%SE zD|Gceo$qjAPjfuO0#>UrB7;<7Y8YxDA-{ zjPwpbe}PwYY_tg>4;@WR#Po+p(iM|kJ)B{Lo)LoSg%`P4TA!&{8$cJ;hA_|^52)$b zk?lF|bR2#oep8F?T6MBQj?)NHA`-r;=lztIn=t^3Mr>Ju+#?sX}mzt!g zcP@@5t7BPgoP>a*w!aC>nP4^9>6uta%3*VzeDOb&GX+HDQzA*XuC| zq9s2BLU|4Zzk@Ar1x7UH&ksM$4B?8h{|Ijat*19(}*=~`E|&-^dMR&ZmkL5)X_x^G}Z)_NxQUoCPE;Ar8~E| zLum)$$$j!0UZZ~q=5=Ur($~_2-?$S^Twk#op;j&@zbiJ0PES=SLv0hvq>4+#6;0iK z4*8(81UH^;(9|w@vlN{+%C$tUzK!w>Y>HaaZqz8p-W#HNe-pYlb=zbFNTUNm&4X77 zT|)gS5P-1=;NB;><)*wjhOAx~A}{%L);0_egm}jc{u>PVKeuC zbU^V3QSXs-Kp^%_-!WW=`UrvZ>gC>1a{d4H+Z{0PzBuh3!00`Y&b>!^^@iFVV6*IV z;{g2|BE07{?ML9qY|+DOEDGS)sCG%??oaz2tw_h&sf&`k?3%a5>056)u1 zoEt;w233AYTSurHV%ZM)c~Iv7x*Kxdjstm+#0jQ9)b~aW+u!0q;U6`4r-fIi!zuVY zkYL4PUPj>&N;#ltfsRv&Nv~i#P`s3yR$4p2aG^G>+DR{ZHLCRlep-&=Q0oajTIS}E z|A9HHs(aw536N`HiL42bTG?s;v!wx&Qto9>yoQopFx#)(A!c941uuV;39_rC$CG0v z7y8M|6J$k~Uf~;Kc1YH0-?Reaj+Q&4_N?I@U$e#;-|vPIeRgPiU+$()kQ;W^B&POw zM5pbS8mW79M^Nf@sZ21P(2216Fy<_tUmzV*`taZ{J)l37GcD#tkabOW#6(dkb+U&1 zx{BJGf}QzSY5RJ zKn?d9=WP9*n~|G|>!(}_)0=aX;1#UgC=sp;dM=1%rRk#WTIbxi1Qjaj&@Hp<1N!l< z(2^MDk}zuG0$LlSXpP@k$1tOIeA(!K5@-IGJ);2YKj2>R3iF@$@mJ%%e8So+z45%o z4l`E33QT(8Q)yKk+w>IPZCND0W}Z;^OW&wqNq1k$4Q>zY?zFVac=#SmKBx-U_l}jw z-m+lpN^T~+-vSIu&&@Ni*PnuZ^th*k>FD{OqBbW!eQJey^Pto@O;LIO01lV6i$LEl z<6PDoS}k1R>Su9w`RXG&L^q54HcYk}W>yL}?N-xC6m(XOn;iITboSU2ludk}$F49J zDd36S%f1O_%db6>u)G5;v?-CzHYA|XSiU7rKV+_EX^T*B4rh>JeQ`t)eSktt1w+O< z#CJL#!~rDQICXX~h5=7Lq{1C*dUVNvkoirC2c{C^=A|7hGkr+N9jSV(#-59L(6k$r zZdCffu^XrL0QK5O7pm=0)gD0)&Tqix9?dq)&3!k_9mG3?y|Hk8K_O65Sr{q$XyEWW&lq5fUrAL96$iU*KgH+id;BW z+#j{2A-B$LrrL~KXF`TK9w`-^q+#MaRCxxST1NAZQg`-~-F*n&Jz;tw?hgOf&vTjp zBju#&?r3v>Y22ZUZX1TP^~cH#f<#?(pD4G>#gvWs{ZJ@ujWF=q1@`WAG6LWBHNTX7(MNTx5h^z2|Epq3qvgQhsnx3y%TKo z1P<`=E*d~=hvA3A3O3u_WADM`w1B!WnbJAPbT7?zt!@M1hUbN=e)cfVy4@g4wWWDj zcQWe2#0tFD7SuFPxNE_g63F~&bg^$p05_6x=G&d7M6pAWC=r+lYsKD3&St{Wozrp}J>TUys1jb`#^ z)#BbA;Ft=N=}vk$*XMyB>1sa>ZnEK5XYiDREjruZX=V3}9ql%R&8=mWkKXc1cSWGu(A!n00G>J2pNx zcitPmam7$PZ{()jOc~!Cr)(NIi|;|Z>OpSonT1~`^vxZAo6##H@OyW?zuctl+@^bK zgF4mq!nlo40DUq*kD7;mMQ|Mm!SUHaEE?9r7<~JHX#1Vm{Lwvaf73wip2PS8a=aH# z5C0cP^i3}ggx|#V4yv|qrVx=gX!(useh;G&_E(76cZBKyyR^T}9`6@{ZWw=`No`i0 zGS~`r08Z**B`1@KynesdwDZpN7ro(?3H6mB)ouM5F?I*DXiV4@RK1n5ugyN5ZzoB%|qCq%TvB6yHYm^}Sbm;7aSiADnU!p49DDC8L+lA9qE^XvC zrZ$EI7~G*{IgD(hBscL{8+#eHDu3LY_&XQ#UUPbTEuE#m^6f2AUXCKau2RpP!W7rW zo9M^p7BZ-65&buu2>o>^&aAfz{Q%peJ~yfOCSCfiq5jT-=#~pQ^Ps2wKn!7(0e!Jy z2?Z*UZA%oA3SvT86DDM_Aqf|hXeG_~s?mOy6gW{T^hi~_U_ z0WMV_8%yZy+R{PIO2k>^r2}AAI65U}BcjZy(_cZ_*ptj}uXfjj8OXx0wo!$imDNk7 zD5k*>Mlp^w-0{Cw^cRHQ>#h(|?qSBanB;P8Hijc`{Os(OifiGoUDWa-%=9<5n-Fit z+*}8Gx7#z&N@M$8%^XfAy+Ua!MD~5-JG;Qb#??bt#tNj7vCgl1 zuc%}aJkEb0*uFQk;?G}DGW8I?geyR71Ewhi5W*|oG=6?84NrULqvhNc$kKI+Z_bEv zcq9H!xg%3YlW?9D*aCQaWSl*ci0&D}f^PV$8*cBz*CrxQ73-Fu9gnHvZbHUf%Ad06 znp$!_fR}knzky4=8F4DmCjK#jk5-r{Sda8n)Qct~fC0n#5 zjA+5?0B3`pSt-8tqp2|!rUMM9vrBUXl7tH!-XYf#34qwG;`(Ww<2*o*j>+S=JQ(GC z-^zDJ9UhOwPji4@A$^Cy$Nw~~6T4^1#wVpLem!FAqHUnwWAROWVMZsMt&?a*niSr& z{~xryQ?ww#mae;4%eHOXwr$(C&04l?+h#4>wr!v4bG!Gwd*7En-F+T%jEsn<%=yO` zF>^%zlPnz5be(UG=%rB5;o2h*CNv=zfBii#94@75l>+gOp_3<~*h20qs8oc9VK29Q z@*;RA@*`hJ@OZ`SXd>mQ9Z0O>K$ASl6eK6M?}ph=^9fDzrT@3Jgtmp;UBZsoE*y&P z3h!&-N_*#Qc}UI{>@aB^?D?MD`^KNWB2ae>Dh2t{hN0XMz=^ZCifR2PH&SRdvwnng zYxKhDkO)gAX@!$P?dA{*UqEU#v;j;Pgx4k2GBvb8O&1F03Mu?DUj(Hmr?t4QysxSw z>qEVv9j3@-M#%5JUt16YIv_7d0!ZNBr9-Pv)9%qj%V)t{sH8sbU6)v*2BV zOvI@O0cvKj2j)a(tIe}^r_K88>-_?t+8v>&;T>bfy%#JFjo%f3J|3s8e-do3J+j?C zHlhq-vUjIV$G*7OcIt%Rrd+cLqF(5#0$Mu`R|{x1;9amL?yu+txB4Hu5}RLj;%cu0 z&NlhPu0r1|;jHdIG=ATNBv$~-DrZyAe5AF&)v@})%c^|rSwF>%j0>9XGVov8f;I;w z8?PkjGk)tBQR3X+!d!Kw2yymU7}0Gnc}kTcZ{5=|TXTLVbBIb`27c^bl@gF#;eG68 zkALjhj3B%eeJ$LkL^**|>dRO&6?C!8y#_R(N@IVwUEy$PU1Yw+G#GL0IxPP}sC7kHzc&5zVclF#$ znK%AS1tJc;r_@T_daV7N7{>VgMfmI zEY;yzhAV2>49mMk*wp*IRaeXw%=^UU(53IEE53|p@SQg_C;##hf_$JB$;e+eY8|s?ttHedrCQ*V&et}Gd)b#uAHC<=QLy<9 zUo7j*ekcdFXO~^)tl4gZ)09N&{e^^sn*3uo3|uh6J!I!ZIBsp9!B{0F;e)&ajQu^t z_0L3fULo}jgR^Z|Q05QzXKL!kmC zbiS`WNU;FxQy4cU01`P)$vl6WNRU1*Oz7}o2qY%z;1ad#Ywsa`KOmAmv+q=XV4PdA z58Lzit(JEG3(mm$7Z)r(vM-(6iPjGQIUNw{a#ToEK65DfK&mvk3X{_Zkr%hj$^d>1 z$+;%tiZo7xnW>v$0!jkhBPZ_Q;Z@wF3wPug2b_LnpsQvg)tGC}SxNd;6SZ2x)4Zd- zm2FMYQt{EDsz6QAck$7_s%lLaHnYu2EUqbt(gsDg+*RoZ_gc39)!}Xo^A-bNC*SkU z5FjdXBFF9Z(4!#iOHLs5R4(kE9P5Uz7#QqfY$Gt()o6dRt{Ryq5qpu2%e|?PQ6|hs z{ZtlT``WrTmx%L_FSafPDpNgQ%xNqU7lTmCRLm{{%2h@940iF!)G`Ddw__))C~;X_ zjCq_vuZWAwj)BXDoziQy4AGe9-Y9Fj^FcLwaoZgt8>5TSt1q_B*a~+AAMRF!2CKLc z<+=mg%-FKixBi9)hId#BbRhKTva|Sr0vDWA!jBYf~^OD7$-nB#ARe+TUpaaU$hsmeRn?R!H;5D2$ET9o*5i9+aq2vxgV(2BI zf1(7FhU$T359JVd+WV&P+`I4zAWJB~_v=Umg4#Lmz-*c9=g060zrvnfU0FL7wTv`; z^E6&%#IhhbW7^gw1y75DlKp1O!}ct}!it6flf}pEv*$>gMRdw*LiY}f=aPnZWSoh% zkfV9l;P^s{xe}kI%;`_b(PhMhU}rJ~jq<`B)oTw26vu;*EU2@j-|AvU7|KTmMKb_O z=Y&@U6L%FepjQ+CFY}CcX)}Oum{D+x1l_Yr`WKjSzQvh#RWcy#=Be5Fop!A#1x1|Z z@;uT69~=N^`r@15V+#x?3q{zIB^_{+4M=GES(=csEHG^I95)3=4~m3=yn?qR3q{?J;BuXnPEeh8~OUu1Zp_lrdUKU87 z*t3gs4x4A@IL=Wx)w)G8mpYw$IQg{}Pn-kZV`zzkXbYIv$5(rUMdyp9gY@K4bwt;k zIigFc%pr9o8c$Q5xo4nemlpAVsuEfhux!jEb;PtzJ#{^ZX4d<=x!PNP+wSwREmS*m zZHc-makp9E!Ff?q0x8pkc^x9PQ$%qubNDkl4%*mKtbupY3EF;^B}es~fSO)1>`N+!P} z8|^YMahxi$#!4Y>@myd5A$>3|k=)lwNCO_d(Al)+lbfw0u4vr_!b)-5)5b~xwh!H2 z8@`?;?QZPf7FW;B?CTLLltcwTJvJ|hVs)@CUeHC}PvZ`$t`M>|T13kamsI&8<`MBy z&UhAq?ofML;ceG~kw0tUn|tE=#j4}g!9_$*_w5F4nP+YDBRWL$gSxOS=s2~1USx6u z+}vr*$4V`6mZIpk=Rwz)_n>dW{%eF&uFk&etr7cEy7nVq*NuLC=njp)vxv{^Q? z3ma2zcXCtv`T^pXYdksyx9s<{eDbg6z$n|YtTaFX0E@r?09^m+ zA;Cr?lL0-`k|o~1g=IaJEGaj_!1O3qc7Z$B%8MT+tWE`IF|VfXx<{!}{0a=2sh5lS zrnm>R(@(FlHZcL-ft2W?^^Mk8Iq6JIpXBH}0?_L7jn zXm%=swOnW~uSRQ{JG_b45=QTW$i6X*zabdSHH^Ml==2Pg`Nnqn29o(^ELqGmx*#@2 zX+51|v2e+ZD=C{ar*sChVt7JbhM=f-J6O0jAVC#&V|X6=7h7E2M+)oSzbe!M0{{^H zFRJiATC#sz|BoQ6RkZ%Cl#uX;Nfsl;>C+^O%x~sF{f=bCN)jbQ@DpIp2#$s0 zhvsHRH#{hQg(RcXW!u0|hRfQtA=efhW1}9WN1cTl#>XNinagw4dwJ)<-JI0%BS&bv z1u?k{3#ruN6=5=6Z=(;YO}1#$93yBho87fv8CR4p&b?g<4$#G}*n_X20p6Jv2*zo3rI8e;-@`Ty2 zh4IH8bzr0oxqUrE_pmsEAEAG|ihA%n+F&>^HUztDRa)$=p)4DMsI^W%>qbT6!Wt0h zW>k|J^fCpyzZH-QV$_k$xaAdedyO2Hl@3fN!=JR4N@$ z^6%U~O_6_}73x;@+9nvjvd@mLe6kCyQzbHqDgOB~tY@|vlEEO7XU_>q%+*CjC3!BL zUJ2G)mk?%bHj$9J738SM?c{mN@)Xc23#bW_#oEYm<0^N7WlYoTF-$RhUngZVFIQ`c zG7ZJ`EleD#H(om@K07Df-ez9MJ2P3o;D>WT2HK=X)m*$~@}S+I+;3e1mfFa|Q8z0O zdH^^1=0NVA0gyUNOLiv$ zeyU^oiS}ec?violEIDY7I$=ijv}H%$NM!P;&L3K-ks7VnJ9B5UG-7^6pQP@kR;2F z7Amr5)+rISn@=~)ubIzpGI6q-ug?W?X`RV-^sI6a{(>~b%s38jC18;jskPDIfVrRx zM#4g3?C~UA;u3#S5`Tg$@9|g8ZF)AFSLL=Ky>MGCX&)3>s;fgb=>}tLCtymIG%p+9 zh!=cPEaR2q(&(j3mN;6ryk%y7W@t$p-~7B*9=XK8**01qhfJKeA=y6*e3>p_V@om| zpyk6OJ>BgH{Rwy}0BF5hvm$lGnb*@}HHapEF}1Op1)JJ@qEt(Ui7o~?R={UXk|Z-) zHV-w-4@Fe%08h#v^)?&A7?#V+D>E>G$gW9PZbJSEKbAA;oOURTJZ=uQPD^ysq15>(LVQ4wBQ=4jlsuI+aWWNs&JSWnow_!25S{XI=HQf) zCDApS(_4#$silJ zPFR0o!O3E6i!GH#)Si@_FRBq}V9s#7&e~Xbw)wd1h;w_1VFE~(-rVf#tk3UoEip0Q z;ZuY2%`4P!7bxu|N6GPU=zzr}uP-6A6Jp<%6fHkz$guPMsc*`_HhJ8xEIBcvYSrd^ zEE=1qssLt-1|-gnvc(%PRbGZ^ff$W{W)u0nlwEKI-ZmRaEl9(Y}VPylGB#_<)|7E zGQ#0EZ6B-!X&6@7Rj|0iKL%$Kvn=4T{)!~zpe5@{SL$c233x}{co31reGsMGQt75O zIeutOMPp)gP97T@m4>mb46`%CJ0ijzk010zLz6}F>ur*2nIz1DA`(*yc9m+{s)Ew> zfrK$bsJw~GnYbErTHBw&4=|<}%Bcy3 zP>aS%+1(KZ$?D|IZO z_Bv~+3+(VQf4bS~=@45* z@KhM>22uYva9vm>?slrUzx~3(>|iPUsa*}YtRQ#v?-F{dU6Ny-p)R!kT_1JqEfR0?bOa~ zyFphl8@A@6r?{YFj`c@wAg#fvM0#1g?7jB`5TC$2xdLwYraw<{7oOmFC4*UvlS@yN z!Oq=iT-ZilZ?f3R?KM(HJbNn4svDfVgX<8QUXjbB<~E8NP$$hgRw^+pZ_dE)WjfQ^ zQk}Rp*F$31ok6m36WE>G`}lal*E~SAW~Oze7T+8hegVgN)R3;}R=(+2m)>lvzL$5S_OlTw{(A)D6^O>aWqmOE#IWfjjMpVdp-qkYMRU|;L;KcCgstRRdxuX36Riv3FxqQ=BQHTvA$tqX=$-=Z89q_?Bjg$Ej)kFOlJhH8KL8_pG2B z#c~MA{PP0IjEuGG^%(kow2~diffn>Q^fLV^*ekp!Xf4uOqX%Xs}$u??4+p-_I7BOG$O0jXI3%wgpz z3j2&T6lrEFlGAt4!bfJ0Ac5o8lV3sA?*%25?|#UeR`pUdq{dkpv9LhFGNLi#=dGae z4ul7f{4Gxl%?#f1yNo{!+@M-L*rfn5Qv{{u_wXu33O;Q`y&820jb)u2^#W9g*I!Y?8OH9PpSIT#@JJ-1J#l1eOkwq#gPzg zW!UDO+aHTcN6C{>z4XuSeflXorDBd%XG9h{B7D1pJ<^0#qBG*m=BsT>I!Bq>B+g;e$A=y*>i~)xr_xo(UyWKQ zTb$ZeQZb zzTQ^Dkq#m!-qd|2!=vS=!$9@GP{S~`E3}6@zTN`K7R47b#RoF{-`0CMO)G`-{YE6- zi0kez6z=b1-EN3ICrN*wn=*4b3T%_~zA?Wyn2xF)agoMMKKXns34SX+x2TR7V}{v+da+7L$mUUsDxQ%GEGPbeWM zvbZCOUIz$aw!v?cP_ozQBZ*6qGO;=+D^$mjkOiLkgmf>Z<8IQ<5Hy9fgZ?ZV(9m$j z*2p&~$+@d(`p9`lH$gdvgSIUB2G_^LjT5iCdSJ)V~qdT@`~3dPKnMX|Zy z+N878Zns!LxwFTjrh{sf57W{YSDlt|Anmnl0mpq6Q2MaRoa!>zd|3i2H1AZAf!RI@ z#pO7w^Imam>$p-zKSYPcGN@x5UczJrUEfvg6xtK0a4`I?n!eH6)F44s9;h-m$uh+{ z)Y*&f#0C>)(5}Cx;xh5RPA?;aa+eipW8GO{rBPCN-lbiu+FpIW{FPy0!MUpbB zcIw7j-BF&}Hii|2PF#I#K#me)Wy2<Js9Sl2#NB`mgj%*nxa>X(f?tBk8+w=1je3${M_uq_ed(?!5D zZ`mPC% ze=f5T*LQhv#x+H}pM;wH6-bY=jp`T7QOTJT<%~TgNQ=bD9xk0gX8}K$S{>lH<~Jxa z`ICe^8T8;4_jGC1|cis(;Lh+yJmA?ua*cNBocbFSdwPco_2?jRsS{b zqVk<+E<6pS4*TO0j-;6&)-HU&acQvj(>=eOObF|X00Va=uWwuOE#wy3AU@B+79!Go zz7`q5qL9@Ad@rsi;nUnJV>iwG)1dkF%r!yIR#;O{*bv>Rudo$@^gOvO1wVmZ_n{8A zhr9G1^HdRa)}7DPEcG+trNIQ}bs-!z5zR!S`%-I{cw;zX#20*>v}ej-w9bwqcX9k( zfeDw7a1gJe*z2D+UQ>Ho_dr-&;C!+)n%! z?#MI0k==6KbqRBzhMaQTX>k+H1id>f5xrBtLH`+R15V>vcYpu@D}T}E`d`7C__qz(DxSXwQz{bstH^WGy0=ag4|c(tWL|hV0jKHLGZ(5J!r|%9#Nvqm>M$;S$D^=Xk`bETWM~ zmEql=##WQjvU7$lSMcKHOyY}5X*Z8qF3!0%odE%x5}no;h~Zyi;7290i-~i2h1xMB zRm?VO89rxCFQxqjsd07Z>3$BpaT3;D#hsjpO}Xw_ z1&=k4lI?$4DTR7;ygWP!h;g&I z)!RHOCIpN!phEq!Z9{8a_7rVnC&K#4H`0|9-urIlG!k4vFt%M$U1$>;ZcTm4co3x7nuj!;eC%Xh8jb>Fi@g| zw1FlqTk$zf`v-mi97Ey|HE%*!R^$fdG585&3SLzkRSx{b0BUicV>ajt^0Uv(>LxO- zzyw#!t*Q0kONg9#>MxZgjzI>S@+Flu=IB1hWw>x5IS@^vMKG)sKKl@Q75i?N?n_^r zwU&H83vQOr1T&jop1U0_wV4I#8hU6swjEkASC}RAPaf&pkqS-2AO!WF$w=1WeU$YJ z5)<`-76a9j5nZs=h)Ec-DYM#j*!AiZXd!6h;5MMG#;cW~W@Ao6%ElbQqht_Vx0sjh zt1&JJi-JvjOv-U{EiQh)1y*9u>l`Y{yb-9|wNxPTX^E_^XgvnNhXAQO;A6Tb_JpQ~ zmG(e9WlUlm3A*0OfDE=70%7=0+K+gCjhf{t>#Zsd)x*8Qwz=yN;)h(y(6pnF#c9ar zG}34>o;1|Uh|_kW)DkC?(Ap7EPCQHc8Z|nnzsdYVx}B6P(SGO^Pp5>ULWK~vcSaNmWPhMM%|v$9E<KrBL-pXy;K@*W#?%kQButMWWlI3ZFF6-J zc2DH=RQpsIunYmxLR=ncS{`beNzX{kdfMP4JptP^-YUC1X}FP2;iv1oOqY?Od4^q= z<=6rZ!%oEGslNUlXI|q7MS1#8xg~~eW>y}YZLqgnp9O}-AfJMkSp{Y>R_U@4j`B&U z5U^<$pOZWYc|o`2L}DjZST8Ao18V;_we*YWmnkFw^*DXxqYeZ4X;L!&dt z<7kVL)wNQe-F23}U8$N;z(VWkvCSn(#@ixejWcC0 zQT&y%>+HJ>4$sHO40!CwoqO9wlvsFG{-1!~^gB-MIu%7cG1^+5Y+{L77Z;Ig6dAKylp&~@qZi8dVmyuc2BxDJ0&S> zkCA2`vNLRL17>W+FgdUrZK`fkLgpz&c6{UW);;gVdnK%tYSND|* zdmet+mTh#Y(^%G7s2OIFT>* zaQq^<*~rSb8Mu2@Zq_~w$TAX_c}+Q+P7fd&aVaDmFkr6_ia)90GUbZLqc;ydxx>H7 zF!*CJH)+sT40p?~aY}o43Tw4Zr{*2&g)lfg8EoHJ5>^?bM#zj&+;mnWk#e@r*jlhz zVDPw9b!=I50|4*KT`}x&kB^_B%dk~3ImIg-T7-n!CdJu`u}a7?4#8BWFs7MppXoR? zSdOXIjmc5N+ah>%!SJoR>uBcWs#3Jr@`|aAhPBn3P#-0(RRnatrl=ykBDKDIskTYWB31 zx6H3)^wM~D21b8=?1ttH(Lqa4u0+qaeBz9+o_umL823q!VG#n_(umCfZ;m!zz+%jJDk>P3Y)k^P`4VjZk9&bxJ3nLlV_QH7!2UNRpTtq*l_4u_ose zG(0mkI{K-*Umoe3@cg&52Tj>C*I2Z|fhvTq@fjTmZL~|EM7}-|UySJw9xLY3KH1r@ zaplP&VQQJMkqE|()sbD*M(9!9cqj%WSMR69uUhAIbSepG=&{knYmBz4O5=1RD}9SK z(_yd?T8jka2F@l0=u#ML(Fa&?a?^?E=p7of>kLJg6S`iYvpdD3re~J73wk&n=j|-W zPT%rV5NE)jO7VGRid+iA4!@W^ff(L_#=f=mzku}!pE05h*<~8imjU?ppe1C^CAj^= z%FM(Mta18FdeYxhzGa43=N`{+KKxQX#4N4OKSEq#;U?Ztjc3U?n)2{~hvdv-_2YcI zLQ+U*WT{-TYP~+gR)@;<@LqAp!`$`Qw*|H9!@PJ0D$t*-^WU7x`0{9$?okk-^!T^p zQeqjHZgG;z?eeG>-(YPCB(Bg|qSqY^Y|j;1W;-HSGpS$Xtx8imLXdeqT1*s+u=+pVpp5GcDvF0(}_91JsOQ5>AwAq z)w&7E`H9rU{)tFq(g-zs5gI+2eU`2odpq*67$epgZ*0(j!vZAE#+t4}I*4$FfakKq z;4d*y*{BbJxr`S(_8KcKr{@BkV_-9a2ErXTp-OzSiQxk1s=(gE_8y%$(2GrD{G%e7 z4uSyT>khPJ)AbvfMtV7pzMPf zvYFHqGn2e0kdD!>t}EG%fWqbGDOHpT{)%ZnYMqyaM@YuF0Dp#K4@Pv?EBd71Bh~|t zpHSAc;uepiuD)$QD4D#%F8Mklj$xo-X&eiJ@r6<8#&ryjCECvTd0jKA5*1imYYUuZ zaFd}N^kmt3hl}^o6G31)S7UIBOb7uHKRRNXyl9M0Rm3`NgYGv6D-gZN9#tibw5rxKm z{aFE4_L%{tSD($4vwhs!z+!je*g1fBP`|d7V@K^L`*0se5YWL9Fx)X`h7?%q!byN9 zBriD8FNS}7*g-lle+$BQwi3`uj;`}F*?h0a%#9seE^-*-_SBAvSA)t#%dF<;D8J)G z&bj$SewjKAGCSidL`EPnQ=}Gdb_Xslx}{yzk00o=*gZv7uVAbTe{)<7hgzJV4E`qV zpYr0;kpUimAg}A5J!&43V5mIU+2R(<@3^~vLdCDHXe zNc-tF%Kp)af59doVsI15lGCclZb^J<64EdoQggJix8REO+1O8DV@Tia180cp6#Y`x zoS@y(0dL>CM{H$B3X7q8`K3$;XlRiV;q=I-eze#YFE>>Ye$b(TZD63o_i5B1z9c z#osA8MaT>DN=cd?(^RFV_k=5u$>SsDbySKB$&{zl#%gs&J{oG`4q#k&2N~gtE(a9Q zdu=hNAhOG+e1xLOWLs{D922T_je(17(&WRqk?G1CHqIut)lz$QkLPZfofFHSLD8?J ztn8Y_6-8d>vmC3o1eR&Mj?BN$iKm@`V2OY`6dwhQwbl2^hpmcNatW5+AYt z`@DQ#-(PpW9L@ClzM=3VvndZT6znDiDxjdCD=9>fsa*E81ujq`XO#<(O;fU$3JxoE zJv0THDK841TtVcJDDO)!7Css!pi$tKAfr=eq}L;zc(mp9Dc1uobk(VEA8TY7(B0n` z;Kkr!@M)uHXdC{)I8HlSGclEVm^a;S3Z#O}L0QFQV!RIL*%!x1Es<^uwSifau!!OC z`ctAfA3=JBG12r?BrO_CL-=dL&<)~|WVH-m01Rrj zpU`g9>gQDVhBG(AH2r<=&V*l!a&~D(jB%Wc&?5K^yY3U zb&=Q~_)M`bJah)J+?58k+%wJ8Sh%CaKw#t7#RY7N%2@Zyqp8cHk(WdzdFF1}4KcU- zJAp=TG$tRG)CaxX^#;LSRGhK00z{kuq)HIyTd#Tb(oaP zs-;F@E|*%!6-#jwGhy(E{2q}PYsXqrzJ68|VE@3Qd{1c5RAg-H^MufE`tL4owJDqDn3iKeyU2va*D6Jm}VnYSW@hfI#;r^qGS7A_rnvEdNjXc*{B2#cxZ zaVEo6MZkwD?>f_1py}a%4pl`y^Mh0ydk6%)`0Wn`m(Ak_mWuY!w`~7ea+zKj6Mq=$ zoDrdtFHp-+T{tE1+fpkqc;A9YKplt%)P&?^1$aS`Id9bS@~p{5V&Y2EL+%@9*lLJzCqzQUHN$g8vw?w+PJ2z%a=?VM zgc7ZjP4g_EBS?1z<85oWpw3KuOoJ@dm3QpEqtW<%Y-ZdA==E_v5p-U(A;! zj<5Pq2>ru+N#sBvY7gGjA=uLkuf`C5rA$nF6#fcud0C5;)J zcJHkXJ|Wh$&y>-LO6!qpvCCj%AYhqaEANXnP-HNJBC3x95px(55q1}vbuX(_eF7K- z8R{{wHIG=9^iEeSEwA;&-fvCc2da3V6xq;Yw^Jl!DQEW(5ftY)WEmC;GI4lkV9(WF zv=jKzmbzZ}%}8y1O6eXprz1F;4@4ZAzXKr0q!<) zb(TF?guq*D_879$%$XO+tlN>q@L4zDv$A5Wdwd7hg;W^T(@v!Qe>sB+|JX2z3kU#k z`}Y$0udFBkSWf;whwW_QWn>5Gk%LEVB=TnO7g9jc@V9n>ode`S6iIwht2^{hhE$Wr zBNQ&>hvwA(&9L6R9^O(O?OD9=ZJT>dZwD_IfSr_JS};m53L`Y#v3|})VWfl>M~E$B z8snGWb0InMAaRD=&C0%tJ-w%L*v4Op_iQ|8qPOny)utj1(=E)(>HceABpQ!B849AxtfiCC+3g*v8Ndo*E z4L4KieM?I*+)|oP6vQS(C|>_qLG8}?Rs2)JmQT)}lTEL$*SCugH~{Qw5EyD!h0!ID z6?>kMXmmCsY6j`{fC|kQ3|+I4=eL}8&5Hbk>9mIZkjv*YCTlL(;}bo+0FN&Eq>1A#BZkJWUuMl79I*PDlX_JS_0_C^!fWQ z^I9^SI-|4+Y1(ldgJiwf{tmeWKf)=Ef(l}SOr*&2C;xd_9Ghx9*bq{#&}7$R zP&f~lJm=gApK=|2utZ6W?(6(GS)xnEO%9w8gOQJO%t%jl53{ipj5Tdr^4#lvJ)^FZ zVkKgASp*}_k!s}DdTBPkawdKDld~>l>wA_UV?YQN^qt{ zFWOshvvRpX?tbd>H!#-Nkoo~A%zxY2q&&+O>+0*YI^lkZAEcyK@6LeKnGr`Z=lumWmqDP1_X3gF>m&{>n~IVD%T zSB6o+ME5Z*mPsH_CUE(+MT>z!dg72&7ANRo9Uh}XRuDv7WX`2*mNLl|p!h-9!qdR1 z|Luii^&z0&%Sr>5Ne1-xiwfwWC+5t4_9kv@8iM*=BCi0+q)97ws7p!_0O&{+JJCXz zQYIofRw=UlJ#?YR%Htw#scBBhAyqKoDdQ$D*Tl2tpr(jmn3c$Qq|-LNn27yP^PLzd zYK?c(eo~Z+Y|WQ%fiI);d_v;-GBgkuy)#P8itI1ayb@Otjc+^BT5Wg}_p&5~A#H>u z#$|=Q?=;n7c6~EiB3MaW7g>rrpkyq^7Z=Nj-i$u!DU?c%Y;h1(_k3D%YfGp0?!qce z6sXG2R^&D#(>D$0;$1h0Ys%Y$y_5^moNkdAJJoYOf^)iFqL*Yfj?Lq_HK32SK_iY# zuQaoaiy<#{OoW!#D{!YLyFXujlg-_!XIhs&Tt?h&+-!zzYd*_uKDYLU>#z&1qqDd& z(i=vaR?t^>L(I7rU~Kb_>eJS$b#WSZz1dd>{{pK`+Ht@5ze*DZ{vTBu)4wZCaY7dB zFRWl85}_9aEi`p~jN?Iz5Nni&N>qv|!SBGUmEpb2Mr5L*qPcP5lX3+ERnH6XW@9Vb za0!cl(=sL0UNODoIN^OiysX&$r4>30HM9J%VH63qn0mx5;eb@A1)s9V2hE`DOa~xe zvznw;zuZv!AEnZ1?w95BEVBkZ=wI`9le*|OBBV^dheh0oJ~VLFq)(;NSsrKGOw6!! z(Rh-ziu*r#QTKQl&uU~Ob*_{0SBL}j8%m%od1= z;}Hh5!A>-j{(fh?T>0FeG43;ut6 zwEI!QQi1=`Mr3c(Rx+n3_Aak3kP*Dph*XgRO$T7L$pcSnS+%5VH)HqQ+}i@x%)X<$ z2g|llFdpIS;~RH)ITA-gT*UYT?RB$#?fcyLv3-5Fvg7v&(dS=i0HCzh7H)y6SC%#x z*H;zFFY zhg>|k2Oe@7jcp3&p%~$E-FCRGRWdUXQn5;#MJh)9mU@pojl$D+c=g`54ri2km4y7` z+0{Ha=L95_L~=<|2>?IYksQNf0T;=+{tV?V8kef>Od|O7|9d-Z5gK z$4qH<3Ok%+W&w7B)TWsY8s2>ZhAla|Wd+&I1hR(2F{X$*Q+7pKKET(Rpx0~?&SA*G zq=u_Hl^vK?O`_NAt}nyZxs<81D-M_SpxDwc@9=T!9>nFYs})E-t58$lAnRa~N@;-g zNVTU4!|mhUAe-1zPN56*{-PKu^hJhXgARaFr|&{GWc~nMd!4x_h9Mr7b4pGCz{wt2kwkZVz3;6&6%*qz56|D_L>VioJwL& z5LISih_siM79O?R+cT-wZ0MEsCvUBZ@0OH{C*e%wD`|?ke$j0zYP`@Eqp+4djEtr& zoSP8xjQa`}n8Krq3&-Jd%{EEBIlyr`-oOdso%~k3GbEf+Gtv*N zBb)Tg!RmFC_YKilQ?r z-(+Sr%RYCso3UFA3I2Gh668XbCtqRXz?`auhFXN3u#(*q&m!4!jpQ=VDM~>VcY9&* z1>>nRQVaugyfJiN4xl@A!N--!^PvP`4x+&Y0M1|1cA#GGc>3+0wg(EfIv}VUgXx9o zJa&Jos01Z%SATz|{>iXPH~h)xDMEGhV*f~qCFM|ehAhaxFXtrV#W-G!hV>4{YPdgW z!^o#gVA*)Fuh0m*!PpkF>mt$X1nex0*+MdSh-5Omgz)~fTRqvQG3$Klt+(4t1pmNT zA{Us^9l@P|MSA_iJ57dJV_r?alh{cIY-|Pl1knA8oI3{4&8RG0!>*h~ZD+&?>5{p< zCdtQ-*E$fgGv~)VPR042iwUb3TQFoVHa-)dDua}Y{aPwI)3g4sOB!27^&Kk&0Kf^t zf1*UQg|U;Hg|m@4ozP!`$vaxu{sUmisvk~BD=55HSC%v$^(&+eK_sAIMZ&s5!r=~x zeX>yud5hf97VgaRlA2mj4aP;y9wdhW59YW&v(rrynT#;ZIkI?4C99_3`Ak>RoHASs zdLL}YC4K^C>%J$~o-|MoLSluTFD|${96LNOzE8PaFX7}8c%c?JYthb}!f*>1wvn6C zj!OF_*d-L4SfaH9GAzg@Yv-&v!oe?X6_*<;LE-84V~LC9}}EgI|1ht)v5u3g(H8axSHIjtJis7 z$W6-()X6+Oi*+(20jUfdBZV0zW0f6|e8;3YjvX3u8}Aofn-ge>)t`voF4fT8wmJ3L z3EUb8WS#1ut6DvN)}#)<0P+0kzgzwU7s_n+K>V?GF2~i`k_`%+>Wnn!Iv$nn}2ktNA+n#`Sq13X))56BhAmYb7YA&KVi>*5^8PJc{OATj8wS$BGE* z?#;Zq6PjK&Edz9DkYjRJB4j*8vq_w z?4uLBjmm|tC%l+Y%RcE_OIE<`BVomYA$Q>d#1maitOJXz7b`cQ2itT#UN0^bZ=GR5 z`S;aQyWrB`r8&h(t+G$SrCLfzW}Zwv7sNDr)@+gmHSNiXg4q9Od#$c{#*q3DkN2eE&3CA7421lH?EAahR5QtK~qKV&1?$p)x3cB*pPOZuu*}o&2n^u8uME`Vo~jodKmOY z1<%ERE&Gue^lMY8hVzvf-bPvh9b9t;cJmDXhFP&`p5W$L5#9^JC02j@KhHT3Hlkcc zmU)!$hLSfB%c;_h;a1$%(~1b%J6D}_79EFO9f-z0J(ET_TmvULpmrIPMzqkra|vnm zD>y8^fLt$_=F;3%_AfqNCsEw-b`rhQ(tvivoA?Absfq@{RU8lV)PFA*l(@yMc5ze zpP08>^bW!^!u?Gm2el4J#6*BI^e^0-{Qg|Q#KpfKu8m3_3yyQLW}Ih-W?fHkTXWoJ z!CVrog$xq9Sz86s3zA4jmBNn-ru!6@hAQJGWUI009keb09@F=Oixrx+kyvJtvJ3J@ z^QJPhr;O|xy63-Oh=-}_*ouW9#56q&x!fz}e@x1xlvs34!+6B4~@a+=$ zbD2)SZ!yjj+jruRT%MF+X42|>-B&X)naqT!eVPHu>r1COVvk}Qt2DMg+Ub#Rp4HM%DB4Ya83M8(k0Sp7fXdGiD>acsdljfKVYgzwso+ za&Yy?pA*W#6)`I4Mkjk}7K352?fuB4bCLZB^A8o+z_s$38c|OR8?^zhHw?3tSXewP$%s;@-$LL#G5(OGy$M(kG@Uw@f?WVT}YTqEiy%OLbML;aE8r3126y1?k z^HR6|>p#E^Lb|WP=I5KlrBKT>>IXtA9wYhSUrT*wxg;jA;rUUUJM7D z-QiWC_bw?Vx1RP@>7&E8p$t15<-_Q+TIL+TZqh@LLO)^{1 ziDx}~s*?`CNIfE3kfJqt%AXGRnMO%b%Zk7GKN4~_THouk;kqHe|7E~Ti(6^y&O0z zhCxL~0}(`QAo5d+dzoq}g0!Np&ruN!!`GjHY)6U)x|WskbVuig?{rIcM?h~Eh;x0M zBwiU-WBfaoY5xzo=5JN!)bd zM*nJMv=}*=8t}L<$H+$-a@c7XL1aSE>(D`CooFqc7BT>FtV^=_=R&q&=Z2$*@|hF5 zIT?B{#7kXz&-TkcJMz{<@I8`Y3vTXxuW#LRuXKLDa}s$#<9j)j_yaMXxcxGU-YC0~ z2d2?etC2<^T$;z13t-xzQVDVsR$6~3CYLfGd-0A-2`ihJQBD7vrYG&2q2fz3zadRa z{FM7Sae+Y`l2EcXgsFXu zra0!ZoSJ*D(IqnjdYkv&I?kuL$_(-x9%Uq~60gl~rk$oV-;$M`zl7ilW^0+?KH{^= zoPYnaeZj1X1|+T;a+sry(#|FL5H5dPhJh1&W zM3q3ITeR+R_2!uF$EvQQJyhbV30uLmFa?5|)m_nq%AvdzU;dM&7F5wjHJ~jMEXSx` z6yvy+<#yF0^3M5~rWEvBrDyH{&G~0TCOSY3FctTiqXIlfS#fgQrsxPst``iXm(P=% zz?eGgLutEhK1?eP+mKEUv56Y}G0Df01Vt7PvJD9%+t0HJ(@nFu^%|F1J-$mbR(qN8 zsOoPW<8ce?WlElrzSw{*O7R|LrJZY9k3K8sxjnYo2O8on9#p(HIEZ>ni~vhSqRrG8 zyoS_ca)7AIl-xG}tIKf5vrm5miB0E>3nJec22bcQJ<$A@n-qj`2M6c#`@0>_+G~6O zb^qM%&PO_Ah=rd-n=02G6Gh$|b!*A_@qQ35uC1Y)ncm=Jqq`|$WXhllB^_u}#+s$M z?^UcEkhOhcyb z$BFGe`8Sn?#0SI0ua+B8o?J`&W3-3swhL$A9}_?C$KwW zZbo4XdZhGItZ(L~j=)3A5g_|X#8G$4TBS#^lt;pv*rJp^Ql~3}0Sb#MnOY&d#t&#f zV=g0I-{cavxJRfW0&y^fNA2U4^_LHxk5JDkC5l0oN)8eHDET0dVc$TvzLKW1N^=!b z)_Sb+lg6b_{>3-TBtp(4EI;qC>I zrZ|>7<%rRUOH0KjlFT(~?8qu=5-MJ3sbviW^4Eh8mf29@uO@=s;uX*Q#GY857CsQb zQEXr~)yRLtZIuAcQ(&~h|D@xVvm|#!4!anIFa5-pT0|R9MXqj_Mt;jIq{cjX}xLmiL_+Z&?oh7+%AS4ZSYpgomX#dg;W4RbX?7uF)2e;g_0e zSf&zqqa*l93%D&*$3E9M)+WL9%NZ#hi0nNk&Lt(ag};L&XqyPhn0(k8`G!UNrhL>j zDAzUN*!Lf=?W6A$jxx*doQz{+`R$JJyirL6oM{d+O54mevizy}JVq(JIgxIWpn0fJ zRHz+S7k6+1*BpgoD&y(qkxB${)7oj0)^5 zy}e&ty5}l!MU{x)EWSC1$Jn3N*@D(+zZOV2yqT-$3Gw*q9kQyqc)kIP{m7>) zc5OAYiKhI{cXrlYmjx@2Qo~bG=i*ATOQ)(+L`UR; zY&NDiYn|grpY9`zBvMFxzD%5)W7bFwqiI?!GMQ@^*Va)rTbA#xKz4ceFuHed9iI6w zwT{C~W6-`5IqXvEX6nWh^p$Tpy!rg5Fq&jrzhY^>_^@6fm~C^aKS+Fo1*mx8)ve&~ z!Vl53pu#pLrW8jC%D?iEfqsEoLYycTv%*Uf-`SkWyq*>6kd~CIB%Q~elFl*nrejq* zil;hTZ4i_FE-%?Ieie`R>A&snW^EoG+XmuR_;!-xD(e(UtUC+!ip*k-zpyTRx+XjG z)fgVO*Oo85`=3xEABk$~Dm2!xr1WflruyTYaTk6;{_i`Q=6!)<Pa8ty6l=( z_C^k|0}h7@QNe?Lggpr&vo%GF^N6YGt1IugobTt)F?k@SKfv7WNPFaVbOkY+br6hrxr1I>~iJ`|Ce<(WOprBVWeCh*wsR&Zfnh zcs5!Ze}m;ddf|NP9b_WV`?Ejisi1Dzr zFAQOIqrm8ttcOY5GeKP;Z=-Gn zP>3-fUc@XB7GQQT9b9u$sAg%|Vl7DKV%c1RUPEf3qgA6-9biQ>CL;&opXs} zT8K;JNb8*LxE^$F_u%ZT;$t}OI+U!_jEa&tCLVb;kG!eqJ^xhaH)mEy><<@{Zg_mnh~)=L8T8RrDD7-3eYmih8Z|7JGVRd zhD*S|Rr>Rv^dyGVQL@GM<%u+|H^+ZVs8qG_2htu+DM4;L?^YaSBW6UsqXTQ)?}vci z*@-nCk2u;_D35z7su$^dDhj`i8IHRcCGXLRJeP-4+%J#P!B)7LOKkN&YjnCuHrj2e z6HAS3&2%a#Fe6=78;cVb-Iva#4lxn#)Oe9)Yhgw{NTpCTnOa$^^tx-!HqJ&wlP9Za zMR?#fRcp0c8^|`6cD6$Ax(gb#DkMQlcoP=(o#Z)^!%A$I3hZP_5l0)6_QV;n z<(Agz=s%~H3xBP=Shp8+m(n36R{JSOWiL}j-B0~=S$I4=SkW!}VW(*&$vzVC5)3Fh z>$9B8X)t4*#Sa&pS&&j$tg&Rz>S2oj$5%nL|TCDT4$Q~aEgu7we1dWX8Kic7e+*D{ALq{}2@DJImD zz1lcXAuE~|P}3R7*ZSLO_$-!QH^p!h|Q4hsj^Q|_K&m%_-{SG-zevKfur|=vZFeM1*mon& zSZ@^a^)!q#)3)*^TtSsE4JT>xQw{}=_S%+qt=Mq`(pkgMM5+f^HPOjAk2%d-E5@Kj zppIup=2@{WBq5A}oEfdR8s%bUW{zj#cLE5KoBFrT(tsx^;gd_>OBfD$iIn62wT2{4 zAZD+{l1P*NrR`Oq5JZXwR$$cn>&3x{Ec+bFZ4egGAbK!pU=9+71yj-)gUp(~z<8N{ z2U3!!RNo(OF-eJeI8}=)(CR||adfU$W_hy|-=ugXJ6nqncRDX><&5Y(iqGb7h>F2l zne?fYptv1afU1TeYJe!7mD#@H-eianGGyhE)(~SRMjNWUIgO_UjyfivVN9e534&$3 zQMeqku+yMBQVCOkbr#C0jxWjVT;i7hw7I}3tAc>jpMM4ZmC%DEpoSJ7|(&Y&*0`!^Kgy?L(V@?nv5Vo@eWwV9m?Ag z*8{yOH;W(bb#5N8;4} z&WD>%YIop(ucG!Mx}p>@0Ym!(()GGHM!1C-#khq59df- zS{vm~G2YI9Ptpk_*Ij%Q?9u4-7XQt(^75!7f|fl$6Y8VL`pTa|9b_9PK)&b4zRh0E zFFOR0o}%YJzK);@2m*7A5|4P4<3#hDom&hV$mZ}dmwdHr;+dD1?^ku9Xn!p%a1{G$o2qy0S=S#`9p&G5g1=#t~MTpjs1{$bX5;Gb%FJn)CN@o;f z+ch;wDUCphpXp&ou@PC|?Cgb?W_o%q@f=&FS+H~zGNMThVHl4udoKG}IBGgM<&vyh z(AGmsg&EZ=Ka%QulpcS77*Jd3Sdq;L0)k}ZlM-A+V`Uui@f;++Dc_TOmSCk=rnE-? zWPMqIN+YERlooa!8OdO z8wrr?o#MZ6g9m3GAK#}h?e{}UdhH5JOrEIUn8w`EdFj(ZdhDw87!k3Zy$>+!@%N(@ zKN=eLoUk1-M42ZTKg?SaR%3k^NG(&`VV2L*hZIsqS**e-Xi|#Frpj zMWN*IEZSO;%aJvwz3fD7vXAZmAY(yC4r3)MhBh>eMpE2@kaWzbd8^1`Cw4xXR32LG z%)Kq1cu{rl%(GpvLtMjbniH7tFw3^WFUWo=G&NuxTpi4n=@i_41}I6?M%Gpy7jvKN z3Q_JO&SS1PIa?^YrQs5Fy3eXfCgO(bbBw!=AM+hQA!9YycG3>L!RI|5i(25r>}xk z<(4I{>mMQ=yE%$s3)UiYNiW)^u}%#uhAdGJbnKdGnQ1wVQ(84(G+O-SVAf-5lcL9_ zef2Dt&A@TRO#P-gqJP%%0T)q0neXuwkQ@E~41y}S- z)gj;m_x?(>B@h27ihVNSEbw^_oGXXmh{iYE^27*nhE!W*@5skDDRTy8S4i=0;~Cj? zj@28VdkDri*L5b=8_-+FyQfASxFvk%02ec4<#YyV1+K9q@wxo8xzi=cHI(8u~f>xs#RL3fJv1Zmbzw41(<*qxPIcwcs&75TgU<#6?)sG)gkea7^p zX~C->vV9w{>;C5GiOYuL@s8{X!uE+7=b6}RjBG=50`))N3xO_~r{`^vgDrzuUi62cp&| zHvWz$yndS!xD-<&2hKQ6fin4PoWL6D(!cUWL5hL zVS`oi&pDpJoz#}GST>FemOwSVAyc`~HJBx(AvbFHbX&M0}f z67GZ9@P~w&3Cx>C)*M2RTYla~KcHJZw~l6RO~Oe*d*S(ZNs3#ksAP@NNI^Z!F~_f|mTRFs~o)r2x+vz3U=kmt`=_UI{nf?BSWE`{QG~>~DC~8HJ8)U!Z#5WYQVJ-PM{0^mmBQ z6TN)N>-wBs?&zThciJ7SUcVEX!popN&t4fr#IFNX_l?&bH{MTrs9V(74aDcTHplt} z;3ME+N&M<6>`ocN*$>N?NKa>${)6e`3Zz)pM&#P`jjC#c2D7YULuAsJu3OL)PYrv_ z^am zj1Lxg$Gq@I&HWs`PeU#3eHYwPc9cy$Z2_*HNfC*edbB%|`Sy^sKz1C1NO8m?W(8vu zx#MHj81;T!8cTkTC1idS6K`~j_K?hu6fF<7oEhsg9mF?sJsFHUF4O}!)DtJFNy&J3 z6tZ{Tje*l8({9a-CX~{2gw%Hd@MO#7eAr7ch-d${;K-i&^E7I(eiKdO+X-wh`PFqV zS!02n+N^>a;6g z-gV0w>GzHJTUF0%1F4k9mbgEOEDo5#kkC%&iulK-)#oJD3aHP@7#xD%*~?_IW2)ND1DpQ$_07xtz5o4wMAa ziwc`p!=ucvSqf{xiyyjhH&~+?!%Z#$3a7e2&8|}jKTwef#g63;1D2F#@w}ogU-?RU^xH{>pKhp) z`5=XNY|`%^SDLHl_nLVT$|_~8h9lA~;r|>{?cSq8I|{U!gp29ow+$#jRcc*9BnKsA zOknoRY)*jw(Lyu?ZL`}PtS}LP!#4TBpng*luNa3b#VN4~03P3@O5Tl93UkU?+Xi_6 zf;;sRIaeSbZ5?6Y|M+OfZwv!EAlkkPMwVZJQBY{$WLYU?QA4^{H{WOPSk>q%ahq0YV>8U`X zPK$W*7BzPz$QJ>lLDpY1;&=P;vARWA zU%01lFH$4FeDE)d%43c*SYMQzMr9jM@f)f?BNOLNN+N+W9{cFirSegzNwMFM>`u=ja>gUuE$250NgDLJO$iRg_ z?yxx``Z%5O7qZTkQ-36O3{|*!3~%@1|};7KxmQe{Lc^{_hX;}r;au4}t5^2lZ>v|L@iSEP^i za{q`fT@b4l?l-f$Gv+=Q|I%b5q5MlDnI2Ki3O%EWS8arNkv($8cIRcdmq`pRIH|%v z%NDMV7X4`_#C0d7$Tj|E{Ys`AoLc2*i$=D*bW4%tVvqBlHR-b}QElKBW z*D9XMEQ?!u+0%MQqzwBHd!;g#8N`SfgO@@&WTdDw`8OW!yuFcPDbcc~1UW zKee6{sd>Vz#X+Fv^##a;2j78wkkk@Wr=$ryWz=@kqRiivROC+WVTw3&Rf;%|l$W7H zuQrd=FC%B>)8V14GZO%fnv<<&AiE^Emk`~jBeZNVk89XaR?rJ6}{%>D?WZeRnD0G)lb4wH}@hU29%$PvwdIcRNx%Q)fA~#1wbU#s5Rf+Yen=+Mn4OQU?|Z0<~X_uiRdBJ+GeE_BDL`KQBEJ;pM43pv!R=l;;Lo93}V0;1I#knKl_ZCXNjgWaMd?yaPw^ z6DV@Iq>rtC0jXw@tjgaeP8#evW{w#XNJ&$2`~ycQa}pvl^aL@$mf_k$opG()kiO7YdJh}@8;6X0w$P}mUo{Lg^rDCc-B< z)vm`pT&CKXdLBgQZ^0Ffj)y#4Fm=bMOT!>r>6*aRGA_g0GRsOHylv%o1-Y#z>Xi_N znO6fNRFjbe_LtY|0hF~imX=8DG%HI9SLdLJHYnYYty88^UDn^TX&Z))c44$;?V)$v z=>aW#6W2Zt<^tJg^`-~cJ>L&}M4+E$Yn`878=p%K*^}GGueU)gPM=xC7ol*IZO|*D z!hrxwK(xOCD@jr=oXB^~2CDl$2auF~SESm&V%_lbd(x5Dad?WOgKNQ}Ww;BwNdR*H zgo{{t=jnJX9<5HY2ELo@3R$pvxTCOP)YuH^|FSfPg82aRsIR9=yXu8i+FO)CkJuBMG+_6&(8r1Zsewdq^ERR4S(co(+m zJWtYfu~wm?U(0fkjIFsl;6g91BWPxZH|_x@$fa|5GzZa8FRy(^x&amuglRyRiPzT? zH9i$P`0XmUn~i7*$^H5`s2AeND;++3-l?elLg-uY+aOr|fR~#;8(wWTa+KMjIh#tl zx`BpSzj@9!3F+*^D0io&CPtTEZ1FJ_`|XG$BY$kQb66ENlO)SfKyZ3;a)9J;Q>3nC zE9W~nJ5*wa_)?6Ob9e;V@oy_GG>YgF5=1wXx><8G8CIkVyJpWXa_n-KX6BezOd~#M zf#Kz)BcVCT5$?yq4wbB8!p#;;ow-nX{CQ!nZ* zniTk7e>9yNXs=4?(4QrnV(42ec&_U$%I;Qr?41ND`Ns<7moR8AN@~z`i6OibT;Jbx zU6h|G{Fa33!!TI8V03+^W~zSp4{9xw3a2l(d&{2CzJz*bpuMgb4RMq z9i!|@bEfQgRG_tzd zEN1WD0e^`U3iLe;t==3C?GEK9cI{1!x`uQ5O~aXQCqy1`?J8l_BQg$g#R$fO7&@PD zoYt3N!^1LNMr~%bvNh_BX|gs@@Vm)&ATl%|QLNt0Vf#o;c0CX`WE;U^61p2B?hh-a zXJ~HA+2<43WX~ZrZi4T_Sgp-ww#^tCe~Dm;a(go8=pLRjz_ZE4U$KIo4OHcuaz?Ea zDDa{~jC@W(aA}Ed2TTR)S9#{MN*HNr-GB>UD}w&aVb&|_A77h4X~=~bP0Ux;MxqJ? zGg;h32>8|d!;fR(?u6|`OV6zmVcWbj@7`uaIjUd3LgFv?cJI_RM~BbkHAmO?h#kU{ zicj1HTL9mRe&GolFwzR>tO`Q3DxZPcGY{G>s?mT`v-;j;5vKW5nV3X)5s_{9lf^hD zu{`S$9JMB$XfBaC#23%v`X}zX^%oT<+IBU&~B^0_vItG zTL-`&Zf*{s?QHw8Y6yyF^X)4HDpeFbxHnb>wIMY}^Kpw~(2z_H-H7Jss0W8n5yHZ< zxD3OIZfHhf+)qi)y1+!_F&GC|fx_OAwG5=g#rMLrKI%k?7xVH<=373!0P@iYbTxu| zXO1)hLD!&yG2YfPZ-g9FcAGgLle)Um*HX_F?3!m1R*xC~Fo?JxW^8sdgr(%KbBcI` z>yCJLEO1LMxk5C^sAJYVHARvdH6^ygZlg>w4#Gt~M@K+!NchJb^*cso`x>JkwGX^E zw`*0=+#vu{`h%f;(GO&|Q6gkV$A{D`d2^J`1Q$6;Hf9#T@GmM!E>b4D-XOxhHQo_t zUgQ}F^n&MBc8oKzZaHc8?NvrnmGHK>S~5vmsE?hBqlYE-Hv}c9F{J`-NAprWX!T@X zA|V4oDf9V#8G^E?Bvw?rvDm)`ln3MetM!QY1_Re>VMw3w(y2AZnQ$ztw_@I^T{0P* zFiW%4sY65xi7Db^@k_{=!Plp471|+oTt3+{O3N5E^&JJ%fT1erXt77*-YX3k;NE}W zZzs4#L{>V&sF*aSwz=AV95?e@hLuwg1Kf=Zqeve$g7sj+O>l$LK4tIs>Pr0=T({nY_G3a;i#eFsXmh!=hnC>z z97h;wBi+O{8R6KE=S)qsCj@s**Kt=w+GaL=vNdrTt@d*ZyPLVX%_LsQ*L0gAsT&PU zT`i*Itlc4{F#^s+;X;}B_@3+?!7&qNY>wRGhzbq;gsO23>xFLh^s|lPwsqHSpsnT{ z@6kfc&N!TpLP*|?M%g?Yj%CpZD)Iq>Axw5ew}fb$Kj~}i#=Qe=d1=>Eqv5PpyWYHh zID3-e`~*g|kPFr%hO@$rRbs1^5R$$?n&wEv+_7MeTuS3?{`1zrEd&z5yFeP-5Q04r z4j+ibw~E6jafm7MMEH3^w7ue9h_`L?S+k0bAlbOu*v@cuGi^ROzd&K zPtGGHo~0u9x9vzKhHwA0McaJuClbBFo6d+8cR+`f85j%shsQhO%LP;3byJU5GKVpt z4-JI3WJKM8kpUx@8UM>NlAFmLL;hE=0gpwCqET#BpuMkw= zkmEmdJvAnUTBCg2k>C&JWhPX%a#WZ?%q|hC(g~+|#lfu6S|Va&c2WiwEt0l7b=A=F zzsz7yR*X|Zvgi*5l= zLY^MZMv>=iOuz0x785&~elN4RELz@J{BG%~SPlMof-y~64YY0?&7fm_hk`&q0_mX1 zhicAZ>>g3pHoLwPYb4FgX4JrPNQg`)1O=*sL~NwC9Se$0i!YsbhbMfSKsK=4d*?P7 zf0>7sNYJCP?VylmFkrc;cC~*WlNn~0jD>*9Eklzq#1A(vXd6z_*>$248q-sH3}WSs z#XPIqY1Nn&23?_$M_5xRr5ztHjYnJ;a*O&Jg1Rh*+-q#B{;p!y{iVn0SDbR36|u97 zNr7Mdy5EeIgXv(4a;-2H|OOFI+t%;*)Vn@@Uz z_`vy2@Oh$6Tg>B>t-FW)VDW!-A&pb#0{HFAJ^k^E{+awdyY-I$83;R*>rLA^kT|#X z1&K@5uOGFqpS5pLe{7V0Y^p$O($5+Kwxxn-aq5uN9vIocre9cfsA$a)*+}74+#E@2 z$#Rc;Vau)D9x=2HFS8Ul34ei2vu3!5+Sq*)^&wV2qj+@g$uvJ><5jjlNqTA8~rJZdd!ooLhOl=lv#}Tf02~|6m+@@_J+ahU7TgJrMua)GP1nm-~qF z?)*V#U@pBgDhixqtuzo5`q*7Uh2H~r43ajJFU;>&CTn8uO?X)XW@Z!6YfLN-^lZuc zk$&dfp@vTx1$`zoqY%W&+b9wJ%a_F<*zpdM{2$ofKY~%{QYA*cn4;E)B+D3*=~NWc z2R%OYYGKt2l??tWPc0N7CJ-nXIj2v+Qu|3EA-MX$`uH?tGEp-4O-?%DtJJ&eSiscsk{@FTq0k`_NH*&%6va zr3hC|n5C`+wlXI5Rx3|6c~SMbUn4{g3jLW~sPmy(t~(>C32{?%y^Rnuy-69)JX_zx zH0O_j%@-)qvd|DF-5`8@P%+@RnY7jf+=!AV&#f=0w+~rX&zkblxhd#1f!W3m}HKnEF>tXP(rmW4Lhg zCo)#+Ue6ST!L?`3Cu1wG1wOmBg1H2Kb-@V#{CRN(3uV5!UcYj{7@(e$G1nVP(!SY z$_XOsh`L^fi;xs`R>oae=O6!|d5$hRic5*YuCnl0poi&uD9- zAm9?RVlQ_bZFD&J#Q-200PRJ`f1^}@ocr@5I{T1x_bT_wO*bjk4mt7xOtw$V%MV|! zZ-sr%^qQ6l-tXPuO(&Osdmu%Z>c{(8Uh5|hJ~y^L7SsB$`dTx;K|JpkHjX1FnBt+Tra4*fJV^LD>4}7SoJGeYRaQqm$Nw zJNQ9-yAA)We~dz66N}zFrl3Xj38TVidRfc{zNX~YMv7Zt#>POAHja#_J2Jvx-KIAVGeOe4EKN#{f0(-tP)J(sfc|gp+x{vgg=>Q5k7WLmbAzP zWAlTR#@!8;m{cnfMcE07ea?z+$Gzk@uKslfglk zhLV98gKI+b{dL+ob&_#t>?j*Sne^K&Q1y}Cy!Tj~j1MjzR{#Eu;byR@ZQz>;k~nOo zaKy27HND%^%U?87PZZ=td^vT69j8UT4>%N6A2s0Qj3j}C=UO6Q-)@NKUd-cRz73x{ zkdt<={CpGQJR}O98Tva);tWz*pYbJ^IkYQ`{K3w4Z`>T*Co=Wk)tpOE2IiO7dWW(+ zCs17V{{K++&Of?^=+qP}nwr$(?%=cvX-DKbIm)%XST>n6& zx~n>!E=it7Um5lX`7;xrh?jf$b2y)jnPE6Ya zNK3j5clrE}-+;qL7}hh;&EX_Oo-S3-C`HK|u!OOFvq~Lz7A%#5je@^JAk-4ZN|ATMGd zAnO0qnAF12@PA(kSBKVHcJBW5`aON-5B=4{!LZXK81t*QXT#&N?n4=|Y=BJ)g+<}r zoEh=I&T^i?3_#V;FW{AFM42Fs>vdlgdOp4u^npYCwKbh%7v%}jrJ|M@wM zVhr`DZTr1_{`TIj-F;cAjOBsLQ_O+UNB%+S^98>`={QS93xHv0`W^( zU(B9NP5??MjjGVuG>SHuD`q*dj`mQ9BKf{U$!HQ}n2nJj(JK7x$4IkeP0?y{DNZKw z@oB!MLU7bWPD>QcH6pNu!GTNv ztz{;iOpCtmU@x#Ewk_cdQF)(Wpk_6h;78M3OcvzPPC}3xQYW{pOh5V5m?d4lJR9Lx zwPc^HqiH>fm0UWLG6^8GOdj>9P{Fb?U&?lFscJob@Y6yRYFv1j1e*a&`mAHb$r3hE zXS=LhO(t`xP#?5X%P0ZKQ?8}>S;6K@*DTB~f2^a$SqhC&Rq56!ucgsWbG3jJu?Ag2 zQrnwDOLh*}w2~qo?ZYh($bCCeSe5!DbjX~SO22!H3oHcasdB|n)r7k`K^jH&$&Gd@ zo?B&!KVB-Gzf8<5J%`7{s2#_w)u@$_W}i){m?)LU$Q+CLsFp02KcTi`M}ih=C}wMi z$GCYIJEZE}v?DC#_)8TjjlGwNLEDBl)H`|dY+_tS zK@U88lr|8jSk-RD6}w#rQP>f#jB2=yY(TPfu;z@DCDdCHC2PeKEI*(Ps|ziVaxRdX zN~B`MOS>3pNMRX-7wKIgV1-~NK-jD$PT9noBGUrfmj209=y-mfn%bUv+yGFwV<_cH zj9_;1!g53#O1()`zOY{yHU^sEdJ;tA2nd+t^cafXE(h7$8!G7PITnMMdBrNm!Q2vY*G z!r6*C7HKcw$Cu!2K06J}6^U0VYsflZk;^BPqavKQ*K2NQ?uQJsrI_Lsu>uL4FGDP* zR=db6w=^_U7hTG4tTctTZJyLISS6fynBNFa&$e|pdG~>grte9?GWyucGyE24mv?kvxD_STnUM5T2wI0 zPvHwW1Jpw5)FA^(w|JtgfK=d7246CcjwwVsZ z+jtrt-ME;ang~!UMcsbDMy z$`$OynclkfJ~D%=^)}*$;+O=e53K3p8qOtDI&g9RWAtBBkaB>1H~PKbq5?JTECpOR z9kQ=fY^R%45h@Bai(T#*y|#wc;|JC4!Ayhu&GWRgdIxWD*M(KaW}pAKmlEF&NQ&>! zdg6Kk;X56Hwa@pf+6yS$`%>o~sqP3L_6%p7?+L%v5#J`iW@j#NLX{|PobIuCi2#A) z597vc6*ZAwjC~%PfVUpP^@}Vkkw3Zzm`79P(NVD|;C^BC=99y|BAmpZxv(L{T%~HB zq5bRV=C^1$>zUV*gcz%i@e(L2hacAglS-1Iy5kb(tHM6*mh`u?6Y?g&kS*DIIvlf} z=;YtPvc0iU1$+e+W+W73-(S4|ESK7viSg$nRalP4u7%?Hsa(O13}d{sZVX-k`pDzj z^)Vur!TzfMs97jE9a@Fns2$AU6oefV`0|CEk3YkOx^p#^+b9=eMjlDcrZDpzcD^K? z^F5E0uF?y_2|+0wW)_4Wr<8K>0N-&Jhhu~t**GdixhbBw?eaGqkrvgHAErl*F`4hv?xWA86G^iT>BbW8@in7u)>W$Yh z)3Ih>7#^a(F+3Gmyfm?#4{aqOgAN1ni56w#N0p|c@tU~lv73tK ztx`d1ELacY?q26%pay0bH{(W!*-fz2Z*vB{I+|boDg+E`6uMt47h@8D(P+QSvT4JD zK&<-_SMssI)+V`0h5Z*bvec6Y(NNkmG~Qi<8D^{1kQ1RET&daRm7MRBxy#2H$j^?@ zkbqe7=H+`Mo@uN$AxAOo2HIk4qRa%VlZl{|OTvxv7t#YE}5K*_ElLW+nLvyi8C(t;7nJknpiy75MQ0yR;dUlo8#bk2W>4VgW6pysg6US+Pd4 z-PhgW^U2bR%qbOp+PTflk<>uYLPrN8@7PSqgR$^*@BLMdx7Yb)2P~`hAKY@n5ira+BTq~KK-(Xy~8@`goa7yHzlC^Mpnls5Z7ytr)2wd zbZuXo>v_MEE_+OIv1g%ra=N3KIC&l|F`Te40!J8RGK0B1=EiEvI-We2IBeB|jBys2 zofTSY24TwilbFixX}LVYT6?;+R0^r#fvOuX(`SoBu%xBMEsX|_e))X z@jIJ){lPS9tNDhQJ6q4>X?VM-_3hUZ^yJ@^AO7c`wYsLl9LZTsH?rH zxA`r%QcP=W7s58^kK90ln~^^?@D9%eT|s}@;QDr#LIu3t)#PIinf(1AL-vKA5ub-r5%<8NVs6hSlWx2Xub!M%r|u_#rgwQE*v#yaINag5I>H zwzoh!&uk+ChsJLyy<;9}I8DhT zD;oG@D6sp6$ZYY+a7Q_2h*69m>}4oD*S_M)4Q}MD7o71+a7W!u-7;mqfnkSM!i1^@ zQL09*v|^y`gZGE+%lC8~fM(vC>^SdM2gJ1p78THPd~ldi+Dp+-JyXz9`F(0lecbN{ zM$Fty=%wHcoZk{U#oOmb+h!mwcm6H+(@vq*P`o!D58VMCI=#ej~twS3hA#L0YYJA>him$;Y|MF zMg{n&ArDDJw)9kAvCCV50T#8KZ32{9W;IbWlA6ngw2>k76NjB| zQ-rp;yN1akgSO0`@jTH&csb%u-DNlRUh{Vbj$WQWZv3$o-H1CnipSIsxP571sZJ>` zg(n1vq4eQ%Q;r@-*gA#OyWM7CZjoO>Wl$)fANJ>h08~&YYPdp?Sm^KSP)5!JSo+K1 zhrbjgOrSN@FE4su1Z*JD39-qdWuxl62~i=c7%euFjn6;%R_!JaxI&-mMV4@Sp!aR! zN}-O&vr6tdf8Z`VmW-XEY}_>A&(XRKNKsh^-Gcx0ZZfbIg7e3OsA85>JjjST$~+5K zc=JN2euCF^Pzp6zekiyKq2k^@A2i@?A;Z?Px-PzVLOQwvJ<9^*gz>Q|z5l9>wyEo0 zuS%!l_i5qQmcfa9Ax02%ujR2=2@lT9pSfRuO4%M7t{nlt7&PWjjwkb`p~CiV&t=Dz zYAT2gjLwT#i$sgx=ba{(4r+eXH{+|0BZ3{!%1F=ZBlZlP0*PDJIwv;cr#wSnieA3L zXd<^gAh<9Qv@&?LGL>r$7umB0x?`IhU`-7-!>nT@N;9VvqB@5$w>RCh%q+V!8G`Rb z%56oFloyB75BAL@*sz!DgqGUz=Jaz*{%XH*66OxVzMf!73%euj` zPpVy|LfFI`cnMJ53ASV4Ck(gAV!bW&0Jlmb?`m@2F-jgDE<|@8gW<$|bBu+alONG- z5yS5(IpBmA;lEBuZjs9)om{r*_C({kgXN~8-+{U#!jIwK=XFKVYvA!1MGvG_5#iLA z?3b}(k5;v7sUEZ`2kTr~pS51xp;qF>YGmH0J-hIjSr0;1qLNp;cr9-Pl2>Y7((xGMj<8pK-qBui^jPx-lvXdgjd)<~Hv0tKs`vK6SE1hGlkze*8UcHv)OK`Sw&q?XFBG)1d!ER!k>Y!bzp~BuVzLv&lywv5(Q_bDd zKo`X&x0Ny<&<{D}|1QbEbc5ZnKm+hUAYWNl4yfHgd@c-e!0sr3)2`CPMT(JKM(rv`mdb=3>NN{%jBR+r{u%G9CApuT0cB)zn3un#n0r`NzleI3 z?(1Qz&DjkpB%ma2JXD;+e+@K1dX^>dRb1L-W zb@+m;;|2cN?MtRC#?5rCI^-PvE*FmJkSv7)nwkA-O2QUHT>UWK?ra@ztj{b%=-lq4}Ke5Zy=qe@R8T`FiL)Ugy zh&;2Ic}XMU^1IBO_`I75asPHxCH^dS6^{jYI!C$5*Ex3*g0KHA&9}<2v{oVHhh_Wg z80G{QU4F8dwwID=Dn<#Y-HU%?LOF%z@5s!Z;Hq7}?@|WRPP@{AiigIs=r?w7ZR=I{U zA^&h=yUYX1GR|I`fsXz#>@&=|>AYat8QYD(r)+-kj-R`<#u zQs7@gXS#@P`D#&g8pjK#3xT&I7aoXS7^N*s8eqBo{(+=-gl~h34_rS&($_^|3Yaf; z@og2IKsL@%g4Sr9O>Ic;lCPu1> zHG#NONCn>;q8?uevT9iq#n@V;#FMKX&@4DeXQV>8>(@~L?nRP~9|=`nKDy|$otls0 zx@=D$dWw7NX7|@7lT#0i+)EiNva(f(Q59zVD6D7->94R}uo7S*jZzd{l`ga)8rS5K zcmr!Ni)4OnrbMFxA7ln>qj|VIr_xwuwCJ*mdlRPb8xlG%`anMzsL`dXbhdc3%3Krg zb_nJB0|c2s-{6HuR`@6GWd5;XAqk`v|BG3I?^_gEY;<~;!wBgz;#y@*XuF}oAG$8x z_(^2daUFaM{FnWyfR+L{zKH$bPi{RlAhTly=1F_N0s-Zc0ReISpN4Y|#*Vhm4u-~# z^s>f|j{2s?j&ybowsyu2PUgmr*&3I&n`4N-IlTt^UL5Ul7@Ov`5)pX{sHDr;_~pjr z5Lta{@zmyyD5}Q^DqgPNyPuis;FMA=o~U_4WT)R7>FWHxFIrzDw?{0r&mBm~jP0n@ z#?@LB)F)i3Adoq%1m%_o+SH+`N1pG72YB|SpIaL)D zi~#JCXeTUj6A&v z*U+G%0xI6RsdkwR#dAeP6G)8871MA_wR8dSV$73X{<`t7kKOQi>T0vf)w1zve+(($H7 z&yu#uh%AWuby^NFq532!}H54;n!-Je(KG zKWx(3ifg3{9dl}_Cvuu>$?ROkw3wnbh@$0Lf(+VgQsYyC7!&@O1*C|`ND&V*nG-=v@aXNInRVk41|rriX<3K zdJch2w#D};2~RbMMK~z%6w{G9{%xQG*W@we&pI9KRO}r-wt8N^HYRJ6lo3)4h8a^y z4im*63w6Ce$m}t{)DmQRhGVENQA?z8Y_X)SkSWlnV~-)&3K>f6J)!!T{G9#Y)lB+v60 zmHL4_%|Cubu%b%p(;e?;`VPJz**VW@9EdN6$)zG8{~o(YSXyCjmQFqmr@Jw#DO4u= zQ6++RZ3wWw%ZS+p@{;ZCLL*5A%4@S%W0Op%JqU64{#N8zi=}NyS$K1Hdkp@;{OYC$ z+p9yne^k)~dGAL3;>h|MXWI~S;y(MRB=k0$b?eQIXrGNWz zYYMJAWmZNV-k9M$mUP8P(6t2{?Zt=H@wUF}etiQVa3mI~S{Zv4q`v|{wkrDfnnbtR@qvf4xb8NdoP@Ffk$X{~Bsm1YchDFWk(8|q~ zAI1|ET0!}=>GwqX-6(K%!DVf~4Cve}qJ7pECShl~+{T%Tmh4#%?8$2iv6j1U+fM&9 zJ9K&lKJapvN{Bgg$-IsM<=xaP9W!Y?;~!7w_9%g@c=5g$rpI%(3Ll${TJZoMxYc>A>np{BP_-MGUDcoQ7U2w*JBEE66K5I9y z+Ug6fx%R_K50r=)@&ea=9ot7qIshY<^FIi?`}BB28I@LEE^aNcZ75vhvEIO#ln=dI zYlKDdf-9n6fG~9(E8y;iFGY#gvgWOs>=LJ)NCA^~$UYdGFqRxgjG8~qy~>&Y)2+LX zV_~fQ7O-vjO3Vr;>@_YXg}$2<0uo_PHrcdTOo_q+%tLyCm43dkCV4Uwfng+dg3`b? zw*Ne6SQ=5i%2W1XW_ICV9M?fF-*F$a50$URc|<@7r%gvpFAv5%-CGX2(JU5*)QCOM z22SRUSa2c9F7p=;c7RYzk~=bH9_m^Q867ZPf7HHC<^@klw$D5yCrdRUR*>g9q&l1} z7E`BEJ*y(KYAjj1nTJayK@N!dtP!f8jRd9RqR|sceEZ$aPn)s?GO0eq(+^FvZSK#B z2sX%fpsQ4dlNWIfFf>uza8A-%aVtGw1F`=`^x(1)^-4tQK>WS5wD864+e)HV#|8JB zc}%>^+N@^)Ya-MEgRtrT#JfualIJ0)$f{yI_+`O;{0U2Xm7wBFOEn<{K3XAyUA9?7 z;^>Q7OvX{#L^Zn>7Q-vFSBA|+%eQ5dHDTJsL)@`o|GXnGqjtFX1J9?~qm`cE0WkeT zw}+~QcpA~)u#ZrF3xki2Uqgm|svEyx;9>90iFHVB(7^4^a7$lpzIXWM0HxIrtLO;z()!j^P#6lAsn{GktSCCp9W$%(k~D0hH4ae&8}69Viyjm zIu#+-KSvx5oVc>&Wh^6 z&0(94-!-Ii|A)sqrSVXXUd}HDU-J@7dDgc`07nsn7t;PvUw3#HJ+gkX*9!Ys1Qz3Q zB+2b|%vC=AzWnyEZO6iQGm0<&0T94PJ!FiD_h^;cXCeKofDV}1e^3Jk8#1j^TwX8= zOzAV27_(7Y2kF)nN`zPE3nl*{kJoy>nDOm0OY}#O(uz3ry~pSeY~HldEJ%ysE@Vb4 zK?gf%qSspQc$eDFsi$f^x}e1p;h;`ihi-dm)P zGE<4Gj9kr~&>N_aGDEQaBbfCkafsCsoYb7b#`;nlo4QM3or|o4y8}WsmXWeTw}Z$- z_oC*ml;V&6z120Vtl|0;^0i1A=#lZ+z06sq5W;HfJU$}u#zMziP*TrJU6=GeHyIv~ z`aE7oEgrpI?QF(vXp&nI3^tdJUzuwrnlv1q)LLg!=UC4_vl1gl#~|h#m(AU^T5S_X zwHHVNY0#C~IW1&5ORnmow%+lbBzyu!u5gdz^}Y-3-LkcAwR_Marj*yM7_)1byQBE9861 zw~B~msd|a7&=G5Qtfn2m#t%RKCQ|)_&KP8})6M&YJR}w+;I-hKmks$-%<6hJRd6ej z8ZLUb^`R_54f2hgff%>%<)wz@wNH;_EL7OfvQ@JgIufdwKVP*UyCmD{#3}EYK_zF5 z3n}ranKjqi(e?~7NUPkRnq-CLCSS;1b7T;UR5wYxvz3uxGsDxuEgKMp$GAeh+6$>+ z?i_|1Qk>s%wQ?*YjniZQT11hdjY|6l4};;BioxFl3lkXqivf#dW+`%Y5E^OH0Y*SR zK1_$m=2S&>{YcDbb&?(2qa+$CW;{h}G5KxXs0wv}L3}1_de{^T@jhWSy_-aiv z7pAyFZB>~@HYwTKWa0T!WKvQ%j?D?jKct)*!JgLHj8!;youwwdcVy$5P4oJOz(%ws zeqd2W#=7v((}wD8aa-e)KW;x_6c)r9PryiNf#g^P6G2m$rJ}LQZ&NuphU$?-Nqoyo`1_Jtr z4g|#Ue{yt=X2w=l^uo3_j<#0D0An{NK?h^~|JuD!g>(ZfqyE@3C8o>h2tgPHii9C$ z!%Wsuv=C5$)y>yY{1NG3nBo~2V_=@?s#9-Xsn*cYtQ74N0;AP~!Og!lHDyaxKJSP3+=F9#phZ-mi|Xy2k5G^YES z2qf|}&4k|Mr4TEnp-a^dh34j^7^YL#A{?yMK6}t(Xlb)61{c0ctki1T2&BrKWOeYW zhVH%B!>B>-UrpTuyGmJ)X4*O$z+>;=#RyNT@;rJoL4Wa>3!`ml8xHoybFK;jh&M!Z0umfvT`$t<>ue>= zfdu&`4_5_A5*Ti`^`Kd=MshA+!$OSc+bG+^f!H!Nw6ygd4i#JvC!OD*Z1XY5`1>Wo zVL@AmWTM9k2|X<$luv<^jUSWw8E^cK8dL~1=nzT**DP{~%PCfqykCSWU8P!9H_laM zH`F@@1e=0q*b53D()@MJ4y zd2(7rQ_p<}<)xm07Bi2xUCx$^=0TO?$#Sh?TFZ2rz%9UW0US~~3K14@0&(ALEu%)^ zSlgl!2~uS9dx-_dI+tnX=TK-9qHlkP4h^2WA%V&gh{$uhIM$30XlQG$M0rb7eHRHFEJJ`Og8x z{uM}wiom2(O|qW}OGu%NgrzR&HPXgg{d9kzlzO>mS?#~O{jR7ZzS~$NS-Q-1K-OSr1<~ho z@K%H#+kHedY<5Iwi<5s#M0CM0DW&Zagr)_Y$NLn$Hv6#Ogm=EXtXS_#&VI$e#)Dg7 zx}y29-=Kdi_HetT`Hh8bTx1#sn90$iNe}(=Fp-XKG2QU-G2RgHiwU1n8Nhx*dZ}4{ zxN;BZ+soJ1uXl(;4f8Pmus5rf^o^3ZWtHP0r@ zm8!HW&Z*Zd6`M-ku6tw@Nr4A0Zr}lx8%R+oDgPV>eVkWJ1 zdb(pRmQqbMHHXcZ0+Q{42_!itkZKVcCgv8lis*hO6(l)2HB24-bsa_)Q|uqQ_Z_XcSP7<*?PsQ158UX&EOcO7^rS1Utg zqfFjSaBx-Rd9Z5z%MzJ5*J_Yw>SenlY-}CqP*5!2Jp}ax2?cSg| z_n)qX=M(VSI`&VR+#uz7w};{~v9nU??ym(U;U_v6DH>Ux8ocnq9({&!Y~aN&-t|Gx>YV zA?ch`w#el{FGeY|87fBQeYZ6aSXU<(HoMZnIS@eSQNn3nYBImVduz#$GPS`nbb>PU zVv^UddNYKll4OYS?L{bI*imI93=Zeh^mB_OX<(Hkqr{=ok=$osTvNaroXoYZTmJ$B z^AU_gAM7LL*(Skn<>^h5vJJu4WW-F>2W$D)e+@Gwx6_#=b*qhSvMl!m)On1doQ1a&oU{`P$lAO1>Z zy+ge}qP%ouQL@L1;cv;BLzStzqD*|g!%QK`h%wVdiq<7uBwvr27PWI$-&lzCxGz4hB_h+}wwHm?W#Kc`2jH*lQPj4o(ZL&LQenL@vrahm$m<}$nIuX<^o-E>Q6x5MxEv?`0y}572%BK z50S*FE#0-v8+9#&V_#@w-zT^dL^kxrIg@1D`lZyycA|uXrHshGV-A*<;Ed9(#wvH@xWe z>@9|RsNPe@S6Xq`g%yJiAl3o+bQP5x7_(y6ma%nJ2)W4)-*<4K+LkT8|FPrS0i^EH zHlx~BUVBZZN@(|M@WP2R$fqz8-xT5@l?Nxe_|2e$7k56FCw^7@=R-PKFHQ1x`Jf}_ zM83_+9`^2GR9N9W=km27dr&`va-z%>c$`TZn~il}+SFGdrC#5TkKE6qh9jZa)9yIn zZAo}dx5KYP@(uIA8lSw4zW<6EW6gtH7s-nI6T(P?1YG5>%>MU^VLJECF(AUJ^@D@H zQaL4EirF&mHjX9Is6&+PLu@n8^j|jSB8gYF^JEd9h3xbEym#a{`4vuXgQM4o!2_q* z{5&TvR-*y-;&4&ajau%?J}}lYSY6JNA~3dEylLanqkYuE`bE{Qv1ul3QLLR0U;EoL zU?jGb>Uc=vc%lWLX%fmdZw8xkLez0{V3Hw-R+=c!KR(O9o)Xqjv6n&Y%ygTHk`@c$ zG9vMNRdp9S?WN%XK@HL$6GTNy&-kuf5TkN}@gMB?UrtJB2Sv1_G@7vynlWf*-ULCd zvTe=ET~iJ(>fn?gTmT^vfR(r>L^rg#?B8IM*`P@r+O}V=F)f1vL;1&_K=VQyM1IrX zR`s`MEG)TcSnoBKqjA@gb&8k8$j^43vfJYkA9~$|+vA6x)Xb0WFKOB4^WOh1{5|JW z{X_rjGCS-4lkit{Fn2QkU%@!*Qhx;zs>b&(I%z0I>mxuDoL#?zQp*YiiLb|cY^JQ$22FaSEx?zlNBOv&nZ@Q$Lc)GP#lw(K-E=PKV8Hy?&Cr@l_v+@cyCWnlB?+)xPGtf&yPIdiOG`VJaO+R0qm<8b zgAQgeX^np}U_7H2liRuDTP@Z+{jIN8et{rPH#8`&qabhqzCW^JLk|in>U|867gjQ9 z1V$`XBe6_pQ%0{&5J!zCF&%+QIYd;EMZkq2N4@t-4OX3r99y<8Jwlt(AJ=99z!YRc zv#=awg%Fpan|*u^vEqmZhWKpF#~mDXV$9j4bPF1>ZV6}l^~}yQ+$!Ju>>c=! zOJ9Rn6c@&(d>tpqN5~q6(}mV|{YOmz(~etR@VkbMbnc~+XC6jgCLu$xx3@+?A?2K( z4rXlm-)!pu_!doKYR-2mjyN_Ybu|`J$+p|D%xgL5r@IiHylC2?4XTVby|^JkaGzK% z&uFQi<|V=KvN5Zb5m?U18b;07CE-=`n;E+y<7cXbC2a|r8pF@H3~~b+4vj7mNx3E1 zB0+F%|AyEF5Xl}JuoQwq@Q@*M1gkVzD^U;*n+|F0*yLGs6w7(Xa{L>irWDH~5}&|F z5dFbNA)m)nbP7VTEsMmcE?=>nA2HhmcVbd4VcZzB>as!ZiHV5q^|_j3TNLp7cX5Fz z$WM01=(NBm*^%B8>PLJ=)bS#qXQ3$(@gSE7^fEK2OM2Ha7OB9-8=|lURGpApD`WFg*9t-kdz>kn89zOCe)(o_8)=^!@A=qjh=P+Gb98QoNEqom*v3G zT397M{fM0mjlZPx2K(RH z$108>qzMiL#EtNOkxKPH*(Yk_V(wsTV{L5X^uJQ6ELE{rQMUtg!uIts!z9D&al=Uc zgBFiZL^Ifi;|>C30$}SG+0YF9>O(P&O+@NBJ$k|D zjzBX#ob(U{(61;Rk*0g9tMpPi>PGHgx{2b|irs0zfY+`0+3q>JdnxhtlE&JK-{HFZ zswVZ4`|YOA!xO#fgYYZP9hkM`Fq5%v&eJ{)jUj?g`~!^+OgV4kT+E)r6s3K-om-~< z`|IT`C0NN_8@-ug***zsJ(M_Z2?ZCe@uKw`;4H@;rS+S>WiT_o>Cu1fN;_%yk?lUs z@DVyCy4^AbI_(6Gf-{57IeK2A(^|W#J%9P~)WO?*L&Xc)DJEL6JC^SF9T*@`_7QHJ z*rml=o2M_9xhy-asW_MV<~u~zrE0S=7bBZH|8OJVpeSfJm$7e?As!w_ODALbVjr)7 zfZzP^q!`n4(8^zax2qy*YDQU$s?`ynBqX;(WyjlY_zAVdIsNQr>Ie<6mL;j|BiGVo zKczr*I(5FG`O34oxDkc|hSaaIyO_z`MEdTsTyH3Za!D7|;}g&NL|Wb4{^Rt3(k~n9 z(S>%8kT`4t@^`BwAU@Wt2<^JAnp0Fb4_cHj)`#WnGJd!|U$h(uw7$z2BMT=zKXe0W zoZJEt64k1*@A+lHV17B;M@3q&QCmAv1~%N6!cH@}FHT)+?kX#nqrY*ZLFpxroS|HD zjD)8HV^@38DNX0OZQ1dzPT%d&u6zXLX~|BqL5y^ncDs77?Q*of`rZjxYfYo2C`~}vle2=CA_=4+Iy$8opX7oR# z`U!)k`U&C}ze7(~SGGq?Jv+TlN9^CE+Uf74TB)ls_?xQS6-u3%pzL07Q0t~UY%Wut zmLv|RM5?+YbgN=#7s_iLsq`I#liqx#=o`uSZb54=X&Xx_?! z#g)f2@lK>1b+;LrV*aWpf6Y*IaXHwR`5nI%s&J#gL?Ygk_c~>4g<@zzpWumo(L|bp zJOx)(Q_o|@9ce);rF(lDp=~Q9^Q7gyn7lqvI3nWT>ITeZx#rfH3IBF{_QzHIp*$Qu zcl@z-QGJ8B_Qy%iH1qw(ij+q&ug#aD`u@~ z+dn?EinTGffD5Dn`~ptAb%Cd&O^8~8sdU(-+C1YYC@i^`8bNLG!{x{&5Ux4Mb|d~V zdu|~wI7geH#@IbLFEmMWu~OM6=(N;mlFuk=D}RZLvaJTVQZ! zDGj_JCB=SdGluATM-{iUsj9hjWj;%BM^yR(x5+EajB5CPm`Nl2fFpoKGgf>)V03Pz zM_bUgR%q9020IDd4a&%25MSwn!)reLyoG|nd}S2{1FUEft(q}#G8Icv(> z>vVvz9>$v!)68$^gEWs)7YZWo_6nK{Bt z)i-Au5p!P4@aQm~%E8{fvc`wNWXqM@0?az&^fbKv0r2)OkuYv?m!*?Mv2Vr5uia?I z38gCUXVrC-#S@W7Pe@qz4$AFAlgA02ga*2@L#knKREWBj{us%d1jV3?m#(F57JnzG zHWdUm6zp*GD|6)Hbjmgt7(yns$z`@M&G=qu>i1j)g5Sx#PJY4vd$TrCOt*{vj|pP` zk6dQ_ziZawR<;KERwRu76-=eLDfO2Tf!Dm!a`oA#SM^%ha$fmP7O^Q0LKHuVFH<`( zx(It+R`i<+lzuM|e@{F-vH6X_4Vol9%V;Jmef)Cs5gG_z6dgBhj5t&hT`A3l;ZSd- zA4j;jo@88u$^duV?<1T3fN0CmWKZ4Jy#yv=a_ zTC$4AtN0V@=R#m)064fd+zBs@UVOxFEC|L&?}P!xPn9V*i=xuZdIGKI`|Nz#SxYNS zWG{MU46t_{oP|93v|uK|wfkCp{&~S>OH7qBSLxUS@|xoDpY+ZrS@`M|bPhrKY8{Kt zGh(*Q7ebg;Ocy@PoA`1bqDdQm%&jM~yfgg?rj3}NeuHYnfwFiEY3~unxPl~0k673L zjxArbNLLFf5Rj?8D0D*`Zi^KSBE&-`i|mw%JEN5jYLS{C=+ zvo>$?Z~dI(F@I3f@!1eJ?@|WKy?=m9bp4=6%zeFw{we_KHhP%U*;$=D)|q*B2uU4v z{|{Y+yR%M@QFUV6-X-YiUmuL)AHn&4czw?f`S0+%zsTL+CD43my5);r zP4Rsva*H2Nzk<7bD5rIc-X}(NAK3#gYxy)reUZO*J>I$FXLh^4;M3nryS!{4dKb2jPQW;cexQ(Sk_0wb7=Rwh|;+~I77WMs1Lz#w{)ZFYvRtXtU zUOwUF#AYj8_>y`86u&XLka?yI4wVb;zTE$iWmGZF*Adj}?p~hSXgroU;;RrUVH@!z zw2%pf!TPTy-K65Y!L+^H=Ri5sV;KfB`&_vZ#HK}cx?jhFZm1S6@iQ}j0Rh{dyyZV}UbbiC}UxZG1(`32OXW!CeGd6bMye zvw}KC#9$}ynUnyt%<$j+6(Vew7}_g%oDX>s74i}&!U`8wrJo&wbf)01!UPfidflh* zF`Y(QwX}#Av5hUeYK#IM!xc?>nNL_d)WlBGEgb(LF#N>Axn6#I%)IhW{UH z-xQ<^*Q?pPZQJ&4o4ak>wrz8_ZQHhO+t%B*G2f~A~9)y$cxdakl^k*YjNt)#ND z=2K3@VZzt_2)(BO8oxm4qMDhqJJg_F*zGhzDBUcXLLStzFw3v}mbY3`@D(x)QPhD% z5cDzTaAQ~>lf%0Ssv3K$MGmnWSGx`R?JY26L9BPTsbi*`$A8jE6&(g0?g~*OPDMXe z{-7fZA@⪚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ͥZ{RVMs~w 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%0DxbZesA`WX9Pb(cl;Jbd9HJEF3`8B|=N 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 z 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 diff --git a/lib/middleman/vendor/gems/ruby/1.8/environment.rb b/lib/middleman/vendor/gems/ruby/1.8/environment.rb deleted file mode 100644 index 62e01eec..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/environment.rb +++ /dev/null @@ -1,177 +0,0 @@ -# DO NOT MODIFY THIS FILE -module Bundler - file = File.expand_path(__FILE__) - dir = File.dirname(file) - - ENV["PATH"] = "#{dir}/../../../bin:#{ENV["PATH"]}" - ENV["RUBYOPT"] = "-r#{file} #{ENV["RUBYOPT"]}" - - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/json_pure-1.2.0/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/json_pure-1.2.0/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/extlib-0.9.14/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/extlib-0.9.14/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/json-1.2.0/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/json-1.2.0/ext/json/ext") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/json-1.2.0/ext") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/json-1.2.0/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/yui-compressor-0.9.1/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/yui-compressor-0.9.1/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/rack-1.1.0/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/rack-1.1.0/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/shotgun-0.6/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/shotgun-0.6/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/rack-test-0.5.3/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/rack-test-0.5.3/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/haml-2.2.17/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/haml-2.2.17/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/sinatra-1.0.a/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/sinatra-1.0.a/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/sprockets-1.0.2/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/sprockets-1.0.2/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/diff-lcs-1.1.2/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/diff-lcs-1.1.2/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/highline-1.5.1/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/highline-1.5.1/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/templater-1.0.0/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/templater-1.0.0/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/rake-0.8.7/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/rake-0.8.7/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/httpclient-2.1.5.2/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/httpclient-2.1.5.2/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/sinatra-content-for-0.2/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/sinatra-content-for-0.2/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/compass-0.10.0.pre5/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/compass-0.10.0.pre5/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/compass-slickmap-0.2.3/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/compass-slickmap-0.2.3/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/smusher-0.4.2/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/smusher-0.4.2/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/compass-colors-0.3.1/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/compass-colors-0.3.1/lib") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/fancy-buttons-0.3.9/bin") - $LOAD_PATH.unshift File.expand_path("#{dir}/gems/fancy-buttons-0.3.9/lib") - - @gemfile = "#{dir}/../../../../../../Gemfile" - - require "rubygems" unless respond_to?(:gem) # 1.9 already has RubyGems loaded - - @bundled_specs = {} - @bundled_specs["json_pure"] = eval(File.read("#{dir}/specifications/json_pure-1.2.0.gemspec")) - @bundled_specs["json_pure"].loaded_from = "#{dir}/specifications/json_pure-1.2.0.gemspec" - @bundled_specs["extlib"] = eval(File.read("#{dir}/specifications/extlib-0.9.14.gemspec")) - @bundled_specs["extlib"].loaded_from = "#{dir}/specifications/extlib-0.9.14.gemspec" - @bundled_specs["json"] = eval(File.read("#{dir}/specifications/json-1.2.0.gemspec")) - @bundled_specs["json"].loaded_from = "#{dir}/specifications/json-1.2.0.gemspec" - @bundled_specs["yui-compressor"] = eval(File.read("#{dir}/specifications/yui-compressor-0.9.1.gemspec")) - @bundled_specs["yui-compressor"].loaded_from = "#{dir}/specifications/yui-compressor-0.9.1.gemspec" - @bundled_specs["rack"] = eval(File.read("#{dir}/specifications/rack-1.1.0.gemspec")) - @bundled_specs["rack"].loaded_from = "#{dir}/specifications/rack-1.1.0.gemspec" - @bundled_specs["shotgun"] = eval(File.read("#{dir}/specifications/shotgun-0.6.gemspec")) - @bundled_specs["shotgun"].loaded_from = "#{dir}/specifications/shotgun-0.6.gemspec" - @bundled_specs["rack-test"] = eval(File.read("#{dir}/specifications/rack-test-0.5.3.gemspec")) - @bundled_specs["rack-test"].loaded_from = "#{dir}/specifications/rack-test-0.5.3.gemspec" - @bundled_specs["haml"] = eval(File.read("#{dir}/specifications/haml-2.2.17.gemspec")) - @bundled_specs["haml"].loaded_from = "#{dir}/specifications/haml-2.2.17.gemspec" - @bundled_specs["sinatra"] = eval(File.read("#{dir}/specifications/sinatra-1.0.a.gemspec")) - @bundled_specs["sinatra"].loaded_from = "#{dir}/specifications/sinatra-1.0.a.gemspec" - @bundled_specs["sprockets"] = eval(File.read("#{dir}/specifications/sprockets-1.0.2.gemspec")) - @bundled_specs["sprockets"].loaded_from = "#{dir}/specifications/sprockets-1.0.2.gemspec" - @bundled_specs["diff-lcs"] = eval(File.read("#{dir}/specifications/diff-lcs-1.1.2.gemspec")) - @bundled_specs["diff-lcs"].loaded_from = "#{dir}/specifications/diff-lcs-1.1.2.gemspec" - @bundled_specs["highline"] = eval(File.read("#{dir}/specifications/highline-1.5.1.gemspec")) - @bundled_specs["highline"].loaded_from = "#{dir}/specifications/highline-1.5.1.gemspec" - @bundled_specs["templater"] = eval(File.read("#{dir}/specifications/templater-1.0.0.gemspec")) - @bundled_specs["templater"].loaded_from = "#{dir}/specifications/templater-1.0.0.gemspec" - @bundled_specs["rake"] = eval(File.read("#{dir}/specifications/rake-0.8.7.gemspec")) - @bundled_specs["rake"].loaded_from = "#{dir}/specifications/rake-0.8.7.gemspec" - @bundled_specs["httpclient"] = eval(File.read("#{dir}/specifications/httpclient-2.1.5.2.gemspec")) - @bundled_specs["httpclient"].loaded_from = "#{dir}/specifications/httpclient-2.1.5.2.gemspec" - @bundled_specs["sinatra-content-for"] = eval(File.read("#{dir}/specifications/sinatra-content-for-0.2.gemspec")) - @bundled_specs["sinatra-content-for"].loaded_from = "#{dir}/specifications/sinatra-content-for-0.2.gemspec" - @bundled_specs["compass"] = eval(File.read("#{dir}/specifications/compass-0.10.0.pre5.gemspec")) - @bundled_specs["compass"].loaded_from = "#{dir}/specifications/compass-0.10.0.pre5.gemspec" - @bundled_specs["compass-slickmap"] = eval(File.read("#{dir}/specifications/compass-slickmap-0.2.3.gemspec")) - @bundled_specs["compass-slickmap"].loaded_from = "#{dir}/specifications/compass-slickmap-0.2.3.gemspec" - @bundled_specs["smusher"] = eval(File.read("#{dir}/specifications/smusher-0.4.2.gemspec")) - @bundled_specs["smusher"].loaded_from = "#{dir}/specifications/smusher-0.4.2.gemspec" - @bundled_specs["compass-colors"] = eval(File.read("#{dir}/specifications/compass-colors-0.3.1.gemspec")) - @bundled_specs["compass-colors"].loaded_from = "#{dir}/specifications/compass-colors-0.3.1.gemspec" - @bundled_specs["fancy-buttons"] = eval(File.read("#{dir}/specifications/fancy-buttons-0.3.9.gemspec")) - @bundled_specs["fancy-buttons"].loaded_from = "#{dir}/specifications/fancy-buttons-0.3.9.gemspec" - - def self.add_specs_to_loaded_specs - Gem.loaded_specs.merge! @bundled_specs - end - - def self.add_specs_to_index - @bundled_specs.each do |name, spec| - Gem.source_index.add_spec spec - end - end - - add_specs_to_loaded_specs - add_specs_to_index - - def self.require_env(env = nil) - context = Class.new do - def initialize(env) @env = env && env.to_s ; end - def method_missing(*) ; yield if block_given? ; end - def only(*env) - old, @only = @only, _combine_only(env.flatten) - yield - @only = old - end - def except(*env) - old, @except = @except, _combine_except(env.flatten) - yield - @except = old - end - def gem(name, *args) - opt = args.last.is_a?(Hash) ? args.pop : {} - only = _combine_only(opt[:only] || opt["only"]) - except = _combine_except(opt[:except] || opt["except"]) - files = opt[:require_as] || opt["require_as"] || name - files = [files] unless files.respond_to?(:each) - - return unless !only || only.any? {|e| e == @env } - return if except && except.any? {|e| e == @env } - - if files = opt[:require_as] || opt["require_as"] - files = Array(files) - files.each { |f| require f } - else - begin - require name - rescue LoadError - # Do nothing - end - end - yield if block_given? - true - end - private - def _combine_only(only) - return @only unless only - only = [only].flatten.compact.uniq.map { |o| o.to_s } - only &= @only if @only - only - end - def _combine_except(except) - return @except unless except - except = [except].flatten.compact.uniq.map { |o| o.to_s } - except |= @except if @except - except - end - end - context.new(env && env.to_s).instance_eval(File.read(@gemfile), @gemfile, 1) - end -end - -module Gem - @loaded_stacks = Hash.new { |h,k| h[k] = [] } - - def source_index.refresh! - super - Bundler.add_specs_to_index - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/CHANGELOG.markdown b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/CHANGELOG.markdown deleted file mode 100644 index 119d2d06..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/CHANGELOG.markdown +++ /dev/null @@ -1,793 +0,0 @@ -COMPASS CHANGELOG -================= - -0.10.0.pre5 (January 18, 2010) ------------------------------- -* Fixed a bug in the grid builder in ruby 1.8.6 (Credit: [Richard Wöber][der-rich]) -* Better sudo handling for the rails installer via environment variables or prompt. (Credit: Ryan Shaw, Evan Sharp) -* Removed support for the rip package manager. -* Support for scss files in the compass watcher. -* Cache buster timestamps were not working in some cases. -* Make ANSI color output work on windows. -* Command line switch (--boring) to turn off colorized output. -* Strip trailing slash from directory and path configuration variables. -* Added a --poll option to the compass watch subcommand to force polling. -* Fixed a test failure in ruby 1.9 due to faulty test code. -* Move the frameworks directory back to the top level. There's not actually a good reason for it to be buried in the ruby source. -* Upgrade FSSM. (Hopfully) Fixes a watcher issue that caused the watcher to not trigger for some users. -* Silence a deprecation warning in Rails 3. - -0.10.0.pre4 (January 04, 2010) ------------------------------- -* Fixed an FSSM loading issue that broke the compass watcher. -* Fixed some compatibility issues with edge versions of Sass. - -0.10.0.pre3 (January 02, 2010) ------------------------------- - -Bug fixes: - -* [Blueprint] Bug Fix: variable referenced in a non-script context within the - dquo mixin in the fancy_type module. -* [Rails] fixed win32 sudo incompatibility issue in the rails installer template. - (Credit: [Jonathan Silverman][jsilver]) -* [Rails] Update the gem dependencies for the rails installer template. -* If the configuration file changes, wipe out the sass cache and force compilation -* Upgrade the vendored version of FSSM to version 0.1.2. - Fixes some bugs with jruby and adds inotify support for linux. - (Credit: [Travis Tilley][ttilley]) -* Patched hide-text to account for items that are not left aligned. - (Credit: [Josh Pyles][pixelmatrix]) - -Minor Enhancements: - -* Support for SCSS files if haml edge is installed. -* Color any stderr or stdout output from the `Sass::Engine` red during compilation. -* [Configuration] The sass cache location can now be set in the compass config - file using the `cache_dir` property and the cache can be disabled by setting - `cache = false`. -* [Compass Core] `+min-height`, `+min-width`, and `+bang-hack` mixins in the - compass/utilities/general/min.sass module. - (Credit: [Adam Stacoviak][adamstac]) -* [Command Line] If you only want to compile certain files, you can now - specify them when invoking compass compile. E.g. `compass compile src/foo.sass` -* [Compass Core] Split out `+hide-text` as its own mixin. - (Credit: [Andrew Vit][avit]) -* Some code cleanup for the compass project compiler. -* Removed the dependency on RMagic for grid image generation. - (Credit: [Richard Wöber][der-rich]) - -0.10.0.pre2 (November 30, 2009) --------------------------------- -Bug fixes: - -* The line-height in the compass reset should have been 1 and not 1em. -* Fixed the reference in the rails initializer to the compass configuration file. -* Use the correct error formatting function based on what sass version is installed. -* Boolean properties like line_comments can now be set to false in configuration files - -0.10.0.pre1 (November 29, 2009) --------------------------------- - -Deprecated in this release: - -* The usless blueprint "modules" folder will be removed. Please update your - blueprint imports by removing the modules folder. Deprecation warnings will be - emitted if you use the old imports. -* Blueprint mixins that used to accept a "body selector" argument, are now - deprecated, instead you should pass `true` to them and mix them into - the selector of your choice. -* If you are using the `+opacity` or `+inline-block` mixins, you may need to update your imports. -* In your configuration file, setting `http_images_path` to `:relative` is - deprecated in favor of setting `relative_assets` to `true` -* The YUI framework has been extracted to a plugin. - If you use it, please follow the [installation instructions](http://github.com/chriseppstein/yui-compass-plugin) - -Command-Line: - -* The compass command-line tool has been re-written to allow be easier to - use and be more flexible. The old command line is still supported at - this time. "compass help" will get you started on using the new - command line syntax. -* Allow specification of a height for the grid image -* For the truly hardcore compass users, you may now create a - compass project using "compass create my_project --bare" - and you'll have a completely bare project created for you with no - sass files provided for you. -* Get stats on your compass project with "compass stats". You'll - need to install the "css_parser" ruby gem to get stats on your - css files. - -Configuration: - -* The entire configuration infrastructure has been re-written to make it - easier to support the various sources of configuration data (project type, - config file, command line, and hard coded defaults) -* Whether to generate relative links to assets is now controlled by a - separate boolean configuration flag called `relative_assets` in the - configuration file and `--relative-assets` on the command line. - Setting `http_images_path` to `:relative` is deprecated. -* You may now configure the http locations for your project by simply setting - `http_path` for the top level path of the project. You - may also set `http_images_dir`, `http_stylesheets_dir`, and - `http_javascripts_dir` relative to the `http_path` instead of - setting the absolute `http_XXX_path` counterparts. -* You may now configure the fonts directory for your project (fonts_dir). - By default, for standalone projects, it is the "fonts" subdirectory of - your css directory. Rails projects will default to "public/fonts". - -Compass Core: - -* A new helper function `stylesheet_url(path)` can now be used to refer - to assets that are relative to the css directory. -* Compass sprite mixins are now more flexible and feature rich. -* Fixed the append_selector function to allow comma-delimited selectors - for both arguments instead of just the first -* There is no longer any outline on unstyled links in the :active and :focused states. -* IE6 bug fixes for sticky-footer -* New CSS3 Compatibility Mixins. You can import them all with `@import compass/css3.sass` - * `+opacity(amount)` where amount should be between 0 and 1, where 0 is transparent and 1 is opaque. - * `+opaque` and `+transparent` mixins for convenience. Built on top of the opacity mixin. - * `+border-radius(amount)` as well as the following convenience mixins: - * `+border-top-left-radius(amount)` - * `+border-top-right-radius(amount)` - * `+border-top-right-radius(amount)`, - * `+border-bottom-left-radius(amount)` - * `+border-bottom-right-radius(amount)` - * `+border-top-radius(amount)` - * `+border-right-radius(amount)` - * `+border-left-radius(amount)` - * `+border-bottom-radius(amount)` - * `+box-shadow(!horiz_offset, !vert_offset, !blur, !color)` - * `+box-sizing(!sizing_mode)` - * Column support via the following mixins: - * `+column-count` - * `+column-gap` - * `+column-width` - * `+column-rule-width` - * `+column-rule-style` - * `+column-rule-color` - * `+column-rule` - * `+background-clip(clip)` where clip can be `padding-box` or `border-box` - * `+background-origin(origin)` where origin can be `padding-box`, `border-box`, or `content-box` - * `+background-size(size)` where size is a width and height. E.g. "50% 75%" - * `+font-face` should be mixed into the top level of your document. - Usage Example: `+font-face("this name", font-files("this.woff", "woff", "this.otf", "opentype"), "fonts/this.eot", "thisname")` - * Simple Background Gradient Support: - * `+gradient` - Generic background gradient mixin - * `+radial-gradient` - Radial gradient mixin - * `+linear-gradient` - Linear gradient mixin - * `+h-gradient` - Horizontal linear gradient mixin - * `+v-gradient` - Vertical linear gradient mixin - * `+text-shadow` - Create a text shadow effect. - * Transforms Support: - * `+transform` - * `+scale` - * `+rotate` - * `+translate` - * `+skew` - * Transition Support: - * `+transition-property` - * `+transition-duration` - * `+transition-timing-function` - * `+transition-delay` - * `+transition` - * The import for `+inline-block` has moved from compass/utilities/general/inline_block - to compass/css3/inline_block - * The import for `+opacity` has moved from compass/utilities/general/opacity - to compass/css3/opacity - * Note: If you are using the `+opacity` or `+inline-block` mixins, - you may need to update your imports. - -Blueprint: - -* Make the primary blueprint mixins easier to use by allowing them to be nested when passing true as the first argument. - The old approach of passing a selector as the first argument is now deprecated in favor of a simple flag to indicate nesting or not. - -YUI: - -* YUI was upgraded to 2.7.0 -* Yahoo has deprecated the YUI CSS framework, as such YUI has been extracted to a plugin. - If you use it, please install it with: `sudo gem install compass-yui` - -Extensions: - -* Extensions can now be installed locally by unpacking them into a project's - "extensions" directory. Rails projects use "vendor/plugins/compass/extenstions". -* Extensions can deliver html to projects if they like. The html can be in - haml and will be transformed to html and can contain inline, compass-enabled - sass. -* All files can be processed using ERB before being copied into the user's - project. -* Compass extensions can now add support for other application frameworks. - These extensions can help compass understand the project structure of that - framework as well as provide runtime integration for ruby-based apps. - Contact me if you plan to do this -- the first couple times may be a little - rough. -* Compass extensions can now add new command line commands. Contact me if you - plan to do this -- the first couple times may be a little rough. -* Extensions can now provide help documentation just after a project is - created and on demand when the user uses the command line help system. - This can be done via the manifest file or by adding a USAGE.markdown file - at the top level of the framework template. - -Miscellaneous: - -* The compass configuration object is no longer a singleton, this makes it - possible for other ruby software to manage multiple compass projects at a - time. -* Compass no longer requires rubygems in order to work, this is a ruby - best-practice. -* All sass provided by compass now uses css-style property syntax. -* The command line tool is now tested using the cucumber testing framework. - -Many thanks to the following Contributors: - - * Brandon Mathis - CSS3 (+opacity, +border-radius) and sprites - * Eric Meyer - CSS3 (+box-shadow, +columns, +box-sizing) - * Jacques Crocker - Merb Compatibility fixes - * Gabriel Mansour - Fixes to +unstyled-link - * John Debs - IE6 Fixes for +sticky-footer - * Brian Johnson - Upgraded to YUI 2.7.0 - * Beau Smith - fixing my dyslexia. - -0.8.17 (September 24, 2009) ---------------------------- - -* The enumerate function now accepts an optional fourth parameter that specifies the separator to be used. - Enables fixing a bug in the Compass 960 Plugin. - -0.8.16 (September 12, 2009) ---------------------------- - -* Fixed a bug in compass that assumed compass extensions would provide stylesheets. - -0.8.15 (September 5, 2009) --------------------------- - -* Upgrade the FSSM library to 0.0.6 to fix bugs on windows. - - -0.8.14 (September 2, 2009) --------------------------- - -* Upgrade the FSSM library to 0.0.4 to fix bugs and enable FS Events on Mac OS. - -0.8.13 (August 30, 2009) ------------------------- - -* [Blueprint] Mixins have been added for these as +prepend-top and +append-bottom and grid classes will be generated by +blueprint-grid. -* [Command Line] The watch mode has been re-implemented to use the FSSM library by Travis Tilley. OSX users will - now have support for filesystem monitoring. Fixes an infinite looping bug that occured with syntax users. - -0.8.12 (August 22, 2009) ------------------------- - -Bug Fix Release: - -* [Compass Core] Bug fix to sprites: fixed width and height assignments for x and y position variables -* Ruby 1.9.1 fix: binding for parse_string -* [Rails] Don't suggest creating a stylesheet link to partials. - - -0.8.10 (August 16, 2009) ------------------------- -Bug Fix Release: - -* Write files in binary mode to avoid data corruption when installing images on windows. - Fixes [Issue #39](http://github.com/chriseppstein/compass/issues/#issue/39) - -0.8.9 (August 9, 2009) ----------------------- -Bug Fix Release: - -* [Blueprint] The default screen.sass generated invalid selectors due to improper nesting. A better fix is coming in the next release. - -0.8.8 (July 21, 2009) ---------------------- - -Bug Fix Release: - -* [Compass Core] Fixed a bug in alternating_rows_and_columns. Improper nesting caused some styles to be improperly rendered. - [Commit](http://github.com/chriseppstein/compass/commit/e277ed2cd3fded0b98ddaa87fc4d3b9d37cb7354) -* [YUI] Fixed a bug in yui grids where the .first div wouldn't get the right styles in some rare cases due to incorrect nesting. - [Commit](http://github.com/chriseppstein/compass/commit/4bfcef4f376ee6e5d5a2b47419d2f21ef4c6eff8) - - -0.8.7 (July 09, 2009) ---------------------- - -Bug Fix Release: - -* Load haml-edge only if it's all new and shiny. Closes GH-26. - [Commit](http://github.com/chriseppstein/compass/commit/59a6067b3a67a79bfd9a5ce325fc1be4bb6c9e78) -* [Blueprint] Added more descriptive comments to the Blueprint IE template. - [Commit](http://github.com/chriseppstein/compass/commit/8684966be1e8166a986ae81abd3daf6c44ed4f94) -* [Rails] Fixed a bug in rails integration if the request is not set on the controller. - [Commit](http://github.com/chriseppstein/compass/commit/7fba6028d8073a9124a6505aab9246b5b459db34) -* [Blueprint] Fixed a bug in the calculations for the +colborder mixin. Closes GH-25. - [Commit](http://github.com/chriseppstein/compass/commit/d2b1370c80a32f70ae6ec94126b737f4f0fc0851) - -0.8.6 (July 08, 2009) ---------------------- - -### Rails - -* The rails installer now correctly references the haml 2.2 dependency. - [Commit](http://github.com/chriseppstein/compass/commit/85bb337f50a3a3dfaafa2820d5463f7296140c9e) - by [Filip Tepper][filiptepper]. -* When installing into a new rails project, set the http paths correctly for stylesheets and javascripts - in the configuration file. - [Commit](http://github.com/chriseppstein/compass/commit/94e9696b30a9a9fd750c45e6fe3c2bc93eba506a) -* Fixed a bug in asset hosts support when compiling outside the context of a controller. - [Commit](http://github.com/chriseppstein/compass/commit/6b8bbd22b13ef4c329777913a633948e66e3da99) - -### Command Line - -* Fixed a bug that caused the output after installing to not display the conditional comments. - [Commit](http://github.com/chriseppstein/compass/commit/48a0356ad8bc7b965e64f82498a9adcc1872abad) - -### Compass Core - -* Fixed a copy & paste error in image_url() that caused the http_images_path to not get picked up unless the - http_stylesheets_path was also set. - [Commit](http://github.com/chriseppstein/compass/commit/b7a9772efb89b2b882d3fafe02813c0fc650719a) - -0.8.5 (July 06, 2009) ---------------------- - -The Compass::TestCase class now inherits from ActiveSupport::TestCase if it exists. -[Commit](http://github.com/chriseppstein/compass/commit/71d5ae8544d1c5ae49e28dcd6b3768fc39d7f01c) - -0.8.4 (July 06, 2009) ---------------------- - -Fixed a bug in rails integration introduced in 0.8.3. - -0.8.3 (July 06, 2009) ---------------------- - -Note: Compass now depends on the stable release of haml with version 2.2.0 or greater. - -### Compass Core - -* A new helper function `stylesheet_url(path)` can now be used to refer to assets that are relative to the css directory. - [Commit](http://github.com/chriseppstein/compass/commit/ff5c8500144272ee2b94271b06cce1690cbbc000). -* Cross browser ellipsis mixin is now available. Use `compass -p ellipsis` to install it into your project since it - requires some additional assets. - [Commit](http://github.com/chriseppstein/compass/commit/3d909ceda997bdcde2aec09bd72e646098389e7d). - -### Blueprint - -* The +colruler mixin now accepts an argument for the color. - [Commit](http://github.com/chriseppstein/compass/commit/a5393bbb7cd0941ab8add5be188aea1d6f9d4b00) - by [Thomas Reynolds][tdreyno]. - -### Extensions - -* A bug was fixed related to how javascript installation as part of an extension manifest. - [Commit](http://github.com/chriseppstein/compass/commit/a5393bbb7cd0941ab8add5be188aea1d6f9d4b00) - by [dturnbull][dturnbull]. -* When installing a file, the :like option can now be set to have it installed into the - same location as what it is like. E.g. `file 'foo.xml', :like => :css` will install - the foo.xml file into the top level of the project's css directory. - [Commit](http://github.com/chriseppstein/compass/commit/21cfce33db81e185ce5517818844a9849b5a836e). - -### Configuration -* Setting `http_images_path` to `:relative` is now **deprecated**. Instead, please set `relative_assets` to - `true`. - [Commit](http://github.com/chriseppstein/compass/commit/956c437fe9ffaad08b6b34d91b6cfb80d6121a2f). -* New configuration option `http_path` can be used to set the project's path relative to the server's root. - Defaults to "/". The http paths to images, stylesheets, and javascripts are now assumed to be relative to that - path but can be overridden using the `http_images_path`, `http_css_path`, `http_javascripts_path`. - [Commit](http://github.com/chriseppstein/compass/commit/6555ab3952ae37d736d54f43ee7053c2a88f4a69). - -### Command Line - -* A new command line option `--relative-assets` can be used to cause links to assets generated - via compass helper functions to be relative to the target css file. - [Commit](http://github.com/chriseppstein/compass/commit/956c437fe9ffaad08b6b34d91b6cfb80d6121a2f). - -0.8.2 (July 04, 2009) ---------------------- - -Fixed a bug that caused touch to fail on windows due to open files. (Contributor: Joe Wasson) - -0.8.1 ------ - -Fixed some build issues and a bug in the rewritten --watch mode that caused changes to partials to go unnoticed. - -0.8.0 ------ - -### Rails - -* image_url() now integrates with the rails asset handling code when - stylesheets are generated within the rails container. - **This causes your rails configuration for cache busting and asset hosts - to be used when generating your stylesheets**. Unfortunately, all - that code runs within the context of a controller, so the stylesheets - have to be generated during first request to use this functionality. If you - need to compile stylesheets offline, use the compass configuration file to set - the asset_host and asset_cache_buster. - [Commit](http://github.com/chriseppstein/compass/commit/998168160b11c8702ded0a32820ea15b70d51e83). - -* An official Rails template for Compass is now [provided][rails_template]. - [Commit](http://github.com/chriseppstein/compass/commit/f6948d1d58818ef8babce8f8f9d775562d7cd7ef) - by [Derek Perez][perezd]. - -### Blueprint - -* The Blueprint port has been upgraded to match Blueprint 0.9. The following changes were made as part - of that project: - * Removed body margins from blueprint scaffolding by default. - The old body styles can be reinstated by mixing +blueprint-scaffolding-body into your body selector(s). - [Commit](http://github.com/chriseppstein/compass/commit/45af89d4c7a396fae5d14fab4ef3bab23bcdfb6a) - by [Enrico Bianco][enricob]. - * A bug in the calculations affecting the +colborder mixin has been fixed. - [Commit](http://github.com/chriseppstein/compass/commit/4b33fae5e5c5421580ba536116cb10194f1318d1) - by [Enrico Bianco][enricob]. - Related [commit](http://github.com/chriseppstein/compass/commit/0a0a14aab597d2ec31ff9d267f6ee8cfad878e10). - * Blueprint now has inline form support. Mix +blueprint-inline-form into a form selector to make it inline. - [Commit](http://github.com/chriseppstein/compass/commit/56c745b939c763cfcc5549b54979d48ab1309087) - by [Enrico Bianco][enricob]. - * Please update the conditional comment that surrounds your IE stylesheet to use "lt IE 8" as the condition - as these styles are not needed in IE8. New blueprint projects will now use this conditional as their default. - [Commit](http://github.com/chriseppstein/compass/commit/77f6e02c0ec80d2b6fd19e611ced02be003c98ae) - by [Enrico Bianco][enricob]. - * Explicitly define image interpolation mode for IE so that images aren't jagged when resizing. - [Commit](http://github.com/chriseppstein/compass/commit/63075f82db367913efcce5e1d0f5489888e86ca4) - by [Enrico Bianco][enricob]. - -* When starting a new project based on Blueprint, a more complete screen.sass file will be - provided that follows compass best practices instead of matching blueprint css exactly. A - partials/_base.sass file is provided and already set up for blueprint customization. - [Commit](http://github.com/chriseppstein/compass/commit/11b6ea14c3ee919711fa4bdce349f88b64b68d51) - -* The sizes and borders for form styling can now be altered via mixin arguments. - [Commit](http://github.com/chriseppstein/compass/commit/b84dd3031b82547cff8e1ef1f85de66d98cd162b) - by [Thomas Reynolds][tdreyno]. - -* Grid borders can now be altered via mixin arguments. - [Commit](http://github.com/chriseppstein/compass/commit/0a0a14aab597d2ec31ff9d267f6ee8cfad878e10) - by [Thomas Reynolds][tdreyno]. - -* The reset file for blueprint has moved from compass/reset.sass to blueprint/reset.sass. Please - update your imports accordingly. Also note that some of the reset mixin names have changed - (now prefixed with blueprint-*). - [Commit](http://github.com/chriseppstein/compass/commit/2126240a1a16edacb0a758d782334a9ced5d9116) - by [Noel Gomez][noel]. - -### Compass Core - -* **Sprites**. A basic sprite mixin is now available. Import compass/utilities/sprites.sass and use the +sprite-img - mixin to set the background image from a sprite image file. Assumes every sprite in the sprite image - file has the same dimensions. - [Commit](http://github.com/chriseppstein/compass/commit/1f21d6309140c009188d350ed911eed5d34bf02e) - by [Thomas Reynolds][tdreyno]. - -* **Reset**. The compass reset is now based on [Eric Meyer's reset](http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/). - which makes no attempt to apply base styles like the blueprint reset does. **Existing compass projects - will want to change their reset import to point to blueprint/reset.sass** -- which is where the old - default reset for compass projects now lives -- see the blueprint notes above for more information. - [Commit](http://github.com/chriseppstein/compass/commit/2126240a1a16edacb0a758d782334a9ced5d9116) - by [Noel Gomez][noel]. - -* A bug was fixed in the tag_cloud mixin so that it actually works. - [Commit](http://github.com/chriseppstein/compass/commit/be5c0ff6731ec5e0cdac73bc47f5603c3db899b5) - by [Bjørn Arild Mæland][Chrononaut]. - -### Sass Extensions - -* The inline_image(image_path) function can now be used to generate a data url that embeds the image data in - the generated css file -- avoiding the need for another request. - This function works like image_url() in that it expects the image to be a path - relative to the images directory. There are clear advantages and disadvantages to this approach. - See [Wikipedia](http://en.wikipedia.org/wiki/Data_URI_scheme) for more details. - NOTE: Neither IE6 nor IE7 support this feature. - [Commit](http://github.com/chriseppstein/compass/commit/5a015b3824f280af56f1265bf8c3a7c64a252621). - -### Configuration - -* **Asset Hosts**. You can now configure the asset host(s) used for images via the image_url() function. - Asset hosts are off unless configured and also off when relative urls are enabled. - [Commit](http://github.com/chriseppstein/compass/commit/ef47f3dd9dbfc087de8b12a90f9a82993bbb592e). - In your compass configuration file, you must define an asset_host algorithm to be used like so: - # Return the same host for all images: - asset_host {|path| "http://assets.example.com" } - # Return a different host based on the image path. - asset_host do |path| - "http://assets%d.example.com" % (path.hash % 4) - end - - -* **Configurable Cache Buster**. You can now configure the cache buster that gets placed at the end of - images via the image_url function. This might be useful if you need to coordinate the query string - or use something other than a timestamp. - [Commit](http://github.com/chriseppstein/compass/commit/ef47f3dd9dbfc087de8b12a90f9a82993bbb592e) - Example: - asset_cache_buster do |path, file| - "busted=true" - end - -* You can now set/override arbitrary sass options by setting the sass_options configuration property - to a hash. [Commit](http://github.com/chriseppstein/compass/commit/802bca61741db31da7131c82d31fff45f9323696). - -* You can now specify additional import paths to look for sass code outside the project. - [Commit](http://github.com/chriseppstein/compass/commit/047be06a0a63923846f53849fc220fb4be69513b). - This can be done in two ways: - 1. By setting additional_import_paths to an array of paths. - 2. By (repeatedly) calling add_import_path(path) - -* The compass configuration can now be placed in PROJECT_DIR/.compass/config.rb if you so choose. - [Commit](http://github.com/chriseppstein/compass/commit/69cf32f70ac79c155198d2dbf96f50856bee9504). - - -### Command Line - -* **Watch Improvements** The watch command was rewritten for robustness and reliability. The most - important change is that generated css files will be deleted if the originating sass file is removed while - watching the project. [Commit](http://github.com/chriseppstein/compass/commit/0a232bd922695f6f659fac9f90466745d4425839). - -* The images and javascripts directories may now be set via the command line. - [Commit](http://github.com/chriseppstein/compass/84aec053d0109923ea0208ac0847684cf09cefc1). - -* The usage output (-h) of the command-line has been reformatted to make it more readable and understandable. - [Commit](http://github.com/chriseppstein/compass/f742f26208f4c5c783ba63aa0cc509bb19e06ab9). - -* The configuration file being read can now be specified explicitly using the -c option. - This also affects the output location of the --write-configuration command. - NOTE: The -c option used to be for writing the configuration file, an infrequently used option. - [Commit](http://github.com/chriseppstein/compass/d2acd343b899db960c1d3a377e2ee6f58595c6b1). - -* You can now install into the current working directory by explicitly setting the command line mode to -i - and providing no project name. - [Commit](http://github.com/chriseppstein/compass/f742f26208f4c5c783ba63aa0cc509bb19e06ab9). - -### Compass Internals - -* Some internal code was reorganized to make managing sass extensions and functions more manageable. - -* Some internal code was reorganized to make managing ruby application integration more manageable. - -* The compass unit tests were reorganized to separate rails testing from other tests. - -* The [Rip Packaging System](http://hellorip.com) is now supported. - [Commit](http://github.com/chriseppstein/compass/commit/56f36577c7654b93a349f74abf274327df23402b) - by [Will Farrington](http://github.com/wfarr). - -* A [licence is now available](http://github.com/chriseppstein/compass/blob/master/LICENSE.markdown) - making the copyrights and terms of use clear for people who care about such things. - - -0.6.14 ------- - -Extracted the css validator to an external gem that is only required if you try to use the validation feature. -This makes the compass gem a lot smaller (0.37MB instead of 4MB). To install the validator: - - sudo gem install chriseppstein-compass-validator --source http://gems.github.com/ - -0.6.8 thru 0.6.13 ------------------ - -The compass gem is now built with Jeweler instead of Echoe. No changes to speak of. These versions were bug -fixes and working out the new release process. - -0.6.7 ------ - -Bug fix release. - -### Rails - -The output_style will no longer be set in the compass.config file. Instead compass will use the runtime rails environment to set a sensible default. - -### Command Line - -The Sass cache directory will be placed into the sass directory of the project instead of the directory from where the compass command was ran. - -### Compass Core - -Extracted two new mixins from +horizontal-list. The new +horizontal-list-container and +horizontal-list-item mixins can be used to build your -horizontal list when you need more control over the selectors (E.g. when working with nested lists). - -0.6.6 ------ - -The Haml project now releases a gem called haml-edge that is built from the haml master branch instead of stable. Compass now depends on this gem and will continue to do so until haml 2.2 is released. This should reduce the number of installation problems that have been encountered by new users. - -### Command Line - -* Fixed a bug that had broken the --write-configuration (-c) option. -* The --force option will now force recompilation. Useful when the stylesheets don't appear to need a recompile according to the file timestamps. - -### Unit tests - -* Some unit tests were cleaned up for clarity and to better take advantage of the compass project management facilities. - -0.6.5 ------ - -### Compass Core - -Converted all mixins definitions referencing images to use the new sass function image\_url(). The following mixins were affected: - -* +pretty-bullets -* +replace-text - -The calls to these mixins should now pass a path to the image that is relative to the images directory of the project. - -### Command Line - -* Required frameworks specified from the command line will now be added into the initial project configuration file. - -0.6.4 ------ - -### Command Line - -Added a command line option --install-dir that will emit the directory where compass is installed. Useful for debugging and drilling into the compass examples and libraries. - -0.6.3 ------ - -### Rails - -Bug fix: The http_images_path configuration default should be "/images" instead of "/public/images". - -### Command Line - -These changes, coupled with upcoming changes to Sass result in significantly reduced time spent on compilation for large projects. - -* The compass command line will no longer recompile sass files that haven't changed (taking import dependencies into account). -* The compass command line will now respect the -q (quiet) option during compilation. Additionally, the quiet option will be set by default when watching a project for changes. - -0.6.2 ------ - -### Blueprint - -Split the push and pull mixins into sub-mixins that separate the common styles from the ones that vary. The generated css when using presentational class names will be smaller as a result. The existing +push and +pull mixins continue to work as expected. The following mixins were added: - - +push-base - +push-margins - +pull-base - +pull-margins - -Additonally, the liquid plugin was updated to have a span mixin that matches elsewhere. - -### YUI - -Added Yahoo's version of the css reset. To use it, mix into the top level of your project: - - @import yui/modules/reset.sass - +reset - -### Rails - -* Conditionally defining #blank? on String/NilClass (Erik Bryn ) -* Set compass environment in plugin based on RAILS_ENV (Lee Nussbaum ) - -0.6.1 ------ - -Maintenance release that fixes several bugs in the handling of configuration files. - -0.6.0 ------ - -### New Core Functionality: **Patterns** - -Patterns give a framework or plugin access to the compass installer framework -to install customizable sass, html as well as image and javascript assets. - -A pattern is a folder in the plugin's templates directory. It must -have a manifest file that tells compass what to install and where. -Unlike the project template, a pattern can be stamped out any number of -times. - -It is best for pattern stylesheets to only provide example usage to get -the user started. All the core styles for the pattern should be -distributed as part of the framework's stylesheets as mixins to -facilitate easy upgrades and bug fixing on the part of the pattern's -maintainer. - -Example Usage: -compass --framework blueprint --pattern buttons - -Please read the -[Wiki Page](http://wiki.github.com/chriseppstein/compass/patterns) for more information. - -### New Command-line options: - -1. --validate
    - Validate your project's compiled css. Requires java and probably only works on Mac and Unix. -2. --grid-img [DIMENSIONS]
    - Generate a background image to test grid alignment. Dimension is given as - +. Defaults to 30+10. -3. -p, --pattern PATTERN
    - When combined with with the --framework option, will stamp a plugin's pattern named PATTERN. -4. -n, --pattern-name NAME
    - When combined with the --pattern option, the pattern that gets stamped out will - be isolated in subdirectories named NAME. -5. -c, --write-configuration
    - Emit a compass configuration file into the current directory, taking any existing configuration - file and any command line options provided into account. (command line options override - configuration file options). - -### New Sass Functions: - -Compass projects can call these sass functions within their sass files, if you find them useful. - -1. enumerate(prefix, start, end)
    - Generates selectors with a prefix and a numerical ending - counting from start to end. E.g. enumerate("foo", 1, 3) returns "foo-1, foo-2, foo-3" -2. image_url(path)
    - Uses the compass configuration to convert a path relative to the compass - project directory to a path that is either absolute for serving in an HTTP - context or that is relative to whatever css file the function was being - compiled into. In the future, this function may also tap into the rails - asset host configuration. - -### New Compass Core Mixins - -1. +float-left & +float-right
    - In order to include fixes for IE's double-margin bug universally, - floats were implemented as a utility mixins. These are available by importing - compass/utilities/general/float.sass which also imports the clearfix module. -2. +pie-clearfix
    - Implementation of the - [position-is-everything clearfix](http://www.positioniseverything.net/easyclearing.html) - that uses content :after. - -### Blueprint 0.8 - -The Compass port of Blueprint has been upgraded from 0.7.1 to 0.8.0. The 0.8.0 release -brings many bug fixes and a few backward incompatible changes if you use it's presentational -classnames (you don't do that, do you?). Upgrading to 0.8 is automatic when you upgrade to -compass 0.6.0. The Blueprint team didn't release a detailed changelog for me to point at here. -One of the key features of the release was the inclusion of three new core blueprint plugins -(a.k.a. folders you can copy). These are what prompted the development of the compass patterns -feature and two of them are packaged as patterns: - -1. Buttons
    - To install: compass --framework blueprint --pattern buttons
    - Then follow your nose. -2. Link Icons
    - To install: compass --framework blueprint --pattern link\_icons
    - Then follow your nose. - -The third plugin is the RTL (right-to-left) plugin. To use this one, simply import it after the import -of the blueprint grid and your mixins will be redefined to work in a left to right manner. Additionally, -it provides +rtl-typography mixin that works in conjunction with +blueprint-typography and should be mixed -in with it. - -Lastly, I've rewrote some of the presentational class name generation code so that it very nearly -matches the blueprint CSS. Please note that they are not 100% the same because we fix some bugs -that are not yet fixed in blueprint-css and we use a different clearfix implementation. - -### Bug Fixes - -1. A Safari bug related to the +clearfix mixin was resolved. -2. Running the compass command line installer a second time. - -### Bugs Introduced - -Almost definitely. Please let me know if you encounter any problems and I'll get a patch out - -[tdreyno]: http://github.com/tdreyno -[noel]: http://github.com/noel -[enricob]: http://github.com/enricob -[perezd]: http://github.com/perezd -[Chrononaut]: http://github.com/Chrononaut -[rails_template]: http://github.com/chriseppstein/compass/raw/4e7e51e2c5491851f66c77abf3f15194f2f8fb8d/lib/compass/app_integration/rails/templates/compass-install-rails.rb -[dturnbull]: http://github.com/dturnbull -[filiptepper]: http://github.com/filiptepper -[pixelmatrix]: http://github.com/pixelmatrix -[jsilver]: http://github.com/jsilver -[avit]: http://github.com/avit -[der-rich]: http://github.com/der-rich -[adamstac]: http://github.com/adamstac -[ttilley]: http://github.com/ttilley diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/LICENSE.markdown b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/LICENSE.markdown deleted file mode 100644 index 8e61ae60..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/LICENSE.markdown +++ /dev/null @@ -1,29 +0,0 @@ -Copyright (c) 2009 Christopher M. Eppstein - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. -No attribution is required by products that make use of this software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -Except as contained in this notice, the name(s) of the above copyright -holders shall not be used in advertising or otherwise to promote the sale, -use or other dealings in this Software without prior written authorization. - -Contributors to this project agree to grant all rights to the copyright -holder of the primary product. Attribution is maintained in the source -control history of the product. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/README.markdown b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/README.markdown deleted file mode 100644 index 0b04d84f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/README.markdown +++ /dev/null @@ -1,56 +0,0 @@ -# Compass -A [Sass][sass]-based CSS Meta-Framework that allows you to mix and match any of the following CSS frameworks: - -- [Compass Core][compass_core_website] - [Wiki Documentation][compass_core_wiki] -- [Blueprint][blueprint_website] - [Wiki Documentation][bleuprint_wiki] -- [960][ninesixty_website] - [Wiki Documentation][ninesixty_wiki] -- [Susy][susy_website] - [Wiki Documentation][susy_wiki] -- [YUI][yui_website] - [Wiki Documentation][yui_wiki] -- New frameworks and extensions are [tracked on the wiki][plugins_wiki] as they are created. -- Other frameworks can be added relatively easily. Create your own! - -## Compass Provides - -1. A [command line tool][command_line_wiki] for managing your Sass projects. -2. Simple integration with [Ruby-on-Rails][ruby_on_rails_wiki], [Merb][merb_wiki], [StaticMatic][static_matic_wiki], and even [non-ruby application servers][command_line_wiki]. -3. Loads of Sass mixins to make building your website a snap. - -## Quick Start - - $ (sudo) gem install compass - $ compass create my_compass_project --using blueprint - $ cd my_compass_project - $ compass watch - -## More Information -Please see the [wiki][wiki] - -## Author -Compass is written by [Chris Eppstein][chris_eppstein].
    -Chris is the Software Architect of [Caring.com][caring.com] and a member of the [Sass][sass] core team. - -## License -Copyright (c) 2008-2009 Christopher M. Eppstein
    -All Rights Reserved.
    -Released under a [slightly modified MIT License][license]. - -[sass]: http://sass-lang.com/ "Syntactically Awesome StyleSheets" -[compass_core_website]: http://github.com/chriseppstein/compass/tree/master/frameworks/compass -[compass_core_wiki]: http://github.com/chriseppstein/compass/wikis/compass-core-documentation -[blueprint_website]: http://blueprintcss.org/ -[bleuprint_wiki]: http://github.com/chriseppstein/compass/wikis/blueprint-documentation -[yui_website]: http://developer.yahoo.com/yui/grids/ -[yui_wiki]: http://github.com/chriseppstein/compass/wikis/yui-documentation -[plugins_wiki]: http://github.com/chriseppstein/compass/wikis/compass-plugins -[ninesixty_website]: http://960.gs/ -[ninesixty_wiki]: http://github.com/chriseppstein/compass/wikis/960gs-documentation -[command_line_wiki]: http://wiki.github.com/chriseppstein/compass/command-line-tool -[wiki]: http://github.com/chriseppstein/compass/wikis/home -[ruby_on_rails_wiki]: http://wiki.github.com/chriseppstein/compass/ruby-on-rails-integration -[merb_wiki]: http://wiki.github.com/chriseppstein/compass/merb-integration -[static_matic_wiki]: http://wiki.github.com/chriseppstein/compass/staticmatic-integration -[chris_eppstein]: http://chriseppstein.github.com -[caring.com]: http://www.caring.com/ "Senior Care Resources" -[license]: http://github.com/chriseppstein/compass/tree/master/LICENSE.markdown -[susy_website]: http://www.oddbird.net/susy/ -[susy_wiki]: http://github.com/chriseppstein/compass/wikis/susy-documentation \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/REVISION b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/REVISION deleted file mode 100644 index ce685447..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/REVISION +++ /dev/null @@ -1 +0,0 @@ -9503512782eba7e387ba0dec14e5cfe1f3c0f22b \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/Rakefile b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/Rakefile deleted file mode 100644 index 3fc95592..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/Rakefile +++ /dev/null @@ -1,167 +0,0 @@ -if ENV['RUN_CODE_RUN'] - # We need to checkout edge haml for the run>code>run test environment. - if File.directory?("haml") - Dir.chdir("haml") do - sh "git", "fetch" - sh "git", "reset", "--hard", "origin/stable" - end - else - sh "git", "clone", "git://github.com/nex3/haml.git" - end - $LOAD_PATH.unshift "haml/lib" -end - -require 'rubygems' -require 'rake' -$:.unshift File.join(File.dirname(__FILE__), 'lib') -require 'compass' -require 'rcov/rcovtask' - -# ----- Default: Testing ------ - -task :default => :run_tests - -require 'rake/testtask' -require 'fileutils' - -Rake::TestTask.new :run_tests do |t| - t.libs << 'lib' - t.libs << 'test' - t.libs << 'haml/lib' if ENV["RUN_CODE_RUN"] - test_files = FileList['test/**/*_test.rb'] - test_files.exclude('test/rails/*', 'test/haml/*') - t.test_files = test_files - t.verbose = true -end -Rake::Task[:test].send(:add_comment, <= 2.2.14') - gemspec.files = [] - gemspec.files << "CHANGELOG.markdown" - gemspec.files << "README.markdown" - gemspec.files << "LICENSE.markdown" - gemspec.files << "REVISION" - gemspec.files << "VERSION.yml" - gemspec.files << "Rakefile" - gemspec.files << "deps.rip" - gemspec.files += Dir.glob("bin/*") - gemspec.files += Dir.glob("examples/**/*.*") - gemspec.files -= Dir.glob("examples/**/*.css") - gemspec.files -= Dir.glob("examples/**/*.html") - gemspec.files -= Dir.glob("examples/*/extensions/**") - gemspec.files += Dir.glob("frameworks/**/*") - gemspec.files += Dir.glob("lib/**/*") - gemspec.files += Dir.glob("test/**/*.*") - gemspec.files -= Dir.glob("test/fixtures/stylesheets/*/saved/**/*.*") - gemspec.test_files = Dir.glob("test/**/*.*") - gemspec.test_files -= Dir.glob("test/fixtures/stylesheets/*/saved/**/*.*") - gemspec.test_files += Dir.glob("features/**/*.*") - end -rescue LoadError - puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com" -end - -desc "Record the current git revision." -task :REVISION do - require 'git' - - repo = Git.open('.') - open("REVISION", "w") do |f| - f.write(repo.object("HEAD").sha) - end -end - -desc "Commit the revision file." -task :commit_revision => :REVISION do - require 'git' - repo = Git.open('.') - repo.add("REVISION") - repo.commit("Record current revision for release.") -end - -task :release => :commit_revision - -task :gem => :build - -desc "Compile Examples into HTML and CSS" -task :examples do - linked_haml = "tests/haml" - if File.exists?(linked_haml) && !$:.include?(linked_haml + '/lib') - puts "[ using linked Haml ]" - $:.unshift linked_haml + '/lib' - end - require 'haml' - require 'sass' - require 'pathname' - require 'lib/compass' - require 'lib/compass/exec' - FileList['examples/*'].each do |example| - next unless File.directory?(example) - puts "\nCompiling #{example}" - puts "=" * "Compiling #{example}".length - Dir.chdir example do - load "bootstrap.rb" if File.exists?("bootstrap.rb") - Compass::Exec::SwitchUI.new(["--force"]).run! - end - # compile any haml templates to html - FileList["#{example}/**/*.haml"].each do |haml_file| - basename = haml_file[0..-6] - engine = Haml::Engine.new(open(haml_file).read, :filename => haml_file) - puts " haml #{File.basename(basename)}" - output = open(basename,'w') - output.write(engine.render) - output.close - end - end -end - -namespace :git do - task :clean do - sh "git", "clean", "-fdx" - end -end - -require 'cucumber/rake/task' - -namespace :rcov do - Cucumber::Rake::Task.new(:cucumber) do |t| - t.rcov = true - t.rcov_opts = %w{--exclude osx\/objc,gems\/,spec\/,features\/ --aggregate coverage.data} - t.rcov_opts << %[-o "coverage"] - end - - Rcov::RcovTask.new(:units) do |rcov| - rcov.libs << 'lib' - rcov.libs << 'haml/lib' if ENV["RUN_CODE_RUN"] - test_files = FileList['test/**/*_test.rb'] - test_files.exclude('test/rails/*', 'test/haml/*') - rcov.pattern = test_files - rcov.output_dir = 'coverage' - rcov.verbose = true - rcov.rcov_opts = %w{--exclude osx\/objc,gems\/,spec\/,features\/ --aggregate coverage.data} - rcov.rcov_opts << %[-o "coverage" --sort coverage] - end - - - desc "Run both specs and features to generate aggregated coverage" - task :all do |t| - rm "coverage.data" if File.exist?("coverage.data") - Rake::Task["rcov:units"].invoke - Rake::Task["rcov:cucumber"].invoke - end -end - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/VERSION.yml b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/VERSION.yml deleted file mode 100644 index d0ed1358..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/VERSION.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -:patch: 0 -:major: 0 -:minor: 10 -:build: pre5 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/bin/compass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/bin/compass deleted file mode 100755 index f816f3e9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/bin/compass +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env ruby -# The compass command line utility - -# This allows compass to run easily from a git checkout without install. -def fallback_load_path(path) - retried = false - begin - yield - rescue LoadError - unless retried - $: << path - retried = true - retry - end - raise - end -end - -fallback_load_path(File.join(File.dirname(__FILE__), '..', 'lib')) do - require 'compass' - require 'compass/exec' -end - - -command_line_class = Compass::Exec::Helpers.select_appropriate_command_line_ui(ARGV) -exit command_line_class.new(ARGV).run! diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/README.markdown b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/README.markdown deleted file mode 100644 index b00d5709..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/README.markdown +++ /dev/null @@ -1,4 +0,0 @@ -To build the examples: - -1. You can run the compass command line from any particular compass example project -2. You can compile them all by running `rake examples` at the top of the project directory. \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/config.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/config.rb deleted file mode 100644 index bbb651ed..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/config.rb +++ /dev/null @@ -1,7 +0,0 @@ -# Require any additional compass plugins here. -project_type = :stand_alone -css_dir = "stylesheets" -sass_dir = "src" -images_dir = "images" -output_style = :compact -relative_assets = true diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/images/grid.png b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/images/grid.png deleted file mode 100644 index 129d4a29fbe92688aabed5638e0c4f73a7bca818..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<>!3HEX<>xE|QY^(zo*^7SP{WbZ0pxQQctjR6 zFmQbUVMeDlCNqG7G9|7NCBgY=CFO}lsSJ)O`AMk?Zka`?<@rU~#R|^B#xt(DF$2|k zc)B=-cyuP$eEj#lzKxOL5tEL~%H%~Gtu@#d^DPnSv6>KM@XEpK;0k6FVdQ&MBb@06Zo?vj6}9 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/index.html.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/index.html.haml deleted file mode 100644 index 3b25dc6e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/index.html.haml +++ /dev/null @@ -1,85 +0,0 @@ -!!! -%html{ :lang => "en" } - %head - %meta{ :content => "text/html; charset=utf-8", "http-equiv" => "Content-Type" } - %title - Blueprint test pages - / - Framework CSS - %link{ :href => "stylesheets/screen.css", :rel => "stylesheet", :media => "screen, projection", :type => "text/css" } - %link{ :href => "stylesheets/index.css", :rel => "stylesheet", :media => "screen, projection", :type => "text/css" } - %link{ :href => "stylesheets/print.css", :rel => "stylesheet", :media => "print", :type => "text/css" } - / - [if IE]> "0", :border => "0", :cellpadding => "0" } - %tr - %th.span-6 - Test page - %th.span-8 - Main files tested - %th.span-10 - Description - %tr - %td - %a{ :href => "parts/grid.html" } - Grid - %td - %a{ :href => "../../frameworks/blueprint/stylesheets/blueprint/_grid.sass" } - grid.sass - %td - Tests classes provided by the grid module. - %tr.even - %td - %a{ :href => "parts/elements.html" } - Typography - %td - %a{ :href => "../../frameworks/blueprint/stylesheets/blueprint/_typography.sass" } - typography.sass - %td - Tests HTML elements which gets set in the typography module. - %tr - %td - %a{ :href => "parts/forms.html" } - Forms - %td - %a{ :href => "../../frameworks/blueprint/stylesheets/blueprint/_form.sass" } - form.sass - %td - Tests classes and default look provided by the form module. - %p - %em - %strong - Note about the css files: - These test files utilize the css files that are generated from - %a{ :href => "http://haml.hamptoncatlin.com/docs/rdoc/classes/Sass.html" } - Sass templates - \. - In other words, if you change any of the source files, - you'll have to re-build them with - %code - rake examples - to see any changes. - .box - %p - For more information and help, try these resources: - %ul.bottom - %li - %a{ :href => "http://code.google.com/p/blueprintcss" } - The Blueprint home page. - %li - %a{ :href => "http://groups.google.com/group/blueprintcss" } - Our anything-goes mailing list. - %li - %a{ :href => "http://bjorkoy.com" } - The blog where news about Blueprint gets posted. - %p - %a{ :href => "http://validator.w3.org/check?uri=referer" } - %img.top{ :src => "parts/valid.png", :height => "31", :alt => "Valid HTML 4.01 Strict", :width => "88" } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/elements.html.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/elements.html.haml deleted file mode 100644 index f6039e46..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/elements.html.haml +++ /dev/null @@ -1,282 +0,0 @@ -!!! -%html{ :lang => "en" } - %head - %meta{ :content => "text/html; charset=utf-8", "http-equiv" => "Content-Type" } - %title - Blueprint HTML Elements Tests - / - Framework CSS - %link{ :href => "../stylesheets/screen.css", :rel => "stylesheet", :media => "screen, projection", :type => "text/css" } - %link{ :href => "../stylesheets/print.css", :rel => "stylesheet", :media => "print", :type => "text/css" } - / - [if IE]> "http://www.google.com" } - \<a> a + href - %p - %abbr{ :title => "extended abbr text should show when mouse over" } - \<abbr> abbr - extended text when mouseover. - %br - %acronym{ :title => "extended acronym text should show when mouse over" } - \<acronym> acronym - extended text when mouseover. - %address - \<address> - %br - Donald Duck - %br - Box 555 - %br - Disneyland - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore dolore. - .span-8 - %table{ :cellspacing => "0", :border => "0", :summary => "This is the summary text for this table.", :cellpadding => "0" } - %caption - %em - A standard test table with a caption, tr, td elements - %tr - %th.span-4 - Table Header One - %th.span-4.last - Table Header Two - %tr - %td - TD One - %td - TD Two - %tr - %td{ :colspan => "2" } - TD colspan 2 - %table{ :cellspacing => "0", :border => "0", :summary => "This is the summary text for this table.", :cellpadding => "0" } - %caption - %em - A test table with a thead, tfoot, and tbody elements - %thead - %tr - %th.span-4 - Table Header One - %th.span-4.last - Table Header Two - %tfoot - %tr - %td{ :colspan => "2" } - tfoot footer - %tbody - %tr - %td - TD One - %td - TD Two - %tr - %td - TD One - %td - TD Two - %tbody - %tr - %td - TD One - %td - TD Two - %tr - %td - TD One - %td - TD Two - .span-8.last - %pre - \<pre> - pre space1 - pre space1 - pre space2 - pre space2 - pre tab - pre tab - %code - \<code> - Not indented - indent1 - indent1 - indent2 - indent3 - %tt - \<tt> - This tt text should be monospaced - and - wrap as if - one line of text - even though the code has newlines, spaces, and tabs. - It should be the same size as <p> text. - %hr - %p - %a{ :href => "http://validator.w3.org/check?uri=referer" } - %img.top{ :src => "valid.png", :height => "31", :alt => "Valid HTML 4.01 Strict", :width => "88" } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/forms.html.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/forms.html.haml deleted file mode 100644 index 741706c5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/forms.html.haml +++ /dev/null @@ -1,192 +0,0 @@ -!!! -%html{ :lang => "en" } - %head - %meta{ :content => "text/html; charset=utf-8", "http-equiv" => "Content-Type" } - %title - Blueprint Forms Tests - / - Framework CSS - %link{ :href => "../stylesheets/screen.css", :rel => "stylesheet", :media => "screen, projection", :type => "text/css" } - %link{ :href => "../stylesheets/print.css", :rel => "stylesheet", :media => "print", :type => "text/css" } - / - [if lt IE 8]> "", :method => "post" } - %fieldset - %legend - Simple sample form - %p - %label{ :for => "dummy0" } - Text input (title) - %br - %input#dummy0.title{ :name => "dummy0", :type => "text", :value => "Field with class .title" } - %p - %label{ :for => "dummy1" } - Another field - %br - %input#dummy1.text{ :name => "dummy1", :type => "text", :value => "Field with class .text" } - %p - %label{ :for => "dummy2" } - Textarea - %br - %textarea#dummy2{ :name => "dummy2", :rows => "5", :cols => "20" } - %p - %input{ :type => "submit", :value => "Submit" } - %input{ :type => "reset", :value => "Reset" } - .span-12.last - .error - This is a <div> with the class - %strong - \.error - \. - %a{ :href => "#" } - Link - \. - .notice - This is a <div> with the class - %strong - \.notice - \. - %a{ :href => "#" } - Link - \. - .success - This is a <div> with the class - %strong - \.success - \. - %a{ :href => "#" } - Link - \. - %fieldset - %legend - Select, checkboxes, lists - %p - %label{ :for => "dummy3" } - Select field - %br - %select#dummy3{ :name => "dummy3" } - %option{ :value => "1" } - Ottawa - %option{ :value => "2" } - Calgary - %option{ :value => "3" } - Moosejaw - %p - %label{ :for => "dummy4" } - Select with groups - %br - %select#dummy4{ :name => "dummy4" } - %option - Favorite pet - %optgroup{ :label => "mammals" } - %option - dog - %option - cat - %option - rabbit - %option - horse - %optgroup{ :label => "reptiles" } - %option - iguana - %option - snake - %p - %label - Radio buttons - %br - %input{ :name => "example", :type => "radio" } - Radio one - %br - %input{ :name => "example", :type => "radio" } - Radio two - %br - %input{ :name => "example", :type => "radio" } - Radio three - %br - %p - %label - Checkboxes - %br - %input{ :type => "checkbox" } - Check one - %br - %input{ :type => "checkbox" } - Check two - %br - %input{ :type => "checkbox" } - Check three - %br - .span-24.last - %fieldset - %legend - Alignment - %p - %label{ :for => "dummy5" } - Select field - %select#dummy5{ :name => "dummy5" } - %option{ :value => "1" } - Ottawa - %option{ :value => "2" } - Calgary - %option{ :value => "3" } - Moosejaw - %p - %label{ :for => "dummy6" } - Text input (title) - %input#dummy6.title{ :name => "dummy6", :type => "text", :value => "Field with class .title" } - %p - %label{ :for => "dummy7" } - Select field - %select#dummy7{ :name => "dummy7" } - %option{ :value => "1" } - Ottawa - %option{ :value => "2" } - Calgary - %option{ :value => "3" } - Moosejaw - %label{ :for => "dummy8" } - Another field - %input#dummy8.text{ :name => "dummy8", :type => "text", :value => "Field with class .text" } - .span-24.last - %form.inline{ :action => "", :method => "post" } - %fieldset - %legend - A form with class "inline" - .span-3 - %label{ :for => "a" } - Label A: - %select#a{ :name => "a" } - %option{ :value => "0" } - All - .span-2 - some text - .span-3 - %input#o.checkbox{ :type => "checkbox", :name => "o", :value => "true", :checked => "checked" } - checkbox one - .span-3 - %label{ :for => "b" } - Label B: - %select#b{ :name => "b" } - %option{ :value => "0" } - All - .span-2 - %a{ :href => "" } - A Hyperlink - .span-8 - %input#q.text{ :type => "text", :name => "q", :value => "Field with class .text" } - .span-2.last - %input.button{ :type => "submit", :value => "submit" } - / WTF This doesn't render correctly without some space. -   - %hr - %p - %a{ :href => "http://validator.w3.org/check?uri=referer" } - %img.top{ :src => "valid.png", :height => "31", :alt => "Valid HTML 4.01 Strict", :width => "88" } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/grid.html.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/grid.html.haml deleted file mode 100644 index 1e2f5f13..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/grid.html.haml +++ /dev/null @@ -1,274 +0,0 @@ -!!! -%html{ :lang => "en" } - %head - %meta{ :content => "text/html; charset=utf-8", "http-equiv" => "Content-Type" } - %title - Blueprint Grid Tests - / - Framework CSS - %link{ :href => "../stylesheets/screen.css", :rel => "stylesheet", :media => "screen, projection", :type => "text/css" } - %link{ :href => "../stylesheets/print.css", :rel => "stylesheet", :media => "print", :type => "text/css" } - / - [if IE]> "test-small.jpg" } - .span-10.last - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - .span-2 - %img.push-2{ :src => "test-small.jpg" } - .span-10.last - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - .span-2 - %img.push-3{ :src => "test-small.jpg" } - .span-10.last - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - .span-2 - %img.push-4{ :src => "test-small.jpg" } - .span-10.last - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - .span-2 - %img.push-5{ :src => "test-small.jpg" } - .span-10.last - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - .span-12.last - %h5 - TESTING .PULL-1 TO .PULL-5 - .span-10 - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - .span-2.last - %img.top.pull-1{ :src => "test-small.jpg" } - .span-10 - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - .span-2.last - %img.top.pull-2{ :src => "test-small.jpg" } - .span-10 - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - .span-2.last - %img.top.pull-3{ :src => "test-small.jpg" } - .span-10 - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - .span-2.last - %img.top.pull-4{ :src => "test-small.jpg" } - .span-10 - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - .span-2.last - %img.top.pull-5{ :src => "test-small.jpg" } - .span-24 - %p - %a{ :href => "http://validator.w3.org/check?uri=referer" } - %img.bottom{ :src => "valid.png", :height => "31", :alt => "Valid HTML 4.01 Strict", :width => "88" } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/test-small.jpg b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/test-small.jpg deleted file mode 100644 index aa599d99a94cd487a44ad9bf7e2388d45e863238..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1886 zcmaKmc{H2p0>;1OO9&+zTc-p?EJ2OEcE!}b#?l_tt&15&7+Wl*t`@0QEwvLQE!t!( zwePJqrDJKUA)&U?L{qdnC`Q$|aqm56PXD>TbKXDR^E~hGeGaD&7lGprHug3E1OgG$ z6Vn5L!&$%@fPM!E1EEk528SI1=Y#(TJ|6tMgFpxfAP~pC=STtpK@bjuBX|`dL4=?X zQkVx4`F-*K-3|u;6av5i1|S3lKv5771vz{Mpn;=xAn-T*2sj_W+b6(Fe>@Hx{R@IH z2<*Qd$kB2>6d)=urftbDu7FTDS_MQmzvexVf&d@@LjJZLnIJqNFVjZxWKb9k z-#(0G<}Q+%MO( zqd-n|D*o3Vlq~4xB5IMmmUE?Hj2u$v8LESk&0Dj*@!BzJvEyF1ZL^>`guj40l*e+= z8l=|k6D6b+RcF}!Mmp2*3t&ON9W0PU;6L~vdvMLPO;B|6!8krNkU4v;!InIJr-iN) zOtshSBHIj=2C5|n!GBF(QdIg08Jm!-AMWw)R`5bQ!-PsZD@76PKlg?9=!;$K=tAkT z)!ldZCIZddBYfs?#|zQAy;ssMoOI2fL$7eJ2WG5O9i-+twh`g`^6*U9``#&GsMDYp z?fTGzk7tW}j!Ryh2wAc_HoNg>&U1d_DdycvVCh$@%e7N_Vl=1QHc>K$jjizUBqyh+ zhc)%8hkzVAzf;Pqx)4iRq;tw>J$290Z;Yq>?%R8@!YvkBq+{@-PtoF; zjCI-3VZ36UZnu&DWF@^LCRgT*x4GU659d66|MMwvUkf6bpG{mAS{uuQy$D_gVMQvJ z?U7n#42cc=X?EQXi#U(7-`IQ=vHOOkA8w|WOFONpprQ!GuBhy}vxvR4rUR+jryEJl zs|6FPZX6%|$S}mqY}wlq)Z5EcJ+9}bVwS*D2HMx9t7=gx0gE&mtaM5+xF#zSLANMb zrQT)nk-B>-AGf`EyBpiV8N+`~X1iqL*qx_*P!j4!*r%OHaS_28WWu`sNWw{%VSRPU zYE5cLZ(Xb55PowqPNa{BGtR=vjARZ(ldJb)Dudke3p_b~6%H?OoO4qBUL6f1URM1A z_3kU%L{jD)b=bw%G7d~ws9ePC7!KR1*bAT7`aPUG)l&0_V0YrT_|MGbHUHq$$z$Fs zwZ)2erYWtK_ZzU$PP_3v=QSvUy^5+~0!qGozyO9@zgWeY>0rE1PIejF8+sz_u7G>& z+PB_;%~$`Cv8>FZVV#v*Pr`;Yl`Jq4;sKpniS|+}sVE5Rj(PV1qYrsYEX9XmebY76{Y~<(yMEZWkhe59d$tLPZtuCZAMm=0pgGqTr zNz$`LC%4r`8xW<->A=nPL z5H2So!-<(oTufl~_oZQ3y%z<=yeZwN_v~ij=>~Zd4*@m1Q{?gH9$JOOD*JH)js=Nj#Liui&N|q7g469fm!GK zsLF@6oc1$As?KNUqX9kJG&kCFb#rwgh1pqBxRrC-rAVb4qKFQ2y)gN#XE!t@NnkxJ zVl)W7ePtp{mnn_wbk2~Y2J$5szcwQ*t zTUvHtTy95Q1kv?ryqs1#UVz#qT}w})_+);o|CB=ZcXZYvlL-b|(ami|msB>9_ih1J zKAK}njQy&y^3kk|{%0&rTT+_y8oA###ZxVEzfQiwFDta0+|)MmC=jid+3E3(H=YT^ z?^~*32y)db#x)Ov8sJVzSN~DI)_PvkIvVZqR{0NLr49W93^n)H#=v;bEx$FwzJ_*; z$*;_ru0>m?=fEqMdDbk(kom8vGg- z>#tQ$_{MbwpvCa#9~#6%)BoI3(<(5q&LbOa5K;90j#0RY112<5Xs-K)sa;xb$I8ux6pYvz PE=Dy;BAn$@58wP7Zj&W} diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/test.jpg b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/parts/test.jpg deleted file mode 100644 index 0107be27349330250c3c28f52ef5dd58a25690ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35467 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 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/src/ie.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/src/ie.sass deleted file mode 100644 index 7af9162b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/src/ie.sass +++ /dev/null @@ -1,3 +0,0 @@ -@import blueprint.sass - -+blueprint-ie \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/src/images/grid.png b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/src/images/grid.png deleted file mode 100644 index 129d4a29fbe92688aabed5638e0c4f73a7bca818..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^8bB<>!3HEX<>xE|QY^(zo*^7SP{WbZ0pxQQctjR6 zFmQbUVMeDlCNqG7G9|7NCBgY=CFO}lsSJ)O`AMk?Zka`?<@rU~#R|^B#xt(DF$2|k zc)B=-cyuP$eEj#lzKxOL5tEL~%H%~Gtu@#d^DPnSv6>KM@XEpK;0k6FVdQ&MBb@06Zo?vj6}9 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/src/print.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/src/print.sass deleted file mode 100644 index 8e5d49d8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/src/print.sass +++ /dev/null @@ -1,3 +0,0 @@ -@import blueprint.sass - -+blueprint-print \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/src/screen.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/src/screen.sass deleted file mode 100644 index 9c336708..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_default/src/screen.sass +++ /dev/null @@ -1,8 +0,0 @@ -@import blueprint.sass -@import blueprint/scaffolding.sass -@import compass/reset.sass - -+blueprint -// Remove the scaffolding when you're ready to start doing visual design. -// Or leave it in if you're happy with how blueprint looks out-of-the-box -+blueprint-scaffolding diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/config.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/config.rb deleted file mode 100644 index 16f4235d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/config.rb +++ /dev/null @@ -1,8 +0,0 @@ -# Require any additional compass plugins here. -project_type = :stand_alone -css_dir = "stylesheets" -sass_dir = "src" -images_dir = "images" -output_style = :compact -relative_assets = true - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/buttons/cross.png b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/buttons/cross.png deleted file mode 100644 index 1514d51a3cf1b67e1c5b9ada36f1fd474e2d214a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 655 zcmV;A0&x9_P)uEoyT++I zn$b9r%cFfhHe2K68PkBu*@^<$y+7xQ$wJ~;c5aBx$R=xq*41Wo zhwQus_VOgm0hughj}MhOvs#{>Vg09Y8WxjWUJY5YW zJ?&8eG!59Cz=|E%Ns@013KLWOLV)CObIIj_5{>{#k%TEAMs_GbdDV`x-iYsGH z#=Z{USAQA>NY(}X7=3{K8#4^nI0$7`a(T+P4hBKZ7hk58-_j0w;$<(*=f7ic$nT z*Wgd55in08>183j3?S=MAoDDTLoLSL$!_UDxXqSf-?qdd@H%8(We~hQu&uVIo$6NV z(zMY7wn6r5i617ZGZ)-J($xXssTcN*&WujcIDRIp6J4_PqOvJ}9!p6+yo8LmAGS3~ xN#Qq?aIt$6X#&>gHs{AQG2a)rMyf zFQK~pm1x3+7!nu%-M`k}``c>^00{o_1pjWJUTfl8mg=3qGEl8H@}^@w`VUx0_$uy4 z2FhRqKX}xI*?Tv1DJd8z#F#0c%*~rM30HE1@2o5m~}ZyoWhqv>ql{V z1ZGE0lgcoK^lx+eqc*rAX1Ky;Xx3U%u#zG!m-;eD1Qsn@kf3|F9qz~|95=&g3(7!X zB}JAT>RU;a%vaNOGnJ%e1=K6eAh43c(QN8RQ6~GP%O}Jju$~Ld*%`mO1p!3HEX<>xE|QY^(zo*^7SP{WbZ0pxQQctjR6 zFmQbUVMeDlCNqG7G9|7NCBgY=CFO}lsSJ)O`AMk?Zka`?<@rU~#R|^B#xt(DF$2|k zc)B=-cyuP$eEj#lzKxOL5tEL~%H%~Gtu@#d^DPnSv6>KM@XEpK;0k6FVdQ&MBb@06Zo?vj6}9 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/doc.png b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/doc.png deleted file mode 100644 index 834cdfaf48a509ca51d93250fb28dd12e5ea0a13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 777 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 TVebF6xa6h0np~yK+tB|9OTxo9 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/feed.png b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/feed.png deleted file mode 100644 index 315c4f4fa62cb720326ba3f54259666ba3999e42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 691 zcmV;k0!;mhP)bpQb1=l6TxbDZwj&S={?7%qx-u`rsG(Zp`-rh=e^=%((1yvsuf5d=&62Zj)Y zH&JviNS_F4_Hj|T(1j4$p-!}kixP9&dB4uv^MveG?dGf%sUCoc2!IFxD6wHRA2^dX zXRVk!-qSfk(jcaUKn#RP48(whfPlJUpApdrA!TQi_4D+fVoM;3I0gZ8{=Xv~Po;geVA+Em9@0Wq2 zr>OTZEGR05L=gf1T;ucCxq6Q6EgJiH@@-lVaAlQyw`jIF^c=&IVnj|95hHbE_cnt| zTzZQ?F4Ne@(bH(~&3nM%m)I@ID{@jJ2qZPjr)jhpe9hViOwH5k&|T#EmmL3(vHeUQ zq^!t^Al6JD;=mHq^Bg?J-8-zG2Od7gZbknG;K9czYjPqG*xjPo0k(c4%lPXTpw(qq z@aGMnxtFS(np+2kC} z7P02O874ZkJH$v#nCUVx$({yDN`IX@o2wyvTD#e`qN`_w5<}$3F+_z1iyEv%?$mbQ(# zwJpuiQJP8?X_`#S8b+U_G6=ziYB!xPAcq{)ZJ0bECH@ zYx#`n8^Wzn^J!4>=q^bltNO15ry?0ecSLkjpT@vlid!jk)Fjf7&)q_V5zGs#3N%6* zbW~7Hg=&P0&~Y(|g>$hC9FL?;ttzPDZbpZu9OLb33^e2;FNTGJxScp1&q4M+y2ntQ z?C(=hpU$3~`Thx0eHwi0x`q+!d5k@|0_WHe%sG3e-s^MM`xM-ig!VcIA7H}X1ot~L zg=MLB4w-Q;Bi!!u2|I+Qb;0{{4Q53YX6+4_aXena{nmt*!YG7ua~`qc>o=?@U?rOU znS7%>klzi*muXnbM6i@4FR@s^8vTjDgy&%J?w?`u>NYMDFa_2%0SQ(qJE<3=<8Bzo zfdU60e*y(^$RF%r$kl)p7=7tlCDa$+J7w>}DU(O#~fk>pYuRvHi1E9^msg{tLeV XM&GIRvfA7%00000NkvXXu0mjf&%8>| diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/pdf.png b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/pdf.png deleted file mode 100644 index 8f8095e46fa4965700afe1f9d065d8a37b101676..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 591 zcmV-V0~O9lw>B8WRlD)Gm}Jrz31u-X&&gn2lvjs=i{7nIaL6v2==uw+8Lcs(8j27 z;|c`rmSv@Lx!heopGP^^Ieb3f=R!%Lpp$}iMS-&P3EJ)s48wrJ_Ni0~k|c47D2nj= z{jS6bt|kFpFf|p5cM`_&0Zh|`rfEp0(}=}lT#(6RpzAsUfxv^LSYX>WlAaN$>)*J5 z0#sE+JRUD8iT9*fz{)_^7@6P&!sEjTcD+I9Z4YjT1`wH@fV{cEvneYGFU%maIEU2s55&K(LixD|{p-uiS@?KNj zk-Go8G$hH6g002ovPDHLkV1hVj1#|!a diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/visited.png b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/visited.png deleted file mode 100644 index ebf206def2729dae1fa9e8c5c9e5a95b7176c45b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46990 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 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/xls.png b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/link_icons/xls.png deleted file mode 100644 index b977d7e52e2446ea01201c5c7209ac3a05f12c9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 663 zcmV;I0%-k-P)^@R5;6x zlTS!gQ5431_q{u#M2 zg&W%y6a}>qj1Z|7Vu&-DW6d~k-n;jnHsjb-q#u0C^W!_5^C=MlKq<8oNCQ6qS00!X z5eI;XP=g!^f}j{hku}E1zZ?XCjE;`p19k(Rh%^AQQ54xysU+ocx$c#f61Z4HnT#3u~FR(3>BnZniMIF4DouI8Hi4u>cAK%EN)5PO(ip3(% zIgBx+QYirR){Z8QwV$9Z(Mpt=L-Or3#bf-G@66}txq0yc*T(zNTBDT0T8rO^JeNbSI-Tzf5!pBioy4NwAN^?iN#{;fH1Jke4Xa`^fR8m z%h6dq%xX)S?7`zae))(Xst^Scp6B8FejQW?RLTM8@0=vnnntuRGBM2dpo>gbCnTD= z^<;=JuqdSf@O>Z8^XdR?s+KEfhDdB_#ahFj^giCtzT(s8kA$AViyTqaAR;KGaLzUU z<=GqA4bRwpX|IG~*x>pZ!@zLr`XQ`od>m(`;jz|M_*1GDO#$7;n74ppb8=eiqh760 x0yt}J1#p`gw$`o!R{d7zU9~!Un@nJV{4bstt4Au+Up@c;002ovPDHLkV1kWhGjjj{ diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/test-small.jpg b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/test-small.jpg deleted file mode 100644 index aa599d99a94cd487a44ad9bf7e2388d45e863238..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1886 zcmaKmc{H2p0>;1OO9&+zTc-p?EJ2OEcE!}b#?l_tt&15&7+Wl*t`@0QEwvLQE!t!( zwePJqrDJKUA)&U?L{qdnC`Q$|aqm56PXD>TbKXDR^E~hGeGaD&7lGprHug3E1OgG$ z6Vn5L!&$%@fPM!E1EEk528SI1=Y#(TJ|6tMgFpxfAP~pC=STtpK@bjuBX|`dL4=?X zQkVx4`F-*K-3|u;6av5i1|S3lKv5771vz{Mpn;=xAn-T*2sj_W+b6(Fe>@Hx{R@IH z2<*Qd$kB2>6d)=urftbDu7FTDS_MQmzvexVf&d@@LjJZLnIJqNFVjZxWKb9k z-#(0G<}Q+%MO( zqd-n|D*o3Vlq~4xB5IMmmUE?Hj2u$v8LESk&0Dj*@!BzJvEyF1ZL^>`guj40l*e+= z8l=|k6D6b+RcF}!Mmp2*3t&ON9W0PU;6L~vdvMLPO;B|6!8krNkU4v;!InIJr-iN) zOtshSBHIj=2C5|n!GBF(QdIg08Jm!-AMWw)R`5bQ!-PsZD@76PKlg?9=!;$K=tAkT z)!ldZCIZddBYfs?#|zQAy;ssMoOI2fL$7eJ2WG5O9i-+twh`g`^6*U9``#&GsMDYp z?fTGzk7tW}j!Ryh2wAc_HoNg>&U1d_DdycvVCh$@%e7N_Vl=1QHc>K$jjizUBqyh+ zhc)%8hkzVAzf;Pqx)4iRq;tw>J$290Z;Yq>?%R8@!YvkBq+{@-PtoF; zjCI-3VZ36UZnu&DWF@^LCRgT*x4GU659d66|MMwvUkf6bpG{mAS{uuQy$D_gVMQvJ z?U7n#42cc=X?EQXi#U(7-`IQ=vHOOkA8w|WOFONpprQ!GuBhy}vxvR4rUR+jryEJl zs|6FPZX6%|$S}mqY}wlq)Z5EcJ+9}bVwS*D2HMx9t7=gx0gE&mtaM5+xF#zSLANMb zrQT)nk-B>-AGf`EyBpiV8N+`~X1iqL*qx_*P!j4!*r%OHaS_28WWu`sNWw{%VSRPU zYE5cLZ(Xb55PowqPNa{BGtR=vjARZ(ldJb)Dudke3p_b~6%H?OoO4qBUL6f1URM1A z_3kU%L{jD)b=bw%G7d~ws9ePC7!KR1*bAT7`aPUG)l&0_V0YrT_|MGbHUHq$$z$Fs zwZ)2erYWtK_ZzU$PP_3v=QSvUy^5+~0!qGozyO9@zgWeY>0rE1PIejF8+sz_u7G>& z+PB_;%~$`Cv8>FZVV#v*Pr`;Yl`Jq4;sKpniS|+}sVE5Rj(PV1qYrsYEX9XmebY76{Y~<(yMEZWkhe59d$tLPZtuCZAMm=0pgGqTr zNz$`LC%4r`8xW<->A=nPL z5H2So!-<(oTufl~_oZQ3y%z<=yeZwN_v~ij=>~Zd4*@m1Q{?gH9$JOOD*JH)js=Nj#Liui&N|q7g469fm!GK zsLF@6oc1$As?KNUqX9kJG&kCFb#rwgh1pqBxRrC-rAVb4qKFQ2y)gN#XE!t@NnkxJ zVl)W7ePtp{mnn_wbk2~Y2J$5szcwQ*t zTUvHtTy95Q1kv?ryqs1#UVz#qT}w})_+);o|CB=ZcXZYvlL-b|(ami|msB>9_ih1J zKAK}njQy&y^3kk|{%0&rTT+_y8oA###ZxVEzfQiwFDta0+|)MmC=jid+3E3(H=YT^ z?^~*32y)db#x)Ov8sJVzSN~DI)_PvkIvVZqR{0NLr49W93^n)H#=v;bEx$FwzJ_*; z$*;_ru0>m?=fEqMdDbk(kom8vGg- z>#tQ$_{MbwpvCa#9~#6%)BoI3(<(5q&LbOa5K;90j#0RY112<5Xs-K)sa;xb$I8ux6pYvz PE=Dy;BAn$@58wP7Zj&W} diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/test.jpg b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/images/test.jpg deleted file mode 100644 index 0107be27349330250c3c28f52ef5dd58a25690ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35467 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 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/index.html.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/index.html.haml deleted file mode 100644 index 004dbc09..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/index.html.haml +++ /dev/null @@ -1,96 +0,0 @@ -!!! -%html{ :lang => "en" } - %head - %meta{ :content => "text/html; charset=utf-8", "http-equiv" => "Content-Type" } - %title - Blueprint test pages - / - Framework CSS - %link{ :href => "stylesheets/screen.css", :rel => "stylesheet", :media => "screen, projection", :type => "text/css" } - %link{ :href => "stylesheets/print.css", :rel => "stylesheet", :media => "print", :type => "text/css" } - / - [if IE]> "0", :border => "0", :cellpadding => "0" } - %tr - %th.span-6 - Test page - %th.span-8 - Main files tested - %th.span-10 - Description - %tr - %td - %a{ :href => "plugins/fancy_type.html" } - Fancy Type - %td - %a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/_grid.sass" } - grid.sass - , - %a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/_typography.sass" } - typography.sass - , - %a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/_fancy_type.sass" } - fancy_type.sass - %td - A simple sample page, with common elements and fancy type. - %tr - %td - %a{ :href => "plugins/buttons.html" } - Buttons - %td - %a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/_buttons.sass" } - buttons.sass - %td - A simple page, showing links and buttons styled using the button plugin. - %tr - %td - %a{ :href => "plugins/link_icons.html" } - Link Icons - %td - %a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/_link_icons.sass" } - link_icons.sass - %td - A simple page, showing links icons. - %tr - %td - %a{ :href => "plugins/rtl.html" } - RTL - %td - %a{ :href => "http://github.com/chriseppstein/compass/blob/master/frameworks/blueprint/stylesheets/blueprint/_rtl.sass" } - rtl.sass - %td - A simple page, showing a right-to-left grid layout. - %p - %em - %strong - Note about the css files: - These test files utilize the css files that are generated from - %a{ :href => "http://haml.hamptoncatlin.com/docs/rdoc/classes/Sass.html" } - Sass templates - \. - In other words, if you change any of the source files, - you'll have to re-build them with - %code - rake examples - to see any changes. - .box - %p - For more information and help, try these resources: - %ul.bottom - %li - %a{ :href => "http://www.blueprintcss.org/" } - The Blueprint home page. - %li - %a{ :href => "http://groups.google.com/group/blueprintcss" } - Our anything-goes mailing list. - %p - %a{ :href => "http://validator.w3.org/check?uri=referer" } - %img.top{ :src => "images/valid.png", :height => "31", :alt => "Valid HTML 4.01 Strict", :width => "88" } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/plugins/buttons.html.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/plugins/buttons.html.haml deleted file mode 100644 index 331d378d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/plugins/buttons.html.haml +++ /dev/null @@ -1,67 +0,0 @@ -!!! -%html{ :lang => "en" } - %head - %meta{ :content => "text/html; charset=utf-8", "http-equiv" => "Content-Type" } - %title - Blueprint Buttons Sample Page - / - Framework CSS - %link{ :href => "../stylesheets/screen.css", :rel => "stylesheet", :media => "screen, projection", :type => "text/css" } - %link{ :href => "../stylesheets/print.css", :rel => "stylesheet", :media => "print", :type => "text/css" } - / - [if IE]> "../stylesheets/buttons.css", :rel => "stylesheet", :media => "screen, projection", :type => "text/css" } - %body - .container - %h1 - A Button Example Page - %hr - %h2.alt - This sample page demonstrates what you can do with the Buttons plugin. - %hr - .span-12 - %h3 - Link Buttons - %a.button - Link Button - %a.button.positive - Positive Button - %a.button.negative - Negative Button - .span-12.last - %h3 - Real Buttons - %button - Normal Button - %button.positive - Positive Button - %button.negative - Negative Button - .span-12 - %h3 - Link Buttons with Images - %a.button - %img{ :src => "../images/buttons/tick.png", :alt => "" } - Save - %a.button.positive - %img{ :src => "../images/buttons/key.png", :alt => "" } - Change Password - %a.button.negative - %img{ :src => "../images/buttons/cross.png", :alt => "" } - Cancel - .span-12.last - %h3 - Real Buttons with Images - %button - %img{ :src => "../images/buttons/tick.png", :alt => "" } - Save - %button.positive - %img{ :src => "../images/buttons/key.png", :alt => "" } - Change Password - %button.negative - %img{ :src => "../images/buttons/cross.png", :alt => "" } - Cancel - .span-24 - %p - %a{ :href => "http://validator.w3.org/check?uri=referer" } - %img.top{ :src => "valid.png", :height => "31", :alt => "Valid HTML 4.01 Strict", :width => "88" } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/plugins/fancy_type.html.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/plugins/fancy_type.html.haml deleted file mode 100644 index b17c1c28..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/plugins/fancy_type.html.haml +++ /dev/null @@ -1,100 +0,0 @@ -!!! -%html{ :lang => "en" } - %head - %meta{ :content => "text/html; charset=utf-8", "http-equiv" => "Content-Type" } - %title - Blueprint Sample Page - / - Framework CSS - %link{ :href => "../stylesheets/screen.css", :rel => "stylesheet", :media => "screen, projection", :type => "text/css" } - %link{ :href => "../stylesheets/print.css", :rel => "stylesheet", :media => "print", :type => "text/css" } - / - [if IE]> "../images/test.jpg", :alt => "test" } - Lorem ipsum dolor sit amet, - %em - consectetuer adipiscing elit - \. Nunc congue ipsum vestibulum libero. Aenean vitae justo. Nam eget tellus. Etiam convallis, est eu lobortis mattis, lectus tellus tempus felis, a ultricies erat ipsum at metus. - %p - Lorem ipsum dolor sit amet, consectetuer adipiscing elit. - %a{ :href => "#" } - Morbi et risus - \. Aliquam nisl. Nulla facilisi. Cras accumsan vestibulum ante. Vestibulum sed tortor. Praesent - %span.caps - SMALL CAPS - tempus fringilla elit. Ut elit diam, sagittis in, nonummy in, gravida non, nunc. Ut orci. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nam egestas, orci eu imperdiet malesuada, nisl purus fringilla odio, quis commodo est orci vitae justo. Aliquam placerat odio tincidunt nulla. Cras in libero. Aenean rutrum, magna non tristique posuere, erat odio eleifend nisl, non convallis est tortor blandit ligula. Nulla id augue. - %p - Nullam mattis, odio ut tempus facilisis, metus nisl facilisis metus, auctor consectetuer felis ligula nec mauris. Vestibulum odio erat, fermentum at, commodo vitae, ultrices et, urna. Mauris vulputate, mi pulvinar sagittis condimentum, sem nulla aliquam velit, sed imperdiet mi purus eu magna. Nulla varius metus ut eros. Aenean aliquet magna eget orci. Class aptent taciti sociosqu ad litora. - %p - Vivamus euismod. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse vel nibh ut turpis dictum sagittis. Aliquam vel velit a elit auctor sollicitudin. Nam vel dui vel neque lacinia pretium. Quisque nunc erat, venenatis id, volutpat ut, scelerisque sed, diam. Mauris ante. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec mattis. Morbi dignissim sollicitudin libero. Nulla lorem. - %blockquote - %p - Integer cursus ornare mauris. Praesent nisl arcu, imperdiet eu, ornare id, scelerisque ut, nunc. Praesent sagittis erat sed velit tempus imperdiet. Ut tristique, ante in interdum hendrerit, erat enim faucibus felis, quis rutrum mauris lorem quis sem. Vestibulum ligula nisi, mattis nec, posuere et, blandit eu, ligula. Nam suscipit placerat odio. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Pellentesque tortor libero, venenatis vitae, rhoncus eu, placerat ut, mi. Nulla nulla. - %p - Maecenas vel metus quis magna pharetra fermentum. - %em - Integer sit amet tortor - \. Maecenas porttitor, pede sed gravida auctor, nulla augue aliquet elit, at pretium urna orci ut metus. Aliquam in dolor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed aliquam, tellus id ornare posuere, quam nunc accumsan turpis, at convallis tellus orci et nisl. Phasellus congue neque a lorem. - %hr - .span-7.colborder - %h6 - This is a nested column - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. - .span-7.last - %h6 - This is another nested column - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. - .span-7.last - %h3 - A - %span.alt - Simple - Sidebar - %p - Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. - %p - Mauris a lectus. Aliquam erat volutpat. Phasellus ultrices mi a sapien. Nunc rutrum egestas lorem. Duis ac sem sagittis elit tincidunt gravida. Mauris a lectus. Aliquam erat volutpat. Phasellus ultrices mi a sapien. Nunc rutrum egestas lorem. Duis ac sem sagittis elit tincidunt gravida. - %p.quiet - Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. - %h5 - Incremental leading - %p.incr - Vestibulum ante ipsum primis in faucibus orci luctus vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. sed aliquet vehicula, lectus tellus. - %p.incr - Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. - %hr - %h2.alt - You may pick and choose amongst these and many more features, so be bold. - %hr - %p - %a{ :href => "http://validator.w3.org/check?uri=referer" } - %img.top{ :src => "valid.png", :height => "31", :alt => "Valid HTML 4.01 Strict", :width => "88" } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/plugins/link_icons.html.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/plugins/link_icons.html.haml deleted file mode 100644 index 13e93f2f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/plugins/link_icons.html.haml +++ /dev/null @@ -1,61 +0,0 @@ -!!! -%html{ :lang => "en" } - %head - %meta{ :content => "text/html; charset=utf-8", "http-equiv" => "Content-Type" } - %title - Blueprint Link Icons Sample Page - / - Framework CSS - %link{ :href => "../stylesheets/screen.css", :rel => "stylesheet", :media => "screen, projection", :type => "text/css" } - %link{ :href => "../stylesheets/print.css", :rel => "stylesheet", :media => "print", :type => "text/css" } - / - [if IE]> "../stylesheets/link_icons.css", :rel => "stylesheet", :media => "screen, projection", :type => "text/css" } - %body - .container - %h1 - A Link Icons Example Page - %hr - %h2.alt - This sample page demonstrates what you can do with the Link Icons plugin. - %hr - .span-12 - %h3 - External Links - %a{ :href => "http://www.no-such-website.com/" } - A Normal External Link - %a{ :href => "http://www.google.com" } - A Visited External Link - %a{ :href => "mailto:donald@duck.com" } - An Email Link - .span-12.last - %h3 - Document Links - %a{ :href => "http://www.no-such-website.com/sample.pdf" } - A .pdf Link - %a{ :href => "http://www.no-such-website.com/sample.doc" } - A .doc Link - %a{ :href => "http://www.no-such-website.com/sample.xls" } - A .xls Link - .span-12 - %h3 - Misc Links - %a{ :href => "http://www.no-such-website.com/sample.rss" } - An RSS Link - %a{ :href => "http://www.no-such-website.com/sample.rdf" } - An Atom Link - %a{ :href => "aim:chatmeup" } - A Instant Messenger Link - .span-12.last - %h3 - Turning Icons Off - %a.noicon{ :href => "http://www.no-such-website.com/" } - A Normal External Link - %a.noicon{ :href => "http://www.google.com" } - A Visited External Link - %a.noicon{ :href => "mailto:donald@duck.com" } - An Email Link - .span-24 - %p - %a.noicon{ :href => "http://validator.w3.org/check?uri=referer" } - %img.top{ :src => "valid.png", :height => "31", :alt => "Valid HTML 4.01 Strict", :width => "88" } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/plugins/rtl.html.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/plugins/rtl.html.haml deleted file mode 100644 index 58758202..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/plugins/rtl.html.haml +++ /dev/null @@ -1,100 +0,0 @@ -!!! -%html{ :lang => "en" } - %head - %meta{ :content => "text/html; charset=utf-8", "http-equiv" => "Content-Type" } - %title - Blueprint Sample Page - / - Framework CSS - %link{ :href => "../stylesheets/rtl_screen.css", :rel => "stylesheet", :media => "screen, projection", :type => "text/css" } - %link{ :href => "../stylesheets/print.css", :rel => "stylesheet", :media => "print", :type => "text/css" } - / - [if IE]> "../images/test.jpg", :alt => "test" } - Lorem ipsum dolor sit amet, - %em - consectetuer adipiscing elit - \. Nunc congue ipsum vestibulum libero. Aenean vitae justo. Nam eget tellus. Etiam convallis, est eu lobortis mattis, lectus tellus tempus felis, a ultricies erat ipsum at metus. - %p - Lorem ipsum dolor sit amet, consectetuer adipiscing elit. - %a{ :href => "#" } - Morbi et risus - \. Aliquam nisl. Nulla facilisi. Cras accumsan vestibulum ante. Vestibulum sed tortor. Praesent - %span.caps - SMALL CAPS - tempus fringilla elit. Ut elit diam, sagittis in, nonummy in, gravida non, nunc. Ut orci. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nam egestas, orci eu imperdiet malesuada, nisl purus fringilla odio, quis commodo est orci vitae justo. Aliquam placerat odio tincidunt nulla. Cras in libero. Aenean rutrum, magna non tristique posuere, erat odio eleifend nisl, non convallis est tortor blandit ligula. Nulla id augue. - %p - Nullam mattis, odio ut tempus facilisis, metus nisl facilisis metus, auctor consectetuer felis ligula nec mauris. Vestibulum odio erat, fermentum at, commodo vitae, ultrices et, urna. Mauris vulputate, mi pulvinar sagittis condimentum, sem nulla aliquam velit, sed imperdiet mi purus eu magna. Nulla varius metus ut eros. Aenean aliquet magna eget orci. Class aptent taciti sociosqu ad litora. - %p - Vivamus euismod. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Suspendisse vel nibh ut turpis dictum sagittis. Aliquam vel velit a elit auctor sollicitudin. Nam vel dui vel neque lacinia pretium. Quisque nunc erat, venenatis id, volutpat ut, scelerisque sed, diam. Mauris ante. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec mattis. Morbi dignissim sollicitudin libero. Nulla lorem. - %blockquote - %p - Integer cursus ornare mauris. Praesent nisl arcu, imperdiet eu, ornare id, scelerisque ut, nunc. Praesent sagittis erat sed velit tempus imperdiet. Ut tristique, ante in interdum hendrerit, erat enim faucibus felis, quis rutrum mauris lorem quis sem. Vestibulum ligula nisi, mattis nec, posuere et, blandit eu, ligula. Nam suscipit placerat odio. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Pellentesque tortor libero, venenatis vitae, rhoncus eu, placerat ut, mi. Nulla nulla. - %p - Maecenas vel metus quis magna pharetra fermentum. - %em - Integer sit amet tortor - \. Maecenas porttitor, pede sed gravida auctor, nulla augue aliquet elit, at pretium urna orci ut metus. Aliquam in dolor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed aliquam, tellus id ornare posuere, quam nunc accumsan turpis, at convallis tellus orci et nisl. Phasellus congue neque a lorem. - %hr - .span-7.colborder - %h6 - This is a nested column - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. - .span-7.last - %h6 - This is another nested column - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. - .span-7.last - %h3 - A - %span.alt - Simple - Sidebar - %p - Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. - %p - Mauris a lectus. Aliquam erat volutpat. Phasellus ultrices mi a sapien. Nunc rutrum egestas lorem. Duis ac sem sagittis elit tincidunt gravida. Mauris a lectus. Aliquam erat volutpat. Phasellus ultrices mi a sapien. Nunc rutrum egestas lorem. Duis ac sem sagittis elit tincidunt gravida. - %p.quiet - Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. - %h5 - Incremental leading - %p.incr - Vestibulum ante ipsum primis in faucibus orci luctus vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. sed aliquet vehicula, lectus tellus. - %p.incr - Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cras ornare mattis nunc. Mauris venenatis, pede sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. sed aliquet vehicula, lectus tellus pulvinar neque, non cursus sem nisi vel augue. - %hr - %h2.alt - You may pick and choose amongst these and many more features, so be bold. - %hr - %p - %a{ :href => "http://validator.w3.org/check?uri=referer" } - %img.top{ :src => "valid.png", :height => "31", :alt => "Valid HTML 4.01 Strict", :width => "88" } diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/src/buttons.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/src/buttons.sass deleted file mode 100644 index 9fdd8578..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/blueprint_plugins/src/buttons.sass +++ /dev/null @@ -1,49 +0,0 @@ -@import compass/utilities/general/float.sass -@import blueprint/buttons.sass - -// - Use the following HTML code to place the buttons on your site: - - - - - Change Password - - - - Cancel - - -a.button - // you can pass "left" or "right" to +anchor-button to float it in that direction - // or you can pass no argument to leave it inline-block (cross browser safe!) within - // the flow of your page. - +anchor-button("left") - // All the button color mixins take 4 optional arguments: - // font color, background color, border color, border highlight color - // the first three default to constants set in blueprint/buttons.sass - // the last one defaults to a shade lighter than the border color. - +button-colors - +button-hover-colors - +button-active-colors - -button - // The +button-button mixin is just like the +anchor-button mixin, but for

    \n\n"; - }egmx; - - $text =~ s{ ^(.+)[ \t]*\n-+[ \t]*\n+ }{ - "

    " . _RunSpanGamut($1) . "

    \n\n"; - }egmx; - - - # atx-style headers: - # # Header 1 - # ## Header 2 - # ## Header 2 with closing hashes ## - # ... - # ###### Header 6 - # - $text =~ s{ - ^(\#{1,6}) # $1 = string of #'s - [ \t]* - (.+?) # $2 = Header text - [ \t]* - \#* # optional closing #'s (not counted) - \n+ - }{ - my $h_level = length($1); - "" . _RunSpanGamut($2) . "\n\n"; - }egmx; - - return $text; -} - - -sub _DoLists { -# -# Form HTML ordered (numbered) and unordered (bulleted) lists. -# - my $text = shift; - my $less_than_tab = $g_tab_width - 1; - - # Re-usable patterns to match list item bullets and number markers: - my $marker_ul = qr/[*+-]/; - my $marker_ol = qr/\d+[.]/; - my $marker_any = qr/(?:$marker_ul|$marker_ol)/; - - # Re-usable pattern to match any entirel ul or ol list: - my $whole_list = qr{ - ( # $1 = whole list - ( # $2 - [ ]{0,$less_than_tab} - (${marker_any}) # $3 = first list item marker - [ \t]+ - ) - (?s:.+?) - ( # $4 - \z - | - \n{2,} - (?=\S) - (?! # Negative lookahead for another list item marker - [ \t]* - ${marker_any}[ \t]+ - ) - ) - ) - }mx; - - # We use a different prefix before nested lists than top-level lists. - # See extended comment in _ProcessListItems(). - # - # Note: There's a bit of duplication here. My original implementation - # created a scalar regex pattern as the conditional result of the test on - # $g_list_level, and then only ran the $text =~ s{...}{...}egmx - # substitution once, using the scalar as the pattern. This worked, - # everywhere except when running under MT on my hosting account at Pair - # Networks. There, this caused all rebuilds to be killed by the reaper (or - # perhaps they crashed, but that seems incredibly unlikely given that the - # same script on the same server ran fine *except* under MT. I've spent - # more time trying to figure out why this is happening than I'd like to - # admit. My only guess, backed up by the fact that this workaround works, - # is that Perl optimizes the substition when it can figure out that the - # pattern will never change, and when this optimization isn't on, we run - # afoul of the reaper. Thus, the slightly redundant code to that uses two - # static s/// patterns rather than one conditional pattern. - - if ($g_list_level) { - $text =~ s{ - ^ - $whole_list - }{ - my $list = $1; - my $list_type = ($3 =~ m/$marker_ul/) ? "ul" : "ol"; - # Turn double returns into triple returns, so that we can make a - # paragraph for the last item in a list, if necessary: - $list =~ s/\n{2,}/\n\n\n/g; - my $result = _ProcessListItems($list, $marker_any); - $result = "<$list_type>\n" . $result . "\n"; - $result; - }egmx; - } - else { - $text =~ s{ - (?:(?<=\n\n)|\A\n?) - $whole_list - }{ - my $list = $1; - my $list_type = ($3 =~ m/$marker_ul/) ? "ul" : "ol"; - # Turn double returns into triple returns, so that we can make a - # paragraph for the last item in a list, if necessary: - $list =~ s/\n{2,}/\n\n\n/g; - my $result = _ProcessListItems($list, $marker_any); - $result = "<$list_type>\n" . $result . "\n"; - $result; - }egmx; - } - - - return $text; -} - - -sub _ProcessListItems { -# -# Process the contents of a single ordered or unordered list, splitting it -# into individual list items. -# - - my $list_str = shift; - my $marker_any = shift; - - - # The $g_list_level global keeps track of when we're inside a list. - # Each time we enter a list, we increment it; when we leave a list, - # we decrement. If it's zero, we're not in a list anymore. - # - # We do this because when we're not inside a list, we want to treat - # something like this: - # - # I recommend upgrading to version - # 8. Oops, now this line is treated - # as a sub-list. - # - # As a single paragraph, despite the fact that the second line starts - # with a digit-period-space sequence. - # - # Whereas when we're inside a list (or sub-list), that line will be - # treated as the start of a sub-list. What a kludge, huh? This is - # an aspect of Markdown's syntax that's hard to parse perfectly - # without resorting to mind-reading. Perhaps the solution is to - # change the syntax rules such that sub-lists must start with a - # starting cardinal number; e.g. "1." or "a.". - - $g_list_level++; - - # trim trailing blank lines: - $list_str =~ s/\n{2,}\z/\n/; - - - $list_str =~ s{ - (\n)? # leading line = $1 - (^[ \t]*) # leading whitespace = $2 - ($marker_any) [ \t]+ # list marker = $3 - ((?s:.+?) # list item text = $4 - (\n{1,2})) - (?= \n* (\z | \2 ($marker_any) [ \t]+)) - }{ - my $item = $4; - my $leading_line = $1; - my $leading_space = $2; - - if ($leading_line or ($item =~ m/\n{2,}/)) { - $item = _RunBlockGamut(_Outdent($item)); - } - else { - # Recursion for sub-lists: - $item = _DoLists(_Outdent($item)); - chomp $item; - $item = _RunSpanGamut($item); - } - - "
  • " . $item . "
  • \n"; - }egmx; - - $g_list_level--; - return $list_str; -} - - - -sub _DoCodeBlocks { -# -# Process Markdown `
    ` blocks.
    -#	
    -
    -	my $text = shift;
    -
    -	$text =~ s{
    -			(?:\n\n|\A)
    -			(	            # $1 = the code block -- one or more lines, starting with a space/tab
    -			  (?:
    -			    (?:[ ]{$g_tab_width} | \t)  # Lines must start with a tab or a tab-width of spaces
    -			    .*\n+
    -			  )+
    -			)
    -			((?=^[ ]{0,$g_tab_width}\S)|\Z)	# Lookahead for non-space at line-start, or end of doc
    -		}{
    -			my $codeblock = $1;
    -			my $result; # return value
    -
    -			$codeblock = _EncodeCode(_Outdent($codeblock));
    -			$codeblock = _Detab($codeblock);
    -			$codeblock =~ s/\A\n+//; # trim leading newlines
    -			$codeblock =~ s/\s+\z//; # trim trailing whitespace
    -
    -			$result = "\n\n
    " . $codeblock . "\n
    \n\n"; - - $result; - }egmx; - - return $text; -} - - -sub _DoCodeSpans { -# -# * Backtick quotes are used for spans. -# -# * You can use multiple backticks as the delimiters if you want to -# include literal backticks in the code span. So, this input: -# -# Just type ``foo `bar` baz`` at the prompt. -# -# Will translate to: -# -#

    Just type foo `bar` baz at the prompt.

    -# -# There's no arbitrary limit to the number of backticks you -# can use as delimters. If you need three consecutive backticks -# in your code, use four for delimiters, etc. -# -# * You can use spaces to get literal backticks at the edges: -# -# ... type `` `bar` `` ... -# -# Turns to: -# -# ... type `bar` ... -# - - my $text = shift; - - $text =~ s@ - (`+) # $1 = Opening run of ` - (.+?) # $2 = The code block - (?$c
    "; - @egsx; - - return $text; -} - - -sub _EncodeCode { -# -# Encode/escape certain characters inside Markdown code runs. -# The point is that in code, these characters are literals, -# and lose their special Markdown meanings. -# - local $_ = shift; - - # Encode all ampersands; HTML entities are not - # entities within a Markdown code span. - s/&/&/g; - - # Encode $'s, but only if we're running under Blosxom. - # (Blosxom interpolates Perl variables in article bodies.) - { - no warnings 'once'; - if (defined($blosxom::version)) { - s/\$/$/g; - } - } - - - # Do the angle bracket song and dance: - s! < !<!gx; - s! > !>!gx; - - # Now, escape characters that are magic in Markdown: - s! \* !$g_escape_table{'*'}!gx; - s! _ !$g_escape_table{'_'}!gx; - s! { !$g_escape_table{'{'}!gx; - s! } !$g_escape_table{'}'}!gx; - s! \[ !$g_escape_table{'['}!gx; - s! \] !$g_escape_table{']'}!gx; - s! \\ !$g_escape_table{'\\'}!gx; - - return $_; -} - - -sub _DoItalicsAndBold { - my $text = shift; - - # must go first: - $text =~ s{ (\*\*|__) (?=\S) (.+?[*_]*) (?<=\S) \1 } - {$2}gsx; - - $text =~ s{ (\*|_) (?=\S) (.+?) (?<=\S) \1 } - {$2}gsx; - - return $text; -} - - -sub _DoBlockQuotes { - my $text = shift; - - $text =~ s{ - ( # Wrap whole match in $1 - ( - ^[ \t]*>[ \t]? # '>' at the start of a line - .+\n # rest of the first line - (.+\n)* # subsequent consecutive lines - \n* # blanks - )+ - ) - }{ - my $bq = $1; - $bq =~ s/^[ \t]*>[ \t]?//gm; # trim one level of quoting - $bq =~ s/^[ \t]+$//mg; # trim whitespace-only lines - $bq = _RunBlockGamut($bq); # recurse - - $bq =~ s/^/ /g; - # These leading spaces screw with
     content, so we need to fix that:
    -			$bq =~ s{
    -					(\s*
    .+?
    ) - }{ - my $pre = $1; - $pre =~ s/^ //mg; - $pre; - }egsx; - - "
    \n$bq\n
    \n\n"; - }egmx; - - - return $text; -} - - -sub _FormParagraphs { -# -# Params: -# $text - string to process with html

    tags -# - my $text = shift; - - # Strip leading and trailing lines: - $text =~ s/\A\n+//; - $text =~ s/\n+\z//; - - my @grafs = split(/\n{2,}/, $text); - - # - # Wrap

    tags. - # - foreach (@grafs) { - unless (defined( $g_html_blocks{$_} )) { - $_ = _RunSpanGamut($_); - s/^([ \t]*)/

    /; - $_ .= "

    "; - } - } - - # - # Unhashify HTML blocks - # - foreach (@grafs) { - if (defined( $g_html_blocks{$_} )) { - $_ = $g_html_blocks{$_}; - } - } - - return join "\n\n", @grafs; -} - - -sub _EncodeAmpsAndAngles { -# Smart processing for ampersands and angle brackets that need to be encoded. - - my $text = shift; - - # Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin: - # http://bumppo.net/projects/amputator/ - $text =~ s/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/&/g; - - # Encode naked <'s - $text =~ s{<(?![a-z/?\$!])}{<}gi; - - return $text; -} - - -sub _EncodeBackslashEscapes { -# -# Parameter: String. -# Returns: The string, with after processing the following backslash -# escape sequences. -# - local $_ = shift; - - s! \\\\ !$g_escape_table{'\\'}!gx; # Must process escaped backslashes first. - s! \\` !$g_escape_table{'`'}!gx; - s! \\\* !$g_escape_table{'*'}!gx; - s! \\_ !$g_escape_table{'_'}!gx; - s! \\\{ !$g_escape_table{'{'}!gx; - s! \\\} !$g_escape_table{'}'}!gx; - s! \\\[ !$g_escape_table{'['}!gx; - s! \\\] !$g_escape_table{']'}!gx; - s! \\\( !$g_escape_table{'('}!gx; - s! \\\) !$g_escape_table{')'}!gx; - s! \\> !$g_escape_table{'>'}!gx; - s! \\\# !$g_escape_table{'#'}!gx; - s! \\\+ !$g_escape_table{'+'}!gx; - s! \\\- !$g_escape_table{'-'}!gx; - s! \\\. !$g_escape_table{'.'}!gx; - s{ \\! }{$g_escape_table{'!'}}gx; - - return $_; -} - - -sub _DoAutoLinks { - my $text = shift; - - $text =~ s{<((https?|ftp):[^'">\s]+)>}{
    $1}gi; - - # Email addresses: - $text =~ s{ - < - (?:mailto:)? - ( - [-.\w]+ - \@ - [-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+ - ) - > - }{ - _EncodeEmailAddress( _UnescapeSpecialChars($1) ); - }egix; - - return $text; -} - - -sub _EncodeEmailAddress { -# -# Input: an email address, e.g. "foo@example.com" -# -# Output: the email address as a mailto link, with each character -# of the address encoded as either a decimal or hex entity, in -# the hopes of foiling most address harvesting spam bots. E.g.: -# -# foo -# @example.com -# -# Based on a filter by Matthew Wickline, posted to the BBEdit-Talk -# mailing list: -# - - my $addr = shift; - - srand; - my @encode = ( - sub { '&#' . ord(shift) . ';' }, - sub { '&#x' . sprintf( "%X", ord(shift) ) . ';' }, - sub { shift }, - ); - - $addr = "mailto:" . $addr; - - $addr =~ s{(.)}{ - my $char = $1; - if ( $char eq '@' ) { - # this *must* be encoded. I insist. - $char = $encode[int rand 1]->($char); - } elsif ( $char ne ':' ) { - # leave ':' alone (to spot mailto: later) - my $r = rand; - # roughly 10% raw, 45% hex, 45% dec - $char = ( - $r > .9 ? $encode[2]->($char) : - $r < .45 ? $encode[1]->($char) : - $encode[0]->($char) - ); - } - $char; - }gex; - - $addr = qq{$addr}; - $addr =~ s{">.+?:}{">}; # strip the mailto: from the visible part - - return $addr; -} - - -sub _UnescapeSpecialChars { -# -# Swap back in all the special characters we've hidden. -# - my $text = shift; - - while( my($char, $hash) = each(%g_escape_table) ) { - $text =~ s/$hash/$char/g; - } - return $text; -} - - -sub _TokenizeHTML { -# -# Parameter: String containing HTML markup. -# Returns: Reference to an array of the tokens comprising the input -# string. Each token is either a tag (possibly with nested, -# tags contained therein, such as , or a -# run of text between tags. Each element of the array is a -# two-element array; the first is either 'tag' or 'text'; -# the second is the actual value. -# -# -# Derived from the _tokenize() subroutine from Brad Choate's MTRegex plugin. -# -# - - my $str = shift; - my $pos = 0; - my $len = length $str; - my @tokens; - - my $depth = 6; - my $nested_tags = join('|', ('(?:<[a-z/!$](?:[^<>]') x $depth) . (')*>)' x $depth); - my $match = qr/(?s: ) | # comment - (?s: <\? .*? \?> ) | # processing instruction - $nested_tags/ix; # nested tags - - while ($str =~ m/($match)/g) { - my $whole_tag = $1; - my $sec_start = pos $str; - my $tag_start = $sec_start - length $whole_tag; - if ($pos < $tag_start) { - push @tokens, ['text', substr($str, $pos, $tag_start - $pos)]; - } - push @tokens, ['tag', $whole_tag]; - $pos = pos $str; - } - push @tokens, ['text', substr($str, $pos, $len - $pos)] if $pos < $len; - \@tokens; -} - - -sub _Outdent { -# -# Remove one level of line-leading tabs or spaces -# - my $text = shift; - - $text =~ s/^(\t|[ ]{1,$g_tab_width})//gm; - return $text; -} - - -sub _Detab { -# -# Cribbed from a post by Bart Lateur: -# -# - my $text = shift; - - $text =~ s{(.*?)\t}{$1.(' ' x ($g_tab_width - length($1) % $g_tab_width))}ge; - return $text; -} - - -1; - -__END__ - - -=pod - -=head1 NAME - -B - - -=head1 SYNOPSIS - -B [ B<--html4tags> ] [ B<--version> ] [ B<-shortversion> ] - [ I ... ] - - -=head1 DESCRIPTION - -Markdown is a text-to-HTML filter; it translates an easy-to-read / -easy-to-write structured text format into HTML. Markdown's text format -is most similar to that of plain text email, and supports features such -as headers, *emphasis*, code blocks, blockquotes, and links. - -Markdown's syntax is designed not as a generic markup language, but -specifically to serve as a front-end to (X)HTML. You can use span-level -HTML tags anywhere in a Markdown document, and you can use block level -HTML tags (like
    and as well). - -For more information about Markdown's syntax, see: - - http://daringfireball.net/projects/markdown/ - - -=head1 OPTIONS - -Use "--" to end switch parsing. For example, to open a file named "-z", use: - - Markdown.pl -- -z - -=over 4 - - -=item B<--html4tags> - -Use HTML 4 style for empty element tags, e.g.: - -
    - -instead of Markdown's default XHTML style tags, e.g.: - -
    - - -=item B<-v>, B<--version> - -Display Markdown's version number and copyright information. - - -=item B<-s>, B<--shortversion> - -Display the short-form version number. - - -=back - - - -=head1 BUGS - -To file bug reports or feature requests (other than topics listed in the -Caveats section above) please send email to: - - support@daringfireball.net - -Please include with your report: (1) the example input; (2) the output -you expected; (3) the output Markdown actually produced. - - -=head1 VERSION HISTORY - -See the readme file for detailed release notes for this version. - -1.0.1 - 14 Dec 2004 - -1.0 - 28 Aug 2004 - - -=head1 AUTHOR - - John Gruber - http://daringfireball.net - - PHP port and other contributions by Michel Fortin - http://michelf.com - - -=head1 COPYRIGHT AND LICENSE - -Copyright (c) 2003-2004 John Gruber - -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 "Markdown" 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 the copyright owner -or contributors 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. - -=cut diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/site/src/_defaults.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/site/src/_defaults.sass deleted file mode 100644 index b34924af..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/site/src/_defaults.sass +++ /dev/null @@ -1,100 +0,0 @@ -//** DEFAULT STYLES **// -// Don't forget to set your default styles. - - -// Get all the details and mixins from base.sass -@import base.sass -// Reset browser defaults, and prepare block-level HTML5 elements -@import susy/reset.sass - - -/* @group defaults */ - - -/* @group links */ - -\:focus - outline: 1px dotted - -a - &:link, &:visited - color= !links - text-decoration: none - &:focus, &:hover, &:active - color= !light - border-bottom: - width= px2em(2) + "em" - style: dashed - -/* @end */ - - -/* @group headers */ - -h1 - +serif-family - text-transform: lowercase - font-size: 3em - line-height: 1 - font-weight: bold - color= !links - -h2 - font-weight: bold - text-transform: uppercase - -/* @end */ - - -/* @group block tags */ -p - margin: 0 0 1.5em 0 - -pre - border-left= ".5em solid" !light - margin: 0 0 1.5em 0 - padding: 1.5em - -=list-default(!ol = false) - @if !ol - list-style: decimal - margin: 0 1.5em 1.5em 1.5em - @else - list-style: disc - margin: 0 1.5em 1.5em 1.5em - -ol - +list-default("ol") - -ul - +list-default - -/* @end */ - - -/* @group inline tags */ - -em - font-style: italic - -strong - font-weight: bold - -ins - text-decoration: underline - -del - text-decoration: line-through - -/* @end */ - - -/* @group replaced tags */ - -img - vertical-align: bottom - -/* @end */ - - -/* @end */ \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/site/src/screen.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/site/src/screen.sass deleted file mode 100644 index c1e87a98..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/code/site/src/screen.sass +++ /dev/null @@ -1,91 +0,0 @@ -/* - Welcome to Susy. Use this file to define screen styles. - Import this file using the following HTML or equivalent: - - - -@import defaults.sass - - -/* @group STRUCTURE */ - -body - +susy - -#page - +container - +sans-family - color= !text - -#brand - +full - +pad(1,1) - margin: - top: 3em - bottom: 1.5em - h1 a - +full(8) - +pad(1,2,8) - display: block - +replace-text("susy_logo.png", "left") - height: 105px - &:focus, &:hover, &:active - border-bottom: 0 - -#site-nav - +columns(2) - +alpha - ul - +no-bullets - margin: 0 - text-align: right - font-weight: bold - -#content - +columns(8) - +omega - margin-bottom: 3em - #description - +columns(5,8) - #credit - +columns(3,8) - +omega(8) - color= !light - -#contentinfo - +full - +prefix(2) - padding: - top: .5em - bottom: .75em - border-top: - width: .25em - style: dashed - color= !light - +serif-family - font-style: italic - color= !light - p - margin: 0 - &.license - +columns(5,8) - +alpha(8) - &.styles - +columns(3,8) - +omega(8) - text-align: right - a:link, a:visited - color= !light - font-weight: bold - -.tutorial - #content - margin-bottom: 3em - li - margin-bottom: 1.5em - code - font-size: 1.25em - font-family: monospace - color= !light - -/* @end */ \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/figures/susy_element.png b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/figures/susy_element.png deleted file mode 100644 index 50122f1fbce9d98d4036dd5fbe6c1eb86e210cff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15458 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 KT_URY>AwMWYy?jL diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/figures/susy_grid.png b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/docs/tutorial/figures/susy_grid.png deleted file mode 100644 index 41d9dd00fd157c1ff1b7b7bfcd0c4b39e8848af7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13633 zcmc(F1z45ex8{c!APOiFlA^*v>26S3T9J}CBHi7bg9?b`QRzGiDBXQ1C8edCgMf55 z9AY-Vf8Cj9X70>=?wxra{ElDkZ|}9&df&CzyMxqK<*#3*z6wFm^(P84&miccHw59K z2rhst(gaF3zz?B=g03?J5s{t$!-L`zsUV1i(^6VmUERXo#opP%-r>#@Y3Vx-PWEP& zHl`5dF`BDwDKua(1V3{QpP>?c7yA3dgY6F=JiB5GubI*}IMPZJJP7WHiu-W?s~uAc zPn4&YV&wC0@893$Nu2jvTU+)-yB}=jk>HMUv4-B)z1Npt3|;u{>%#c)SRI;DyT+_X zZ9!(UxSu(@gE`E}W(2T*tovaot~(x_cN$|6saL)Vk8`R?n8j zR%rV7GmcObJyCB+<^rTs<5tKF6=2q0Swk6EWtepHS3dZ2Txi4F?72oV;QekF#U z5ksMdRTab#m4Uk>4B~o+@w|k8=N_bEmQqD>R*N~f2K}XuO-4)hvN;`Du1zwR%aO#gnk)Aok%;z*!mUXvd0HMBid+;v6%@jcE5AIUBAPlW@`D_lhB1LJ2e)4tX0sjw`zr%ap;K6wULnS^YKzWhG1`ZNkks>d3i-HLsDq;1SKF zYhRUv*rWukiCw$o)?%s)k89sHTkl`ZCubs;*WZ6wSoy`^p=(6;HN7&QWdqN#)izOK za&GsU^|-UII<3wO2;aTOaLs{+oTZI;G8CWH;j+4`21*YdDG`?KZvD$@)_UBI+7`L9 zvgM4WsL`q&MBC!8n$mqtiZ-Y>sKemAu6hR{mQHp~?60(4#)oHAH&(CEV2;}M_`8=; z4NUg>@)zYK!YFD>eOvbI99DY0bN6Xxq8P>{oscWITfB^d-28FEUj<7A5YEjD(5)UJnN6A>MQe|;OP|3(aN=qSgV*I*1N3eTFT=BJySTHVf(3NU01P0;nUNQ zlFX8T(WQ~DQO7R|8Z32K>>DfpBdRr~)f*VOcYdMd9>{NO6lQ}JH3=&+;SV^h*W8jD zs@(~32V|F!gkD##2WPyGe*e4igz0kHY#L`fTiaqgC7r&gNk(iwpZmcF#S*J3k=%Eg zW?5SK#9?{ilebTBm;2t)%DrngVmAFIZ8kP{mx3bNNNXquJ?0~!YRzit-k-ei!E1W5 zmA*yS{2?V$o4nk3O$O!BEtOBbPLC!@uf;vZIp1u$@LWOeO_@pe=g(8cj6q*+rxVpH zHn85MPs|MSp&qz(va+%r8|}_PBc=+N0$o%9GA=Urvu^*YBlZrbUOgl|I?aL?2Ks? zulIIWaojwDokY)hEM;s$|inIy1vJ z;D#M=-Gbw`ol;+J$0zod^Lm|IndFmEKi0V=(~#8$VFqM+GzYgUx~dH;jY_z8SznRW z=@z*smyFl+6C-~yzs=;w zO54qP>N>%g+_xu$@`Cd$L*{Gz^tU+K8ED?1;0lj?>LNdfe#j}vc^{cEjAz76??^$I z*vQ%Hnd#n3$D>(v$%%6Ig!sinT9HPig@L0?rmFBZmu{1?rgE5~t$vN_Owl(~beTZR zUa)GpU67%F?bkQMH~K%8zat5~88)H(Tv=D8F20n3U4W##peVAW{sp20X%pcX>T&!& z_w{P@M8OFnu#t=&Hb6T<7n6iZvagWA&^t#srMsO?Jzb7l`m>lj*RaIvyHsf(&d>vo z`T0cung!FJi$@XsemZ_;e&}~;{vzmTq6Yu#fid#_Xzt+IaQ*jLC{W`#P+(=kifOqWP{4&X506*Bh^nzFu78^( zI%`ku-Kw3#Uwl{_s5}t6v>V?f-&eZ6JSj%+#dF|NaBAA%Fr(Awvc1KtNK~ttp^`h1 zcQ2>-b9O1tJ6|1b?EB+;3*|It>N~?aEou&WBWe||7OrSKt~;U9a782Tbr_{$v~B3b-77X&Wqg`CLd zK1RI3khHvW{xQ*D+e_6m+sD>x)i?JGnaZ2S`c-}*X))pUMJf&+Hm(=k0xLHrB7$0` z{5H{Xw6TUq9N6>_MhNMMlxW;2ZN-gwxSCt8c=YXufhNdAC~p zbZX6O5Bn)8tdmCS%c9=%wDq~}OhI*U>=Ke+!qxD)p$Z=RQ`_5gl|Jc zxca9XSNvUq6wmY51!sphcisnH$arfP>u>8%_ViKChdZ+mpZSH}(PP1jWPC^(6=)@k zkly|r)?@yQd|{u8Ih20x+PAB`YD_YJlwHG?=%R_1U)Q`lkztooNkjVMClYc{3M!>4 zN62h{)OsTju*aJuU~prCxQ6V6_p;GDlXseOu;yg(HgCI`%1ujUs&5M4_~#zY$x`@6 zGimWGk4~}(u<425B=)WnlZQ*FQg)&BGsjcL*>US04v##7SyA(tc@s zM)%m9k@ySaZm!0rrCXj?x*vMb6{$bh z_@q83-jVZGGfULFnGM^=yQ=!Orlr)QQ)<3T45sv0Y$!A%dPR9zNaOX?*lST z-)nw!&F`FZe4=Mw#fCd2iLrd4Vlik`Bb`{ZV^=|#4|5n znIQZT_%12=njp#|JQDR#vYj%*J6T*{`NDit%Eca~fhQuZ`5K5m?wEY|KwE5=V(Zhc zq;}2>v}ofemeBlep;?BEQ$K;^nt0OrI~G>_wV1m4N-XmXc{NI`3JY4NBGwZAUu;t zS8U!~e4Y2?{FZv9%H3EUFi;}kF0@S~K%mf~CdGRuziYeJ_URn$ZBQ%R? zj!<}z(cj_H)4r?C&SO^8H9O_pzNJZIc*~327GCEhomNuYaXi?+`s?cW#CRR?^Fi@n z`Cht+6tk?sa=XPRQ+kW|6Nh9E!&kUJ!86cSWCGC58`I*hot98y$J%z+$S~y)?(%xvd)HBf!t%Vrs@O_xGZSzvV%y-vL%kHcFm6h11{ts@wp711uAPd(E#}|HH zB%?DpI3xG1`%q^*h4(sn!OHCx6pQzgi=|(2T~PA(VygWCO@2ky0yX}33FspE?_A@{ z&<;e957WiogoYu~LJbbNIp{mVYYQ(@+Z;EKi&;O-><%Adn-`^-LC$QfB(lt zmq(O4Mpu7M?aE7D)_8OoEqS!|kT7}bf(gMT5`qixSUjEs(ZfU-{%`CG!PI3u(hJBb zJjO@SnIGaJMvjbA@$sgv;B8>hqZ6BW?gR&Fldbb&BXw=Oe6Tym8{GDxTyn&zuX~y^ zjQY9T9(^w`s(5tMnKaeEr{3b_bFQmYe@+8N10)^YmfcP?qBgO&-(Dd-Q_4L{zP{3h zg&-ZVM{n*ykBS{OeUGDFq6%I@P!jY^Xr!fGH1@OX-9t|W(rZC>&u(56zJ1&DfKo5e zQjdpBLjbJo?iedPQ-L7cSO{_shoGrz5aj0oL7rgA-OL6-d=wBw>*H|E@(u(sg+7sa z{M=)7Wy04Xa^48GA%BNUvSW>U%wLG&rehf1o1Ee1viBBk5CHS6X14#(#$a!7PZVz5%z+~_F;So+bbGj%aoT_j#FI&Lb+m(K9D-ny(-Wu z`*AsR4MmwRcy#^e>z;XDYSi9@ITo>B#oCRW_rwO~)YjI5zJK?A`IZ3u@^OGe7}4Jk zk7hvMe^r39zYhQJZcN^3ww-&qxs3h>oclXf?!Q-L2)a{SDT*Q;6`wkxI!4HWhr(|d4V9kHuL>4EyvfqzizW>dOnr12Wq;Wdv zc$r8^D>6Dt+ohyD7gH>B@*+5zJl*}7lai6UwmE@OC&t87bN6%0;KV>>=9k*knp|Uf zJ^L(J-Dj?71rvHB5r5@Ek5`9ny#ty9!j+zW^tN?@v$JysNeS8|ITa?dmOCGQWAooQ zy1KiDpPCYrAG}BVrEvR+Sz0Rqd}l(qsMV*olGL;_Y1dOeY`k4U)jn=Kw3zCF!V}0n9H&@1cCc%WnC6|u%j?Z>qho+``S{C&--W?i4)tNgo6pj)jkJ zV^b4IBpl8@Ux}udbWqNkA3*9|eiyyu$v^7RUOoO8-t<{m^5FZ)B5b1fxPkY*bz_Y1 zH2pitdZV&^nho^YfzD3*c`JSHvNV0}*NZ_hjl)N)%R}->HxhW;7v@H}dkAvfy6i70 zN>Ne-69!4ZrBjR7ot(DciJ%Kioi)6Q^02WwV%+_ymzPv_Lr%)p`+yVh4ml~X z0@s&g9@4VU$$g;v^aan9O-+wZZ4uv5Epp$0yvI5BVg7e#<>6~++ z+oy2x^X0Pf1-6#xP8B9rMZp@43`MO-Gef#^gthh2hc@K4vg|pkTpqIj5yZdz$&!m>NUY|W-u#VW~0M2TycDdjE zs4Z*BXh|KTYg+a`e6OryC@NV!Sf)=AU$ocqPc(ACPc=M@Iqx@oPUn)uM$;VStvze~ zcI{|j1o@;a5R`l)`~|Up;BcxCn3sll`j{#nBvhBEDYOTyu!p-Hfsm+7=k>H#@e+9O zqG;VEq%GdHH9CD1-2G;5lOpm_ILD-^YFik%IlWonqL#yp^howP{e$TyTJmQe| zI6$pu(Q{u?2fOuLkFSqs<5M!SGrc_B{MRQ95V(tlgF8~b_}!f$Og9%{baNjlYWs9} zP-#V3B3{CN5@`Sf^J2Vv*-K1h7Z*7972A)?v%3E3h{YaP^+J=`={2wKJX zU6F;&*r^Ku%{|om2L?@4S7e+;7n47n-c1%J>>E~RNZO4#fCB>mn9Vh;w zyPI7ebN4ZF*;p&up1PJ&>tTBG5SW&>ru+~mQ{8i5kl(>FUME2vz9`l#TR-~4_l{u; zEBn9JfAU^W>)E73UaDb zK(v+=7?r$kQCH($ctwLhl*)k6ZxF?aU-O;yqu<+#N~hL7D#}BOxRuB{+kLA%_x$E( zB_>kF(kJKCRK5zBpl9}(SzHjakHFxd%ZkOag?)Q#r=E^_tT5575SW1YAazvY4iW@W z^2xIq>p>>%C~X_7jCBk9kl@Dvq6aEHdm@Lp$Sk5X2YNo*=%8sk#q>(X777Ai@ES)t zCLyMbSw$iW1P6Hg`CjxCO@p`rkj$<7{u1=snK?T@U+r8ISii(-4t^~3!GW6c?}yjT zmmpv(yuTm*brauIvSyX=0eGyMvd9kZRC9}Ym!8`5*K8(&j5)m9hdEJ~$PRL-baYqN+_yi-Twbv}4wjtHW5H7^*IE03Kjme*&%LibKbgz6`QSLR8nN^9Cpt}u zSuOSh`#%Rbdk?)iC9}VMFZ|GSMcQ6D`RLSpIsf?A7i*%bIf~E$;+Cm@#z+KT2H3{a#&Dl_i;IsL3$3KE6>*a7Y zPZ|h%9a82}ll)?Mt9<^8BVu+w3`Sfxef_-gt=`@CE^9Q_O_k>SHQlOYa&ZXaqHjbW zw+h?p50#wx@P&Zzhx9K_BE_Ss@=wP3^OW}1$wk0ZNd2D8*-C4D7|Gd-X^?Ina5K6t zjPrA(-vU|COxtZvTA{~o;NA5b=gH?w6Z0~;>T`G8Fzh)`KmYSHPpUAR8<4{!dkwN@ zRgev1w>Hqd;$zg3d{%DT(nVSi_gz)0f{&kdhG9dRedc|UOc>z@qPU25JNAeAV#~pe zYn1zf<#uS_&cvuD+0NXt1msZ&Y5m)3Ve2~eGIQ)3TpbS85{@S2gyugAb3k3iG;?sh z!?-^&O=c@2?sxY67(BLf%il4awVIYAm&nQ)RCm{qj%UZ#b7_XYCm&nTA|5QIMHLHM z!=a@0ZCFEUDGM7*&2mU+y~7dDA$j7di!s6PWP8DC$DPhajr8-M-z~nNA<2o;V>q(z zfj<{7h4*gQJx12-!mp)E&S=cZx3?#pbk$&}puhVyJ4H5le{W5^%G$oaiek3&cA;GW zX|kQ~>D=2(?zbj(ez0;#j*od;!K(Hpinjy6P)(Vdu8@4C_dI^^*DG#@yWYYQ$9UC*Yz4d(Bqs={ELdK5vgnQBuhfdeSi&J8_;p;-QJ6>L^VPsVbh4f>KiUcK`FsQ?y_`XgbzdAJ01j^I% zu}AY;ZUJ!GNfMISf?2-Wt2k-?7y8cfu5CT3;hB!@kG$OiQ^mv@?k=MbIwmhEsqH__ zJ73v(oD@E6tlpn~;X$t*r=yPbx(#MTc*N=RbXi=$Q(`}pJ)7d# z6K-^Qt8 zJq{hO>2D}c{BxXprnQ$=Zigf3CQll8uCX^Fc2JoTRav~9XJhMy+l|}@4^>zwC%S5C zZ<=?RxmjPM)+YF3ZTEO+{B6@%0_RBG{;D6Rr!i=1Kc7(J+dGo3k-FKg;`J9Fb5_Do zp}#i`aK~k&^^wWi%r%4C62Y#X^WE}m6+^eo4EBC(9u|6wx?0Sl=1OksMliSkTi6#9 z+U!P!3(djJIZp>7Cil@G0s~kWfW>Pxwys6-J6mPA&Godi`^N1Z+x>( z+iB4jO@sD*`oASppT76Tdz2G<3sHgrj`shlOa7_qpAAce)Gwa8AJZ5dQ%u43;&D3`f-z%n>|0-@W z{-B)GoI%Ws$6vw{kdK86gRm#ImayGiMW1^+mX9xwQQZB$_sko@7PaJCfOQh{*stKi z6RT&7wX2ze`B=@Xt+9G!g7mQt$7z}D5F{k62Nyn^={FI!(DyqSizyyBzof#KpwR6hAN@6w1EcHabn7aEjQ(?!=;fz;T)K?cHvOCUUX z!FxMq!U>FgWDoO14T7kY>}!wLrN9MYmyQPk;GyWrgI!i|VbW3`c20;?N(h)L!Q+3{ zX#OI}e=_A?wVQtxaQ@>rIi8K&gJQ7Y1q+x;?e!7&sZDctfV8|A>!bb$ zfGj+grvm_}%e$X!=S=|WBVhD7L?Jn;eb3y_xSiX@&*rOq_uyv*SdD($qaM!F-AdAW zdC8&*r-5~eUmJerXkSLe`Z@1<@6jF1xz|eeOVn-5@5?su?8hB`uxS4woe4va?f#rm zlSN$uHLBO!_Pgo6=7357A?>Y*I_TOow@s&r<1oa#wE~{c_RuFWTN&0hqqtGi!rM`3 zUF3-?!)bf-+>UX6g7>Zp(R@113j$E~YymI-a^ITm@UR&q51QayBVnXPZ09aaj@hvg zFpd|xJTaSDGM|#@Bc@jbt-aX66<6)mjx8VynEV|;n})jjE*t7rzgjMUwDWtVTf?z+ z3|surI7U34I$rF7cXNMcpckBo@wjWXyaOY4x=(Vp(xP^vL}0X)wvv$`K7d>;uG;^` z`U~`)j`MhoMjjhlRt@OQ9yyOgz`}h!cNsb`cQ*kGDoG90@YASEH!g zapM1tM^2UbmP<`~j=#K1 z8kFEwL5nc?Z?wbfrfn|)@0xn+U|^?8@cXMaF^SXAcy?dLL1xXb7&tMTKNIZvC63e>{ZW(?9$>;g-wPa>2h#&TO~r;F?P7fa_VzAQo~LEL zhK}Y0zu|7RQ-A+bL3*~Rzrz4I@0Chx>>K1)7HSId`?-haV^Rd|_Enw-Fbub^A;Fg^ zjCJ18_oyDep|>RS#QYu^h%Ss6a$-C?75yMa|I?%)$ijd()B;u>t@B^hm$g1VBI zDQi72D~9 zy|dQ`d5j=PL8T=%#Rib3q#Eez zml*Gd;0(P+M2WuZI%zRN#>O)w44Jqe(c0ed5RUOI@V_L^H6lh@QRFm8D*4Lo>evMC zA%>b6BzPQ1IBT2^))`JmxYQimcZsA4s`hKVYq7kd?t!Fsp60dIk+=@AY_6p@U?Gn_ z$W}>cVCk~I_`2t3+vLIfTcA{wpX`SBmh1`)I;8V70lM>FdSV}R2=ZxF{x;$cSZ^jJ2xK_ zJ=xpl-MmE0l=D+wglZlsU!MCP_);UdPer3qT>Q<4MV^>?s7k9tOn_fhi5RS|_9O%} zE>jOdOxkUr{VuInTmIy{sMg0bOY7kWh1hsTQot6@;N8>vLl_t8A=0(eUwVpQ8J-x| zI7{d&vftPd1e5*ZcwHM4ZNP2RdvVAG53rU>{D)GLIsdcG-{t+e$m47izk?NW`w7Pp z|2gT1y;^#&@WV#HZXe84lDK@mDrSmiFwxDf)Mlz;y4=gTT&%Q6@A|b=GHC+N&Q4$F zB_RW+Kdb#;ZnP-J3f!~qHTlP?{e0~idL<$m!DrsqN?PBmWKi_gG0AoJh1X&$sZ>hI zLGPG^poFy0@odAr@Hm0>dm3hjO#l6o`1^bUU%*o*IxwVvthw~@?hc^=$ zblYPl9tM4@AAkDGuHoUfYUc1_Qi{PJV86)Snr_tQL*x?rw_j&L^q$`I9rUwR!ll zyXixB&rnej?4+6D;J0>uqNna$bWk71^*Uj*M1j0? zj{^gJ)QVR=ndkDAo}{&Ki}gCylQ*4?`&6 zLamMTVer@XeF2`&r+g(G-fRbz#{?_ukK*ecQPcQH`+)3%Tx*#6p0sl#Xmx#}v zkN{K|XQyoeFqol0t9ZOLY2{CQD|OGcm#c64-NK)4?$XnY(TW;HdL>E+^#fnZI2 z+{8P*`Mbr&((Wo_PF_~{k`@6YOfVmmK#veW2vW5(Y}c?|#PZM)u_%kZkESH|8^r9>bs09MO2z>5zH{it1 z4m;`vYU`j5TIU5nSE@jj-*{7|WE+^}6Zu!!_TW@rs`fTkP#OGcJ$b3!{J}OSzzR^A zoa}^`9M~fd3TWllm;SO|_@2g}bPHWasy((J78I;UO#bRXec7IyaMw&6eL`^F*7A>( z<|w$j2PmF1`VW|XW%Sn(D+DEUYEQ;(#|sdLmR8qmXT~M5R?egsiCmz%|5-yXwfY%r zJhxI_ZY?e^I0GT8Cq=N>M3S0vKDn42mw}|F$qUfy?Rr|uL?TdJ1eID~t#ZSdn1}>Q zDTUpgwDmBKamBpcu5piDQ5qn!#pJMbR##%OL@LWLpu`U5!9FYfT%^D)!6?*#a3v_v zujhmhP5E%QT$=y+t>p!4cGfo0)v78H@CV!g2ygN#mYSZjY{|pDjW~=Yz=?a=oqLUm+=WUO$TK(nOa%e1z&C?3wn&Bf}r_FT5vcTMB;I}B=~r`H%67PG&c=Y%(Px4^;e)lj>*69nQa7!+durf&YHCCC5AX*Jc0R`vi8 zJ+psRS5tcvmPQIBZfjtguHix&iOKS zenaLp7j^9ePo|keH&HoWIM1%i`8Bky*VvLN^21*pE z6kD>wQ0{_F1DIJxe<0fdTgw^WWh%er=I*-YRSDbPUx)!l2f+)zuK9;NfqF?pTpUOq zc{y3cjBJSrt1}>9or?+Gpr61wdJZgx0~%noKu-{od{yYdMsYS+1E*}dw9LBiV~q6K z+%R@4Ee{|C^Gs50-Ed?A#?uqh$3fq~XZtj> zz&JsWrIs;|Rv00Qz!@mN8_SPf5-Oh~Bc5sel!CeniYyfc9sh`)$#n{f^O1l^6e)1A zwX|#FWT`&;aYS05B^pxBCm2@bC`+O%B>M5MdcPTNa1hvTrv|71pvbN#ASg?dde%Js zmqtZVx7{8{3svao3gdSL0Kr(AAnf`sur{fbytf`uq8HchZ`(BVk(1|QM&m*FWv{XA zg#-GgnX8!6&&bIFx|-F*t#8h5=>AAiWoF?Q37DXLgWoO?fEfLOhx|>~ z4D|X5FdcZm^u&3jipaaI`=}Cx_WmQzZn3kj*=1mX*beppfa$6E7csS#4uC!sdfeTf zB&`R7%%CJ^XFXj)@PkW;At0cG4GdXJ8KCY8dh#$k3%4qK;*HT~PfP+1k(Zs@T3rc% zJt6EYoGHliYN%6%TcOR`YlqFp2h+b>a&%*W&N~Q(`nQJCIcJ*;iRi0<=<HwfO*8~{{f^AnmHxe&f8$0gXpMQ6dEXN zM#IGyQ+0C|Vo0R`%ycBUV>KPEV2ogL!t<_#P-`O}8};vK#YD;Fn}Sf{bILjHBw^TN z!~+S()V1AjUVvplpaBbwgKZTvf>nL$DMz-ww5~g+{+WK z?^8r#^z|m}m0UI!yC_tu1_lOaDQ_ir%37R@YFuWZ^8y0>_CUN-*>!Pu-P0StyQFHp zmbKunWu)ub^tZheAW3ksg3qObnb(U?5E&h_t6A$8)5%JQA?*1KqV@HXDmRzh1t`FV z7Tu@up3bhCu1>bDV0Zwd7w)81<|AKio+mxV(ltzi5G2>IwBf+P#>UdY$+BW$uLQtn zNO5;r6%abWFMvM)&HBaw@`DX9AmgIWb^7S3Z30XV9sn+Xj_)_$pJy1~O0uf&QmBEX zE7&|orVh9uOptRThQ}Vfcz- - - - - -@import base.sass \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/templates/project/manifest.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/templates/project/manifest.rb deleted file mode 100644 index 94dc27e1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/templates/project/manifest.rb +++ /dev/null @@ -1,5 +0,0 @@ -stylesheet 'screen.sass', :media => "screen, projection" -stylesheet 'print.sass', :media => "print" -stylesheet 'ie.sass', :media => "screen, projection" -stylesheet '_base.sass' -stylesheet '_defaults.sass' diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/templates/project/print.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/templates/project/print.sass deleted file mode 100644 index 64b45018..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/templates/project/print.sass +++ /dev/null @@ -1,7 +0,0 @@ -/* - Welcome to Susy. Use this file to define print styles. - Import this file using the following HTML or equivalent: - - - -@import defaults.sass \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/templates/project/screen.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/templates/project/screen.sass deleted file mode 100644 index f64f5994..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/extensions/susy/templates/project/screen.sass +++ /dev/null @@ -1,44 +0,0 @@ -/* - Welcome to Susy. Use this file to define screen styles. - Import this file using the following HTML or equivalent: - - - -@import defaults.sass - - -/* @group STRUCTURE */ - - - -/* @end */ - - -/* @group COMPONENTS by type */ - - - -/* @end */ - - -/* @group OVERRIDES by content */ - - - -/* @end */ - - -/* @group OVERRIDES by page */ - - - -/* @end */ - - -/* @group DEBUG */ - -// Uncomment, adjust and use for debugging -// #page -// +show-grid("your-grid-image.png") - -/* @end */ diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/src/_base.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/src/_base.sass deleted file mode 100644 index 83bdfcfa..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/src/_base.sass +++ /dev/null @@ -1,62 +0,0 @@ -//** -// Susy: Fixed-Elastic-Fluid grids without all the math -// By: Eric A. Meyer and OddBird Collective -// Site: www.oddbird.net/susy/ -//** - -// GRID -// Set these values as needed for your grid layout. -// - defaults are shown. -!grid_unit = "em" -!total_cols = 12 -!col_width = 4 -!gutter_width = 1 -!side_gutter_width = !gutter_width - - -// OMEGA_FLOAT -// By default, +omega elements are floated right. -// You can override that globally here: -// !omega_float = "right" - - -// HACKS -// Are you using hacks or conditional comments? Susy makes both possible. -// Leave this as 'true' to use hacks, set it as false for conditional comments. -// Conditional comments will require overrides for +omega, +inline-block and -// several other mixins. -// !hacks = true - - -// FONT-SIZE -// Override these values as needed (defaults are shown) -// - You set the font and line heights in pixels. -// - Susy will do the math and give you !base_font_size and !base_line_height -// variables, set flexibly against the common browser default of 16px -!base_font_size_px = 16 -!base_line_height_px = 24 - - -// SUSY -// Don't move this @import above the GRID and FONT-SIZE overrides. -@import susy/susy.sass - - -// COLORS -// Set any colors you will need later. -!main = #194C66 -!alt = #CC6633 - - -// FONTS -// Give yourself some font stacks to work with. -=sans-family - font-family: Helvetica, Arial, sans-serif - -=serif-family - font-family: Baskerville, Palatino, serif - - -// OTHER MIXINS -// Mixins set here will be available in defaults, screen, print and IE -// Or anywhere you import either base.sass or defaults.sass \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/src/_defaults.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/src/_defaults.sass deleted file mode 100644 index 33f7139f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/src/_defaults.sass +++ /dev/null @@ -1,148 +0,0 @@ -//** DEFAULT STYLES **// -// Don't forget to set your default styles. - - -// Get all the details and mixins from base.sass -@import base.sass -// Reset browser defaults, and prepare block-level HTML5 elements -@import susy/reset.sass -@import compass/css3.sass - - -/* @group defaults */ - -body - +sans-family - color= !main - -/* @group links */ - -\:focus - outline= 1px "dotted" !alt - -a - &:link, &:visited - color= !alt - &:focus, &:hover, &:active - color= !alt - #222 - text-decoration: none - -/* @end */ - - -/* @group headers */ - -h1, h2, h3, h4, h5, h6 - font-weight: bold - -/* @end */ - - -/* @group forms */ - -form *:focus - outline: none - -fieldset - margin= !base_line_height 0 - -legend - font-weight: bold - font-variant: small-caps - -label - display: block - margin-top= !base_line_height - -legend + label - margin-top: 0 - -textarea, input[type="text"] - +box-sizing("border-box") - width: 100% - -/* @end */ - - -/* @group tables */ - -/* tables still need 'cellspacing="0"' in the markup */ - -table - :width 100% - :border= 1/16 + "em solid" !main + #333 - :left none - :right none - :padding= 7/16 + "em 0" - :margin= 8/16 + "em 0" - -th - :font-weight bold - -/* @end */ - - -/* @group block tags */ - -p - :margin= !base_line_height 0 - -=list-default(!ol = false) - :margin= !base_line_height - @if !ol - :list-style decimal - @else - :list-style disc - -=no-style-list - +no-bullets - :margin 0 - :padding 0 - -ol - +list-default("ol") - -ul - +list-default - -blockquote - :margin= !base_line_height - +serif-family - -/* @end */ - - -/* @group inline tags */ - -cite - :font-style italic - -em - :font-style italic - -strong - :font-weight bold - -ins - :text-decoration underline - -del - :text-decoration line-through - -q - :font-style italic - em - :font-style normal - -/* @end */ - - -/* @group replaced tags */ - -img - :vertical-align bottom - -/* @end */ - - -/* @end */ \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/src/screen.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/src/screen.sass deleted file mode 100644 index 7ab836ad..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/susy/src/screen.sass +++ /dev/null @@ -1,114 +0,0 @@ -/* - Welcome to Susy. Use this file to define screen styles. - Import this file using the following HTML or equivalent: - - - -@import defaults.sass - - -/* @group STRUCTURE */ - -#skip-links - ul - +no-style-list - a - +skip-link - width: 100% - -body - +susy - -#page - position: relative - +container - background: rgba(0,0,0,.10) - -h1, h2 - +serif-family - text-transform: uppercase - text-align: center - background: rgba(0,0,0,.15) - letter-spacing= 1/14 + "em" - -h1 + p, h2 + p, p:first-child - margin-top: 0 - -header[role="banner"], #site-nav - +full - h1 - font-size: 1.5em - line-height: 2em - -#site-nav - text-align: center - padding: 1.5em - ul - +inline-block-list(.5em) - -#content - > aside - +columns(2) - &:first-child - +alpha - & + aside - +omega - section[role="main"] - +columns(6) - > section - +full(6) - .major - article - +columns(3,6) - & + article - +omega(6) - .minor - aside - +columns(2,6) - article - +columns(4,6) - +omega(6) - header, .body - +columns(2,4) - .body - +omega(4) - footer - +full(4) - -footer[role="contentinfo"] - +full - border-top= 1/14 + "em dotted" - padding-top= 13/14 + "em" - - -/* @end */ - - -/* @group COMPONENTS by type */ - - - -/* @end */ - - -/* @group OVERRIDES by content */ - - - -/* @end */ - - -/* @group OVERRIDES by page */ - - - -/* @end */ - - -/* @group DEBUG */ - -// Uncomment, adjust and use for debugging -// #page -// +show-grid("your-grid-image.png") - -/* @end */ diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/bootstrap.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/bootstrap.rb deleted file mode 100644 index fcc0c7c4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/bootstrap.rb +++ /dev/null @@ -1,3 +0,0 @@ -require File.join(File.dirname(__FILE__), '..', 'downloader') - -install_from_github('chriseppstein', 'yui-compass-plugin', 'yui') \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/divisions.html.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/divisions.html.haml deleted file mode 100644 index c4fa50e2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/divisions.html.haml +++ /dev/null @@ -1,179 +0,0 @@ -!!! Transitional -%html{:xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en", :lang => "en"} - %head - %title Yahoo Grid Divisions Example - %link{:rel=>"stylesheet", :href=>"stylesheets/screen.css", :type=>"text/css", :media=>"screen, projection"} - :javascript - function changeTemplate() { - var templateClass = document.getElementById("current-template").value; - document.getElementById("doc4").className = templateClass; - } - %style{:type => "text/css"} - :sass - .yui-b - border: 1px dotted #ccc - %body - #doc4.yui-t2 - #hd - %h1 Yahoo Grid Divisions Example - #bd - .yui-b - %h3 YUI Examples - %ul - %li - %a{:href=>"templates.html"} Template Presets - %li - %a{:href=>"typography.html"} Typography - %li - %a{:href=>"divisions.html"} Grid Divisions - %label{:for => "current-template"} Select Template Preset - %select{:id=>"current-template", :onchange => "changeTemplate()"} - %option{:value => "yui-t1"}= ".yui-t1" - %option{:value => "yui-t2", :selected => "selected"}= ".yui-t2" - %option{:value => "yui-t3"}= ".yui-t3" - %option{:value => "yui-t4"}= ".yui-t4" - %option{:value => "yui-t5"}= ".yui-t5" - %option{:value => "yui-t6"}= ".yui-t6" - - #yui-main - .yui-b - %h2 50/50 Division - %hr - .yui-g - .yui-u.first - %h3 Left Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - .yui-u - %h3 Right Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - %h2 33/33/33 Division - %hr - .yui-gb - .yui-u.first - %h3 Left Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - .yui-u - %h3 Middle - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - - .yui-u - %h3 Right Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - %h2 67/33 Division - %hr - .yui-gc - .yui-u.first - %h3 Left Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - .yui-u - %h3 Right Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - %h2 33/67 Division - %hr - .yui-gd - .yui-u.first - %h3 Left Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - .yui-u - %h3 Right Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - %h2 75/25 Division - %hr - .yui-ge - .yui-u.first - %h3 Left Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - .yui-u - %h3 Right Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - %h2 25/75 Division - %hr - .yui-gf - .yui-u.first - %h3 Left Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - .yui-u - %h3 Right Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - - #ft - Copyright © 2008. All Rights Reserved. - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/_yui.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/_yui.sass deleted file mode 100644 index acc2006e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/_yui.sass +++ /dev/null @@ -1,7 +0,0 @@ -@import yui/modules/base.sass -@import yui/modules/fonts.sass -@import yui/modules/grids.sass -=yui - +yui-base - +yui-base-fonts - +yui-grids \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/yui/modules/_base.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/yui/modules/_base.sass deleted file mode 100644 index f457131d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/yui/modules/_base.sass +++ /dev/null @@ -1,70 +0,0 @@ -=yui-base - body - :margin 10px - - h1 - :font-size 138.5% - - h2 - :font-size 123.1% - - h3 - :font-size 108% - - h1, h2, h3 - :margin 1em 0 - - h1,h2, h3, h4, h5, h6, strong, dt - :font-weight bold - - optgroup - :font-weight normal - - abbr, acronym - :border-bottom 1px dotted #000 - :cursor help - - em - :font-style italic - - del - :text-decoration line-through - - blockquote, ul, ol, dl - :margin 1em - - ol,ul,dl - :margin-left 2em - - ol li - :list-style decimal outside - - ul li - :list-style disc outside - - dl dd - :margin-left 1em - - th, td - :border 1px solid #000 - :padding .5em - - th - :font-weight bold - :text-align center - - caption - :margin-bottom .5em - :text-align center - - sup - :vertical-align super - - sub - :vertical-align sub - - p, fieldset, table, pre - :margin-bottom 1em - - button, input[type="checkbox"], input[type="radio"], input[type="reset"], input[type="submit"] - padding: 1px \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/yui/modules/_fonts.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/yui/modules/_fonts.sass deleted file mode 100644 index 708458ce..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/yui/modules/_fonts.sass +++ /dev/null @@ -1,45 +0,0 @@ -!yui_default_base_font_size ||= 13px -!yui_default_base_line_height ||= 1.231 -!yui_default_font_family ||= "arial,helvetica,clean,sans-serif" - -// Sets the font size specified in pixels using percents so that the base -// font size changes and 1em has the correct value. When nesting font size -// declarations, within the DOM tree, the base_font_size must be the parent's -// effective font-size in pixels. -// Usage Examples: -// .big -// +font-size(16px) -// .bigger -// +font-size(18px) -// .big .bigger -// +font-size(18px, 16px) -// -// For more information see the table found at http://developer.yahoo.com/yui/fonts/#fontsize -=font-size(!size, !base_font_size = !yui_default_base_font_size) - :font-size= percentage(!size / !base_font_size) - -// Sets the base fonts for a page, this should be mixed into the top level of a stylesheet. -=yui-base-fonts(!family = !yui_default_font_family, !size = !yui_default_base_font_size, !line_height = !yui_default_base_line_height) - body - :font - :size= !size - :family= !family - :line-height= !line_height - :*font-size small - :*font x-small - - select, - input, - button, - textarea, - button - :font 99% arial,helvetica,clean,sans-serif - - table - :font-size inherit - :font 100% - - pre, code, kbd, samp, tt - :font-family monospace - :*font-size 108% - :line-height 100% diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/yui/modules/_grids.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/yui/modules/_grids.sass deleted file mode 100644 index a90f26b5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/yui/modules/_grids.sass +++ /dev/null @@ -1,385 +0,0 @@ -// This is a port of YUI Grids version 2.6.0 -// Note: This is not really tested yet. Use at your own risk. - -@import compass/utilities/general/float.sass -@import fonts.sass - -=yui-grids - +yui-grids-init - +yui-grid-templates - +yui-grid-divisions - -=yui-grid-templates - #doc - +yui-document(750px) - #doc2 - +yui-document(950px) - #doc3 - +yui-document("fluid") - #doc4 - +yui-document(974px) - /* Section: Preset Template Rules (.yui-t[1-6]) - .yui-t1 - +yui-two-column-left-template(160px) - .yui-t2 - +yui-two-column-left-template(180px) - .yui-t3 - +yui-two-column-left-template(300px) - .yui-t4 - +yui-two-column-right-template(180px) - .yui-t5 - +yui-two-column-right-template(240px) - .yui-t6 - +yui-two-column-right-template(300px) - .yui-t7 - +yui-one-column-template - -=yui-group-clearing - zoom: 1 - &:after - content: "." - display: block - height: 0 - clear: both - visibility: hidden - -=yui-grids-init(!header = "#hd", !footer = "#ft", !body = "#bd") - /* Section: General Rules - body - :text-align center - @if !header - #{!header} - +yui-group-clearing - @if !footer - #{!footer} - +yui-group-clearing - @if !body - #{!body} - +yui-group-clearing - -=em-size(!style, !px_size, !base_font_size = !yui_default_base_font_size) - :#{!style}= 1em * !px_size / !base_font_size - -=em-size-hacked(!style, !px_size, !base_font_size = !yui_default_base_font_size) - +em-size(!style, !px_size, !base_font_size) - +em-size("*"+!style, !px_size * 39 / 40, !base_font_size) - -// All documents must have these styles -=yui-document-base(!min_width = false) - :margin auto - :text-align left - @if !min_width - :min-width= !min_width - -=yui-block-base - :position relative - :_position static - -=yui-main-block - :float none - :width auto - -// Creates a fixed width document container -// Pass "fluid" for the width to create a document that grows with the width of the browser. -=yui-document(!width, !min_width = false, !base_font_size = !yui_default_base_font_size) - +yui-document-base(!min_width) - @if !width == "fluid" - :margin auto 10px - :width auto - @else - +em-size-hacked("width", !width, !base_font_size) - -=yui-two-column-left-template(!column_width, !main_selector = "#yui-main", !block_selector = ".yui-b", !document_width = 750px, !min_width = false, !base_font_size = !yui_default_base_font_size) - +yui-document(!document_width, !min_width, !base_font_size) - #{!block_selector} - +yui-block-base - :float left - +em-size-hacked("width", !column_width, !base_font_size) - #{!main_selector} - :width 100% - :float right - :margin-left -25em - #{!block_selector} - +yui-main-block - +em-size("margin-left", !column_width + 13px, !base_font_size) - // t3 is 15px for IE for some reason - seems like this should be some formula based on the column width and not a fixed number - need to do more research - @if !column_width > 180px - +em-size("*margin-left", (!column_width + 15px) * 39 / 40, !base_font_size) - @else - +em-size("*margin-left", (!column_width + 14px) * 39 / 40, !base_font_size) - -=yui-two-column-right-template(!column_width, !main_selector = "#yui-main", !block_selector = ".yui-b", !document_width = 750px, !min_width = false, !base_font_size = !yui_default_base_font_size) - +yui-document(!document_width, !min_width, !base_font_size) - #{!block_selector} - +yui-block-base - :float right - +em-size-hacked("width", !column_width, !base_font_size) - #{!main_selector} - :width 100% - :float left - :margin-right -25em - #{!block_selector} - +yui-main-block - +em-size("margin-right", !column_width + 13px, !base_font_size) - // t5 is 15px for IE for some reason - seems like this should be some formula based on the column width and not a fixed number - need to do more research - @if !column_width > 180px - +em-size("*margin-right", (!column_width + 15px) * 39 / 40, !base_font_size) - @else - +em-size("*margin-right", (!column_width + 14px) * 39 / 40, !base_font_size) - -=yui-one-column-template(!main_selector = "#yui-main", !block_selector = ".yui-b", !document_width = 750px, !min_width = false, !base_font_size = !yui_default_base_font_size) - +yui-document(!document_width, !min_width, !base_font_size) - #{!main_selector} - #{!block_selector} - +yui-main-block - :display block - :margin 0 0 1em 0 - -=yui-custom-template(!main_selector = "#yui-main", !block_selector = ".yui-b") - #{!block_selector} - +yui-block-base - #{!main_selector} - :width 100% - #{!block_selector} - +yui-main-block - -=yui-grid-divisions(!unit = ".yui-u", !g_50_50 = ".yui-g", !g_33_33_33 = ".yui-gb", !g_67_33 = ".yui-gc", !g_33_67 = ".yui-gd", !g_75_25 = ".yui-ge", !g_25_75 = ".yui-gf") - - /* Section: Grids and Nesting Grids - - /* from #yui-main, .yui-g .yui-u .yui-g - #{nest(!g_50_50, !unit, !g_50_50)} - width: 100% - - /* Children generally take half the available space - #{nest(!g_33_33_33, !unit)}, - #{nest(!g_50_50, !g_33_33_33, !unit)}, - #{nest(!g_33_33_33, !g_50_50)}, - #{nest(!g_33_33_33, !g_33_33_33)}, - #{nest(!g_33_33_33, !g_67_33)}, - #{nest(!g_33_33_33, !g_33_67)}, - #{nest(!g_33_33_33, !g_75_25)}, - #{nest(!g_33_33_33, !g_25_75)}, - #{nest(!g_67_33, !unit)}, - #{nest(!g_67_33, !g_50_50)}, - #{nest(!g_33_67, !unit)} - float: left - - /* Float units (and sub grids) to the right - #{nest(!g_50_50, !unit)}, - #{nest(!g_50_50, !g_50_50)}, - #{nest(!g_50_50, !g_33_33_33)}, - #{nest(!g_50_50, !g_67_33)}, - #{nest(!g_50_50, !g_33_67)}, - #{nest(!g_50_50, !g_75_25)}, - #{nest(!g_50_50, !g_25_75)}, - #{nest(!g_67_33, !unit)}, - #{nest(!g_33_67, !g_50_50)}, - #{nest(!g_50_50, !g_67_33, !unit)}, - #{nest(!g_75_25, !unit)}, - #{nest(!g_75_25, !g_50_50)}, - #{nest(!g_25_75, !g_50_50)}, - #{nest(!g_25_75, !unit)} - float: right - - /* Float units (and sub grids) to the left - #{!g_50_50}, - #{!g_33_33_33}, - #{!g_67_33}, - #{!g_33_67}, - #{!g_75_25}, - #{!g_25_75}, - #{nest(!g_50_50, !g_67_33)}, - #{nest(!g_50_50, !g_75_25)}, - #{nest(!g_67_33, "div.first")} - div.first - float: left - - #{!g_50_50} - #{!unit}, - #{!g_50_50}, - #{!g_33_33_33}, - #{!g_67_33}, - #{!g_33_67}, - #{!g_75_25}, - #{!g_25_75} - width: 49.1% - - #{nest(!g_33_33_33, !unit)}, - #{nest(!g_50_50, !g_33_33_33, !unit)}, - #{nest(!g_33_33_33, !g_50_50)}, - #{nest(!g_33_33_33, !g_33_33_33)}, - #{nest(!g_33_33_33, !g_67_33)}, - #{nest(!g_33_33_33, !g_33_67)}, - #{nest(!g_33_33_33, !g_75_25)}, - #{nest(!g_33_33_33, !g_25_75)}, - #{nest(!g_67_33, !unit)}, - #{nest(!g_67_33, !g_50_50)}, - #{nest(!g_33_67, !unit)} - width: 32% - margin-left: 1.99% - - /* Give IE some extra breathing room for 1/3-based rounding issues - #{nest(!g_33_33_33, !unit)} - *margin-left: 1.9% - *width: 31.9% - - #{nest(!g_50_50, !g_33_33_33)}, - #{!g_33_33_33}, - #{!g_67_33}, - #{!g_33_67} - div.first - margin-left: 0 - - /* Section: Deep Nesting - #{!g_50_50}, - #{!g_33_33_33}, - #{!g_67_33}, - #{!g_33_67}, - #{!g_75_25}, - #{!g_25_75} - #{!g_50_50} - #{!unit} - width: 49% - *width: 48.1% - *margin-left: 0 - - #{nest(!g_50_50, !g_50_50, !unit)} - width: 48.1% - - #{!g_50_50}, - #{!g_33_33_33} - #{!g_33_33_33} - div.first - *margin-right: 0 - *width: 32% - _width: 31.7% - - #{nest(!g_50_50, !g_67_33, "div.first")}, - #{nest(!g_67_33, "div.first")}, - #{nest(!g_33_67, !g_50_50)}, - #{nest(!g_33_67, !unit)} - width: 66% - - #{nest(!g_33_33_33, !g_50_50, "div.first")} - *margin-right: 4% - _margin-right: 1.3% - - #{!g_33_33_33} - #{!g_67_33}, - #{!g_33_67} - div.first - *margin-right: 0 - - #{!g_33_33_33} - #{!g_33_33_33}, - #{!g_67_33} - #{!unit} - *margin-left: 1.8% - _margin-left: 4% - - #{nest(!g_50_50, !g_33_33_33, !unit)} - _margin-left: 1.0% - - #{nest(!g_33_33_33, !g_33_67, !unit)} - *width: 66% - _width: 61.2% - - #{nest(!g_33_33_33, !g_33_67, "div.first")} - *width: 31% - _width: 29.5% - - #{!g_50_50}, - #{!g_33_33_33} - #{!g_67_33} - #{!unit} - width: 32% - _float: right - margin-right: 0 - _margin-left: 0 - - #{nest(!g_33_33_33, !g_67_33, "div.first")} - width: 66% - *float: left - *margin-left: 0 - - #{!g_33_33_33} - #{!g_75_25}, - #{!g_25_75} - #{!unit} - margin: 0 - - #{nest(!g_33_33_33, !g_33_33_33, !unit)} - _margin-left: .7% - - #{nest(!g_33_33_33, !g_50_50)}, - #{nest(!g_33_33_33, !g_33_33_33)} - div.first - *margin-left: 0 - - #{!g_67_33}, - #{!g_33_67} - #{!g_50_50} - #{!unit} - *width: 48.1% - *margin-left: 0 - - #{!g_33_67}, - #{nest(!g_33_33_33, !g_33_67)} - div.first - width: 32% - - #{nest(!g_50_50, !g_33_67, "div.first")} - _width: 29.9% - - #{nest(!g_75_25, !unit)}, - #{nest(!g_75_25, !g_50_50)}, - #{nest(!g_25_75, "div.first")} - width: 24% - - #{nest(!g_75_25, "div.first")}, - #{nest(!g_25_75, !g_50_50)}, - #{nest(!g_25_75, !unit)} - width: 74.2% - - #{!g_33_33_33} - #{!g_75_25}, - #{!g_25_75} - div#{!unit} - float: right - - #{!g_33_33_33} - #{!g_75_25}, - #{!g_25_75} - div.first - float: left - - /* Width Accommodation for Nested Contexts - #{!g_33_33_33} - #{nest(!g_75_25, !unit)}, - #{nest(!g_25_75, "div.first")} - *width: 24% - _width: 20% - - /* Width Accommodation for Nested Contexts - #{!g_33_33_33} - #{nest(!g_75_25, "div.first")}, - #{nest(!g_25_75, !unit)} - *width: 73.5% - _width: 65.5% - - /* Patch for GD within GE - #{nest(!g_75_25, "div.first", !g_33_67, !unit)} - width: 65% - - #{nest(!g_75_25, "div.first", !g_33_67, "div.first")} - width: 32% - - /* @group Clearing - #{!g_50_50}, - #{!g_33_33_33}, - #{!g_67_33}, - #{!g_33_67}, - #{!g_75_25}, - #{!g_25_75} - +yui-group-clearing diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/yui/modules/_reset.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/yui/modules/_reset.sass deleted file mode 100644 index bf706e81..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/stylesheets/yui/modules/_reset.sass +++ /dev/null @@ -1,61 +0,0 @@ -/* - Copyright (c) 2008, Yahoo! Inc. All rights reserved. - Code licensed under the BSD License: - http://developer.yahoo.net/yui/license.txt - version: 3.0.0pr2 - -=reset - html - :color #000 - :background #FFF - - body, div, dl, dt, dd, ul, ol, li, - h1, h2, h3, h4, h5, h6, pre, code, - form, fieldset, legend,input, - textarea, p, blockquote, th, td - :margin 0 - :padding 0 - - li - :list-style none - - h1, h2, h3, h4, h5, h6 - :font-size 100% - :font-weight normal - - code, th, address, caption, - cite, dfn, em, strong, var - :font-style normal - :font-weight normal - - fieldset, img, abbr, acronym - :border 0 - - legend - :color #000 - - input, textarea, select - :font-family inherit - :font-size inherit - :font-weight inherit - :*font-size 100% - - th, caption - :text-align left - - table - :border-collapse collapse - :border-spacing 0 - - q - &:before, &:after - :content '' - - abbr, acronym - :font-variant normal - - sup - :vertical-align text-top - - sub - :vertical-align text-bottom diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/templates/project/manifest.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/templates/project/manifest.rb deleted file mode 100644 index c7af4356..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/templates/project/manifest.rb +++ /dev/null @@ -1 +0,0 @@ -stylesheet 'screen.sass', :media => "screen, projection" diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/templates/project/screen.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/templates/project/screen.sass deleted file mode 100644 index 40dab7fa..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/extensions/yui/templates/project/screen.sass +++ /dev/null @@ -1,4 +0,0 @@ -@import yui.sass -@import compass/reset.sass - -+yui diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/index.html.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/index.html.haml deleted file mode 100644 index 8d5849f7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/index.html.haml +++ /dev/null @@ -1,19 +0,0 @@ -!!! Transitional -%html{:xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en", :lang => "en"} - %head - %title YUI Typography Demo - %link{:rel=>"stylesheet", :href=>"stylesheets/screen.css", :type=>"text/css", :media=>"screen, projection"} - %body - #doc4.yui-t2 - .yui-b - %h3 YUI Examples - %ul - %li - %a{:href=>"templates.html"} Template Presets - %li - %a{:href=>"typography.html"} Typography - #yui-main - .yui-b - %h1 YUI Examples - %p - Please select an example. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/src/screen.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/src/screen.sass deleted file mode 100644 index cdff4c9c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/src/screen.sass +++ /dev/null @@ -1,13 +0,0 @@ -@import yui.sass -@import compass/reset.sass - -+yui - -.bigger - +font-size(16px) - -.biggest - +font-size(18px) - -.bigger .biggest - +font-size(18px, 16px) diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/sub_divisions.html.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/sub_divisions.html.haml deleted file mode 100644 index 13400385..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/sub_divisions.html.haml +++ /dev/null @@ -1,169 +0,0 @@ -!!! Transitional -%html{:xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en", :lang => "en"} - %head - %title YUI Grid Sub-Divisions Example - %link{:rel=>"stylesheet", :href=>"stylesheets/screen.css", :type=>"text/css", :media=>"screen, projection"} - %style{:type => "text/css"} - :sass - .yui-b - border: 1px dotted #ccc - %body - #doc4.yui-t2 - #hd - %h1 Yahoo Grid Sub-Divisions Example - #bd - .yui-b - %h3 YUI Examples - %ul - %li - %a{:href=>"templates.html"} Template Presets - %li - %a{:href=>"typography.html"} Typography - %li - %a{:href=>"divisions.html"} Grid Divisions - #yui-main - .yui-b - %h2 50/50 Division - %hr - .yui-g - .yui-g.first - .yui-u.first - %h4 Left Side of 50/50 Sub-Division (25%) - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - .yui-u - %h4 Right Side of 50/50 Sub-Division (25%) - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - .yui-u - %h4 Right Side of 50/50 Division (50%) - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - %h2 33/33/33 Division - %hr - .yui-gb - .yui-u.first - %h3 Left Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - .yui-u - %h3 Middle - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - - .yui-u - %h3 Right Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - %h2 67/33 Division - %hr - .yui-gc - .yui-u.first - %h3 Left Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - .yui-u - %h3 Right Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - %h2 33/67 Division - %hr - .yui-gd - .yui-u.first - %h3 Left Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - .yui-u - %h3 Right Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - %h2 75/25 Division - %hr - .yui-ge - .yui-u.first - %h3 Left Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - .yui-u - %h3 Right Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - %h2 25/75 Division - %hr - .yui-gf - .yui-u.first - %h3 Left Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - .yui-u - %h3 Right Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor - incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud - exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat - nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui - officia deserunt mollit anim id est laborum. - - #ft - Copyright © 2008. All Rights Reserved. - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/templates.html.haml b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/templates.html.haml deleted file mode 100644 index 5100876e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/templates.html.haml +++ /dev/null @@ -1,54 +0,0 @@ -!!! Transitional -%html{:xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en", :lang => "en"} - %head - %title YUI Template Presets Example - %link{:rel=>"stylesheet", :href=>"stylesheets/screen.css", :type=>"text/css", :media=>"screen, projection"} - :javascript - function changeTemplate() { - var templateClass = document.getElementById("current-template").value; - document.getElementById("doc4").className = templateClass; - } - %style{:type => "text/css"} - :sass - .yui-b - border: 1px dotted #ccc - %body - #doc4.yui-t2 - #hd - %h1 Yahoo Template Presets Example - #bd - .yui-b - %h3 YUI Examples - %ul - %li - %a{:href=>"templates.html"} Template Presets - %li - %a{:href=>"typography.html"} Typography - #yui-main - .yui-b - %h2 Main Content - %label{:for => "current-template"} Select Template Preset - %select{:id=>"current-template", :onchange => "changeTemplate()"} - %option{:value => "yui-t1"}= ".yui-t1" - %option{:value => "yui-t2", :selected => "selected"}= ".yui-t2" - %option{:value => "yui-t3"}= ".yui-t3" - %option{:value => "yui-t4"}= ".yui-t4" - %option{:value => "yui-t5"}= ".yui-t5" - %option{:value => "yui-t6"}= ".yui-t6" - %hr - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - .yui-g - .yui-u.first - %h3 50/50 Left Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - .yui-u - %h3 50/50 Right Side - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. - %p - Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - #ft - Copyright © 2008. All Rights Reserved. - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/test.jpg b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/examples/yui/test.jpg deleted file mode 100644 index 0107be27349330250c3c28f52ef5dd58a25690ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35467 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 "http://www.w3.org/1999/xhtml", "xml:lang" => "en", :lang => "en"} - %head - %title YUI Typography Demo - %link{:rel=>"stylesheet", :href=>"stylesheets/screen.css", :type=>"text/css", :media=>"screen, projection"} - %body - #doc4.yui-t2 - #yui-main - .yui-b - %h1 Typography Demo - %h2 This is a Sub Title. - - %p - Lorem ipsum dolor sit amet, - %em emphasized adipisicing - elit, sed do - %strong strong tempor - incididunt ut labore et - %b bold magna - aliqua. Ut enim ad - %i< - italic veniam, - quis nostrud exercitation ullamco - %a{:href=>'#'} link nisi ut aliquip ex ea commodo consequat. - Duis aute irure dolor in - %abbr abbreviation repre - in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - - %h3 Third Level Header - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - %p - Subsequent paragraph, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - - %h4 Fourth Level Header - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est quotation: - %blockquote - Block Quotem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - - %h5 Fifth Level Header - %img{:src => "test.jpg", :style => 'float: right;'} - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in - %span.bigger< - voluptate velit esse - %span.biggest cillum dolore - eu fugiat nulla pariatur. - Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - - %h6 Sixth Level Header - %p - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - - %table - %caption - This is the table caption - %thead - %tr - %th - %th Table Header 1 - %th Table Header 2 - %th Table Header 3 - %tbody - %tr - %th Row Header 1 - %td Lorem ipsum dolor sit amet. - %td Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - %td Lorem ipsum dolor sit amet. - %tr - %th Row Header 2 - %td Lorem ipsum dolor sit amet. - %td Lorem ipsum dolor sit amet. - %td Lorem ipsum dolor sit amet. - %tr - %th Row Header 3 - %td Lorem ipsum dolor sit amet. - %td Lorem ipsum dolor sit amet. - %td Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - %tr - %th Row Header 4 - %td Lorem ipsum dolor sit amet. - %td Lorem ipsum dolor sit amet. - %td Lorem ipsum dolor sit amet. - %tr - %th Row Header 5 - %td Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. - %td Lorem ipsum dolor sit amet. - %td Lorem ipsum dolor sit amet. - - %h3 Unordered Lists - %ul - %li List Element #1 - %li< - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - %li List Element #3 - %li< - Nested List - %ul - %li Nested 1 - %li Nested 2 - %li Nested 3 - - %h3 Ordered Lists - %ol - %li List Element #1 - %li< - Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - %li List Element #3 - %li< - Nested List - %ol - %li Nested 1 - %li Nested 2 - %li Nested 3 - - %h3 Definition Lists - %dl - %dt Term 1 - %dd Definition 1: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - %dd Definition 2: Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. - %dt Term 2 - %dd Another Definition - .yui-b - %h3 YUI Examples - %ul - %li - %a{:href=>"templates.html"} Template Presets - %li - %a{:href=>"typography.html"} Typography diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/features/command_line.feature b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/features/command_line.feature deleted file mode 100644 index 9b4485a4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/features/command_line.feature +++ /dev/null @@ -1,247 +0,0 @@ -Feature: Command Line - In order to manage my stylesheets - As a user on the command line - I want to create a new project - - Scenario: Install a project without a framework - When I create a project using: compass create my_project - Then a directory my_project/ is created - And a configuration file my_project/config.rb is created - And a sass file my_project/src/screen.sass is created - And a sass file my_project/src/print.sass is created - And a sass file my_project/src/ie.sass is created - And a sass file my_project/src/screen.sass is compiled - And a sass file my_project/src/print.sass is compiled - And a sass file my_project/src/ie.sass is compiled - And a css file my_project/stylesheets/screen.css is created - And a css file my_project/stylesheets/print.css is created - And a css file my_project/stylesheets/ie.css is created - And I am told how to link to /stylesheets/screen.css for media "screen, projection" - And I am told how to link to /stylesheets/print.css for media "print" - And I am told how to conditionally link "IE" to /stylesheets/ie.css for media "screen, projection" - - Scenario: Install a project with blueprint - When I create a project using: compass create bp_project --using blueprint - Then a directory bp_project/ is created - And a configuration file bp_project/config.rb is created - And a sass file bp_project/src/screen.sass is created - And a sass file bp_project/src/print.sass is created - And a sass file bp_project/src/ie.sass is created - And a sass file bp_project/src/screen.sass is compiled - And a sass file bp_project/src/print.sass is compiled - And a sass file bp_project/src/ie.sass is compiled - And a css file bp_project/stylesheets/screen.css is created - And a css file bp_project/stylesheets/print.css is created - And a css file bp_project/stylesheets/ie.css is created - And an image file bp_project/images/grid.png is created - And I am told how to link to /stylesheets/screen.css for media "screen, projection" - And I am told how to link to /stylesheets/print.css for media "print" - And I am told how to conditionally link "lt IE 8" to /stylesheets/ie.css for media "screen, projection" - - Scenario: Install a project with specific directories - When I create a project using: compass create custom_project --using blueprint --sass-dir sass --css-dir css --images-dir assets/imgs - Then a directory custom_project/ is created - And a directory custom_project/sass/ is created - And a directory custom_project/css/ is created - And a directory custom_project/assets/imgs/ is created - And a sass file custom_project/sass/screen.sass is created - And a css file custom_project/css/screen.css is created - And an image file custom_project/assets/imgs/grid.png is created - - Scenario: Perform a dry run of creating a project - When I create a project using: compass create my_project --dry-run - Then a directory my_project/ is not created - But a configuration file my_project/config.rb is reported created - And a sass file my_project/src/screen.sass is reported created - And a sass file my_project/src/print.sass is reported created - And a sass file my_project/src/ie.sass is reported created - And I am told how to link to /stylesheets/screen.css for media "screen, projection" - And I am told how to link to /stylesheets/print.css for media "print" - And I am told how to conditionally link "IE" to /stylesheets/ie.css for media "screen, projection" - - Scenario: Creating a bare project - When I create a project using: compass create bare_project --bare - Then a directory bare_project/ is created - And a configuration file bare_project/config.rb is created - And a directory bare_project/src/ is created - And a directory bare_project/stylesheets/ is not created - And I am congratulated - And I am told that I can place stylesheets in the src subdirectory - And I am told how to compile my sass stylesheets - - Scenario: Creating a bare project with a framework - When I create a project using: compass create bare_project --using blueprint --bare - Then an error message is printed out: A bare project cannot be created when a framework is specified. - And the command exits with a non-zero error code - - Scenario: Initializing a rails project - Given I'm in a newly created rails project: my_rails_project - When I initialize a project using: compass init rails --sass-dir app/stylesheets --css-dir public/stylesheets/compiled - Then a config file config/compass.rb is reported created - Then a config file config/compass.rb is created - And a sass file config/initializers/compass.rb is created - And a sass file app/stylesheets/screen.sass is created - And a sass file app/stylesheets/print.sass is created - And a sass file app/stylesheets/ie.sass is created - - Scenario: Compiling an existing project. - Given I am using the existing project in test/fixtures/stylesheets/compass - When I run: compass compile - Then a directory tmp/ is created - And a sass file sass/layout.sass is reported compiled - And a sass file sass/print.sass is reported compiled - And a sass file sass/reset.sass is reported compiled - And a sass file sass/utilities.sass is reported compiled - And a css file tmp/layout.css is created - And a css file tmp/print.css is created - And a css file tmp/reset.css is created - And a css file tmp/utilities.css is created - - Scenario: Compiling an existing project with a specified project - Given I am using the existing project in test/fixtures/stylesheets/compass - And I am in the parent directory - When I run: compass compile tmp_compass - Then a directory tmp_compass/tmp/ is created - And a sass file tmp_compass/sass/layout.sass is reported compiled - And a sass file tmp_compass/sass/print.sass is reported compiled - And a sass file tmp_compass/sass/reset.sass is reported compiled - And a sass file tmp_compass/sass/utilities.sass is reported compiled - And a css file tmp_compass/tmp/layout.css is created - And a css file tmp_compass/tmp/print.css is created - And a css file tmp_compass/tmp/reset.css is created - And a css file tmp_compass/tmp/utilities.css is created - - Scenario: Recompiling a project with no changes - Given I am using the existing project in test/fixtures/stylesheets/compass - When I run: compass compile - And I run: compass compile - Then a sass file sass/layout.sass is reported unchanged - And a sass file sass/print.sass is reported unchanged - And a sass file sass/reset.sass is reported unchanged - And a sass file sass/utilities.sass is reported unchanged - - Scenario: compiling a specific file in a project - Given I am using the existing project in test/fixtures/stylesheets/compass - And I run: compass compile sass/utilities.sass - Then a sass file sass/layout.sass is not mentioned - And a sass file sass/print.sass is not mentioned - And a sass file sass/reset.sass is not mentioned - And a sass file sass/utilities.sass is reported compiled - And a css file tmp/utilities.css is reported created - And a css file tmp/utilities.css is created - - Scenario: Re-compiling a specific file in a project with no changes - Given I am using the existing project in test/fixtures/stylesheets/compass - When I run: compass compile - And I run: compass compile sass/utilities.sass - Then a sass file sass/layout.sass is not mentioned - And a sass file sass/print.sass is not mentioned - And a sass file sass/reset.sass is not mentioned - And a sass file sass/utilities.sass is reported compiled - And a css file tmp/utilities.css is reported identical - - Scenario: Installing a pattern into a project - Given I am using the existing project in test/fixtures/stylesheets/compass - When I run: compass install blueprint/buttons - Then a sass file sass/buttons.sass is created - And an image file images/buttons/cross.png is created - And an image file images/buttons/key.png is created - And an image file images/buttons/tick.png is created - And a css file tmp/buttons.css is created - - Scenario: Basic help - When I run: compass help - Then I should see the following "primary" commands: - | compile | - | create | - | init | - | watch | - And I should see the following "other" commands: - | config | - | grid-img | - | help | - | install | - | interactive | - | stats | - | validate | - | version | - - Scenario: Recompiling a project with no material changes - Given I am using the existing project in test/fixtures/stylesheets/compass - When I run: compass compile - And I wait 1 second - And I touch sass/layout.sass - And I run: compass compile - Then a sass file sass/layout.sass is reported compiled - Then a css file tmp/layout.css is reported identical - And a sass file sass/print.sass is reported unchanged - And a sass file sass/reset.sass is reported unchanged - And a sass file sass/utilities.sass is reported unchanged - - Scenario: Recompiling a project with changes - Given I am using the existing project in test/fixtures/stylesheets/compass - When I run: compass compile - And I wait 1 second - And I add some sass to sass/layout.sass - And I run: compass compile - Then a sass file sass/layout.sass is reported compiled - And a css file tmp/layout.css is reported overwritten - And a sass file sass/print.sass is reported unchanged - And a sass file sass/reset.sass is reported unchanged - And a sass file sass/utilities.sass is reported unchanged - - Scenario: Watching a project for changes - Given I am using the existing project in test/fixtures/stylesheets/compass - When I run: compass compile - And I run in a separate process: compass watch - And I wait 1 second - And I touch sass/layout.sass - And I wait 2 seconds - And I shutdown the other process - Then a css file tmp/layout.css is reported identical - - Scenario: Generating a grid image so that I can debug my grid alignments - Given I am using the existing project in test/fixtures/stylesheets/compass - When I run: compass grid-img 30+10x24 - Then a png file images/grid.png is created - And the image images/grid.png has a size of 40x24 - - Scenario: Generating a grid image to a specified path with custom dimensions - Given I am using the existing project in test/fixtures/stylesheets/compass - When I run: compass grid-img 50+10x24 assets/wide_grid.png - Then a directory assets is created - Then a png file assets/wide_grid.png is created - And the image assets/wide_grid.png has a size of 60x24 - - Scenario: Generating a grid image with invalid dimensions - Given I am using the existing project in test/fixtures/stylesheets/compass - When I run: compass grid-img 50x24 assets/wide_grid.png - Then a directory assets is not created - And a png file assets/wide_grid.png is not created - - Scenario: Generate a compass configuration file - Given I should clean up the directory: config - When I run: compass config config/compass.rb --sass-dir sass --css-dir assets/css - Then a configuration file config/compass.rb is created - And the following configuration properties are set in config/compass.rb: - | property | value | - | sass_dir | sass | - | css_dir | assets/css | - - Scenario: Validate the generated CSS - Given I am using the existing project in test/fixtures/stylesheets/compass - When I run: compass validate - Then my css is validated - And I am informed that my css is valid. - - Scenario: Get stats for my project - Given I am using the existing project in test/fixtures/stylesheets/compass - When I run: compass stats - Then I am told statistics for each file: - | Filename | Rules | Properties | Mixins Defs | Mixins Used | CSS Rules | CSS Properties | - | sass/layout.sass | 0 | 0 | 0 | 1 | 5 | 9 | - | sass/print.sass | 0 | 0 | 0 | 2 | 61 | 61 | - | sass/reset.sass | 4 | 1 | 0 | 2 | 191 | 665 | - | sass/utilities.sass | 2 | 0 | 0 | 2 | 5 | 11 | - | Total.* | 6 | 1 | 0 | 7 | 262 | 746 | - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/features/extensions.feature b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/features/extensions.feature deleted file mode 100644 index 34c8c1e8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/features/extensions.feature +++ /dev/null @@ -1,20 +0,0 @@ -Feature: Extensions - In order to have an open source ecosystem for stylesheets - As a compass user - I can install extensions that others have created - And I can create and publish my own extensions - - Scenario: Extensions directory for stand_alone projects - Given I am using the existing project in test/fixtures/stylesheets/compass - And the "extensions" directory exists - And and I have a fake extension at extensions/testing - When I run: compass --list-frameworks - Then the list of frameworks includes "testing" - - Scenario: Extensions directory for rails projects - Given I'm in a newly created rails project: my_rails_project - And the "my_rails_project/vendor/plugins/compass/extensions" directory exists - And and I have a fake extension at my_rails_project/vendor/plugins/compass/extensions/testing - When I run: compass --list-frameworks - Then the list of frameworks includes "testing" - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/features/step_definitions/command_line_steps.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/features/step_definitions/command_line_steps.rb deleted file mode 100644 index d16999aa..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/features/step_definitions/command_line_steps.rb +++ /dev/null @@ -1,234 +0,0 @@ -require 'spec/expectations' -$:.unshift(File.expand_path(File.join(File.dirname(__FILE__), '../../test'))) - -require 'test_helper' - -require 'compass/exec' - -include Compass::CommandLineHelper -include Compass::IoHelper -include Compass::RailsHelper - -Before do - Compass.reset_configuration! - @cleanup_directories = [] - @original_working_directory = Dir.pwd -end - -After do - Dir.chdir @original_working_directory - @cleanup_directories.each do |dir| - FileUtils.rm_rf dir - end -end - -# Given Preconditions -Given %r{^I am using the existing project in ([^\s]+)$} do |project| - tmp_project = "tmp_#{File.basename(project)}" - @cleanup_directories << tmp_project - FileUtils.cp_r project, tmp_project - Dir.chdir tmp_project -end - -Given %r{^I am in the parent directory$} do - Dir.chdir ".." -end - -Given /^I'm in a newly created rails project: (.+)$/ do |project_name| - @cleanup_directories << project_name - begin - generate_rails_app project_name - Dir.chdir project_name - rescue LoadError - pending "Missing Ruby-on-rails gems: sudo gem install rails" - end -end - -Given /^I should clean up the directory: (\w+)$/ do |directory| - @cleanup_directories << directory -end - -# When Actions are performed -When /^I create a project using: compass create ([^\s]+) ?(.+)?$/ do |dir, args| - @cleanup_directories << dir - compass 'create', dir, *(args || '').split -end - -When /^I initialize a project using: compass init ?(.+)?$/ do |args| - compass 'init', *(args || '').split -end - -When /^I run: compass ([^\s]+) ?(.+)?$/ do |command, args| - compass command, *(args || '').split -end - -When /^I run in a separate process: compass ([^\s]+) ?(.+)?$/ do |command, args| - unless @other_process = fork - @last_result = '' - @last_error = '' - Signal.trap("HUP") do - open('/tmp/last_result.compass_test.txt', 'w') do |file| - file.puts $stdout.string - end - open('/tmp/last_error.compass_test.txt', 'w') do |file| - file.puts @stderr.string - end - exit! - end - # this command will run forever - # we kill it with a HUP signal from the parent process. - args = (args || '').split - args << { :wait => 5 } - compass command, *args - exit! - end -end - -When /^I shutdown the other process$/ do - Process.kill("HUP", @other_process) - Process.wait - @last_result = File.read('/tmp/last_result.compass_test.txt') - @last_error = File.read('/tmp/last_error.compass_test.txt') -end - -When /^I touch ([^\s]+)$/ do |filename| - FileUtils.touch filename -end - -When /^I wait ([\d.]+) seconds?$/ do |count| - sleep count.to_f -end - -When /^I add some sass to ([^\s]+)$/ do |filename| - open(filename, "w+") do |file| - file.puts ".added .some .arbitrary" - file.puts " sass: code" - end -end - -# Then postconditions -Then /^a directory ([^ ]+) is (not )?created$/ do |directory, negated| - File.directory?(directory).should == !negated -end - -Then /an? \w+ file ([^ ]+) is (not )?created/ do |filename, negated| - File.exists?(filename).should == !negated -end - -Then /an? \w+ file ([^ ]+) is reported created/ do |filename| - @last_result.should =~ /create #{Regexp.escape(filename)}/ -end - -Then /a \w+ file ([^ ]+) is (?:reported )?compiled/ do |filename| - @last_result.should =~ /compile #{Regexp.escape(filename)}/ -end - -Then /a \w+ file ([^ ]+) is reported unchanged/ do |filename| - @last_result.should =~ /unchanged #{Regexp.escape(filename)}/ -end - -Then /a \w+ file ([^ ]+) is reported identical/ do |filename| - @last_result.should =~ /identical #{Regexp.escape(filename)}/ -end - -Then /a \w+ file ([^ ]+) is reported overwritten/ do |filename| - @last_result.should =~ /overwrite #{Regexp.escape(filename)}/ -end - -Then /a \w+ file ([^ ]+) is not mentioned/ do |filename| - @last_result.should_not =~ /#{Regexp.escape(filename)}/ -end - -Then /I am told how to link to ([^ ]+) for media "([^"]+)"/ do |stylesheet, media| - @last_result.should =~ %r{} -end - -Then /I am told how to conditionally link "([^"]+)" to ([^ ]+) for media "([^"]+)"/ do |condition, stylesheet, media| - @last_result.should =~ %r{}mi -end - -Then /^an error message is printed out: (.+)$/ do |error_message| - @last_error.should =~ Regexp.new(Regexp.escape(error_message)) -end - -Then /^the command exits with a non\-zero error code$/ do - @last_exit_code.should_not == 0 -end - - -Then /^I am congratulated$/ do - @last_result.should =~ /Congratulations!/ -end - -Then /^I am told that I can place stylesheets in the ([^\s]+) subdirectory$/ do |subdir| - @last_result.should =~ /You may now add sass stylesheets to the #{subdir} subdirectory of your project./ -end - -Then /^I am told how to compile my sass stylesheets$/ do - @last_result.should =~ /You must compile your sass stylesheets into CSS when they change.\nThis can be done in one of the following ways:/ -end - -Then /^I should be shown a list of "([^"]+)" commands$/ do |kind| - @last_result.should =~ /^#{kind.capitalize} Commands:$/ - @last_command_list = [] - found = false - indent = nil - @last_result.split("\n").each do |line| - if line =~ /^#{kind.capitalize} Commands:$/ - found = true - elsif found && line =~ /^\s+/ - @last_command_list << line - elsif found && line =~ /^$|^\w/ - break - end - end - -end - -Then /^the list of commands should describe the ([^ ]+) command$/ do |command| - @last_result.should =~ /^\s+\* #{command}\s+- [A-Z].+$/ -end - -Then /^the following configuration properties are set in ([^ ]+):$/ do |config_file, table| - - config = Compass::Configuration::Data.new_from_file(config_file) - table.hashes.each do |hash| - config.send(hash['property']).should == hash['value'] - end -end - -Then /^my css is validated$/ do - if @last_error =~ /The Compass CSS Validator could not be loaded/ - pending "Missing Dependency: sudo gem install chriseppstein-compass-validator" - else - @last_result.should =~ /Compass CSS Validator/ - end -end - -Then /^I am informed that my css is valid.$/ do - @last_result.should =~ /Your CSS files are valid\./ -end - -Then /^I am told statistics for each file:$/ do |table| - # table is a Cucumber::Ast::Table - table.raw.each do |row| - re = Regexp.new row.join(' *\| *') - @last_result.should =~ re - end -end - -Then /^I should see the following "([^"]+)" commands:$/ do |kind, table| - - - Then %Q{I should be shown a list of "#{kind}" commands} - - commands = @last_command_list.map{|c| c =~ /^\s+\* ([^ ]+)\s+- [A-Z].+$/; [$1]} - table.diff!(commands) -end - - -Then /^the image ([^ ]+) has a size of (\d+)x(\d+)$/ do |file, width, height| - # see http://snippets.dzone.com/posts/show/805 - IO.read(file)[0x10..0x18].unpack('NN').should == [width.to_i, height.to_i] -end - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/features/step_definitions/extension_steps.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/features/step_definitions/extension_steps.rb deleted file mode 100644 index f6216c1e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/features/step_definitions/extension_steps.rb +++ /dev/null @@ -1,13 +0,0 @@ -Given /^the "([^\"]*)" directory exists$/ do |directory| - FileUtils.mkdir_p directory -end - -Given /^and I have a fake extension at (.*)$/ do |directory| - FileUtils.mkdir_p File.join(directory, 'stylesheets') - FileUtils.mkdir_p File.join(directory, 'templates/project') -end - -Then /^the list of frameworks includes "([^\"]*)"$/ do |framework| - @last_result.split("\n").map{|f| f.strip}.should include(framework) -end - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/_blueprint.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/_blueprint.sass deleted file mode 100644 index bd336ece..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/_blueprint.sass +++ /dev/null @@ -1,31 +0,0 @@ -@import blueprint/colors.sass -@import blueprint/grid.sass -@import blueprint/typography.sass -@import blueprint/utilities.sass -@import blueprint/form.sass -@import blueprint/interaction.sass -@import blueprint/debug.sass -@import blueprint/print.sass -@import blueprint/ie.sass - -// Usage examples: -// As a top-level mixin, apply to any page that includes the stylesheet: -// +blueprint -// Scoped by a presentational class: -// body.blueprint -// +blueprint(true) -// Scoped by semantic selectors: -// body#page-1, body#page-2, body.a-special-page-type -// +blueprint(true) -// Deprecated: -// You can pass the body selector as the first argument when used as a top-level mixin -// +blueprint("body#page-1, body#page-2, body.a-special-page-type") -=blueprint(!body_selector = "body") - @if not (!body_selector == "body" or !body_selector == true) - @debug "[DEPRECATED] To specify a the selector \"#{!body_selector}\" to +blueprint, pass true as the first argument and mix it into #{!body_selector}." - +blueprint-typography(!body_selector) - +blueprint-utilities - +blueprint-grid - +blueprint-debug - +blueprint-interaction - +blueprint-form diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_buttons.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_buttons.sass deleted file mode 100644 index 11932cfd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_buttons.sass +++ /dev/null @@ -1,84 +0,0 @@ -@import compass/css3/inline_block.sass -@import compass/utilities/general/float.sass - -// Button Font -!blueprint_button_font_family ||= "\"Lucida Grande\", Tahoma, Arial, Verdana, sans-serif" - -// Default Button Colors -!blueprint_button_border_color ||= #DEDEDE -!blueprint_button_background_color ||= #F5F5F5 -!blueprint_button_font_color ||= #565656 - -// Default Button Hover Colors -!blueprint_button_hover_border_color ||= #C2E1EF -!blueprint_button_hover_background_color ||= #DFF4FF -!blueprint_button_hover_font_color ||= #336699 - -// Default Button Active Colors -!blueprint_button_active_border_color ||= #6299C5 -!blueprint_button_active_background_color ||= #6299C5 -!blueprint_button_active_font_color ||= #FFF - -//** - Sets the colors for a button - @param border_highlight_color - The highlight color defaults to whatever is the value of the border_color but it's one shade lighter. -=button-colors(!font_color = !blueprint_button_font_color, !bg_color = !blueprint_button_background_color, !border_color = !blueprint_button_border_color, !border_highlight_color = !border_color + #101010) - background-color= !bg_color - border-color= !border_highlight_color !border_color !border_color !border_highlight_color - color= !font_color - -//** - Sets the colors for a button in the active state - @param border_highlight_color - The highlight color defaults to whatever is the value of the border_color but it's one shade lighter. -=button-active-colors(!font_color = !blueprint_button_active_font_color, !bg_color = !blueprint_button_active_background_color, !border_color = !blueprint_button_active_border_color, !border_highlight_color = !border_color + #101010) - &:active - +button-colors(!font_color, !bg_color, !border_color, !border_highlight_color) - -//** - Sets the colors for a button in the hover state. - @param border_highlight_color - The highlight color defaults to whatever is the value of the border_color but it's one shade lighter. -=button-hover-colors(!font_color = !blueprint_button_hover_font_color, !bg_color = !blueprint_button_hover_background_color, !border_color = !blueprint_button_hover_border_color, !border_highlight_color = !border_color + #101010) - &:hover - +button-colors(!font_color, !bg_color, !border_color, !border_highlight_color) - -=button-base(!float = false) - @if !float - display: block - +float(!float) - @else - +inline-block - margin: 0.7em 0.5em 0.7em 0 - border-width: 1px - border-style: solid - font-family= !blueprint_button_font_family - font-size: 100% - line-height: 130% - text-decoration: none - font-weight: bold - cursor: pointer - img - margin: 0 3px -3px 0 !important - padding: 0 - border: none - width: 16px - height: 16px - float: none - - -=anchor-button(!float = false) - +button-base(!float) - padding: 5px 10px 5px 7px - -=button-button(!float = false) - +button-base(!float) - width: auto - overflow: visible - padding: 4px 10px 3px 7px - &[type] - padding: 4px 10px 4px 7px - line-height: 17px - *:first-child+html &[type] - padding: 4px 10px 3px 7px diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_colors.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_colors.sass deleted file mode 100644 index 278951f7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_colors.sass +++ /dev/null @@ -1,33 +0,0 @@ -!font_color ||= #333 -!quiet_color ||= !font_color + #333 -!loud_color ||= !font_color - #222 - -!header_color ||= !font_color - #111 - -!link_color ||= #009 -!link_hover_color ||= #000 -!link_focus_color ||= !link_hover_color -!link_active_color ||= !link_color + #C00 -!link_visited_color ||= !link_color - #333 - -!feedback_border_color ||= #DDD -!success_color ||= #264409 -!success_bg_color ||= #E6EFC2 -!success_border_color ||= #C6D880 - -!notice_color ||= #514721 -!notice_bg_color ||= #FFF6BF -!notice_border_color ||= #FFD324 - -!error_color ||= #8A1F11 -!error_bg_color ||= #FBE3E4 -!error_border_color ||= #FBC2C4 - -!highlight_color ||= #FF0 -!added_color ||= #FFF -!added_bg_color ||= #060 -!removed_color ||= #FFF -!removed_bg_color ||= #900 - -!blueprint_table_header_color ||= #C3D9FF -!blueprint_table_stripe_color ||= #E5ECF9 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_debug.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_debug.sass deleted file mode 100644 index 4b93f23f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_debug.sass +++ /dev/null @@ -1,9 +0,0 @@ -=showgrid(!image = "grid.png") - background= image_url(!image) - -=blueprint-debug(!grid_image = "grid.png") - // Use this class on any column or container to see the grid. - // TODO: prefix this with the project path. - .showgrid - +showgrid(!grid_image) - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_fancy_type.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_fancy_type.sass deleted file mode 100644 index fdbe9089..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_fancy_type.sass +++ /dev/null @@ -1,82 +0,0 @@ -@import typography.sass - -// - To install the fancy type plugin: - 1. import the fancy_type module: @import blueprint/fancy_type - 2. mixin +fancy-type to your project's body or at the top level of your stylesheet: - body - +fancy-type - -=fancy-type - +fancy-paragraphs - .caps - +caps - .dquo - +dquo - .alt - +alt - -// Indentation instead of line shifts for sibling paragraphs. Mixin to a style like p + p -=sibling-indentation - text-indent: 2em - margin-top: -1.5em - /* Don't want this in forms. - form & - text-indent: 0 - -// - For great looking type, use this code instead of asdf: - asdf - Best used on prepositions and ampersands. - -=alt - color: #666 - font-family: "Warnock Pro", "Goudy Old Style","Palatino","Book Antiqua", Georgia, serif - font-style: italic - font-weight: normal - -// - For great looking quote marks in titles, replace "asdf" with: - asdf” - (That is, when the title starts with a quote mark). - (You may have to change this value depending on your font size). -=dquo(!offset = 0.5em) - margin-left= -!offset - -// - Reduced size type with incremental leading - (http://www.markboulton.co.uk/journal/comments/incremental_leading/) - - This could be used for side notes. For smaller type, you don't necessarily want to - follow the 1.5x vertical rhythm -- the line-height is too much. - - Using this mixin, reduces your font size and line-height so that for - every four lines of normal sized type, there is five lines of the sidenote. eg: - - Arguments: - font_size - The desired font size in pixels. This will be converted to ems for you. Defaults to 10px. - base_font_size - The base font size in pixels. Defaults to 12px - old_line_height - The old line height. Defaults to 1.5 times the base_font_size -=incr(!font_size = 10px, !base_font_size = !blueprint_font_size, !old_line_height = !base_font_size * 1.5) - font-size= 1em * !font_size / !base_font_size - line-height= 1em * !old_line_height / !font_size * 4 / 5 - margin-bottom: 1.5em - -// - Surround uppercase words and abbreviations with this class. - Based on work by Jørgen Arnor Gårdsø Lom [http://twistedintellect.com/] -=caps - font-variant: small-caps - letter-spacing: 1px - text-transform: lowercase - font-size: 1.2em - line-height: 1% - font-weight: bold - padding: 0 2px - -=fancy-paragraphs - p + p - +sibling-indentation - p.incr, - .incr p - +incr diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_form.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_form.sass deleted file mode 100644 index 82d86d34..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_form.sass +++ /dev/null @@ -1,56 +0,0 @@ -@import colors.sass - -// Mixin for producing Blueprint "inline" forms. Should be used with the blueprint-form mixin. -=blueprint-inline-form - line-height: 3 - p - margin-bottom: 0 - -=blueprint-form - +blueprint-form-layout - +blueprint-form-borders - +blueprint-form-sizes - -=blueprint-form-layout - label - font-weight: bold - fieldset - padding: 1.4em - margin: 0 0 1.5em 0 - legend - font-weight: bold - font-size: 1.2em - input - &.text, &.title, &[type=text], &[type=password] - margin: 0.5em 0 - background-color: #fff - padding: 5px - &.title - font-size: 1.5em - &[type=checkbox], &.checkbox, - &[type=radio], &.radio - position: relative - top: 0.25em - textarea - margin: 0.5em 0 - padding: 5px - select - margin: 0.5em 0 - -=blueprint-form-sizes(!input_width = 300px, !textarea_width = 390px, !textarea_height = 250px) - input - &.text, &.title, &[type=text], &[type=password] - width= !input_width - textarea - width= !textarea_width - height= !textarea_height - -=blueprint-form-borders(!unfocused_border_color = #bbb, !focus_border_color = #666, !fieldset_border_color = #ccc) - fieldset - border= 1px "solid" !fieldset_border_color - input.text, input.title, input[type=text], input[type=password], - textarea, - select - border= 1px "solid" !unfocused_border_color - &:focus - border= 1px "solid" !focus_border_color diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_grid.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_grid.sass deleted file mode 100644 index 76759a99..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_grid.sass +++ /dev/null @@ -1,179 +0,0 @@ -// -------------------------------------------------------------- -// SASS Gridification -// * Author: Chris Eppstein -// A SASS adaptation of Blueprint CSS -// * Version: 0.7.1 (2008-02-25) -// * Website: http://code.google.com/p/blueprintcss/ -// Based on work by: -// * Lorin Tackett [lorintackett.com] -// * Olav Bjorkoy [bjorkoy.com] -// * Nathan Borror [playgroundblues.com] -// * Jeff Croft [jeffcroft.com] -// * Christian Metts [mintchaos.com] -// * Khoi Vinh [subtraction.com] -// Read more about using a grid here: -// * http://www.subtraction.com/2007/03/18/oh-yeeaahh -// -------------------------------------------------------------- - -@import compass/utilities/general/float.sass - -// Main layout grid, override these constants to build your grid and container sizes. -!blueprint_grid_columns ||= 24 -!blueprint_grid_width ||= 30px -!blueprint_grid_margin ||= 10px - -!blueprint_grid_outer_width = !blueprint_grid_width + !blueprint_grid_margin -!blueprint_container_size = !blueprint_grid_outer_width * !blueprint_grid_columns - !blueprint_grid_margin - - -=blueprint-grid - // A container should group all your columns - .container - +container - .column, #{enumerate("div.span", 1, !blueprint_grid_columns)} - +column-base - // The last column in a row needs this class (or mixin) or it will end up on the next row. - .last, div.last - +last - // Use these classes (or mixins) to set the width of a column. - @for !n from 1 to !blueprint_grid_columns - .span-#{!n} - +span(!n) - .span-#{!blueprint_grid_columns}, div.span-#{!blueprint_grid_columns} - +span(!blueprint_grid_columns) - margin: 0 - input, textarea, select - @for !n from 1 through !blueprint_grid_columns - &.span-#{!n} - +span(!n, true) - // Add these to a column to append empty cols. - @for !n from 1 to !blueprint_grid_columns - .append-#{!n} - +append(!n) - // Add these to a column to prepend empty cols. - @for !n from 1 to !blueprint_grid_columns - .prepend-#{!n} - +prepend(!n) - // Use these classes on an element to push it into the - // next column, or to pull it into the previous column. - #{enumerate(".pull", 1, !blueprint_grid_columns)} - +pull-base - @for !n from 1 through !blueprint_grid_columns - .pull-#{!n} - +pull-margins(!n) - #{enumerate(".push", 1, !blueprint_grid_columns)} - +push-base - @for !n from 1 through !blueprint_grid_columns - .push-#{!n} - +push-margins(!n) - .prepend-top - +prepend-top - .append-bottom - +append-bottom - - -// Columns -// Note: If you use this mixin without the class and want to support ie6 -// you must set text-align left on your container element in an IE stylesheet. -=container - width= !blueprint_container_size - margin: 0 auto - +clearfix - -// The last column in a row needs this mixin or it will end up on the next row. -// TODO add this to span mixin when we have optional arguments -=last - margin-right: 0 - -=span(!n, !override = false) - !width = !blueprint_grid_width * !n + (!blueprint_grid_margin * (!n - 1)) - @if !override - width= !width !important - @else - width= !width - -=column-base(!last = false) - +float-left - @if !last - +last - @else - margin-right= !blueprint_grid_margin - * html & - overflow-x: hidden - -// Use this mixins to set the width of n columns. -=column(!n, !last = false) - +column-base(!last) - +span(!n) - - -// Mixin to a column to append n empty cols. -=append(!n) - padding-right= (!blueprint_grid_outer_width) * !n - -// Mixin to a column to prepend n empty cols. -=prepend(!n) - padding-left= (!blueprint_grid_outer_width) * !n - -=append-bottom(!amount = 1.5em) - margin-bottom= !amount - -=prepend-top(!amount = 1.5em) - margin-top= !amount - -=pull-base - +float-left - position: relative - -=pull-margins(!n, !last = false) - @if !last - margin-left= (-!blueprint_grid_outer_width * !n) + !blueprint_grid_margin - @else - margin-left= -!blueprint_grid_outer_width * !n - -// mixin to a column to move it n columns to the left -=pull(!n, !last = false) - +pull-base - +pull-margins(!n, !last) - -=push-base - +float-right - position: relative - -=push-margins(!n) - margin= 0 (-!blueprint_grid_outer_width * !n) 1.5em (!blueprint_grid_outer_width * !n) - -// mixin to a column to push it n columns to the right -=push(!n) - +push-base - +push-margins(!n) - -// Border on right hand side of a column. -=border(!border_color = #eee, !border_width = 1px) - padding-right= !blueprint_grid_margin / 2 - !border_width - margin-right= !blueprint_grid_margin / 2 - border-right: #{!border_width} solid #{!border_color} - -// Border with more whitespace, spans one column. -=colborder(!border_color = #eee, !border_width = 1px) - padding-right= floor((!blueprint_grid_width + 2 * !blueprint_grid_margin - !border_width)/2) - margin-right= ceil((!blueprint_grid_width + 2 * !blueprint_grid_margin - !border_width)/2) - border-right: #{!border_width} solid #{!border_color} - -// Mixin this to an hr to make a horizontal ruler across a column. -=colruler(!border_color = #ddd) - background= !border_color - color= !border_color - clear: both - float: none - width: 100% - height: .1em - margin: 0 0 1.45em - border: none - -// Mixin this to an hr to make a horizontal spacer across a column. -=colspacer - +colruler - background: #fff - color: #fff - visibility: hidden diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_ie.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_ie.sass deleted file mode 100644 index 44d9f5e7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_ie.sass +++ /dev/null @@ -1,99 +0,0 @@ -// The blueprint IE mixins should be mixed into a stylesheet that gets conditionally included -// into IE like so: -// - - -// Usage examples: -// As a top-level mixin, apply to any page that includes the stylesheet: -// +blueprint-ie -// Scoped by a presentational class: -// body.blueprint -// +blueprint-ie(true) -// Scoped by semantic selectors: -// body#page-1, body#page-2, body.a-special-page-type -// +blueprint-ie(true) -// Deprecated: -// You can pass the body selector as the first argument when used as a top-level mixin -// +blueprint-ie("body#page-1, body#page-2, body.a-special-page-type") -=blueprint-ie(!body_selector = "body") - @if !body_selector == true - +blueprint-ie-body - +blueprint-ie-defaults - @else - #{!body_selector} - +blueprint-ie-body - @if !body_selector != "body" - @debug "[DEPRECATED] To specify a the selector \"#{!body_selector}\" to +blueprint-ie, pass true as the first argument and mix it into #{!body_selector}." - +blueprint-ie-defaults - @if !body_selector == "body" - +blueprint-ie-defaults - -=blueprint-ie-body - text-align: center - +blueprint-ie-hacks - -=blueprint-ie-hacks - * html & - legend - margin: 0px -8px 16px 0 - padding: 0 - html>& - p code - *white-space: normal - -// Fixes for Blueprint "inline" forms in IE -=blueprint-inline-form-ie - div, p - vertical-align: middle - label - position: relative - top: -0.25em - input - &.checkbox, &.radio, &.button, button - margin: 0.5em 0 - -=blueprint-ie-defaults - .container - text-align: left - sup - vertical-align: text-top - sub - vertical-align: text-bottom - hr - margin: -8px auto 11px - img - -ms-interpolation-mode: bicubic - fieldset - padding-top: 0 - textarea - overflow: auto - input - &.text - margin: 0.5em 0 - background-color: #fff - border: 1px solid #bbb - &:focus - border: 1px solid #666 - &.title - margin: 0.5em 0 - background-color: #fff - border: 1px solid #bbb - &:focus - border: 1px solid #666 - &.checkbox - position: relative - top: 0.25em - &.radio - position: relative - top: 0.25em - &.button - position: relative - top: 0.25em - textarea - margin: 0.5em 0 - select - margin: 0.5em 0 - button - position: relative - top: 0.25em diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_interaction.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_interaction.sass deleted file mode 100644 index ff5e4054..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_interaction.sass +++ /dev/null @@ -1,58 +0,0 @@ -@import colors.sass - - -=blueprint-interaction - .error - +error - .notice - +notice - .success - +success - .hide - display: none - .highlight - +highlight - .added - +added - .removed - +removed - -=feedback-base - padding: .8em - margin-bottom: 1em - border= 2px "solid" !feedback_border_color - -=error - +feedback-base - background= !error_bg_color - color= !error_color - border-color= !error_border_color - a - color= !error_color - -=notice - +feedback-base - background= !notice_bg_color - color= !notice_color - border-color= !notice_border_color - a - color= !notice_color - -=success - +feedback-base - background= !success_bg_color - color= !success_color - border-color= !success_border_color - a - color= !success_color - -=highlight - background= !highlight_color - -=added - background= !added_bg_color - color= !added_color - -=removed - background= !removed_bg_color - color= !removed_color diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_link_icons.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_link_icons.sass deleted file mode 100644 index 58933fed..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_link_icons.sass +++ /dev/null @@ -1,44 +0,0 @@ -=no-link-icon - background: transparent none !important - padding: 0 !important - margin: 0 !important - -=link-icon-base - padding: 2px 22px 2px 0 - margin: -2px 0 - background-repeat: no-repeat - background-position: right center - -=link-icon(!name, !include_base = true) - @if !include_base - +link-icon-base - background-image= image_url("link_icons/#{!name}") - -=link-icons - a[href^="http:"], - a[href^="mailto:"], - a[href^="http:"]:visited, - a[href$=".pdf"], - a[href$=".doc"], - a[href$=".xls"], - a[href$=".rss"], - a[href$=".rdf"], - a[href^="aim:"] - +link-icon-base - a[href^="http:"] - +link-icon("external.png", false) - a[href^="mailto:"] - +link-icon("email.png", false) - a[href^="http:"]:visited - +link-icon("visited.png", false) - a[href$=".pdf"] - +link-icon("pdf.png", false) - a[href$=".doc"] - +link-icon("doc.png", false) - a[href$=".xls"] - +link-icon("xls.png", false) - a[href$=".rss"], - a[href$=".rdf"] - +link-icon("feed.png", false) - a[href^="aim:"] - +link-icon("im.png", false) diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_liquid.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_liquid.sass deleted file mode 100644 index 0e41d32e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_liquid.sass +++ /dev/null @@ -1,141 +0,0 @@ -// -------------------------------------------------------------- -// SASS Gridification -// * Author: Geoff Garside -// A SASS adaptation of Blueprint CSS -// * Version: 0.7.1 (2008-02-25) -// * Website: http://code.google.com/p/blueprintcss/ -// Based on work by: -// * Chris Eppstein [eppsteins.net] -// * Lorin Tacket [lorintackett.com] -// * Olav Bjorkoy [bjorkoy.com] -// * Nathan Borror [playgroundblues.com] -// * Jeff Croft [jeffcroft.com] -// * Christian Metts [mintchaos.com] -// * Khoi Vinh [subtraction.com] -// Liquid grid work by: -// * Ben Listwon -// * David Bedingfield -// * Andrei Michael Herasimchuk -// Involution Studios, http://www.involutionstudios.com -// Read more about using a grid here: -// * subtraction.com/archives/2007/0318_oh_yeeaahh.php -// ----- -// By default, the grid is 80% of window width, with 24 columns. -// -// To make the grid fixed, simply change the .container width -// property to a pixel value. e.g., 960px. -// ----- -// To use: -// This module is a REPLACEMENT for the grid module. Simply import it: -// @import blueprint.sass -// @import blueprint/liquid.sass -// ------------------------------------------------------------------- - -@import compass/utilities/general/float.sass - -// Main layout grid, override these constants to build your grid and container sizes. -// The width shown gives the right floored percentage values. -!blueprint_liquid_grid_columns ||= 24 -!blueprint_liquid_grid_width ||= 4.173% -!blueprint_liquid_grid_margin ||= 0.833em - -// Do not edit below this line unless you really know what you're doing. -!blueprint_liquid_container_width = 80% -!blueprint_liquid_container_min_width = 950px -!blueprint_liquid_grid_push_pull = -(!blueprint_liquid_grid_margin * 4) - -=blueprint-liquid-grid - // A container should group all your columns - .container - +container - // Use these classes (or mixins) to set the width of a column. - @for !n from 1 to !blueprint_liquid_grid_columns + 1 - .span-#{!n} - +span(!n) - div - &.span-#{!n} - +column(!n, !n == !blueprint_liquid_grid_columns) - // The last column in a row needs this class (or mixin) or it will end up on the next row. - div.last - +last - // Add these to a column to append empty cols. - @for !n from 1 to !blueprint_liquid_grid_columns - .append-#{!n} - +append(!n) - // Add these to a column to prepend empty cols. - @for !n from 1 to !blueprint_liquid_grid_columns - .prepend-#{!n} - +prepend(!n) - // Use these classes on an element to push it into the - // next column, or to pull it into the previous column. - @for !n from 1 to !blueprint_liquid_grid_columns + 1 - .pull-#{!n} - +pull(!n) - @for !n from 1 to !blueprint_liquid_grid_columns + 1 - .push-#{!n} - +push(!n) - -=container - min-width= !blueprint_liquid_container_min_width - width= !blueprint_liquid_container_width - margin: 0 auto - +clearfix - -=span(!n, !override = false) - !width = (!blueprint_liquid_grid_width * !n) - ((!blueprint_liquid_grid_width * !n) % 1) - @if !override - width= !width !important - @else - width= !width - -=last - margin-right: 0 - -=column(!n, !last = false) - +float-left - overflow: hidden - +span(!n) - @if !last - +last - @else - margin-right= !blueprint_liquid_grid_margin - -=append(!n) - padding-right= (!blueprint_liquid_grid_width * !n) - ((!blueprint_liquid_grid_width * !n) % 1) - -=prepend(!n) - padding-left= (!blueprint_liquid_grid_width * !n) - ((!blueprint_liquid_grid_width * !n) % 1) - -=pull(!n, !last = false) - margin-left= (!blueprint_liquid_grid_push_pull * !n) - -=push(!n) - +float-right - margin: - top: 0 - left: 1.5em - right= (!blueprint_liquid_grid_push_pull * !n) - bottom: 0 - -=border - border-right: 1px solid #eee - -=colborder - padding-right: 2% - margin-right: 2% - +border - -=colruler - background: #ddd - color: #ddd - clear: both - width: 100% - height: 0.083em - margin: 0 0 1.583em - border: none - -=colspacer - +colruler - background: #fff - color: #fff - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_print.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_print.sass deleted file mode 100644 index 25424725..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_print.sass +++ /dev/null @@ -1,87 +0,0 @@ -@import typography.sass -@import compass/utilities/general/float.sass - - - -// Usage examples: -// As a top-level mixin, apply to any page that includes the stylesheet: -// +blueprint-print -// Scoped by a presentational class: -// body.blueprint -// +blueprint-print(true) -// Scoped by semantic selectors: -// body#page-1, body#page-2, body.a-special-page-type -// +blueprint-print(true) -// Deprecated: -// You can pass the body selector as the first argument when used as a top-level mixin -// +blueprint-print("body#page-1, body#page-2, body.a-special-page-type") -=blueprint-print(!body_selector = "body") - @if !body_selector == true - +blueprint-print-body - +blueprint-print-defaults - @else - #{!body_selector} - +blueprint-print-body - @if !body_selector != "body" - @debug "[DEPRECATED] To specify a the selector \"#{!body_selector}\" to +blueprint-print, pass true as the first argument and mix it into #{!body_selector}." - +blueprint-print-defaults - @if !body_selector == "body" - +blueprint-print-defaults - -// This style is in blueprint, but I think it's annoying and it doesn't work in all browsers. -// Feel free to mix it into anchors where you want it. -=blueprint-show-link-urls - &:after - content: " (" attr(href) ")" - font-size: 90% - -=blueprint-print-body - line-height: 1.5 - font-family= !blueprint_font_family - color: #000 - background: none - font-size: 10pt - -=blueprint-print-defaults - .container - background: none - hr - background: #ccc - color: #ccc - width: 100% - height: 2px - margin: 2em 0 - padding: 0 - border: none - &.space - background: #fff - color: #fff - h1, h2, h3, h4, h5, h6 - font-family= !blueprint_font_family - code - font: - size: .9em - family= !blueprint_fixed_font_family - a - img - border: none - &:link, - &:visited - background: transparent - font-weight: 700 - text-decoration: underline - p img.top - margin-top: 0 - blockquote - margin: 1.5em - padding: 1em - font-style: italic - font-size: .9em - .small - font-size: .9em - .large - font-size: 1.1em - .quiet - color: #999 - .hide - display: none diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_reset.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_reset.sass deleted file mode 100644 index a821fb48..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_reset.sass +++ /dev/null @@ -1,58 +0,0 @@ -// Global reset rules. -// For more specific resets, use the reset mixins provided below -=blueprint-global-reset - html, body - +blueprint-reset - html - font-size: 100.01% - +blueprint-nested-reset - -// Reset all elements within some selector scope.To reset the selector itself, -// mixin the appropriate reset mixin for that element type as well. This could be -// useful if you want to style a part of your page in a dramatically different way. -=blueprint-nested-reset - div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, - pre, a, abbr, acronym, address, code, del, dfn, em, img, - dl, dt, dd, ol, ul, li, fieldset, form, label, legend, caption, tbody, tfoot, thead, tr - +blueprint-reset - blockquote, q - +blueprint-reset-quotation - th, td, caption - +blueprint-reset-table-cell - table - +blueprint-reset-table - a img - border: none - -=blueprint-reset-box-model - margin: 0 - padding: 0 - border: 0 - -=blueprint-reset - +blueprint-reset-box-model - font: - weight: inherit - style: inherit - size: 100% - family: inherit - vertical-align: baseline - -=blueprint-reset-quotation - +blueprint-reset - quotes: "" "" - &:before, - &:after - content: "" - -=blueprint-reset-table-cell - +blueprint-reset - text-align: left - font-weight: normal - vertical-align: middle - -=blueprint-reset-table - +blueprint-reset - border-collapse: separate - border-spacing: 0 - vertical-align: middle diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_rtl.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_rtl.sass deleted file mode 100644 index eab6ccc1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_rtl.sass +++ /dev/null @@ -1,123 +0,0 @@ -@import grid.sass -@import compass/utilities/general/float.sass - -// Main layout grid, override these constants to build your grid and container sizes. -!blueprint_grid_columns ||= 24 -!blueprint_grid_width ||= 30px -!blueprint_grid_margin ||= 10px - -!blueprint_grid_outer_width = !blueprint_grid_width + !blueprint_grid_margin -!blueprint_container_size = !blueprint_grid_outer_width * !blueprint_grid_columns - !blueprint_grid_margin - -// Columns -// Note: If you use this mixin without the class and want to support ie6 -// you must set text-align left on your container element in an IE stylesheet. -=container - width= !blueprint_container_size - margin: 0 auto - direction: rtl - +clearfix - -// The last column in a row needs this mixin or it will end up on the next row. -// TODO add this to span mixin when we have optional arguments -=last - margin-left: 0 - -=column-base(!last = false) - +float-right - @if !last - +last - @else - margin-left= !blueprint_grid_margin - text-align: right - * html & - overflow-x: hidden - -// Mixin to a column to append n empty cols. -=append(!n) - padding-left= (!blueprint_grid_outer_width) * !n - -// Mixin to a column to prepend n empty cols. -=prepend(!n) - padding-right= (!blueprint_grid_outer_width) * !n - -// mixin to a column to move it n columns to the left -=pull(!n, !last = false) - position: relative - @if !last - margin-right= (-!blueprint_grid_outer_width * !n) + !blueprint_grid_margin - @else - margin-right= -!blueprint_grid_outer_width * !n - -// mixin to a column to push it n columns to the right -=push(!n) - +float-right - position: relative - margin: - top: 0 - left= -!blueprint_grid_outer_width * !n - bottom: 1.5em - right= !blueprint_grid_outer_width * !n - -// Border on left hand side of a column. -=border - padding-left= !blueprint_grid_margin / 2 - 1 - margin-left= !blueprint_grid_margin / 2 - border-left: 1px solid #eee - -// Border with more whitespace, spans one column. -=colborder - padding-left= (!blueprint_grid_width - 2 * !blueprint_grid_margin - 1)/2 - margin-left= (!blueprint_grid_width - 2 * !blueprint_grid_margin)/2 - border-left: 1px solid #eee - -// Usage examples: -// As a top-level mixin, apply to any page that includes the stylesheet: -// +rtl-typography -// Scoped by a presentational class: -// body.blueprint -// +rtl-typography(true) -// Scoped by semantic selectors: -// body#page-1, body#page-2, body.a-special-page-type -// +rtl-typography(true) -// Deprecated: -// You can pass the body selector as the first argument when used as a top-level mixin -// +rtl-typography("body#page-1, body#page-2, body.a-special-page-type") -=rtl-typography(!body_selector = "body") - @if !body_selector == true - html & - font-family: Arial, sans-serif - +rtl-typography-defaults - @else - html #{!body_selector} - font-family: Arial, sans-serif - @if !body_selector != "body" - @debug "[DEPRECATED] To specify a the selector \"#{!body_selector}\" to +rtl-typography, pass true as the first argument and mix it into #{!body_selector}." - +rtl-typography-defaults - @if !body_selector == "body" - body - +rtl-typography-defaults - -=rtl-typography-defaults - h1, h2, h3, h4, h5, h6 - font-family: Arial, sans-serif - - pre, code, tt - font-family: monospace - - p - img.right - +float-left - margin: 1.5em 1.5em 1.5em 0 - padding: 0 - img.left - +float-right - margin: 1.5em 0 1.5em 1.5em - padding: 0 - - dd, ul, ol - margin-left: 0 - margin-right: 1.5em - - td, th - text-align: right diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_scaffolding.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_scaffolding.sass deleted file mode 100644 index 276f4601..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_scaffolding.sass +++ /dev/null @@ -1,49 +0,0 @@ -@import grid.sass -// The styles contained here are meant to provide for an attractive experience out of the box -// and are expected to be removed once custom visual design begins. - -// The +blueprint-scaffolding mixin must be mixed into the top level of your stylesheet. -// However, you can customize the body selector if you wish to control the scope -// of this mixin. Examples: -// Apply to any page including the stylesheet: -// +blueprint-scaffolding -// Scoped by a single presentational body class: -// +blueprint-scaffolding("body.blueprint") -// Semantically: -// +blueprint-scaffolding("body#page-1, body#page-2, body.a-special-page-type") -// Alternatively, you can use the +blueprint-scaffolding-body and +blueprint-scaffolding-defaults -// mixins to construct your own semantic style rules. - -=blueprint-scaffolding(!body_selector = "body") - #{!body_selector} - @if !body_selector != "body" - +blueprint-scaffolding-defaults - @if !body_selector == "body" - +blueprint-scaffolding-defaults - -// The styles this mixin provides were deprecated in Blueprint 0.9 and is no longer part of the -// main scaffolding, but the mixin is still available if you want to use it. -=blueprint-scaffolding-body - margin: 1.5em 0 - -// Mixin +box to create a padded box inside a column. -=box - padding: 1.5em - margin-bottom: 1.5em - background: #E5ECF9 - -=blueprint-scaffolding-defaults - .box - +box - // Border on right hand side of a column. You can comment this out if you don't plan to use it. - div.border - +border - // Border with more whitespace, spans one column. - div.colborder - +colborder - hr - +colruler - hr.space - +colspacer - form.inline - +blueprint-inline-form diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_screen.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_screen.sass deleted file mode 100644 index 6f585429..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_screen.sass +++ /dev/null @@ -1,2 +0,0 @@ -@debug "DEPRECATION WARNING: The blueprint/screen.sass will be removed. Please import blueprint.sass instead." -@import blueprint.sass diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_typography.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_typography.sass deleted file mode 100644 index a244087a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_typography.sass +++ /dev/null @@ -1,162 +0,0 @@ -@import colors.sass -@import compass/utilities/links/link_colors.sass -@import compass/utilities/general/float.sass - -!blueprint_font_family ||= "Helvetica Neue, Arial, Helvetica, sans-serif" -!blueprint_fixed_font_family ||= "'andale mono', 'lucida console', monospace" -!blueprint_font_size ||= 12px - -// Usage examples: -// As a top-level mixin, apply to any page that includes the stylesheet: -// +blueprint-typography -// Scoped by a presentational class: -// body.blueprint -// +blueprint-typography(true) -// Scoped by semantic selectors: -// body#page-1, body#page-2, body.a-special-page-type -// +blueprint-typography(true) -// Deprecated: -// You can pass the body selector as the first argument when used as a top-level mixin -// +blueprint-typography("body#page-1, body#page-2, body.a-special-page-type") -=blueprint-typography(!body_selector = "body") - @if !body_selector == true - +blueprint-typography-body - +blueprint-typography-defaults - @else - #{!body_selector} - +blueprint-typography-body - @if !body_selector != "body" - @debug "[DEPRECATED] To specify a the selector \"#{!body_selector}\" to +blueprint-typography, pass true as the first argument and mix it into #{!body_selector}." - +blueprint-typography-defaults - @if !body_selector == "body" - +blueprint-typography-defaults - -=normal-text - font-family= !blueprint_font_family - color= !font_color - -=fixed-width-text - font= 1em !blueprint_fixed_font_family - line-height: 1.5 - -=header-text - font-weight: normal - color= !header_color - -=quiet - color= !quiet_color - -=loud - color= !loud_color - -=blueprint-typography-body(!font_size = !blueprint_font_size) - line-height: 1.5 - +normal-text - font-size= 100% * !font_size / 16px - -=blueprint-typography-defaults - h1 - +header-text - font-size: 3em - line-height: 1 - margin-bottom: 0.5em - img - margin: 0 - h2 - +header-text - font-size: 2em - margin-bottom: 0.75em - h3 - +header-text - font-size: 1.5em - line-height: 1 - margin-bottom: 1em - h4 - +header-text - font-size: 1.2em - line-height: 1.25 - margin-bottom: 1.25em - h5 - +header-text - font-size: 1em - font-weight: bold - margin-bottom: 1.5em - h6 - +header-text - font-size: 1em - font-weight: bold - h2 img, h3 img, h4 img, h5 img, h6 img - margin: 0 - p - margin: 0 0 1.5em - img.left - +float-left - margin: 1.5em 1.5em 1.5em 0 - padding: 0 - img.right - +float-right - margin: 1.5em 0 1.5em 1.5em - padding: 0 - a - text-decoration: underline - +link-colors(!link_color, !link_hover_color, !link_active_color, !link_visited_color, !link_focus_color) - blockquote - margin: 1.5em - color: #666 - font-style: italic - strong - font-weight: bold - em - font-style: italic - dfn - font-style: italic - font-weight: bold - sup, sub - line-height: 0 - abbr, acronym - border-bottom: 1px dotted #666 - address - margin: 0 0 1.5em - font-style: italic - del - color: #666 - pre - margin: 1.5em 0 - white-space: pre - pre, code, tt - +fixed-width-text - li - ul, ol - margin: 0 - ul, ol - margin: 0 1.5em 1.5em 0 - padding-left: 3.333em - ul - list-style-type: disc - ol - list-style-type: decimal - dl - margin: 0 0 1.5em 0 - dt - font-weight: bold - dd - margin-left: 1.5em - table - margin-bottom: 1.4em - width: 100% - th - font-weight: bold - thead th - background= !blueprint_table_header_color - th, td, caption - padding: 4px 10px 4px 5px - tr.even td - background= !blueprint_table_stripe_color - tfoot - font-style: italic - caption - background: #eee - .quiet - +quiet - .loud - +loud diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_utilities.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_utilities.sass deleted file mode 100644 index e7812d2d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/_utilities.sass +++ /dev/null @@ -1,37 +0,0 @@ -@import compass/utilities/text/nowrap.sass -@import compass/utilities/general/float.sass - -// Most of these utility classes are not "semantic". If you use them, -// you are mixing your content and presentation. For shame! - -=blueprint-utilities - // Regular clearing apply to column that should drop below previous ones. - .clear - clear: both - // turn off text wrapping for the element. - .nowrap - +nowrap - // Apply to an element that has floated children to make the bottom - // of the element fall _below_ the floated children. - .clearfix - +clearfix - .small - font-size: .8em - margin-bottom: 1.875em - line-height: 1.875em - .large - font-size: 1.2em - line-height: 2.5em - margin-bottom: 1.25em - .first - margin-left: 0 - padding-left: 0 - .last - margin-right: 0 - padding-right: 0 - .top - margin-top: 0 - padding-top: 0 - .bottom - margin-bottom: 0 - padding-bottom: 0 diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_buttons.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_buttons.sass.html deleted file mode 100644 index a89b5cb1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_buttons.sass.html +++ /dev/null @@ -1,26 +0,0 @@ -Variable: !blueprint_button_font_family ----------------------------------------- -Button Font - -Variable: !blueprint_button_border_color ------------------------------------------ -Default Button Colors - -Variable: !blueprint_button_hover_border_color ------------------------------------------------ -Default Button Hover Colors - -Variable: !blueprint_button_active_border_color ------------------------------------------------- -Default Button Active Colors -Mixin: button-colors(!font_color) ------------------------ -Button Font - -Mixin: button-active-colors(!font_color) ------------------------------- -Default Button Colors - -Mixin: button-hover-colors(!font_color) ------------------------------ -Default Button Hover Colors diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_colors.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_colors.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_colors.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_debug.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_debug.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_debug.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_fancy_type.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_fancy_type.sass.html deleted file mode 100644 index dc11c934..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_fancy_type.sass.html +++ /dev/null @@ -1,45 +0,0 @@ -Mixin: fancy-type() --------------------- -To install the fancy type plugin: - 1. import the fancy_type module: @import blueprint/fancy_type - 2. mixin +fancy-type to your project's body or at the top level of your stylesheet: - body - +fancy-type - -Mixin: sibling-indentation() ------------------------------ -Indentation instead of line shifts for sibling paragraphs. Mixin to a style like p + p - -Mixin: alt() -------------- -For great looking type, use this code instead of asdf: -asdf -Best used on prepositions and ampersands. - -Mixin: dquo(!offset) --------------- -For great looking quote marks in titles, replace "asdf" with: -asdf” -(That is, when the title starts with a quote mark). -(You may have to change this value depending on your font size). - -Mixin: incr(!font_size) --------------- -Reduced size type with incremental leading -(http://www.markboulton.co.uk/journal/comments/incremental_leading/) - -This could be used for side notes. For smaller type, you don't necessarily want to -follow the 1.5x vertical rhythm -- the line-height is too much. - -Using this mixin, reduces your font size and line-height so that for -every four lines of normal sized type, there is five lines of the sidenote. eg: - -Arguments: - font_size - The desired font size in pixels. This will be converted to ems for you. Defaults to 10px. - base_font_size - The base font size in pixels. Defaults to 12px - old_line_height - The old line height. Defaults to 1.5 times the base_font_size - -Mixin: caps() --------------- -Surround uppercase words and abbreviations with this class. -Based on work by Jørgen Arnor Gårdsø Lom [http://twistedintellect.com/] diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_form.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_form.sass.html deleted file mode 100644 index 3c5c8847..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_form.sass.html +++ /dev/null @@ -1,3 +0,0 @@ -Mixin: blueprint-inline-form() -------------------------------- -Mixin for producing Blueprint "inline" forms. Should be used with the blueprint-form mixin. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_grid.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_grid.sass.html deleted file mode 100644 index ad7e0354..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_grid.sass.html +++ /dev/null @@ -1,46 +0,0 @@ -Variable: !blueprint_grid_columns ----------------------------------- -Main layout grid, override these constants to build your grid and container sizes. -Mixin: container() -------------------- -Main layout grid, override these constants to build your grid and container sizes. - -Mixin: last() --------------- -you must set text-align left on your container element in an IE stylesheet. - -Mixin: column(!n) ----------------- -TODO add this to span mixin when we have optional arguments - -Mixin: append(!n) ----------------- -Use this mixins to set the width of n columns. - -Mixin: prepend(!n) ------------------ -Mixin to a column to append n empty cols. - -Mixin: pull(!n) --------------- -Mixin to a column to prepend n empty cols. - -Mixin: push(!n) --------------- -mixin to a column to move it n columns to the left - -Mixin: border(!border_color) ----------------- -mixin to a column to push it n columns to the right - -Mixin: colborder(!border_color) -------------------- -Border on right hand side of a column. - -Mixin: colruler(!border_color) ------------------- -Border with more whitespace, spans one column. - -Mixin: colspacer() -------------------- -Mixin this to an hr to make a horizontal ruler across a column. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_ie.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_ie.sass.html deleted file mode 100644 index 2fbb8972..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_ie.sass.html +++ /dev/null @@ -1,7 +0,0 @@ -Mixin: blueprint-ie(!body_selector) ----------------------- -+blueprint-ie("body#page-1, body#page-2, body.a-special-page-type") - -Mixin: blueprint-inline-form-ie() ----------------------------------- -Fixes for Blueprint "inline" forms in IE diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_interaction.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_interaction.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_interaction.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_link_icons.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_link_icons.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_link_icons.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_liquid.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_liquid.sass.html deleted file mode 100644 index a70e56fb..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_liquid.sass.html +++ /dev/null @@ -1,7 +0,0 @@ -Variable: !blueprint_liquid_grid_columns ------------------------------------------ -The width shown gives the right floored percentage values. - -Variable: !blueprint_liquid_container_width --------------------------------------------- -Do not edit below this line unless you really know what you're doing. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_print.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_print.sass.html deleted file mode 100644 index 0123785f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_print.sass.html +++ /dev/null @@ -1,7 +0,0 @@ -Mixin: blueprint-print(!body_selector) -------------------------- -+blueprint-print("body#page-1, body#page-2, body.a-special-page-type") - -Mixin: blueprint-show-link-urls() ----------------------------------- -Feel free to mix it into anchors where you want it. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_reset.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_reset.sass.html deleted file mode 100644 index cb4065a7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_reset.sass.html +++ /dev/null @@ -1,7 +0,0 @@ -Mixin: blueprint-global-reset() --------------------------------- -For more specific resets, use the reset mixins provided below - -Mixin: blueprint-nested-reset() --------------------------------- -useful if you want to style a part of your page in a dramatically different way. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_rtl.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_rtl.sass.html deleted file mode 100644 index 68b63f40..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_rtl.sass.html +++ /dev/null @@ -1,38 +0,0 @@ -Variable: !blueprint_grid_columns ----------------------------------- -Main layout grid, override these constants to build your grid and container sizes. -Mixin: container() -------------------- -Main layout grid, override these constants to build your grid and container sizes. - -Mixin: last() --------------- -you must set text-align left on your container element in an IE stylesheet. - -Mixin: append(!n) ----------------- -TODO add this to span mixin when we have optional arguments - -Mixin: prepend(!n) ------------------ -Mixin to a column to append n empty cols. - -Mixin: pull(!n) --------------- -Mixin to a column to prepend n empty cols. - -Mixin: push(!n) --------------- -mixin to a column to move it n columns to the left - -Mixin: border() ----------------- -mixin to a column to push it n columns to the right - -Mixin: colborder() -------------------- -Border on left hand side of a column. - -Mixin: rtl-typography(!body_selector) ------------------------- -Border with more whitespace, spans one column. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_scaffolding.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_scaffolding.sass.html deleted file mode 100644 index 27e951e2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_scaffolding.sass.html +++ /dev/null @@ -1,11 +0,0 @@ -Mixin: blueprint-scaffolding(!body_selector) -------------------------------- -mixins to construct your own semantic style rules. - -Mixin: blueprint-scaffolding-body() ------------------------------------- -main scaffolding, but the mixin is still available if you want to use it. - -Mixin: box() -------------- -Mixin +box to create a padded box inside a column. diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_screen.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_screen.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_screen.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_typography.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_typography.sass.html deleted file mode 100644 index c409bbc2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_typography.sass.html +++ /dev/null @@ -1,3 +0,0 @@ -Mixin: blueprint-typography(!body_selector) ------------------------------- -+blueprint-typography("body#page-1, body#page-2, body.a-special-page-type") diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_utilities.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_utilities.sass.html deleted file mode 100644 index 4704436c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/_utilities.sass.html +++ /dev/null @@ -1,3 +0,0 @@ -Mixin: blueprint-utilities() ------------------------------ -you are mixing your content and presentation. For shame! diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/index.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/index.html deleted file mode 100644 index 705448ac..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/index.html +++ /dev/null @@ -1,31 +0,0 @@ -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_buttons.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_colors.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_debug.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_fancy_type.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_form.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_grid.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_ie.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_interaction.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_link_icons.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_liquid.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_print.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_reset.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_rtl.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_scaffolding.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_screen.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_typography.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//_utilities.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//modules/_buttons.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//modules/_colors.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//modules/_debug.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//modules/_fancy_type.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//modules/_form.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//modules/_grid.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//modules/_interaction.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//modules/_link_icons.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//modules/_liquid.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//modules/_reset.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//modules/_rtl.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//modules/_scaffolding.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//modules/_typography.sass -../compass/lib/compass/frameworks/blueprint/stylesheets/blueprint//modules/_utilities.sass diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_buttons.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_buttons.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_buttons.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_colors.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_colors.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_colors.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_debug.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_debug.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_debug.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_fancy_type.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_fancy_type.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_fancy_type.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_form.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_form.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_form.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_grid.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_grid.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_grid.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_interaction.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_interaction.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_interaction.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_link_icons.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_link_icons.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_link_icons.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_liquid.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_liquid.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_liquid.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_reset.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_reset.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_reset.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_rtl.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_rtl.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_rtl.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_scaffolding.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_scaffolding.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_scaffolding.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_typography.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_typography.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_typography.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_utilities.sass.html b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_utilities.sass.html deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/docs/modules/_utilities.sass.html +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_buttons.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_buttons.sass deleted file mode 100644 index 04cd2ea3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_buttons.sass +++ /dev/null @@ -1,2 +0,0 @@ -@debug "DEPRECATION WARINING: blueprint/modules/buttons.sass has moved to blueprint/buttons.sass" -@import blueprint/buttons.sass diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_colors.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_colors.sass deleted file mode 100644 index 5dd98c92..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_colors.sass +++ /dev/null @@ -1,2 +0,0 @@ -@debug "DEPRECATION WARINING: blueprint/modules/colors.sass has moved to blueprint/colors.sass" -@import blueprint/colors.sass diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_debug.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_debug.sass deleted file mode 100644 index a78c6e98..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_debug.sass +++ /dev/null @@ -1,2 +0,0 @@ -@debug "DEPRECATION WARINING: blueprint/modules/debug.sass has moved to blueprint/debug.sass" -@import blueprint/debug.sass diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_fancy_type.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_fancy_type.sass deleted file mode 100644 index 5a43f5f9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_fancy_type.sass +++ /dev/null @@ -1,2 +0,0 @@ -@debug "DEPRECATION WARINING: blueprint/modules/fancy_type.sass has moved to blueprint/fancy_type.sass" -@import blueprint/fancy_type.sass diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_form.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_form.sass deleted file mode 100644 index 7b455c81..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_form.sass +++ /dev/null @@ -1,2 +0,0 @@ -@debug "DEPRECATION WARINING: blueprint/modules/form.sass has moved to blueprint/form.sass" -@import blueprint/form.sass diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_grid.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_grid.sass deleted file mode 100644 index fd72b845..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_grid.sass +++ /dev/null @@ -1,2 +0,0 @@ -@debug "DEPRECATION WARINING: blueprint/modules/grid.sass has moved to blueprint/grid.sass" -@import blueprint/grid.sass diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_interaction.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_interaction.sass deleted file mode 100644 index 9b2ba76b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_interaction.sass +++ /dev/null @@ -1,2 +0,0 @@ -@debug "DEPRECATION WARINING: blueprint/modules/interaction.sass has moved to blueprint/interaction.sass" -@import blueprint/interaction.sass diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_link_icons.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_link_icons.sass deleted file mode 100644 index 7b38ceba..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_link_icons.sass +++ /dev/null @@ -1,2 +0,0 @@ -@debug "DEPRECATION WARINING: blueprint/modules/link_icons.sass has moved to blueprint/link_icons.sass" -@import blueprint/link_icons.sass diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_liquid.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_liquid.sass deleted file mode 100644 index eed1e601..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_liquid.sass +++ /dev/null @@ -1,3 +0,0 @@ -@debug "DEPRECATION WARINING: blueprint/modules/liquid.sass has moved to blueprint/liquid.sass" -@import blueprint/liquid.sass - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_reset.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_reset.sass deleted file mode 100644 index 297ea8b4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_reset.sass +++ /dev/null @@ -1,2 +0,0 @@ -@debug "DEPRECATION WARINING: blueprint/modules/reset.sass has moved to blueprint/reset.sass" -@import blueprint/reset.sass diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_rtl.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_rtl.sass deleted file mode 100644 index 8cd4d0d8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_rtl.sass +++ /dev/null @@ -1,2 +0,0 @@ -@debug "DEPRECATION WARINING: blueprint/modules/rtl.sass has moved to blueprint/rtl.sass" -@import blueprint/rtl.sass diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_scaffolding.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_scaffolding.sass deleted file mode 100644 index a68b8886..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_scaffolding.sass +++ /dev/null @@ -1,2 +0,0 @@ -@debug "DEPRECATION WARINING: blueprint/modules/scaffolding.sass has moved to blueprint/scaffolding.sass" -@import blueprint/scaffolding.sass diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_typography.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_typography.sass deleted file mode 100644 index d2f1a943..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_typography.sass +++ /dev/null @@ -1,2 +0,0 @@ -@debug "DEPRECATION WARINING: blueprint/modules/typography.sass has moved to blueprint/typography.sass" -@import blueprint/typography.sass diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_utilities.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_utilities.sass deleted file mode 100644 index 57994368..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/stylesheets/blueprint/modules/_utilities.sass +++ /dev/null @@ -1,2 +0,0 @@ -@debug "DEPRECATION WARINING: blueprint/modules/utilities.sass has moved to blueprint/utilities.sass" -@import blueprint/utilities.sass diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/buttons/buttons.sass b/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/buttons/buttons.sass deleted file mode 100644 index 2e4aa310..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/blueprint/templates/buttons/buttons.sass +++ /dev/null @@ -1,49 +0,0 @@ -@import compass/utilities/general/float.sass -@import blueprint/buttons.sass - -// - Use the following HTML code to place the buttons on your site: - - - - - Change Password - - - - Cancel - - -a.button - // you can pass "left" or "right" to +anchor-button to float it in that direction - // or you can pass no argument to leave it inline-block (cross browser safe!) within - // the flow of your page. - +anchor-button("left") - // All the button color mixins take 4 optional arguments: - // font color, background color, border color, border highlight color - // the first three default to constants set in blueprint/buttons.sass - // the last one defaults to a shade lighter than the border color. - +button-colors - +button-hover-colors - +button-active-colors - -button - // The +button-button mixin is just like the +anchor-button mixin, but for
    - # - # - # - # - #
    - # - # strong! - # - # data - # - # more_data - #
    - # - # @param name [#to_s] The name of the tag - # @param flags [Array] Haml end-of-tag flags - # - # @overload haml_tag(name, *flags, attributes = {}) - # @yield The block of Haml code within the tag - # @overload haml_tag(name, text, *flags, attributes = {}) - # @param text [#to_s] The text within the tag - def haml_tag(name, *rest, &block) - ret = ErrorReturn.new("haml_tag") - - name = name.to_s - text = rest.shift.to_s unless [Symbol, Hash, NilClass].any? {|t| rest.first.is_a? t} - flags = [] - flags << rest.shift while rest.first.is_a? Symbol - attributes = Haml::Precompiler.build_attributes(haml_buffer.html?, - haml_buffer.options[:attr_wrapper], - rest.shift || {}) - - if text.nil? && block.nil? && (haml_buffer.options[:autoclose].include?(name) || flags.include?(:/)) - haml_concat "<#{name}#{attributes} />" - return ret - end - - if flags.include?(:/) - raise Error.new("Self-closing tags can't have content.") if text - raise Error.new("Illegal nesting: nesting within a self-closing tag is illegal.") if block - end - - tag = "<#{name}#{attributes}>" - if block.nil? - tag << text.to_s << "" - haml_concat tag - return ret - end - - if text - raise Error.new("Illegal nesting: content can't be both given to haml_tag :#{name} and nested within it.") - end - - if flags.include?(:<) - tag << capture_haml(&block).strip << "" - haml_concat tag - return ret - end - - haml_concat tag - tab_up - block.call - tab_down - haml_concat "" - - ret - end - - # Characters that need to be escaped to HTML entities from user input - HTML_ESCAPE = { '&'=>'&', '<'=>'<', '>'=>'>', '"'=>'"', "'"=>''', } - - # Returns a copy of `text` with ampersands, angle brackets and quotes - # escaped into HTML entities. - # - # Note that if ActionView is loaded and XSS protection is enabled - # (as is the default for Rails 3.0+, and optional for version 2.3.5+), - # this won't escape text declared as "safe". - # - # @param text [String] The string to sanitize - # @return [String] The sanitized string - def html_escape(text) - text.to_s.gsub(/[\"><&]/n) {|s| HTML_ESCAPE[s]} - end - - # Escapes HTML entities in `text`, but without escaping an ampersand - # that is already part of an escaped entity. - # - # @param text [String] The string to sanitize - # @return [String] The sanitized string - def escape_once(text) - Haml::Util.silence_warnings do - text.to_s.gsub(/[\"><]|&(?!(?:[a-zA-Z]+|(#\d+));)/n) {|s| HTML_ESCAPE[s]} - end - end - - # Returns whether or not the current template is a Haml template. - # - # This function, unlike other {Haml::Helpers} functions, - # also works in other `ActionView` templates, - # where it will always return false. - # - # @return [Boolean] Whether or not the current template is a Haml template - def is_haml? - !@haml_buffer.nil? && @haml_buffer.active? - end - - # Returns whether or not `block` is defined directly in a Haml template. - # - # @param block [Proc] A Ruby block - # @return [Boolean] Whether or not `block` is defined directly in a Haml template - def block_is_haml?(block) - eval('_hamlout', block.binding) - true - rescue - false - end - - private - - # Runs a block of code with the given buffer as the currently active buffer. - # - # @param buffer [Haml::Buffer] The Haml buffer to use temporarily - # @yield A block in which the given buffer should be used - def with_haml_buffer(buffer) - @haml_buffer, old_buffer = buffer, @haml_buffer - old_buffer.active, was_active = false, old_buffer.active? if old_buffer - @haml_buffer.active = true - yield - ensure - @haml_buffer.active = false - old_buffer.active = was_active if old_buffer - @haml_buffer = old_buffer - end - - # The current {Haml::Buffer} object. - # - # @return [Haml::Buffer] - def haml_buffer - @haml_buffer - end - - # Gives a proc the same local `_hamlout` and `_erbout` variables - # that the current template has. - # - # @param proc [#call] The proc to bind - # @return [Proc] A new proc with the new variables bound - def haml_bind_proc(&proc) - _hamlout = haml_buffer - _erbout = _hamlout.buffer - proc { |*args| proc.call(*args) } - end - - include ActionViewExtensions if self.const_defined? "ActionViewExtensions" - end -end - -class Object - # Haml overrides various `ActionView` helpers, - # which call an \{#is\_haml?} method - # to determine whether or not the current context object - # is a proper Haml context. - # Because `ActionView` helpers may be included in non-`ActionView::Base` classes, - # it's a good idea to define \{#is\_haml?} for all objects. - def is_haml? - false - end -end - diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/helpers/action_view_extensions.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/helpers/action_view_extensions.rb deleted file mode 100644 index 6c92b161..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/helpers/action_view_extensions.rb +++ /dev/null @@ -1,55 +0,0 @@ -require 'haml/helpers/action_view_mods' - -module Haml - module Helpers - # This module contains various useful helper methods - # that either tie into ActionView or the rest of the ActionPack stack, - # or are only useful in that context. - # Thus, the methods defined here are only available - # if ActionView is installed. - module ActionViewExtensions - # Returns a value for the "class" attribute - # unique to this controller/action pair. - # This can be used to target styles specifically at this action or controller. - # For example, if the current action were `EntryController#show`, - # - # %div{:class => page_class} My Div - # - # would become - # - #
    My Div
    - # - # Then, in a stylesheet (shown here as {Sass}), - # you could refer to this specific action: - # - # .entry.show - # font-weight: bold - # - # or to all actions in the entry controller: - # - # .entry - # color: #00f - # - # @return [String] The class name for the current page - def page_class - controller.controller_name + " " + controller.action_name - end - alias_method :generate_content_class_names, :page_class - - # Treats all input to \{Haml::Helpers#haml\_concat} within the block - # as being HTML safe for Rails' XSS protection. - # This is useful for wrapping blocks of code that concatenate HTML en masse. - # - # This has no effect if Rails' XSS protection isn't enabled. - # - # @yield A block in which all input to `#haml_concat` is treated as raw. - # @see Haml::Util#rails_xss_safe? - def with_raw_haml_concat - @_haml_concat_raw = true - yield - ensure - @_haml_concat_raw = false - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/helpers/action_view_mods.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/helpers/action_view_mods.rb deleted file mode 100644 index 8bafa325..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/helpers/action_view_mods.rb +++ /dev/null @@ -1,177 +0,0 @@ -module ActionView - class Base - def render_with_haml(*args, &block) - options = args.first - - # If render :layout is used with a block, - # it concats rather than returning a string - # so we need it to keep thinking it's Haml - # until it hits the sub-render - if is_haml? && !(options.is_a?(Hash) && options[:layout] && block_given?) - return non_haml { render_without_haml(*args, &block) } - end - render_without_haml(*args, &block) - end - alias_method :render_without_haml, :render - alias_method :render, :render_with_haml - - # Rails >2.1 - if Haml::Util.has?(:instance_method, self, :output_buffer) - def output_buffer_with_haml - return haml_buffer.buffer if is_haml? - output_buffer_without_haml - end - alias_method :output_buffer_without_haml, :output_buffer - alias_method :output_buffer, :output_buffer_with_haml - - def set_output_buffer_with_haml(new) - if is_haml? - new = String.new(new) if Haml::Util.rails_xss_safe? && new.is_a?(ActionView::SafeBuffer) - haml_buffer.buffer = new - else - set_output_buffer_without_haml new - end - end - alias_method :set_output_buffer_without_haml, :output_buffer= - alias_method :output_buffer=, :set_output_buffer_with_haml - end - end - - module Helpers - # In Rails <=2.1, we've got to override considerable capturing infrastructure. - # In Rails >2.1, we can make do with only overriding #capture - # (which no longer behaves differently in helper contexts). - unless Haml::Util.has?(:instance_method, ActionView::Base, :output_buffer) - module CaptureHelper - def capture_with_haml(*args, &block) - # Rails' #capture helper will just return the value of the block - # if it's not actually in the template context, - # as detected by the existance of an _erbout variable. - # We've got to do the same thing for compatibility. - - if is_haml? && block_is_haml?(block) - capture_haml(*args, &block) - else - capture_without_haml(*args, &block) - end - end - alias_method :capture_without_haml, :capture - alias_method :capture, :capture_with_haml - - def capture_erb_with_buffer_with_haml(buffer, *args, &block) - if is_haml? - capture_haml(*args, &block) - else - capture_erb_with_buffer_without_haml(buffer, *args, &block) - end - end - alias_method :capture_erb_with_buffer_without_haml, :capture_erb_with_buffer - alias_method :capture_erb_with_buffer, :capture_erb_with_buffer_with_haml - end - - module TextHelper - def concat_with_haml(string, binding = nil) - if is_haml? - haml_buffer.buffer.concat(string) - else - concat_without_haml(string, binding) - end - end - alias_method :concat_without_haml, :concat - alias_method :concat, :concat_with_haml - end - else - module CaptureHelper - def capture_with_haml(*args, &block) - if Haml::Helpers.block_is_haml?(block) - capture_haml(*args, &block) - else - capture_without_haml(*args, &block) - end - end - alias_method :capture_without_haml, :capture - alias_method :capture, :capture_with_haml - end - end - - module TagHelper - def content_tag_with_haml(name, *args, &block) - return content_tag_without_haml(name, *args, &block) unless is_haml? - - preserve = haml_buffer.options[:preserve].include?(name.to_s) - - if block_given? && block_is_haml?(block) && preserve - return content_tag_without_haml(name, *args) {preserve(&block)} - end - - returning content_tag_without_haml(name, *args, &block) do |content| - return Haml::Helpers.preserve(content) if preserve && content - end - end - - alias_method :content_tag_without_haml, :content_tag - alias_method :content_tag, :content_tag_with_haml - end - - class InstanceTag - # Includes TagHelper - - def haml_buffer - @template_object.send :haml_buffer - end - - def is_haml? - @template_object.send :is_haml? - end - - unless defined?(ActionView::Helpers::ActiveRecordInstanceTag) - alias_method :content_tag_without_haml, :content_tag - alias_method :content_tag, :content_tag_with_haml - end - end - - module FormTagHelper - def form_tag_with_haml(url_for_options = {}, options = {}, *parameters_for_url, &proc) - if is_haml? - if block_given? - oldproc = proc - proc = haml_bind_proc do |*args| - concat "\n" - tab_up - oldproc.call(*args) - tab_down - concat haml_indent - end - concat haml_indent - end - res = form_tag_without_haml(url_for_options, options, *parameters_for_url, &proc) + "\n" - concat "\n" if block_given? - res - else - form_tag_without_haml(url_for_options, options, *parameters_for_url, &proc) - end - end - alias_method :form_tag_without_haml, :form_tag - alias_method :form_tag, :form_tag_with_haml - end - - module FormHelper - def form_for_with_haml(object_name, *args, &proc) - if block_given? && is_haml? - oldproc = proc - proc = haml_bind_proc do |*args| - tab_up - oldproc.call(*args) - tab_down - concat haml_indent - end - concat haml_indent - end - form_for_without_haml(object_name, *args, &proc) - concat "\n" if block_given? && is_haml? - end - alias_method :form_for_without_haml, :form_for - alias_method :form_for, :form_for_with_haml - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/helpers/xss_mods.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/helpers/xss_mods.rb deleted file mode 100644 index e5b25285..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/helpers/xss_mods.rb +++ /dev/null @@ -1,95 +0,0 @@ -module Haml - module Helpers - # This module overrides Haml helpers to work properly - # in the context of ActionView. - # Currently it's only used for modifying the helpers - # to work with Rails' XSS protection methods. - module XssMods - def self.included(base) - %w[html_escape find_and_preserve preserve list_of surround - precede succeed capture_haml haml_concat haml_indent - haml_tag escape_once].each do |name| - base.send(:alias_method, "#{name}_without_haml_xss", name) - base.send(:alias_method, name, "#{name}_with_haml_xss") - end - end - - # Don't escape text that's already safe, - # output is always HTML safe - def html_escape_with_haml_xss(text) - str = text.to_s - return text if str.html_safe? - html_escape_without_haml_xss(str).html_safe! - end - - # Output is always HTML safe - def find_and_preserve_with_haml_xss(*args, &block) - find_and_preserve_without_haml_xss(*args, &block).html_safe! - end - - # Output is always HTML safe - def preserve_with_haml_xss(*args, &block) - preserve_without_haml_xss(*args, &block).html_safe! - end - - # Output is always HTML safe - def list_of_with_haml_xss(*args, &block) - list_of_without_haml_xss(*args, &block).html_safe! - end - - # Input is escaped, output is always HTML safe - def surround_with_haml_xss(front, back = front, &block) - surround_without_haml_xss( - haml_xss_html_escape(front), - haml_xss_html_escape(back), - &block).html_safe! - end - - # Input is escaped, output is always HTML safe - def precede_with_haml_xss(str, &block) - precede_without_haml_xss(haml_xss_html_escape(str), &block).html_safe! - end - - # Input is escaped, output is always HTML safe - def succeed_with_haml_xss(str, &block) - succeed_without_haml_xss(haml_xss_html_escape(str), &block).html_safe! - end - - # Output is always HTML safe - def capture_haml_with_haml_xss(*args, &block) - capture_haml_without_haml_xss(*args, &block).html_safe! - end - - # Input is escaped - def haml_concat_with_haml_xss(text = "") - haml_concat_without_haml_xss(@_haml_concat_raw ? text : haml_xss_html_escape(text)) - end - - # Output is always HTML safe - def haml_indent_with_haml_xss - haml_indent_without_haml_xss.html_safe! - end - - # Input is escaped, haml_concat'ed output is always HTML safe - def haml_tag_with_haml_xss(name, *rest, &block) - name = haml_xss_html_escape(name.to_s) - rest.unshift(haml_xss_html_escape(rest.shift.to_s)) unless [Symbol, Hash, NilClass].any? {|t| rest.first.is_a? t} - with_raw_haml_concat {haml_tag_without_haml_xss(name, *rest, &block)} - end - - # Output is always HTML safe - def escape_once_with_haml_xss(*args) - escape_once_without_haml_xss(*args).html_safe! - end - - private - - # Escapes the HTML in the text if and only if - # Rails XSS protection is enabled *and* the `:escape_html` option is set. - def haml_xss_html_escape(text) - return text unless Haml::Util.rails_xss_safe? && haml_buffer.options[:escape_html] - html_escape(text) - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/html.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/html.rb deleted file mode 100644 index 2d805093..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/html.rb +++ /dev/null @@ -1,260 +0,0 @@ -require File.dirname(__FILE__) + '/../haml' - -require 'haml/engine' -require 'rubygems' -require 'cgi' - -module Haml - class HTML - # A module containing utility methods that every Hpricot node - # should have. - module Node - # Returns the Haml representation of the given node. - # - # @param tabs [Fixnum] The indentation level of the resulting Haml. - # @option options (see Haml::HTML#initialize) - def to_haml(tabs, options) - parse_text(self.to_s, tabs) - end - - private - - def tabulate(tabs) - ' ' * tabs - end - - def attr_hash - attributes.to_hash - end - - def parse_text(text, tabs) - text.strip! - text.gsub!('#{', '\#{') #' - if text.empty? - String.new - else - lines = text.split("\n") - - lines.map do |line| - line.strip! - "#{tabulate(tabs)}#{'\\' if Haml::Engine::SPECIAL_CHARACTERS.include?(line[0])}#{line}\n" - end.join - end - end - end - end -end - -# Haml monkeypatches various Hpricot classes -# to add methods for conversion to Haml. -module Hpricot - # @see Hpricot - module Node - include Haml::HTML::Node - end - - # @see Hpricot - class BaseEle - include Haml::HTML::Node - end -end - -require 'hpricot' - -module Haml - # Converts HTML documents into Haml templates. - # Depends on [Hpricot](http://github.com/whymirror/hpricot) for HTML parsing. - # - # Example usage: - # - # Haml::Engine.new("Blat").render - # #=> "%a{:href => 'http://google.com'} Blat" - class HTML - # @param template [String, Hpricot::Node] The HTML template to convert - # @option options :rhtml [Boolean] (false) Whether or not to parse - # ERB's `<%= %>` and `<% %>` into Haml's `=` and `-` - # @option options :xhtml [Boolean] (false) Whether or not to parse - # the HTML strictly as XHTML - def initialize(template, options = {}) - @options = options - - if template.is_a? Hpricot::Node - @template = template - else - if template.is_a? IO - template = template.read - end - - if @options[:rhtml] - match_to_html(template, /<%=(.*?)-?%>/m, 'loud') - match_to_html(template, /<%-?(.*?)-?%>/m, 'silent') - end - - method = @options[:xhtml] ? Hpricot.method(:XML) : method(:Hpricot) - @template = method.call(template.gsub('&', '&')) - end - end - - # Processes the document and returns the result as a string - # containing the Haml template. - def render - @template.to_haml(0, @options) - end - alias_method :to_haml, :render - - TEXT_REGEXP = /^(\s*).*$/ - - # @see Hpricot - class ::Hpricot::Doc - # @see Haml::HTML::Node#to_haml - def to_haml(tabs, options) - (children || []).inject('') {|s, c| s << c.to_haml(0, options)} - end - end - - # @see Hpricot - class ::Hpricot::XMLDecl - # @see Haml::HTML::Node#to_haml - def to_haml(tabs, options) - "#{tabulate(tabs)}!!! XML\n" - end - end - - # @see Hpricot - class ::Hpricot::CData - # @see Haml::HTML::Node#to_haml - def to_haml(tabs, options) - "#{tabulate(tabs)}:cdata\n#{parse_text(self.content, tabs + 1)}" - end - end - - # @see Hpricot - class ::Hpricot::DocType - # @see Haml::HTML::Node#to_haml - def to_haml(tabs, options) - attrs = public_id.nil? ? ["", "", ""] : - public_id.scan(/DTD\s+([^\s]+)\s*([^\s]*)\s*([^\s]*)\s*\/\//)[0] - if attrs == nil - raise Exception.new("Invalid doctype") - end - - type, version, strictness = attrs.map { |a| a.downcase } - if type == "html" - version = "" - strictness = "strict" if strictness == "" - end - - if version == "1.0" || version.empty? - version = nil - end - - if strictness == 'transitional' || strictness.empty? - strictness = nil - end - - version = " #{version.capitalize}" if version - strictness = " #{strictness.capitalize}" if strictness - - "#{tabulate(tabs)}!!!#{version}#{strictness}\n" - end - end - - # @see Hpricot - class ::Hpricot::Comment - # @see Haml::HTML::Node#to_haml - def to_haml(tabs, options) - "#{tabulate(tabs)}/\n#{parse_text(self.content, tabs + 1)}" - end - end - - # @see Hpricot - class ::Hpricot::Elem - # @see Haml::HTML::Node#to_haml - def to_haml(tabs, options) - output = "#{tabulate(tabs)}" - if options[:rhtml] && name[0...5] == 'haml:' - return output + send("haml_tag_#{name[5..-1]}", CGI.unescapeHTML(self.inner_text)) - end - - output += "%#{name}" unless name == 'div' && - (static_id?(options) || static_classname?(options)) - - if attr_hash - if static_id?(options) - output += "##{attr_hash['id']}" - remove_attribute('id') - end - if static_classname?(options) - attr_hash['class'].split(' ').each { |c| output += ".#{c}" } - remove_attribute('class') - end - output += haml_attributes(options) if attr_hash.length > 0 - end - - (self.children || []).inject(output + "\n") do |output, child| - output + child.to_haml(tabs + 1, options) - end - end - - private - - def dynamic_attributes - @dynamic_attributes ||= begin - Haml::Util.map_hash(attr_hash) do |name, value| - next if value.empty? - full_match = nil - ruby_value = value.gsub(%r{\s*(.+?)\s*}) do - full_match = $`.empty? && $'.empty? - CGI.unescapeHTML(full_match ? $1: "\#{#{$1}}") - end - next if ruby_value == value - [name, full_match ? ruby_value : %("#{ruby_value}")] - end - end - end - - def haml_tag_loud(text) - "= #{text.gsub(/\n\s*/, ' ').strip}\n" - end - - def haml_tag_silent(text) - text.split("\n").map { |line| "- #{line.strip}\n" }.join - end - - def static_attribute?(name, options) - attr_hash[name] and !dynamic_attribute?(name, options) - end - - def dynamic_attribute?(name, options) - options[:rhtml] and dynamic_attributes.key?(name) - end - - def static_id?(options) - static_attribute?('id', options) - end - - def static_classname?(options) - static_attribute?('class', options) - end - - # Returns a string representation of an attributes hash - # that's prettier than that produced by Hash#inspect - def haml_attributes(options) - attrs = attr_hash.map do |name, value| - value = dynamic_attribute?(name, options) ? dynamic_attributes[name] : value.inspect - name = name.index(/\W/) ? name.inspect : ":#{name}" - "#{name} => #{value}" - end - "{ #{attrs.join(', ')} }" - end - end - - private - - def match_to_html(string, regex, tag) - string.gsub!(regex) do - "#{CGI.escapeHTML($1)}" - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/precompiler.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/precompiler.rb deleted file mode 100644 index a7dadb01..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/precompiler.rb +++ /dev/null @@ -1,1043 +0,0 @@ -require 'strscan' -require 'haml/shared' - -module Haml - # Handles the internal pre-compilation from Haml into Ruby code, - # which then runs the final creation of the HTML string. - module Precompiler - include Haml::Util - - # Designates an XHTML/XML element. - ELEMENT = ?% - - # Designates a `
    ` element with the given class. - DIV_CLASS = ?. - - # Designates a `
    ` element with the given id. - DIV_ID = ?# - - # Designates an XHTML/XML comment. - COMMENT = ?/ - - # Designates an XHTML doctype or script that is never HTML-escaped. - DOCTYPE = ?! - - # Designates script, the result of which is output. - SCRIPT = ?= - - # Designates script that is always HTML-escaped. - SANITIZE = ?& - - # Designates script, the result of which is flattened and output. - FLAT_SCRIPT = ?~ - - # Designates script which is run but not output. - SILENT_SCRIPT = ?- - - # When following SILENT_SCRIPT, designates a comment that is not output. - SILENT_COMMENT = ?# - - # Designates a non-parsed line. - ESCAPE = ?\\ - - # Designates a block of filtered text. - FILTER = ?: - - # Designates a non-parsed line. Not actually a character. - PLAIN_TEXT = -1 - - # Keeps track of the ASCII values of the characters that begin a - # specially-interpreted line. - SPECIAL_CHARACTERS = [ - ELEMENT, - DIV_CLASS, - DIV_ID, - COMMENT, - DOCTYPE, - SCRIPT, - SANITIZE, - FLAT_SCRIPT, - SILENT_SCRIPT, - ESCAPE, - FILTER - ] - - # The value of the character that designates that a line is part - # of a multiline string. - MULTILINE_CHAR_VALUE = ?| - - # Regex to match keywords that appear in the middle of a Ruby block - # with lowered indentation. - # If a block has been started using indentation, - # lowering the indentation with one of these won't end the block. - # For example: - # - # - if foo - # %p yes! - # - else - # %p no! - # - # The block is ended after `%p no!`, because `else` - # is a member of this array. - MID_BLOCK_KEYWORD_REGEX = /^-\s*(#{%w[else elsif rescue ensure when end].join('|')})\b/ - - # The Regex that matches a Doctype command. - DOCTYPE_REGEX = /(\d(?:\.\d)?)?[\s]*([a-z]*)/i - - # The Regex that matches a literal string or symbol value - LITERAL_VALUE_REGEX = /:(\w*)|(["'])((?![\\#]|\2).|\\.)*\2/ - - private - - # Returns the precompiled string with the preamble and postamble - def precompiled_with_ambles(local_names) - preamble = < 1 - raise SyntaxError.new("The line was indented #{@next_line.tabs - @line.tabs} levels deeper than the previous line.", @next_line.index) - end - - resolve_newlines unless @next_line.eod? - @line = @next_line - newline unless @next_line.eod? - end - - # Close all the open tags - close until @to_close_stack.empty? - flush_merged_text - end - - # Processes and deals with lowering indentation. - def process_indent(line) - return unless line.tabs <= @template_tabs && @template_tabs > 0 - - to_close = @template_tabs - line.tabs - to_close.times {|i| close unless to_close - 1 - i == 0 && mid_block_keyword?(line.text)} - end - - # Processes a single line of Haml. - # - # This method doesn't return anything; it simply processes the line and - # adds the appropriate code to `@precompiled`. - def process_line(text, index) - @index = index + 1 - - case text[0] - when DIV_CLASS; render_div(text) - when DIV_ID - return push_plain(text) if text[1] == ?{ - render_div(text) - when ELEMENT; render_tag(text) - when COMMENT; render_comment(text[1..-1].strip) - when SANITIZE - return push_plain(text[3..-1].strip, :escape_html => true) if text[1..2] == "==" - return push_script(text[2..-1].strip, :escape_html => true) if text[1] == SCRIPT - return push_flat_script(text[2..-1].strip, :escape_html => true) if text[1] == FLAT_SCRIPT - return push_plain(text[1..-1].strip, :escape_html => true) if text[1] == ?\s - push_plain text - when SCRIPT - return push_plain(text[2..-1].strip) if text[1] == SCRIPT - push_script(text[1..-1]) - when FLAT_SCRIPT; push_flat_script(text[1..-1]) - when SILENT_SCRIPT - return start_haml_comment if text[1] == SILENT_COMMENT - - raise SyntaxError.new(< false) if text[1..2] == "==" - return push_script(text[2..-1].strip, :escape_html => false) if text[1] == SCRIPT - return push_flat_script(text[2..-1].strip, :escape_html => false) if text[1] == FLAT_SCRIPT - return push_plain(text[1..-1].strip, :escape_html => false) if text[1] == ?\s - push_plain text - when ESCAPE; push_plain text[1..-1] - else push_plain text - end - end - - # If the text is a silent script text with one of Ruby's mid-block keywords, - # returns the name of that keyword. - # Otherwise, returns nil. - def mid_block_keyword?(text) - text[MID_BLOCK_KEYWORD_REGEX, 1] - end - - # Evaluates `text` in the context of the scope object, but - # does not output the result. - def push_silent(text, can_suppress = false) - flush_merged_text - return if can_suppress && options[:suppress_eval] - @precompiled << "#{text};" - end - - # Adds `text` to `@buffer` with appropriate tabulation - # without parsing it. - def push_merged_text(text, tab_change = 0, indent = true) - text = !indent || @dont_indent_next_line || @options[:ugly] ? text : "#{' ' * @output_tabs}#{text}" - @to_merge << [:text, text, tab_change] - @dont_indent_next_line = false - end - - # Concatenate `text` to `@buffer` without tabulation. - def concat_merged_text(text) - @to_merge << [:text, text, 0] - end - - def push_text(text, tab_change = 0) - push_merged_text("#{text}\n", tab_change) - end - - def flush_merged_text - return if @to_merge.empty? - - text, tab_change = @to_merge.inject(["", 0]) do |(str, mtabs), (type, val, tabs)| - case type - when :text - [str << val.inspect[1...-1], mtabs + tabs] - when :script - if mtabs != 0 && !@options[:ugly] - val = "_hamlout.adjust_tabs(#{mtabs}); " + val - end - [str << "\#{#{val}}", 0] - else - raise SyntaxError.new("[HAML BUG] Undefined entry in Haml::Precompiler@to_merge.") - end - end - - @precompiled << - if @options[:ugly] - "_hamlout.buffer << \"#{text}\";" - else - "_hamlout.push_text(\"#{text}\", #{tab_change}, #{@dont_tab_up_next_text.inspect});" - end - @to_merge = [] - @dont_tab_up_next_text = false - end - - # Renders a block of text as plain text. - # Also checks for an illegally opened block. - def push_plain(text, options = {}) - if block_opened? - raise SyntaxError.new("Illegal nesting: nesting within plain text is illegal.", @next_line.index) - end - - if contains_interpolation?(text) - options[:escape_html] = self.options[:escape_html] if options[:escape_html].nil? - push_script( - unescape_interpolation(text, :escape_html => options[:escape_html]), - :escape_html => false) - else - push_text text - end - end - - # Adds +text+ to `@buffer` while flattening text. - def push_flat(line) - text = line.full.dup - text = "" unless text.gsub!(/^#{@flat_spaces}/, '') - @filter_buffer << "#{text}\n" - end - - # Causes `text` to be evaluated in the context of - # the scope object and the result to be added to `@buffer`. - # - # If `opts[:preserve_script]` is true, Haml::Helpers#find_and_flatten is run on - # the result before it is added to `@buffer` - def push_script(text, opts = {}) - raise SyntaxError.new("There's no Ruby code for = to evaluate.") if text.empty? - return if options[:suppress_eval] - opts[:escape_html] = options[:escape_html] if opts[:escape_html].nil? - - args = %w[preserve_script in_tag preserve_tag escape_html nuke_inner_whitespace] - args.map! {|name| opts[name.to_sym]} - args << !block_opened? << @options[:ugly] - - no_format = @options[:ugly] && - !(opts[:preserve_script] || opts[:preserve_tag] || opts[:escape_html]) - output_temp = "(haml_very_temp = haml_temp; haml_temp = nil; haml_very_temp)" - out = "_hamlout.#{static_method_name(:format_script, *args)}(#{output_temp});" - - # Prerender tabulation unless we're in a tag - push_merged_text '' unless opts[:in_tag] - - unless block_opened? - @to_merge << [:script, no_format ? "#{text}\n" : "haml_temp = #{text}\n#{out}"] - concat_merged_text("\n") unless opts[:in_tag] || opts[:nuke_inner_whitespace] - @newlines -= 1 - return - end - - flush_merged_text - - push_silent "haml_temp = #{text}" - newline_now - push_and_tabulate([:loud, "_hamlout.buffer << #{no_format ? "#{output_temp}.to_s;" : out}", - !(opts[:in_tag] || opts[:nuke_inner_whitespace] || @options[:ugly])]) - end - - # Causes `text` to be evaluated, and Haml::Helpers#find_and_flatten - # to be run on it afterwards. - def push_flat_script(text, options = {}) - flush_merged_text - - raise SyntaxError.new("There's no Ruby code for ~ to evaluate.") if text.empty? - push_script(text, options.merge(:preserve_script => true)) - end - - def start_haml_comment - return unless block_opened? - - @haml_comment = true - push_and_tabulate([:haml_comment]) - end - - # Closes the most recent item in `@to_close_stack`. - def close - tag, *rest = @to_close_stack.pop - send("close_#{tag}", *rest) - end - - # Puts a line in `@precompiled` that will add the closing tag of - # the most recently opened tag. - def close_element(value) - tag, nuke_outer_whitespace, nuke_inner_whitespace = value - @output_tabs -= 1 unless nuke_inner_whitespace - @template_tabs -= 1 - rstrip_buffer! if nuke_inner_whitespace - push_merged_text("" + (nuke_outer_whitespace ? "" : "\n"), - nuke_inner_whitespace ? 0 : -1, !nuke_inner_whitespace) - @dont_indent_next_line = nuke_outer_whitespace - end - - # Closes a Ruby block. - def close_script(_1, _2, push_end = true) - push_silent("end", true) if push_end - @template_tabs -= 1 - end - - # Closes a comment. - def close_comment(has_conditional) - @output_tabs -= 1 - @template_tabs -= 1 - close_tag = has_conditional ? "" : "-->" - push_text(close_tag, -1) - end - - # Closes a loud Ruby block. - def close_loud(command, add_newline, push_end = true) - push_silent('end', true) if push_end - @precompiled << command - @template_tabs -= 1 - concat_merged_text("\n") if add_newline - end - - # Closes a filtered block. - def close_filtered(filter) - filter.internal_compile(self, @filter_buffer) - @flat = false - @flat_spaces = nil - @filter_buffer = nil - @template_tabs -= 1 - end - - def close_haml_comment - @haml_comment = false - @template_tabs -= 1 - end - - def close_nil(*args) - @template_tabs -= 1 - end - - # Iterates through the classes and ids supplied through `.` - # and `#` syntax, and returns a hash with them as attributes, - # that can then be merged with another attributes hash. - def parse_class_and_id(list) - attributes = {} - list.scan(/([#.])([-_a-zA-Z0-9]+)/) do |type, property| - case type - when '.' - if attributes['class'] - attributes['class'] += " " - else - attributes['class'] = "" - end - attributes['class'] += property - when '#'; attributes['id'] = property - end - end - attributes - end - - def parse_static_hash(text) - attributes = {} - scanner = StringScanner.new(text) - scanner.scan(/\s+/) - until scanner.eos? - return unless key = scanner.scan(LITERAL_VALUE_REGEX) - return unless scanner.scan(/\s*=>\s*/) - return unless value = scanner.scan(LITERAL_VALUE_REGEX) - return unless scanner.scan(/\s*(?:,|$)\s*/) - attributes[eval(key).to_s] = eval(value).to_s - end - text.count("\n").times { newline } - attributes - end - - # This is a class method so it can be accessed from Buffer. - def self.build_attributes(is_html, attr_wrapper, attributes = {}) - quote_escape = attr_wrapper == '"' ? """ : "'" - other_quote_char = attr_wrapper == '"' ? "'" : '"' - - result = attributes.collect do |attr, value| - next if value.nil? - - if value == true - next " #{attr}" if is_html - next " #{attr}=#{attr_wrapper}#{attr}#{attr_wrapper}" - elsif value == false - next - end - - value = Haml::Helpers.preserve(Haml::Helpers.escape_once(value.to_s)) - # We want to decide whether or not to escape quotes - value.gsub!('"', '"') - this_attr_wrapper = attr_wrapper - if value.include? attr_wrapper - if value.include? other_quote_char - value = value.gsub(attr_wrapper, quote_escape) - else - this_attr_wrapper = other_quote_char - end - end - " #{attr}=#{this_attr_wrapper}#{value}#{this_attr_wrapper}" - end - result.compact.sort.join - end - - def prerender_tag(name, self_close, attributes) - attributes_string = Precompiler.build_attributes(html?, @options[:attr_wrapper], attributes) - "<#{name}#{attributes_string}#{self_close && xhtml? ? ' /' : ''}>" - end - - # Parses a line into tag_name, attributes, attributes_hash, object_ref, action, value - def parse_tag(line) - raise SyntaxError.new("Invalid tag: \"#{line}\".") unless match = line.scan(/%([-:\w]+)([-\w\.\#]*)(.*)/)[0] - tag_name, attributes, rest = match - new_attributes_hash = old_attributes_hash = last_line = object_ref = nil - attributes_hashes = [] - while rest - case rest[0] - when ?{ - break if old_attributes_hash - old_attributes_hash, rest, last_line = parse_old_attributes(rest) - attributes_hashes << [:old, old_attributes_hash] - when ?( - break if new_attributes_hash - new_attributes_hash, rest, last_line = parse_new_attributes(rest) - attributes_hashes << [:new, new_attributes_hash] - when ?[ - break if object_ref - object_ref, rest = balance(rest, ?[, ?]) - else; break - end - end - - if rest - nuke_whitespace, action, value = rest.scan(/(<>|><|[><])?([=\/\~&!])?(.*)?/)[0] - nuke_whitespace ||= '' - nuke_outer_whitespace = nuke_whitespace.include? '>' - nuke_inner_whitespace = nuke_whitespace.include? '<' - end - - value = value.to_s.strip - [tag_name, attributes, attributes_hashes, object_ref, nuke_outer_whitespace, - nuke_inner_whitespace, action, value, last_line || @index] - end - - def parse_old_attributes(line) - line = line.dup - last_line = @index - - begin - attributes_hash, rest = balance(line, ?{, ?}) - rescue SyntaxError => e - if line.strip[-1] == ?, && e.message == "Unbalanced brackets." - line << "\n" << @next_line.text - last_line += 1 - next_line - retry - end - - raise e - end - - attributes_hash = attributes_hash[1...-1] if attributes_hash - return attributes_hash, rest, last_line - end - - def parse_new_attributes(line) - line = line.dup - scanner = StringScanner.new(line) - last_line = @index - attributes = {} - - scanner.scan(/\(\s*/) - loop do - name, value = parse_new_attribute(scanner) - break if name.nil? - - if name == false - text = (Haml::Shared.balance(line, ?(, ?)) || [line]).first - raise Haml::SyntaxError.new("Invalid attribute list: #{text.inspect}.", last_line - 1) - end - attributes[name] = value - scanner.scan(/\s*/) - - if scanner.eos? - line << " " << @next_line.text - last_line += 1 - next_line - scanner.scan(/\s*/) - end - end - - static_attributes = {} - dynamic_attributes = "{" - attributes.each do |name, (type, val)| - if type == :static - static_attributes[name] = val - else - dynamic_attributes << name.inspect << " => " << val << "," - end - end - dynamic_attributes << "}" - dynamic_attributes = nil if dynamic_attributes == "{}" - - return [static_attributes, dynamic_attributes], scanner.rest, last_line - end - - def parse_new_attribute(scanner) - unless name = scanner.scan(/[-:\w]+/) - return if scanner.scan(/\)/) - return false - end - - scanner.scan(/\s*/) - return name, [:static, true] unless scanner.scan(/=/) #/end - - scanner.scan(/\s*/) - unless quote = scanner.scan(/["']/) - return false unless var = scanner.scan(/(@@?|\$)?\w+/) - return name, [:dynamic, var] - end - - re = /((?:\\.|\#[^{]|[^#{quote}\\#])*#?)(#{quote}|#\{)/ - content = [] - loop do - return false unless scanner.scan(re) - content << [:str, scanner[1].gsub(/\\(.)/, '\1')] - break if scanner[2] == quote - content << [:ruby, balance(scanner, ?{, ?}, 1).first[0...-1]] - end - - return name, [:static, content.first[1]] if content.size == 1 - return name, [:dynamic, - '"' + content.map {|(t, v)| t == :str ? v.inspect[1...-1] : "\#{#{v}}"}.join + '"'] - end - - # Parses a line that will render as an XHTML tag, and adds the code that will - # render that tag to `@precompiled`. - def render_tag(line) - tag_name, attributes, attributes_hashes, object_ref, nuke_outer_whitespace, - nuke_inner_whitespace, action, value, last_line = parse_tag(line) - - raise SyntaxError.new("Illegal element: classes and ids must have values.") if attributes =~ /[\.#](\.|#|\z)/ - - # Get rid of whitespace outside of the tag if we need to - rstrip_buffer! if nuke_outer_whitespace - - preserve_tag = options[:preserve].include?(tag_name) - nuke_inner_whitespace ||= preserve_tag - preserve_tag &&= !options[:ugly] - - escape_html = (action == '&' || (action != '!' && @options[:escape_html])) - - case action - when '/'; self_closing = true - when '~'; parse = preserve_script = true - when '=' - parse = true - if value[0] == ?= - value = unescape_interpolation(value[1..-1].strip, :escape_html => escape_html) - escape_html = false - end - when '&', '!' - if value[0] == ?= || value[0] == ?~ - parse = true - preserve_script = (value[0] == ?~) - if value[1] == ?= - value = unescape_interpolation(value[2..-1].strip, :escape_html => escape_html) - escape_html = false - else - value = value[1..-1].strip - end - elsif contains_interpolation?(value) - value = unescape_interpolation(value, :escape_html => escape_html) - parse = true - escape_html = false - end - else - if contains_interpolation?(value) - value = unescape_interpolation(value, :escape_html => escape_html) - parse = true - escape_html = false - end - end - - if parse && @options[:suppress_eval] - parse = false - value = '' - end - - object_ref = "nil" if object_ref.nil? || @options[:suppress_eval] - - attributes = parse_class_and_id(attributes) - attributes_hashes.map! do |syntax, attributes_hash| - if syntax == :old - static_attributes = parse_static_hash(attributes_hash) - attributes_hash = nil if static_attributes || @options[:suppress_eval] - else - static_attributes, attributes_hash = attributes_hash - end - Buffer.merge_attrs(attributes, static_attributes) if static_attributes - attributes_hash - end.compact! - - raise SyntaxError.new("Illegal nesting: nesting within a self-closing tag is illegal.", @next_line.index) if block_opened? && self_closing - raise SyntaxError.new("Illegal nesting: content can't be both given on the same line as %#{tag_name} and nested within it.", @next_line.index) if block_opened? && !value.empty? - raise SyntaxError.new("There's no Ruby code for #{action} to evaluate.", last_line - 1) if parse && value.empty? - raise SyntaxError.new("Self-closing tags can't have content.", last_line - 1) if self_closing && !value.empty? - - self_closing ||= !!( !block_opened? && value.empty? && @options[:autoclose].include?(tag_name) ) - value = nil if value.empty? && (block_opened? || self_closing) - - dont_indent_next_line = - (nuke_outer_whitespace && !block_opened?) || - (nuke_inner_whitespace && block_opened?) - - # Check if we can render the tag directly to text and not process it in the buffer - if object_ref == "nil" && attributes_hashes.empty? && !preserve_script - tag_closed = !block_opened? && !self_closing && !parse - - open_tag = prerender_tag(tag_name, self_closing, attributes) - if tag_closed - open_tag << "#{value}" - open_tag << "\n" unless nuke_outer_whitespace - else - open_tag << "\n" unless parse || nuke_inner_whitespace || (self_closing && nuke_outer_whitespace) - end - - push_merged_text(open_tag, tag_closed || self_closing || nuke_inner_whitespace ? 0 : 1, - !nuke_outer_whitespace) - - @dont_indent_next_line = dont_indent_next_line - return if tag_closed - else - flush_merged_text - content = parse ? 'nil' : value.inspect - if attributes_hashes.empty? - attributes_hashes = '' - elsif attributes_hashes.size == 1 - attributes_hashes = ", #{attributes_hashes.first}" - else - attributes_hashes = ", (#{attributes_hashes.join(").merge(")})" - end - - args = [tag_name, self_closing, !block_opened?, preserve_tag, escape_html, - attributes, nuke_outer_whitespace, nuke_inner_whitespace - ].map { |v| v.inspect }.join(', ') - push_silent "_hamlout.open_tag(#{args}, #{object_ref}, #{content}#{attributes_hashes})" - @dont_tab_up_next_text = @dont_indent_next_line = dont_indent_next_line - end - - return if self_closing - - if value.nil? - push_and_tabulate([:element, [tag_name, nuke_outer_whitespace, nuke_inner_whitespace]]) - @output_tabs += 1 unless nuke_inner_whitespace - return - end - - if parse - push_script(value, :preserve_script => preserve_script, :in_tag => true, - :preserve_tag => preserve_tag, :escape_html => escape_html, - :nuke_inner_whitespace => nuke_inner_whitespace) - concat_merged_text("" + (nuke_outer_whitespace ? "" : "\n")) - end - end - - # Renders a line that creates an XHTML tag and has an implicit div because of - # `.` or `#`. - def render_div(line) - render_tag('%div' + line) - end - - # Renders an XHTML comment. - def render_comment(line) - conditional, line = balance(line, ?[, ?]) if line[0] == ?[ - line.strip! - conditional << ">" if conditional - - if block_opened? && !line.empty? - raise SyntaxError.new('Illegal nesting: nesting within a tag that already has content is illegal.', @next_line.index) - end - - open = "" : "-->"}") - end - - push_text(open, 1) - @output_tabs += 1 - push_and_tabulate([:comment, !conditional.nil?]) - unless line.empty? - push_text(line) - close - end - end - - # Renders an XHTML doctype or XML shebang. - def render_doctype(line) - raise SyntaxError.new("Illegal nesting: nesting within a header command is illegal.", @next_line.index) if block_opened? - doctype = text_for_doctype(line) - push_text doctype if doctype - end - - def text_for_doctype(text) - text = text[3..-1].lstrip.downcase - if text.index("xml") == 0 - return nil if html? - wrapper = @options[:attr_wrapper] - return "" - end - - if html5? - '' - else - version, type = text.scan(DOCTYPE_REGEX)[0] - - if xhtml? - if version == "1.1" - '' - elsif version == "5" - '' - else - case type - when "strict"; '' - when "frameset"; '' - when "mobile"; '' - when "basic"; '' - else '' - end - end - - elsif html4? - case type - when "strict"; '' - when "frameset"; '' - else '' - end - end - end - end - - # Starts a filtered block. - def start_filtered(name) - raise Error.new("Invalid filter name \":#{name}\".") unless name =~ /^\w+$/ - raise Error.new("Filter \"#{name}\" is not defined.") unless filter = Filters.defined[name] - - push_and_tabulate([:filtered, filter]) - @flat = true - @filter_buffer = String.new - - # If we don't know the indentation by now, it'll be set in Line#tabs - @flat_spaces = @indentation * @template_tabs if @indentation - end - - def raw_next_line - text = @template.shift - return unless text - - index = @template_index - @template_index += 1 - - return text, index - end - - def next_line - text, index = raw_next_line - return unless text - - # :eod is a special end-of-document marker - line = - if text == :eod - Line.new '-#', '-#', '-#', index, self, true - else - Line.new text.strip, text.lstrip.chomp, text, index, self, false - end - - # `flat?' here is a little outdated, - # so we have to manually check if either the previous or current line - # closes the flat block, - # as well as whether a new block is opened - @line.tabs if @line - unless (flat? && !closes_flat?(line) && !closes_flat?(@line)) || - (@line && @line.text[0] == ?: && line.full =~ %r[^#{@line.full[/^\s+/]}\s]) - if line.text.empty? - newline - return next_line - end - - handle_multiline(line) - end - - @next_line = line - end - - def closes_flat?(line) - line && !line.text.empty? && line.full !~ /^#{@flat_spaces}/ - end - - def un_next_line(line) - @template.unshift line - @template_index -= 1 - end - - def handle_multiline(line) - if is_multiline?(line.text) - line.text.slice!(-1) - while new_line = raw_next_line.first - break if new_line == :eod - newline and next if new_line.strip.empty? - break unless is_multiline?(new_line.strip) - line.text << new_line.strip[0...-1] - newline - end - un_next_line new_line - resolve_newlines - end - end - - # Checks whether or not +line+ is in a multiline sequence. - def is_multiline?(text) - text && text.length > 1 && text[-1] == MULTILINE_CHAR_VALUE && text[-2] == ?\s - end - - def contains_interpolation?(str) - str.include?('#{') - end - - def unescape_interpolation(str, opts = {}) - res = '' - rest = Haml::Shared.handle_interpolation str.dump do |scan| - escapes = (scan[2].size - 1) / 2 - res << scan.matched[0...-3 - escapes] - if escapes % 2 == 1 - res << '#{' - else - content = eval('"' + balance(scan, ?{, ?}, 1)[0][0...-1] + '"') - content = "Haml::Helpers.html_escape(#{content})" if opts[:escape_html] - res << '#{' + content + "}"# Use eval to get rid of string escapes - end - end - res + rest - end - - def balance(*args) - res = Haml::Shared.balance(*args) - return res if res - raise SyntaxError.new("Unbalanced brackets.") - end - - def block_opened? - !flat? && @next_line.tabs > @line.tabs - end - - # Pushes value onto `@to_close_stack` and increases - # `@template_tabs`. - def push_and_tabulate(value) - @to_close_stack.push(value) - @template_tabs += 1 - end - - def flat? - @flat - end - - def newline - @newlines += 1 - end - - def newline_now - @precompiled << "\n" - @newlines -= 1 - end - - def resolve_newlines - return unless @newlines > 0 - flush_merged_text unless @to_merge.all? {|type, *_| type == :text} - @precompiled << "\n" * @newlines - @newlines = 0 - end - - # Get rid of and whitespace at the end of the buffer - # or the merged text - def rstrip_buffer!(index = -1) - last = @to_merge[index] - if last.nil? - push_silent("_hamlout.rstrip!", false) - @dont_tab_up_next_text = true - return - end - - case last.first - when :text - last[1].rstrip! - if last[1].empty? - @to_merge.slice! index - rstrip_buffer! index - end - when :script - last[1].gsub!(/\(haml_temp, (.*?)\);$/, '(haml_temp.rstrip, \1);') - rstrip_buffer! index - 1 - else - raise SyntaxError.new("[HAML BUG] Undefined entry in Haml::Precompiler@to_merge.") - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/shared.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/shared.rb deleted file mode 100644 index f031fc44..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/shared.rb +++ /dev/null @@ -1,78 +0,0 @@ -require 'strscan' - -module Haml - # This module contains functionality that's shared between Haml and Sass. - module Shared - extend self - - # Scans through a string looking for the interoplation-opening `#{` - # and, when it's found, yields the scanner to the calling code - # so it can handle it properly. - # - # The scanner will have any backslashes immediately in front of the `#{` - # as the second capture group (`scan[2]`), - # and the text prior to that as the first (`scan[1]`). - # - # @yieldparam scan [StringScanner] The scanner scanning through the string - # @return [String] The text remaining in the scanner after all `#{`s have been processed - def handle_interpolation(str) - scan = StringScanner.new(str) - yield scan while scan.scan(/(.*?)(\\*)\#\{/) - scan.rest - end - - # Moves a scanner through a balanced pair of characters. - # For example: - # - # Foo (Bar (Baz bang) bop) (Bang (bop bip)) - # ^ ^ - # from to - # - # @param scanner [StringScanner] The string scanner to move - # @param start [Character] The character opening the balanced pair. - # A `Fixnum` in 1.8, a `String` in 1.9 - # @param finish [Character] The character closing the balanced pair. - # A `Fixnum` in 1.8, a `String` in 1.9 - # @param count [Fixnum] The number of opening characters matched - # before calling this method - # @return [(String, String)] The string matched within the balanced pair - # and the rest of the string. - # `["Foo (Bar (Baz bang) bop)", " (Bang (bop bip))"]` in the example above. - def balance(scanner, start, finish, count = 0) - str = '' - scanner = StringScanner.new(scanner) unless scanner.is_a? StringScanner - regexp = Regexp.new("(.*?)[\\#{start.chr}\\#{finish.chr}]", Regexp::MULTILINE) - while scanner.scan(regexp) - str << scanner.matched - count += 1 if scanner.matched[-1] == start - count -= 1 if scanner.matched[-1] == finish - return [str.strip, scanner.rest] if count == 0 - end - end - - # Formats a string for use in error messages about indentation. - # - # @param indentation [String] The string used for indentation - # @param was [Boolean] Whether or not to add `"was"` or `"were"` - # (depending on how many characters were in `indentation`) - # @return [String] The name of the indentation (e.g. `"12 spaces"`, `"1 tab"`) - def human_indentation(indentation, was = false) - if !indentation.include?(?\t) - noun = 'space' - elsif !indentation.include?(?\s) - noun = 'tab' - else - return indentation.inspect + (was ? ' was' : '') - end - - singular = indentation.length == 1 - if was - was = singular ? ' was' : ' were' - else - was = '' - end - - "#{indentation.length} #{noun}#{'s' unless singular}#{was}" - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/template.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/template.rb deleted file mode 100644 index 1aa26a46..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/template.rb +++ /dev/null @@ -1,85 +0,0 @@ -require 'haml/engine' - -module Haml - # The class that keeps track of the global options for Haml within Rails. - module Template - extend self - - @options = {} - # The options hash for Haml when used within Rails. - # See {file:HAML_REFERENCE.md#haml_options the Haml options documentation}. - # - # @return [{Symbol => Object}] - attr_accessor :options - - # Enables integration with the Rails 2.2.5+ XSS protection, - # if it's available and enabled. - # - # @return [Boolean] Whether the XSS integration was enabled. - def try_enabling_xss_integration - return false unless ActionView::Base.respond_to?(:xss_safe?) && ActionView::Base.xss_safe? - - Haml::Template.options[:escape_html] = true - - Haml::Util.module_eval {def rails_xss_safe?; true; end} - - require 'haml/helpers/xss_mods' - Haml::Helpers.send(:include, Haml::Helpers::XssMods) - - Haml::Precompiler.module_eval do - def precompiled_method_return_value_with_haml_xss - "(#{precompiled_method_return_value_without_haml_xss}).html_safe!" - end - alias_method :precompiled_method_return_value_without_haml_xss, :precompiled_method_return_value - alias_method :precompiled_method_return_value, :precompiled_method_return_value_with_haml_xss - end - - true - end - end -end - -if defined?(RAILS_ENV) && RAILS_ENV == "production" - Haml::Template.options[:ugly] = true -end - -# Decide how we want to load Haml into Rails. -# Patching was necessary for versions <= 2.0.1, -# but we can make it a normal handler for higher versions. -if defined?(ActionView::TemplateHandler) || defined?(ActionView::Template::Handler) - require 'haml/template/plugin' -else - require 'haml/template/patch' -end - -# Enable XSS integration. Use Rails' after_initialize method if possible -# so that integration will be checked after the rails_xss plugin is loaded -# (for Rails 2.3.* where it's not enabled by default). -if defined?(Rails.configuration.after_initialize) - Rails.configuration.after_initialize {Haml::Template.try_enabling_xss_integration} -else - Haml::Template.try_enabling_xss_integration -end - -if Haml::Util.rails_root - # Update init.rb to the current version - # if it's out of date. - # - # We can probably remove this as of v1.9, - # because the new init file is sufficiently flexible - # to not need updating. - rails_init_file = File.join(Haml::Util.rails_root, 'vendor', 'plugins', 'haml', 'init.rb') - haml_init_file = Haml::Util.scope('init.rb') - begin - if File.exists?(rails_init_file) - require 'fileutils' - FileUtils.cp(haml_init_file, rails_init_file) unless FileUtils.cmp(rails_init_file, haml_init_file) - end - rescue SystemCallError - warn < e - if logger - logger.debug "ERROR: compiling #{render_symbol} RAISED #{e}" - logger.debug "Backtrace: #{e.backtrace.join("\n")}" - end - - base_path = if defined?(extract_base_path_from) - # Rails 2.0.x - extract_base_path_from(file_name) || view_paths.first - else - # Rails <=1.2.6 - @base_path - end - raise ActionView::TemplateError.new(base_path, file_name || template, @assigns, template, e) - end - - @@compile_time[render_symbol] = Time.now - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/template/plugin.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/template/plugin.rb deleted file mode 100644 index a270a38c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/template/plugin.rb +++ /dev/null @@ -1,75 +0,0 @@ -# This file makes Haml work with Rails -# using the > 2.0.1 template handler API. - -module Haml - class Plugin < Haml::Util.av_template_class(:Handler) - if defined?(ActionView::TemplateHandlers::Compilable) || - defined?(ActionView::Template::Handlers::Compilable) - include Haml::Util.av_template_class(:Handlers)::Compilable - end - - def compile(template) - options = Haml::Template.options.dup - - # template is a template object in Rails >=2.1.0, - # a source string previously - if template.respond_to? :source - # Template has a generic identifier in Rails >=3.0.0 - options[:filename] = template.respond_to?(:identifier) ? template.identifier : template.filename - source = template.source - else - source = template - end - - Haml::Engine.new(source, options).send(:precompiled_with_ambles, []) - end - - def cache_fragment(block, name = {}, options = nil) - @view.fragment_for(block, name, options) do - eval("_hamlout.buffer", block.binding) - end - end - end -end - -if defined? ActionView::Template and ActionView::Template.respond_to? :register_template_handler - ActionView::Template -else - ActionView::Base -end.register_template_handler(:haml, Haml::Plugin) - -# In Rails 2.0.2, ActionView::TemplateError took arguments -# that we can't fill in from the Haml::Plugin context. -# Thus, we've got to monkeypatch ActionView::Base to catch the error. -if defined?(ActionView::TemplateError) && - ActionView::TemplateError.instance_method(:initialize).arity == 5 - class ActionView::Base - def compile_template(handler, template, file_name, local_assigns) - render_symbol = assign_method_name(handler, template, file_name) - - # Move begin up two lines so it captures compilation exceptions. - begin - render_source = create_template_source(handler, template, render_symbol, local_assigns.keys) - line_offset = @@template_args[render_symbol].size + handler.line_offset - - file_name = 'compiled-template' if file_name.blank? - CompiledTemplates.module_eval(render_source, file_name, -line_offset) - rescue Exception => e # errors from template code - if logger - logger.debug "ERROR: compiling #{render_symbol} RAISED #{e}" - logger.debug "Function body: #{render_source}" - logger.debug "Backtrace: #{e.backtrace.join("\n")}" - end - - # There's no way to tell Haml about the filename, - # so we've got to insert it ourselves. - e.backtrace[0].gsub!('(haml)', file_name) if e.is_a?(Haml::Error) - - raise ActionView::TemplateError.new(extract_base_path_from(file_name) || view_paths.first, file_name || template, @assigns, template, e) - end - - @@compile_time[render_symbol] = Time.now - # logger.debug "Compiled template #{file_name || template}\n ==> #{render_symbol}" if logger - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/util.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/util.rb deleted file mode 100644 index 4cf37213..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/util.rb +++ /dev/null @@ -1,289 +0,0 @@ -require 'erb' -require 'set' -require 'enumerator' -require 'stringio' - -module Haml - # A module containing various useful functions. - module Util - extend self - - # An array of ints representing the Ruby version number. - RUBY_VERSION = ::RUBY_VERSION.split(".").map {|s| s.to_i} - - # Returns the path of a file relative to the Haml root directory. - # - # @param file [String] The filename relative to the Haml root - # @return [String] The filename relative to the the working directory - def scope(file) - File.join(File.dirname(File.dirname(File.dirname(File.expand_path(__FILE__)))), file) - end - - # Converts an array of `[key, value]` pairs to a hash. - # For example: - # - # to_hash([[:foo, "bar"], [:baz, "bang"]]) - # #=> {:foo => "bar", :baz => "bang"} - # - # @param arr [Array<(Object, Object)>] An array of pairs - # @return [Hash] A hash - def to_hash(arr) - arr.compact.inject({}) {|h, (k, v)| h[k] = v; h} - end - - # Maps the keys in a hash according to a block. - # For example: - # - # map_keys({:foo => "bar", :baz => "bang"}) {|k| k.to_s} - # #=> {"foo" => "bar", "baz" => "bang"} - # - # @param hash [Hash] The hash to map - # @yield [key] A block in which the keys are transformed - # @yieldparam key [Object] The key that should be mapped - # @yieldreturn [Object] The new value for the key - # @return [Hash] The mapped hash - # @see #map_vals - # @see #map_hash - def map_keys(hash) - to_hash(hash.map {|k, v| [yield(k), v]}) - end - - # Maps the values in a hash according to a block. - # For example: - # - # map_values({:foo => "bar", :baz => "bang"}) {|v| v.to_sym} - # #=> {:foo => :bar, :baz => :bang} - # - # @param hash [Hash] The hash to map - # @yield [value] A block in which the values are transformed - # @yieldparam value [Object] The value that should be mapped - # @yieldreturn [Object] The new value for the value - # @return [Hash] The mapped hash - # @see #map_keys - # @see #map_hash - def map_vals(hash) - to_hash(hash.map {|k, v| [k, yield(v)]}) - end - - # Maps the key-value pairs of a hash according to a block. - # For example: - # - # map_hash({:foo => "bar", :baz => "bang"}) {|k, v| [k.to_s, v.to_sym]} - # #=> {"foo" => :bar, "baz" => :bang} - # - # @param hash [Hash] The hash to map - # @yield [key, value] A block in which the key-value pairs are transformed - # @yieldparam [key] The hash key - # @yieldparam [value] The hash value - # @yieldreturn [(Object, Object)] The new value for the `[key, value]` pair - # @return [Hash] The mapped hash - # @see #map_keys - # @see #map_vals - def map_hash(hash, &block) - to_hash(hash.map(&block)) - end - - # Computes the powerset of the given array. - # This is the set of all subsets of the array. - # For example: - # - # powerset([1, 2, 3]) #=> - # Set[Set[], Set[1], Set[2], Set[3], Set[1, 2], Set[2, 3], Set[1, 3], Set[1, 2, 3]] - # - # @param arr [Enumerable] - # @return [Set] The subsets of `arr` - def powerset(arr) - arr.inject([Set.new].to_set) do |powerset, el| - new_powerset = Set.new - powerset.each do |subset| - new_powerset << subset - new_powerset << subset + [el] - end - new_powerset - end - end - - # Concatenates all strings that are adjacent in an array, - # while leaving other elements as they are. - # For example: - # - # merge_adjacent_strings([1, "foo", "bar", 2, "baz"]) - # #=> [1, "foobar", 2, "baz"] - # - # @param enum [Enumerable] - # @return [Array] The enumerable with strings merged - def merge_adjacent_strings(enum) - e = enum.inject([]) do |a, e| - if e.is_a?(String) && a.last.is_a?(String) - a.last << e - else - a << e - end - a - end - end - - # Silence all output to STDERR within a block. - # - # @yield A block in which no output will be printed to STDERR - def silence_warnings - the_real_stderr, $stderr = $stderr, StringIO.new - yield - ensure - $stderr = the_real_stderr - end - - ## Cross Rails Version Compatibility - - # Returns the root of the Rails application, - # if this is running in a Rails context. - # Returns `nil` if no such root is defined. - # - # @return [String, nil] - def rails_root - return Rails.root.to_s if defined?(Rails.root) - return RAILS_ROOT.to_s if defined?(RAILS_ROOT) - return nil - end - - # Returns an ActionView::Template* class. - # In pre-3.0 versions of Rails, most of these classes - # were of the form `ActionView::TemplateFoo`, - # while afterwards they were of the form `ActionView;:Template::Foo`. - # - # @param name [#to_s] The name of the class to get. - # For example, `:Error` will return `ActionView::TemplateError` - # or `ActionView::Template::Error`. - def av_template_class(name) - return ActionView.const_get("Template#{name}") if ActionView.const_defined?("Template#{name}") - return ActionView::Template.const_get(name.to_s) - end - - ## Rails XSS Safety - - # Whether or not ActionView's XSS protection is available and enabled, - # as is the default for Rails 3.0+, and optional for version 2.3.5+. - # Overridden in haml/template.rb if this is the case. - # - # @return [Boolean] - def rails_xss_safe? - false - end - - # Assert that a given object (usually a String) is HTML safe - # according to Rails' XSS handling, if it's loaded. - # - # @param text [Object] - def assert_html_safe!(text) - return unless rails_xss_safe? && text && !text.to_s.html_safe? - raise Haml::Error.new("Expected #{text.inspect} to be HTML-safe.") - end - - ## Cross-Ruby-Version Compatibility - - # Whether or not this is running under Ruby 1.8 or lower. - # - # @return [Boolean] - def ruby1_8? - Haml::Util::RUBY_VERSION[0] == 1 && Haml::Util::RUBY_VERSION[1] < 9 - end - - # Checks to see if a class has a given method. - # For example: - # - # Haml::Util.has?(:public_instance_method, String, :gsub) #=> true - # - # Method collections like `Class#instance_methods` - # return strings in Ruby 1.8 and symbols in Ruby 1.9 and on, - # so this handles checking for them in a compatible way. - # - # @param attr [#to_s] The (singular) name of the method-collection method - # (e.g. `:instance_methods`, `:private_methods`) - # @param klass [Module] The class to check the methods of which to check - # @param method [String, Symbol] The name of the method do check for - # @return [Boolean] Whether or not the given collection has the given method - def has?(attr, klass, method) - klass.send("#{attr}s").include?(ruby1_8? ? method.to_s : method.to_sym) - end - - # A version of `Enumerable#enum_with_index` that works in Ruby 1.8 and 1.9. - # - # @param enum [Enumerable] The enumerable to get the enumerator for - # @return [Enumerator] The with-index enumerator - def enum_with_index(enum) - ruby1_8? ? enum.enum_with_index : enum.each_with_index - end - - ## Static Method Stuff - - # The context in which the ERB for \{#def\_static\_method} will be run. - class StaticConditionalContext - # @param set [#include?] The set of variables that are defined for this context. - def initialize(set) - @set = set - end - - # Checks whether or not a variable is defined for this context. - # - # @param name [Symbol] The name of the variable - # @return [Boolean] - def method_missing(name, *args, &block) - super unless args.empty? && block.nil? - @set.include?(name) - end - end - - # This is used for methods in {Haml::Buffer} that need to be very fast, - # and take a lot of boolean parameters - # that are known at compile-time. - # Instead of passing the parameters in normally, - # a separate method is defined for every possible combination of those parameters; - # these are then called using \{#static\_method\_name}. - # - # To define a static method, an ERB template for the method is provided. - # All conditionals based on the static parameters - # are done as embedded Ruby within this template. - # For example: - # - # def_static_method(Foo, :my_static_method, [:foo, :bar], :baz, :bang, < - # return foo + bar - # <% elsif baz || bang %> - # return foo - bar - # <% else %> - # return 17 - # <% end %> - # RUBY - # - # \{#static\_method\_name} can be used to call static methods. - # - # @overload def_static_method(klass, name, args, *vars, erb) - # @param klass [Module] The class on which to define the static method - # @param name [#to_s] The (base) name of the static method - # @param args [Array] The names of the arguments to the defined methods - # (**not** to the ERB template) - # @param vars [Array] The names of the static boolean variables - # to be made available to the ERB template - # @param erb [String] The template for the method code - def def_static_method(klass, name, args, *vars) - erb = vars.pop - powerset(vars).each do |set| - context = StaticConditionalContext.new(set).instance_eval {binding} - klass.class_eval(<] The static variable assignment - # @return [String] The real name of the static method - def static_method_name(name, *vars) - "#{name}_#{vars.map {|v| !!v}.join('_')}" - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/version.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/version.rb deleted file mode 100644 index de0b0017..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/haml/version.rb +++ /dev/null @@ -1,64 +0,0 @@ -require 'haml/util' - -module Haml - # Handles Haml version-reporting. - # Haml not only reports the standard three version numbers, - # but its Git revision hash as well, - # if it was installed from Git. - module Version - include Haml::Util - - # Returns a hash representing the version of Haml. - # The `:major`, `:minor`, and `:teeny` keys have their respective numbers as Fixnums. - # The `:name` key has the name of the version. - # The `:string` key contains a human-readable string representation of the version. - # The `:number` key is the major, minor, and teeny keys separated by periods. - # If Haml is checked out from Git, the `:rev` key will have the revision hash. - # For example: - # - # { - # :string => "2.1.0.9616393", - # :rev => "9616393b8924ef36639c7e82aa88a51a24d16949", - # :number => "2.1.0", - # :major => 2, :minor => 1, :teeny => 0 - # } - # - # @return [{Symbol => String/Fixnum}] The version hash - def version - return @@version if defined?(@@version) - - numbers = File.read(scope('VERSION')).strip.split('.').map { |n| n.to_i } - name = File.read(scope('VERSION_NAME')).strip - @@version = { - :major => numbers[0], - :minor => numbers[1], - :teeny => numbers[2], - :name => name - } - @@version[:number] = [:major, :minor, :teeny].map { |comp| @@version[comp] }.compact.join('.') - @@version[:string] = @@version[:number].dup - - if File.exists?(scope('REVISION')) - rev = File.read(scope('REVISION')).strip - rev = nil if rev !~ /^([a-f0-9]+|\(.*\))$/ - end - - if (rev.nil? || rev == '(unknown)') && File.exists?(scope('.git/HEAD')) - rev = File.read(scope('.git/HEAD')).strip - if rev =~ /^ref: (.*)$/ - rev = File.read(scope(".git/#{$1}")).strip - end - end - - if rev - @@version[:rev] = rev - unless rev[0] == ?( - @@version[:string] << "." << rev[0...7] - end - @@version[:string] << " (#{name})" - end - - @@version - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass.rb deleted file mode 100644 index c8243796..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass.rb +++ /dev/null @@ -1,24 +0,0 @@ -dir = File.dirname(__FILE__) -$LOAD_PATH.unshift dir unless $LOAD_PATH.include?(dir) - -require 'haml/version' - -# The module that contains everything Sass-related: -# -# * {Sass::Engine} is the class used to render Sass within Ruby code. -# * {Sass::Plugin} is interfaces with web frameworks (Rails and Merb in particular). -# * {Sass::SyntaxError} is raised when Sass encounters an error. -# * {Sass::CSS} handles conversion of CSS to Sass. -# -# Also see the {file:SASS_REFERENCE.md full Sass reference}. -module Sass - extend Haml::Version - - # A string representing the version of Sass. - # A more fine-grained representation is available from {Sass.version}. - VERSION = version[:string] unless defined?(Sass::VERSION) -end - -require 'haml/util' -require 'sass/engine' -require 'sass/plugin' if defined?(Merb::Plugins) diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/css.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/css.rb deleted file mode 100644 index 43929848..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/css.rb +++ /dev/null @@ -1,404 +0,0 @@ -require File.dirname(__FILE__) + '/../sass' -require 'sass/tree/node' -require 'strscan' - -module Sass - module Tree - class Node - # Converts a node to Sass code that will generate it. - # - # @param tabs [Fixnum] The amount of tabulation to use for the Sass code - # @param opts [{Symbol => Object}] An options hash (see {Sass::CSS#initialize}) - # @return [String] The Sass code corresponding to the node - def to_sass(tabs = 0, opts = {}) - result = '' - - children.each do |child| - result << "#{' ' * tabs}#{child.to_sass(0, opts)}\n" - end - - result - end - end - - class RuleNode - # @see Node#to_sass - def to_sass(tabs, opts = {}) - name = rules.first - name = "\\" + name if name[0] == ?: - str = "\n#{' ' * tabs}#{name}#{children.any? { |c| c.is_a? PropNode } ? "\n" : ''}" - - children.each do |child| - str << "#{child.to_sass(tabs + 1, opts)}" - end - - str - end - end - - class PropNode - # @see Node#to_sass - def to_sass(tabs, opts = {}) - "#{' ' * tabs}#{opts[:old] ? ':' : ''}#{name}#{opts[:old] ? '' : ':'} #{value}\n" - end - end - - class DirectiveNode - # @see Node#to_sass - def to_sass(tabs, opts = {}) - "#{' ' * tabs}#{value}#{children.map {|c| c.to_sass(tabs + 1, opts)}}\n" - end - end - end - - # This class converts CSS documents into Sass templates. - # It works by parsing the CSS document into a {Sass::Tree} structure, - # and then applying various transformations to the structure - # to produce more concise and idiomatic Sass. - # - # Example usage: - # - # Sass::CSS.new("p { color: blue }").render #=> "p\n color: blue" - class CSS - # @param template [String] The CSS code - # @option options :old [Boolean] (false) - # Whether or not to output old property syntax - # (`:color blue` as opposed to `color: blue`). - def initialize(template, options = {}) - if template.is_a? IO - template = template.read - end - - @options = options.dup - # Backwards compatibility - @options[:old] = true if @options[:alternate] == false - @template = StringScanner.new(template) - end - - # Converts the CSS template into Sass code. - # - # @return [String] The resulting Sass code - def render - begin - build_tree.to_sass(0, @options).strip + "\n" - rescue Exception => err - line = @template.string[0...@template.pos].split("\n").size - - err.backtrace.unshift "(css):#{line}" - raise err - end - end - - private - - # Parses the CSS template and applies various transformations - # - # @return [Tree::Node] The root node of the parsed tree - def build_tree - root = Tree::Node.new - whitespace - rules root - expand_commas root - parent_ref_rules root - remove_parent_refs root - flatten_rules root - fold_commas root - root - end - - # Parses a set of CSS rules. - # - # @param root [Tree::Node] The parent node of the rules - def rules(root) - while r = rule - root << r - whitespace - end - end - - # Parses a single CSS rule. - # - # @return [Tree::Node] The parsed rule - def rule - rule = "" - loop do - token = @template.scan(/(?:[^\{\};\/\s]|\/[^*])+/) - if token.nil? - return if rule.empty? - break - end - rule << token - break unless @template.match?(/\s|\/\*/) - whitespace - rule << " " - end - - rule.strip! - directive = rule[0] == ?@ - - if directive - node = Tree::DirectiveNode.new(rule) - return node if @template.scan(/;/) - - assert_match /\{/ - whitespace - - rules(node) - return node - end - - assert_match /\{/ - node = Tree::RuleNode.new(rule) - properties(node) - return node - end - - # Parses a set of CSS properties within a rule. - # - # @param rule [Tree::RuleNode] The parent node of the properties - def properties(rule) - while @template.scan(/[^:\}\s]+/) - name = @template[0] - whitespace - - assert_match /:/ - - value = '' - while @template.scan(/[^;\s\}]+/) - value << @template[0] << whitespace - end - - assert_match /(;|(?=\}))/ - rule << Tree::PropNode.new(name, value, nil) - end - - assert_match /\}/ - end - - # Moves the scanner over a section of whitespace or comments. - # - # @return [String] The ignored whitespace - def whitespace - space = @template.scan(/\s*/) || '' - - # If we've hit a comment, - # go past it and look for more whitespace - if @template.scan(/\/\*/) - @template.scan_until(/\*\//) - return space + whitespace - end - return space - end - - # Moves the scanner over a regular expression, - # raising an exception if it doesn't match. - # - # @param re [Regexp] The regular expression to assert - def assert_match(re) - if @template.scan(re) - whitespace - return - end - - line = @template.string[0..@template.pos].count "\n" - pos = @template.pos - - after = @template.string[pos - 15...pos] - after = "..." + after if pos >= 15 - - # Display basic regexps as plain old strings - expected = re.source == Regexp.escape(re.source) ? "\"#{re.source}\"" : re.inspect - - was = @template.rest[0...15] - was += "..." if @template.rest.size >= 15 - raise Exception.new(<` - # : The arguments for the mixin. - # Each element is a tuple containing the name of the argument - # and the parse tree for the default value of the argument. - # - # `environment`: {Sass::Environment} - # : The environment in which the mixin was defined. - # This is captured so that the mixin can have access - # to local variables defined in its scope. - # - # `tree`: {Sass::Tree::Node} - # : The parse tree for the mixin. - Mixin = Struct.new(:name, :args, :environment, :tree) - - # This class handles the parsing and compilation of the Sass template. - # Example usage: - # - # template = File.load('stylesheets/sassy.sass') - # sass_engine = Sass::Engine.new(template) - # output = sass_engine.render - # puts output - class Engine - include Haml::Util - - # A line of Sass code. - # - # `text`: `String` - # : The text in the line, without any whitespace at the beginning or end. - # - # `tabs`: `Fixnum` - # : The level of indentation of the line. - # - # `index`: `Fixnum` - # : The line number in the original document. - # - # `offset`: `Fixnum` - # : The number of bytes in on the line that the text begins. - # This ends up being the number of bytes of leading whitespace. - # - # `filename`: `String` - # : The name of the file in which this line appeared. - # - # `children`: `Array` - # : The lines nested below this one. - class Line < Struct.new(:text, :tabs, :index, :offset, :filename, :children) - def comment? - text[0] == COMMENT_CHAR && (text[1] == SASS_COMMENT_CHAR || text[1] == CSS_COMMENT_CHAR) - end - end - - # The character that begins a CSS property. - PROPERTY_CHAR = ?: - - # The character that designates that - # a property should be assigned to a SassScript expression. - SCRIPT_CHAR = ?= - - # The character that designates the beginning of a comment, - # either Sass or CSS. - COMMENT_CHAR = ?/ - - # The character that follows the general COMMENT_CHAR and designates a Sass comment, - # which is not output as a CSS comment. - SASS_COMMENT_CHAR = ?/ - - # The character that follows the general COMMENT_CHAR and designates a CSS comment, - # which is embedded in the CSS document. - CSS_COMMENT_CHAR = ?* - - # The character used to denote a compiler directive. - DIRECTIVE_CHAR = ?@ - - # Designates a non-parsed rule. - ESCAPE_CHAR = ?\\ - - # Designates block as mixin definition rather than CSS rules to output - MIXIN_DEFINITION_CHAR = ?= - - # Includes named mixin declared using MIXIN_DEFINITION_CHAR - MIXIN_INCLUDE_CHAR = ?+ - - # The regex that matches properties of the form `name: prop`. - PROPERTY_NEW_MATCHER = /^[^\s:"\[]+\s*[=:](\s|$)/ - - # The regex that matches and extracts data from - # properties of the form `name: prop`. - PROPERTY_NEW = /^([^\s=:"]+)(\s*=|:)(?:\s+|$)(.*)/ - - # The regex that matches and extracts data from - # properties of the form `:name prop`. - PROPERTY_OLD = /^:([^\s=:"]+)\s*(=?)(?:\s+|$)(.*)/ - - # The default options for Sass::Engine. - DEFAULT_OPTIONS = { - :style => :nested, - :load_paths => ['.'], - :cache => true, - :cache_location => './.sass-cache', - }.freeze - - # @param template [String] The Sass template. - # @param options [{Symbol => Object}] An options hash; - # see {file:SASS_REFERENCE.md#sass_options the Sass options documentation} - def initialize(template, options={}) - @options = DEFAULT_OPTIONS.merge(options.reject {|k, v| v.nil?}) - @template = template - - # Backwards compatibility - @options[:property_syntax] ||= @options[:attribute_syntax] - case @options[:property_syntax] - when :alternate; @options[:property_syntax] = :new - when :normal; @options[:property_syntax] = :old - end - end - - # Render the template to CSS. - # - # @return [String] The CSS - # @raise [Sass::SyntaxError] if there's an error in the document - def render - to_tree.render - end - - alias_method :to_css, :render - - # Parses the document into its parse tree. - # - # @return [Sass::Tree::Node] The root of the parse tree. - # @raise [Sass::SyntaxError] if there's an error in the document - def to_tree - root = Tree::Node.new - append_children(root, tree(tabulate(@template)).first, true) - root.options = @options - root - rescue SyntaxError => e; e.add_metadata(@options[:filename], @line) - end - - private - - def tabulate(string) - tab_str = nil - first = true - lines = [] - string.gsub(/\r|\n|\r\n|\r\n/, "\n").scan(/^.*?$/).each_with_index do |line, index| - index += (@options[:line] || 1) - if line.strip.empty? - lines.last.text << "\n" if lines.last && lines.last.comment? - next - end - - line_tab_str = line[/^\s*/] - unless line_tab_str.empty? - tab_str ||= line_tab_str - - raise SyntaxError.new("Indenting at the beginning of the document is illegal.", index) if first - if tab_str.include?(?\s) && tab_str.include?(?\t) - raise SyntaxError.new("Indentation can't use both tabs and spaces.", index) - end - end - first &&= !tab_str.nil? - if tab_str.nil? - lines << Line.new(line.strip, 0, index, 0, @options[:filename], []) - next - end - - if lines.last && lines.last.comment? && line =~ /^(?:#{tab_str}){#{lines.last.tabs + 1}}(.*)$/ - lines.last.text << "\n" << $1 - next - end - - line_tabs = line_tab_str.scan(tab_str).size - raise SyntaxError.new(<= base - if line.tabs > base - if line.tabs > base + 1 - raise SyntaxError.new("The line was indented #{line.tabs - base} levels deeper than the previous line.", line.index) - end - - nodes.last.children, i = tree(arr, i) - else - nodes << line - i += 1 - end - end - return nodes, i - end - - def build_tree(parent, line, root = false) - @line = line.index - node_or_nodes = parse_line(parent, line, root) - - Array(node_or_nodes).each do |node| - # Node is a symbol if it's non-outputting, like a variable assignment - next unless node.is_a? Tree::Node - - node.line = line.index - node.filename = line.filename - - if node.is_a?(Tree::CommentNode) - node.lines = line.children - else - append_children(node, line.children, false) - end - end - - node_or_nodes - end - - def append_children(parent, children, root) - continued_rule = nil - children.each do |line| - child = build_tree(parent, line, root) - - if child.is_a?(Tree::RuleNode) && child.continued? - raise SyntaxError.new("Rules can't end in commas.", child.line) unless child.children.empty? - if continued_rule - continued_rule.add_rules child - else - continued_rule = child - end - next - end - - if continued_rule - raise SyntaxError.new("Rules can't end in commas.", continued_rule.line) unless child.is_a?(Tree::RuleNode) - continued_rule.add_rules child - continued_rule.children = child.children - continued_rule, child = nil, continued_rule - end - - check_for_no_children(child) - validate_and_append_child(parent, child, line, root) - end - - raise SyntaxError.new("Rules can't end in commas.", continued_rule.line) if continued_rule - - parent - end - - def validate_and_append_child(parent, child, line, root) - unless root - case child - when Tree::MixinDefNode - raise SyntaxError.new("Mixins may only be defined at the root of a document.", line.index) - when Tree::ImportNode - raise SyntaxError.new("Import directives may only be used at the root of a document.", line.index) - end - end - - case child - when Array - child.each {|c| validate_and_append_child(parent, c, line, root)} - when Tree::Node - parent << child - end - end - - def check_for_no_children(node) - return unless node.is_a?(Tree::RuleNode) && node.children.empty? - warning = (node.rules.size == 1) ? < line.offset + line.text.index(value)) - else - value - end - Tree::PropNode.new(name, expr, property_regx == PROPERTY_OLD ? :old : :new) - end - - def parse_variable(line) - name, op, value = line.text.scan(Script::MATCH)[0] - raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath variable declarations.", @line + 1) unless line.children.empty? - raise SyntaxError.new("Invalid variable: \"#{line.text}\".", @line) unless name && value - - Tree::VariableNode.new(name, parse_script(value, :offset => line.offset + line.text.index(value)), op == '||=') - end - - def parse_comment(line) - if line[1] == CSS_COMMENT_CHAR || line[1] == SASS_COMMENT_CHAR - Tree::CommentNode.new(line, line[1] == SASS_COMMENT_CHAR) - else - Tree::RuleNode.new(line) - end - end - - def parse_directive(parent, line, root) - directive, whitespace, value = line.text[1..-1].split(/(\s+)/, 2) - offset = directive.size + whitespace.size + 1 if whitespace - - # If value begins with url( or ", - # it's a CSS @import rule and we don't want to touch it. - if directive == "import" && value !~ /^(url\(|")/ - raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath import directives.", @line + 1) unless line.children.empty? - value.split(/,\s*/).map {|f| Tree::ImportNode.new(f)} - elsif directive == "for" - parse_for(line, root, value) - elsif directive == "else" - parse_else(parent, line, value) - elsif directive == "while" - raise SyntaxError.new("Invalid while directive '@while': expected expression.") unless value - Tree::WhileNode.new(parse_script(value, :offset => offset)) - elsif directive == "if" - raise SyntaxError.new("Invalid if directive '@if': expected expression.") unless value - Tree::IfNode.new(parse_script(value, :offset => offset)) - elsif directive == "debug" - raise SyntaxError.new("Invalid debug directive '@debug': expected expression.") unless value - raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath debug directives.", @line + 1) unless line.children.empty? - offset = line.offset + line.text.index(value).to_i - Tree::DebugNode.new(parse_script(value, :offset => offset)) - else - Tree::DirectiveNode.new(line.text) - end - end - - def parse_for(line, root, text) - var, from_expr, to_name, to_expr = text.scan(/^([^\s]+)\s+from\s+(.+)\s+(to|through)\s+(.+)$/).first - - if var.nil? # scan failed, try to figure out why for error message - if text !~ /^[^\s]+/ - expected = "variable name" - elsif text !~ /^[^\s]+\s+from\s+.+/ - expected = "'from '" - else - expected = "'to ' or 'through '" - end - raise SyntaxError.new("Invalid for directive '@for #{text}': expected #{expected}.", @line) - end - raise SyntaxError.new("Invalid variable \"#{var}\".", @line) unless var =~ Script::VALIDATE - - parsed_from = parse_script(from_expr, :offset => line.offset + line.text.index(from_expr)) - parsed_to = parse_script(to_expr, :offset => line.offset + line.text.index(to_expr)) - Tree::ForNode.new(var[1..-1], parsed_from, parsed_to, to_name == 'to') - end - - def parse_else(parent, line, text) - previous = parent.last - raise SyntaxError.new("@else must come after @if.") unless previous.is_a?(Tree::IfNode) - - if text - if text !~ /^if\s+(.+)/ - raise SyntaxError.new("Invalid else directive '@else #{text}': expected 'if '.", @line) - end - expr = parse_script($1, :offset => line.offset + line.text.index($1)) - end - - node = Tree::IfNode.new(expr) - append_children(node, line.children, false) - previous.add_else node - nil - end - - def parse_mixin_definition(line) - name, arg_string = line.text.scan(/^=\s*([^(]+)(.*)$/).first - raise SyntaxError.new("Invalid mixin \"#{line.text[1..-1]}\".", @line) if name.nil? - - offset = line.offset + line.text.size - arg_string.size - args = Script::Parser.new(arg_string.strip, @line, offset).parse_mixin_definition_arglist - default_arg_found = false - Tree::MixinDefNode.new(name, args) - end - - def parse_mixin_include(line, root) - name, arg_string = line.text.scan(/^\+\s*([^(]+)(.*)$/).first - raise SyntaxError.new("Invalid mixin include \"#{line.text}\".", @line) if name.nil? - - offset = line.offset + line.text.size - arg_string.size - args = Script::Parser.new(arg_string.strip, @line, offset).parse_mixin_include_arglist - raise SyntaxError.new("Illegal nesting: Nothing may be nested beneath mixin directives.", @line + 1) unless line.children.empty? - Tree::MixinNode.new(name, args) - end - - def parse_script(script, options = {}) - line = options[:line] || @line - offset = options[:offset] || 0 - Script.parse(script, line, offset, @options[:filename]) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/environment.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/environment.rb deleted file mode 100644 index 5440c213..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/environment.rb +++ /dev/null @@ -1,79 +0,0 @@ -module Sass - # The lexical environment for SassScript. - # This keeps track of variable and mixin definitions. - # - # A new environment is created for each level of Sass nesting. - # This allows variables to be lexically scoped. - # The new environment refers to the environment in the upper scope, - # so it has access to variables defined in enclosing scopes, - # but new variables are defined locally. - # - # Environment also keeps track of the {Engine} options - # so that they can be made available to {Sass::Script::Functions}. - class Environment - # The enclosing environment, - # or nil if this is the global environment. - # - # @return [Environment] - attr_reader :parent - attr_writer :options - - # @param parent [Environment] See \{#parent} - def initialize(parent = nil) - @vars = {} - @mixins = {} - @parent = parent - - set_var("important", Script::String.new("!important")) unless @parent - end - - # The options hash. - # See {file:SASS_REFERENCE.md#sass_options the Sass options documentation}. - # - # @return [{Symbol => Object}] - def options - @options || (parent && parent.options) || {} - end - - class << self - private - - # Note: when updating this, - # update haml/yard/inherited_hash.rb as well. - def inherited_hash(name) - class_eval < Object}] The options hash. - # Only the {file:SASS_REFERENCE.md#cache-option `:cache_location`} option is used - # @raise [Sass::SyntaxError] if there's an error in the document - def tree_for(filename, options) - options = Sass::Engine::DEFAULT_OPTIONS.merge(options) - text = File.read(filename) - - if options[:cache] - compiled_filename = sassc_filename(filename, options) - sha = Digest::SHA1.hexdigest(text) - - if root = try_to_read_sassc(filename, compiled_filename, sha) - root.options = options.merge(:filename => filename) - return root - end - end - - engine = Sass::Engine.new(text, options.merge(:filename => filename)) - - begin - root = engine.to_tree - rescue Sass::SyntaxError => err - err.add_backtrace_entry(filename) - raise err - end - - try_to_write_sassc(root, compiled_filename, sha, options) if options[:cache] - - root - end - - # Find the full filename of a Sass or CSS file to import. - # This follows Sass's import rules: - # if the filename given ends in `".sass"` or `".css"`, - # it will try to find that type of file; - # otherwise, it will try to find the corresponding Sass file - # and fall back on CSS if it's not available. - # - # Any Sass filename returned will correspond to - # an actual Sass file on the filesystem. - # CSS filenames, however, may not; - # they're expected to be put through directly to the stylesheet - # as CSS `@import` statements. - # - # @param filename [String] The filename to search for - # @param load_paths [Array] The set of filesystem paths - # to search for Sass files. - # @return [String] The filename of the imported file. - # This is an absolute path if the file is a `".sass"` file. - # @raise [Sass::SyntaxError] if `filename` ends in ``".sass"`` - # and no corresponding Sass file could be found. - def find_file_to_import(filename, load_paths) - was_sass = false - original_filename = filename - - if filename[-5..-1] == ".sass" - filename = filename[0...-5] - was_sass = true - elsif filename[-4..-1] == ".css" - return filename - end - - new_filename = find_full_path("#{filename}.sass", load_paths) - - return new_filename if new_filename - unless was_sass - warn < e - warn "Warning. Error encountered while reading cache #{compiled_filename}: #{e}" - end - - def try_to_write_sassc(root, compiled_filename, sha, options) - return unless File.writable?(File.dirname(options[:cache_location])) - return if File.exists?(options[:cache_location]) && !File.writable?(options[:cache_location]) - return if File.exists?(File.dirname(compiled_filename)) && !File.writable?(File.dirname(compiled_filename)) - return if File.exists?(compiled_filename) && !File.writable?(compiled_filename) - FileUtils.mkdir_p(File.dirname(compiled_filename)) - File.open(compiled_filename, "wb") do |f| - f.write(Sass::VERSION) - f.write("\n") - f.write(sha) - f.write("\n") - f.write(Marshal.dump(root)) - end - end - - def find_full_path(filename, load_paths) - partial_name = File.join(File.dirname(filename), "_#{File.basename(filename)}") - - if Pathname.new(filename).absolute? - [partial_name, filename].each do |name| - return name if File.readable?(name) - end - return nil - end - - load_paths.each do |path| - [partial_name, filename].each do |name| - full_path = File.join(path, name) - if File.readable?(full_path) - return full_path - end - end - end - nil - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/plugin.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/plugin.rb deleted file mode 100644 index 5339e7f9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/plugin.rb +++ /dev/null @@ -1,222 +0,0 @@ -require 'sass' - -module Sass - # This module handles the compilation of Sass files. - # It provides global options and checks whether CSS files - # need to be updated. - # - # This module is used as the primary interface with Sass - # when it's used as a plugin for various frameworks. - # All Rack-enabled frameworks are supported out of the box. - # The plugin is {file:SASS_REFERENCE.md#rails_merb_plugin automatically activated for Rails and Merb}. - # Other frameworks must enable it explicitly; see {Sass::Plugin::Rack}. - module Plugin - extend self - - @options = { - :css_location => './public/stylesheets', - :always_update => false, - :always_check => true, - :full_exception => true - } - @checked_for_updates = false - - # Whether or not Sass has **ever** checked if the stylesheets need to be updated - # (in this Ruby instance). - # - # @return [Boolean] - attr_reader :checked_for_updates - - # An options hash. - # See {file:SASS_REFERENCE.md#sass_options the Sass options documentation}. - # - # @return [{Symbol => Object}] - attr_reader :options - - # Sets the options hash. - # See {file:SASS_REFERENCE.md#sass_options the Sass options documentation}. - # - # @param value [{Symbol => Object}] The options hash - def options=(value) - @options.merge!(value) - end - - # Non-destructively modifies \{#options} so that default values are properly set. - # - # @param additional_options [{Symbol => Object}] An options hash with which to merge \{#options} - # @return [{Symbol => Object}] The modified options hash - def engine_options(additional_options = {}) - opts = options.dup.merge(additional_options) - opts[:load_paths] = load_paths(opts) - opts - end - - # Same as \{#update\_stylesheets}, but respects \{#checked\_for\_updates} - # and the {file:SASS_REFERENCE.md#always_update-option `:always_update`} - # and {file:SASS_REFERENCE.md#always_check-option `:always_check`} options. - # - # @see #update_stylesheets - def check_for_updates - return unless !Sass::Plugin.checked_for_updates || - Sass::Plugin.options[:always_update] || Sass::Plugin.options[:always_check] - update_stylesheets - end - - # Updates out-of-date stylesheets. - # - # Checks each Sass file in {file:SASS_REFERENCE.md#template_location-option `:template_location`} - # to see if it's been modified more recently than the corresponding CSS file - # in {file:SASS_REFERENCE.md#css_location-option} `:css_location`}. - # If it has, it updates the CSS file. - def update_stylesheets - return if options[:never_update] - - @checked_for_updates = true - template_locations.zip(css_locations).each do |template_location, css_location| - - Dir.glob(File.join(template_location, "**", "*.sass")).each do |file| - # Get the relative path to the file with no extension - name = file.sub(template_location.sub(/\/*$/, '/'), "")[0...-5] - - if !forbid_update?(name) && (options[:always_update] || stylesheet_needs_update?(name, template_location, css_location)) - update_stylesheet(name, template_location, css_location) - end - end - end - end - - private - - def update_stylesheet(name, template_location, css_location) - css = css_filename(name, css_location) - File.delete(css) if File.exists?(css) - - filename = template_filename(name, template_location) - result = begin - Sass::Files.tree_for(filename, engine_options(:css_filename => css, :filename => filename)).render - rescue Exception => e - raise e unless options[:full_exception] - exception_string(e) - end - - # Create any directories that might be necessary - mkpath(css_location, name) - - # Finally, write the file - File.open(css, 'w') do |file| - file.print(result) - end - end - - # Create any successive directories required to be able to write a file to: File.join(base,name) - def mkpath(base, name) - dirs = [base] - name.split(File::SEPARATOR)[0...-1].each { |dir| dirs << File.join(dirs[-1],dir) } - dirs.each { |dir| Dir.mkdir(dir) unless File.exist?(dir) } - end - - def load_paths(opts = options) - (opts[:load_paths] || []) + template_locations - end - - def template_locations - location = (options[:template_location] || File.join(options[:css_location],'sass')) - if location.is_a?(String) - [location] - else - location.to_a.map { |l| l.first } - end - end - - def css_locations - if options[:template_location] && !options[:template_location].is_a?(String) - options[:template_location].to_a.map { |l| l.last } - else - [options[:css_location]] - end - end - - def exception_string(e) - e_string = "#{e.class}: #{e.message}" - - if e.is_a? Sass::SyntaxError - e_string << "\non line #{e.sass_line}" - - if e.sass_filename - e_string << " of #{e.sass_filename}" - - if File.exists?(e.sass_filename) - e_string << "\n\n" - - min = [e.sass_line - 5, 0].max - begin - File.read(e.sass_filename).rstrip.split("\n")[ - min .. e.sass_line + 5 - ].each_with_index do |line, i| - e_string << "#{min + i + 1}: #{line}\n" - end - rescue - e_string << "Couldn't read sass file: #{e.sass_filename}" - end - end - end - end - < css_mtime || - dependencies(template_file).any?(&dependency_updated?(css_mtime)) - end - - def dependency_updated?(css_mtime) - lambda do |dep| - File.mtime(dep) > css_mtime || - dependencies(dep).any?(&dependency_updated?(css_mtime)) - end - end - - def dependencies(filename) - File.readlines(filename).grep(/^@import /).map do |line| - line[8..-1].split(',').map do |inc| - Sass::Files.find_file_to_import(inc.strip, [File.dirname(filename)] + load_paths) - end - end.flatten.grep(/\.sass$/) - end - end -end - -require 'sass/plugin/rails' if defined?(ActionController) -require 'sass/plugin/merb' if defined?(Merb::Plugins) diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/plugin/merb.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/plugin/merb.rb deleted file mode 100644 index fb931f37..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/plugin/merb.rb +++ /dev/null @@ -1,49 +0,0 @@ -unless defined?(Sass::MERB_LOADED) - Sass::MERB_LOADED = true - - version = Merb::VERSION.split('.').map { |n| n.to_i } - if version[0] <= 0 && version[1] < 5 - root = MERB_ROOT - env = MERB_ENV - else - root = Merb.root.to_s - env = Merb.environment - end - - Sass::Plugin.options.merge!(:template_location => root + '/public/stylesheets/sass', - :css_location => root + '/public/stylesheets', - :cache_location => root + '/tmp/sass-cache', - :always_check => env != "production", - :full_exception => env != "production") - config = Merb::Plugins.config[:sass] || Merb::Plugins.config["sass"] || {} - - if defined? config.symbolize_keys! - config.symbolize_keys! - end - - Sass::Plugin.options.merge!(config) - - if version[0] > 0 || version[1] >= 9 - - class Merb::Rack::Application - def call_with_sass(env) - Sass::Plugin.check_for_updates - call_without_sass(env) - end - alias_method :call_without_sass, :call - alias_method :call, :call_with_sass - end - - else - - class MerbHandler - def process_with_sass(request, response) - Sass::Plugin.check_for_updates - process_without_sass(request, response) - end - alias_method :process_without_sass, :process - alias_method :process, :process_with_sass - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/plugin/rack.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/plugin/rack.rb deleted file mode 100644 index 9275b4ba..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/plugin/rack.rb +++ /dev/null @@ -1,65 +0,0 @@ -require 'sass/plugin' - -module Sass - module Plugin - # Rack middleware for compiling Sass code. - # - # ## Activate - # - # require 'sass/plugin/rack' - # use Sass::Plugin::Rack - # - # ## Customize - # - # Sass::Plugin.options.merge( - # :cache_location => './tmp/sass-cache', - # :never_update => environment != :production, - # :full_exception => environment != :production) - # - # {file:SASS_REFERENCE.md#options See the Reference for more options}. - # - # ## Use - # - # Put your Sass files in `public/stylesheets/sass`. - # Your CSS will be generated in `public/stylesheets`, - # and regenerated every request if necessary. - # The locations and frequency {file:SASS_REFERENCE.md#options can be customized}. - # That's all there is to it! - class Rack - # Initialize the middleware. - # - # @param app [#call] The Rack application - def initialize(app) - @app = app - self.class.disable_native_plugin! - end - - # Process a request, checking the Sass stylesheets for changes - # and updating them if necessary. - # - # @param env The Rack request environment - # @return [(#to_i, {String => String}, Object)] The Rack response - def call(env) - Sass::Plugin.check_for_updates - @app.call(env) - end - - # Disable the native Rails or Merb plugins, if they're enabled. - # This is automatically done once the Rack plugin is activated. - # This is done so that the stylesheets aren't checked twice for each request. - def self.disable_native_plugin! - if defined?(Merb::Rack::Application) && - Haml::Util.has?(:instance_method, Merb::Rack::Application, :call_without_sass) - Merb::Rack::Application.instance_eval {alias_method :call, :call_without_sass} - end - - if defined?(ActionDispatch::Callbacks.to_prepare) - ActionDispatch::Callbacks.skip_callback(:prepare, :__sass_process) - elsif defined?(ActionController::Base) && - Haml::Util.has?(:instance_method, ActionController::Base, :sass_old_process) - ActionController::Base.instance_eval {alias_method :process, :sass_old_process} - end - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/plugin/rails.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/plugin/rails.rb deleted file mode 100644 index 8d4a5f40..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/plugin/rails.rb +++ /dev/null @@ -1,24 +0,0 @@ -unless defined?(Sass::RAILS_LOADED) - Sass::RAILS_LOADED = true - - Sass::Plugin.options.merge!(:template_location => Haml::Util.rails_root + '/public/stylesheets/sass', - :css_location => Haml::Util.rails_root + '/public/stylesheets', - :cache_location => Haml::Util.rails_root + '/tmp/sass-cache', - :always_check => RAILS_ENV != "production", - :full_exception => RAILS_ENV != "production") - - if defined?(ActionDispatch::Callbacks.to_prepare) - # Rails >= 3.0.0 - ActionDispatch::Callbacks.to_prepare(:sass_process) {Sass::Plugin.check_for_updates} - else - module ActionController - class Base - alias_method :sass_old_process, :process - def process(*args) - Sass::Plugin.check_for_updates - sass_old_process(*args) - end - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/repl.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/repl.rb deleted file mode 100644 index ee955bf8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/repl.rb +++ /dev/null @@ -1,58 +0,0 @@ -require 'readline' - -module Sass - # Runs a SassScript read-eval-print loop. - # It presents a prompt on the terminal, - # reads in SassScript expressions, - # evaluates them, - # and prints the result. - class Repl - # @param options [{Symbol => Object}] An options hash. - def initialize(options = {}) - @options = options - end - - # Starts the read-eval-print loop. - def run - environment = Environment.new - environment.set_var('important', Script::String.new('!important')) - @line = 0 - loop do - @line += 1 - unless text = Readline.readline('>> ') - puts - return - end - - Readline::HISTORY << text - parse_input(environment, text) - end - end - - private - - def parse_input(environment, text) - case text - when Script::MATCH - name = $1 - guarded = $2 == '||=' - val = Script::Parser.parse($3, @line, text.size - $3.size) - - unless guarded && environment.var(name) - environment.set_var(name, val.perform(environment)) - end - - p environment.var(name) - else - p Script::Parser.parse(text, @line, 0).perform(environment) - end - rescue Sass::SyntaxError => e - puts "SyntaxError: #{e.message}" - if @options[:trace] - e.backtrace.each do |e| - puts "\tfrom #{e}" - end - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script.rb deleted file mode 100644 index bcacabd8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script.rb +++ /dev/null @@ -1,59 +0,0 @@ -require 'strscan' -require 'sass/script/node' -require 'sass/script/variable' -require 'sass/script/funcall' -require 'sass/script/operation' -require 'sass/script/literal' -require 'sass/script/parser' - -module Sass - # SassScript is code that's embedded in Sass documents - # to allow for property values to be computed from variables. - # - # This module contains code that handles the parsing and evaluation of SassScript. - module Script - # The character that begins a variable. - VARIABLE_CHAR = ?! - - # The regular expression used to parse variables. - MATCH = /^!([a-zA-Z_]\w*)\s*((?:\|\|)?=)\s*(.+)/ - - # The regular expression used to validate variables without matching. - VALIDATE = /^![a-zA-Z_]\w*$/ - - # Parses and evaluates a string of SassScript. - # - # @param value [String] The SassScript - # @param line [Fixnum] The number of the line on which the SassScript appeared. - # Used for error reporting - # @param offset [Fixnum] The number of characters in on `line` that the SassScript started. - # Used for error reporting - # @param environment [Sass::Environment] The environment in which to evaluate the SassScript - # @return [String] The string result of evaluating the SassScript - def self.resolve(value, line, offset, environment) - parse(value, line, offset).perform(environment).to_s - end - - # Parses a string of SassScript - # - # @param value [String] The SassScript - # @param line [Fixnum] The number of the line on which the SassScript appeared. - # Used for error reporting - # @param offset [Fixnum] The number of characters in on `line` that the SassScript started. - # Used for error reporting - # @param filename [String] The path to the file in which the SassScript appeared. - # Used for error reporting - # @return [Script::Node] The root node of the parse tree - def self.parse(value, line, offset, filename = nil) - Parser.parse(value, line, offset, filename) - rescue Sass::SyntaxError => e - if e.message == "SassScript error" - e.instance_eval do - @message += ": #{value.dump}." - end - end - e.sass_line = line - raise e - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/bool.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/bool.rb deleted file mode 100644 index 0f455dbd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/bool.rb +++ /dev/null @@ -1,17 +0,0 @@ -require 'sass/script/literal' - -module Sass::Script - # A SassScript object representing a boolean (true or false) value. - class Bool < Literal - # The Ruby value of the boolean. - # - # @return [Boolean] - attr_reader :value - alias_method :to_bool, :value - - # @return [String] "true" or "false" - def to_s - @value.to_s - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/color.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/color.rb deleted file mode 100644 index 6e1cce11..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/color.rb +++ /dev/null @@ -1,220 +0,0 @@ -require 'sass/script/literal' - -module Sass::Script - # A SassScript object representing a CSS color. - class Color < Literal - class << self; include Haml::Util; end - - # A hash from color names to `[red, green, blue]` value arrays. - HTML4_COLORS = map_vals({ - 'black' => 0x000000, - 'silver' => 0xc0c0c0, - 'gray' => 0x808080, - 'white' => 0xffffff, - 'maroon' => 0x800000, - 'red' => 0xff0000, - 'purple' => 0x800080, - 'fuchsia' => 0xff00ff, - 'green' => 0x008000, - 'lime' => 0x00ff00, - 'olive' => 0x808000, - 'yellow' => 0xffff00, - 'navy' => 0x000080, - 'blue' => 0x0000ff, - 'teal' => 0x008080, - 'aqua' => 0x00ffff - }) {|color| (0..2).map {|n| color >> (n << 3) & 0xff}.reverse} - # A hash from `[red, green, blue]` value arrays to color names. - HTML4_COLORS_REVERSE = map_hash(HTML4_COLORS) {|k, v| [v, k]} - - # Creates a new color from RGB components. - # *Note*: when modifying the components of an existing color, - # use \{#with} rather than creating a new color object. - # This preserves forwards-compatiblity for alpha channels and such. - # - # @param rgb [Array] A three-element array of the red, green, and blue values (respectively) - # of the color - # @raise [Sass::SyntaxError] if any color value isn't between 0 and 255 - def initialize(rgb) - rgb = rgb.map {|c| c.to_i} - raise Sass::SyntaxError.new("Color values must be between 0 and 255") if rgb.any? {|c| c < 0 || c > 255} - super(rgb.freeze) - end - - # @deprecated This will be removed in version 2.6. - # @see #rgb - def value - warn <] A frozen three-element array of the red, green, and blue - # values (respectively) of the color - def rgb - @value - end - - # Returns a copy of this color with one or more channels changed. - # - # For example: - # - # Color.new([10, 20, 30]).with(:blue => 40) - # #=> rgb(10, 40, 30) - # Color.new([126, 126, 126]).with(:red => 0, :green => 255) - # #=> rgb(0, 255, 126) - # - # @param attrs [{Symbol => Fixnum}] - # A map of channel names (`:red`, `:green`, or `:blue`) to values - # @return [Color] The new Color object - def with(attrs) - Color.new([ - attrs[:red] || rgb[0], - attrs[:green] || rgb[1], - attrs[:blue] || rgb[2], - ]) - end - - # The SassScript `+` operation. - # Its functionality depends on the type of its argument: - # - # {Number} - # : Adds the number to each of the RGB color channels. - # - # {Color} - # : Adds each of the RGB color channels together. - # - # {Literal} - # : See {Literal#plus}. - # - # @param other [Literal] The right-hand side of the operator - # @return [Color] The resulting color - # @raise [Sass::SyntaxError] if `other` is a number with units - def plus(other) - if other.is_a?(Sass::Script::Number) || other.is_a?(Sass::Script::Color) - piecewise(other, :+) - else - super - end - end - - # The SassScript `-` operation. - # Its functionality depends on the type of its argument: - # - # {Number} - # : Subtracts the number from each of the RGB color channels. - # - # {Color} - # : Subtracts each of the other color's RGB color channels from this color's. - # - # {Literal} - # : See {Literal#minus}. - # - # @param other [Literal] The right-hand side of the operator - # @return [Color] The resulting color - # @raise [Sass::SyntaxError] if `other` is a number with units - def minus(other) - if other.is_a?(Sass::Script::Number) || other.is_a?(Sass::Script::Color) - piecewise(other, :-) - else - super - end - end - - # The SassScript `*` operation. - # Its functionality depends on the type of its argument: - # - # {Number} - # : Multiplies the number by each of the RGB color channels. - # - # {Color} - # : Multiplies each of the RGB color channels together. - # - # @param other [Number, Color] The right-hand side of the operator - # @return [Color] The resulting color - # @raise [Sass::SyntaxError] if `other` is a number with units - def times(other) - if other.is_a?(Sass::Script::Number) || other.is_a?(Sass::Script::Color) - piecewise(other, :*) - else - raise NoMethodError.new(nil, :times) - end - end - - # The SassScript `/` operation. - # Its functionality depends on the type of its argument: - # - # {Number} - # : Divides each of the RGB color channels by the number. - # - # {Color} - # : Divides each of this color's RGB color channels by the other color's. - # - # {Literal} - # : See {Literal#div}. - # - # @param other [Literal] The right-hand side of the operator - # @return [Color] The resulting color - # @raise [Sass::SyntaxError] if `other` is a number with units - def div(other) - if other.is_a?(Sass::Script::Number) || other.is_a?(Sass::Script::Color) - piecewise(other, :/) - else - super - end - end - - # The SassScript `%` operation. - # Its functionality depends on the type of its argument: - # - # {Number} - # : Takes each of the RGB color channels module the number. - # - # {Color} - # : Takes each of this color's RGB color channels modulo the other color's. - # - # @param other [Number, Color] The right-hand side of the operator - # @return [Color] The resulting color - # @raise [Sass::SyntaxError] if `other` is a number with units - def mod(other) - if other.is_a?(Sass::Script::Number) || other.is_a?(Sass::Script::Color) - piecewise(other, :%) - else - raise NoMethodError.new(nil, :mod) - end - end - - # Returns a string representation of the color. - # This is usually the color's hex value, - # but if the color has a name that's used instead. - # - # @return [String] The string representation - def to_s - return HTML4_COLORS_REVERSE[rgb] if HTML4_COLORS_REVERSE[rgb] - red, green, blue = rgb.map { |num| num.to_s(16).rjust(2, '0') } - "##{red}#{green}#{blue}" - end - alias_method :inspect, :to_s - - private - - def piecewise(other, operation) - other_num = other.is_a? Number - if other_num && !other.unitless? - raise Sass::SyntaxError.new("Cannot add a number with units (#{other}) to a color (#{self}).") - end - - result = [] - for i in (0...3) - res = rgb[i].send(operation, other_num ? other.value : other.rgb[i]) - result[i] = [ [res, 255].min, 0 ].max - end - with(:red => result[0], :green => result[1], :blue => result[2]) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/funcall.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/funcall.rb deleted file mode 100644 index 7e144cf1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/funcall.rb +++ /dev/null @@ -1,50 +0,0 @@ -require File.join(File.dirname(__FILE__), 'functions') -module Sass - module Script - # A SassScript parse node representing a function call. - # - # A function call either calls one of the functions in {Script::Functions}, - # or if no function with the given name exists - # it returns a string representation of the function call. - class Funcall < Node - # The name of the function. - # - # @return [String] - attr_reader :name - - # The arguments to the function. - # - # @return [Array] - attr_reader :args - - # @param name [String] See \{#name} - # @param name [Array] See \{#args} - def initialize(name, args) - @name = name - @args = args - end - - # @return [String] A string representation of the function call - def inspect - "#{name}(#{args.map {|a| a.inspect}.join(', ')})" - end - - # Evaluates the function call. - # - # @param environment [Sass::Environment] The environment in which to evaluate the SassScript - # @return [Literal] The SassScript object that is the value of the function call - # @raise [Sass::SyntaxError] if the function call raises an ArgumentError - def perform(environment) - args = self.args.map {|a| a.perform(environment)} - unless Haml::Util.has?(:public_instance_method, Functions, name) && name !~ /^__/ - return Script::String.new("#{name}(#{args.map {|a| a.perform(environment)}.join(', ')})") - end - - return Functions::EvaluationContext.new(environment.options).send(name, *args) - rescue ArgumentError => e - raise e unless e.backtrace.any? {|t| t =~ /:in `(block in )?(#{name}|perform)'$/} - raise Sass::SyntaxError.new("#{e.message} for `#{name}'") - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/functions.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/functions.rb deleted file mode 100644 index fef69602..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/functions.rb +++ /dev/null @@ -1,257 +0,0 @@ -module Sass::Script - # Methods in this module are accessible from the SassScript context. - # For example, you can write - # - # !color = hsl(120, 100%, 50%) - # - # and it will call {Sass::Script::Functions#hsl}. - # - # The following functions are provided: - # - # \{#hsl} - # : Converts an `hsl(hue, saturation, lightness)` triplet into a color. - # - # \{#rgb} - # : Converts an `rgb(red, green, blue)` triplet into a color. - # - # \{#percentage} - # : Converts a unitless number to a percentage. - # - # \{#round} - # : Rounds a number to the nearest whole number. - # - # \{#ceil} - # : Rounds a number up to the nearest whole number. - # - # \{#floor} - # : Rounds a number down to the nearest whole number. - # - # \{#abs} - # : Returns the absolute value of a number. - # - # These functions are described in more detail below. - # - # ## Adding Custom Functions - # - # New Sass functions can be added by adding Ruby methods to this module. - # For example: - # - # module Sass::Script::Functions - # def reverse(string) - # assert_type string, :String - # Sass::Script::String.new(string.value.reverse) - # end - # end - # - # There are a few things to keep in mind when modifying this module. - # First of all, the arguments passed are {Sass::Script::Literal} objects. - # Literal objects are also expected to be returned. - # This means that Ruby values must be unwrapped and wrapped. - # - # Most Literal objects support the {Sass::Script::Literal#value value} accessor - # for getting their Ruby values. - # Color objects, though, must be accessed using {Sass::Script::Color#rgb rgb}. - # - # Second, making Ruby functions accessible from Sass introduces the temptation - # to do things like database access within stylesheets. - # This is generally a bad idea; - # since Sass files are by default only compiled once, - # dynamic code is not a great fit. - # - # If you really, really need to compile Sass on each request, - # first make sure you have adequate caching set up. - # Then you can use {Sass::Engine} to render the code, - # using the {file:SASS_REFERENCE.md#custom-option `options` parameter} - # to pass in data that {EvaluationContext#options can be accessed} - # from your Sass functions. - # - # Within one of the functions in this module, - # methods of {EvaluationContext} can be used. - module Functions - # The context in which methods in {Script::Functions} are evaluated. - # That means that all instance methods of {EvaluationContext} - # are available to use in functions. - class EvaluationContext - # The options hash for the {Sass::Engine} that is processing the function call - # - # @return [{Symbol => Object}] - attr_reader :options - - # @param options [{Symbol => Object}] See \{#options} - def initialize(options) - @options = options - - # We need to include this individually in each instance - # because of an icky Ruby restriction - class << self; include Sass::Script::Functions; end - end - - # Asserts that the type of a given SassScript value - # is the expected type (designated by a symbol). - # For example: - # - # assert_type value, :String - # assert_type value, :Number - # - # Valid types are `:Bool`, `:Color`, `:Number`, and `:String`. - # - # @param value [Sass::Script::Literal] A SassScript value - # @param type [Symbol] The name of the type the value is expected to be - def assert_type(value, type) - return if value.is_a?(Sass::Script.const_get(type)) - raise ArgumentError.new("#{value.inspect} is not a #{type.to_s.downcase}") - end - end - - instance_methods.each { |m| undef_method m unless m.to_s =~ /^__/ } - - - # Creates a {Color} object from red, green, and blue values. - # @param red - # A number between 0 and 255 inclusive, - # or between 0% and 100% inclusive - # @param green - # A number between 0 and 255 inclusive, - # or between 0% and 100% inclusive - # @param blue - # A number between 0 and 255 inclusive, - # or between 0% and 100% inclusive - def rgb(red, green, blue) - assert_type red, :Number - assert_type green, :Number - assert_type blue, :Number - - rgb = [red, green, blue].map do |c| - v = c.value - if c.numerator_units == ["%"] && c.denominator_units.empty? - next v * 255 / 100.0 if (0..100).include?(v) - raise ArgumentError.new("Color value #{c} must be between 0% and 100% inclusive") - else - next v if (0..255).include?(v) - raise ArgumentError.new("Color value #{v} must be between 0 and 255 inclusive") - end - end - Color.new(rgb) - end - - # Creates a {Color} object from hue, saturation, and lightness. - # Uses the algorithm from the [CSS3 spec](http://www.w3.org/TR/css3-color/#hsl-color). - # - # @param hue [Number] The hue of the color. - # Should be between 0 and 360 degrees, inclusive - # @param saturation [Number] The saturation of the color. - # Must be between `0%` and `100%`, inclusive - # @param lightness [Number] The lightness of the color. - # Must be between `0%` and `100%`, inclusive - # @return [Color] The resulting color - # @raise [ArgumentError] if `saturation` or `lightness` are out of bounds - def hsl(hue, saturation, lightness) - assert_type hue, :Number - assert_type saturation, :Number - assert_type lightness, :Number - - original_s = saturation - original_l = lightness - # This algorithm is from http://www.w3.org/TR/css3-color#hsl-color - h, s, l = [hue, saturation, lightness].map { |a| a.value } - raise ArgumentError.new("Saturation #{s} must be between 0% and 100%") if s < 0 || s > 100 - raise ArgumentError.new("Lightness #{l} must be between 0% and 100%") if l < 0 || l > 100 - - h = (h % 360) / 360.0 - s /= 100.0 - l /= 100.0 - - m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s - m1 = l * 2 - m2 - Color.new([hue_to_rgb(m1, m2, h + 1.0/3), - hue_to_rgb(m1, m2, h), - hue_to_rgb(m1, m2, h - 1.0/3)].map { |c| (c * 0xff).round }) - end - - # Converts a decimal number to a percentage. - # For example: - # - # percentage(100px / 50px) => 200% - # - # @param value [Number] The decimal number to convert to a percentage - # @return [Number] The percentage - # @raise [ArgumentError] If `value` isn't a unitless number - def percentage(value) - unless value.is_a?(Sass::Script::Number) && value.unitless? - raise ArgumentError.new("#{value.inspect} is not a unitless number") - end - Sass::Script::Number.new(value.value * 100, ['%']) - end - - # Rounds a number to the nearest whole number. - # For example: - # - # round(10.4px) => 10px - # round(10.6px) => 11px - # - # @param value [Number] The number - # @return [Number] The rounded number - # @raise [Sass::SyntaxError] if `value` isn't a number - def round(value) - numeric_transformation(value) {|n| n.round} - end - - # Rounds a number up to the nearest whole number. - # For example: - # - # ciel(10.4px) => 11px - # ciel(10.6px) => 11px - # - # @param value [Number] The number - # @return [Number] The rounded number - # @raise [Sass::SyntaxError] if `value` isn't a number - def ceil(value) - numeric_transformation(value) {|n| n.ceil} - end - - # Rounds down to the nearest whole number. - # For example: - # - # floor(10.4px) => 10px - # floor(10.6px) => 10px - # - # @param value [Number] The number - # @return [Number] The rounded number - # @raise [Sass::SyntaxError] if `value` isn't a number - def floor(value) - numeric_transformation(value) {|n| n.floor} - end - - # Finds the absolute value of a number. - # For example: - # - # abs(10px) => 10px - # abs(-10px) => 10px - # - # @param value [Number] The number - # @return [Number] The absolute value - # @raise [Sass::SyntaxError] if `value` isn't a number - def abs(value) - numeric_transformation(value) {|n| n.abs} - end - - private - - # This method implements the pattern of transforming a numeric value into - # another numeric value with the same units. - # It yields a number to a block to perform the operation and return a number - def numeric_transformation(value) - assert_type value, :Number - Sass::Script::Number.new(yield(value.value), value.numerator_units, value.denominator_units) - end - - def hue_to_rgb(m1, m2, h) - h += 1 if h < 0 - h -= 1 if h > 1 - return m1 + (m2 - m1) * h * 6 if h * 6 < 1 - return m2 if h * 2 < 1 - return m1 + (m2 - m1) * (2.0/3 - h) * 6 if h * 3 < 2 - return m1 - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/lexer.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/lexer.rb deleted file mode 100644 index 268331e2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/lexer.rb +++ /dev/null @@ -1,191 +0,0 @@ -require 'strscan' - -module Sass - module Script - # The lexical analyzer for SassScript. - # It takes a raw string and converts it to individual tokens - # that are easier to parse. - class Lexer - # A struct containing information about an individual token. - # - # `type`: \[{Symbol}\] - # : The type of token. - # - # `value`: \[{Object}\] - # : The Ruby object corresponding to the value of the token. - # - # `line`: \[{Fixnum}\] - # : The line of the source file on which the token appears. - # - # `offset`: \[{Fixnum}\] - # : The number of bytes into the line the SassScript token appeared. - Token = Struct.new(:type, :value, :line, :offset) - - # A hash from operator strings to the corresponding token types. - OPERATORS = { - '+' => :plus, - '-' => :minus, - '*' => :times, - '/' => :div, - '%' => :mod, - '=' => :single_eq, - '(' => :lparen, - ')' => :rparen, - ',' => :comma, - 'and' => :and, - 'or' => :or, - 'not' => :not, - '==' => :eq, - '!=' => :neq, - '>=' => :gte, - '<=' => :lte, - '>' => :gt, - '<' => :lt, - '#{' => :begin_interpolation, - '}' => :end_interpolation, - } - - # A list of operator strings ordered with longer names first - # so that `>` and `<` don't clobber `>=` and `<=`. - OP_NAMES = OPERATORS.keys.sort_by {|o| -o.size} - - # A hash of regular expressions that are used for tokenizing. - REGULAR_EXPRESSIONS = { - :whitespace => /\s*/, - :variable => /!(\w+)/, - :ident => /(\\.|[^\s\\+\-*\/%(),=!])+/, - :string_end => /((?:\\.|\#(?!\{)|[^"\\#])*)(?:"|(?=#\{))/, - :number => /(-)?(?:(\d*\.\d+)|(\d+))([a-zA-Z%]+)?/, - :color => /\##{"([0-9a-fA-F]{1,2})" * 3}|(#{Color::HTML4_COLORS.keys.join("|")})/, - :bool => /(true|false)\b/, - :op => %r{(#{Regexp.union(*OP_NAMES.map{|s| Regexp.new(Regexp.escape(s) + (s =~ /\w$/ ? '(?:\b|$)' : ''))})})} - } - - # @param str [String, StringScanner] The source text to lex - # @param line [Fixnum] The line on which the SassScript appears. - # Used for error reporting - # @param offset [Fixnum] The number of characters in on which the SassScript appears. - # Used for error reporting - def initialize(str, line, offset, filename) - @scanner = str.is_a?(StringScanner) ? str : StringScanner.new(str) - @line = line - @offset = offset - @filename = filename - @prev = nil - end - - # Moves the lexer forward one token. - # - # @return [Token] The token that was moved past - def next - @tok ||= read_token - @tok, tok = nil, @tok - @prev = tok - return tok - end - - # Returns the next token without moving the lexer forward. - # - # @return [Token] The next token - def peek - @tok ||= read_token - end - - # @return [Boolean] Whether or not there's more source text to lex. - def done? - whitespace unless after_interpolation? - @scanner.eos? && @tok.nil? - end - - private - - def read_token - return if done? - - value = token - unless value - raise SyntaxError.new("Syntax error in '#{@scanner.string}' at character #{current_position}.") - end - Token.new(value.first, value.last, @line, last_match_position) - end - - def whitespace - @scanner.scan(REGULAR_EXPRESSIONS[:whitespace]) - end - - def token - return string('') if after_interpolation? - variable || string || number || color || bool || op || ident - end - - def variable - return unless @scanner.scan(REGULAR_EXPRESSIONS[:variable]) - [:const, @scanner[1]] - end - - def ident - return unless s = @scanner.scan(REGULAR_EXPRESSIONS[:ident]) - [:ident, s.gsub(/\\(.)/, '\1')] - end - - def string(start_char = '"') - return unless @scanner.scan(/#{start_char}#{REGULAR_EXPRESSIONS[:string_end]}/) - [:string, Script::String.new(@scanner[1].gsub(/\\([^0-9a-f])/, '\1').gsub(/\\([0-9a-f]{1,4})/, "\\\\\\1"))] - end - - def begin_interpolation - @scanner.scan - end - - def number - return unless @scanner.scan(REGULAR_EXPRESSIONS[:number]) - value = @scanner[2] ? @scanner[2].to_f : @scanner[3].to_i - value = -value if @scanner[1] - [:number, Script::Number.new(value, Array(@scanner[4]))] - end - - def color - return unless @scanner.scan(REGULAR_EXPRESSIONS[:color]) - value = if @scanner[4] - color = Color::HTML4_COLORS[@scanner[4].downcase] - else - (1..3).map {|i| @scanner[i]}.map {|num| num.ljust(2, num).to_i(16)} - end - [:color, Script::Color.new(value)] - end - - def bool - return unless s = @scanner.scan(REGULAR_EXPRESSIONS[:bool]) - [:bool, Script::Bool.new(s == 'true')] - end - - def op - prev_chr = @scanner.string[@scanner.pos - 1].chr - return unless op = @scanner.scan(REGULAR_EXPRESSIONS[:op]) - if @prev && op == '-' && prev_chr !~ /\s/ && - [:bool, :ident, :const].include?(@prev.type) - warn(<] - attr_reader :numerator_units - - # A list of units in the denominator of the number. - # For example, `1px*em/in*cm` would return `["in", "cm"]` - # @return [Array] - attr_reader :denominator_units - - # The precision with which numbers will be printed to CSS files. - # For example, if this is `1000.0`, - # `3.1415926` will be printed as `3.142`. - PRECISION = 1000.0 - - # @param value [Numeric] The value of the number - # @param numerator_units [Array] See \{#numerator\_units} - # @param denominator_units [Array] See \{#denominator\_units} - def initialize(value, numerator_units = [], denominator_units = []) - super(value) - @numerator_units = numerator_units - @denominator_units = denominator_units - normalize! - end - - # The SassScript `+` operation. - # Its functionality depends on the type of its argument: - # - # {Number} - # : Adds the two numbers together, converting units if possible. - # - # {Color} - # : Adds this number to each of the RGB color channels. - # - # {Literal} - # : See {Literal#plus}. - # - # @param other [Literal] The right-hand side of the operator - # @return [Literal] The result of the operation - # @raise [Sass::UnitConversionError] if `other` is a number with incompatible units - def plus(other) - if other.is_a? Number - operate(other, :+) - elsif other.is_a?(Color) - other.plus(self) - else - super - end - end - - # The SassScript binary `-` operation (e.g. `!a - !b`). - # Its functionality depends on the type of its argument: - # - # {Number} - # : Subtracts this number from the other, converting units if possible. - # - # {Literal} - # : See {Literal#minus}. - # - # @param other [Literal] The right-hand side of the operator - # @return [Literal] The result of the operation - # @raise [Sass::UnitConversionError] if `other` is a number with incompatible units - def minus(other) - if other.is_a? Number - operate(other, :-) - else - super - end - end - - # The SassScript unary `-` operation (e.g. `-!a`). - # - # @return [Number] The negative value of this number - def unary_minus - Number.new(-value, numerator_units, denominator_units) - end - - # The SassScript `*` operation. - # Its functionality depends on the type of its argument: - # - # {Number} - # : Multiplies the two numbers together, converting units appropriately. - # - # {Color} - # : Multiplies each of the RGB color channels by this number. - # - # @param other [Number, Color] The right-hand side of the operator - # @return [Number, Color] The result of the operation - # @raise [NoMethodError] if `other` is an invalid type - def times(other) - if other.is_a? Number - self.operate(other, :*) - elsif other.is_a? Color - other.times(self) - else - raise NoMethodError.new(nil, :times) - end - end - - # The SassScript `/` operation. - # Its functionality depends on the type of its argument: - # - # {Number} - # : Divides this number by the other, converting units appropriately. - # - # {Literal} - # : See {Literal#div}. - # - # @param other [Literal] The right-hand side of the operator - # @return [Literal] The result of the operation - def div(other) - if other.is_a? Number - operate(other, :/) - else - super - end - end - - # The SassScript `%` operation. - # - # @param other [Number] The right-hand side of the operator - # @return [Number] This number modulo the other - # @raise [NoMethodError] if `other` is an invalid type - # @raise [Sass::UnitConversionError] if `other` has any units - def mod(other) - if other.is_a?(Number) - unless other.unitless? - raise Sass::UnitConversionError.new("Cannot modulo by a number with units: #{other.inspect}.") - end - operate(other, :%) - else - raise NoMethodError.new(nil, :mod) - end - end - - # The SassScript `==` operation. - # - # @param other [Literal] The right-hand side of the operator - # @return [Boolean] Whether this number is equal to the other object - def eq(other) - return Sass::Script::Bool.new(false) unless other.is_a?(Sass::Script::Number) - this = self - begin - if unitless? - this = this.coerce(other.numerator_units, other.denominator_units) - else - other = other.coerce(numerator_units, denominator_units) - end - rescue Sass::UnitConversionError - return Sass::Script::Bool.new(false) - end - - Sass::Script::Bool.new(this.value == other.value) - end - - # The SassScript `>` operation. - # - # @param other [Number] The right-hand side of the operator - # @return [Boolean] Whether this number is greater than the other - # @raise [NoMethodError] if `other` is an invalid type - def gt(other) - raise NoMethodError.new(nil, :gt) unless other.is_a?(Number) - operate(other, :>) - end - - # The SassScript `>=` operation. - # - # @param other [Number] The right-hand side of the operator - # @return [Boolean] Whether this number is greater than or equal to the other - # @raise [NoMethodError] if `other` is an invalid type - def gte(other) - raise NoMethodError.new(nil, :gte) unless other.is_a?(Number) - operate(other, :>=) - end - - # The SassScript `<` operation. - # - # @param other [Number] The right-hand side of the operator - # @return [Boolean] Whether this number is less than the other - # @raise [NoMethodError] if `other` is an invalid type - def lt(other) - raise NoMethodError.new(nil, :lt) unless other.is_a?(Number) - operate(other, :<) - end - - # The SassScript `<=` operation. - # - # @param other [Number] The right-hand side of the operator - # @return [Boolean] Whether this number is less than or equal to the other - # @raise [NoMethodError] if `other` is an invalid type - def lte(other) - raise NoMethodError.new(nil, :lte) unless other.is_a?(Number) - operate(other, :<=) - end - - # @return [String] The CSS representation of this number - # @raise [Sass::SyntaxError] if this number has units that can't be used in CSS - # (e.g. `px*in`) - def to_s - raise Sass::SyntaxError.new("#{inspect} isn't a valid CSS value.") unless legal_units? - inspect - end - - # Returns a readable representation of this number. - # - # This representation is valid CSS (and valid SassScript) - # as long as there is only one unit. - # - # @return [String] The representation - def inspect - value = - if self.value.is_a?(Float) && (self.value.infinite? || self.value.nan?) - self.value - elsif int? - self.value.to_i - else - (self.value * PRECISION).round / PRECISION - end - "#{value}#{unit_str}" - end - - # @return [Fixnum] The integer value of the number - # @raise [Sass::SyntaxError] if the number isn't an integer - def to_i - super unless int? - return value - end - - # @return [Boolean] Whether or not this number is an integer. - def int? - value % 1 == 0.0 - end - - # @return [Boolean] Whether or not this number has no units. - def unitless? - numerator_units.empty? && denominator_units.empty? - end - - # @return [Boolean] Whether or not this number has units that can be represented in CSS - # (that is, zero or one \{#numerator\_units}). - def legal_units? - (numerator_units.empty? || numerator_units.size == 1) && denominator_units.empty? - end - - # Returns this number converted to other units. - # The conversion takes into account the relationship between e.g. mm and cm, - # as well as between e.g. in and cm. - # - # If this number has no units, it will simply return itself - # with the given units. - # - # An incompatible coercion, e.g. between px and cm, will raise an error. - # - # @param num_units [Array] The numerator units to coerce this number into. - # See {\#numerator\_units} - # @param den_units [Array] The denominator units to coerce this number into. - # See {\#denominator\_units} - # @return [Number] The number with the new units - # @raise [Sass::UnitConversionError] if the given units are incompatible with the number's - # current units - def coerce(num_units, den_units) - Number.new(if unitless? - self.value - else - self.value * coercion_factor(self.numerator_units, num_units) / - coercion_factor(self.denominator_units, den_units) - end, num_units, den_units) - end - - protected - - def operate(other, operation) - this = self - if [:+, :-, :<=, :<, :>, :>=].include?(operation) - if unitless? - this = this.coerce(other.numerator_units, other.denominator_units) - else - other = other.coerce(numerator_units, denominator_units) - end - end - # avoid integer division - value = (:/ == operation) ? this.value.to_f : this.value - result = value.send(operation, other.value) - - if result.is_a?(Numeric) - Number.new(result, *compute_units(this, other, operation)) - else # Boolean op - Bool.new(result) - end - end - - def coercion_factor(from_units, to_units) - # get a list of unmatched units - from_units, to_units = sans_common_units(from_units, to_units) - - if from_units.size != to_units.size || !convertable?(from_units | to_units) - raise Sass::UnitConversionError.new("Incompatible units: '#{from_units.join('*')}' and '#{to_units.join('*')}'.") - end - - from_units.zip(to_units).inject(1) {|m,p| m * conversion_factor(p[0], p[1]) } - end - - def compute_units(this, other, operation) - case operation - when :* - [this.numerator_units + other.numerator_units, this.denominator_units + other.denominator_units] - when :/ - [this.numerator_units + other.denominator_units, this.denominator_units + other.numerator_units] - else - [this.numerator_units, this.denominator_units] - end - end - - def unit_str - rv = numerator_units.join("*") - if denominator_units.any? - rv << "/" - rv << denominator_units.join("*") - end - rv - end - - def normalize! - return if unitless? - @numerator_units, @denominator_units = sans_common_units(numerator_units, denominator_units) - - @denominator_units.each_with_index do |d, i| - if convertable?(d) && (u = @numerator_units.detect(&method(:convertable?))) - @value /= conversion_factor(d, u) - @denominator_units.delete_at(i) - @numerator_units.delete_at(@numerator_units.index(u)) - end - end - end - - # A hash of unit names to their index in the conversion table - CONVERTABLE_UNITS = {"in" => 0, "cm" => 1, "pc" => 2, "mm" => 3, "pt" => 4} - CONVERSION_TABLE = [[ 1, 2.54, 6, 25.4, 72 ], # in - [ nil, 1, 2.36220473, 10, 28.3464567], # cm - [ nil, nil, 1, 4.23333333, 12 ], # pc - [ nil, nil, nil, 1, 2.83464567], # mm - [ nil, nil, nil, nil, 1 ]] # pt - - def conversion_factor(from_unit, to_unit) - res = CONVERSION_TABLE[CONVERTABLE_UNITS[from_unit]][CONVERTABLE_UNITS[to_unit]] - return 1.0 / conversion_factor(to_unit, from_unit) if res.nil? - res - end - - def convertable?(units) - Array(units).all?(&CONVERTABLE_UNITS.method(:include?)) - end - - def sans_common_units(units1, units2) - units2 = units2.dup - # Can't just use -, because we want px*px to coerce properly to px*mm - return units1.map do |u| - next u unless j = units2.index(u) - units2.delete_at(j) - nil - end.compact, units2 - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/operation.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/operation.rb deleted file mode 100644 index f8b2f59f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/operation.rb +++ /dev/null @@ -1,45 +0,0 @@ -require 'set' -require 'sass/script/string' -require 'sass/script/number' -require 'sass/script/color' -require 'sass/script/functions' -require 'sass/script/unary_operation' - -module Sass::Script - # A SassScript parse node representing a binary operation, - # such as `!a + !b` or `"foo" + 1`. - class Operation < Node - # @param operand1 [Script::Node] The parse-tree node - # for the right-hand side of the operator - # @param operand2 [Script::Node] The parse-tree node - # for the left-hand side of the operator - # @param operator [Symbol] The operator to perform. - # This should be one of the binary operator names in {Lexer::OPERATORS} - def initialize(operand1, operand2, operator) - @operand1 = operand1 - @operand2 = operand2 - @operator = operator - end - - # @return [String] A human-readable s-expression representation of the operation - def inspect - "(#{@operator.inspect} #{@operand1.inspect} #{@operand2.inspect})" - end - - # Evaluates the operation. - # - # @param environment [Sass::Environment] The environment in which to evaluate the SassScript - # @return [Literal] The SassScript object that is the value of the operation - # @raise [Sass::SyntaxError] if the operation is undefined for the operands - def perform(environment) - literal1 = @operand1.perform(environment) - literal2 = @operand2.perform(environment) - begin - literal1.send(@operator, literal2) - rescue NoMethodError => e - raise e unless e.name.to_s == @operator.to_s - raise Sass::SyntaxError.new("Undefined operation: \"#{literal1} #{@operator} #{literal2}\".") - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/parser.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/parser.rb deleted file mode 100644 index bb6b3dcf..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/parser.rb +++ /dev/null @@ -1,222 +0,0 @@ -require 'sass/script/lexer' - -module Sass - module Script - # The parser for SassScript. - # It parses a string of code into a tree of {Script::Node}s. - class Parser - # @param str [String, StringScanner] The source text to parse - # @param line [Fixnum] The line on which the SassScript appears. - # Used for error reporting - # @param offset [Fixnum] The number of characters in on which the SassScript appears. - # Used for error reporting - # @param filename [String] The name of the file in which the SassScript appears. - # Used for error reporting - def initialize(str, line, offset, filename = nil) - @filename = filename - @lexer = Lexer.new(str, line, offset, filename) - end - - # Parses a SassScript expression within an interpolated segment (`#{}`). - # This means that it stops when it comes across an unmatched `}`, - # which signals the end of an interpolated segment, - # it returns rather than throwing an error. - # - # @return [Script::Node] The root node of the parse tree - # @raise [Sass::SyntaxError] if the expression isn't valid SassScript - def parse_interpolated - expr = assert_expr :expr - assert_tok :end_interpolation - expr - end - - # Parses a SassScript expression. - # - # @return [Script::Node] The root node of the parse tree - # @raise [Sass::SyntaxError] if the expression isn't valid SassScript - def parse - expr = assert_expr :expr - assert_done - expr - end - - # Parses the argument list for a mixin include. - # - # @return [Array] The root nodes of the arguments. - # @raise [Sass::SyntaxError] if the argument list isn't valid SassScript - def parse_mixin_include_arglist - args = [] - - if try_tok(:lparen) - args = arglist || args - assert_tok(:rparen) - end - assert_done - - args - end - - # Parses the argument list for a mixin definition. - # - # @return [Array] The root nodes of the arguments. - # @raise [Sass::SyntaxError] if the argument list isn't valid SassScript - def parse_mixin_definition_arglist - args = [] - - if try_tok(:lparen) - args = defn_arglist(false) || args - assert_tok(:rparen) - end - assert_done - - args - end - - # Parses a SassScript expression. - # - # @overload parse(str, line, offset, filename = nil) - # @return [Script::Node] The root node of the parse tree - # @see Parser#initialize - # @see Parser#parse - def self.parse(*args) - new(*args).parse - end - - class << self - private - - # Defines a simple left-associative production. - # name is the name of the production, - # sub is the name of the production beneath it, - # and ops is a list of operators for this precedence level - def production(name, sub, *ops) - class_eval < e - raise e unless e.name.to_s == operator.to_s - raise Sass::SyntaxError.new("Undefined unary operation: \"#{@operator} #{literal}\".") - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/variable.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/variable.rb deleted file mode 100644 index 74c28fe0..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/script/variable.rb +++ /dev/null @@ -1,31 +0,0 @@ -module Sass - module Script - # A SassScript parse node representing a variable. - class Variable < Node - # The name of the variable. - # - # @return [String] - attr_reader :name - - # @param name [String] See \{#name} - def initialize(name) - @name = name - end - - # @return [String] A string representation of the variable - def inspect - "!#{name}" - end - - # Evaluates the variable. - # - # @param environment [Sass::Environment] The environment in which to evaluate the SassScript - # @return [Literal] The SassScript object that is the value of the variable - # @raise [Sass::SyntaxError] if the variable is undefined - def perform(environment) - (val = environment.var(name)) && (return val) - raise SyntaxError.new("Undefined variable: \"!#{name}\".") - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/comment_node.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/comment_node.rb deleted file mode 100644 index 6ec6ae57..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/comment_node.rb +++ /dev/null @@ -1,84 +0,0 @@ -require 'sass/tree/node' - -module Sass::Tree - # A static node representing a Sass comment (silent or loud). - # - # @see Sass::Tree - class CommentNode < Node - # The lines of text nested beneath the comment. - # - # @return [Array] - attr_accessor :lines - - # The text on the same line as the comment starter. - # - # @return [String] - attr_accessor :value - - # Whether or not the comment is silent (that is, doesn't output to CSS). - # - # @return [Boolean] - attr_accessor :silent - - # @param value [String] See \{#value} - # @param silent [Boolean] See \{#silent} - def initialize(value, silent) - @lines = [] - @value = value[2..-1].strip - @silent = silent - super() - end - - # Compares the contents of two comments. - # - # @param other [Object] The object to compare with - # @return [Boolean] Whether or not this node and the other object - # are the same - def ==(other) - self.class == other.class && value == other.value && silent == other.silent && lines == other.lines - end - - # Computes the CSS for the comment. - # - # Returns `nil` if this is a silent comment - # or the current style doesn't render comments. - # - # @overload to_s(tabs = 0) - # @param tabs [Fixnum] The level of indentation for the CSS - # @return [String, nil] The resulting CSS - # @see #invisible? - def to_s(tabs = 0, _ = nil) - return if invisible? - spaces = ' ' * (tabs - 1) - - content = (value.split("\n") + lines.map {|l| l.text}) - return spaces + "/* */" if content.empty? - content.map! {|l| (l.empty? ? "" : " ") + l} - content.first.gsub!(/^ /, '') - content.last.gsub!(%r{ ?\*/ *$}, '') - - spaces + "/* " + content.join(style == :compact ? '' : "\n#{spaces} *") + " */" - end - - # Returns `true` if this is a silent comment - # or the current style doesn't render comments. - # - # @return [Boolean] - def invisible? - style == :compressed || @silent - end - - protected - - # Removes this node from the tree if it's a silent comment. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [Tree::Node, Array] The resulting static nodes - # @see Sass::Tree - def _perform(environment) - return [] if @silent - self - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/debug_node.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/debug_node.rb deleted file mode 100644 index 0ca7e4ec..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/debug_node.rb +++ /dev/null @@ -1,30 +0,0 @@ -module Sass - module Tree - # A dynamic node representing a Sass `@debug` statement. - # - # @see Sass::Tree - class DebugNode < Node - # @param expr [Script::Node] The expression to print - def initialize(expr) - @expr = expr - super() - end - - protected - - # Prints the expression to STDERR. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - def _perform(environment) - res = @expr.perform(environment) - if filename - STDERR.puts "#{filename}:#{line} DEBUG: #{res}" - else - STDERR.puts "Line #{line} DEBUG: #{res}" - end - [] - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/directive_node.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/directive_node.rb deleted file mode 100644 index 0034d5d0..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/directive_node.rb +++ /dev/null @@ -1,68 +0,0 @@ -module Sass::Tree - # A static node representing an unproccessed Sass `@`-directive. - # Directives known to Sass, like `@for` and `@debug`, - # are handled by their own nodes; - # only CSS directives like `@media` and `@font-face` become {DirectiveNode}s. - # - # `@import` is a bit of a weird case; - # it becomes an {ImportNode}. - # - # @see Sass::Tree - class DirectiveNode < Node - # The text of the directive, `@` and all. - # - # @return [String] - attr_accessor :value - - # @param value [String] See \{#value} - def initialize(value) - @value = value - super() - end - - # Computes the CSS for the directive. - # - # @param tabs [Fixnum] The level of indentation for the CSS - # @return [String] The resulting CSS - def to_s(tabs) - if children.empty? - value + ";" - else - result = if style == :compressed - "#{value}{" - else - "#{' ' * (tabs - 1)}#{value} {" + (style == :compact ? ' ' : "\n") - end - was_prop = false - first = true - children.each do |child| - next if child.invisible? - if style == :compact - if child.is_a?(PropNode) - result << "#{child.to_s(first || was_prop ? 1 : tabs + 1)} " - else - if was_prop - result[-1] = "\n" - end - rendered = child.to_s(tabs + 1) - rendered.lstrip! if first - result << rendered - end - was_prop = child.is_a?(PropNode) - first = false - elsif style == :compressed - result << (was_prop ? ";#{child.to_s(1)}" : child.to_s(1)) - was_prop = child.is_a?(PropNode) - else - result << child.to_s(tabs + 1) + "\n" - end - end - result.rstrip + if style == :compressed - "}" - else - (style == :expanded ? "\n" : " ") + "}\n" - end - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/for_node.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/for_node.rb deleted file mode 100644 index 7d5a655e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/for_node.rb +++ /dev/null @@ -1,48 +0,0 @@ -require 'sass/tree/node' - -module Sass::Tree - # A dynamic node representing a Sass `@for` loop. - # - # @see Sass::Tree - class ForNode < Node - # @param var [String] The name of the loop variable - # @param from [Script::Node] The parse tree for the initial expression - # @param to [Script::Node] The parse tree for the final expression - # @param exclusive [Boolean] Whether to include `to` in the loop - # or stop just before - def initialize(var, from, to, exclusive) - @var = var - @from = from - @to = to - @exclusive = exclusive - super() - end - - protected - - # Runs the child nodes once for each time through the loop, - # varying the variable each time. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [Array] The resulting static nodes - # @see Sass::Tree - def _perform(environment) - from = @from.perform(environment) - to = @to.perform(environment) - from.assert_int! - to.assert_int! - - to = to.coerce(from.numerator_units, from.denominator_units) - range = Range.new(from.to_i, to.to_i, @exclusive) - - children = [] - environment = Sass::Environment.new(environment) - range.each do |i| - environment.set_local_var(@var, Sass::Script::Number.new(i, from.numerator_units, from.denominator_units)) - children += perform_children(environment) - end - children - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/if_node.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/if_node.rb deleted file mode 100644 index 2fee7ab8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/if_node.rb +++ /dev/null @@ -1,54 +0,0 @@ -require 'sass/tree/node' - -module Sass::Tree - # A dynamic node representing a Sass `@if` statement. - # - # {IfNode}s are a little odd, in that they also represent `@else` and `@else if`s. - # This is done as a linked list: - # each {IfNode} has a link (\{#else}) to the next {IfNode}. - # - # @see Sass::Tree - class IfNode < Node - # The next {IfNode} in the if-else list, or `nil`. - # - # @return [IfNode] - attr_accessor :else - - # @param expr [Script::Expr] The conditional expression. - # If this is nil, this is an `@else` node, not an `@else if` - def initialize(expr) - @expr = expr - @last_else = self - super() - end - - # Append an `@else` node to the end of the list. - # - # @param node [IfNode] The `@else` node to append - def add_else(node) - @last_else.else = node - @last_else = node - end - - def options=(options) - super - self.else.options = options if self.else - end - - protected - - # Runs the child nodes if the conditional expression is true; - # otherwise, tries the \{#else} nodes. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [Array] The resulting static nodes - # @see Sass::Tree - def _perform(environment) - environment = Sass::Environment.new(environment) - return perform_children(environment) if @expr.nil? || @expr.perform(environment).to_bool - return @else.perform(environment) if @else - [] - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/import_node.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/import_node.rb deleted file mode 100644 index 4ff03415..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/import_node.rb +++ /dev/null @@ -1,65 +0,0 @@ -module Sass - module Tree - # A static node that wraps the {Sass::Tree} for an `@import`ed file. - # It doesn't have a functional purpose other than to add the `@import`ed file - # to the backtrace if an error occurs. - class ImportNode < Node - # @param imported_filename [String] The name of the imported file - def initialize(imported_filename) - @imported_filename = imported_filename - super() - end - - # Computes the CSS for the imported file. - # - # @param args [Array] Ignored - def to_s(*args) - @to_s ||= (style == :compressed ? super().strip : super()) - rescue Sass::SyntaxError => e - e.add_backtrace_entry(@filename) - raise e - end - - def invisible?; to_s.empty?; end - - protected - - # Parses the imported file - # and runs the dynamic Sass for it. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - def perform!(environment) - return unless full_filename = import - self.children = Sass::Files.tree_for(full_filename, @options).children - self.children = perform_children(environment) - rescue Sass::SyntaxError => e - e.add_backtrace_entry(@filename) - raise e - end - - private - - def import_paths - paths = (@options[:load_paths] || []).dup - paths.unshift(File.dirname(@options[:filename])) if @options[:filename] - paths - end - - def import - begin - full_filename = Sass::Files.find_file_to_import(@imported_filename, import_paths) - rescue Exception => e - raise SyntaxError.new(e.message, self.line) - end - - if full_filename =~ /\.css$/ - @to_s = "@import url(#{full_filename});" - return false - end - - return full_filename - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/mixin_def_node.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/mixin_def_node.rb deleted file mode 100644 index 77d0a2a4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/mixin_def_node.rb +++ /dev/null @@ -1,29 +0,0 @@ -module Sass - module Tree - # A dynamic node representing a mixin definition. - # - # @see Sass::Tree - class MixinDefNode < Node - # @param name [String] The mixin name - # @param args [Array<(Script::Node, Script::Node)>] The arguments for the mixin. - # Each element is a tuple containing the variable for argument - # and the parse tree for the default value of the argument - def initialize(name, args) - @name = name - @args = args - super() - end - - protected - - # Loads the mixin into the environment. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - def _perform(environment) - environment.set_mixin(@name, Sass::Mixin.new(@name, @args, environment, children)) - [] - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/mixin_node.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/mixin_node.rb deleted file mode 100644 index fea53911..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/mixin_node.rb +++ /dev/null @@ -1,48 +0,0 @@ -require 'sass/tree/node' - -module Sass::Tree - # A dynamic node representing a mixin include. - # - # @see Sass::Tree - class MixinNode < Node - # @param name [String] The name of the mixin - # @param args [Array] The arguments to the mixin - def initialize(name, args) - @name = name - @args = args - super() - end - - protected - - # Runs the mixin. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [Array] The resulting static nodes - # @raise [Sass::SyntaxError] if there is no mixin with the given name - # @raise [Sass::SyntaxError] if an incorrect number of arguments was passed - # @see Sass::Tree - def _perform(environment) - raise Sass::SyntaxError.new("Undefined mixin '#{@name}'.", @line) unless mixin = environment.mixin(@name) - - raise Sass::SyntaxError.new(<] - attr_accessor :children - - # The line of the document on which this node appeared. - # - # @return [Fixnum] - attr_accessor :line - - # The name of the document on which this node appeared. - # - # @return [String] - attr_writer :filename - - # The options hash for the node. - # See {file:SASS_REFERENCE.md#sass_options the Sass options documentation}. - # - # @return [{Symbol => Object}] - attr_reader :options - - def initialize - @children = [] - end - - # Sets the options hash for the node and all its children. - # - # @param options [{Symbol => Object}] The options - # @see #options - def options=(options) - children.each {|c| c.options = options} - @options = options - end - - # The name of the document on which this node appeared. - # - # @return [String] - def filename - @filename || (@options && @options[:filename]) - end - - # Appends a child to the node. - # - # @param child [Tree::Node] The child node - # @raise [Sass::SyntaxError] if `child` is invalid - # @see #invalid_child? - def <<(child) - if msg = invalid_child?(child) - raise Sass::SyntaxError.new(msg, child.line) - end - @children << child - end - - # Return the last child node. - # - # We need this because {Tree::Node} duck types as an Array for {Sass::Engine}. - # - # @return [Tree::Node] The last child node - def last - children.last - end - - # Compares this node and another object (only other {Tree::Node}s will be equal). - # This does a structural comparison; - # if the contents of the nodes and all the child nodes are equivalent, - # then the nodes are as well. - # - # Only static nodes need to override this. - # - # @param other [Object] The object to compare with - # @return [Boolean] Whether or not this node and the other object - # are the same - # @see Sass::Tree - def ==(other) - self.class == other.class && other.children == children - end - - # Runs the dynamic Sass code *and* computes the CSS for the tree. - # - # @see #perform - # @see #to_s - def render - perform(Environment.new).to_s - end - - # True if \{#to\_s} will return `nil`; - # that is, if the node shouldn't be rendered. - # Should only be called in a static tree. - # - # @return [Boolean] - def invisible?; false; end - - # Computes the CSS corresponding to this Sass tree. - # - # Only static-node subclasses need to implement \{#to\_s}. - # - # This may return `nil`, but it will only do so if \{#invisible?} is true. - # - # @return [String, nil] The resulting CSS - # @raise [Sass::SyntaxError] if some element of the tree is invalid - # @see Sass::Tree - def to_s - result = String.new - children.each do |child| - if child.is_a? PropNode - message = "Properties aren't allowed at the root of a document." + - child.pseudo_class_selector_message - raise Sass::SyntaxError.new(message, child.line) - else - next if child.invisible? - child_str = child.to_s(1) - result << child_str + (style == :compressed ? '' : "\n") - end - end - result.rstrip! - return "" if result.empty? - return result + "\n" - rescue Sass::SyntaxError => e; e.add_metadata(filename, line) - end - - # Runs the dynamic Sass code: - # mixins, variables, control directives, and so forth. - # This doesn't modify this node or any of its children. - # - # \{#perform} shouldn't be overridden directly; - # if you want to return a new node (or list of nodes), - # override \{#\_perform}; - # if you want to destructively modify this node, - # override \{#perform!}. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [Tree::Node] The resulting tree of static nodes - # @raise [Sass::SyntaxError] if some element of the tree is invalid - # @see Sass::Tree - def perform(environment) - environment.options = @options if self.class == Tree::Node - _perform(environment) - rescue Sass::SyntaxError => e; e.add_metadata(filename, line) - end - - # The output style. See {file:SASS_REFERENCE.md#sass_options the Sass options documentation}. - # - # @return [Symbol] - def style - @options[:style] - end - - protected - - # Runs any dynamic Sass code in this particular node. - # This doesn't modify this node or any of its children. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [Tree::Node, Array] The resulting static nodes - # @see #perform - # @see Sass::Tree - def _perform(environment) - node = dup - node.perform!(environment) - node - end - - # Destructively runs dynamic Sass code in this particular node. - # This *does* modify this node, - # but will be run non-destructively by \{#\_perform\}. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @see #perform - def perform!(environment) - self.children = perform_children(Environment.new(environment)) - end - - # Non-destructively runs \{#perform} on all children of the current node. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [Array] The resulting static nodes - def perform_children(environment) - children.map {|c| c.perform(environment)}.flatten - end - - # Replaces SassScript in a chunk of text (via `#{}`) - # with the resulting value. - # - # @param text [String] The text to interpolate - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [String] The interpolated text - def interpolate(text, environment) - res = '' - rest = Haml::Shared.handle_interpolation text do |scan| - escapes = scan[2].size - res << scan.matched[0...-2 - escapes] - if escapes % 2 == 1 - res << "\\" * (escapes - 1) << '#{' - else - res << "\\" * [0, escapes - 1].max - res << Script::Parser.new(scan, line, scan.pos - scan.matched_size, filename). - parse_interpolated.perform(environment).to_s - end - end - res + rest - end - - # @see Haml::Shared.balance - # @raise [Sass::SyntaxError] if the brackets aren't balanced - def balance(*args) - res = Haml::Shared.balance(*args) - return res if res - raise Sass::SyntaxError.new("Unbalanced brackets.", line) - end - - # Returns an error message if the given child node is invalid, - # and false otherwise. - # - # By default, all child nodes are valid. - # This is expected to be overriden by subclasses - # for which some children are invalid. - # - # @param child [Tree::Node] A potential child node - # @return [Boolean, String] Whether or not the child node is valid, - # as well as the error message to display if it is invalid - def invalid_child?(child) - false - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/prop_node.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/prop_node.rb deleted file mode 100644 index a392b7b8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/prop_node.rb +++ /dev/null @@ -1,121 +0,0 @@ -module Sass::Tree - # A static node reprenting a CSS property. - # - # @see Sass::Tree - class PropNode < Node - # The name of the property. - # - # @return [String] - attr_accessor :name - - # The value of the property, - # either a plain string or a SassScript parse tree. - # - # @return [String, Script::Node] - attr_accessor :value - - # @param name [String] See \{#name} - # @param value [String] See \{#value} - # @param prop_syntax [Symbol] `:new` if this property uses `a: b`-style syntax, - # `:old` if it uses `:a b`-style syntax - def initialize(name, value, prop_syntax) - @name = name - @value = value - @prop_syntax = prop_syntax - super() - end - - # Compares the names and values of two properties. - # - # @param other [Object] The object to compare with - # @return [Boolean] Whether or not this node and the other object - # are the same - def ==(other) - self.class == other.class && name == other.name && value == other.value && super - end - - # Computes the CSS for the property. - # - # @param tabs [Fixnum] The level of indentation for the CSS - # @param parent_name [String] The name of the parent property (e.g. `text`) or nil - # @return [String] The resulting CSS - # @raise [Sass::SyntaxError] if the property uses invalid syntax - def to_s(tabs, parent_name = nil) - if @options[:property_syntax] == :old && @prop_syntax == :new - raise Sass::SyntaxError.new("Illegal property syntax: can't use new syntax when :property_syntax => :old is set.", @line) - elsif @options[:property_syntax] == :new && @prop_syntax == :old - raise Sass::SyntaxError.new("Illegal property syntax: can't use old syntax when :property_syntax => :new is set.", @line) - end - - if value[-1] == ?; - raise Sass::SyntaxError.new("Invalid property: #{declaration.dump} (no \";\" required at end-of-line).", @line) - end - real_name = name - real_name = "#{parent_name}-#{real_name}" if parent_name - - if value.empty? && children.empty? - message = "Invalid property: #{declaration.dump} (no value)." + - pseudo_class_selector_message - raise Sass::SyntaxError.new(message, @line) - end - - join_string = case style - when :compact; ' ' - when :compressed; '' - else "\n" - end - spaces = ' ' * (tabs - 1) - to_return = '' - if !value.empty? - to_return << "#{spaces}#{real_name}:#{style == :compressed ? '' : ' '}#{value};#{join_string}" - end - - children.each do |kid| - next if kid.invisible? - to_return << kid.to_s(tabs, real_name) << join_string - end - - (style == :compressed && parent_name) ? to_return : to_return[0...-1] - end - - # Returns a appropriate message indicating how to escape pseudo-class selectors. - # This only applies for old-style properties with no value, - # so returns the empty string if this is new-style. - # - # @return [String] The message - def pseudo_class_selector_message - return "" if @prop_syntax == :new || !value.empty? - "\nIf #{declaration.dump} should be a selector, use \"\\#{declaration}\" instead." - end - - protected - - # Runs any SassScript that may be embedded in the property. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - def perform!(environment) - @name = interpolate(@name, environment) - @value = @value.is_a?(String) ? interpolate(@value, environment) : @value.perform(environment).to_s - super - end - - # Returns an error message if the given child node is invalid, - # and false otherwise. - # - # {PropNode} only allows other {PropNode}s and {CommentNode}s as children. - # @param child [Tree::Node] A potential child node - # @return [String] An error message if the child is invalid, or nil otherwise - def invalid_child?(child) - if !child.is_a?(PropNode) && !child.is_a?(CommentNode) - "Illegal nesting: Only properties may be nested beneath properties." - end - end - - private - - def declaration - (@prop_syntax == :new ? "#{name}: #{value}" : ":#{name} #{value}").strip - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/rule_node.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/rule_node.rb deleted file mode 100644 index 825c7900..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/rule_node.rb +++ /dev/null @@ -1,223 +0,0 @@ -require 'pathname' - -module Sass::Tree - # A static node reprenting a CSS rule. - # - # @see Sass::Tree - class RuleNode < Node - # The character used to include the parent selector - PARENT = '&' - - # The CSS selectors for this rule. - # Each string is a selector line, and the lines are meant to be separated by commas. - # For example, - # - # foo, bar, baz, - # bip, bop, bup - # - # would be - # - # ["foo, bar, baz", - # "bip, bop, bup"] - # - # @return [Array] - attr_accessor :rules - - # The CSS selectors for this rule, - # parsed for commas and parent-references. - # It's only set once {Tree::Node#perform} has been called. - # - # It's an array of arrays of arrays. - # The first level of arrays represents distinct lines in the Sass file; - # the second level represents comma-separated selectors; - # the third represents structure within those selectors, - # currently only parent-refs (represented by `:parent`). - # For example, - # - # &.foo, bar, baz, - # bip, &.bop, bup - # - # would be - # - # [[[:parent, "foo"], ["bar"], ["baz"]], - # [["bip"], [:parent, "bop"], ["bup"]]] - # - # @return [Array>>] - attr_accessor :parsed_rules - - # @param rule [String] The first CSS rule. See \{#rules} - def initialize(rule) - @rules = [rule] - super() - end - - # Compares the contents of two rules. - # - # @param other [Object] The object to compare with - # @return [Boolean] Whether or not this node and the other object - # are the same - def ==(other) - self.class == other.class && rules == other.rules && super - end - - # Adds another {RuleNode}'s rules to this one's. - # - # @param node [RuleNode] The other node - def add_rules(node) - @rules += node.rules - end - - # @return [Boolean] Whether or not this rule is continued on the next line - def continued? - @rules.last[-1] == ?, - end - - # Computes the CSS for the rule. - # - # @param tabs [Fixnum] The level of indentation for the CSS - # @param super_rules [Array>] The rules for the parent node - # (see \{#rules}), or `nil` if there are no parents - # @return [String] The resulting CSS - # @raise [Sass::SyntaxError] if the rule has no parents but uses `&` - def to_s(tabs, super_rules = nil) - resolved_rules = resolve_parent_refs(super_rules) - - properties = [] - sub_rules = [] - - rule_separator = style == :compressed ? ',' : ', ' - line_separator = [:nested, :expanded].include?(style) ? ",\n" : rule_separator - rule_indent = ' ' * (tabs - 1) - per_rule_indent, total_indent = [:nested, :expanded].include?(style) ? [rule_indent, ''] : ['', rule_indent] - - total_rule = total_indent + resolved_rules.map do |line| - per_rule_indent + line.join(rule_separator) - end.join(line_separator) - - children.each do |child| - next if child.invisible? - if child.is_a? RuleNode - sub_rules << child - else - properties << child - end - end - - to_return = '' - if !properties.empty? - old_spaces = ' ' * (tabs - 1) - spaces = ' ' * tabs - if @options[:line_comments] && style != :compressed - to_return << "#{old_spaces}/* line #{line}" - - if filename - relative_filename = if @options[:css_filename] - begin - Pathname.new(filename).relative_path_from( - Pathname.new(File.dirname(@options[:css_filename]))).to_s - rescue ArgumentError - nil - end - end - relative_filename ||= filename - to_return << ", #{relative_filename}" - end - - to_return << " */\n" - end - - if style == :compact - properties = properties.map { |a| a.to_s(1) }.select{|a| a && a.length > 0}.join(' ') - to_return << "#{total_rule} { #{properties} }\n" - elsif style == :compressed - properties = properties.map { |a| a.to_s(1) }.select{|a| a && a.length > 0}.join(';') - to_return << "#{total_rule}{#{properties}}" - else - properties = properties.map { |a| a.to_s(tabs + 1) }.select{|a| a && a.length > 0}.join("\n") - end_props = (style == :expanded ? "\n" + old_spaces : ' ') - to_return << "#{total_rule} {\n#{properties}#{end_props}}\n" - end - end - - tabs += 1 unless properties.empty? || style != :nested - sub_rules.each do |sub| - to_return << sub.to_s(tabs, resolved_rules) - end - - to_return - end - - protected - - # Runs any SassScript that may be embedded in the rule, - # and parses the selectors for commas. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - def perform!(environment) - @parsed_rules = @rules.map {|r| parse_selector(interpolate(r, environment))} - super - end - - private - - def resolve_parent_refs(super_rules) - if super_rules.nil? - return @parsed_rules.map do |line| - line.map do |rule| - if rule.include?(:parent) - raise Sass::SyntaxError.new("Base-level rules cannot contain the parent-selector-referencing character '#{PARENT}'.", self.line) - end - - rule.join - end.compact - end - end - - new_rules = [] - super_rules.each do |super_line| - @parsed_rules.each do |line| - new_rules << [] - - super_line.each do |super_rule| - line.each do |rule| - rule = [:parent, " ", *rule] unless rule.include?(:parent) - - new_rules.last << rule.map do |segment| - next segment unless segment == :parent - super_rule - end.join - end - end - end - end - new_rules - end - - def parse_selector(text) - scanner = StringScanner.new(text) - rules = [[]] - - while scanner.rest? - rules.last << scanner.scan(/[^",&]*/) - case scanner.scan(/./) - when '&'; rules.last << :parent - when ',' - scanner.scan(/\s*/) - rules << [] if scanner.rest? - when '"' - rules.last << '"' << scanner.scan(/([^"\\]|\\.)*/) - # We don't want to enforce that strings are closed, - # but we do want to consume quotes or trailing backslashes. - rules.last << scanner.scan(/./) if scanner.rest? - end - end - - rules.map! do |l| - Haml::Util.merge_adjacent_strings(l).reject {|r| r.is_a?(String) && r.empty?} - end - - rules - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/variable_node.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/variable_node.rb deleted file mode 100644 index 1d03fac3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/variable_node.rb +++ /dev/null @@ -1,34 +0,0 @@ -module Sass - module Tree - # A dynamic node representing a variable definition. - # - # @see Sass::Tree - class VariableNode < Node - # @param name [String] The name of the variable - # @param expr [Script::Node] The parse tree for the initial variable value - # @param guarded [Boolean] Whether this is a guarded variable assignment (`||=`) - def initialize(name, expr, guarded) - @name = name - @expr = expr - @guarded = guarded - super() - end - - protected - - # Loads the new variable value into the environment. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - def _perform(environment) - if @guarded && environment.var(@name).nil? - environment.set_var(@name, @expr.perform(environment)) - elsif !@guarded - environment.set_var(@name, @expr.perform(environment)) - end - - [] - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/while_node.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/while_node.rb deleted file mode 100644 index ebc18cde..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/lib/sass/tree/while_node.rb +++ /dev/null @@ -1,31 +0,0 @@ -require 'sass/tree/node' - -module Sass::Tree - # A dynamic node representing a Sass `@while` loop. - # - # @see Sass::Tree - class WhileNode < Node - # @param expr [Script::Node] The parse tree for the continue expression - def initialize(expr) - @expr = expr - super() - end - - protected - - # Runs the child nodes until the continue expression becomes false. - # - # @param environment [Sass::Environment] The lexical environment containing - # variable and mixin values - # @return [Array] The resulting static nodes - # @see Sass::Tree - def _perform(environment) - children = [] - new_environment = Sass::Environment.new(environment) - while @expr.perform(environment).to_bool - children += perform_children(new_environment) - end - children - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/rails/init.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/rails/init.rb deleted file mode 100644 index 13d5baa3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/rails/init.rb +++ /dev/null @@ -1 +0,0 @@ -Kernel.load File.join(File.dirname(__FILE__), '..', 'init.rb') diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/benchmark.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/benchmark.rb deleted file mode 100755 index de9ed36e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/benchmark.rb +++ /dev/null @@ -1,99 +0,0 @@ -#!/usr/bin/env ruby - -times = (ARGV.first || 1000).to_i - -if times == 0 # Invalid parameter - puts <=2.1.0 - base = ActionView::Base.new - base.finder.append_view_path(File.dirname(__FILE__)) - base -end - -def render(view, file) - view.render :file => file -end - -RBench.run(times) do - column :haml, :title => "Haml" - column :haml_ugly, :title => "Haml :ugly" - column :erb, :title => "ERB" - column :erubis, :title => "Erubis" - - template_name = 'standard' - directory = File.dirname(__FILE__) + '/haml' - haml_template = File.read("#{directory}/templates/#{template_name}.haml") - erb_template = File.read("#{directory}/rhtml/#{template_name}.rhtml") - markaby_template = File.read("#{directory}/markaby/#{template_name}.mab") - - report "Cached" do - obj = Object.new - - Haml::Engine.new(haml_template).def_method(obj, :haml) - Haml::Engine.new(haml_template, :ugly => true).def_method(obj, :haml_ugly) - Erubis::Eruby.new(erb_template).def_method(obj, :erubis) - obj.instance_eval("def erb; #{ERB.new(erb_template, nil, '-').src}; end") - - haml { obj.haml } - haml_ugly { obj.haml_ugly } - erb { obj.erb } - erubis { obj.erubis } - end - - report "ActionView" do - @base = view - - @base.unmemoize_all - Haml::Template.options[:ugly] = false - # To cache the template - render @base, 'haml/templates/standard' - render @base, 'haml/rhtml/standard' - - haml { render @base, 'haml/templates/standard' } - erb { render @base, 'haml/rhtml/standard' } - - Haml::Template.options[:ugly] = true - render @base, 'haml/templates/standard_ugly' - haml_ugly { render @base, 'haml/templates/standard_ugly' } - end - - report "ActionView with deep partials" do - @base = view - - @base.unmemoize_all - Haml::Template.options[:ugly] = false - # To cache the template - render @base, 'haml/templates/action_view' - render @base, 'haml/rhtml/action_view' - - haml { render @base, 'haml/templates/action_view' } - erb { render @base, 'haml/rhtml/action_view' } - - Haml::Template.options[:ugly] = true - render @base, 'haml/templates/action_view_ugly' - haml_ugly { render @base, 'haml/templates/action_view_ugly' } - end -end - -RBench.run(times) do - sass_template = File.read("#{File.dirname(__FILE__)}/sass/templates/complex.sass") - - report("Sass") { Sass::Engine.new(sass_template).render } -end diff --git a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/engine_test.rb b/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/engine_test.rb deleted file mode 100644 index a097845c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.8/gems/haml-2.2.17/test/haml/engine_test.rb +++ /dev/null @@ -1,1251 +0,0 @@ -#!/usr/bin/env ruby -# -*- coding: utf-8 -*- -require File.dirname(__FILE__) + '/../test_helper' - -class EngineTest < Test::Unit::TestCase - # A map of erroneous Haml documents to the error messages they should produce. - # The error messages may be arrays; - # if so, the second element should be the line number that should be reported for the error. - # If this isn't provided, the tests will assume the line number should be the last line of the document. - EXCEPTION_MAP = { - "!!!\n a" => "Illegal nesting: nesting within a header command is illegal.", - "a\n b" => "Illegal nesting: nesting within plain text is illegal.", - "/ a\n b" => "Illegal nesting: nesting within a tag that already has content is illegal.", - "% a" => 'Invalid tag: "% a".', - "%p a\n b" => "Illegal nesting: content can't be both given on the same line as %p and nested within it.", - "%p=" => "There's no Ruby code for = to evaluate.", - "%p~" => "There's no Ruby code for ~ to evaluate.", - "~" => "There's no Ruby code for ~ to evaluate.", - "=" => "There's no Ruby code for = to evaluate.", - "%p/\n a" => "Illegal nesting: nesting within a self-closing tag is illegal.", - ":a\n b" => ['Filter "a" is not defined.', 1], - ":a= b" => 'Invalid filter name ":a= b".', - "." => "Illegal element: classes and ids must have values.", - ".#" => "Illegal element: classes and ids must have values.", - ".{} a" => "Illegal element: classes and ids must have values.", - ".() a" => "Illegal element: classes and ids must have values.", - ".= a" => "Illegal element: classes and ids must have values.", - "%p..a" => "Illegal element: classes and ids must have values.", - "%a/ b" => "Self-closing tags can't have content.", - "%p{:a => 'b',\n:c => 'd'}/ e" => ["Self-closing tags can't have content.", 2], - "%p{:a => 'b',\n:c => 'd'}=" => ["There's no Ruby code for = to evaluate.", 2], - "%p.{:a => 'b',\n:c => 'd'} e" => ["Illegal element: classes and ids must have values.", 1], - "%p{:a => 'b',\n:c => 'd',\n:e => 'f'}\n%p/ a" => ["Self-closing tags can't have content.", 4], - "%p{:a => 'b',\n:c => 'd',\n:e => 'f'}\n- raise 'foo'" => ["foo", 4], - "%p{:a => 'b',\n:c => raise('foo'),\n:e => 'f'}" => ["foo", 2], - "%p{:a => 'b',\n:c => 'd',\n:e => raise('foo')}" => ["foo", 3], - " %p foo" => "Indenting at the beginning of the document is illegal.", - " %p foo" => "Indenting at the beginning of the document is illegal.", - "- end" => "You don't need to use \"- end\" in Haml. Use indentation instead:\n- if foo?\n %strong Foo!\n- else\n Not foo.", - " \n\t\n %p foo" => ["Indenting at the beginning of the document is illegal.", 3], - "\n\n %p foo" => ["Indenting at the beginning of the document is illegal.", 3], - "%p\n foo\n foo" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 3], - "%p\n foo\n%p\n foo" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 4], - "%p\n\t\tfoo\n\tfoo" => ["Inconsistent indentation: 1 tab was used for indentation, but the rest of the document was indented using 2 tabs.", 3], - "%p\n foo\n foo" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 3], - "%p\n foo\n %p\n bar" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 4], - "%p\n :plain\n bar\n \t baz" => ['Inconsistent indentation: " \t " was used for indentation, but the rest of the document was indented using 2 spaces.', 4], - "%p\n foo\n%p\n bar" => ["The line was indented 2 levels deeper than the previous line.", 4], - "%p\n foo\n %p\n bar" => ["The line was indented 3 levels deeper than the previous line.", 4], - "%p\n \tfoo" => ["Indentation can't use both tabs and spaces.", 2], - "%p(" => "Invalid attribute list: \"(\".", - "%p(foo=\nbar)" => ["Invalid attribute list: \"(foo=\".", 1], - "%p(foo=)" => "Invalid attribute list: \"(foo=)\".", - "%p(foo 'bar')" => "Invalid attribute list: \"(foo 'bar')\".", - "%p(foo 'bar'\nbaz='bang')" => ["Invalid attribute list: \"(foo 'bar'\".", 1], - "%p(foo='bar'\nbaz 'bang'\nbip='bop')" => ["Invalid attribute list: \"(foo='bar' baz 'bang'\".", 2], - "%p{:foo => 'bar' :bar => 'baz'}" => :compile, - "%p{:foo => }" => :compile, - "%p{=> 'bar'}" => :compile, - "%p{:foo => 'bar}" => :compile, - "%p{'foo => 'bar'}" => :compile, - "%p{:foo => 'bar\"}" => :compile, - - # Regression tests - "- raise 'foo'\n\n\n\nbar" => ["foo", 1], - "= 'foo'\n-raise 'foo'" => ["foo", 2], - "\n\n\n- raise 'foo'" => ["foo", 4], - "%p foo |\n bar |\n baz |\nbop\n- raise 'foo'" => ["foo", 5], - "foo\n\n\n bar" => ["Illegal nesting: nesting within plain text is illegal.", 4], - "%p/\n\n bar" => ["Illegal nesting: nesting within a self-closing tag is illegal.", 3], - "%p foo\n\n bar" => ["Illegal nesting: content can't be both given on the same line as %p and nested within it.", 3], - "/ foo\n\n bar" => ["Illegal nesting: nesting within a tag that already has content is illegal.", 3], - "!!!\n\n bar" => ["Illegal nesting: nesting within a header command is illegal.", 3], - "foo\n:ruby\n 1\n 2\n 3\n- raise 'foo'" => ["foo", 6], - "= raise 'foo'\nfoo\nbar\nbaz\nbang" => ["foo", 1], - } - - User = Struct.new('User', :id) - - def render(text, options = {}, &block) - scope = options.delete(:scope) || Object.new - locals = options.delete(:locals) || {} - engine(text, options).to_html(scope, locals, &block) - end - - def engine(text, options = {}) - unless options[:filename] - # use caller method name as fake filename. useful for debugging - i = -1 - caller[i+=1] =~ /`(.+?)'/ until $1 and $1.index('test_') == 0 - options[:filename] = "(#{$1})" - end - Haml::Engine.new(text, options) - end - - def test_empty_render - assert_equal "", render("") - end - - def test_flexible_tabulation - assert_equal("

    \n foo\n

    \n\n bar\n \n baz\n \n\n", - render("%p\n foo\n%q\n bar\n %a\n baz")) - assert_equal("

    \n foo\n

    \n\n bar\n \n baz\n \n\n", - render("%p\n\tfoo\n%q\n\tbar\n\t%a\n\t\tbaz")) - assert_equal("

    \n \t \t bar\n baz\n

    \n", - render("%p\n :plain\n \t \t bar\n baz")) - end - - def test_empty_render_should_remain_empty - assert_equal('', render('')) - end - - def test_attributes_should_render_correctly - assert_equal("
    ", render(".atlantis{:style => 'ugly'}").chomp) - end - - def test_css_id_as_attribute_should_be_appended_with_underscore - assert_equal("
    ", render("#my_id{:id => '1'}").chomp) - assert_equal("
    ", render("#my_id{:id => 1}").chomp) - end - - def test_ruby_code_should_work_inside_attributes - author = 'hcatlin' - assert_equal("

    foo

    ", render("%p{:class => 1+2} foo").chomp) - end - - def test_dynamic_attributes_with_no_content - assert_equal(< - -

    -HTML -%p - %a{:href => "http://" + "haml-lang.com"} -HAML - end - - def test_nil_should_render_empty_tag - assert_equal("
    ", - render(".no_attributes{:nil => nil}").chomp) - end - - def test_strings_should_get_stripped_inside_tags - assert_equal("
    This should have no spaces in front of it
    ", - render(".stripped This should have no spaces in front of it").chomp) - end - - def test_one_liner_should_be_one_line - assert_equal("

    Hello

    ", render('%p Hello').chomp) - end - - def test_one_liner_with_newline_shouldnt_be_one_line - assert_equal("

    \n foo\n bar\n

    ", render('%p= "foo\nbar"').chomp) - end - - def test_multi_render - engine = engine("%strong Hi there!") - assert_equal("Hi there!\n", engine.to_html) - assert_equal("Hi there!\n", engine.to_html) - assert_equal("Hi there!\n", engine.to_html) - end - - def test_interpolation - assert_equal("

    Hello World

    \n", render('%p Hello #{who}', :locals => {:who => 'World'})) - assert_equal("

    \n Hello World\n

    \n", render("%p\n Hello \#{who}", :locals => {:who => 'World'})) - end - - def test_interpolation_in_the_middle_of_a_string - assert_equal("\"title 'Title'. \"\n", - render("\"title '\#{\"Title\"}'. \"")) - end - - def test_interpolation_at_the_beginning_of_a_line - assert_equal("

    2

    \n", render('%p #{1 + 1}')) - assert_equal("

    \n 2\n

    \n", render("%p\n \#{1 + 1}")) - end - - def test_escaped_interpolation - assert_equal("

    Foo & Bar & Baz

    \n", render('%p& Foo #{"&"} Bar & Baz')) - end - - def test_nil_tag_value_should_render_as_empty - assert_equal("

    \n", render("%p= nil")) - end - - def test_tag_with_failed_if_should_render_as_empty - assert_equal("

    \n", render("%p= 'Hello' if false")) - end - - def test_static_attributes_with_empty_attr - assert_equal("\n", render("%img{:src => '/foo.png', :alt => ''}")) - end - - def test_dynamic_attributes_with_empty_attr - assert_equal("\n", render("%img{:width => nil, :src => '/foo.png', :alt => String.new}")) - end - - def test_attribute_hash_with_newlines - assert_equal("

    foop

    \n", render("%p{:a => 'b',\n :c => 'd'} foop")) - assert_equal("

    \n foop\n

    \n", render("%p{:a => 'b',\n :c => 'd'}\n foop")) - assert_equal("

    \n", render("%p{:a => 'b',\n :c => 'd'}/")) - assert_equal("

    \n", render("%p{:a => 'b',\n :c => 'd',\n :e => 'f'}")) - end - - def test_attr_hashes_not_modified - hash = {:color => 'red'} - assert_equal(< {:hash => hash})) -
    -
    -
    -HTML -%div{hash} -.special{hash} -%div{hash} -HAML - assert_equal(hash, {:color => 'red'}) - end - - def test_end_of_file_multiline - assert_equal("

    0

    \n

    1

    \n

    2

    \n", render("- for i in (0...3)\n %p= |\n i |")) - end - - def test_cr_newline - assert_equal("

    foo

    \n

    bar

    \n

    baz

    \n

    boom

    \n", render("%p foo\r%p bar\r\n%p baz\n\r%p boom")) - end - - def test_textareas - assert_equal("\n", - render('%textarea= "Foo\n bar\n baz"')) - - assert_equal("
    Foo
      bar
       baz
    \n", - render('%pre= "Foo\n bar\n baz"')) - - assert_equal("\n", - render("%textarea #{'a' * 100}")) - - assert_equal("

    \n \n

    \n", render(<Foo bar baz
    -HTML -%pre - %code - :preserve - Foo - bar - baz -HAML - end - - def test_boolean_attributes - assert_equal("

    \n", - render("%p{:foo => 'bar', :bar => true, :baz => 'true'}", :format => :html4)) - assert_equal("

    \n", - render("%p{:foo => 'bar', :bar => true, :baz => 'true'}", :format => :xhtml)) - - assert_equal("

    \n", - render("%p{:foo => 'bar', :bar => false, :baz => 'false'}", :format => :html4)) - assert_equal("

    \n", - render("%p{:foo => 'bar', :bar => false, :baz => 'false'}", :format => :xhtml)) - end - - def test_both_whitespace_nukes_work_together - assert_equal(<Foo - Bar

    -RESULT -%p - %q><= "Foo\\nBar" -SOURCE - end - - def test_nil_option - assert_equal("

    \n", render('%p{:foo => "bar"}', :attr_wrapper => nil)) - end - - # Regression tests - - def test_whitespace_nuke_with_both_newlines - assert_equal("

    foo

    \n", render('%p<= "\nfoo\n"')) - assert_equal(< -

    foo

    -

    -HTML -%p - %p<= "\\nfoo\\n" -HAML - end - - def test_whitespace_nuke_with_tags_and_else - assert_equal(< - foo - -HTML -%a - %b< - - if false - = "foo" - - else - foo -HAML - - assert_equal(< - - foo - - -HTML -%a - %b - - if false - = "foo" - - else - foo -HAML - end - - def test_outer_whitespace_nuke_with_empty_script - assert_equal(< - foo

    -HTML -%p - foo - = " " - %a> -HAML - end - - def test_both_case_indentation_work_with_deeply_nested_code - result = < - other -

    pMfSOE@p+Fr9I+c|22BOtCdsEhz=7MzwZ4O z%HI{FhMBOjwe@?yR4=`w4_1hQjV)8i2lwMQo61nFQWH|TVc6Z=>g)x4p}ow1fxfeF z%gAmjcdS%pT}A6e#n~Qkul`BrK~kZ4urgLgiIxi5S`NgfqB#hEY1}^~&Bx|GIs=2z z`+UaEjCl!fwRt_ z-;)CiAZ5)fQK}Z*|NRLFT=iYx1ac4t8Y=EZ$irP=R#sYz$!*f!V3>*di7>&_-7^lC zkA;KcoURMRsT3pzg*gQ%D5wUnT_8C)3V#>TA!WmMNBEEkLcC1QD_%|uQtRk z!qL-F#VbzrS%AgnWaQ_ES5P5cprWK5$}1}?%i6%M`D0L4Mu|#hTB`L?taVn}Rwc3BHb+hfx7{FR<9gM#BcQ8sysI7x} zGoqpnOtTf2XQ9!4Jg!z384V}1`XNoilNy?uEnv=S($W*R2cvHOt?wVN_gfhp_xZ|0 zL2BWqtt#cFNtUXc`&eYb?_5(RHGlrpR#!7KB`z&3wYV?8yuOuCD)mqE@&Pve$1jtb)GM`lCzWHs`2@KUVh>fOu+%GZBCKW*+Km5r`u|)&!x-PNBe(Y`5n47Hg(bB zqWOuF{cQ4CtXNqw_s_`oa=JAQV-eFy<^{pkl~pxI2m0jBOXYjXKOi!4#%;a8W6EUE zxP-Y0EraZzQ%aGVB^14XE&nO_<7@Krzo)XFNt^V&yuh*bi;2EKD7%A#f}BrgdTu^? zx!>t-+ASB$U@+*HmzRaRZx3RWnF%?jQ&dyHYz}Wu!>m6q1 z<{kQJ@WZ#?e#gYb^r10h2MinnphjN0c>2s~$c_~&makv`u1Zw}`?<2JvTxu1X#5|4 z_&z2&TI>3I@YaFZ7##x<)}j0g3kzox#n!yG2JbqY!t3T&$2x?3HE`g-OOcV-0Gq{o zRaF&JP{3`6RXNFJ9`3G@kypw}OWS{IXKS-;$umn9KRaXAoZ#TTBBAizci$a4Y&bDK z`IR`y=RQ7H%NG{Lc(=G4&8<;#{yrKaEQ{`Tyd2(d^3l@C&)mOL|t&wfq*UPWII&IpthK8nb6UGa; z@zv($=I+s}0u8?^Z4S&%q|rdHV#CyP_$AAC3v4sx{g-ez$3qKUbQUtOXjAr@{Ws7&%jIhTH=}@Yv35kfn zPNh{&B@{q>iipuo`9Fe%9U zUEl8d?YC1dF0Pw5Z5}#wFq_AF?D)?={rJPRYgfU8&<-qH?fm(-!jE7%|DiVmpnkAn zV|dshGpRJ!X&`ZISb=p$AdwrcdcaBGaJ04$^P(>7< zkibS+SvX#HRt`QkH8nRhHtHJ~B&R6K%F5f<@9yRXOh#V0cJ|!Gy1IJo0jdK7dY?Ui z;lTGlWoBi=XarP-j~G5BWa{_{6QLMief8DApy0FT&g0<4&pg|HIXnQ>&CM+}RdM-B z_+S6i7i~p{|}jE~&7n1az96ntK5ZkI$Qb-HytJ7FqQJ(^&d$j%D0p)IlYj9AwV)NJ&z!kw^A@cj5JyJ34Bzb8g4y(Y+wL)~#DNbjXnN7cO*oUAko1*fC>I{&G@4 zgZSTj|GgE<|CN@OYHe+$tE&r$meV32k@Oa9I?K(QHddO-V@wg@I{W zPRF!CgF)jVhH$}XKpnXb8o8jL2s*Z;v<$5+F_v)DhRP;QTwGjAO7hVoM<04<6iXTV zrxYlh_=I?eNC(ani6_$8A};{RU%{s}W9AI>y|lE9iIb;5pmTE!Mvffu>c3y}^zu$j zN>ZuRY3XS$E^_`40a4EF)G}tn?8ffFDz7Rn-x7BsM@PrR#6)Zx80ZUigeA^iHQke9}W)S zBYF9SH8o@kv7N0o?eR)9mz`b9%5%UcCwH)2RaISA*8o8|e*9Q=RnXWlF@_Bv_T{$w zv=9-?j03rom7RrW0m^g!{Q2*H_`bBXq{IB_{Ra-Tu(0gi%l}WeW&;8Pj~qD)cGl3) z0L=--#EjCwfIvLHuXlV2%L{s|sIc(sueNtJX49?qYMZK>JF-`?;o#r^7_e=rsVTUn zo}MmxLupB=g{1{L5F~vIT=Vi#iM_pTYHAvu6Zog7H4?zg%xv7)hp_+3wd)X{Ztkvf znJl2UzmKjTv zy`FmN>2v4K+SxmddT5NbwT=1xO4<|_7WTr*mHqneZ)_V&4c{o2|$*Rt^pSgIZR zobkxEY~HkV>9YF?OXeLoefqRaF3-uyfu%r32lwyCqr^pOnfKVkBwYm+$6b#+ce5W@ zS*dKxfwld>j1~9m*YC5>KEs_rz{6?+L>n6#tt>5Jewdh=h()5x%1Se-8NLF5^YaTd z8e3yy33le>K?snYAWSdrL99~fDF^C0y+=VJ~R|PUMSLOXlew% zHIf)-W@Z6?&5dNqGxQ(WRMpkh1qFpr5dxaEw4$O?YvL%nGI$OQFu*l6EgejQhAy@# zs2sY5EuiM--@Bq5R$IA{x^vrmo3u()R1~!L$&)Ag_U%iC`{|T)e}Dgj2M*xk@3iSy zC~sk5QBqQJW>)5zGZCq&snOBV(2W8*7jN8H@&||-lVSuAqCg)O7ndd_YX<;|X(R(% z(F5WMCL9B^#6*I}FOf(}8irp%?i81l@{_7@#n8|YY8JmTH8COKpEb3> zzg+GJAvk^7BcUOakDd5=%jV5}`}Wy>59}A+8vQstJiNT3Txu#+R#v*WIERLWbU2@G z{*zBZ^Pt5b%^w;~#>4gW#jm{bYS#dGea)KthEm+iu3g{$eDarnJ^!!C6DOhPgUW&a zM0DR;B;D;>YFkx%4$OMCr>7Ug>Xa!Vbchl(xD4Ib+uJKWJp(v`DX3Dbjg1Te3~VbY z$HzuhRTcI~I-2i_9yV}5|6cxn(4}eV>CDN5Qe0A;OV@7Vj)Zy{JN{uP%&V6#0j$E? zxGkI(FMx`DT)TGd!UYSo)M*Ya0=oKm4h1CoUwm8~+lZqZOshfx%G+`wH#fJ*{U(nZ zHS*yJ695l>bUQRBWl+xHt^8=}@8pnxl35gh7H>gY=>P z#YtJ2nLx<>9I9a#&kU3Fj10M4&P{c6cX!v(5zUx63;gKF;Ugharg(UI@bjm48&);l z6${a}s`h?hw#UnpEH-iK)TuYuHd7>2fvu6G@`Xk2ZmtlYplj$KP_2NgQdx;U#C!?h z%)n}6W1~n%hk{vqs;7~mVV~f@UjDw>Ik`#6DS*9|C3LeDe#>0AT)sbNXIH7zEGFtY zG?o@0?xL8RoA>VBJ0&G${k!jii9uhg?hKDoa)e)(BMSd1j_H1+|n6tD2e{ z@evx>#>NVrQY&8K)?Mj}U0t2=0_kOnx~Ql~PhZ#8&W5>g)hZRqIV@-%K5BGHaZzSQ z1}J7tZA}-5h3)mX!2 z@dqP?4Rh{X#JO{4pPWA*Y{J6A94K{gu*a{!?(oQgOY}mHn$pR=wYqwG0IHy6nQ0MQ zWe@0uaSmvuXJi5AXo^Z@B`j5`sVT506zX)wm9QUtvWXhKpvt)T#H19|%!GoTuC9%> z6?AfG>8&XZP0a!{qnDS*jvYI$Ub}Yo%$eJV=%Mhib7#*1qLU|2e&P8S^z`-7Cn{)W zJm^w1xT)0C+`_z)EbUQ}nVAiy?cgALRd;r?^d^8W@PZd2_;q2||HJ zdB5_Z;YMI5A2}S3_6Kc2^IBP2F!6ya{|5B;+iySpWXsgh&_C`P#30jg@$vlCW$sb0 z@~diYKfc=ft*56auo@m7CUaa01Yfy)Sw|>>#R9$ut!r;*o1LBO=wOfI0U$gis8*U* zg2YQe70{LDB)@yvh6dzF^lU#rzlQpTq~zrKh6V{OHnz5a8RVa(l?`4*W>u8y>WcI8 z@={Y30JDZB>=lYcg9Z%(TbuUSW2PM?D1{IKwD7 zG}u7Lz|#Yjh)@GKn47C>7fvizN=nN?Wvi;I(Kx7%7`GB*HpvNEqOz(QFOW=__Ye~h zh~*VZD@)6ox;nHrSl_vG=eiE`rG_Z^JA3Y2uigQ3=ge98;z|<}ldSBVhNfn*rscUv zO-(@c(K3*yxG$VfCL=TW8|xc#^YRs`>1fY_0y6e)Z*P~Cl?|ch=j-F+?G3hh;^z}- zsfv)0DbRBF2di(dTQ_#x_|s=1U}r&Ag5?z#7o%(C=jZ?TzaK(;$Hm6}(Fvc#?TyTP z#A+LRwQaS{t=}f6BnJlv@7=ri$dMxp7cRoi8#k^82lpWwzPTCqZ) z-396boe6NQtE&fH1(PH+m|AX~Wjx_ZP+&khNtv6Mo2N}LEiElU6!UU(0ReL}v%rAf zpvsBH5_eCp)Rg3egm|3A*T>i2-+#{RIgsm}wGyx=r3J@>4Cm$LlQny29tr3wz|Y3U z1{<1IY~y&~84?8YsEkHdfX!N3SX3yLVD%75I2ekqxVS`DPuJC@#j?dMpmJP>t}ax% zzOk_}3q=NW(YYHM>KUP6J3IE$E0xENA3uNo0_Y4gQvo4wFE2i*!FL?&9qjGxxtoKc z#>MFC6AJUnE3d@fjO*8b!0T()1O^2%uL+BuKXc|xOms}-<;zx9)_~~bDWU&KL&fBinl3l<9@_@m;MwCA-%&Y3fZu}}}1suz~(nKP#y9py5aJSyr& zzkdCp@$w4__4Ey-QWI+%YhnR{-BnddK$&!Pp@7iCXey&-!ba3JAe?L}EL37=m*fmB zM&nwFii*+Qp(u*!YHLiuySsaEM*;@kUfz{em9QkI&zN=N`nA)if7`xo+y4Fgr%jvo z=p&E%`ucQn@3=M#TH4ur^(CZ~!k%Fl43ZBP4X8jEi^U>6J$(zp{p`v5G}Mp-l9}6< zYeTRMSaeOzO`yK~=7kDG*KZ`Hsk8Ch^A|3B@x>QMj~!z_3knJr3I)wgnrqjtqW$?t zGKUec+P4q>`u6G52heS?y&D<;;t$?`A7)#`x${4Th3DnvqW3sBI->m@9UaGxpRjnz zQjj1J1U7*Y3^qF_2Xe^N$grfW6jz9wb#a!P(1q>MEEUR1mQ7A#Z0sa+EUT!n1h>>^ zic3o&@9>C6jT&KRZ+qsV%j=Bk;6Heh$%=;q@h@?3=9miv$F@uIdtgI;>F86J-rSd z+~2!*0AxRYo|Tp5=H?3Khfd6XqO7czNQ^)>AYw~POJN^^9O@B^O`neCs4FY$VR3;6 zc5!)@w6JY3({ds&wQ~yr|6n*QtwC^b(9;VR6c!fz^2^Dee?GZ$=T09VpGO~gWXzZ` z4i1iY(8^-59W9Ve=)`CWKYyS0jWLs;^6rtw~MtD zw*b^ZB;odfQf>}yacP;Ag}Kb3MV~`1;rUipR~MI*%AK5M&YXVz`i;cIBs}QIE7w3f z|L^Iixkt$gdIc!DkFSrrhsXOHK0xQ;i>-zxvS4)c?**c4+PoztMS-U+AggH}3kwee zR$ZK(VKf{L4|8^Q!EOHb>o3Ym<`-UZ8LMn+f(eS-S+U|d z7_?B1;L<<*@WZ@$^GrHto1GPypc1N53=IrA2_3P2l=XiQ#G)rOv?TS{#qf~aj<{EHRrHDA33_{a!0tdLsJXr2fP0}?nhbHUP)Ar@5A<+?5fR*-;?km8@e?1*-(1=|qgPh>?8V^jG-p0Nw;0kS~mU{_RJ z0@2XR&le1wxEs+2XmljZ3Y?lwdp3eeZ%J#QLq;)UmX69swv$p0gZU>AMCu$;bMu%N%eoX#Ix9Mj*VA&PGzz)WCkRG&du;Bb?;z6W?(awy~k8M+!{`>Z>M6-Zfep zm}L2&S=4bl5=Kp#h;FOIWFAB@eN1glGknx+rjrC$tzOL*iKdH#2^<||qehKRNKDwa zb*q7)VM0QDT52jp(uW&2pmXA|1&bDu(2=6TzY12nOBbO_m5?aYmXH*!*nLkAPe|OR zCXJDi@ws#79)0w&L4yV}tU`NzvSst^*>hpp=jG*o_0^YnPUFUn!?OpKN=Zotu=&0O z;0LlC%n%9>of|)AgF5Xm3D4EpNk+X>uw=^FEU?=wP;sz!$ZT_51ku=dYc``3fEuYS ziw>CpQnalM_8lad8R0A>+3;Eo2X8EGsWBZq16w+5}1iZH3>0_>r-w`g+s`a5kW) zw+^4`8|afg4P^2?8~kjI^w4E#F`C+8_2kKu04k{3mQ7oj83L0J7Y>~U-~k@(vFhgL z`q`(SUb+^!{4GhThHEn8w zbbt}+=;%;SOLk5!YcUTuS2H@~LxxzCN@!O$Y)1M(eQjn&CKw7y(lmbj^l8%sbe3;S z%*~993{W|VF^p&fOACh&-g{3=g?_m4uaX@`ETu9gCntwDq;?M+xLK2ymfFY#yxzWCyE?iugc@g?V9{rc;#%*@P&4I3}C3$DmG#XQKjYR0zy!5*vOG1OiWD}AhDkVD#;t1n##@WK_dh0BxMKs z42HE5})E%x!QOOdCk6N}B3H zKxawKhu(&7|BUJ}?dkx{MgUEr&#}s#e#i z9cA(tSFU0|%*`*z&CLZ+D=U@z_U_sJ?KfSFyZm)h!-$!=j7#Sy7P$MtRq9$o8wCXh zUB7<4s;WwB=(V7r0AIT}yX@ZmZFE#r@7}##UER{t)3{^EkX>u};)~Bf%+PO&i;H2m zD3ukc5O$qq+W|~;Wk3{tUZ-t-dVVP?D#i;!8YUbJ9#n!Ctii&qs^7Prwq{vIf4^GezXTF6g!{;&6$~% zU0lK~&r<@6)Y{V0+S(Eq22D#szA1;n(aNeSF=@KyYE?DNQHWzcGr~_mb67xyQd!C3 zKr}ov7=48W1473pr6|aNTw_CCZeBuS5;Xr0-yb+aM`Z*LLgDPy=5BEX%VhG)k(ZiV z!?N4v3f910PfJh3w|@S9WY~TCwvRvhI3y&5%|&cqplQGPX6NcvtHFLvOifElO3)V} z*Go%Et*ouI)_TQbAWVtoF6->_01UkNJg|x0xNavdBHRWJ&}$tIA$X&_7pQ}h7o)dQ zC6AK=X-wrpaHOYaU=LIsIvnr}vyElb(b7MVED|y{X^c*Zi^pZ)ju_Kp%oEoM8Z4*D zK`Gs9;EY>4Z^k8{_seB6U=JVJO6LL^#R~DKwQ4(2 zr~bZe`c!1kDfkA!K)6z&3tAU}5 zi!0RWcYAhEo*V)Uvz!L}vV8e-Eb1M$hpAMG9t_QIX=PbX6s$5QC%3S$5dBq3z7lbq zxSkSJ;6$(0b<8G+k#J&?`9Q?kv^3DCr7zY|(BdPAEvK2eZ?)VT5@RFc0@f81I$c%G zcV-$H8lZPFZ3$=r%h(o+b+Mm2Z~JKyxUBZU45)|9Uf?+b^g5S8Y}5f{`^ow9lNG5o zB-qQ42?!u0B}L)k;qD}t1B%di04lmH%-7DAbykr`W)(B`*vx)tLi|vRLMNxB5WVV@%Nvgi)$$qseHEN?%}~w>e0bqTeio- z!h($4G&gA)G-wC#-i)kl$W2@ucs^7-#A*1LlvY&` zdrOuq4-54@;yNHS51 zCLc_0rQTE014F0CI;=@D{iK7D_{(4jXpZ@(~dcBSwsXfVg<^BJLHH zxVyV^^f)~u6IW|*XY1wZ;p*bt;Uolx(x~Vd9Lz)~WGFg~7Q znmJ?o;%A@HLKK(0J32b1tdw}{e){pp#H6Iapdb&D=Gh}KFo?-DoCsY&Ne7VXC^G?% z0rWrpkq`n+{|2uhVrXx)Gp4>c(0~;UYe=*RbnFH zK+8G}nKq^?h7Q3;MkDLnEkDON6^?=YCSDqSJ^rk;_BJrrR``a~PJ~UgHY4^kV6$0l z*ua(GynrqnXvxhhplaln?;7ZWj$&iB5C;W?MYs{z=3EqnT-H@oBdmkKfIvF8hlnH? z_BU_dbaHZn!a>ai`T6w?^*63xFX+?9*Vl)Q-!N{>uLRa*C@9dmF!ED|a#R z*Vx#E=K__8JrJR&92ooZ%P%+m@8i*}eZgO_x9GKl&-XIHei`%aYKZjDStR!pn3IB*jk zca4j`Iex+f^r7LyN1QzyL5JfHbkhGS-hSuJf4{cI*vMESF|MvQEGjC3IJdU3!ACG* zY`eO-S{qtZ5nfxPu7PnB>6dRvDj2cQ{GYWVq(_*|Oy%ZBFGSP0Mo<|Hd9EQGCv^8hC} z1;CFAp`%D31X0KkRz`g9w;l~+>X5;H^2sOYuw7C`#gv7?|lK0ZFqPEP!wF(}oN(o$d#_W?PQnwAP~UsGG# z*?^x$(+p&mmXs`Ax^(5L)&2VQ#S;+e2=R2ZxGrvm4zbjUNJ}({M&>7|#^IjpR#@UYRt@^bUgmF?{9!57J@ zP&yhq0xmY8g4X&ri` zapQm`BOppzTKNcZpqtWZ;?+QyO3g)3sHyR3LgRths3YJ+mSD}vH8+=nWpI```ej~T z9?pwuqobn~ijDpH^XCi=4e+Y1tFNW`-L!{iz#|L|%c`rF zEnDvGs~&-z8!j=Zr+R)(5%@I zuHN20Q$rs)6!ueR7iU2EXjWF{JMX-;c=0kzOG{%qW?imS*3;M>Vs~je2;_h`H*KBk z)BfA;3j8pWnlM|Jt#w0nJDRGVsb6qsVjGLZ&=>$V=VoWxyZto)VN6ml}G?fLT#v5mU{{~7*8-MIqAT`eZUyYxEYNS6SMKd4fb{p=qG)G`^x1q zdpkQPXE~%l1VkFBYFb*KK7FQ4p28pY2bsDV8@qJ*@=v#H`3J5#$FSxALlEGNA6Su=U z;ue5v*iZ=x2?9EKecQIJg9i@@3=9em>f`C@jz)Xrk*Vn!nPCskplEm7tMpmM#>PTm z!$i9GO7Y}?d@Cz!bSnOSJQB7M6?Nm^|6cR%f7ZY7{EJV_d-CItKIE%q0gc6Bdw%=% zmzgtX4<0n6#TS~L1r~>{Z*FeRA4g>~Ik8_?PgjRWJ}Z=!4fPG!36U%oiTeSW0P2YQk^7pd}`T6=qL_~bI=ex(}&P_~A+`oSx zkrX;Qi9D=wQk6wP?A^OBDmv<^C!Yf0 zHRLjyys)r{-5TB<9PCM8wnkH4Q2}!M%%W#rT(#=glP9%m>)*d0UYj>HVXlc8ud_Q zv4m{)DIL|h>vPcv*^Lf{WNT!bLY?Tv8t=5=jQ4{ zldfs6TTNmcTRjxm#%+SDf;<-#7D3|yMNAe5Y3v7?OKfh2ODHNX?$@v1=U;rDnVH$y zqH_NJe*QE(rhN$x4hjo9g!=-q3YjuBIXNXUDPi=e5&uxEGEP!d1hf`jyl|cx1}6Bk zu&`u9@YrBS+ja@#`ue)FG$BYXndaNX&6(zNV{ZG>rHd0DCX?VcZTfiGvK4dYJiceo zZtmODr+<6;>4mYeF`!QZlH<3exVY&0^=s%NuyXzVd%3u}5$6`2m`1yfo`t13V5wHu zsAwS*WPbk3cw%E<*|SF6=%XD278jLxz8yJh>ftqT?{3Jd>f_^=V-;fLOQW6eJl ztIWLw;uIVd%&jBOgzn2m(H9ud;h+@t(IF2c7{%U1p9aH+(Gy-y19VF#Ky)($HYV#85{TR9q8rd zBM=IJ5PLg2h?ZzFGSRfQwu%;QU!q#gLg8UX8cU4Z$E@A~M9a&eSRjDP%ga&~ zx5SXUhX>5k!-vDbEJlwWV`WK9ccDIUV^W`!4)a2hIXX1a@$H|nk<89hb+#f7L|9yW zTt$WQ+_`g5dN*!dXZzFBQhU=Z{w*KV)5|M@&CSdJR|^Ys4-zsV0+y9=9TQ6kH@V!g zuCAW*KY`JhN=?9!H3AK4GnGn9OG`+~B?m_lo!KiEi5r_5A+S^`wY8NsjXAy7RieM# zwr$hq&0%3-AO0DOzW#-<3ftiP`3oQ-I;|PjHN4T$&N>H63E2S?E-3*>I8R1r$A=yI z@rij)-Mo1dQ2hM!Pp3=?oj!f$!GrsG2mA!Pbj+A>xP+RT+O)LP{QSIHGUZCBR;eN{ zT}V}=jDBcrU2T0INjfHX}E6nfO;Uv5A z^78ojxa-%hKv8z+;gDa3(LAS^5@LW81BqN2zs5ro2+F=Jatr)tem%%w1KYl*bI zSL@@s6)W%((5y%TIs@kZCsO$fU^O5hEG(STT??ijg@RiTTgb=lZD5$WG+NU6355d( z36rzdbn_K4J=m=?egQk%Vhg4KlfaEi{*4Gi9 z242w6E~LrQ!orj{Lm(j`{>Js|2^0^6R@mD^I^e2WJV52;oGN1_KQA}9Pv3Lr&X$&y zg@#OJUhAf2hS+*C)vK|wH3Dp z0BX%@pjJtCdYUarIE!Q=?g{GVHKp_55|ffy2w}P^Q|pJ=553xcwhf)!FQUF>dsroY zzP@$!b$Ey{H&RlP)pVk{OfGYCbA{+kOiIem$?C4)TLAUqrAz3mSy`EX`eKcL0#-+m zc3hv7l<4N>&QaNR5EOQdVLoc9$%K-eoIG{vBWxecT@w>La=o0K91Z_h0>RNEho4=t zG%zSAIx33Nvo!wvIDTpK6*+^5EoF*MfA#9+frAE9le>t_CgFOjP{0!QGF?j2Ve9EJ z-OExv;9#{%-9AQNhb9C8?C}$P3p#+yi@I^0E!i9x6zt>Uljw*H@+n*$}_=H^C+ zwNv}{?RW9w`Ia$*wp?iEj<24W_oTkA{^cu?cY0R#2S$n))CKHk7|D)~GP)3u4t0`A zfG%Z41&CjDyNG2x|-#V>iXKKOd$#xgvHU( zF)%QQE~}9Rxqx>*P#KtEOj4OC)&a$mi_0?pEr2WU^ZbZJ13{Oxa3Au)Sf-Ny?wm< z_U)gTl)^4acuU~6e8L;u5OTW(bky3A3Rc)Qs6`*?f;fZJ$uAkj?NlQyZXGGToR-q4rf`U5)Dzn_a-L-Sl zmT`;#w*ayycXGx*8(UkcxtXzvM5$CZ&{?3|PxSP3X|5&%T|Hg=1lzcnjLeMetW59% zs2cpXZ@+%%I@n)SRCxLFrGp3dwV{YoDb8YJg9GhgE;5#j8+mrgvOT-MEox2D1N5?c z&&TfYaN{+tSJkR%ldo6byJMHFlyezxrzVGVKL|Vfp9eWCO0>A3X4{=U>nY z^ySi>NKH*(zFxg{9Y&_DjSZI+0w19^Jw4oU%WSR>okA$2fHz*d_DygN5uKcvoSafn zSeToe7ZVeG_UxI^(9i`>FSv^bN+vwC2p}Pw-^U2j~8KEtvtBe;F7qyR$>Y|{+WLlVI1;onaq}W(%=f0?=r$GI9hYG5ztF^Yaad2?7 zva-T%sH~f@F&(-_{rw5gBbkS|zQxnqx+2lcnX_>3ad9{K-XTs@fhz(z6DEuU24K#8 zv-4|QEnhdX;^*%VEqeLN<==k&wY@Po|L^}6>eI=n4UL@!If}&MvE#-=wHEW{e74y0IyxoACCyD_q;8lcOxs8*doI2p%o9g1VgI7f{d4Z(qn$3zZmzIN>@ahp_D{{EA@t06dm2VI$Mo6u#0 zTl$ujHJ5(H@%NUr08pU{a&vP9ZF4@g>8w^(P`LvJ4CH4jLgSQ_mgLbNvY&GnduRSR zO>?t8^-=ly`a8+xV;&j}3`ED=)WTkJa^j91U%9%vqpAun_LEM&gI;uYaTbg9tXgwB zTF~V`Vxps=%x{Us*3-GVx#R!zv=;pd4&1+g|6YDj+rIq3eLnw8N>1U2K!WJHxw;UC zyo)pJ)rg3QG2_Pd?b9FUjg5^C3JMxFbXZ_ekcmVhY-5PFF+sU6Xy$Gsf$)~-#vjS_ zTi?*mh;8{De-F>>?kztfB}QRCmB#-n88jNJ$m%Wkt5vQ+yJnn$A8wU*3;7qR$?htiKIi&b(ztB zb91tX4jsl}H6bBES68pTt{zy$J;MgjdJyQ5UY;H>J86zsvd%i2bPh|^*x0B-shl=r zrm?Z4xTMIyKyT|8TU(m(wzVkgw6HX{w6N&#E1E^ARz*{J+-bTJ&D};^KrI^>w5(u; zO3KPBIFzE#%z)^8#`nvqxe7kfA+34#;)qV-*eyo z-s~RN8#Xp7wjtn37)l_hlvIL1F_?;MKq@tAE2UCfqQ>xv@*&BG@S#c?v9yU&sZra{ z0X1z&T8RWhK9r@zW5BIdkP+trpri_4h;>#XF${I3zJa`%<`$JsiC1^;4*MYYu2mJ7+V4v*TrF)LF+nuTX`+>G_oNQnQIdHM>eEaWwwGcrc!C(H>lVf9J zJ9pmlhxgwHI>o-J1DfrE1^dGD&%gfq&zUwhZQ69hjh}ep@yD;d_S$pj&i>Ah9glwQ zbML(K4sbUR&QCw}v=&@@-`IQl^y$w&`q`dxl`m=4s);ddzEg>b(*R$%FgsVJ+eso< z_3J^o%Jw!%MQJOU@ggeVm(A`t?WCcG(3^4?K1A(c?Q9OKMD*vm!3C^L#%8ZIk7?y2 zz*n@eWeKd+a+{V0Dl$#F;9!eC;p0Pp`e%Rs&p-U(U{N%=YBJxCr|f+Pd{o8rI8A}j zL_t8>;{sgjr3bha5+L*>kc3c@a9r-*<&IqAN(xC3P>LWZ(gZ2elwJiX(!2By(gg$r zrGpglzwNcVcb5dw@AvopbAAkW@9oac&d$!v&d$zOecp;X z7?tzl`m#H3?bz0HOQV;cHU8`Qo_m{?U1^IkOV`VF6V z6G!%FNj*;3_2K0u7YZts2|VYwHKeir*Y3-YOQZ|Z=_3Qr{`UPL*(vQ4U%Kp?Dl1M` zzw%b2m2Uh!e8wokjB-90mW@gGLdzn)wOum@9tmc#u%8bpmf@Z#q>re`;{ zd^b8~>7eHkAJ%ApW=crbr7vQ(UCcRqXVSKJ=U(pn`}zmt4{iQqTkhu3zr8SR%HO^5 z$%W?&B3kb}9C*#A!S$Di&Rq;hwHMm2gw@}*d$%MktG{pAY306DMW)8yAF{Sl!+L$U zY?Vh&<#M;oN*i8de4Qoz62<-o9*bc+N3KDNk*q#-!tL=ZB zycv?UZbNIYgcDtQ9Nv3Y-F(IRN(0Y+@}4wdM$59l-ddsR5Pzr2mwmxnD9d~30ZrZ9 ze!jK4EJ|In{=wLY8HM+kT|RyB`O7C42R%3B(WjP<`1adFhcdn_e@uVz`0*B-?;V)4 zdu+mQXTR@nIWg%#+Q&#GlF~hp8c)Dj(OLYZ{4|Zy6Ts2cPz`(z2K=FsE;+ z6fd?tv)_8DIh1_s>VcKNeCvm}P4!xISJeG* z@|M-u(Cc!0Rk!}VQ$s)9pSB#b^iY1kW~*l{$6kpJySO!K z{TDq4j2yV{vmTcYjHuDLQO6oD7wPCP;uf7h^dPj?GDW*Jp0g)y|LWP+h0phRW{$}D z@|%iM`NLb=pMUfCdG)uB+V5OArO1EUVNy!NRl_7X8+9v3z9*R+aL#rt{`>O-eNT@8 zLcW~#-10$Db+_O7;rZ_e(~P~pk3M?sLetR`-urW{zh-0inVa)gq%Zhdb2Ip- zta>qEMEJvwHShdBx=*#U@oH~r?2ef4T72OjvPHG4)q+!V--{_ISGHs3x%-JbCLKKA z?P9xk8?SD>sNdQB`}e2!ZBu85@wq%M{Ht3JzIf5g!)r$B@*XR%*gi^MeEwzy`}mw? zQyXpRKe_phOJy7OKEAL=t7&~Zx9;?-x^7-jhwaja16r(FRcCDD)_s@lr9y5jUEO}n z29FQ#zI?vy&iN{J%vbk}`|RNK4KJT9`Fe_J)8n7wzY0J9XF=}0Nx_XS4Y>62&aNjb zUwI!`9P+%o@05AI-v6u1qrTT)*uT9)j4dMcf>ERSpr5X)~s6+VtSUnq{92XgqRc+{!1lw$`iS*Qep`mJ^z!tiBP_xy|&ZKUqHS_eGf4H_C z{AJtI`s2UsL-zL_s~WSb|Dh4pM#O!6a$%XTs?}e*_lTG5ow;{DG}qd_DYN|_p7jS+`Jq9mE&%2kS0zmqiGQlQodHiJ#cd8)6rr5b3JNI{-pk@3wwH0sd4G&bLktK{F$`8Z{f{(-@kma#6NA#i+htd zg{~WTwE5<$nk`B9-|HORETi>bPXk^Yt1&1rD(b=IPsUfQ(Wvld{!=Vy4GHCuj=C)l{f284puDtvSoUsW@bs1wYCKf>0#w=PV5{P zwsL`b-S&fLuZHNSyxiWm`Ma`rQm+M%JzX~ANQ3)TsvJN5!Ro&zCDeRp-SW|2SN(qO zJMC*7IjDNv;M~`T+I({)ZTTOaJI{Of;2+(mzh?;ZtdUaGdD-}LPdfx`esOt(bVmL! zrp=GeSzAB7nb`Ql7eT4{3|%mA>(DOC-rcpkOXyo` zk1gALw(A!a1}}d{bFD#_y(0@(KP)d>Hbl8_ZQqRVw?=>2px&V^69=R;T~TA;TelbM zS7=*Ioqg?>9Uot+cQ$zS)H!oh8fn#-s#%rZu9NVyhxPd0bL$JsJ|5XzYxDE`wpZ`; za%E2HLodnq7Vg}aQ>}f6gmKbdnW1g3ywi8)oW6hfR84Nw_zBx-*97yrHl0Uz`1s@gDeoQK~=sv z>A%|}{OO@KD=N*r^+ouF)FIU_uFo4FOB^!*NkF#0T=m7l%iXqodnxNi!cV$>pIZ0edc?;b?Stv)E48%! z+BWnU^z-0y%{m%-$aiNy`ThLz9=ktl{Nddp&l?xq4qEf5t~u{$*SEtvPp+_S;`Wg9 zc?aH}+TxRgfob+JN@K5pmFA^RRTT9uc$ z?vsV{Qr`M_=)lKEH>ZxTv8~$S)1MD7uPu9Fhj(%{pXmJqde6~aP5!NV>iD>f$iilm z_hp{`eDJ~w3wBTMSibtW!}-0cpV?D)XPIeP56qp<27P|$dfA$P9$9BC_tmXsQ>IMO z@3%VEX~@*Mmy3o({IvSk)`4@%4xKQ*(w>Ah>qhQqlAWo^(G0B+ z_G89R?N-hS*|zAT<=Xz`k{{3gK%3ECSt>iKduZ3J&R{4v-me~y!_k1wE?e^_@o6;2ffqBhx>8Q$d@2Sd! zK>H(~-S!6_T`G(|<<<4ljd#Ki4s5fo`_?GkP_O>;H|%-vLxZNhr!BvFx#gC(KbYQr zoJa7bv@$gwwC`8((u2Dm*@N#!Xg7~txT3oM!owbGR?O?YveU3-(?(@e^)6=}nlY?l zuZ;u45)R+Uv1e4O_GnUr&o!T3ExdhnOWntYW50*4%^qAYBY*f3+gIB%>I59@=|ksD zAOGG*4`+|s>Gxy$cUhWWq|KYpuJul%KYu(w@sEznPxTJ&(0%ljnag@C+P;1Jne?SG zZ};DLVR`f*-$gTCT#!&iYhe z)2q@~Wh~ycM#Z*0RdrWjeEr>%mlk^5c-m?A&6d>sm?U+V-u*6^4P9@=tbVk-RqQU2`Jn(X7a3 zjfSR#f2Hf#qk6BOnl(^ttJ?7Kh+VZ-kIX(4G2yN5b9+pg)~-X;;Urmy-17$)A3uHh z3svp9weQq1rSGpZZBOgSL1i1Y9a$}`QkSoj$JN@>xYgGg?{>Z$IJ(`v<1f}MRHbi8 zuK(j-Ia=&s$UT*6`iElRi<^Q;zbgIDKC4s-{08>OEL+iPpSqFto*-nzv`| z{d`eawrc)5V8)#2Xw`O{f3oHNIn$d(nvY}+*m_`S^ccnN;98TvGB+=?yymPIE95N( zC*@4*HF@>1N53T8jUPO*>^A9VCzg+_cHzZ4t=r6^wxxI86I$j~{QN*RMugU|~)Y+4G>|Xv?MPIzXrq^?CDj_ zYp`O~kuv+H78GW08&YHN?Ga1L9QYwNx$x4p%d?u?ubaK8`3;ptnx)YUxwB_Y`&|=% zYT9%6u3gc?W9%z_JZSs%kN(o#b9h5je-|7J*?S7?O)yTWxoZ{ z+U&4evzq32u66c@xpD7R>e}+Hk?D$Zp)bl-Y%`;4@R$lcc8&bC)sGeI5$!5Iipm)> ze9<|{*cvM`(tX}|K66@S{4$ zw6Bi&Ngws~v$ZC)xpi8RYL&Ncb^M@T*c{{d-tBS+lrR6O zEofS`Dm~lpniXi1PWG)oJx^bL-ut!tSDH5@AU>zcyn5p%SG*A%k?u9$r&^tkb3f|1 z&S&nGl&UX$(kBin_^?%_K|FI%@BJNjdI*}>&xEHs z8%$moc`)c)j#irUm2Rlh-l+eypU5Bcb$c~vVtdAIga|2k!+blvLLxW~FF zE1xV}sXx52Mz_Wve6TdN`zITQUh>&qq}@IKuYUJJ=U$!KW%BTHzr388;`7y#O?_6s zZ`-d;S(LN4?u=%ammTZ3*z4P|RW8w8-V1w}HZvk+lXh=h{pEM1?vRKB=E(2v&Mz(OuRjOdGwk$;-|)Q|iT4%^6wk$%vLerB?A?F)DxV*xC(S zRHs6Q7QMASLvpUlRcrhrb=yO#Zeyb6Nk+`GT5fvUJB5_Xk6ZV-A!_S^t26ve8Ut5ij;~m^p=a01Vf)m_ zhaOLVKS#HGFn#*yo%RiO?a6+mowe!PYweOI-R*aTr45?f{|NMptzwi9zV14<|apivr46h!j=`o<0joSCD!NBrn zzavLtrmP%8_qVRR+GW_C2R`+K^1ObeL%xmC{E#z#Uhl>JZT2RvZFBr?g|{DFy3lXz z?1@{hZ~VFYzOu@kk)J&&A5pV?Y|oynD_s0F$A0BqtMvSgh~YW!S^GbeMOV9)^!`tG zkFVYQCd5za`7G|MKd*i{yX#wD`OezdWzv~lTV!z!JAWIM_oU9j ziPy%QxUwQIduW9nC(cg$b6M21QMtbNdj>~dXiz(K_L**DXMT|R$LbE$h>h1)e)9E) zX%Cy8=tjkTR#{#C(?xyP`^*|v1zhPJ9gU5y0w${oBJ&4@aXf)_p0|?zNIK=QMr{L z_pH0rcW2)dXRel?u;`nIf!7vVrk-71vtH-e;86*M12fY07M_i79lR&wVcgA6?576T zm;AVB$GS$dmTi#ruel;_Z(+}bFY14BdBAMxD*rF_7cBR?zAr(DS&u3KGy)a*5{Px|2Wj4I@32pjaZtUsI?s-+$j7mSf z_Mq2a-;Qk*QFGLQ#Kq4(uzq#4dEeYehsuS$JpSwKS&7514r+G2`lQ^qKWp{2&vzlK zD}B1+$#+{$9;_sL(qdpv_Kf+>mTroe_}FXX#X?Cp&4Fr_>6`a*zpe7=lv_6sS%=OY zloNTs<()b79R*O@=gUGZH4J%8mSO_y2g$KULAszIw!+urNDZdu&3**nd%-y3$M zbIOW7S06n*-mqwDmr5!R@630i@4b8BYIxw<9v!X}jgR=Q;@LG($(Pduz8`nI;o68( z3z~1soBh~tVAp#$zMlVS>rQ9G)aeFW}k&1{pmJ#y2MeklPp(uWbCh|`nK{B>Y&L}5;A`u=siQXw)zikQZ0Qt^=xx-$dzs3-AB$> zROs7x&h|O|0_qfv8hN^3$ALFbj5<+kewWzQu^Tnrp6wgD`uD4|BYu%Q&y?+ZtLM#f zy-qKlI&tiYZo%s%gV*QvZIn2=%Z>^a3$_e1w29Qt`Mkk{XZN?S{@$Ye=ErKr2LUxw z>uh=1bLco-`m(yWtNZo+c4YTTllPq3*zwPhy@5ybJl1_0dd%~;+x<@riTZwHxsMlC z{_5IYPz_tS^R7p3O~Re!v1_=$NTTk8~7^Np`jV*#DG z<>33e#HFD@wcjcqGN^vQg~=Dc856YR%94kFEIP2XmL+}HdD|D0#|Ipo(V*oYalvgu zFR$;Y^&eM1ztgqfI&b(P&nI|h_rfWsMtyQ7y?UqU`5*bk)NYV6*r)T(`(YKoe}BTY zW5?=GXn*SM%t>F_t0z3XvZwE(g70cgH6$vs?~kv3xTv|6EnlW@1CPhfZrM3smCTRt+fdJ zUZ1r18(*eiulSzAf~X=XxcIL+{mPtPI5p(lo;ugzJ<9)AuMy|p|7}p}j515+Yj4B- z{ojE>q2WOe_kV}B2n~93|M$P~vCsqTItxun879b7T4||=hry(_>uD+(KlPv}m0oGJ zQn6;UUZ+ypbS5JeNwooGJ-|DP@}zQU3KXy#Xv(Hl+Q1*0(&#K!8~Cdy&q!NVwlOKC zv%-=DgwkwQz|t~Gsn=5`@WMiwl{PJ?s8`x(HDxlxhOLwmAgogARd)OsqO2w`0A4mN zfQss6=2L1~qqOU7GW6O?+bB8HiXQ}_r!DA*Rfdr*ETozSdT@m;cB3EF&0=5Z&y#vHj|#}Y2s6D&mF-8_EOv;6V+@G0A%PNbriQmWM! z=ZadB)h2ALNQTJR#0ybcZ8v+P7qk&_0Q?L7QQ8!Ap3Vk9@%U8+hNuY~s-{h3Mx7py zmhg3J&C-3FI%OGwN(QrCv9X z_5zaAn@r>w@Ew0c0+o4cqYY*#*1^-bq&848dZon0ck3FP635MS7PQ8qG|&o!lo$HW zK-ZCXGAO5w;0qNshzbDQp3bnl%qJbNcmOMkB&d9@$&xK0&uG0BfbjzD=!~?wwO0q) z;0>jQ5U`903-n&5)>*v0ff`}K!jA|h=>eHKV|svBdakc`Qyvo5d@G;;4+ENe2dKop zFseCXF!TW=i;V1;65rJ$vPrwdwkf^4#Zg+DK_BfA$^1hr)zP40q=B|6!8@DTAC7-c zl%%c6XaicoKPBHxODGlo6(zCJdA0ypIf7DYq1?4a*=-vCmXZJj#-_9B>FCI2QCf;+ z8yRMiX3;0u-(2kI1LM<+3`a@A7r6{S< zWTd4LObLKmF+~Uxq*NxDnOPQ--KYiyC9t3b7c4^D<-Tc*pZm6jW!yFHsnKX?bt|TQ z4+`5)4g=f<)B)2|MSFR3!<^}s?3qjz32(SCG>f}>be>shRGTFHfy%UD22MaT74#4E zNKG4og~=NyVIfM20f8b68A#(mHW+COoRYBrUJNL2@gZ=8%C+nsENOvRWmSfmZ93Q4&y$rj2Ow`B2WE0)x_$r8CN@zz8s-)oPtF3w_Tt zS=6)zeKpx_dLSy{cZh*nmjgOPgR$U2K@a4hmQ9NaWt!CaPEB!qBd0v$&?kZtZ{NeQ zGWlo#Bl>HU2Aw`%PD#7kRXVkj>R^GxB=ut-BrAdX>S5HWOz^QQSkewki(RdhB7|X4 zCxk^?12WZW(!=HqCZow}1`O&RT`N$Law;g;oQGP{>qJIDOY5?f z1Vf`Or{J7-MLh_>qz7g;FzN*WRCbHi1jfm1(t!zWAqAaLD#+F9Y_vb>oE!=fRMHc$ zq+V&n>qG&KcwGdP)Waq`!_mhjX&B6d1I>9{>EYU(B8e#BHF!Rl2B|JC$^|S_#7$^<+L8qoX z+o4Z!)huMBo$8^kcZ`c|7nejj4;8y`1bOonb&LuQ18`6mi+DA3hAggzMsHGr1|hnF zLY`n<51{2c6=I182NaD>Fd{Ujdw94z+PuO9MM!CboMG{06OYY8!uf30s%22CpjH@0 zaEW0A3s^M-eFVhe&p#J1MA_W|2AEk^8(5oX6)@#O(MO~lX^ZG!Ik2yx)aB1>!0|*n z2x<~1M*%5F_%cwWAW%a#D2F-O&eS1H8Hky%O=7#=gauh848^D?P_^h^XfvQMDw8Q& zM_bW%xYlr_KAEbmS|SE=;9b}qj(5$TMrDp;eZrOqJt6T!8DY^Twr!V`q}aA`7-OX; z(f=Y~Fn0^-6jpMX<=8xhtU@)dGFgyJWQ4Mqlx5N4N#z2k`ap)!7BuXLpF>3WSi?wp^w;f6~gkjJ7CRC04HQA#?C6CQ6PdkY)*!7FJQ}sBQ+T+Qd-7Z`;-hj0sLIP zXFV015b>aDY014nPon!vD zJ}9B+Msr%J*JT+Q+2aVfI7!1u2j^7=vNMY@{KY06SwT3>t`ga8u8ZNd3|z_xX=4Mc zPpyE=n7J|AI?GF!Xb9}p7Vtl(PB?e7w8ki@=G+CfNEeXJ%l4&&V(c~I2o2v(?c%6z zNpS()5&@gHO$5JUQ>f&W*rXK9?=tB0A&v+?^c(tf821hSaMlxsYUhcXdRX9LZfE7$7OV7?Z4fb}=j57FQYcE3f!B`;c;!|FP9lmsqa(7K!V z44Y%*DR>SIb*n`cB?(X{hzC=l2nY)dl$niL5=yDJML`E4yE{i)EGCPDh_NV1P#IphOVAm0(Bc z2HI*>X3+>fc*_;F>jeOTG)IU;NswhLVX=k2Ryl`TBpj`10n?!tksu{|f1E=XFow?N zB?*vtV>=jPfdE7X=yeY5vn}dPnD9=miZsMHyqYR&QoF9%<bl4!;;78#%fsGGTl5O83h za-{6sBfcAzlE@7n*CdA&SkoYzQxe@FE(HP=D}-bXE(PV2t73RLL<+V|OzhGrF45wK1q+}md0B^5;laV!ZQ5%!^#DlG+8NrmWlp~IYR z#%;9_39Epd#_f{`o;HDQU8IyXakLQ6!5psD1lD@a9@q7yt)0u82M6jn2*g1{z*yOuz#^Kj->QINUriw0EU z)NhKxkf$i|jDrs##(*2dD>}?RFSf9Egj0t&CgLN<@e{QJ{@#5h4bd^dcib%DSaE=@TnZCES4XNclR+$mb~@El@km6RtguL?SI~#ipfO z8e&ShV^$#YO3ST64rNE1XQ+vh4Y4RJ!*%wRIg*ETDOr+-?>238s?wr^l_CSc50STeyVEQ1TL=iC#^7W%S!{~T zd>EsY?MLMlQrReiiYme!1RvA+C|=1?O*$i|#{2>*;JtCRQvtpn0iz4aj;g>oDxJ}4 zrd8NBMK2rxIQ9Z`qDVl?07Ojwc*CtoehD+vKJgw%q7zIMpaKPd$oR&G1B;f#awPl% z!8vmdoMBF^<78O5VjlSRzlM7V^B|nwa1UCszee^!@SORF>@_&Ckhsz9ijN4C|29@) z(Q?l-B6yU5Z~ivt{Byj6`~5n(hj4%h1Hla{C+^{vVKCZ_LTfP|@3`R!hmml{4=%XD zfvBj{Ij<~G966&nws6lAu6V&2XC5CoazV*Q4OkmpAn|#_W@fwvOw55Ky0^(Lwa}E6 zrgg?F91@N^VpJxrQrZE(<(ur3R+&S4fOR53M2#ZWu^k7aAQfB~B(s3D(l#3a#xS1% zDHMmm#M@y1USt3cx7WLZxteu>rXXgVJmU{BH$s3y{Culj^9nYAKV3VuN;( z(--`)(H0{W70tcSfqzlt9h#r0GIk*|P~iy;7}0B`^%@!T5KV7q3_RE7)9!?Re^#w^$yW@LbHhIH{PXs<&trB>wH zLv45$VK;%`_=hLe71#=PGoK|e@`S8TL`JSc@DzSW0610w42FElfJ_vS0pN?tk-va$ z(ZEeQ0hQA-FoFyjow-;Bv~6oIcCw(xF^4f6#D>Z{)lDPSG8kf(s0AVY$aC*fw89Ko zt`>4;6Y`o^$gHX_9v5%6EXDZji)-Bh1Nh-O#vp>HW?ElahEKYzHE)7)JRkKw}?v?tBgvvXQE;>kYqrWa0T$>1YG8+G8xQ(TumqgZPS|6loFV$CcxfM zZo>C8u%YY_IOK7b3RaWdqQcCG>mdn=QA#0&5bB=nPYTzGp!6oC8crIE$pGd6k|F>$ zW_PvD0_=BvK0Xl#=w?w^aO9U9n%2y5z7&8No)sEa_CWr(I0zUNR*z6{x);R|+9c>sDs`KF|hm}WXagr*;*vr)h> zw(Hdxh!8Zyh)iTKU`i_4W`Sx4K_rk+V~}!C-;hQyO6UZV8dJ!V$0VNI!65~qKAA$G z8alkGMhc1yBQ&$*7`< zyw&I9Ur?N*)v+@_aA%ew*Dwskmv*=uWH%niU`ayeMkbBL0+1if(K_ycGf$eZAi)C6 z0z<1ImS!L;Oco%sjrmLqaMfuyi*Y5NUxP=as9V~jR zO=`7kG`hSf&TMlw`TZzd$eR(KV(kjr0c$1}4>S%iy#Q&*Kyd3A;PXMkW>I8#s*+m@zM<*&dPL{I4ly7>^-XFilZ02K)taft{ntU%Qn z&|xtf4Vh5`m)$I-JsBGV&u_rjMypK;MQ#r9but0~p6u5d1(O_3VIFfsJA|`~SqUIC z5gbi#(D59d8pSH1KE85_4Bzt;8lXd!a&F)kW5~Jsp&YKaV4hr`D}lmkOmzn=GGzTtI-{2)-6&z}KrG-k0UCP+#Exy8WoKf}_!D%T zWh%BL;fWZiEa7Im5@;pj2k}a>XXbk|*r6yJW=Sv5Jwj`kT_*7uOUNc{eiHtWWb(kk zW8fU&otJ7QW+Jmim%}U)AgGcI2H~wVDUd!v8OQ)c?}e*xcF4#}l?hB7l?`tZ+fD*)_;O^M=)rfRq6_mSxjs2*(QR7DP4$OAlhwco~J~@l&)=&&uGD z2^owAr=nRylmhEK&^JlX*rWtG1^v({?jA}KIOtN(0tl-}3dM#JM(lzig24Q(N(~Sf z%KQjQLizGs1K@-919U2#jmyEpg0b4OvS=$98JXjOdM;y&K%(<}OL2KN3m8`*0Ii6B zc-A2>D;=3ih9oEK1TQ$(iU6sY1s`<2%H?fwZANH9aRT=#JTXxC4!_Rs|_m!6euXHge+_Vm4R4?z@e)5mZPE+!7_^9Dtym>D?@EUXN}gui3hX6 zFc8Jxqf-qYL_QO14fHC9gvVO>GE%9BgP6}V0~u19u!+KYJP?{9MliEdVLC<@>sHf z2kvO%YEA1(PEu0Pq?FP9Otuk9E(h(1Fr@>uqdGkCuN0S(}{ zG)4i&TajtkNJSE>xELbbn#^iZIam3wF+>>GiA4vH1+YmsDJ~q+!AM~ZRFt_3XP~ka zLc5hokQD{!%hHP~qMA1^4wfQ|ws~=NSgc;jK4N-=<|o{ODPf!LF|-Ow`#BNJTiC9c z0YhvfIR6-N0_76I9*7vc%Eca1m_J6Tf-@NmFjRoskNXwUSY>DwW9& zR0y{4kn07nqjkuI4#|T}GGJjO^=Q*u!R%p1M^RD;A&|+qR#HPtgh#D*Gi_mCr#Za$ z1@@STgMj(lEH@2IaLNK@NCq330oI>|oNz;Xk9@gO#7H(Esrb&zk_fkKdoGXw{$MQy z%s&GVXb?mIC%({co&@8y`?rJ`1S=}X(3@gK87_v4=VR9&njT(2nZV*owORoduu22q zT`wSkyy1B$=**IEGc$@J|45|~64+Xiw@`FpK`Cg-No0Dv<8(Y8Y7=cWN^K~D1kz7x zMGWZ=IKm%j7P!5GoPCgo;ldQ4Y>-ij!j&I1@s#TRaP11c0{>|?_IJ<5oFXP8?dQNr z9!yMtL0@uy)q>J8@W*U38G(feh=_QWWmX97^(tG~q8OLLmH9Y$9o3Rh_4-UEb_Sl(bG>b zP=phbkyHKebAqQcG&lp%9von4m|T)97_h3daufne0~z-`n-=_ey$odq5XBe@w)9F2 z#jnU?DA>+xW+-=@!*A}N;T%LbKf#DF+wXRrUQN5)cXwuNO-pinmS6Z^|X2dCS9XxMogVYb^xn9uT zhlRG9O-8lCW&$WeyVhpmbOqxN0`OtnQl3H2sS&6(++&3UP*5w`00V_d)7lFQ|FS6y;O)1&gveCElA z1`Pxn>Snyq&V)`LAGi$j;jQUWjt67|KwlOBhJ88EvOtoJacASe1PbrcL2z^)tpbdK zJmpy4L0>zCPR@h(2nr(>m6R_k;_HWuX7U63%OP6mFgx6;1csFrd1`EM0}R1H9tP-V zf-w$+d5{a%M0otVBiGA6R)&!-zZJy}3ZH;@d+ zyJJ?aRwo-UyI5Bq&M}=2SOk(T%c3-Jjz2tVQg}uk`V>9b$N;p{z(m;b?Q9|@Sqb8R z;cF2f3|7vn1GgrZ3mPe@`f#j_6DA`i^2%z1?Dw&5Wt|bKTd#s5Z?Kfn`gvvh<#-oT z+B6)14kbtq6+vlPzcP>xcopg>gtRXHVt6RikrEQ0YDTabomC!Qg#EvJGlGrX$ zPIaoPt-*?elJh)?TzQgAwFEUBtUW%~ z;?j+9ke>s464};HXT@u0s32fWVX@LJOJ~#C@v6~cGZ~cm*`@%Cnt);FT@nje2So(y z2G2vu-T`7jGT59aF(W3>R){C%i@WEG9hbgxt3he8`67YnE5~pYaLMe;#-;##p!9%i z6%ze{#0w7KCmwH&UYTXZS>OfHTO7`gu4VR(yUC5fl2J;-sQOWSEHh+4Zjy}_Sh$e& zx4~Z-l!#xt^a6t&3Ne|%_M;TSf~~_dGks8B|F(e%r?1W67+uL{UIXDuz`jmnAS{@z zF20O-5f2Zzo2YK9H`%n}+|TkpP)I6R3~O}48>Ff@Yq%anH$zBT5gkF&ng>gGr@`Y5 z9VyI?oVT!ANk+?gte8_O9AV+K)}iEJj>I5RCLW%kKwDQ$=Qb)PQrsN18c*LGzWM%-vxgYm{~uv$L*QpX?B`R zm~Mo61lSABa?>CfibIR(vo(Xuxeg#8Q-Cug*gXo+b1%5vP3IRyNk}s&Xoyp@tSv&Z z1s!YzHxiIUgt`i#V%aQ;Z4hp=vX%z`kuS!JhygM45w3$|@Zi}iHxKexLHX!!Vs6N^7Fv_K)~nZtusr5?1JMM7|RSj!Ov&dh_$T@)XNqT?J&%Xk+ZpvWmQkJvg5Y`@(J8wXj9Ya*MCLlZ3WOdSCr z62Kvp&$tFm^pZncY=3Y4$FmfyZuk!N5!qqfnEW>$dVTX@Kg?w)S+oIe*8U@H6m$Pu zSYS{K$Me6zEdt-1|NS>U9cY7Go=gr$;dK!_e*|^36)I+{%*ubM0HOp2O#|@~jGQ_G zBT6n>HVT1Z&b%m~T7lfg1BH-C!UfPp9dJz}iH@QICEg;fxC9mDftoUs`!kqZ=Fmf~ zHEED6P)44ru>zI`2L=WD2L|~Ex0GTSI4~R8t1zCaEz~vnz~spESJOGP-eg8g4>iDx z#C0pFcFA2Om||SE{8H6Lm6djz)?|SWtTag*y)qjtI)Lu7D2@5RhLt4cD~(hN_RPTF z$vOi-Fv&EKwn;KjecAwz(}HG6?=6`zSte7Ko`#8J%`hO;Ai*|36crzv(5XGl6^w@n zU4#c71Iru9_}CsP9TSt1(f76;V-q^W;qP5LwT(+ijziy*;$qvy$I1GeWl;9>A924y zC)gNvUcLdDCDZW{x_waWxy}F#E^9z&U?@y?>gqMghU)a1Tx{v|-08wIrxGM30($Ns zD$z3=FoF=$3iypFiJ#*A2Im*ZGIn@ITQZ#s;(d0J=j_o1=Xb;<<@6lw13N#Z^=7zh z=JZGeGCYQ*SQj&@nVF< zk@X_afyquQ&{{;HHJP%-O8~3V`32hRbbgBNIuv`35`l=-Ac=XMUqGLe%K16FpY8k# zu3xMHh}<&5OX4qSSG8y^?#AgIq4AU1Kt_e7nV*Bkohpo5>SMp0D%CQ4hmcaPlog4Fe9?DihzMsYT67JwMJDwzWNVX z?cgH?IyVT18ZpIKg(av0B&RLQ4qdmfN}wzp)t5$=tTt@WANGN*A5xNPDAJ_ZQp}ET zu?0yO6DFZnX+;F&PL_gaCIbx@`cRvag)ytT_-kXV^%42G1GQ-qf0P{3AD?o!LT&Bu zkFRR+#~a!B5xNu)>v9AeKZPm_DSU1aiGpWVn2;^VNCS;U-Z5w?z+xOZE*;Gv5$g-s zL*PH@n}yo{j~^!k<{xOo{rWE`Fx>h6@37D}>%V{H!#L~EIa{^Pf{xiL6zw~8g$GM1 zUrI_WLLeteEEQmu6u>LU*=DuLY~&MJ*LnbH@Q}zyh;#Ng<4=Oxl(UvxG21#zV1`Zjpv-m+eMe*{i(8e5QgA88@gYxf5 zd-=CB<-*N$T4|8Na8D_etkNQ3(KJvl2`-EM<8@ZJp@M>t0LU~cYssS52KF_~F2Ky0 zwBVpXKL(Z`l}2Vg+M!f)&1YmVsb9Fs9?$knbj}MV9zF;Qx9vE3;C&?`_z*858HvRu zoLjtE$g36Q&^Vffyi3Q)EaGa2$yO%>={&QEnI2rf;ZXe@EEHDgr&L1L=i$R#g)SmM zi=inwjg7n@WIS03;daR35`Ytv{6iwVEmzmN6|n=?1D9I1!~`l%s&at5`TE;NTc9h? zDlVvBui|s;vs)Di(Syg?4bTUK^0a=#GIncm{p3ycV*80R@^}ik5Qu0P-puqGKH-7t|p!4yzJodKiT!31**FLj`c5hXDZks)mAIerQe?Bpy7ahwtSdjpU3h>)T@ zRg>|$n5EPM!K8B#9S1(P96T)BP>1*>VM;6v!_k6*Nj@#K)$wt$6nr%rI@EHhUd8P= zR{r8VJZ!cLhCJ@Lk(EC!pP~jPOeA_N9I1qHYz!4m> z?1I9jMSj4p7xG0DX@(oCi@?EP+|DZ((@A8KU<|}b*Q5k$-frwi3l0l^B{1qf()O5Y3;?2FEfB|@F7(|CJ8*^fx?Qx zs?!Z-sDxA?&7^{Cgm^hj-f+uur~+|JCycj5$5ojVr#P7ow{+m43|8ah7bS(~6=6K4 z#jdh7k&<@E5`tMd2xfY-g2>kJ>?RYbA_P%#!~4OU1I>x$aRI&(ZU&Fa z%E*_iXqSjp}W?bkicJN1BL@YB61br_C{efT2Xb2A7ys|89?9sz2sl8Qx6^$o+_x>#m1eWVGZ) zlLDr1V`GN}<3vzLZFf{grWpMn5*Qxn6#p3- z^hW>x8y`lgOAsU2f!3D5Gjp60M{)VkH_N2agavWhb+}ic!}(cJ4oW|Anw>`JwgD8g z-2xq_IMb7osfxV0@X`+%6$_KF=b-HR5CF53wBm!MDwDxrGD0{oag+|Gs>!7R9xCRj z7tEvzkDSp6-(-l4C(ecm^#*$&-jhPR2oN)ajOvIRR3a3hr=Rh+*^na+W%NN=;mOee zc!!k1>H!bz*rAWnA1r`DOS&9d=E1GJ_!bXB#DhIzfD?%-xRVALMJ&Nl2tGf7Czq^S zX!ipIdeY>i4ay1bhslZ4Xycsc2^&IO{3Jii`yatZxr3?@MuH!sI@JPu7j zz<8j@xhnyZ%&uD$)t0?Q2X_ei<9W9cF(rlg*^O4MPGj@(;Xie#z)PvcZyF#47O(I) z7;`5uGPTjkFF&@nw@7y&1B&zobAtkptrv;};6vn!5_p2F^jO*HbxJD%K*@35WT5KV z;6CAdW|s|=;CA8=Y+mv%A%hSCAz(2A27%knX&J7^j@K1bTLPKTv%so^=Zpr@yw|cU zbRCUX-$KgUD?Qgc04nOH!7{rU-t9vb6-h{TK^K&DY6(4b*HpUIH^5J-kb1iVEm9qU zM;XouoSwe$?i@<$EraVJ^FQZ)c=P!We;lLF|A{t=v;TryIGz6q4Gei>|NR@E(#L~xzdLT#r7kYVMo>E5-4?z{kW|*Z@3a^h3BKOjl#IYj{mb!IkK%nki8N%kVpQ0p- zSKe~fg-6Av%tk>Ka&l4|$0j>B%s3#J#5o0W6hReDN!utbY(xo59QYED#*c*yGrgg2 zC0utSu&>*1Qb0*lI(AByQSg6=CQkcDbZxU})=4K=dZSJyo0S%uQu<0>5niLo-C~nc zVw)7-Gg04%<7gnvgh6(H!_xuzzALKIB;8mn=dkEPBoN9D(O*u3fX^%AbRS%TQ7$bj zOwx)d#f9ndPvSckC8TuD&5sUrTO%k51SRx+IR>W?e&x`D)_b#P#2a8$fxbZqke5Zh zoUfS$_{rDtEe13?Kd(^&!`*~0rG$*AgHsAF+u)@wMw87o(HS=pO!^1<2l-hNiN3b4_rMMC_(C>uc#gpL#Pg_jbBLkvqy~77?u+uOGilt3yiT=$KcLj zAtdY@bM!TQL=GCh_BM*M|3U*D?|%*p3VO5u_pf|jW&e*oIK>!*I16;~HX-7&|4OqE zCG~c;3>k!xsesD-1NI?;>)u3k#^YZ#6uIV0YAbTI`rk4aaligcEJmkcVeos6b|V7# zN~R;K`G41XWH|VZ0aARM;&FP{k?` z45Th;2UrOr?PMw)lf(0C3>2*~&}EJ8c6**kl>y+f%R1eF?hq$H6yAJ^VC5V^xV6}G zjc(w;Cc+my3l1e#SE}(|FWLNM@-enc?#f<|N$#&U0^OifX<^zvE_oZ=9mj#+HmleH zTtNh}jO=|=aBe}gW^CIyv2EM7ZCfX{b7I@JZ96BnZJs3mv2J;iSV$)WhuW?P_n<1UKO`k2l=h@pPS27Gp=*NFo~r5{Uf z&n=k$C?1flBASS1=WcOQw4Cg@i>oC#qSPoj{+WK6BA&#wYuKnWp>zlZNmAr#+y!<_ zHz)#;?l=ik^lMKqiPH&jN|E!8NTRIRQ}oI7J{*#BxjA=MdBf2YB3hN_bJ^61Jn*a? zb54a;6dM^2#+@eDaLV+Qm2$tbVqQ@aJAG;^s{L@oUi_Z zCG5(+=&6mYI4h$1odOz@jDJX92UQW{dq|F`ftnqQF(lr|+#Ljn26vVr^*B0f;n&B3 z+FFd51_)cMD4ZUxM?wsy3G(-GlOppUO?rvX_rz7DAHq{=1lp2mGB&&?W-L^`8TPpf z@u%zZ29yAEv#2DDQ2Zy=-(tBYgj6#H8lvLl_Azjzo#6e*rsz=?3@kWNmwlpI} z2qskZQ$XgV=|%i8@+NXnsZML;UezSbzXzYOmkKQlXqlIB^u;ZJOK^Fkq(>X&4598)}BCDvzl#64rLP z@*KtQi1fLf;Kel|eS&1e(` zfn7N6Q2rD6i>yV8h<#3Rf%@6eS6o?X01et!&dOMMb*CmL?xFLVFE|?u9)uCO{jo+* zZViT%LMOCDY+{7W?7)SC%RAb`PjM76nH6{&LkT44p)AR(k|=?7F|PB#o1WMfbfPYF-9I+Yhx+D2f;$8Um1p{v zXwS7UXLj*8Kwm@v-2+gdWu=58%{1op&Psa3EG@9AGn7Kl(O$>yiP7~(C2-mbI^8G+ z{^nGQuKQsx2NVhGamN-rBZ+m%8Jd)HT)9*RuH?>oJd~cYVA;f*cBgQSp2dTwczfJD zLg)avrUf^bN>d3Ts08Qzx7j~bkIUQ4Jo|!A zOzk|fHY>aqZAt*$U(x%&!sK!hz$dA}6aCLh%NXxt zbWzGy#{0|E4f^KZ5mk>z+L5e`wIfNXWcgAu_79!P9at5swNC3&|N5$bEO`2v{x`v& z{-0Aq-+}B=kpL)oXn6Noz!&-VtHFD>^e01acpz2*zR6)12I0SG&Z|Dg2TbEzwAU%3 zXxC)m@%c0(azKxyOk9U?}AZFB@W`ZKGMKm=_o*F{Zhv=DrXba;#gnuyz&) zD-uy?@e{#N)_MQwaxx+kwiS_qP>&jrj*iN}EU3!^ceE8$?F1`Ipm&-=9qjF}LOvdN zfjOhGO}zM9B)2MWN5zm4&#}S;4yRI1%SZ_nY!M{=-DdZ?dOz?Y-~zuVuq4j(;xC!+ z@*Un^&+*>(ouZ&CY@NwU)oO33An_XA1ThSG$u}|C}o>K-Zf5;H;x6I1vw|rSA z%L$Ig(Z#_s*Tq}tCCbDx`_rw^1r7+BYp0hltF^&^f(}FVC&#Td_aI_W_Qz7AMA}N^*q9NeT^3)@bl` z1)kZ|VT2=ZP6w?LVbL@>p{5f*t2IP)E5F9TTeDeo{G7_S2X90iMPX?{3X)SfOxz$P zAA48gdcz_9oY1OXWOKbeo6^_#tQQ9k=0DbhlC>pWJk|Y+qxA|#V z2uT;50m@3{x5CIF2p;9+6FD~5`d7JTv{=S1WDTXQYC7`*--swxp$Y`~Bx|3BA-nIJjeL}xs_clz@ui)J?ZigIn+_buR34K?vF3cDK&buVvpKwGM zc6HJa%_}!2AO!qY*@N^%?)HQ9V7kT@wX4C8a7kfTN<&MIIQTW+|B@d-x1m46C(xg6 z6QX0A3z+xW633Co?$L{B zyOU7K2P@xZZ1$GwmG3Ij897iK_$X=S_3P%PJnPhK%W7whuM93}t#{PIBjFHX;m~3j zGWBqBz)uX?OxFu8fy=4^I!AA(RLGjv(h<`@^%!bU3`HTy!dG!Ql+x6!jLFW7r_%Cp z7`>=uYaDgKI6z|>SzxxR=uiAq75d-(Cu&r{8VNaRfGR$5KOlAI2YV#)FBb+(DKCqO z@hxpxdrZSnex}cP)j=2oDK}MZgOMwfOrZAGaHU8^k-dC{yW&`9BCkSBJof@ht5&%z z4Qu1ZO_c)*zqd4GVbfs;;^B5E84=MD84_N-1`>p3SIrhiv;~l$Mois&Li1=U$eq0V z3sZBS(d@jBxrAkKLhbzm@|_JyL%l^W?kae_3fLIb43hJ&#<;bBHN%tA{jHE|ELNUVyaR9tgbvW_;PY>ZhEi@2=B!p_Kk zEN5`dgQ*TD-JsL@(3h(e1gJN)QauyNvFv1qW-#jFn>_QzsoE89^7l@pbn#?)9*3k% zrcV%wSKsfztG|2l-o~&6g1A3scxnagQLO%R4N|f{V-Re%`1u8aI zBdxBvbp6#D7cs)zkGavhEWtORiG{IDtq7YOG-I~5P4dbCRS@B$3L!-yEYe5-#A7VR zAU;?;i1zX83ZVuOGq6OKOQ@m9cB%2LZtCpt-~I$HP1Z11TQs=VpYC8q!y18gLtmtZ zK&StVj2O0d9CT6g@Z#|oezwC-k!kvAaw^m{iy)Sm$6wwNV4&`X>7>BX%Q@Sn_YM;j zc$f_rW3brNp@s~j>4r>^hTh>yl=y*qhUY=c+2vzAzQ4KVP`|BnU~0+?;=4V#6!T+f z=kh%`^qt9B2(gpoRc(1!_?a5OhWZ5=)-5>|Zj>9ig41LO!Y?UkY(5&B!<<9Y-ow^K z%)s5PrVkSnR1%uYkI>MEH^|px*#iV%+K3BUKmT^v!6~_{m4}^baWE`&$n3;;wpR6ORJq!j~z_fG_6@LJ0gAoXb#kHqPao z4|b|GC~r56qHZ2e5OgT#Dul@^>O{SsO&xiKxf+20D}j|)AeuBv*uXTw2lwc{3FcDN zT%M-i*CCO+_$*=Ljv<7&U{HI~ zBk0QvylvG)rKVk8S6s`8sUGrzQKw9G0<1v;5=mE1P)I6^A9;4=Yv*f$W7^Vqxzi|S zq)}jf^nB*`}C-~QNicZT2%-iwp$1!IQsOU(0! znulpI8Fsxxggw0qzfrWd86E~w@2&2(A0t%_2t7+jSqQtvz{4x+&nMwt+K zIkFZ98Srq(P!&au!)atP6R@=p8Y(ZUvLj^QgkrUUdECY#SlrP2uI3igbTG`Os))0* zNgT4SFzqA4Lz4w!`cPp=|KWMV?Q=@Td=($D-^N|?*E}OFDx@CLmbl?~mmnaKJS!s7 z9iWutZnl%veKgKdW-4n?WTDa9iH~K`kvSklDdIblWR4}&ivCEW0EXWw3F$~>5%F?X zo5&8t#@5{g_6OqO>+53YeenHwD;dwG)d`}4@p3 z70xtv`K7N!PFx-zZ~n2W64H&6NKtF4iN>Ti0RJ%mHvfdNIS>-iK(wjWjn%LV&L#@f zG#o_mfFZq&L(#l}4`~1CtPvMPAFu!I-yFh|STK*|^tT;~0}X8Xg~7R)Ol1|@@x=Gb z<&=jUShsT<=s0Z;@59{PdL6aN_s`oIW%;&u`^sE3tnH{&HK&#kH=uqYn{kY>v&u>2 z$>~a#&`Y%qV5h(lJD4M*s&!ry7nU2=&V_zXt#hkn*(r+?JB@qHGnd;6+73@1pa?F*Gn3k&)B!Ffik zL1rlW^^XIl5nJgfuVjx}V-<}8HUa$|a+~20KQufUzb$~y5xwnPS-V4t@(2I1I$i2`VM+uS)@2k4y?kUo+(*l84D_guEK1R!ku3Czg%FZP# z1A}x4XA318;^_lsR-7KmLnvl~#1O2yI`#V)E;gZFM%dzAisrS@`nHI+bqdi*=tQA51&3WTFveY>P`b zn1z7-5!HNU9#3r_vuQp{MC29QE?Ys~r_BJimA57C6qz*)Px^Omc7+zxKxwTduR`4q zp33d2o9cw{*$iq55j-{=y-$h`9~RTaEhK=IGQ3*Mcg{alS7fR>MyrnsumX1=pWI;P zI~W!8vVAaG4f0u|VZ6-$m^`x$ho;m&W2Cxrvxxt(5Bv&?_cWp#H? zNTydVI_7;d4q4PsyWx%Ljpy{u-}P$l znFh2cSa|>2#hsuXf#8|J4WejFl1{2&tyf13j{O%*E^Qk)!KfWnfMl6VwDUZ;Atmxh zup7knZ3Q~?pGuXQj$OcGyh}~%rv+L_lmi+x!e53XUt7TU%W>dV*PV1;J8TGTkdy<%C#QM;555SxIicGqZiQCJs z@FYbPyL(bp?1t{K_BK7RTZq1Yr`VqxCZ#GG#j<79FPyi8xd}+evK)@!IYf$5P)tqZu|7l{IAa^kNPM49ZiVvy4#iqXa&4P z=wcZq;2_>5>qq~3)yvfENI__~UT-^1PS8dnTLOdKvG20b9M4~UA{$fby&fG6k zFrYn$>lK*TR}Lmn3;B2F7Vt0pYpCcY>#Iluk^ySMgD}q8ZDDUUxJ?4i7Yn$=FpJerr9&>_fS^zX-u6evmr z3sH6*>y({hbZ^upAIA&iLTFwVHcSUqtTBtrfJq`v$*#@F{+KC4SmPq|QiRH}rpSEe z{fXvzSgl690&5tLnGM*~tSMboi$RZ{$5z@stoTce)35AZZjEYa9n;2S$$eet@&V&n z*p#N-?^}OBIEf(8DtLGjI5e#SdqQk}%C$D19Ea6RQ-Q>gb-vZhb_uu2Tf~?DR$t4Z z|M}PMto!J9Q$r6gfZ-^^s>xzn+53~C%tFr;$_gfhEx4I-Sarm}&I@z#l5-?eZ(n^p zlR;{Mn>rs!SqSzCw1jz4#mFQ|aSHwrj&dgEk9lJtoh!8|k=bzW(knzxt_ITlERFR7 z#up2E)*vq1sYN9Ft^NJu6p{cxlLZ&thYIp9It~_^qxU^?_m!C1UmBRCNU|xIrN3Xx zs+y*kEAUIL&$Npq>zBZmki@ZdSksi7OT>GNyk1OoBeKjP&XnO>7qeZqY4co*q?*}5 z2U=JCD?zvJ1FUpp$z|n`uJQwj8V`e%_i{mp*EN2np$!X54)I6gP5WT|%chfz*hbQL z(Lf3O$8MRV7>US#PyBpM6!pccY#9iR;>f~GYyrY@)&oaBbT8?JI3 zIa^ioP)jJ_9=C)+>fu>;Me`=6l`mYCBH3dMn;%7d86Av&xxDAe-s!s=ZMRE;^>ArJ zwM+>q3;Fm*rIE5!iTOHltF(SKhE!)F+Cq}=JfzFhebE)#(++uJ>&EfwyVd{bFMiwk zV0CBROJ3iee{O^gISn#ggB(`Wj}Zl{I6SxO3_7$aA@jP~Fjkkf!A`>Fvc?$?N37gq zJgXMo3V%%$p~$rPfIZ0xa(si_8dU9p5(G0y67(xY3o1x$|9~ku{PJTK34d0?5MNdJ z{DghqAH>}e58uCBN&HjJiVell8f5eoI|Fm(nYVPsYYfAByVtwoE-5(uv+C;6D}D<= z{BSG(DbU*1+VqlF6TAH%f4@cM7XY~Kt8&!xL*IEMjbYQ4IGcI~4CrduZ)XTp;AZEl z4SfeL#G^9tun=vxUO?!fva8Ae!~nsdiSLjrnWCLyyT+&-b7y=AT{gF4Xo0f@53ei1 z3+o8=>vBKsSxy1)(+M4dL)ZbT;a?II>b3l2@M z_~gu1fnBcc?DhyTc`!;B0n1~GAm#Kp&6gh(IVLT(GLU)|?#VOGU}V~aqvz6aoM}Q? zBYyw_vI-QL8QbcW%*K2hSw#Y?{zBsZjbGK()0>0gOVp6;Swv)n(^8%grkJJ$UZ0CR zPApIV4KJdc+CU8j!vPG!gPKVyZ7;1 zmz#f6?su5DeI&k>P$_-WJ7qF>q1(aazfaaH!m9Rq4*cJ0G^{3UE9(rK(NYzi$dWtm zYM`YyMvl0qVzdlV?-9)flx`rC${-Sw#x2L;1LRYp3L z!$AV@LcKdg7s=geS*IXo{R%j>lc#lCn*P=w)qkVfH3;i%-3fx~HYK)z4N@?2&ut_WtYrpk8O<1U z^g-dHUVUS+DfvD6-B^${&}Q6D7#HEN$N83;g^qYyL9>X~qs3jh7XH%d%iWI}4t*bD z=SAYn>_?duKuCKjNe^|UII|Xt`D4VbT1OBz!hbd494bAd1`hEy(R7#7%zQ~3UL8Th z0ZSvYJo2+3K}UEI0Z)t!gQdXFkD?UWVG`_Ij}&D$&ta@S9z)7%AneWw?QRsw>GrP4 z2Jv2ekPu^&naB9SBGI-bD(@E4NV*{H4O3CLCH0cQSsgZ1Yo227WwHS2AbU#Zh|+^uNF^Zoc98G3*Z%_J+fL;lpf#$85Xq*u9QZm)YdNBRn2 zy)*eRlz^yUpq5U9qA%kYWJ4JWSig(EvmV+ahiX)U4Czm7&H}i2RkR!J(bXW;&?sPF zSERA3fP1E8rMY5aL$V#eXq068tr8YlxD~9(?DTnaG(p`Mz{j74;F=!D=Z&{*|Fo4h z3HoXvEPKqrN$#$*HxD}b(c+$tnVQBuIzD24G9tSD4IyY!b9>TIpSm|NTGpFc6#T6# z3P~lxqmSa6lhC8?HGm~n!&TO$o59QFZuHy%UN~f?$6InTHveLJyIc5pH-`D=Hr0k? zemSsI%z^+uZ#|A*a3av4eDBiQN0*0+2h_|U{h3m9z9CrfHyq#9x>^#91jz&x-!38Z zcasZ9QPr+lUK^L#D`|tS|DKzcNI7I)*STSdKB&P{)oFk8^p`0wep%8@J{oFBA^AZI}9had?ZJF9ke(?(sR-eM0q!oCOp%LTVun#dh0 z*_BnRt3|&Q5@f&Y@WU%*LDji44C!C@RDz?zS>H>fGla#J;DtIFf*l)Qa2&bVoY2bc zlvk>FW9L`r);?BHWeA`mZd;Re#4P|p9E>E!_STaWmJ(_s{Y7YBn>GWYUNSPe9B9v4 z6~XU1I2vTXhPbm(_~*;XsQeo$=aZ9xRiN8{#*~eyP|Lj>q>~p+tx+F6*AtCO?fJ-s zK#tMtN{w|^;48Tk>#)C{fYCMSdBV@4r_sM)_g76RIY-l)0PZW_odj?sC^Pp22g#70 z=%avuvD$_BAqn14uTAajQTtq{p@r^}B3D+lha8$Iv(g{TkvNZiaNoM6SCy(`Cz;?iC|z)gXWZDwVYSEWNG%ayK^M#Tqujr$5T2~}r`Dy)wPwB>Aw zGr&i)DzaFIlX&*1kI=y@fhmXjXeYU_E$&59$*Z#}SpzfP`a{TML6Y&8hn^c!jP#!l z+^}ByTZ2787HmiZEPE4j%c(4hm&!8@j9c`r92yHtu}Cb7u1azOUSGKNbgh`4BzaaH znjnP+zXhzkV~1e5=z$dH9jo?lNCX7G#RQ<|AwQ7DqV#_ z_aPpyunSZECF@B(yWoRaKy|wKN9{SWb)b*2^+#K7=2hyG@|p8a+5e-)h2E!BidhSm z!0}l8fHCM76tpL02#LIKEzb@Fv<&i06SS5hmD6ZD4`~a6tPivQF=n7g3k`M-J;&>F zKN`ftWWwa0QxMZdAx&MG*W<&1AaXLxex6AuX^V7NN{Iau+k^$0tKb;_dmzrw&1c}0 zC!4DG>VDZ1s5+skeOzrvOcE+#(?Bf=+w}Bp9>SrgP=*aTU{9n%r76ki9HX+$G$^$U zX*bX4--~jNt&@_fSgI8$P%#i5@(8%7jHzQaA#d6Yo-x2R&`Lq)=3n`^F(2T_?%Wdf zX`@DY6+8aKHdo~lnD{Wn&;4rT?&K4)XJvh!e7YSU`b$} zaZUo+>LGk|MzeTfo8Z_DpS{=h-SqKLN0$GM>^GP=k;Qv*6F!3Cf6VFr0U3m8l}vKR ztmoT1p-dK$c*kEP?9AzkJUlQhl9(egW?JW-9badOk@J^J{%8c0XPSF zc;itll6*UcFb%=1%D~^B)^X`9U1z6NX;f2HI&g9+Ud?_w++I{qQTwH*c_W&?;=ay4 z%1qiL#l2|J&F!c|h{KoaH7pggPNN#i)b`EPqKCb})r6jmS#0m+rcmYW6T(rC@v^ap zwS=|zBb^K8vIPB#sm&a{Tauip?j)dROzZx5YzLeg5@w2TizaPW zD)eq7xlmV1&*DKAF`&L+JMZ1Wo|(ZrfN8M?pQkGzXbwaSKTzg|6m zX9V||AFl?;CY3Q_*t*ZaQL8x~I&%f@R|sTa3<%q2f(BtfB{FTAf9Vg}DPRlnX1%R= zOo7y^^iO6Wby025{2Mg*<>366JsTYbO#gRkwLBM%K)=l7hPi(M;9-X8kz2jHy>>FX zWk17BE|Xt0R-`=D1KD$sS%EB#%v=@{=Y1RbaFy>A-kfxRQa6yo^W~nLCPLp@T*H?3 zfkgsKyZio(H!67UJIXOI5H&kXfAOHe2W5osRg}(U#(}+cwe4cB=-3nWc2ccZ13qch zz0>?e`h+2&9p;d6#Ms7~ohTawQ7~Ak_y)>R&2Xd*s{+pNWA=4-D(sEe1U^e?rCy;+ zF0EN900I5Z^U8*a@bp{F?UIJ4)HO(d4$-bRDyX#dIMT5Hko&DmX<3Ly>?ATswt(fR z!#{=Tncs1T0PmWoulO?dy6n3HQeR^cJn{VX5Q+6Yc63)!*q+tTnv-x?!cDt&EvwTs zgL?CoUS}_0P?dOXk*~Fl!nJ8WSi2JcuaIkH?MsM7hje`#k!hW5H>W8>8R)la+c@NW zmW0zhe#?3+D|EiL^Dh)f}JK*62ng@7cOi?GqYkS?#%I@q>=-n zblGov2a&XW)HDZYbk{dIa1agcG7ivfv~1$1F{0%U;@!lklYH!piA`yH zc64tC!F=w1-q_?yX*+kLwGbBTG69jQtJd?>$;8#E1~rcDt(^Y@t^5a+oT7FS4+dT( z;j<=b-O^^!b&`rHJaacWJvrM=oLMD{+@Ry~leg_Fe@c5$v9IN7x8$9$&4Xj+qi>TZ zKJ}dt^Fj6xK#H{nxNF>XFZ?R+AX_wj0GSgGZ1}a^u6ARNPm}!X*Byma4-}DYfx%N_ z=)WFC>n3rVm6!eCR=6N^nOKmg!5q1pWe`pBrag@@UmyYgu(+Yt)0?s;tXjtPhL$B(88?3$~ zhB%V~(9&z|+TRg{Ycj)zM;r%)SL~CO*+sHG*|n4ej4(AscXSD1Wlp3~eCip3JW~6( zq2=q)XnKc@H#5N^%_XM>2-w%_P8YzOlU~4CxlMk{fm0?)Ffp?UNb|IbL_lbKEs@G? z5LP=Oi}fBO-(hdy{MIc9$lNQGjlU?I)q-b8cX(S#gIm^iGr+svP$AC&Nb)$lYF~M= z+jJ^`-Ssu?zW}Xq7MX94Y4rCf<&W*83eC`m*z+o%4Wm7-TC_ErvxwXiSHf@_+spFk z8p}D^Dd^qCq|lL6qw2mqEW!!qssiT6dMx!^+(N2V1=nwJ(%z=nF|k zF;f4u81M23R0>fM0n^5YQv=o^CqhfLELX-~p(OA}Snv8<(c}dS1N#fn!H5!_Fd&K% z7cOw|oH(OMV&Y`hp6-&W+~angE5_NxY;ckyFxAcmx2VCKAqc3Ug$_n!CJZ6gPE_l# zNO6N&BQq(~+YK3(hMpTazZ{8nMm*2FWgdwZ_PF?FmO|M1d;7)xIRlqb9hu@>s!PB0 zraw*}@>nBzDgd1w9WA|flRwtYnvze0VHV%7Hj!D{B{ZMoQ7ih<$LXcD>Okg6LkSU@7YF4))>OR9a4_?XRz-7R$27dJ zhk`lyld*H#e8<~z3_MzKgRCbUwwjx)i@ywWtTFlCa@mKfN6=&;YuvcacnpD#S)iKD z;aw+-TfwAou5T;|jwlNt`b%D7dL!6r+mnn_ky6wxI9`<6fO*ZFz-EC|sY49@s0(s? zL18dIQD%S1gZ5bzeTia+Gw;$BmUCpG4FyyWD z$2QD?b^!@e2^)e^VUQxVg!TDM7e7LQaMfA~eb)L*qszXbGazTEW&`(#BsMhs1eF{P zITf;*=&MYzB&}ON6Zj7u-Re#xLX}yR!8e_{*9}2JCe0f~-r6ju{wjP~f{c@iHWhRO z76rEWbIDop_H@X57v|~hM2TfNSYK*4SHum>5`&?3q& z`C4TuMVhBne|?=0m*6gJmguY@cz!rqEkA`U|5ZmJ-mq}Rk@i;0dV%7W+D#w$EkC5a z(Ys+58XR(EW7*B_R_b~?oMgP?Ud+R1BGPlJS_Es^F{ojhDA@^ilLYGZPr5NO&L`e% z6>#Hv=0s4AsJEh?uw=e)x9hd9kf^K-(`#!xNWEd6Vh!cG7*AF zh0AuV|AfjikODKCV_mm8Hw+y|1g-2GsPk&u5qm#R5ci&(w?ncW=3%=fd4O(=6*M%X z)tJC3;GKp>1l~e6g(F|#98#kwLy=x>ZHuRmDHeV%-%J_Mp~{=-GIDYD566+<=jOwQ zs!7X|a^x*_DE@e|NI@?Ho`cKic*;@gE5uAMT(5|#7!5yOgTU>%@^ zSu^uHvmw&Rfg`B7Oy^Hd+QYI%&jhLIQL_(mEZ7%@v$2BP-iWBvExrveIwr~H8e*rm zQDZebPmGW??>V!5^Nbi2NW{|h!xrLV;QOnOD7%az0|o-o0u5X}2}|6*lpR@e(Eotd z`fr>eB&0Vp4OjO^WcT`fhwjFQalIjpB=?TML5Irz8o)4*B~pi%d=lgZ{;)dd*$v#jAzGbfib}ue?V$1igKmz7Tk+Ktbn3Zx zsHX)n<7DUYfI$C|n$H}sbVbL~#A9t@0a1xWcFDD4L-WSkXmc#V{wXqW;gH;q8bRvD zdI9D<7IFwrDy5B^`VI@fYq8d$k(POTT5O;82EA7fPfGbFo8eW<{lZj0fDNuwZm6c@ zikeMWZLMTly4M`1YEj~fD0tz6I^gFkzu6jiIstvP4k#5o!{JtE=CB(3qZBV_U7YGG zm;hj+EjEsgAKv~sal%0G|0pb7b5=%&%qVPrrlnc=nx=A0uM}|C4$9dlYv5kOoSZ;C zC-XHg$moTRBg4nVF3<4Lr71Amc{+5n9GZOub;h|hHL8kw0qIAM8%9MY-Z)}NjyX$l z*(;3bEqu1kWbWBVgVqa_r9lFT1<6pnZ+qvElMrxMFIZ01w0HAxj2B=E$XGAVwEPmM zo!2fKP70gqe$ur|04PPY?p~{hJK?bq#4dDxeo_!SHE*L;EhTsw=nwIz zU&UC_Y+;Y3pK=-;n26kaDZRZZB-dK~U%R^? zj(g}}KMd<}Ldk^4RodOELz|h0xLDgjO>xMk08c&AHzQc;*MMQW9mDu&fNnCmbJAq+?p^F3@d`B0Rnp~;XJyP(8RF5mm9p?v@ zrZqaHskDn3f5S3mw!J3+2=RR!rhvPL0Y1JyK2uMC&8=8!brUG4OKGMLd)=%e#QIozW1oVBRd z?w6sag%0&rvZQqN3ap0>8F3qjLISfEofRq8n4+Eb=teA{qCtB-h7enuvrRZMumNHU zw@nZpdvE=RA=pwwWnI{irf!9#nO5u?4H&BN9;SQllG&zRa?xLmfx&yB_3`L`vFB8n z`M1l5`m**K9F;8q3#W#%qhJFD*>#H5?=>RoHxdCK z;nt38+n3&SX$BxtjNKw2#Ap9_jI%NS)xE~QC@j*h+RnK3MzN@93xQgl@xFl=7|2jl zlPUGbjt4s6A_cC9!Ix%Rmf}14>U5nf$GK0cPDX;(;Y#{SyjojhNQ@NWYQou9N3EkR zdD2K{q4@C}9-+qX?oLq#!w5qJg1>^pe5QVeaFNkjr!vE7BVpD0>r(Q{&nO{`a1S)| zA#aloP(9I{yvpg{mn+e3y6GTYeNIlcK-Hh?rE^e1-SpPwV(Eh@h;^7_R>8_AMhJc z4d=(22z?#ndHN-Si7yqQ*TNKhp>m93)f4T(%-9)O@r}R59_W=NgBe5iEOQMXslG%@ zR;-v-5HdaYe=(5 zkXQa#HX2(6L!Av&e)uN;S)nv$Us(hoUb)!WM>?o*tZAC=Q-e21(cwyJ|7MfJ6g0S( z1$KOaDXf!6Vk2kbF@}*u=VV#{8BB{Y5xBO6t61m1zfl)DzKQd#b<%V$yk~A#4!hs3 z&$ACZr)4fbLv%K*&{3NoOcK-Tu>wXHrJ-hwMGg5wr9D2DJlz2kV6|Mt{`AaiSb_p| zSm5Hxb|&fzuA8AlU!{fCug$lb4YK}~o$Y)$EU7i(rCO>zboEVA(w-}6u=1#KiUK=S zW>H>QZkoWf@TWQ_Jnh(04PBs==0#=eBrG%48*vB{Gq5Vsq!n(+H9#SWB|&C#24r3? z0p4**cZ}I&12hsQp0^8`Ku2Y-K@C3M@8}r?95hB)s?cdV?#}bCuD(M2(}6y^*z-WH3c_#bnmveRkmo5%<7WV`hjsF-R7cf*M=~LtY%c_ud<-Y-%}J zweAM&bcddt7}t|Px=W%8FDmDfTgsnD;dicI6=yC-ow(Xs`#Lj%g?=^6B4ZTvq$Lk& zW_dQT(o)>g!J-~lFWYRNw1MqP!{RqfBrZMdgP85^1GtWM&&mNB5f>Kg^;J#CC*x{l z#yB4xa9nQpi0^a0-D$E&-w|35ykqhEem^8g!@O$i;*Vwc7W#*Xe@$sy%!2R{BXzWBvFRUhBkWU(Cq4ITLCT<%)kCczXCRO=RN>-w5tH& zTvh*CCz7=xidO=GqoDj3T8b`aC!FrT zhlw!nk)@LxG^|^k8udoaQP+Jx;ny8Z8qog}7)jCsD2^J>nk3f%o@ZhJV=tq#&R+}% z1C3-?dw?R$yyveLgm2B-8HW?4zXDqid&d~w9@9=Si_bpp=zm zUHP*xyMbT+zAU(auC8SO=7Z+7zX$yCgVvgf767&lpz{|{^t^riVKCgJ3)p@68L)>T zz+iWJ8L+vbeFK2?vV8$`g<1VjyG>LBy6OQA8K;1pni9aSF@e#~C;|+kg8DvwYPqz2 z4XJc~b1;7Z{uY^i?S}GNL#;cv`1`~+etXd#e>wn3uL54etN;cV09fz-@4B#+hCX5? z9PnY<9suAW-t24c3nE_^z_ALLeVJYSZcDHLd@&#(p7)iB&(g1cwcTs30@1 z=js2;|Mm*lnYkL78o3(LTX_F(*ZDs!$oM1dtgJx)k^ad4oHB8+vi(u^-$^9oy{lAn&7!3uqcWxvD1bU>g z8Mn!f%Dp1$Rk8DmEP{5^nsPlZWtoXginJmiMw7gPg_S#~0m_2q z(C=D~^w-grO-eCzENhv4S-fIRkFkr4#67uYxlDVb5g%ua&c=2&P_531K_jvZ|?dW)J9}IG>w@+s=@*v93G(uKSTONvJ7WCIJZEn#bGWEIp z-Yat!i%Em|DZJAK@|Darqpe_@>BifYNISURvruR_Z8OgN=JrFM@9*stl`b`xP(Rv| z{MRJH{A05mUAiURnI*|Vu81B1@-48&}tZ2=P*`yF66|i zv6PM^?m$WSrfMeAXGmkZ8gy-C8szcs#_Sc<6tRruEO2+cBzflU>Ef<*@b_1Ff&24h~5bj zoiP&8f{gpV-(7dzcfI$nb$@-|{eEQs+2@?S&e{8U)?Rz9=OAp6wzrVBUbh|x0RCAf z@rOacV8EaL5Bs}^NJ+{3*V%u@K~hpu5&#~Fe^x<%eb>kP5A=Ve_j9zjclm4JZ|nan z{tsw>0r$7-|E^o^1PVaPJ5n705NH0&YXNd?e>sRMQN9WXE5}UK^m$d!B5SL}{RP_F z6K|J>t7}1ZuPFeUswe$Xfmwl#3#2OXY3s7u43E9+bcKZ8e+VIZcW%+o?e!@pE(I6! z3IefFSeOHa+KLfA&(1F9E3RH_98V7)(;-%OtH2y~WmP2K)9LNT$hYw4XvalAN$A)K zw7$7wb@F_AP~kZ_cg0b6(HJedIx+BTsI#}XH!q>}jc=%b;$;l0Xg)pv<0D$R_24X# zH#`0@eEB*`oK8*S4+SkaI4Sz@6#d8wEF1tqNOY|Se+R<+F1xS21-=3UmN zMPY{M5!lrmFc?>V-2f#^1M!i)R4(!Azo||QO~0X?W89!}2wtazM{@}VUro*kAaTiH z-J;B-iB*GUUJKR_=MHa{ey$3c5^=}!m-okWfnF{8iVoJmwE7*@pAs*!4k)Ek&hUe# z)g{XW_xY2lt{#yiK`MJD>iLyBgMG*3)Hbgt-yp0q;0hf|?rt)|V%cPq^6*@~C z&M0G9rw$9%JJZhu;x*{KR*G61eaiETiEdcO(@qU*!0-rxul{$j8j+2{Hm4 zNTJ4;k$MZn$5iTo$(Jjj?EVQ3XFQhzJbN3SnRY~aTJpZy z$xq+VhyiHSOmB4veX=uh?hwMvaA-2!KHc;eb!^pst+DfXv*Ku_61tPrJ&{lvuqx5E*T(CU3yc-l2XFBmC__prLY|pS4-PXXk`UK_9jmHtbxd|Lfb= z=4rl7mbxDfcL3itv2P6BIa^h9Jea}qXft;#CnX__Wn8H$zkuDag?bcie|X2G0OL0G zumIVw{o_z1Y=DKx(KOJL{k~z+%+eR9x)4)d&6d~mAF;Jhh_kbJz2`gSDTf&QYu;nJ z^*iTO3OOMh`OF=r9r~}Q2C~uBt&vn!EjzBre$N_8+*p1?i4zL@7G~34RAcCTdzqd` zRrJ>Ud)@5PB44VG`L?#UU;@AIsgkB><@J10bX3&Y6k^fr($CkA`TJ$>ZHwfiOI}ze zCspNWoD%c+k9m-g*RilJDnmI8;g$x0S7sf0z4Uq8imu1i;B41J)r4xvkMet6_|}*h zIjbAFV&nMkfqakBhGvTC6B_Dmw*lTSO+I$kng*G|R{I?>Z@Hmvut69c`g>;}A zvHGtu+4hJMBk?38XC`gX^72EObaFNpGL0ee{_^q{8n!cyw;RYLMPdy0H<x0IgXyG1 znFGfAfCz-W1#WnFX$ecW+zD-5(ph1Kv1~9AUh@$&&VOwy{ z>SBEl^M@ix2F+|#N7;<=kszGt%2+WJvC4Lv2=Ry=2S{`nqR=p!Mi4iU?g2&)b244W z%7Ah(W2*C_pdR=%FgO=*FhTOk+N(biIYl~PCCc_Z&nH|xiwmz)C#MD*o`lx4PtE32OII(cL-96iY)C-!VZ!6dCWn^Nu*wTV?x7!b*{XFX#I8UESRi~khfpli_WA2*AnHgD} zS!u=X(J87O05At3E1w#)J?rx{xZzFXyEosR2VO6u^y1x;o?WjuU|b=$z7~a|j(>`U zi5QN)&@|>tid$^TtnT&HUC)pmc$gw}xJ1K%S?!>qlH1+7pG>lravzo%hv+?N*sEW;ACB(-bb`mHF-vgM#DWHjd}u~mqr}TGOX-uqoE(EwuO4d>9E)wL(*RC3nJi;4H4jXIq=ae$kVLAcKVv9ZqH#9CI z9?WMRF*_DJl1@;MH-kLOtRc&?zsNGYKLbd+8B9`@=KTGe9R=?>ouD1%c-Kqm!K|M* z{UzHEFD}gJN32o;p1}srRmKl(WTvyRVh@iMnoDJ8K2TnK>s1p+YhNta;j_~{;e_R- zCG(44n{&s*y>^7qSo#DH&h;x?BoTQc$Y-o@hV59k_DsWmo z(k1>11MdS`9$y6ji(L$8W*EiQ9TbyQ*A^pcqx0+np+8Q&$= zTddnFaFuc^Us$cJ_&DTQAC<4c*Qd1L?y|l%dQndd2kspc1$BbMvSq8G5K)9PXtCBi z(bTcOyoCrz`mptdb{7eh*I0nVs|-ZN$&F;GNBw-VM5!#3d%bd6d116Esoi$Kgpf{m zN?~qn^@>J=>uk6v%@yeT)10GFdK-3~V>WJ7BW*_^sj%xl33)X4#AK1X zrk7d=O)*hZZnuepXLb#q;_c>U&00la|HWkdYGdwe9&-b>2&Pg7l09*G<{PG#2+aA` zaHgD^3vL5Wuy~*TGeutz6CJT4SMq4OVS4jLNM50^jEspFbgCaL5c)asrkM-^>3>9~ zy3cX2Bs%E#wF%#8(1~ViI#cSkLLJ^6Y$LziBQzbk&|kXZ@d{rtF|4Yq$sfIHd`|;e z3I=lUYM|M@uKHT@!6TWeG9&u3hef>V(~utSu?wZPr|Q<+W?KL8fm%ubw%L?$xJNyzIcA@A`q2c_c8+A*xJ2 zzV9HD1!pYdNowq#;ff0i{HPW4M7<&sTsQ*ypciih%;ppvXc`jbRXSSzQaw(&3+cpH zab)0`CcEZ=9^e}zF?QA);IE@QeKge%wT_>v0<$GSynXkj9dqjs!$N(AkNveyIF_c& zq}oxaPicH(5u{SP2AWNw+1kCoLZ29MaTs?YUeVY~+^+oQ#@Ivst@ar4ARTjX?Q4j_ z&x8#3RR%|fBFpR_U8?;l+nEOe{!Clpm`=;k!l{LmANGmP3P_55<7oJXr&Xi2#4IrM zFn6}lW^w(g8~p$d6fi6ett{J)T;X-M9yC89N&2#u^_k<5Z&h4dfRfDEv)6EbBQn}` zs_i(BfQ1YL07M}!45sQhU;Z(E!~)z(*Sd&N|MKgX zbdWJ6{9gGFhHr*Tn8LS?hxwC=XTwIACy>GG<5cXLstGSh3k5bm^ZATbk0=NfDN3Lx z_R6I#al*B`)XxcrHba5W=%UuFzIdvsE^w$XFJe8Ogvl!NoQ`*AU(jp}Er(`>s$k2% zbhK<0E$aF2NRp2k*FM_mii3Z&ni5=k+pXPyp~_(9a0Qm(4^wsi2%%)gMrJbvN1xoq zt~}J{adWjb1M{*$UOm_`K_pooVx#f%XO^!8B0n1kph-mA`4fz4dTl+STt9cBU17 zldEs_Dd%$cY2lwT>+%u^SaaLr1wj5?Mc2PkU9R>>Tg0D#0RMmb9|V&5ANn6GA@f`R z|0~+$zxDr`>3g>Y37XDb(Pm5Erd7ynF)^gpG13-0tp>z3(ME`Y-azgi2()VvLNfMx zv>6x`aT3VqL^+JwKT_eyCb3fYATzhk`U^_QCb$i&MGMc-gS+%CuQTr3hK&`~#abiA z=O`c!&YJ`Lr(r@k-9-0pX2A@6or6Y*9KS0+pF9UFoq^t}HlHprEpZs%jQrHS;qbko z9Zi80beVFZ2JM(jBDq5R=ItOaCrzD3MC#Qek}ap9t9Q_sJnC_=LfIOgnN0glU*nlc zcinTDs4Zh7TDEfgZGlY*B`!wlq~iBUO`otf$&vcJlbRE<)bvr6bF;|E*>{;F6Iuxx znzxx_ReVLa`Q)kcp0JEg^7R0dXv|#9$!lw^udnM^>m#FSLIOV|7@mkxctYz|=-Fq= zC#_`;R;2FzifL1<90bmqkyxpwShqH2o5H|Xtgck#bdkkaa*N2{%qWR?9+|v~E0G3^ zKUFw~$#eTL z`?eaLyFh$g@wk%6>^#Q3CZFR(Vc>G)i}@Rtk2yw=Az2=Ni-V$7ue? ee2$8*UaX?{S2XzV9KRX(&A@L4elzgDGVmWHSjkEN diff --git a/lib/middleman/vendor/gems/ruby/1.8/cache/smusher-0.4.2.gem b/lib/middleman/vendor/gems/ruby/1.8/cache/smusher-0.4.2.gem deleted file mode 100644 index 06b26ba98d00eea846c8294d16a279f7c7afb504..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20992 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 diff --git a/lib/middleman/vendor/gems/ruby/1.8/cache/sprockets-1.0.2.gem b/lib/middleman/vendor/gems/ruby/1.8/cache/sprockets-1.0.2.gem deleted file mode 100644 index 6e7b9b9ede426aeefff35899ef0e74bc1ad20647..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13312 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 nUx7Kf;%U%y9 diff --git a/lib/middleman/vendor/gems/ruby/1.8/cache/templater-1.0.0.gem b/lib/middleman/vendor/gems/ruby/1.8/cache/templater-1.0.0.gem deleted file mode 100644 index 58c86afb049032c91ce0f174fa03a1e121dd716e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32256 zcmd3MQ;;T6w`JM3ZTl-2Zs||JPgMC>Rh}@HANv@XKyH zw++b#8qXfXYEB?%ehZ*Hy&$K>id)lkR1+=xN-Fho>QDQ2hdv2xWSxvZK1j9okK7&K zi+KlrX<3RRilNL1i9F)v|FWl79{EP@c6*Cn3!t6GtRO#fT-=$F`=;N^3o-wK-@!*v z;X#-baB{;4SA2wBfn6xzx;9jVrGf@<(aG1gGyeP6uYJO%XT6W@z3=ZG*B4-i*Q>SN zh2D+#dUq(Y--G9!`@WS4fFNY;X~iI@(>#@)grD%-~w=eq1&)K`}rUnR&O#EX7 z$eWYP3EW|`F}e7BJbOqhtu7*dX_@&#?k6FD)GMs(OoKcaADay{r}j^#yleiX^$eWV<^$XidMm_aAO{J>ZKInCA1KBk-^?B zewORk_|qCe{B+>-?Sls(=4I)l~JPuEt(*}mP}-rk<}r2wA+_dA|B z=r`5+;O>|BmTN`bt!}uMgEp;@R=wRXDyttX_fOAoN4rz6mb^qC<4-H871tr|kg6^I=mo5S5BKYXm z#4kdpltf-icaz9OESAVPqS3wXQFluPFD10kzMkJ=a>y%UZ;<9YOHt4uM;v#?abpY5 zD=RfG$rhlscjS*^0;XRSIRi{YMGA!$tT;3ZC^&kpf91fwNiMFM^3HOXPP--X%vU|w z2qWT{hl!weFjBjm;ih7HdkM)n{M}A%Arw4KAjolFyFrxSe#2lUZr|dam?T2rlEkzd zY$Roon{b9k&M|d$K2t4T(_ErnCQ*FCn6aIVeuM~#A*QcWfM`=CaU;HS;Dba7;X!^e zraSg=8{@8)@$}^bS(Up3Fple^As5fBh}bq99j^@bkke1?YKZ}RS|CTKR!~+*Ij1Fn z=-O8c2&M&Dg<|3Q=VtJ2bJNPdgxBGw<1|vHcMf!4>{f3 zivs6l6(us7{?m&)-W240#G>H9!n5$G{aI5LPRkpByB!i`C&>XCgdEa zP3XiILqj|Ld+1qk9s!nA1Vy&%=e_pWNMY-U57P#C*H z3eqBtd;IV@t{cldL|Q(~=1=*=79?Gw1sImrid#Hk0Y0gyMphrl*JJBOR=uXuODc9y zZNOD1w+ue*0MV|<&u*h89MkR(yP*^3#=WlDR125EfZ+LN9J*-98n7syj9lEX6$n?`!xrRnf*OdK$TluCB)LZG-^` z-K#fRM|h(oZV{9cQSamrUg?-6mC()sb2v(4zbVxy=IG#&q6p%8XcTpofncIMa7()a zC*wd;)1#h2(QCQAvS;H5^VauU_S>rEE5q_5QkJd@@5S_>+Hg@vqY;x}?7_gWJMlB}uf*LoZ`-Ryaal!=OBgRT(GqybnXbKk+?e2AsjkFvlFtKq~_v z50L|ML;b^;G>*?8=ey8+QRu}o0cCPlDEyq};~4Sai0|YyIPA2B3*w3aQ$yPM;!=r{r@}+S=|9mfKyga@0Fq9hpj78#!ckTp1!)kr-#)U@ z@vBDHlnwH~J9m5aYt~F=GB5NRl`34IF8N@LVg03l)-k4!vVh$&O`U>35JSd|CBQDA zimhPVQOLi}k!rSVmkMt#NZ@d4-`SVuRJ+80=SpegzqaN-6R>%&n!;9-nbU zjS9;N=vJ}(Dk1_s!HPwQIARlys3jgz+jsZ^;f0C^C)UJGlOTd1eD`T)Y@mq(zlE(D z+ocodv>$cfMUlE>I93a2*BvI!i=*aiCQ#9Pi2)p0sA>6eM4pK&-)kNm$vojfIsD zR7cVJ=DeB;JjZ~8{5z*gGUXv<7y?o=i~*|4J2FFYC{}9gidk7vUJ+%nH#)Um_w7aO ze>{Zn>nL=7ES8LTS(Q9yR79$vX0U97wPf>*{1vgaGZ`ykzCo*3YiUkE@B}6!uw~dE zc|u`ZHB`{PfMya>#X;N_Jv~MSWLh%A5B33(tp+RIxG@AhL6sVzI46h-%CCdNu@|P| z14e~T0?-{I>BIɢ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

    -RESULT - assert_equal(result, render(< true)) -= capture_haml do - foo -HAML - end - - def test_plain_equals_with_ugly - assert_equal("foo\nbar\n", render(< true)) -= "foo" -bar -HAML - end - - def test_inline_if - assert_equal(<One

    -

    -

    Three

    -HTML -- for name in ["One", "Two", "Three"] - %p= name unless name == "Two" -HAML - end - - def test_end_with_method_call - assert_equal(< - 2|3|4 - b-a-r -

    -HTML -%p - = [1, 2, 3].map do |i| - - i + 1 - - end.join("|") - = "bar".gsub(/./) do |s| - - s + "-" - - end.gsub(/-$/) do |s| - - '' -HAML - end - - def test_silent_end_with_stuff - assert_equal(<hi!

    -HTML -- if true - %p hi! -- end if "foo".gsub(/f/) do - - "z" -- end + "bar" -HAML - end - - def test_multiline_with_colon_after_filter - assert_equal(< "Bar", | - :b => "Baz" }[:a] | -HAML - assert_equal(< "Bar", | - :b => "Baz" }[:a] | -HAML - end - - def test_multiline_in_filter - assert_equal(< true)) -&= "&" -!= "&" -= "&" -HAML - - assert_equal(html, render(< true)) -&~ "&" -!~ "&" -~ "&" -HAML - - assert_equal(html, render(< true)) -& \#{"&"} -! \#{"&"} -\#{"&"} -HAML - - assert_equal(html, render(< true)) -&== \#{"&"} -!== \#{"&"} -== \#{"&"} -HAML - - tag_html = <&

    -

    &

    -

    &

    -HTML - - assert_equal(tag_html, render(< true)) -%p&= "&" -%p!= "&" -%p= "&" -HAML - - assert_equal(tag_html, render(< true)) -%p&~ "&" -%p!~ "&" -%p~ "&" -HAML - - assert_equal(tag_html, render(< true)) -%p& \#{"&"} -%p! \#{"&"} -%p \#{"&"} -HAML - - assert_equal(tag_html, render(< true)) -%p&== \#{"&"} -%p!== \#{"&"} -%p== \#{"&"} -HAML - end - - def test_new_attrs_with_hash - assert_equal("\n", render('%a(href="#")')) - end - - def test_javascript_filter_with_dynamic_interp_and_escape_html - assert_equal(< true)) - -HTML -:javascript - & < > \#{"&"} -HAML - end - - def test_silent_script_with_hyphen_case - assert_equal("", render("- 'foo-case-bar-case'")) - end - - def test_silent_script_with_hyphen_end - assert_equal("", render("- 'foo-end-bar-end'")) - end - - def test_silent_script_with_hyphen_end_and_block - assert_equal(<foo-end

    -

    bar-end

    -HTML -- "foo-end-bar-end".gsub(/\\w+-end/) do |s| - %p= s -HAML - end - - def test_if_without_content_and_else - assert_equal(<\n foo & bar\n

    \n", render("%p\n &= 'foo & bar'", :escape_html => false)) - end - - def test_ampersand_equals_inline_should_escape - assert_equal("

    foo & bar

    \n", render("%p&= 'foo & bar'", :escape_html => false)) - end - - def test_ampersand_equals_should_escape_before_preserve - assert_equal("\n", render('%textarea&= "foo\nbar"', :escape_html => false)) - end - - def test_bang_equals_should_not_escape - assert_equal("

    \n foo & bar\n

    \n", render("%p\n != 'foo & bar'", :escape_html => true)) - end - - def test_bang_equals_inline_should_not_escape - assert_equal("

    foo & bar

    \n", render("%p!= 'foo & bar'", :escape_html => true)) - end - - def test_static_attributes_should_be_escaped - assert_equal("\n", - render("%img.atlantis{:style => 'ugly&stupid'}")) - assert_equal("
    foo
    \n", - render(".atlantis{:style => 'ugly&stupid'} foo")) - assert_equal("

    foo

    \n", - render("%p.atlantis{:style => 'ugly&stupid'}= 'foo'")) - assert_equal("

    \n", - render("%p.atlantis{:style => \"ugly\\nstupid\"}")) - end - - def test_dynamic_attributes_should_be_escaped - assert_equal("\n", - render("%img{:width => nil, :src => '&foo.png', :alt => String.new}")) - assert_equal("

    foo

    \n", - render("%p{:width => nil, :src => '&foo.png', :alt => String.new} foo")) - assert_equal("
    foo
    \n", - render("%div{:width => nil, :src => '&foo.png', :alt => String.new}= 'foo'")) - assert_equal("\n", - render("%img{:width => nil, :src => \"foo\\n.png\", :alt => String.new}")) - end - - def test_string_double_equals_should_be_esaped - assert_equal("

    4&<

    \n", render("%p== \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

    4&<

    \n", render("%p== \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_escaped_inline_string_double_equals - assert_equal("

    4&<

    \n", render("%p&== \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

    4&<

    \n", render("%p&== \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_unescaped_inline_string_double_equals - assert_equal("

    4&<

    \n", render("%p!== \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

    4&<

    \n", render("%p!== \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_escaped_string_double_equals - assert_equal("

    \n 4&<\n

    \n", render("%p\n &== \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

    \n 4&<\n

    \n", render("%p\n &== \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_unescaped_string_double_equals - assert_equal("

    \n 4&<\n

    \n", render("%p\n !== \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

    \n 4&<\n

    \n", render("%p\n !== \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_string_interpolation_should_be_esaped - assert_equal("

    4&<

    \n", render("%p \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

    4&<

    \n", render("%p \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_escaped_inline_string_interpolation - assert_equal("

    4&<

    \n", render("%p& \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

    4&<

    \n", render("%p& \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_unescaped_inline_string_interpolation - assert_equal("

    4&<

    \n", render("%p! \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

    4&<

    \n", render("%p! \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_escaped_string_interpolation - assert_equal("

    \n 4&<\n

    \n", render("%p\n & \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

    \n 4&<\n

    \n", render("%p\n & \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_unescaped_string_interpolation - assert_equal("

    \n 4&<\n

    \n", render("%p\n ! \#{2+2}&\#{'<'}", :escape_html => true)) - assert_equal("

    \n 4&<\n

    \n", render("%p\n ! \#{2+2}&\#{'<'}", :escape_html => false)) - end - - def test_scripts_should_respect_escape_html_option - assert_equal("

    \n foo & bar\n

    \n", render("%p\n = 'foo & bar'", :escape_html => true)) - assert_equal("

    \n foo & bar\n

    \n", render("%p\n = 'foo & bar'", :escape_html => false)) - end - - def test_inline_scripts_should_respect_escape_html_option - assert_equal("

    foo & bar

    \n", render("%p= 'foo & bar'", :escape_html => true)) - assert_equal("

    foo & bar

    \n", render("%p= 'foo & bar'", :escape_html => false)) - end - - def test_script_ending_in_comment_should_render_when_html_is_escaped - assert_equal("foo&bar\n", render("= 'foo&bar' #comment", :escape_html => true)) - end - - def test_script_with_if_shouldnt_output - assert_equal(<foo

    -

    -HTML -%p= "foo" -%p= "bar" if false -HAML - end - - # Options tests - - def test_filename_and_line - begin - render("\n\n = abc", :filename => 'test', :line => 2) - rescue Exception => e - assert_kind_of Haml::SyntaxError, e - assert_match(/test:4/, e.backtrace.first) - end - - begin - render("\n\n= 123\n\n= nil[]", :filename => 'test', :line => 2) - rescue Exception => e - assert_kind_of NoMethodError, e - assert_match(/test:6/, e.backtrace.first) - end - end - - def test_stop_eval - assert_equal("", render("= 'Hello'", :suppress_eval => true)) - assert_equal("", render("- haml_concat 'foo'", :suppress_eval => true)) - assert_equal("
    \n", render("#foo{:yes => 'no'}/", :suppress_eval => true)) - assert_equal("
    \n", render("#foo{:yes => 'no', :call => a_function() }/", :suppress_eval => true)) - assert_equal("
    \n", render("%div[1]/", :suppress_eval => true)) - assert_equal("", render(":ruby\n Kernel.puts 'hello'", :suppress_eval => true)) - end - - def test_doctypes - assert_equal('', - render('!!!', :format => :html5).strip) - assert_equal('', render('!!! 5').strip) - assert_equal('', - render('!!! strict').strip) - assert_equal('', - render('!!! frameset').strip) - assert_equal('', - render('!!! mobile').strip) - assert_equal('', - render('!!! basic').strip) - assert_equal('', - render('!!! transitional').strip) - assert_equal('', - render('!!!').strip) - assert_equal('', - render('!!! strict', :format => :html4).strip) - assert_equal('', - render('!!! frameset', :format => :html4).strip) - assert_equal('', - render('!!! transitional', :format => :html4).strip) - assert_equal('', - render('!!!', :format => :html4).strip) - end - - def test_attr_wrapper - assert_equal("

    \n", render("%p{ :strange => 'attrs'}", :attr_wrapper => '*')) - assert_equal("

    \n", render("%p{ :escaped => 'quo\"te'}", :attr_wrapper => '"')) - assert_equal("

    \n", render("%p{ :escaped => 'quo\\'te'}", :attr_wrapper => '"')) - assert_equal("

    \n", render("%p{ :escaped => 'q\\'uo\"te'}", :attr_wrapper => '"')) - assert_equal("\n", render("!!! XML", :attr_wrapper => '"')) - end - - def test_attrs_parsed_correctly - assert_equal("

    biddly='bar => baz'>

    \n", render("%p{'boom=>biddly' => 'bar => baz'}")) - assert_equal("

    \n", render("%p{'foo,bar' => 'baz, qux'}")) - assert_equal("

    \n", render("%p{ :escaped => \"quo\\nte\"}")) - assert_equal("

    \n", render("%p{ :escaped => \"quo\#{2 + 2}te\"}")) - end - - def test_correct_parsing_with_brackets - assert_equal("

    {tada} foo

    \n", render("%p{:class => 'foo'} {tada} foo")) - assert_equal("

    deep {nested { things }}

    \n", render("%p{:class => 'foo'} deep {nested { things }}")) - assert_equal("

    {a { d

    \n", render("%p{{:class => 'foo'}, :class => 'bar'} {a { d")) - assert_equal("

    a}

    \n", render("%p{:foo => 'bar'} a}")) - - foo = [] - foo[0] = Struct.new('Foo', :id).new - assert_equal("

    New User]

    \n", - render("%p[foo[0]] New User]", :locals => {:foo => foo})) - assert_equal("

    New User]

    \n", - render("%p[foo[0], :prefix] New User]", :locals => {:foo => foo})) - - foo[0].id = 1 - assert_equal("

    New User]

    \n", - render("%p[foo[0]] New User]", :locals => {:foo => foo})) - assert_equal("

    New User]

    \n", - render("%p[foo[0], :prefix] New User]", :locals => {:foo => foo})) - end - - def test_empty_attrs - assert_equal("

    empty

    \n", render("%p{ :attr => '' } empty")) - assert_equal("

    empty

    \n", render("%p{ :attr => x } empty", :locals => {:x => ''})) - end - - def test_nil_attrs - assert_equal("

    nil

    \n", render("%p{ :attr => nil } nil")) - assert_equal("

    nil

    \n", render("%p{ :attr => x } nil", :locals => {:x => nil})) - end - - def test_nil_id_with_syntactic_id - assert_equal("

    nil

    \n", render("%p#foo{:id => nil} nil")) - assert_equal("

    nil

    \n", render("%p#foo{{:id => 'bar'}, :id => nil} nil")) - assert_equal("

    nil

    \n", render("%p#foo{{:id => nil}, :id => 'bar'} nil")) - end - - def test_nil_class_with_syntactic_class - assert_equal("

    nil

    \n", render("%p.foo{:class => nil} nil")) - assert_equal("

    nil

    \n", render("%p.bar.foo{:class => nil} nil")) - assert_equal("

    nil

    \n", render("%p.foo{{:class => 'bar'}, :class => nil} nil")) - assert_equal("

    nil

    \n", render("%p.foo{{:class => nil}, :class => 'bar'} nil")) - end - - def test_locals - assert_equal("

    Paragraph!

    \n", render("%p= text", :locals => { :text => "Paragraph!" })) - end - - def test_dynamic_attrs_shouldnt_register_as_literal_values - assert_equal("

    \n", render('%p{:a => "b#{1 + 1}c"}')) - assert_equal("

    \n", render("%p{:a => 'b' + (1 + 1).to_s + 'c'}")) - end - - def test_dynamic_attrs_with_self_closed_tag - assert_equal("\nc\n", render("%a{'b' => 1 + 1}/\n= 'c'\n")) - end - - EXCEPTION_MAP.each do |key, value| - define_method("test_exception (#{key.inspect})") do - begin - render(key, :filename => __FILE__) - rescue Exception => err - value = [value] unless value.is_a?(Array) - expected_message, line_no = value - line_no ||= key.split("\n").length - - if expected_message == :compile - if Haml::Util.ruby1_8? - assert_match(/^compile error\n/, err.message, "Line: #{key}") - else - assert_match(/^#{Regexp.quote __FILE__}:#{line_no}: syntax error,/, err.message, "Line: #{key}") - end - else - assert_equal(expected_message, err.message, "Line: #{key}") - end - - if Haml::Util.ruby1_8? - assert_match(/^#{Regexp.escape(__FILE__)}:#{line_no}/, err.backtrace[0], "Line: #{key}") - end - else - assert(false, "Exception not raised for\n#{key}") - end - end - end - - def test_exception_line - render("a\nb\n!!!\n c\nd") - rescue Haml::SyntaxError => e - assert_equal("(test_exception_line):4", e.backtrace[0]) - else - assert(false, '"a\nb\n!!!\n c\nd" doesn\'t produce an exception') - end - - def test_exception - render("%p\n hi\n %a= undefined\n= 12") - rescue Exception => e - assert_match("(test_exception):3", e.backtrace[0]) - else - # Test failed... should have raised an exception - assert(false) - end - - def test_compile_error - render("a\nb\n- fee)\nc") - rescue Exception => e - assert_match(/\(test_compile_error\):3: syntax error/i, e.message) - else - assert(false, - '"a\nb\n- fee)\nc" doesn\'t produce an exception!') - end - - def test_unbalanced_brackets - render('foo #{1 + 5} foo #{6 + 7 bar #{8 + 9}') - rescue Haml::SyntaxError => e - assert_equal("Unbalanced brackets.", e.message) - end - - def test_balanced_conditional_comments - assert_equal("\n", - render("/[if !(IE 6)|(IE 7)] Bracket: ]")) - end - - def test_empty_filter - assert_equal(< - // - -END - end - - def test_ugly_filter - assert_equal(< true)) -#foo { - bar: baz; } -END - end - - def test_local_assigns_dont_modify_class - assert_equal("bar\n", render("= foo", :locals => {:foo => 'bar'})) - assert_equal(nil, defined?(foo)) - end - - def test_object_ref_with_nil_id - user = User.new - assert_equal("

    New User

    \n", - render("%p[user] New User", :locals => {:user => user})) - end - - def test_object_ref_before_attrs - user = User.new 42 - assert_equal("

    New User

    \n", - render("%p[user]{:style => 'width: 100px;'} New User", :locals => {:user => user})) - end - - def test_non_literal_attributes - assert_equal("

    \n", - render("%p{a2, a1, :a3 => 'baz'}/", - :locals => {:a1 => {:a1 => 'foo'}, :a2 => {:a2 => 'bar'}})) - end - - def test_render_should_accept_a_binding_as_scope - string = "This is a string!" - string.instance_variable_set("@var", "Instance variable") - b = string.instance_eval do - var = "Local variable" - binding - end - - assert_equal("

    THIS IS A STRING!

    \n

    Instance variable

    \n

    Local variable

    \n", - render("%p= upcase\n%p= @var\n%p= var", :scope => b)) - end - - def test_yield_should_work_with_binding - assert_equal("12\nFOO\n", render("= yield\n= upcase", :scope => "foo".instance_eval{binding}) { 12 }) - end - - def test_yield_should_work_with_def_method - s = "foo" - engine("= yield\n= upcase").def_method(s, :render) - assert_equal("12\nFOO\n", s.render { 12 }) - end - - def test_def_method_with_module - engine("= yield\n= upcase").def_method(String, :render_haml) - assert_equal("12\nFOO\n", "foo".render_haml { 12 }) - end - - def test_def_method_locals - obj = Object.new - engine("%p= foo\n.bar{:baz => baz}= boom").def_method(obj, :render, :foo, :baz, :boom) - assert_equal("

    1

    \n
    3
    \n", obj.render(:foo => 1, :baz => 2, :boom => 3)) - end - - def test_render_proc_locals - proc = engine("%p= foo\n.bar{:baz => baz}= boom").render_proc(Object.new, :foo, :baz, :boom) - assert_equal("

    1

    \n
    3
    \n", proc[:foo => 1, :baz => 2, :boom => 3]) - end - - def test_render_proc_with_binding - assert_equal("FOO\n", engine("= upcase").render_proc("foo".instance_eval{binding}).call) - end - - def test_haml_buffer_gets_reset_even_with_exception - scope = Object.new - render("- raise Haml::Error", :scope => scope) - assert(false, "Expected exception") - rescue Exception - assert_nil(scope.send(:haml_buffer)) - end - - def test_def_method_haml_buffer_gets_reset_even_with_exception - scope = Object.new - engine("- raise Haml::Error").def_method(scope, :render) - scope.render - assert(false, "Expected exception") - rescue Exception - assert_nil(scope.send(:haml_buffer)) - end - - def test_render_proc_haml_buffer_gets_reset_even_with_exception - scope = Object.new - proc = engine("- raise Haml::Error").render_proc(scope) - proc.call - assert(false, "Expected exception") - rescue Exception - assert_nil(scope.send(:haml_buffer)) - end - - def test_ugly_true - assert_equal("
    \n
    \n

    hello world

    \n
    \n
    \n", - render("#outer\n #inner\n %p hello world", :ugly => true)) - - assert_equal("

    #{'s' * 75}

    \n", - render("%p #{'s' * 75}", :ugly => true)) - - assert_equal("

    #{'s' * 75}

    \n", - render("%p= 's' * 75", :ugly => true)) - end - - def test_auto_preserve_unless_ugly - assert_equal("
    foo
    bar
    \n", render('%pre="foo\nbar"')) - assert_equal("
    foo\nbar
    \n", render("%pre\n foo\n bar")) - assert_equal("
    foo\nbar
    \n", render('%pre="foo\nbar"', :ugly => true)) - assert_equal("
    foo\nbar
    \n", render("%pre\n foo\n bar", :ugly => true)) - end - - def test_xhtml_output_option - assert_equal "

    \n
    \n

    \n", render("%p\n %br", :format => :xhtml) - assert_equal "
    \n", render("%a/", :format => :xhtml) - end - - def test_arbitrary_output_option - assert_raise(Haml::Error, "Invalid output format :html1") { engine("%br", :format => :html1) } - end - - def test_static_hashes - assert_equal("\n", render("%a{:b => 'a => b'}", :suppress_eval => true)) - assert_equal("\n", render("%a{:b => 'a, b'}", :suppress_eval => true)) - assert_equal("\n", render('%a{:b => "a\tb"}', :suppress_eval => true)) - assert_equal("\n", render('%a{:b => "a\\#{foo}b"}', :suppress_eval => true)) - end - - def test_dynamic_hashes_with_suppress_eval - assert_equal("\n", render('%a{:b => "a #{1 + 1} b", :c => "d"}', :suppress_eval => true)) - end - - def test_utf8_attrs - assert_equal("\n", render("%a{:href => 'héllo'}")) - assert_equal("\n", render("%a(href='héllo')")) - end - - # HTML 4.0 - - def test_html_has_no_self_closing_tags - assert_equal "

    \n
    \n

    \n", render("%p\n %br", :format => :html4) - assert_equal "
    \n", render("%br/", :format => :html4) - end - - def test_html_renders_empty_node_with_closing_tag - assert_equal "
    \n", render(".foo", :format => :html4) - end - - def test_html_doesnt_add_slash_to_self_closing_tags - assert_equal "\n", render("%a/", :format => :html4) - assert_equal "\n", render("%a{:foo => 1 + 1}/", :format => :html4) - assert_equal "\n", render("%meta", :format => :html4) - assert_equal "\n", render("%meta{:foo => 1 + 1}", :format => :html4) - end - - def test_html_ignores_xml_prolog_declaration - assert_equal "", render('!!! XML', :format => :html4) - end - - def test_html_has_different_doctype - assert_equal %{\n}, - render('!!!', :format => :html4) - end - - # because anything before the doctype triggers quirks mode in IE - def test_xml_prolog_and_doctype_dont_result_in_a_leading_whitespace_in_html - assert_no_match(/^\s+/, render("!!! xml\n!!!", :format => :html4)) - end - - # HTML5 - def test_html5_doctype - assert_equal %{\n}, render('!!!', :format => :html5) - end - - # New attributes - - def test_basic_new_attributes - assert_equal("bar\n", render("%a() bar")) - assert_equal("bar\n", render("%a(href='foo') bar")) - assert_equal("baz\n", render(%q{%a(b="c" c='d' d="e") baz})) - end - - def test_new_attribute_ids - assert_equal("
    \n", render("#foo(id='bar')")) - assert_equal("
    \n", render("#foo{:id => 'bar'}(id='baz')")) - assert_equal("
    \n", render("#foo(id='baz'){:id => 'bar'}")) - foo = User.new(42) - assert_equal("
    \n", - render("#foo(id='baz'){:id => 'bar'}[foo]", :locals => {:foo => foo})) - assert_equal("
    \n", - render("#foo(id='baz')[foo]{:id => 'bar'}", :locals => {:foo => foo})) - assert_equal("
    \n", - render("#foo[foo](id='baz'){:id => 'bar'}", :locals => {:foo => foo})) - assert_equal("
    \n", - render("#foo[foo]{:id => 'bar'}(id='baz')", :locals => {:foo => foo})) - end - - def test_new_attribute_classes - assert_equal("
    \n", render(".foo(class='bar')")) - assert_equal("
    \n", render(".foo{:class => 'bar'}(class='baz')")) - assert_equal("
    \n", render(".foo(class='baz'){:class => 'bar'}")) - foo = User.new(42) - assert_equal("
    \n", - render(".foo(class='baz'){:class => 'bar'}[foo]", :locals => {:foo => foo})) - assert_equal("
    \n", - render(".foo[foo](class='baz'){:class => 'bar'}", :locals => {:foo => foo})) - assert_equal("
    \n", - render(".foo[foo]{:class => 'bar'}(class='baz')", :locals => {:foo => foo})) - end - - def test_dynamic_new_attributes - assert_equal("bar\n", render("%a(href=foo) bar", :locals => {:foo => 12})) - assert_equal("bar\n", render("%a(b=b c='13' d=d) bar", :locals => {:b => 12, :d => 14})) - end - - def test_new_attribute_interpolation - assert_equal("bar\n", render('%a(href="1#{1 + 1}") bar')) - assert_equal("bar\n", render(%q{%a(href='2: #{1 + 1}, 3: #{foo}') bar}, :locals => {:foo => 3})) - assert_equal(%Q{bar\n}, render('%a(href="1\#{1 + 1}") bar')) - end - - def test_truthy_new_attributes - assert_equal("bar\n", render("%a(href) bar")) - assert_equal("bar\n", render("%a(href bar='baz') bar", :format => :html5)) - assert_equal("bar\n", render("%a(href=true) bar")) - assert_equal("bar\n", render("%a(href=false) bar")) - end - - def test_new_attribute_parsing - assert_equal("bar\n", render("%a(a2=b2) bar", :locals => {:b2 => 'b2'})) - assert_equal(%Q{bar\n}, render(%q{%a(a="#{'foo"bar'}") bar})) #' - assert_equal(%Q{bar\n}, render(%q{%a(a="#{"foo'bar"}") bar})) #' - assert_equal(%Q{bar\n}, render(%q{%a(a='foo"bar') bar})) - assert_equal(%Q{bar\n}, render(%q{%a(a="foo'bar") bar})) - assert_equal("bar\n", render("%a(a:b='foo') bar")) - assert_equal("bar\n", render("%a(a = 'foo' b = 'bar') bar")) - assert_equal("bar\n", render("%a(a = foo b = bar) bar", :locals => {:foo => 'foo', :bar => 'bar'})) - assert_equal("(b='bar')\n", render("%a(a='foo')(b='bar')")) - assert_equal("baz\n", render("%a(a='foo)bar') baz")) - assert_equal("baz\n", render("%a( a = 'foo' ) baz")) - end - - def test_new_attribute_escaping - assert_equal(%Q{bar\n}, render(%q{%a(a="foo \" bar") bar})) - assert_equal(%Q{bar\n}, render(%q{%a(a="foo \\\\\" bar") bar})) - - assert_equal(%Q{bar\n}, render(%q{%a(a='foo \' bar') bar})) - assert_equal(%Q{bar\n}, render(%q{%a(a='foo \\\\\' bar') bar})) - - assert_equal(%Q{bar\n}, render(%q{%a(a="foo \\\\ bar") bar})) - assert_equal(%Q{bar\n}, render(%q{%a(a="foo \#{1 + 1} bar") bar})) - end - - def test_multiline_new_attribute - assert_equal("bar\n", render("%a(a='b'\n c='d') bar")) - assert_equal("bar\n", - render("%a(a='b' b='c'\n c='d' d=e\n e='f' f='j') bar", :locals => {:e => 'e'})) - end - - def test_new_and_old_attributes - assert_equal("bar\n", render("%a(a='b'){:c => 'd'} bar")) - assert_equal("bar\n", render("%a{:c => 'd'}(a='b') bar")) - assert_equal("bar\n", render("%a(c='d'){:a => 'b'} bar")) - assert_equal("bar\n", render("%a{:a => 'b'}(c='d') bar")) - - assert_equal("bar\n", render("%a{:a => 'b'}(a='d') bar")) - assert_equal("bar\n", render("%a(a='d'){:a => 'b'} bar")) - - assert_equal("bar\n", - render("%a{:a => 'b',\n:b => 'c'}(c='d'\nd='e') bar")) - end - - # Encodings - - unless Haml::Util.ruby1_8? - def test_default_encoding - assert_equal(Encoding.find("utf-8"), render(< "utf-8")) -

    bâr

    -

    föö

    -HTML -%p bâr -%p föö -HAML - end - - def test_fake_ascii_encoding - assert_equal(< "ascii-8bit")) -

    bâr

    -

    föö

    -HTML -%p bâr -%p föö -HAML - end - - def test_convert_template_render_proc - assert_converts_template_properly {|e| e.render_proc.call} - end - - def test_convert_template_render - assert_converts_template_properly {|e| e.render} - end - - def test_convert_template_def_method - assert_converts_template_properly do |e| - o = Object.new - e.def_method(o, :render) - o.render - end - end - end - - private - - def assert_converts_template_properly - engine = Haml::Engine.new(< "utf-8") -%p bâr -%p föö -HAML - assert_equal(<bâr

    -

    föö

    -HTML - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/helper_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/helper_test.rb deleted file mode 100644 index 42a8bb25..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/helper_test.rb +++ /dev/null @@ -1,282 +0,0 @@ -#!/usr/bin/env ruby -require File.dirname(__FILE__) + '/../test_helper' -require 'haml/template' - -class ActionView::Base - def nested_tag - content_tag(:span) {content_tag(:div) {"something"}} - end -end - -module Haml::Helpers - def something_that_uses_haml_concat - haml_concat('foo').to_s - end -end - -class HelperTest < Test::Unit::TestCase - Post = Struct.new('Post', :body) - - def setup - @base = ActionView::Base.new - @base.controller = ActionController::Base.new - - if defined?(ActionController::Response) - # This is needed for >=3.0.0 - @base.controller.response = ActionController::Response.new - end - - @base.instance_variable_set('@post', Post.new("Foo bar\nbaz")) - end - - def render(text, options = {}) - if options == :action_view - @base.render :inline => text, :type => :haml - else - scope = options.delete :scope_object - Haml::Engine.new(text, options).to_html(scope ? scope : Object.new) - end - end - - def test_flatten - assert_equal("FooBar", Haml::Helpers.flatten("FooBar")) - - assert_equal("FooBar", Haml::Helpers.flatten("Foo\rBar")) - - assert_equal("Foo Bar", Haml::Helpers.flatten("Foo\nBar")) - - assert_equal("Hello World! YOU ARE FLAT? OMGZ!", - Haml::Helpers.flatten("Hello\nWorld!\nYOU ARE \rFLAT?\n\rOMGZ!")) - end - - def test_list_of_should_render_correctly - assert_equal("
  • 1
  • \n
  • 2
  • \n", render("= list_of([1, 2]) do |i|\n = i")) - assert_equal("
  • [1]
  • \n", render("= list_of([[1]]) do |i|\n = i.inspect")) - assert_equal("
  • \n

    Fee

    \n

    A word!

    \n
  • \n
  • \n

    Fi

    \n

    A word!

    \n
  • \n
  • \n

    Fo

    \n

    A word!

    \n
  • \n
  • \n

    Fum

    \n

    A word!

    \n
  • \n", - render("= list_of(['Fee', 'Fi', 'Fo', 'Fum']) do |title|\n %h1= title\n %p A word!")) - end - - def test_buffer_access - assert(render("= buffer") =~ /#/) - assert_equal(render("= (buffer == _hamlout)"), "true\n") - end - - def test_tabs - assert_equal("foo\n bar\nbaz\n", render("foo\n- tab_up\nbar\n- tab_down\nbaz")) - assert_equal("

    tabbed

    \n", render("- buffer.tabulation=5\n%p tabbed")) - end - - def test_helpers_dont_leak - # Haml helpers shouldn't be accessible from ERB - render("foo") - proper_behavior = false - - begin - ActionView::Base.new.render(:inline => "<%= flatten('Foo\\nBar') %>") - rescue NoMethodError, Haml::Util.av_template_class(:Error) - proper_behavior = true - end - assert(proper_behavior) - - begin - ActionView::Base.new.render(:inline => "<%= concat('foo') %>") - rescue ArgumentError, NameError - proper_behavior = true - end - assert(proper_behavior) - end - - def test_action_view_included - assert(Haml::Helpers.action_view?) - end - - def test_form_tag - # This is usually provided by ActionController::Base. - def @base.protect_against_forgery?; false; end - result = render("- form_tag 'foo' do\n %p bar\n %strong baz", :action_view) - should_be = "
    \n

    bar

    \n baz\n
    \n" - assert_equal(should_be, result) - end - - def test_text_area - assert_equal(%(\n), - render('= text_area_tag "body", "Foo\nBar\n Baz\n Boom"', :action_view)) - - assert_equal(%(\n), - render('= text_area :post, :body', :action_view)) - - assert_equal(%(
    Foo bar
       baz
    \n), - render('= content_tag "pre", "Foo bar\n baz"', :action_view)) - end - - def test_capture_haml - assert_equal("\"

    13

    \\n\"\n", render("- foo = capture_haml(13) do |a|\n %p= a\n= foo.dump")) - end - - def test_content_tag_block - assert_equal(<

    bar

    -bar -
    -HTML -- content_tag :div do - %p bar - %strong bar -HAML - end - - def test_haml_tag_attribute_html_escaping - assert_equal("

    baz

    \n", render("%p{:id => 'foo&bar'} baz", :escape_html => true)) - end - - def test_haml_tag_autoclosed_tags_are_closed - assert_equal("
    \n", render("- haml_tag :br, :class => 'foo'")) - end - - def test_haml_tag_non_autoclosed_tags_arent_closed - assert_equal("

    \n", render("- haml_tag :p")) - end - - def test_haml_tag_renders_text_on_a_single_line - assert_equal("

    #{'a' * 100}

    \n", render("- haml_tag :p, 'a' * 100")) - end - - def test_haml_tag_raises_error_for_multiple_content - assert_raise(Haml::Error) { render("- haml_tag :p, 'foo' do\n bar") } - end - - def test_haml_tag_flags - assert_equal("

    \n", render("- haml_tag :p, :/")) - assert_equal("

    kumquat

    \n", render("- haml_tag :p, :< do\n kumquat")) - - assert_raise(Haml::Error) { render("- haml_tag :p, 'foo', :/") } - assert_raise(Haml::Error) { render("- haml_tag :p, :/ do\n foo") } - end - - def test_haml_tag_error_return - assert_raise(Haml::Error) { render("= haml_tag :p") } - end - - def test_is_haml - assert(!ActionView::Base.new.is_haml?) - assert_equal("true\n", render("= is_haml?")) - assert_equal("true\n", render("= is_haml?", :action_view)) - assert_equal("false", @base.render(:inline => '<%= is_haml? %>')) - assert_equal("false\n", render("= render :inline => '<%= is_haml? %>'", :action_view)) - end - - def test_page_class - controller = Struct.new(:controller_name, :action_name).new('troller', 'tion') - scope = Struct.new(:controller).new(controller) - result = render("%div{:class => page_class} MyDiv", :scope_object => scope) - expected = "
    MyDiv
    \n" - assert_equal expected, result - end - - def test_indented_capture - assert_equal(" \n Foo\n ", @base.render(:inline => " <% res = capture do %>\n Foo\n <% end %><%= res %>")) - end - - def test_capture_deals_properly_with_collections - Haml::Helpers.module_eval do - def trc(collection, &block) - collection.each do |record| - haml_concat capture_haml(record, &block) - end - end - end - - assert_equal("1\n\n2\n\n3\n\n", render("- trc([1, 2, 3]) do |i|\n = i.inspect")) - end - - def test_find_and_preserve_with_block - assert_equal("
    Foo
    Bar
    \nFoo\nBar\n", - render("= find_and_preserve do\n %pre\n Foo\n Bar\n Foo\n Bar")) - end - - def test_find_and_preserve_with_block_and_tags - assert_equal("
    Foo\nBar
    \nFoo\nBar\n", - render("= find_and_preserve([]) do\n %pre\n Foo\n Bar\n Foo\n Bar")) - end - - def test_preserve_with_block - assert_equal("
    Foo
    Bar
    Foo Bar\n", - render("= preserve do\n %pre\n Foo\n Bar\n Foo\n Bar")) - end - - def test_init_haml_helpers - context = Object.new - class << context - include Haml::Helpers - end - context.init_haml_helpers - - result = context.capture_haml do - context.haml_tag :p, :attr => "val" do - context.haml_concat "Blah" - end - end - - assert_equal("

    \n Blah\n

    \n", result) - end - - def test_non_haml - assert_equal("false\n", render("= non_haml { is_haml? }")) - end - - def test_content_tag_nested - assert_equal "
    something
    ", render("= nested_tag", :action_view).strip - end - - def test_error_return - assert_raise(Haml::Error, < e - assert_equal 2, e.backtrace[0].scan(/:(\d+)/).first.first.to_i - end - - def test_error_return_line_in_helper - render("- something_that_uses_haml_concat") - assert false, "Expected Haml::Error" - rescue Haml::Error => e - assert_equal 13, e.backtrace[0].scan(/:(\d+)/).first.first.to_i - end - - class ActsLikeTag - # We want to be able to have people include monkeypatched ActionView helpers - # without redefining is_haml?. - # This is accomplished via Object#is_haml?, and this is a test for it. - include ActionView::Helpers::TagHelper - def to_s - content_tag :p, 'some tag content' - end - end - - def test_random_class_includes_tag_helper - assert_equal "

    some tag content

    ", ActsLikeTag.new.to_s - end - - def test_capture_with_nuke_outer - assert_equal "
    \n*
    hi there!
    \n", render(< hi there! -HAML - - assert_equal "
    \n*
    hi there!
    \n", render(< hi there! -HAML - end -end - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/html2haml_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/html2haml_test.rb deleted file mode 100644 index 6d4afb71..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/html2haml_test.rb +++ /dev/null @@ -1,152 +0,0 @@ -#!/usr/bin/env ruby -require File.dirname(__FILE__) + '/../test_helper' -require 'haml/html' - -class Html2HamlTest < Test::Unit::TestCase - - def test_empty_render_should_remain_empty - assert_equal '', render('') - end - - def test_doctype - assert_equal '!!!', render("") - assert_equal '!!! 1.1', render('') - assert_equal '!!! Strict', render('') - assert_equal '!!! Frameset', render('') - assert_equal '!!! Mobile 1.2', render('') - assert_equal '!!! Basic 1.1', render('') - assert_equal '!!!', render('') - assert_equal '!!! Strict', render('') - assert_equal '!!! Frameset', render('') - assert_equal '!!!', render('') - end - - def test_id_and_class_should_be_removed_from_hash - assert_equal '%span#foo.bar', render(' ') - end - - def test_no_tag_name_for_div_if_class_or_id_is_present - assert_equal '#foo', render('
    ') - assert_equal '.foo', render('
    ') - end - - def test_multiple_class_names - assert_equal '.foo.bar.baz', render('
    ') - end - - def test_should_have_pretty_attributes - assert_equal_attributes('%input{ :type => "text", :name => "login" }', - render('')) - assert_equal_attributes('%meta{ "http-equiv" => "Content-Type", :content => "text/html" }', - render('')) - end - - def test_sqml_comment - assert_equal "/\n IE sucks", render('') - end - - def test_interpolation - assert_equal('Foo \#{bar} baz', render('Foo #{bar} baz')) - end - - def test_interpolation_in_attrs - assert_equal('%p{ :foo => "\#{bar} baz" }', render('

    ')) - end - - def test_rhtml - assert_equal '- foo = bar', render_rhtml('<% foo = bar %>') - assert_equal '- foo = bar', render_rhtml('<% foo = bar -%>') - assert_equal '= h @item.title', render_rhtml('<%=h @item.title %>') - assert_equal '= h @item.title', render_rhtml('<%=h @item.title -%>') - end - - def test_rhtml_with_html_special_chars - assert_equal '= 3 < 5 ? "OK" : "Your computer is b0rken"', - render_rhtml(%Q{<%= 3 < 5 ? "OK" : "Your computer is b0rken" %>}) - end - - def test_rhtml_in_class_attribute - assert_equal "%div{ :class => dyna_class }\n I have a dynamic attribute", - render_rhtml(%Q{
    I have a dynamic attribute
    }) - end - - def test_rhtml_in_id_attribute - assert_equal "%div{ :id => dyna_id }\n I have a dynamic attribute", - render_rhtml(%Q{
    I have a dynamic attribute
    }) - end - - def test_rhtml_in_attribute_results_in_string_interpolation - assert_equal %(%div{ :id => "item_\#{i}" }\n Ruby string interpolation FTW), - render_rhtml(%Q{
    Ruby string interpolation FTW
    }) - end - - def test_rhtml_in_attribute_with_trailing_content - assert_equal %(%div{ :class => "\#{12}!" }\n Bang!), - render_rhtml(%Q{
    Bang!
    }) - end - - def test_rhtml_in_html_escaped_attribute - assert_equal %(%div{ :class => "foo" }\n Bang!), - render_rhtml(%Q{
    ">Bang!
    }) - end - - def test_rhtml_in_attribute_to_multiple_interpolations - assert_equal %(%div{ :class => "\#{12} + \#{13}" }\n Math is super), - render_rhtml(%Q{
    Math is super
    }) - end - - def test_whitespace_eating_erb_tags - assert_equal %(- form_for), - render_rhtml(%Q{<%- form_for -%>}) - end - - def test_cdata - assert_equal(< -
    flop
    - -HAML -

    -

    flop
    - -]]>

    -HTML - end - - def test_interpolation_in_rhtml - assert_equal('= "Foo #{bar} baz"', render_rhtml('<%= "Foo #{bar} baz" %>')) - end - - def test_interpolation_in_rhtml_attrs - assert_equal('%p{ :foo => "#{bar} baz" }', - render_rhtml('

    ">

    ')) - end - - # Regression Tests - - def test_xhtml_strict_doctype - assert_equal('!!! Strict', render(< -HTML - end - - protected - - def render(text, options = {}) - Haml::HTML.new(text, options).render.rstrip - end - - def render_rhtml(text) - render(text, :rhtml => true) - end - - def assert_equal_attributes(expected, result) - expected_attr, result_attr = [expected, result].map { |s| s.gsub!(/\{ (.+) \}/, ''); $1.split(', ').sort } - assert_equal expected_attr, result_attr - assert_equal expected, result - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/markaby/standard.mab b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/markaby/standard.mab deleted file mode 100644 index aff86416..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/markaby/standard.mab +++ /dev/null @@ -1,52 +0,0 @@ -self << '' -html(:xmlns=>'http://www.w3.org/1999/xhtml', 'xml:lang'=>'en-US') do - head do - title "Hampton Catlin Is Totally Awesome" - meta("http-equiv" => "Content-Type", :content => "text/html; charset=utf-8") - end - body do - # You're In my house now! - div :class => "header" do - self << %|Yes, ladies and gentileman. He is just that egotistical. - Fantastic! This should be multi-line output - The question is if this would translate! Ahah!| - self << 1 + 9 + 8 + 2 #numbers should work and this should be ignored - end - div(:id => "body") { self << "Quotes should be loved! Just like people!"} - 120.times do |number| - number - end - self << "Wow.|" - p do - self << "Holy cow " + - "multiline " + - "tags! " + - "A pipe (|) even!" - self << [1, 2, 3].collect { |n| "PipesIgnored|" } - self << [1, 2, 3].collect { |n| - n.to_s - }.join("|") - end - div(:class => "silent") do - foo = String.new - foo << "this" - foo << " shouldn't" - foo << " evaluate" - self << foo + " but now it should!" - # Woah crap a comment! - end - # That was a line that shouldn't close everything. - ul(:class => "really cool") do - ('a'..'f').each do |a| - li a - end - end - div((@should_eval = "with this text"), :id => "combo", :class => "of_divs_with_underscore") - [ 104, 101, 108, 108, 111 ].map do |byte| - byte.chr - end - div(:class => "footer") do - strong("This is a really long ruby quote. It should be loved and wrapped because its more than 50 characters. This value may change in the future and this test may look stupid. \nSo, I'm just making it *really* long. God, I hope this works", :class => "shout") - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/mocks/article.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/mocks/article.rb deleted file mode 100644 index 805f8cad..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/mocks/article.rb +++ /dev/null @@ -1,6 +0,0 @@ -class Article - attr_accessor :id, :title, :body - def initialize - @id, @title, @body = 1, 'Hello', 'World' - end -end \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/content_for_layout.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/content_for_layout.xhtml deleted file mode 100644 index 63bbd229..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/content_for_layout.xhtml +++ /dev/null @@ -1,12 +0,0 @@ - - - - -
    - Lorem ipsum dolor sit amet -
    -
    - Lorem ipsum dolor sit amet -
    - - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/eval_suppressed.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/eval_suppressed.xhtml deleted file mode 100644 index 0ad97d9b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/eval_suppressed.xhtml +++ /dev/null @@ -1,9 +0,0 @@ -

    -

    -

    Me!

    -
    -

    All

    -
    -

    This

    - Should render -
    diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/filters.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/filters.xhtml deleted file mode 100644 index 912224bd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/filters.xhtml +++ /dev/null @@ -1,62 +0,0 @@ - -TESTING HAHAHAHA! -

    - -

    -This - Is - Plain - Text - %strong right? - #{not interpolated} - \3 - \#{also not} - \\ -

    -

    This pre is pretty deeply
          nested.
       Does interpolation work?
    -    This one is, too.
    Nested, that is.
    
    -

    -
      - -
    • a
    • - -
    • b
    • - -
    • c
    • - -
    • d
    • - -
    • e
    • - -
    • f
    • - -
    • g
    • - -
    • h
    • - -
    • i
    • - -
    • j
    • - - - -
    -
    178
    -Text! -Hello, World! -How are you doing today? -<div class="foo"> - <p>I think &mdash; or do I?</p> -</div> diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/helpers.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/helpers.xhtml deleted file mode 100644 index ad8ad6d3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/helpers.xhtml +++ /dev/null @@ -1,93 +0,0 @@ -&&&&&&&&&&& -
    -

    Title

    -

    - Woah this is really crazy - I mean wow, - man. -

    -
    -
    -

    Title

    -

    - Woah this is really crazy - I mean wow, - man. -

    -
    -
    -

    Title

    -

    - Woah this is really crazy - I mean wow, - man. -

    -
    -

    foo

    -

    reeeeeeeeeeeeeeeeeeeeeeeeeeeeeeally loooooooooooooooooong

    -
    -
    -
    -

    Big!

    -

    Small

    - -
    -
    -

    foo

    -

    bar

    -
    -
    - (parentheses!) -
    -*Not really -click -here. -

    baz

    -

    boom

    -foo -

    -

    -

    -
    - -
    -

    - @foo = - value one -

    - Toplevel? false -

    - @foo = - value three -

    - -
    - Title: - - Body: - -
    -
    -
  • google
  • -

    - foo -

    - bar -
    - boom - baz - boom, again -

    - - - - - -
    - strong! - data - - more_data -
    -
    -
    diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/helpful.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/helpful.xhtml deleted file mode 100644 index 042291d3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/helpful.xhtml +++ /dev/null @@ -1,10 +0,0 @@ -
    -

    Hello

    -
    World
    -
    -
    id
    -
    class
    -
    id class
    -
    boo
    -
    moo
    -
    foo
    \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/just_stuff.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/just_stuff.xhtml deleted file mode 100644 index cbd641fe..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/just_stuff.xhtml +++ /dev/null @@ -1,68 +0,0 @@ - - - - - - - - -Boo! -Embedded? false! -Embedded? true! -Embedded? true! -Embedded? twice! true! -Embedded? one af"t"er another! -

    Embedded? false!

    -

    Embedded? true!

    -

    Embedded? true!

    -

    Embedded? twice! true!

    -

    Embedded? one af"t"er another!

    -stuff followed by whitespace -block with whitespace -

    - Escape - - character - %p foo - yee\ha -

    - - -

    class attribute should appear!

    -

    this attribute shouldn't appear

    - - - -testtest -
    - - -
    - - -
    - Nested content -
    -

    Blah

    -

    Blah

    -

    Blump

    -Woah inner quotes -

    -

    - - hello -

    - -
    - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/list.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/list.xhtml deleted file mode 100644 index 05d22018..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/list.xhtml +++ /dev/null @@ -1,12 +0,0 @@ -!Not a Doctype! -
      -
    • a
    • -
    • b
    • -
    • c
    • -
    • d
    • -
    • e
    • -
    • f
    • -
    • g
    • -
    • h
    • -
    • i
    • -
    diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/nuke_inner_whitespace.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/nuke_inner_whitespace.xhtml deleted file mode 100644 index 71d55d87..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/nuke_inner_whitespace.xhtml +++ /dev/null @@ -1,40 +0,0 @@ -

    - Foo -

    -

    - Foo -

    -

    - Foo - Bar -

    -

    - Foo - Bar -

    -

    - Foo - Bar -

    -

    - Foo - Bar -

    -

    -

    - Foo - Bar -
    -

    -

    -

    - Foo - Bar -
    -

    -

    - foo - - bar - -

    diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/nuke_outer_whitespace.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/nuke_outer_whitespace.xhtml deleted file mode 100644 index a31cde3a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/nuke_outer_whitespace.xhtml +++ /dev/null @@ -1,148 +0,0 @@ -

    -

    - Foo -

    -

    -

    -

    - Foo -

    -

    -

    -

    Foo

    -

    -

    -

    Foo

    -

    -

    -

    - Foo -

    -

    -

    -

    - Foo -

    -

    -

    -

    Foo

    -

    -

    -

    Foo

    -

    -

    -

    - Foo - Bar -

    -

    -

    -

    - Foo - Bar -

    -

    -

    -

    - Foo - Bar -

    -

    -

    -

    - Foo - Bar -

    -

    -

    -

    - foo - Foo - bar -

    -

    -

    -

    - foo - Foo - bar -

    -

    -

    -

    - fooFoobar -

    -

    -

    -

    - fooFoobar -

    -

    -

    -

    - foo - Foo - bar -

    -

    -

    -

    - foo - Foo - bar -

    -

    -

    -

    - fooFoobar -

    -

    -

    -

    - fooFoobar -

    -

    -

    -

    - foo - Foo - Bar - bar -

    -

    -

    -

    - foo - Foo - Bar - bar -

    -

    -

    -

    - foo - Foo - Bar - bar -

    -

    -

    -

    - foo - Foo - Bar - bar -

    -

    -

    -

    -

    -

    -

    -

    -

    -

    -

    -

    -

    -

    diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/original_engine.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/original_engine.xhtml deleted file mode 100644 index dd0e9f98..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/original_engine.xhtml +++ /dev/null @@ -1,20 +0,0 @@ - - - - Stop. haml time -
    -

    This is a title!

    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit

    -

    Cigarettes!

    -

    Man alive!

    -
      -
    • Slippers
    • -
    • Shoes
    • -
    • Bathrobe
    • -
    • Coffee
    • -
    -
    This is some text that's in a pre block!
    -      Let's see what happens when it's rendered! What about now, since we're on a new line?
    -
    - - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/partial_layout.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/partial_layout.xhtml deleted file mode 100644 index 53b96e3b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/partial_layout.xhtml +++ /dev/null @@ -1,5 +0,0 @@ -

    Partial layout used with for block:

    -
    -

    This is inside a partial layout

    -

    Some content within a layout

    -
    \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/partials.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/partials.xhtml deleted file mode 100644 index 12366ffa..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/partials.xhtml +++ /dev/null @@ -1,21 +0,0 @@ -

    - @foo = - value one -

    -

    - @foo = - value two -

    -

    - @foo = - value two -

    -Toplevel? false -

    - @foo = - value three -

    -

    - @foo = - value three -

    diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/render_layout.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/render_layout.xhtml deleted file mode 100644 index 9712bb5c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/render_layout.xhtml +++ /dev/null @@ -1,3 +0,0 @@ -Before -During -After diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/silent_script.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/silent_script.xhtml deleted file mode 100644 index 76e90e0b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/silent_script.xhtml +++ /dev/null @@ -1,74 +0,0 @@ -
    -

    I can count!

    - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 -

    I know my ABCs!

    -
      -
    • a
    • -
    • b
    • -
    • c
    • -
    • d
    • -
    • e
    • -
    • f
    • -
    • g
    • -
    • h
    • -
    • i
    • -
    • j
    • -
    • k
    • -
    • l
    • -
    • m
    • -
    • n
    • -
    • o
    • -
    • p
    • -
    • q
    • -
    • r
    • -
    • s
    • -
    • t
    • -
    • u
    • -
    • v
    • -
    • w
    • -
    • x
    • -
    • y
    • -
    • z
    • -
    -

    I can catch errors!

    - Oh no! "undefined method `silly' for String:Class" happened! -

    - "false" is: - false -

    - Even! - Odd! - Even! - Odd! - Even! -
    -
    - foobar -
    -0 -1 -2 -3 -4 -
    -

    boom

    -
    diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/standard.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/standard.xhtml deleted file mode 100644 index 849bdc6e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/standard.xhtml +++ /dev/null @@ -1,162 +0,0 @@ - - - - Hampton Catlin Is Totally Awesome - - - - -
    - Yes, ladies and gentileman. He is just that egotistical. - Fantastic! This should be multi-line output - The question is if this would translate! Ahah! - 20 -
    -
    Quotes should be loved! Just like people!
    - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - 36 - 37 - 38 - 39 - 40 - 41 - 42 - 43 - 44 - 45 - 46 - 47 - 48 - 49 - 50 - 51 - 52 - 53 - 54 - 55 - 56 - 57 - 58 - 59 - 60 - 61 - 62 - 63 - 64 - 65 - 66 - 67 - 68 - 69 - 70 - 71 - 72 - 73 - 74 - 75 - 76 - 77 - 78 - 79 - 80 - 81 - 82 - 83 - 84 - 85 - 86 - 87 - 88 - 89 - 90 - 91 - 92 - 93 - 94 - 95 - 96 - 97 - 98 - 99 - 100 - 101 - 102 - 103 - 104 - 105 - 106 - 107 - 108 - 109 - 110 - 111 - 112 - 113 - 114 - 115 - 116 - 117 - 118 - 119 - Wow.| -

    - Holy cow multiline tags! A pipe (|) even! - PipesIgnored|PipesIgnored|PipesIgnored| - 1|2|3 -

    -
    - this shouldn't evaluate but now it should! -
    -
      -
    • a
    • -
    • b
    • -
    • c
    • -
    • d
    • -
    • e
    • -
    • f
    • -
    -
    with this text
    - foo - - - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/tag_parsing.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/tag_parsing.xhtml deleted file mode 100644 index e8178aa1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/tag_parsing.xhtml +++ /dev/null @@ -1,23 +0,0 @@ -
    - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 -
    -
    -

    -
    a
    -
    b
    -
    c
    -
    d
    -
    e
    -
    f
    -
    g
    -
    diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/very_basic.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/very_basic.xhtml deleted file mode 100644 index 6a4cd257..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/very_basic.xhtml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/whitespace_handling.xhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/whitespace_handling.xhtml deleted file mode 100644 index 11d04873..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/results/whitespace_handling.xhtml +++ /dev/null @@ -1,89 +0,0 @@ -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    -
    - -
    - -
    -
    -
    - Foo bar -
    foo bar
    -
    foo
    bar
    -

    foo
    bar

    -

    - foo - bar -

    -
    -
    - 13 - - -
    -
    -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    - -
    -
    - -
    - -
    -
    -
    - Foo bar -
    foo bar
    -
    foo
    bar
    -

    foo
    bar

    -

    - foo - bar -

    -
                                                     ___
                                                  ,o88888
                                               ,o8888888'
                         ,:o:o:oooo.        ,8O88Pd8888"
                     ,.::.::o:ooooOoOoO. ,oO8O8Pd888'"
                   ,.:.::o:ooOoOoOO8O8OOo.8OOPd8O8O"
                  , ..:.::o:ooOoOOOO8OOOOo.FdO8O8"
                 , ..:.::o:ooOoOO8O888O8O,COCOO"
                , . ..:.::o:ooOoOOOO8OOOOCOCO"
                 . ..:.::o:ooOoOoOO8O8OCCCC"o
                    . ..:.::o:ooooOoCoCCC"o:o
                    . ..:.::o:o:,cooooCo"oo:o:
                 `   . . ..:.:cocoooo"'o:o:::'
                 .`   . ..::ccccoc"'o:o:o:::'
                :.:.    ,c:cccc"':.:.:.:.:.'
              ..:.:"'`::::c:"'..:.:.:.:.:.'  http://www.chris.com/ASCII/
            ...:.'.:.::::"'    . . . . .'
           .. . ....:."' `   .  . . ''
         . . . ...."'
         .. . ."'     -hrr-
        .
    
    
                                                  It's a planet!
    %strong This shouldn't be bold!
    - This should! - -
    -
    - 13 -
    -
           __     ______        __               ______
    .----.|  |--.|__    |.----.|  |--..--------.|  __  |
    |  __||     ||__    ||  __||    < |        ||  __  |
    |____||__|__||______||____||__|__||__|__|__||______|
    -
    foo
    -bar
    diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/rhtml/_av_partial_1.rhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/rhtml/_av_partial_1.rhtml deleted file mode 100644 index 7507a0be..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/rhtml/_av_partial_1.rhtml +++ /dev/null @@ -1,12 +0,0 @@ -

    This is a pretty complicated partial

    -
    -

    It has several nested partials,

    -
      - <% 5.times do %> -
    • - Partial: - <% @nesting = 5 %> - <%= render :partial => 'haml/rhtml/av_partial_2' %> - <% end %> -
    -
    diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/rhtml/_av_partial_2.rhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/rhtml/_av_partial_2.rhtml deleted file mode 100644 index e884a348..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/rhtml/_av_partial_2.rhtml +++ /dev/null @@ -1,8 +0,0 @@ -<% @nesting -= 1 %> -
    -

    This is a crazy deep-nested partial.

    -

    Nesting level <%= @nesting %>

    - <% if @nesting > 0 %> - <%= render :partial => 'haml/rhtml/av_partial_2' %> - <% end %> -
    diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/rhtml/action_view.rhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/rhtml/action_view.rhtml deleted file mode 100644 index bcb0d416..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/rhtml/action_view.rhtml +++ /dev/null @@ -1,62 +0,0 @@ - - - - Hampton Catlin Is Totally Awesome - - - -

    - This is very much like the standard template, - except that it has some ActionView-specific stuff. - It's only used for benchmarking. -

    -
    - <%= render :partial => 'haml/rhtml/av_partial_1' %> -
    - -
    - Yes, ladies and gentileman. He is just that egotistical. - Fantastic! This should be multi-line output - The question is if this would translate! Ahah! - <%= 1 + 9 + 8 + 2 %> - <%# numbers should work and this should be ignored %> -
    - <% 120.times do |number| -%> - <%= number %> - <% end -%> -
    <%= " Quotes should be loved! Just like people!" %>
    - Wow. -

    - <%= "Holy cow " + - "multiline " + - "tags! " + - "A pipe (|) even!" %> - <%= [1, 2, 3].collect { |n| "PipesIgnored|" } %> - <%= [1, 2, 3].collect { |n| - n.to_s - }.join("|") %> -

    -
    - <% foo = String.new - foo << "this" - foo << " shouldn't" - foo << " evaluate" %> - <%= foo + "but now it should!" %> - <%# Woah crap a comment! %> -
    -
      - <% ('a'..'f').each do |a|%> -
    • <%= a %> - <% end %> -
      <%= @should_eval = "with this text" %>
      - <%= [ 104, 101, 108, 108, 111 ].map do |byte| - byte.chr - end %> - - - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/rhtml/standard.rhtml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/rhtml/standard.rhtml deleted file mode 100644 index 8f5d0972..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/rhtml/standard.rhtml +++ /dev/null @@ -1,54 +0,0 @@ - - - - Hampton Catlin Is Totally Awesome - - - - -
      - Yes, ladies and gentileman. He is just that egotistical. - Fantastic! This should be multi-line output - The question is if this would translate! Ahah! - <%= 1 + 9 + 8 + 2 %> - <%# numbers should work and this should be ignored %> -
      - <% 120.times do |number| -%> - <%= number %> - <% end -%> -
      <%= " Quotes should be loved! Just like people!" %>
      - Wow. -

      - <%= "Holy cow " + - "multiline " + - "tags! " + - "A pipe (|) even!" %> - <%= [1, 2, 3].collect { |n| "PipesIgnored|" }.join %> - <%= [1, 2, 3].collect { |n| - n.to_s - }.join("|") %> -

      -
      - <% foo = String.new - foo << "this" - foo << " shouldn't" - foo << " evaluate" %> - <%= foo + "but now it should!" %> - <%# Woah crap a comment! %> -
      -
        - <% ('a'..'f').each do |a|%> -
      • <%= a %>
      • - <% end %> -
        <%= @should_eval = "with this text" %>
        - <%= "foo".each_line do |line| - nil - end %> - - - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/spec/README.md b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/spec/README.md deleted file mode 100644 index 95740c51..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/spec/README.md +++ /dev/null @@ -1,97 +0,0 @@ -# Haml Spec # - -Haml Spec provides a basic suite of tests for Haml interpreters. - -It is intented for developers who are creating or maintaining an implementation -of the [Haml](http://haml-lang.com) markup language. - -At the moment, there are test runners for the [original Haml](http://github.com/nex3/haml) -in Ruby, and for [Lua Haml](http://github.com/norman/lua-haml). Support for -other versions of Haml will be added if their developers/maintainers -are interested in using it. - -## The Tests ## - -The tests are kept in JSON format for portability across languages. Each test -is a JSON object with expected input, output, local variables and configuration -parameters (see below). The test suite only provides tests for features which -are portable, therefore no tests for script are provided, nor for external -filters such as :markdown or :textile. - -The one major exception to this are the tests for interpolation, which you may -need to modify with a regular expression to run under PHP or Perl, which -require a symbol before variable names. These tests are included despite being -less than 100% portable because interpolation is an important part of Haml and -can be tricky to implement. - -## Running the Tests ## - -### Ruby ### - -In order to make it as easy as possible for non-Ruby programmers to run the -Ruby Haml tests, the Ruby test runner uses test/unit, rather than something -fancier like Rspec. To run them you probably only need to install `haml`, and -possibly `ruby` if your platform doesn't come with it by default. If you're -using Ruby 1.8.x, you'll also need to install `json`: - - sudo gem install haml - # for Ruby 1.8.x; check using "ruby --version" if unsure - sudo gem install json - -Then, running the Ruby test suite is easy: - - ruby ruby_haml_test.rb - -### Lua ### - -The Lua test depends on [Telescope](http://telescope.luaforge.net/), -[jason4lua](http://json.luaforge.net/), and -[Lua Haml](http://github.com/norman/lua-haml). Install and -run `tsc lua_haml_spec.lua`. - -## Contributing ## - -### Getting it ### - -You can access the [Git repository](http://github.com/norman/haml-spec) at: - - git://github.com/norman/haml-spec.git - -Patches are *very* welcome, as are test runners for your Haml implementation. - -As long as any test you add run against Ruby Haml and are not redundant, I'll -be very happy to add them. - -### Test JSON format ### - - "test name" : { - "haml" : "haml input", - "html" : "expected html output", - "result" : "expected test result", - "locals" : "local vars", - "config" : "config params" - } - -* test name: This should be a *very* brief description of what's being tested. It can - be used by the test runners to name test methods, or to exclude certain tests from being - run. -* haml: The Haml code to be evaluated. Always required. -* html: The HTML output that should be generated. Required unless "result" is "error". -* result: Can be "pass" or "error". If it's absent, then "pass" is assumed. If it's "error", - then the goal of the test is to make sure that malformed Haml code generates an error. -* locals: An object containing local variables needed for the test. -* config: An object containing configuration parameters used to run the test. - The configuration parameters should be usable directly by Ruby's Haml with no - modification. If your implementation uses config parameters with different - names, you may need to process them to make them match your implementation. - If your implementation has options that do not exist in Ruby's Haml, then you - should add tests for this in your implementation's test rather than here. - -## License ## - - This project is released under the [WTFPL](http://sam.zoy.org/wtfpl/) in order - to be as usable as possible in any project, commercial or free. - -## Author ## - - [Norman Clarke](mailto:norman@njclarke.com) diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/spec/lua_haml_spec.lua b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/spec/lua_haml_spec.lua deleted file mode 100644 index 0998a1fe..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/spec/lua_haml_spec.lua +++ /dev/null @@ -1,30 +0,0 @@ -require 'luarocks.require' -require 'json' -require 'telescope' -require 'haml' - -local function get_tests(filename) - local self = debug.getinfo(1).short_src - if self:match("/") then return "./" .. self:gsub("[^/]*%.lua$", "/" .. filename) - elseif self:match("\\") then return self:gsub("[^\\]*%.lua$", "\\" .. filename) - else return filename - end -end - -local fh = assert(io.open(get_tests("tests-new.json"))) -local input = fh:read '*a' -fh:close() - -local contexts = json.decode(input) - -describe("LuaHaml", function() - for context, expectations in pairs(contexts) do - describe("When handling " .. context, function() - for name, exp in pairs(expectations) do - it(string.format("should correctly render %s", name), function() - assert_equal(haml.render(exp.haml, exp.config or {}, exp.locals or {}), exp.html) - end) - end - end) - end -end) diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/spec/ruby_haml_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/spec/ruby_haml_test.rb deleted file mode 100644 index 444ba2de..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/spec/ruby_haml_test.rb +++ /dev/null @@ -1,19 +0,0 @@ -require "test/unit" -require "json" -require "haml" - -class HamlTest < Test::Unit::TestCase - contexts = JSON.parse(File.read(File.dirname(__FILE__) + "/tests.json")) - contexts.each do |context| - context[1].each do |name, test| - class_eval(<<-EOTEST) - def test_#{name.gsub(/\s+|[^a-zA-Z0-9_]/, "_")} - locals = Hash[*(#{test}["locals"] || {}).collect {|k, v| [k.to_sym, v] }.flatten] - options = Hash[*(#{test}["config"] || {}).collect {|k, v| [k.to_sym, v.to_sym] }.flatten] - engine = Haml::Engine.new(#{test}["haml"], options) - assert_equal(engine.render(Object.new, locals).chomp, #{test}["html"]) - end - EOTEST - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/spec/tests.json b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/spec/tests.json deleted file mode 100644 index 4337ee1c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/spec/tests.json +++ /dev/null @@ -1,488 +0,0 @@ -{ - "headers" : { - - "an XHTML XML prolog" : { - "haml" : "!!! XML", - "html" : "" - }, - - "an XHTML default (transitional) doctype" : { - "haml" : "!!!", - "html" : "" - }, - - "an XHTML 1.1 doctype" : { - "haml" : "!!! 1.1", - "html" : "" - }, - - "an XHTML 1.2 mobile doctype" : { - "haml" : "!!! mobile", - "html" : "" - }, - - "an XHTML 1.1 basic doctype" : { - "haml" : "!!! basic", - "html" : "" - }, - - "an XHTML 1.0 frameset doctype" : { - "haml" : "!!! frameset", - "html" : "" - }, - - "an HTML 5 XML prolog (silent)" : { - "haml" : "!!! XML", - "html" : "", - "config" : { - "format" : "html5" - } - }, - - "an HTML 5 doctype" : { - "haml" : "!!!", - "html" : "", - "config" : { - "format" : "html5" - } - }, - - "an HTML 4 XML prolog (silent)" : { - "haml" : "!!! XML", - "html" : "", - "config" : { - "format" : "html4" - } - }, - - "an HTML 4 default (transitional) doctype" : { - "haml" : "!!!", - "html" : "", - "config" : { - "format" : "html4" - } - }, - - "an HTML 4 frameset doctype" : { - "haml" : "!!! frameset", - "html" : "", - "config" : { - "format" : "html4" - } - }, - - "an HTML 4 strict doctype" : { - "haml" : "!!! strict", - "html" : "", - "config" : { - "format" : "html4" - } - } - - }, - - "basic Haml tags and CSS": { - - "a simple Haml tag" : { - "haml" : "%p", - "html" : "

        " - }, - - "a self-closing tag (XHTML)" : { - "haml" : "%meta", - "html" : "" - }, - - "a self-closing tag (HTML4)" : { - "haml" : "%meta", - "html" : "", - "config" : { - "format" : "html4" - } - }, - - "a self-closing tag (HTML5)" : { - "haml" : "%meta", - "html" : "", - "config" : { - "format" : "html5" - } - }, - - "a tag with a CSS class" : { - "haml" : "%p.class1", - "html" : "

        " - }, - - "a tag with multiple CSS classes" : { - "haml" : "%p.class1.class2", - "html" : "

        " - }, - - "a tag with a CSS id" : { - "haml" : "%p#id1", - "html" : "

        " - }, - - "a tag with multiple CSS id's" : { - "haml" : "%p#id1#id2", - "html" : "

        " - }, - - "a tag with a class followed by an id" : { - "haml" : "%p.class1#id1", - "html" : "

        " - }, - - "a tag with an id followed by a class" : { - "haml" : "%p#id1.class1", - "html" : "

        " - }, - - "an implicit div with a CSS id" : { - "haml" : "#id1", - "html" : "
        " - }, - - "an implicit div with a CSS class" : { - "haml" : ".class1", - "html" : "
        " - } - - }, - - "tags with unusual HTML characters" : { - - "a tag with colons" : { - "haml" : "%ns:tag", - "html" : "" - }, - - "a tag with underscores" : { - "haml" : "%snake_case", - "html" : "" - }, - - "a tag with dashes" : { - "haml" : "%dashed-tag", - "html" : "" - }, - - "a tag with camelCase" : { - "haml" : "%camelCase", - "html" : "" - }, - - "a tag with PascalCase" : { - "haml" : "%PascalCase", - "html" : "" - } - }, - - "tags with unusual CSS identifiers" : { - - "an all-numeric class" : { - "haml" : ".123", - "html" : "
        " - }, - - "a class with underscores" : { - "haml" : ".__", - "html" : "
        " - }, - - "a class with dashes" : { - "haml" : ".--", - "html" : "
        " - } - - }, - - "tags with inline content" : { - - "a simple tag" : { - "haml" : "%p hello", - "html" : "

        hello

        " - }, - - "a tag with CSS" : { - "haml" : "%p.class1 hello", - "html" : "

        hello

        " - } - - }, - - "tags with nested content" : { - - "a simple tag" : { - "haml" : "%p\n hello", - "html" : "

        \n hello\n

        " - }, - - "a tag with CSS" : { - "haml" : "%p.class1\n hello", - "html" : "

        \n hello\n

        " - } - - }, - - "tags with HTML-style attributes": { - - "one attribute" : { - "haml" : "%p(a='b')", - "html" : "

        " - }, - - "multiple attributes" : { - "haml" : "%p(a='b' c='d')", - "html" : "

        " - }, - - "attributes separated with newlines" : { - "haml" : "%p(a='b'\n c='d')", - "html" : "

        " - }, - - "an interpolated attribute" : { - "haml" : "%p(a=\"#{var}\")", - "html" : "

        ", - "locals" : { - "var" : "value" - } - }, - - "'class' as an attribute" : { - "haml" : "%p(class='class1')", - "html" : "

        " - }, - - "a tag with a CSS class and 'class' as an attribute" : { - "haml" : "%p.class2(class='class1')", - "html" : "

        " - }, - - "a tag with 'id' as an attribute" : { - "haml" : "%p(id='1')", - "html" : "

        " - }, - - "a tag with a CSS id and 'id' as an attribute" : { - "haml" : "%p#id(id='1')", - "html" : "

        " - }, - - "a tag with a variable attribute" : { - "haml" : "%p(class=var)", - "html" : "

        ", - "locals" : { - "var" : "hello" - } - }, - - "a tag with a CSS class and 'class' as a variable attribute" : { - "haml" : ".hello(class=var)", - "html" : "
        ", - "locals" : { - "var" : "world" - } - }, - - "a tag multiple CSS classes (sorted correctly)" : { - "haml" : ".z(class=var)", - "html" : "
        ", - "locals" : { - "var" : "a" - } - } - - }, - - "tags with Ruby-style attributes": { - - "one attribute" : { - "haml" : "%p{:a => 'b'}", - "html" : "

        " - }, - - "attributes hash with whitespace" : { - "haml" : "%p{ :a => 'b' }", - "html" : "

        " - }, - - "an interpolated attribute" : { - "haml" : "%p{:a =>\"#{var}\"}", - "html" : "

        ", - "locals" : { - "var" : "value" - } - }, - - "multiple attributes" : { - "haml" : "%p{ :a => 'b', 'c' => 'd' }", - "html" : "

        " - }, - - "attributes separated with newlines" : { - "haml" : "%p{ :a => 'b',\n 'c' => 'd' }", - "html" : "

        " - }, - - "'class' as an attribute" : { - "haml" : "%p{:class => 'class1'}", - "html" : "

        " - }, - - "a tag with a CSS class and 'class' as an attribute" : { - "haml" : "%p.class2{:class => 'class1'}", - "html" : "

        " - }, - - "a tag with 'id' as an attribute" : { - "haml" : "%p{:id => '1'}", - "html" : "

        " - }, - - "a tag with a CSS id and 'id' as an attribute" : { - "haml" : "%p#id{:id => '1'}", - "html" : "

        " - }, - - "a tag with a CSS id and a numeric 'id' as an attribute" : { - "haml" : "%p#id{:id => 1}", - "html" : "

        " - }, - - "a tag with a variable attribute" : { - "haml" : "%p{:class => var}", - "html" : "

        ", - "locals" : { - "var" : "hello" - } - }, - - "a tag with a CSS class and 'class' as a variable attribute" : { - "haml" : ".hello{:class => var}", - "html" : "
        ", - "locals" : { - "var" : "world" - } - }, - - "a tag multiple CSS classes (sorted correctly)" : { - "haml" : ".z{:class => var}", - "html" : "
        ", - "locals" : { - "var" : "a" - } - }, - - "an interpolated attribute" : { - "haml" : "%p{:a =>\"#{var}\"}", - "html" : "

        ", - "locals" : { - "var" : "value" - } - } - - }, - - "silent comments" : { - - "an inline comment" : { - "haml" : "-# hello", - "html" : "" - }, - - "a nested comment" : { - "haml" : "-#\n hello", - "html" : "" - } - - }, - - "markup comments" : { - - "an inline comment" : { - "haml" : "/ comment", - "html" : "" - }, - - "a nested comment" : { - "haml" : "/\n comment\n comment2", - "html" : "" - } - }, - - "conditional comments": { - "a conditional comment" : { - "haml" : "/[if IE]\n %p a", - "html" : "" - } - }, - - "internal filters": { - - "content in an 'escaped' filter" : { - "haml" : ":escaped\n <&\">", - "html" : "<&">" - }, - - "content in a 'preserve' filter" : { - "haml" : ":preserve\n hello\n\n%p", - "html" : "hello \n

        " - }, - - "content in a 'plain' filter" : { - "haml" : ":plain\n hello\n\n%p", - "html" : "hello\n

        " - }, - - "content in a 'javascript' filter" : { - "haml" : ":javascript\n a();\n%p", - "html" : "\n

        " - } - - }, - - "interpolation": { - - "interpolation inside code" : { - "haml" : "%p= \"#{var}\"", - "html" : "

        value

        ", - "locals" : { - "var" : "value" - } - }, - - "interpolation inside inline content" : { - "haml" : "%p #{var}", - "html" : "

        value

        ", - "locals" : { - "var" : "value" - } - }, - - "no interpolation when escaped" : { - "haml" : "%p \\#{var}", - "html" : "

        #{var}

        " - }, - - "interpolation when the escape character is escaped" : { - "haml" : "%p \\\\#{var}", - "html" : "

        \\value

        ", - "locals" : { - "var" : "value" - } - }, - - "interpolation inside filtered content" : { - "haml" : ":plain\n #{var} interpolated: #{var}", - "html" : "value interpolated: value", - "locals" : { - "var" : "value" - } - } - - } - -} diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/template_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/template_test.rb deleted file mode 100644 index e813ee9b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/template_test.rb +++ /dev/null @@ -1,296 +0,0 @@ -#!/usr/bin/env ruby -require File.dirname(__FILE__) + '/../test_helper' -require 'haml/template' -require 'sass/plugin' -require File.dirname(__FILE__) + '/mocks/article' - -require 'action_pack/version' - -module Haml::Filters::Test - include Haml::Filters::Base - - def render(text) - "TESTING HAHAHAHA!" - end -end - -module Haml::Helpers - def test_partial(name, locals = {}) - Haml::Engine.new(File.read(File.join(TemplateTest::TEMPLATE_PATH, "_#{name}.haml"))).render(self, locals) - end -end - -class Egocentic - def method_missing(*args) - self - end -end - -class DummyController - attr_accessor :logger - def initialize - @logger = Egocentic.new - end - - def self.controller_path - '' - end - - def controller_path - '' - end -end - -class TemplateTest < Test::Unit::TestCase - TEMPLATE_PATH = File.join(File.dirname(__FILE__), "templates") - TEMPLATES = %w{ very_basic standard helpers - whitespace_handling original_engine list helpful - silent_script tag_parsing just_stuff partials - filters nuke_outer_whitespace nuke_inner_whitespace - render_layout } - # partial layouts were introduced in 2.0.0 - TEMPLATES << 'partial_layout' unless ActionPack::VERSION::MAJOR < 2 - - def setup - @base = create_base - - # filters template uses :sass - Sass::Plugin.options.update(:line_comments => true, :style => :compact) - end - - def create_base - vars = { 'article' => Article.new, 'foo' => 'value one' } - - unless Haml::Util.has?(:instance_method, ActionView::Base, :finder) - base = ActionView::Base.new(TEMPLATE_PATH, vars) - else - # Rails 2.1.0 - base = ActionView::Base.new([], vars) - base.finder.append_view_path(TEMPLATE_PATH) - end - - if Haml::Util.has?(:private_method, base, :evaluate_assigns) - base.send(:evaluate_assigns) - else - # Rails 2.2 - base.send(:_evaluate_assigns_and_ivars) - end - - # This is used by form_for. - # It's usually provided by ActionController::Base. - def base.protect_against_forgery?; false; end - - base.controller = DummyController.new - base - end - - def render(text, opts = {}) - return @base.render(:inline => text, :type => :haml) if opts == :action_view - Haml::Engine.new(text, opts).to_html(@base) - end - - def load_result(name) - @result = '' - File.new(File.dirname(__FILE__) + "/results/#{name}.xhtml").each_line { |l| @result += l } - @result - end - - def assert_renders_correctly(name, &render_method) - old_options = Haml::Template.options.dup - Haml::Template.options[:escape_html] = false - if ActionPack::VERSION::MAJOR < 2 || - (ActionPack::VERSION::MAJOR == 2 && ActionPack::VERSION::MINOR < 2) - render_method ||= proc { |name| @base.render(name) } - else - render_method ||= proc { |name| @base.render(:file => name) } - end - - load_result(name).split("\n").zip(render_method[name].split("\n")).each_with_index do |pair, line| - message = "template: #{name}\nline: #{line}" - assert_equal(pair.first, pair.last, message) - end - rescue Haml::Util.av_template_class(:Error) => e - if e.message =~ /Can't run [\w:]+ filter; required (one of|file) ((?:'\w+'(?: or )?)+)(, but none were found| not found)/ - puts "\nCouldn't require #{$2}; skipping a test." - else - raise e - end - ensure - Haml::Template.options = old_options - end - - def test_empty_render_should_remain_empty - assert_equal('', render('')) - end - - TEMPLATES.each do |template| - define_method "test_template_should_render_correctly [template: #{template}] " do - assert_renders_correctly template - end - end - - def test_templates_should_render_correctly_with_render_proc - assert_renders_correctly("standard") do |name| - engine = Haml::Engine.new(File.read(File.dirname(__FILE__) + "/templates/#{name}.haml")) - engine.render_proc(@base).call - end - end - - def test_templates_should_render_correctly_with_def_method - assert_renders_correctly("standard") do |name| - engine = Haml::Engine.new(File.read(File.dirname(__FILE__) + "/templates/#{name}.haml")) - engine.def_method(@base, "render_standard") - @base.render_standard - end - end - - if ActionPack::VERSION::MAJOR < 3 - # Rails 3.0.0 deprecates the use of yield with a layout - # for calls to render :file - def test_action_view_templates_render_correctly - proc = lambda do - @base.content_for(:layout) {'Lorem ipsum dolor sit amet'} - assert_renders_correctly 'content_for_layout' - end - - if @base.respond_to?(:with_output_buffer) - @base.with_output_buffer("", &proc) - else - proc.call - end - end - end - - def test_instance_variables_should_work_inside_templates - @base.instance_variable_set("@content_for_layout", 'something') - assert_equal("

        something

        ", render("%p= @content_for_layout").chomp) - - @base.instance_eval("@author = 'Hampton Catlin'") - assert_equal("
        Hampton Catlin
        ", render(".author= @author").chomp) - - @base.instance_eval("@author = 'Hampton'") - assert_equal("Hampton", render("= @author").chomp) - - @base.instance_eval("@author = 'Catlin'") - assert_equal("Catlin", render("= @author").chomp) - end - - def test_instance_variables_should_work_inside_attributes - @base.instance_eval("@author = 'hcatlin'") - assert_equal("

        foo

        ", render("%p{:class => @author} foo").chomp) - end - - def test_template_renders_should_eval - assert_equal("2\n", render("= 1+1")) - end - - def test_haml_options - old_options = Haml::Template.options.dup - Haml::Template.options[:suppress_eval] = true - old_base, @base = @base, create_base - assert_renders_correctly("eval_suppressed") - ensure - @base = old_base - Haml::Template.options = old_options - end - - def test_with_output_buffer_with_ugly - return unless Haml::Util.has?(:instance_method, ActionView::Base, :with_output_buffer) - assert_equal(< true)) -

        -foo -baz -

        -HTML -%p - foo - - with_output_buffer do - bar - = "foo".gsub(/./) do |s| - - "flup" - baz -HAML - end - - def test_exceptions_should_work_correctly - begin - render("- raise 'oops!'") - rescue Exception => e - assert_equal("oops!", e.message) - assert_match(/^\(haml\):1/, e.backtrace[0]) - else - assert false - end - - template = < e - assert_match(/^\(haml\):5/, e.backtrace[0]) - else - assert false - end - end - - ## XSS Protection Tests - - # In order to enable these, either test against Rails 3.0 - # or test against Rails 2.2.5+ with the rails_xss plugin - # (http://github.com/NZKoz/rails_xss) in test/plugins. - if Haml::Util.rails_xss_safe? - def test_escape_html_option_set - assert Haml::Template.options[:escape_html] - end - - def test_xss_protection - assert_equal("Foo & Bar\n", render('= "Foo & Bar"', :action_view)) - end - - def test_xss_protection_with_safe_strings - assert_equal("Foo & Bar\n", render('= "Foo & Bar".html_safe!', :action_view)) - end - - def test_xss_protection_with_bang - assert_equal("Foo & Bar\n", render('!= "Foo & Bar"', :action_view)) - end - - def test_xss_protection_in_interpolation - assert_equal("Foo & Bar\n", render('Foo #{"&"} Bar', :action_view)) - end - - def test_xss_protection_with_bang_in_interpolation - assert_equal("Foo & Bar\n", render('! Foo #{"&"} Bar', :action_view)) - end - - def test_xss_protection_with_safe_strings_in_interpolation - assert_equal("Foo & Bar\n", render('Foo #{"&".html_safe!} Bar', :action_view)) - end - - def test_xss_protection_with_mixed_strings_in_interpolation - assert_equal("Foo & Bar & Baz\n", render('Foo #{"&".html_safe!} Bar #{"&"} Baz', :action_view)) - end - - def test_rendered_string_is_html_safe - assert(render("Foo").html_safe?) - end - - def test_rendered_string_is_html_safe_with_action_view - assert(render("Foo", :action_view).html_safe?) - end - - def test_xss_html_escaping_with_non_strings - assert_equal("4\n", render("= html_escape(4)")) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_av_partial_1.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_av_partial_1.haml deleted file mode 100644 index 7f47f726..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_av_partial_1.haml +++ /dev/null @@ -1,9 +0,0 @@ -%h2 This is a pretty complicated partial -.partial - %p It has several nested partials, - %ul - - 5.times do - %li - %strong Partial: - - @nesting = 5 - = render :partial => 'haml/templates/av_partial_2' \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_av_partial_1_ugly.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_av_partial_1_ugly.haml deleted file mode 100644 index 73e0ca7a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_av_partial_1_ugly.haml +++ /dev/null @@ -1,9 +0,0 @@ -%h2 This is a pretty complicated partial -.partial - %p It has several nested partials, - %ul - - 5.times do - %li - %strong Partial: - - @nesting = 5 - = render :partial => 'haml/templates/av_partial_2_ugly' \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_av_partial_2.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_av_partial_2.haml deleted file mode 100644 index c8a313df..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_av_partial_2.haml +++ /dev/null @@ -1,5 +0,0 @@ -- @nesting -= 1 -.partial{:level => @nesting} - %h3 This is a crazy deep-nested partial. - %p== Nesting level #{@nesting} - = render :partial => 'haml/templates/av_partial_2' if @nesting > 0 \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_av_partial_2_ugly.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_av_partial_2_ugly.haml deleted file mode 100644 index 088a3c36..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_av_partial_2_ugly.haml +++ /dev/null @@ -1,5 +0,0 @@ -- @nesting -= 1 -.partial{:level => @nesting} - %h3 This is a crazy deep-nested partial. - %p== Nesting level #{@nesting} - = render :partial => 'haml/templates/av_partial_2_ugly' if @nesting > 0 \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_layout.erb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_layout.erb deleted file mode 100644 index 91c839de..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_layout.erb +++ /dev/null @@ -1,3 +0,0 @@ -Before -<%= yield -%> -After diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_layout_for_partial.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_layout_for_partial.haml deleted file mode 100644 index 7cf538bd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_layout_for_partial.haml +++ /dev/null @@ -1,3 +0,0 @@ -.partial-layout - %h2 This is inside a partial layout - = yield \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_partial.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_partial.haml deleted file mode 100644 index 756b54bc..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_partial.haml +++ /dev/null @@ -1,8 +0,0 @@ -%p - @foo = - = @foo -- @foo = 'value three' -== Toplevel? #{haml_buffer.toplevel?} -%p - @foo = - = @foo diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_text_area.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_text_area.haml deleted file mode 100644 index 896b9758..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/_text_area.haml +++ /dev/null @@ -1,3 +0,0 @@ -.text_area_test_area - ~ "" -= "" diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/action_view.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/action_view.haml deleted file mode 100644 index 5b9fa04f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/action_view.haml +++ /dev/null @@ -1,47 +0,0 @@ -!!! -%html{html_attrs} - %head - %title Hampton Catlin Is Totally Awesome - %meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"} - %body - %h1 - This is very much like the standard template, - except that it has some ActionView-specific stuff. - It's only used for benchmarking. - .crazy_partials= render :partial => 'haml/templates/av_partial_1' - / You're In my house now! - .header - Yes, ladies and gentileman. He is just that egotistical. - Fantastic! This should be multi-line output - The question is if this would translate! Ahah! - = 1 + 9 + 8 + 2 #numbers should work and this should be ignored - #body= " Quotes should be loved! Just like people!" - - 120.times do |number| - - number - Wow.| - %p - = "Holy cow " + | - "multiline " + | - "tags! " + | - "A pipe (|) even!" | - = [1, 2, 3].collect { |n| "PipesIgnored|" } - = [1, 2, 3].collect { |n| | - n.to_s | - }.join("|") | - %div.silent - - foo = String.new - - foo << "this" - - foo << " shouldn't" - - foo << " evaluate" - = foo + " but now it should!" - -# Woah crap a comment! - - -# That was a line that shouldn't close everything. - %ul.really.cool - - ('a'..'f').each do |a| - %li= a - #combo.of_divs_with_underscore= @should_eval = "with this text" - = [ 104, 101, 108, 108, 111 ].map do |byte| - - byte.chr - .footer - %strong.shout= "This is a really long ruby quote. It should be loved and wrapped because its more than 50 characters. This value may change in the future and this test may look stupid. \nSo, I'm just making it *really* long. God, I hope this works" diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/action_view_ugly.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/action_view_ugly.haml deleted file mode 100644 index 5f0551ed..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/action_view_ugly.haml +++ /dev/null @@ -1,47 +0,0 @@ -!!! -%html{html_attrs} - %head - %title Hampton Catlin Is Totally Awesome - %meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"} - %body - %h1 - This is very much like the standard template, - except that it has some ActionView-specific stuff. - It's only used for benchmarking. - .crazy_partials= render :partial => 'haml/templates/av_partial_1_ugly' - / You're In my house now! - .header - Yes, ladies and gentileman. He is just that egotistical. - Fantastic! This should be multi-line output - The question is if this would translate! Ahah! - = 1 + 9 + 8 + 2 #numbers should work and this should be ignored - #body= " Quotes should be loved! Just like people!" - - 120.times do |number| - - number - Wow.| - %p - = "Holy cow " + | - "multiline " + | - "tags! " + | - "A pipe (|) even!" | - = [1, 2, 3].collect { |n| "PipesIgnored|" } - = [1, 2, 3].collect { |n| | - n.to_s | - }.join("|") | - %div.silent - - foo = String.new - - foo << "this" - - foo << " shouldn't" - - foo << " evaluate" - = foo + " but now it should!" - -# Woah crap a comment! - - -# That was a line that shouldn't close everything. - %ul.really.cool - - ('a'..'f').each do |a| - %li= a - #combo.of_divs_with_underscore= @should_eval = "with this text" - = [ 104, 101, 108, 108, 111 ].map do |byte| - - byte.chr - .footer - %strong.shout= "This is a really long ruby quote. It should be loved and wrapped because its more than 50 characters. This value may change in the future and this test may look stupid. \nSo, I'm just making it *really* long. God, I hope this works" diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/breakage.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/breakage.haml deleted file mode 100644 index 57c17341..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/breakage.haml +++ /dev/null @@ -1,8 +0,0 @@ -%p - %h1 Hello! - = "lots of lines" - - raise "Oh no!" - %p - this is after the exception - %strong yes it is! -ho ho ho. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/content_for_layout.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/content_for_layout.haml deleted file mode 100644 index e9d7e6d6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/content_for_layout.haml +++ /dev/null @@ -1,8 +0,0 @@ -!!! -%html - %head - %body - #yieldy - = yield :layout - #nosym - = yield diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/eval_suppressed.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/eval_suppressed.haml deleted file mode 100644 index 1e3c0346..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/eval_suppressed.haml +++ /dev/null @@ -1,11 +0,0 @@ -= "not me!" -= "nor me!" -- haml_concat "not even me!" -%p= "NO!" -%p~ "UH-UH!" -%h1 Me! -#foo - %p#bar All - %br/ - %p.baz This - Should render diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/filters.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/filters.haml deleted file mode 100644 index dc5494d1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/filters.haml +++ /dev/null @@ -1,66 +0,0 @@ -%style - - width = 5 + 17 - :sass - p - :border - :style dotted - :width #{width}px - :color #ff00ff - h1 - :font-weight normal - -:test - This - Should - Not - Print - -%p - :javascript - function newline(str) { - return "\n" + str; - } - -:plain - This - Is - Plain - Text - %strong right? - \#{not interpolated} - \\#{1 + 2} - \\\#{also not} - \\ - -- last = "noitalo" -%p - %pre - :preserve - This pre is pretty deeply - nested. - Does #{"interp" + last.reverse} work? - :preserve - This one is, too. - Nested, that is. - -- num = 10 -%ul - :erb - <% num.times do |c| %> -
      • <%= (c+97).chr %>
      • - <% end %> - <% res = 178 %> - -.res= res - -= "Text!" - -- var = "Hello" -:ruby - printf "%s, World!\n", var - print "How are you doing today?\n" - -:escaped -
        -

        I think — or do I?

        -
        diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/helpers.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/helpers.haml deleted file mode 100644 index 07f78840..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/helpers.haml +++ /dev/null @@ -1,95 +0,0 @@ -= h("&&&&&&&&&&&") # This is an ActionView Helper... should load -- foo = capture do # This ActionView Helper is designed for ERB, but should work with haml - %div - %p.title Title - %p.text - Woah this is really crazy - I mean wow, - man. -- 3.times do - = foo -%p foo -- tab_up -%p reeeeeeeeeeeeeeeeeeeeeeeeeeeeeeally loooooooooooooooooong -- tab_down -.woah - #funky - = capture_haml do - %div - %h1 Big! - %p Small - / Invisible - = capture do - .dilly - %p foo - %h1 bar - = surround '(', ')' do - %strong parentheses! -= precede '*' do - %span.small Not really -click -= succeed '.' do - %a{:href=>"thing"} here -%p baz -- haml_buffer.tabulation = 10 -%p boom -- concat "foo\n" -- haml_buffer.tabulation = 0 --# --# ActionPack pre-2.0 has weird url_for issues here. -- if ActionPack::VERSION::MAJOR < 2 - :plain -

        -

        -

        -
        - -
        -

        - @foo = - value one -

        - Toplevel? false -

        - @foo = - value three -

        - -
        - Title: - - Body: - -
        -
        -- else - %p - = form_tag '' - %div - - form_tag '' do - %div= submit_tag 'save' - - @foo = 'value one' - = test_partial 'partial' - - form_for :article, @article, :url => '' do |f| - Title: - = f.text_field :title - Body: - = f.text_field :body -= list_of({:google => 'http://www.google.com'}) do |name, link| - %a{ :href => link }= name -%p - - haml_concat "foo" - %div - - haml_concat "bar" - - haml_concat "boom" - baz - - haml_concat "boom, again" -- haml_tag :table do - - haml_tag :tr do - - haml_tag :td, {:class => 'cell'} do - - haml_tag :strong, "strong!" - - haml_concat "data" - - haml_tag :td do - - haml_concat "more_data" -- haml_tag :hr -- haml_tag :div, '' diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/helpful.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/helpful.haml deleted file mode 100644 index 3e44a50d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/helpful.haml +++ /dev/null @@ -1,11 +0,0 @@ -%div[@article] - %h1= @article.title - %div= @article.body -#id[@article] id -.class[@article] class -#id.class[@article] id class -%div{:class => "article full"}[@article]= "boo" -%div{'class' => "article full"}[@article]= "moo" -%div.articleFull[@article]= "foo" -%span[@not_a_real_variable_and_will_be_nil] - Boo diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/just_stuff.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/just_stuff.haml deleted file mode 100644 index 29c4d578..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/just_stuff.haml +++ /dev/null @@ -1,83 +0,0 @@ -!!! XML -!!! XML ISO-8859-1 -!!! XML UtF-8 Foo bar -!!! -!!! 1.1 -!!! 1.1 Strict -!!! Strict foo bar -!!! FRAMESET -%strong{:apos => "Foo's bar!"} Boo! -== Embedded? false! -== Embedded? #{true}! -- embedded = true -== Embedded? #{embedded}! -== Embedded? #{"twice! #{true}"}! -== Embedded? #{"one"} af"t"er #{"another"}! -%p== Embedded? false! -%p== Embedded? #{true}! -- embedded = true -%p== Embedded? #{embedded}! -%p== Embedded? #{"twice! #{true}"}! -%p== Embedded? #{"one"} af"t"er #{"another"}! -= "stuff followed by whitespace" - -- if true - - %strong block with whitespace -%p - \Escape - \- character - \%p foo - \yee\ha -/ Short comment -/ - This is a block comment - cool, huh? - %strong there can even be sub-tags! - = "Or script!" --# Haml comment --# - Nested Haml comment - - raise 'dead' -%p{ :class => "" } class attribute should appear! -%p{ :gorbachev => nil } this attribute shouldn't appear -/[if lte IE6] conditional comment! -/[if gte IE7] - %p Block conditional comment - %div - %h1 Cool, eh? -/[if gte IE5.2] - Woah a period. -= "test" | - "test" | --# Hard tabs shouldn't throw errors. - -- case :foo -- when :bar - %br Blah -- when :foo - %br -- case :foo - - when :bar - %meta{ :foo => 'blah'} - - when :foo - %meta{ :foo => 'bar'} -%img -%hr -%link -%script Inline content -%br - Nested content -%p.foo{:class => true ? 'bar' : 'baz'}[@article] Blah -%p.foo{:class => false ? 'bar' : ''}[@article] Blah -%p.qux{:class => 'quux'}[@article] Blump -== #{"Woah inner quotes"} -%p.dynamic_quote{:quotes => "single '", :dyn => 1 + 2} -%p.dynamic_self_closing{:dyn => 1 + 2}/ -%body - :plain - hello - %div - - %img - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/list.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/list.haml deleted file mode 100644 index 40a80e64..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/list.haml +++ /dev/null @@ -1,12 +0,0 @@ -!Not a Doctype! -%ul - %li a - %li b - %li c - %li d - %li e - %li f - %li g - %li h - %li i - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/nuke_inner_whitespace.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/nuke_inner_whitespace.haml deleted file mode 100644 index 8eebd417..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/nuke_inner_whitespace.haml +++ /dev/null @@ -1,32 +0,0 @@ -%p - %q< Foo -%p - %q{:a => 1 + 1}< Foo -%p - %q<= "Foo\nBar" -%p - %q{:a => 1 + 1}<= "Foo\nBar" -%p - %q< - Foo - Bar -%p - %q{:a => 1 + 1}< - Foo - Bar -%p - %q< - %div - Foo - Bar -%p - %q{:a => 1 + 1}< - %div - Foo - Bar - --# Regression test -%p - %q<= "foo" - %q{:a => 1 + 1} - bar diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/nuke_outer_whitespace.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/nuke_outer_whitespace.haml deleted file mode 100644 index 1e2a7f5f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/nuke_outer_whitespace.haml +++ /dev/null @@ -1,144 +0,0 @@ -%p - %p - %q> - Foo -%p - %p - %q{:a => 1 + 1}> - Foo -%p - %p - %q> Foo -%p - %p - %q{:a => 1 + 1}> Foo -%p - %p - %q> - = "Foo" -%p - %p - %q{:a => 1 + 1}> - = "Foo" -%p - %p - %q>= "Foo" -%p - %p - %q{:a => 1 + 1}>= "Foo" -%p - %p - %q> - = "Foo\nBar" -%p - %p - %q{:a => 1 + 1}> - = "Foo\nBar" -%p - %p - %q>= "Foo\nBar" -%p - %p - %q{:a => 1 + 1}>= "Foo\nBar" -%p - %p - - tab_up - foo - %q> - Foo - bar - - tab_down -%p - %p - - tab_up - foo - %q{:a => 1 + 1}> - Foo - bar - - tab_down -%p - %p - - tab_up - foo - %q> Foo - bar - - tab_down -%p - %p - - tab_up - foo - %q{:a => 1 + 1}> Foo - bar - - tab_down -%p - %p - - tab_up - foo - %q> - = "Foo" - bar - - tab_down -%p - %p - - tab_up - foo - %q{:a => 1 + 1}> - = "Foo" - bar - - tab_down -%p - %p - - tab_up - foo - %q>= "Foo" - bar - - tab_down -%p - %p - - tab_up - foo - %q{:a => 1 + 1}>= "Foo" - bar - - tab_down -%p - %p - - tab_up - foo - %q> - = "Foo\nBar" - bar - - tab_down -%p - %p - - tab_up - foo - %q{:a => 1 + 1}> - = "Foo\nBar" - bar - - tab_down -%p - %p - - tab_up - foo - %q>= "Foo\nBar" - bar - - tab_down -%p - %p - - tab_up - foo - %q{:a => 1 + 1}>= "Foo\nBar" - bar - - tab_down -%p - %p - %q> -%p - %p - %q>/ -%p - %p - %q{:a => 1 + 1}> -%p - %p - %q{:a => 1 + 1}>/ diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/original_engine.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/original_engine.haml deleted file mode 100644 index df31a5aa..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/original_engine.haml +++ /dev/null @@ -1,17 +0,0 @@ -!!! -%html - %head - %title Stop. haml time - #content - %h1 This is a title! - %p Lorem ipsum dolor sit amet, consectetur adipisicing elit - %p{:class => 'foo'} Cigarettes! - %h2 Man alive! - %ul.things - %li Slippers - %li Shoes - %li Bathrobe - %li Coffee - %pre - This is some text that's in a pre block! - Let's see what happens when it's rendered! What about now, since we're on a new line? diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/partial_layout.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/partial_layout.haml deleted file mode 100644 index b6373b3f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/partial_layout.haml +++ /dev/null @@ -1,3 +0,0 @@ -%h1 Partial layout used with for block: -- render :layout => 'layout_for_partial.haml' do - %p Some content within a layout \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/partialize.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/partialize.haml deleted file mode 100644 index 327d90da..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/partialize.haml +++ /dev/null @@ -1 +0,0 @@ -= render :file => "#{name}.haml" diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/partials.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/partials.haml deleted file mode 100644 index d74f4b45..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/partials.haml +++ /dev/null @@ -1,12 +0,0 @@ -- @foo = 'value one' -%p - @foo = - = @foo -- @foo = 'value two' -%p - @foo = - = @foo -= test_partial "partial" -%p - @foo = - = @foo diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/render_layout.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/render_layout.haml deleted file mode 100644 index 549742b9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/render_layout.haml +++ /dev/null @@ -1,2 +0,0 @@ -= render :layout => 'layout' do - During diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/silent_script.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/silent_script.haml deleted file mode 100644 index 45199f0b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/silent_script.haml +++ /dev/null @@ -1,40 +0,0 @@ -%div - %h1 I can count! - - (1..20).each do |i| - = i - %h1 I know my ABCs! - %ul - - ('a'..'z').each do |i| - %li= i - %h1 I can catch errors! - - begin - - String.silly - - rescue NameError => e - = "Oh no! \"#{e}\" happened!" - %p - "false" is: - - if false - = "true" - - else - = "false" - - if true - - 5.times do |i| - - if i % 2 == 1 - Odd! - - else - Even! - - else - = "This can't happen!" -- 13 | -.foo - %strong foobar -- 5.times | - do | - |a| | - %strong= a -.test - - "foo | - bar | - baz" | - - %p boom diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/standard.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/standard.haml deleted file mode 100644 index 0126ac79..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/standard.haml +++ /dev/null @@ -1,42 +0,0 @@ -!!! -%html{:xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en-US", "lang" => "en-US"} - %head - %title Hampton Catlin Is Totally Awesome - %meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"} - %body - / You're In my house now! - .header - Yes, ladies and gentileman. He is just that egotistical. - Fantastic! This should be multi-line output - The question is if this would translate! Ahah! - = 1 + 9 + 8 + 2 #numbers should work and this should be ignored - #body= " Quotes should be loved! Just like people!" - - 120.times do |number| - = number - Wow.| - %p - = "Holy cow " + | - "multiline " + | - "tags! " + | - "A pipe (|) even!" | - = [1, 2, 3].collect { |n| "PipesIgnored|" }.join - = [1, 2, 3].collect { |n| | - n.to_s | - }.join("|") | - %div.silent - - foo = String.new - - foo << "this" - - foo << " shouldn't" - - foo << " evaluate" - = foo + " but now it should!" - -# Woah crap a comment! - - -# That was a line that shouldn't close everything. - %ul.really.cool - - ('a'..'f').each do |a| - %li= a - #combo.of_divs_with_underscore= @should_eval = "with this text" - = "foo".each_line do |line| - - nil - .footer - %strong.shout= "This is a really long ruby quote. It should be loved and wrapped because its more than 50 characters. This value may change in the future and this test may look stupid. \nSo, I'm just making it *really* long. God, I hope this works" diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/standard_ugly.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/standard_ugly.haml deleted file mode 100644 index 0126ac79..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/standard_ugly.haml +++ /dev/null @@ -1,42 +0,0 @@ -!!! -%html{:xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en-US", "lang" => "en-US"} - %head - %title Hampton Catlin Is Totally Awesome - %meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"} - %body - / You're In my house now! - .header - Yes, ladies and gentileman. He is just that egotistical. - Fantastic! This should be multi-line output - The question is if this would translate! Ahah! - = 1 + 9 + 8 + 2 #numbers should work and this should be ignored - #body= " Quotes should be loved! Just like people!" - - 120.times do |number| - = number - Wow.| - %p - = "Holy cow " + | - "multiline " + | - "tags! " + | - "A pipe (|) even!" | - = [1, 2, 3].collect { |n| "PipesIgnored|" }.join - = [1, 2, 3].collect { |n| | - n.to_s | - }.join("|") | - %div.silent - - foo = String.new - - foo << "this" - - foo << " shouldn't" - - foo << " evaluate" - = foo + " but now it should!" - -# Woah crap a comment! - - -# That was a line that shouldn't close everything. - %ul.really.cool - - ('a'..'f').each do |a| - %li= a - #combo.of_divs_with_underscore= @should_eval = "with this text" - = "foo".each_line do |line| - - nil - .footer - %strong.shout= "This is a really long ruby quote. It should be loved and wrapped because its more than 50 characters. This value may change in the future and this test may look stupid. \nSo, I'm just making it *really* long. God, I hope this works" diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/tag_parsing.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/tag_parsing.haml deleted file mode 100644 index f142ebbd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/tag_parsing.haml +++ /dev/null @@ -1,21 +0,0 @@ -%div.tags - %foo 1 - %FOO 2 - %fooBAR 3 - %fooBar 4 - %foo_bar 5 - %foo-bar 6 - %foo:bar 7 - %foo.bar 8 - %fooBAr_baz:boom_bar 9 - %foo13 10 - %foo2u 11 -%div.classes - %p.foo.bar#baz#boom - .fooBar a - .foo-bar b - .foo_bar c - .FOOBAR d - .foo16 e - .123 f - .foo2u g diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/very_basic.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/very_basic.haml deleted file mode 100644 index 93396b96..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/very_basic.haml +++ /dev/null @@ -1,4 +0,0 @@ -!!! -%html - %head - %body diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/whitespace_handling.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/whitespace_handling.haml deleted file mode 100644 index f459e75f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/templates/whitespace_handling.haml +++ /dev/null @@ -1,87 +0,0 @@ -#whitespace_test - = test_partial "text_area", :value => "Oneline" - = test_partial "text_area", :value => "Two\nlines" - ~ test_partial "text_area", :value => "Oneline" - ~ test_partial "text_area", :value => "Two\nlines" - #flattened~ test_partial "text_area", :value => "Two\nlines" -.hithere - ~ "Foo bar" - ~ "
        foo bar
        " - ~ "
        foo\nbar
        " - %p~ "
        foo\nbar
        " - %p~ "foo\nbar" -.foo - ~ 13 - ~ "".each_line do |l| - - haml_concat l.strip -#whitespace_test - = test_partial "text_area", :value => "Oneline" - = test_partial "text_area", :value => "Two\nlines" - = find_and_preserve test_partial("text_area", :value => "Oneline") - = find_and_preserve test_partial("text_area", :value => "Two\nlines") - #flattened= find_and_preserve test_partial("text_area", :value => "Two\nlines") -.hithere - = find_and_preserve("Foo bar") - = find_and_preserve("
        foo bar
        ") - = find_and_preserve("
        foo\nbar
        ") - %p= find_and_preserve("
        foo\nbar
        ") - %p= find_and_preserve("foo\nbar") - %pre - :preserve - ___ - ,o88888 - ,o8888888' - ,:o:o:oooo. ,8O88Pd8888" - ,.::.::o:ooooOoOoO. ,oO8O8Pd888'" - ,.:.::o:ooOoOoOO8O8OOo.8OOPd8O8O" - , ..:.::o:ooOoOOOO8OOOOo.FdO8O8" - , ..:.::o:ooOoOO8O888O8O,COCOO" - , . ..:.::o:ooOoOOOO8OOOOCOCO" - . ..:.::o:ooOoOoOO8O8OCCCC"o - . ..:.::o:ooooOoCoCCC"o:o - . ..:.::o:o:,cooooCo"oo:o: - ` . . ..:.:cocoooo"'o:o:::' - .` . ..::ccccoc"'o:o:o:::' - :.:. ,c:cccc"':.:.:.:.:.' - ..:.:"'`::::c:"'..:.:.:.:.:.' http://www.chris.com/ASCII/ - ...:.'.:.::::"' . . . . .' - .. . ....:."' ` . . . '' - . . . ...."' - .. . ."' -hrr- - . - - - It's a planet! - %strong This shouldn't be bold! - %strong This should! - %textarea - :preserve - ___ ___ ___ ___ - /\__\ /\ \ /\__\ /\__\ - /:/ / /::\ \ /::| | /:/ / - /:/__/ /:/\:\ \ /:|:| | /:/ / - /::\ \ ___ /::\~\:\ \ /:/|:|__|__ /:/ / - /:/\:\ /\__\ /:/\:\ \:\__\ /:/ |::::\__\ /:/__/ - \/__\:\/:/ / \/__\:\/:/ / \/__/~~/:/ / \:\ \ - \::/ / \::/ / /:/ / \:\ \ - /:/ / /:/ / /:/ / \:\ \ - /:/ / /:/ / /:/ / \:\__\ - \/__/ \/__/ \/__/ \/__/ - - Many - thanks - to - http://www.network-science.de/ascii/ - %strong indeed! -.foo - = find_and_preserve(13) -%pre - :preserve - __ ______ __ ______ - .----.| |--.|__ |.----.| |--..--------.| __ | - | __|| ||__ || __|| < | || __ | - |____||__|__||______||____||__|__||__|__|__||______| -%pre - :preserve - foo - bar diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/util_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/util_test.rb deleted file mode 100644 index 560c2343..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/haml/util_test.rb +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env ruby -require File.dirname(__FILE__) + '/../test_helper' -require 'pathname' - -class UtilTest < Test::Unit::TestCase - include Haml::Util - - def test_scope - assert(File.exist?(scope("Rakefile"))) - end - - def test_to_hash - assert_equal({ - :foo => 1, - :bar => 2, - :baz => 3 - }, to_hash([[:foo, 1], [:bar, 2], [:baz, 3]])) - end - - def test_map_keys - assert_equal({ - "foo" => 1, - "bar" => 2, - "baz" => 3 - }, map_keys({:foo => 1, :bar => 2, :baz => 3}) {|k| k.to_s}) - end - - def test_map_vals - assert_equal({ - :foo => "1", - :bar => "2", - :baz => "3" - }, map_vals({:foo => 1, :bar => 2, :baz => 3}) {|k| k.to_s}) - end - - def test_map_hash - assert_equal({ - "foo" => "1", - "bar" => "2", - "baz" => "3" - }, map_hash({:foo => 1, :bar => 2, :baz => 3}) {|k, v| [k.to_s, v.to_s]}) - end - - def test_powerset - return unless Set[Set[]] == Set[Set[]] # There's a bug in Ruby 1.8.6 that breaks nested set equality - assert_equal([[].to_set].to_set, - powerset([])) - assert_equal([[].to_set, [1].to_set].to_set, - powerset([1])) - assert_equal([[].to_set, [1].to_set, [2].to_set, [1, 2].to_set].to_set, - powerset([1, 2])) - assert_equal([[].to_set, [1].to_set, [2].to_set, [3].to_set, - [1, 2].to_set, [2, 3].to_set, [1, 3].to_set, [1, 2, 3].to_set].to_set, - powerset([1, 2, 3])) - end - - def test_merge_adjacent_strings - assert_equal(["foo bar baz", :bang, "biz bop", 12], - merge_adjacent_strings(["foo ", "bar ", "baz", :bang, "biz", " bop", 12])) - end - - def test_silence_warnings - old_stderr, $stderr = $stderr, StringIO.new - warn "Out" - assert_equal("Out\n", $stderr.string) - silence_warnings {warn "In"} - assert_equal("Out\n", $stderr.string) - ensure - $stderr = old_stderr - end - - def test_has - assert(has?(:instance_method, String, :chomp!)) - assert(has?(:private_instance_method, Haml::Engine, :set_locals)) - end - - def test_enum_with_index - assert_equal(%w[foo0 bar1 baz2], - enum_with_index(%w[foo bar baz]).map {|s, i| "#{s}#{i}"}) - end - - def test_def_static_method - klass = Class.new - def_static_method(klass, :static_method, [:arg1, :arg2], - :sarg1, :sarg2, <and<% else %>but never<% end %> " << arg2 - - <% if sarg2 %> - s << "." - <% end %> -RUBY - c = klass.new - assert_equal("Always brush your teeth and comb your hair.", - c.send(static_method_name(:static_method, true, true), - "brush your teeth", "comb your hair")) - assert_equal("Always brush your teeth and comb your hair", - c.send(static_method_name(:static_method, true, false), - "brush your teeth", "comb your hair")) - assert_equal("Always brush your teeth but never play with fire.", - c.send(static_method_name(:static_method, false, true), - "brush your teeth", "play with fire")) - assert_equal("Always brush your teeth but never play with fire", - c.send(static_method_name(:static_method, false, false), - "brush your teeth", "play with fire")) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/linked_rails.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/linked_rails.rb deleted file mode 100644 index b9386c09..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/linked_rails.rb +++ /dev/null @@ -1,21 +0,0 @@ -# allows testing with edge Rails by creating a test/rails symlink -linked_rails = File.dirname(__FILE__) + '/rails' - -if File.exists?(linked_rails) && !$:.include?(linked_rails + '/activesupport/lib') - puts "[ using linked Rails ]" - $:.unshift linked_rails + '/activesupport/lib' - $:.unshift linked_rails + '/actionpack/lib' -end -require 'rubygems' -require 'action_controller' -require 'action_view' - -ActionController::Base.logger = Logger.new(nil) - -# Load plugins from test/plugins. -# This will only work with very basic plugins, -# since we don't want to load the entirety of Rails. -Dir[File.dirname(__FILE__) + '/plugins/*'].each do |plugin| - $: << plugin + '/lib' - Object.new.instance_eval(File.read(plugin + '/init.rb')) -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/css2sass_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/css2sass_test.rb deleted file mode 100644 index 4b46bcf9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/css2sass_test.rb +++ /dev/null @@ -1,251 +0,0 @@ -require 'test/unit' -require File.dirname(__FILE__) + '/../test_helper' -require 'sass/css' - -class CSS2SassTest < Test::Unit::TestCase - def test_basic - css = < true)) -h1 - :color red -SASS - end - - def test_nesting - assert_equal(< 'Expected expression, was end of text.', - "!a = 1 + 2 +" => 'Expected expression, was end of text.', - "!a = 1 + 2 + %" => 'Expected expression, was mod token.', - "!a = foo(\"bar\"" => 'Expected rparen token, was end of text.', - "!a = 1 }" => 'Unexpected end_interpolation token.', - "!a = 1 }foo\"" => 'Unexpected end_interpolation token.', - ":" => 'Invalid property: ":".', - ": a" => 'Invalid property: ": a".', - ":= a" => 'Invalid property: ":= a".', - "a\n :b" => < 'Invalid property: "b:" (no value).', - "a\n :b: c" => 'Invalid property: ":b: c".', - "a\n :b:c d" => 'Invalid property: ":b:c d".', - "a\n :b=c d" => 'Invalid property: ":b=c d".', - "a\n :b c;" => 'Invalid property: ":b c;" (no ";" required at end-of-line).', - "a\n b: c;" => 'Invalid property: "b: c;" (no ";" required at end-of-line).', - "a\n b : c" => 'Invalid property: "b : c".', - "a\n b=c: d" => 'Invalid property: "b=c: d".', - ":a b" => 'Properties aren\'t allowed at the root of a document.', - "a:" => 'Properties aren\'t allowed at the root of a document.', - ":a" => < 'Invalid variable: "!".', - "!a" => 'Invalid variable: "!a".', - "! a" => 'Invalid variable: "! a".', - "!a b" => 'Invalid variable: "!a b".', - "!a = 1b + 2c" => "Incompatible units: 'c' and 'b'.", - "!a = 1b < 2c" => "Incompatible units: 'c' and 'b'.", - "!a = 1b > 2c" => "Incompatible units: 'c' and 'b'.", - "!a = 1b <= 2c" => "Incompatible units: 'c' and 'b'.", - "!a = 1b >= 2c" => "Incompatible units: 'c' and 'b'.", - "a\n :b= 1b * 2c" => "2b*c isn't a valid CSS value.", - "a\n :b= 1b % 2c" => "Cannot modulo by a number with units: 2c.", - "!a = 2px + #ccc" => "Cannot add a number with units (2px) to a color (#cccccc).", - "!a = #ccc + 2px" => "Cannot add a number with units (2px) to a color (#cccccc).", - "& a\n :b c" => ["Base-level rules cannot contain the parent-selector-referencing character '&'.", 1], - "a\n :b\n c" => "Illegal nesting: Only properties may be nested beneath properties.", - "a,\n :b c" => ["Rules can\'t end in commas.", 1], - "a," => "Rules can\'t end in commas.", - "a,\n!b = 1" => ["Rules can\'t end in commas.", 1], - "!a = b\n :c d\n" => "Illegal nesting: Nothing may be nested beneath variable declarations.", - "@import foo.sass" => "File to import not found or unreadable: foo.sass.", - "@import templates/basic\n foo" => "Illegal nesting: Nothing may be nested beneath import directives.", - "foo\n @import templates/basic" => "Import directives may only be used at the root of a document.", - "foo\n @import #{File.dirname(__FILE__)}/templates/basic" => "Import directives may only be used at the root of a document.", - %Q{!foo = "bar" "baz" !} => %Q{Syntax error in '"bar" "baz" !' at character 20.}, - "=foo\n :color red\n.bar\n +bang" => "Undefined mixin 'bang'.", - ".bar\n =foo\n :color red\n" => ["Mixins may only be defined at the root of a document.", 2], - "=foo\n :color red\n.bar\n +foo\n :color red" => "Illegal nesting: Nothing may be nested beneath mixin directives.", - " a\n b: c" => ["Indenting at the beginning of the document is illegal.", 1], - " \n \n\t\n a\n b: c" => ["Indenting at the beginning of the document is illegal.", 4], - "a\n b: c\n b: c" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 3], - "a\n b: c\na\n b: c" => ["Inconsistent indentation: 1 space was used for indentation, but the rest of the document was indented using 2 spaces.", 4], - "a\n\t\tb: c\n\tb: c" => ["Inconsistent indentation: 1 tab was used for indentation, but the rest of the document was indented using 2 tabs.", 3], - "a\n b: c\n b: c" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 3], - "a\n b: c\n a\n d: e" => ["Inconsistent indentation: 3 spaces were used for indentation, but the rest of the document was indented using 2 spaces.", 4], - "a\n b: c\na\n d: e" => ["The line was indented 2 levels deeper than the previous line.", 4], - "a\n b: c\n a\n d: e" => ["The line was indented 3 levels deeper than the previous line.", 4], - "a\n \tb: c" => ["Indentation can't use both tabs and spaces.", 2], - "=a(" => 'Expected rparen token, was end of text.', - "=a(b)" => 'Expected rparen token, was ident token.', - "=a(,)" => "Expected rparen token, was comma token.", - "=a(!)" => "Syntax error in '(!)' at character 4.", - "=a(!foo bar)" => "Expected rparen token, was ident token.", - "=foo\n bar: baz\n+foo" => ["Properties aren't allowed at the root of a document.", 2], - "a-\#{!b\n c: d" => ["Expected end_interpolation token, was end of text.", 1], - "=a(!b = 1, !c)" => "Required argument !c must come before any optional arguments.", - "=a(!b = 1)\n :a= !b\ndiv\n +a(1,2)" => "Mixin a takes 1 argument but 2 were passed.", - "=a(!b)\n :a= !b\ndiv\n +a" => "Mixin a is missing parameter !b.", - "@else\n a\n b: c" => ["@else must come after @if.", 1], - "@if false\n@else foo" => "Invalid else directive '@else foo': expected 'if '.", - "@if false\n@else if " => "Invalid else directive '@else if': expected 'if '.", - "a\n !b = 12\nc\n d = !b" => 'Undefined variable: "!b".', - "=foo\n !b = 12\nc\n +foo\n d = !b" => 'Undefined variable: "!b".', - '@for !a from "foo" to 1' => '"foo" is not an integer.', - '@for !a from 1 to "2"' => '"2" is not an integer.', - '@for !a from 1 to "foo"' => '"foo" is not an integer.', - '@for !a from 1 to 1.232323' => '1.232 is not an integer.', - '@for !a from 1px to 3em' => "Incompatible units: 'em' and 'px'.", - '@if' => "Invalid if directive '@if': expected expression.", - '@while' => "Invalid while directive '@while': expected expression.", - '@debug' => "Invalid debug directive '@debug': expected expression.", - - # Regression tests - "a\n b:\n c\n d" => ["Illegal nesting: Only properties may be nested beneath properties.", 3], - "& foo\n bar: baz\n blat: bang" => ["Base-level rules cannot contain the parent-selector-referencing character '&'.", 1], - "a\n b: c\n& foo\n bar: baz\n blat: bang" => ["Base-level rules cannot contain the parent-selector-referencing character '&'.", 3], - } - - def teardown - clean_up_sassc - end - - def test_basic_render - renders_correctly "basic", { :style => :compact } - end - - def test_empty_render - assert_equal "", render("") - end - - def test_multiple_calls_to_render - sass = Sass::Engine.new("a\n b: c") - assert_equal sass.render, sass.render - end - - def test_alternate_styles - renders_correctly "expanded", { :style => :expanded } - renders_correctly "compact", { :style => :compact } - renders_correctly "nested", { :style => :nested } - renders_correctly "compressed", { :style => :compressed } - end - - def test_flexible_tabulation - assert_equal("p {\n a: b; }\n p q {\n c: d; }\n", - render("p\n a: b\n q\n c: d\n")) - assert_equal("p {\n a: b; }\n p q {\n c: d; }\n", - render("p\n\ta: b\n\tq\n\t\tc: d\n")) - end - - EXCEPTION_MAP.each do |key, value| - define_method("test_exception (#{key.inspect})") do - line = 10 - begin - silence_warnings {Sass::Engine.new(key, :filename => __FILE__, :line => line).render} - rescue Sass::SyntaxError => err - value = [value] unless value.is_a?(Array) - - assert_equal(value.first.rstrip, err.message, "Line: #{key}") - assert_equal(__FILE__, err.sass_filename) - assert_equal((value[1] || key.split("\n").length) + line - 1, err.sass_line, "Line: #{key}") - assert_match(/#{Regexp.escape(__FILE__)}:[0-9]+/, err.backtrace[0], "Line: #{key}") - else - assert(false, "Exception not raised for\n#{key}") - end - end - end - - def test_exception_line - to_render = < err - assert_equal(5, err.sass_line) - else - assert(false, "Exception not raised for '#{to_render}'!") - end - end - - def test_exception_location - to_render = < __FILE__, :line => (__LINE__-7)).render - rescue Sass::SyntaxError => err - assert_equal(__FILE__, err.sass_filename) - assert_equal((__LINE__-6), err.sass_line) - else - assert(false, "Exception not raised for '#{to_render}'!") - end - end - - def test_imported_exception - [nil, 2].each do |i| - begin - Sass::Engine.new("@import bork#{i}", :load_paths => [File.dirname(__FILE__) + '/templates/']).render - rescue Sass::SyntaxError => err - assert_equal(2, err.sass_line) - assert_match(/bork#{i}\.sass$/, err.sass_filename) - else - assert(false, "Exception not raised for imported template: bork#{i}") - end - end - end - - def test_css_import - assert_equal("@import url(./fonts.css) screen;\n", render("@import url(./fonts.css) screen")) - assert_equal("@import \"./fonts.css\" screen;\n", render("@import \"./fonts.css\" screen")) - end - - def test_sass_import - assert !File.exists?(sassc_path("importee")) - renders_correctly "import", { :style => :compact, :load_paths => [File.dirname(__FILE__) + "/templates"] } - assert File.exists?(sassc_path("importee")) - end - - def test_nonexistent_extensionless_import - assert_warning(< :compact, :cache => false, - :load_paths => [File.dirname(__FILE__) + "/templates"], - }) - assert !File.exists?(sassc_path("importee")) - end - - def test_units - renders_correctly "units" - end - - def test_default_function - assert_equal("foo {\n bar: url(foo.png); }\n", render(%Q{foo\n bar = url("foo.png")\n})); - assert_equal("foo {\n bar: url(); }\n", render("foo\n bar = url()\n")); - end - - def test_string_minus - assert_equal("foo {\n bar: baz-boom-bat; }\n", render(%Q{foo\n bar = "baz"-"boom"-"bat"})) - assert_equal("foo {\n bar: -baz-boom; }\n", render(%Q{foo\n bar = -"baz"-"boom"})) - end - - def test_string_div - assert_equal("foo {\n bar: baz/boom/bat; }\n", render(%Q{foo\n bar = "baz"/"boom"/"bat"})) - assert_equal("foo {\n bar: /baz/boom; }\n", render(%Q{foo\n bar = /"baz"/"boom"})) - end - - def test_basic_multiline_selector - assert_equal("#foo #bar,\n#baz #boom {\n foo: bar; }\n", - render("#foo #bar,\n#baz #boom\n :foo bar")) - assert_equal("#foo #bar,\n#foo #baz {\n foo: bar; }\n", - render("#foo\n #bar,\n #baz\n :foo bar")) - assert_equal("#foo,\n#bar {\n foo: bar; }\n #foo #baz,\n #bar #baz {\n foo: bar; }\n", - render("#foo,\n#bar\n :foo bar\n #baz\n :foo bar")) - assert_equal("#foo #bar, #baz #boom { foo: bar; }\n", - render("#foo #bar,\n#baz #boom\n :foo bar", :style => :compact)) - - assert_equal("#foo #bar,#baz #boom{foo:bar}\n", - render("#foo #bar,\n#baz #boom\n :foo bar", :style => :compressed)) - end - - def test_complex_multiline_selector - renders_correctly "multiline" - end - - def test_colon_only - begin - render("a\n b: c", :property_syntax => :old) - rescue Sass::SyntaxError => e - assert_equal("Illegal property syntax: can't use new syntax when :property_syntax => :old is set.", - e.message) - assert_equal(2, e.sass_line) - else - assert(false, "SyntaxError not raised for :property_syntax => :old") - end - - begin - render("a\n :b c", :property_syntax => :new) - assert_equal(2, e.sass_line) - rescue Sass::SyntaxError => e - assert_equal("Illegal property syntax: can't use old syntax when :property_syntax => :new is set.", - e.message) - else - assert(false, "SyntaxError not raised for :property_syntax => :new") - end - end - - def test_pseudo_elements - assert_equal(< :compact)) - assert_equal("@a {\n b: c;\n}\n", render("@a\n :b c", :style => :expanded)) - assert_equal("@a{b:c}\n", render("@a\n :b c", :style => :compressed)) - - assert_equal("@a {\n b: c;\n d: e; }\n", - render("@a\n :b c\n :d e")) - assert_equal("@a { b: c; d: e; }\n", - render("@a\n :b c\n :d e", :style => :compact)) - assert_equal("@a {\n b: c;\n d: e;\n}\n", - render("@a\n :b c\n :d e", :style => :expanded)) - assert_equal("@a{b:c;d:e}\n", - render("@a\n :b c\n :d e", :style => :compressed)) - - assert_equal("@a {\n #b {\n c: d; } }\n", - render("@a\n #b\n :c d")) - assert_equal("@a { #b { c: d; } }\n", - render("@a\n #b\n :c d", :style => :compact)) - assert_equal("@a {\n #b {\n c: d;\n }\n}\n", - render("@a\n #b\n :c d", :style => :expanded)) - assert_equal("@a{#b{c:d}}\n", - render("@a\n #b\n :c d", :style => :compressed)) - - assert_equal("@a {\n #b {\n a: b; }\n #b #c {\n d: e; } }\n", - render("@a\n #b\n :a b\n #c\n :d e")) - assert_equal("@a { #b { a: b; }\n #b #c { d: e; } }\n", - render("@a\n #b\n :a b\n #c\n :d e", :style => :compact)) - assert_equal("@a {\n #b {\n a: b;\n }\n #b #c {\n d: e;\n }\n}\n", - render("@a\n #b\n :a b\n #c\n :d e", :style => :expanded)) - assert_equal("@a{#b{a:b}#b #c{d:e}}\n", - render("@a\n #b\n :a b\n #c\n :d e", :style => :compressed)) - - assert_equal("@a {\n #foo,\n #bar {\n b: c; } }\n", - render("@a\n #foo, \n #bar\n :b c")) - assert_equal("@a { #foo, #bar { b: c; } }\n", - render("@a\n #foo, \n #bar\n :b c", :style => :compact)) - assert_equal("@a {\n #foo,\n #bar {\n b: c;\n }\n}\n", - render("@a\n #foo, \n #bar\n :b c", :style => :expanded)) - assert_equal("@a{#foo,#bar{b:c}}\n", - render("@a\n #foo, \n #bar\n :b c", :style => :compressed)) - - to_render = < :compact)) - - assert_equal("@a{b:c;#d{e:f}g:h}\n", render(to_render, :style => :compressed)) - end - - def test_line_annotations - assert_equal(< true, :style => :compact)) -/* line 2, test_line_annotations_inline.sass */ -foo bar { foo: bar; } -/* line 5, test_line_annotations_inline.sass */ -foo baz { blip: blop; } - -/* line 9, test_line_annotations_inline.sass */ -floodle { flop: blop; } - -/* line 18, test_line_annotations_inline.sass */ -bup { mix: on; } -/* line 15, test_line_annotations_inline.sass */ -bup mixin { moop: mup; } - -/* line 22, test_line_annotations_inline.sass */ -bip hop, skip hop { a: b; } -CSS -foo - bar - foo: bar - - baz - blip: blop - - -floodle - - flop: blop - -=mxn - mix: on - mixin - moop: mup - -bup - +mxn - -bip, skip - hop - a: b -SASS - end - - def test_line_annotations_with_filename - renders_correctly "line_numbers", :line_comments => true, :load_paths => [File.dirname(__FILE__) + "/templates"] - end - - def test_empty_first_line - assert_equal("#a {\n b: c; }\n", render("#a\n\n b: c")) - end - - def test_escaped_rule - assert_equal(":focus {\n a: b; }\n", render("\\:focus\n a: b")) - assert_equal("a {\n b: c; }\n a :focus {\n d: e; }\n", render("\\a\n b: c\n \\:focus\n d: e")) - end - - def test_cr_newline - assert_equal("foo {\n a: b;\n c: d;\n e: f; }\n", render("foo\r a: b\r\n c: d\n\r e: f")) - end - - def test_or_eq - assert_equal("foo {\n a: b; }\n", render(%Q{!foo = "b"\n!foo ||= "c"\nfoo\n a = !foo})) - assert_equal("foo {\n a: b; }\n", render(%Q{!foo ||= "b"\nfoo\n a = !foo})) - end - - def test_mixins - renders_correctly "mixins", { :style => :expanded } - end - - def test_mixins_dont_interfere_with_sibling_combinator - assert_equal("foo + bar {\n a: b; }\nfoo + baz {\n c: d; }\n", - render("foo\n +\n bar\n a: b\n baz\n c: d")) - end - - def test_mixin_args - assert_equal("blat {\n baz: hi; }\n", render(< nil)} -WARNING on line 1: -Selector "foo bar" doesn't have any properties and will not be rendered. -END - end - - def test_root_level_pseudo_class_with_new_properties - assert_equal(< :new)) -:focus { - outline: 0; } -CSS -:focus - outline: 0 -SASS - end - - def test_pseudo_class_with_new_properties - assert_equal(< :new)) -p :focus { - outline: 0; } -CSS -p - :focus - outline: 0 -SASS - end - - def test_nil_option - assert_equal(< nil)) -foo { - a: b; } -CSS -foo - a: b -SASS - end - - # Regression tests - - def test_parens_in_mixins - assert_equal(< :compressed)) -.box{border-style:solid} -RESULT -.box - :border - /*:color black - :style solid -SOURCE - end - - def test_compressed_comment_beneath_directive - assert_equal(< :compressed)) -@foo{a:b} -RESULT -@foo - a: b - /*b: c -SOURCE - end - - def test_comment_with_crazy_indentation - assert_equal(< e - assert_equal(message, e.message) - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_results/more1.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_results/more1.css deleted file mode 100644 index b0d1182f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_results/more1.css +++ /dev/null @@ -1,9 +0,0 @@ -body { font: Arial; background: blue; } - -#page { width: 700px; height: 100; } -#page #header { height: 300px; } -#page #header h1 { font-size: 50px; color: blue; } - -#content.user.show #container.top #column.left { width: 100px; } -#content.user.show #container.top #column.right { width: 600px; } -#content.user.show #container.bottom { background: brown; } diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_results/more1_with_line_comments.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_results/more1_with_line_comments.css deleted file mode 100644 index f31dbca2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_results/more1_with_line_comments.css +++ /dev/null @@ -1,26 +0,0 @@ -/* line 3, ../more_templates/more1.sass */ -body { - font: Arial; - background: blue; } - -/* line 7, ../more_templates/more1.sass */ -#page { - width: 700px; - height: 100; } - /* line 10, ../more_templates/more1.sass */ - #page #header { - height: 300px; } - /* line 12, ../more_templates/more1.sass */ - #page #header h1 { - font-size: 50px; - color: blue; } - -/* line 18, ../more_templates/more1.sass */ -#content.user.show #container.top #column.left { - width: 100px; } -/* line 20, ../more_templates/more1.sass */ -#content.user.show #container.top #column.right { - width: 600px; } -/* line 22, ../more_templates/more1.sass */ -#content.user.show #container.bottom { - background: brown; } diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_results/more_import.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_results/more_import.css deleted file mode 100644 index 97c4797e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_results/more_import.css +++ /dev/null @@ -1,29 +0,0 @@ -imported { otherconst: hello; myconst: goodbye; pre-mixin: here; } - -body { font: Arial; background: blue; } - -#page { width: 700px; height: 100; } -#page #header { height: 300px; } -#page #header h1 { font-size: 50px; color: blue; } - -#content.user.show #container.top #column.left { width: 100px; } -#content.user.show #container.top #column.right { width: 600px; } -#content.user.show #container.bottom { background: brown; } - -midrule { inthe: middle; } - -body { font: Arial; background: blue; } - -#page { width: 700px; height: 100; } -#page #header { height: 300px; } -#page #header h1 { font-size: 50px; color: blue; } - -#content.user.show #container.top #column.left { width: 100px; } -#content.user.show #container.top #column.right { width: 600px; } -#content.user.show #container.bottom { background: brown; } - -@import url(basic.css); -@import url(../results/complex.css); -#foo { background-color: #baf; } - -nonimported { myconst: hello; otherconst: goodbye; post-mixin: here; } diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_templates/_more_partial.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_templates/_more_partial.sass deleted file mode 100644 index bef627d2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_templates/_more_partial.sass +++ /dev/null @@ -1,2 +0,0 @@ -#foo - :background-color #baf diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_templates/more1.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_templates/more1.sass deleted file mode 100644 index 71117bf5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_templates/more1.sass +++ /dev/null @@ -1,23 +0,0 @@ - - -body - :font Arial - :background blue - -#page - :width 700px - :height 100 - #header - :height 300px - h1 - :font-size 50px - :color blue - -#content.user.show - #container.top - #column.left - :width 100px - #column.right - :width 600px - #container.bottom - :background brown \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_templates/more_import.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_templates/more_import.sass deleted file mode 100644 index 95c2823f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/more_templates/more_import.sass +++ /dev/null @@ -1,11 +0,0 @@ -!preconst = "hello" - -=premixin - pre-mixin: here - -@import importee, basic, basic.css, ../results/complex.css, more_partial - -nonimported - :myconst = !preconst - :otherconst = !postconst - +postmixin diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/plugin_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/plugin_test.rb deleted file mode 100644 index c1553a8f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/plugin_test.rb +++ /dev/null @@ -1,232 +0,0 @@ -#!/usr/bin/env ruby -require File.dirname(__FILE__) + '/../test_helper' -require 'sass/plugin' -require 'fileutils' - -class SassPluginTest < Test::Unit::TestCase - @@templates = %w{ - complex script parent_ref import alt - subdir/subdir subdir/nested_subdir/nested_subdir - } - - def setup - FileUtils.mkdir tempfile_loc - FileUtils.mkdir tempfile_loc(nil,"more_") - set_plugin_opts - Sass::Plugin.update_stylesheets - end - - def teardown - clean_up_sassc - FileUtils.rm_r tempfile_loc - FileUtils.rm_r tempfile_loc(nil,"more_") - end - - @@templates.each do |name| - define_method("test_template_renders_correctly (#{name})") do - assert_renders_correctly(name) - end - end - - def test_no_update - File.delete(tempfile_loc('basic')) - assert Sass::Plugin.stylesheet_needs_update?('basic', template_loc, tempfile_loc) - Sass::Plugin.update_stylesheets - assert_stylesheet_updated 'basic' - end - - def test_update_needed_when_modified - sleep 1 - FileUtils.touch(template_loc('basic')) - assert Sass::Plugin.stylesheet_needs_update?('basic', template_loc, tempfile_loc) - Sass::Plugin.update_stylesheets - assert_stylesheet_updated 'basic' - end - - def test_update_needed_when_dependency_modified - sleep 1 - FileUtils.touch(template_loc('basic')) - assert Sass::Plugin.stylesheet_needs_update?('import', template_loc, tempfile_loc) - Sass::Plugin.update_stylesheets - assert_stylesheet_updated 'basic' - end - - def test_full_exception_handling - File.delete(tempfile_loc('bork')) - Sass::Plugin.update_stylesheets - File.open(tempfile_loc('bork')) do |file| - assert_equal("/*\nSass::SyntaxError: Undefined variable: \"!bork\".\non line 2 of #{template_loc('bork')}\n\n1: bork\n2: :bork= !bork", file.read.split("\n")[0...6].join("\n")) - end - File.delete(tempfile_loc('bork')) - end - - def test_nonfull_exception_handling - old_full_exception = Sass::Plugin.options[:full_exception] - Sass::Plugin.options[:full_exception] = false - - File.delete(tempfile_loc('bork')) - assert_raise(Sass::SyntaxError) {Sass::Plugin.update_stylesheets} - ensure - Sass::Plugin.options[:full_exception] = old_full_exception - end - - def test_two_template_directories - set_plugin_opts :template_location => { - template_loc => tempfile_loc, - template_loc(nil,'more_') => tempfile_loc(nil,'more_') - } - Sass::Plugin.update_stylesheets - ['more1', 'more_import'].each { |name| assert_renders_correctly(name, :prefix => 'more_') } - end - - def test_two_template_directories_with_line_annotations - set_plugin_opts :line_comments => true, - :style => :nested, - :template_location => { - template_loc => tempfile_loc, - template_loc(nil,'more_') => tempfile_loc(nil,'more_') - } - Sass::Plugin.update_stylesheets - assert_renders_correctly('more1_with_line_comments', 'more1', :prefix => 'more_') - end - - def test_merb_update - begin - require 'merb' - rescue LoadError - puts "\nmerb couldn't be loaded, skipping a test" - return - end - - require 'sass/plugin/merb' - if defined?(MerbHandler) - MerbHandler.send(:define_method, :process_without_sass) { |*args| } - else - Merb::Rack::Application.send(:define_method, :call_without_sass) { |*args| } - end - - set_plugin_opts - - File.delete(tempfile_loc('basic')) - assert Sass::Plugin.stylesheet_needs_update?('basic', template_loc, tempfile_loc) - - if defined?(MerbHandler) - MerbHandler.new('.').process nil, nil - else - Merb::Rack::Application.new.call(::Rack::MockRequest.env_for('/')) - end - - assert_stylesheet_updated 'basic' - end - - def test_doesnt_render_partials - assert !File.exists?(tempfile_loc('_partial')) - end - - ## Regression - - def test_cached_dependencies_update - FileUtils.mv(template_loc("basic"), template_loc("basic", "more_")) - set_plugin_opts :load_paths => [result_loc, template_loc(nil, "more_")] - - sleep 1 - FileUtils.touch(template_loc("basic", "more_")) - assert Sass::Plugin.stylesheet_needs_update?("import", template_loc, tempfile_loc) - Sass::Plugin.update_stylesheets - assert_renders_correctly("import") - ensure - FileUtils.mv(template_loc("basic", "more_"), template_loc("basic")) - end - - private - - def assert_renders_correctly(*arguments) - options = arguments.last.is_a?(Hash) ? arguments.pop : {} - prefix = options[:prefix] - result_name = arguments.shift - tempfile_name = arguments.shift || result_name - expected_lines = File.read(result_loc(result_name, prefix)).split("\n") - actual_lines = File.read(tempfile_loc(tempfile_name, prefix)).split("\n") - - if actual_lines.first == "/*" && expected_lines.first != "/*" - assert(false, actual_lines[0..actual_lines.enum_with_index.find {|l, i| l == "*/"}.last].join("\n")) - end - - expected_lines.zip(actual_lines).each_with_index do |pair, line| - message = "template: #{result_name}\nline: #{line + 1}" - assert_equal(pair.first, pair.last, message) - end - if expected_lines.size < actual_lines.size - assert(false, "#{actual_lines.size - expected_lines.size} Trailing lines found in #{tempfile_name}.css: #{actual_lines[expected_lines.size..-1].join('\n')}") - end - end - - def assert_stylesheet_updated(name) - assert !Sass::Plugin.stylesheet_needs_update?(name, template_loc, tempfile_loc) - - # Make sure it isn't an exception - expected_lines = File.read(result_loc(name)).split("\n") - actual_lines = File.read(tempfile_loc(name)).split("\n") - if actual_lines.first == "/*" && expected_lines.first != "/*" - assert(false, actual_lines[0..actual_lines.enum_with_index.find {|l, i| l == "*/"}.last].join("\n")) - end - end - - def template_loc(name = nil, prefix = nil) - if name - absolutize "#{prefix}templates/#{name}.sass" - else - absolutize "#{prefix}templates" - end - end - - def tempfile_loc(name = nil, prefix = nil) - if name - absolutize "#{prefix}tmp/#{name}.css" - else - absolutize "#{prefix}tmp" - end - end - - def result_loc(name = nil, prefix = nil) - if name - absolutize "#{prefix}results/#{name}.css" - else - absolutize "#{prefix}results" - end - end - - def absolutize(file) - "#{File.dirname(__FILE__)}/#{file}" - end - - def set_plugin_opts(overrides = {}) - Sass::Plugin.options = { - :template_location => template_loc, - :css_location => tempfile_loc, - :style => :compact, - :load_paths => [result_loc], - :always_update => true, - }.merge(overrides) - end - - def wait_a_tick - time = Time.now - loop {break if Time.now.sec != time.sec} - end -end - -module Sass::Plugin - class << self - public :stylesheet_needs_update? - end -end - -class Sass::Engine - alias_method :old_render, :render - - def render - raise "bork bork bork!" if @template[0] == "{bork now!}" - old_render - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/alt.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/alt.css deleted file mode 100644 index 8484343e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/alt.css +++ /dev/null @@ -1,4 +0,0 @@ -h1 { float: left; width: 274px; height: 75px; margin: 0; background-repeat: no-repeat; background-image: none; } -h1 a:hover, h1 a:visited { color: green; } -h1 b:hover { color: red; background-color: green; } -h1 const { nosp: 3; sp: 3; } diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/basic.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/basic.css deleted file mode 100644 index b0d1182f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/basic.css +++ /dev/null @@ -1,9 +0,0 @@ -body { font: Arial; background: blue; } - -#page { width: 700px; height: 100; } -#page #header { height: 300px; } -#page #header h1 { font-size: 50px; color: blue; } - -#content.user.show #container.top #column.left { width: 100px; } -#content.user.show #container.top #column.right { width: 600px; } -#content.user.show #container.bottom { background: brown; } diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/compact.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/compact.css deleted file mode 100644 index 6a4dcb41..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/compact.css +++ /dev/null @@ -1,5 +0,0 @@ -#main { width: 15em; color: #0000ff; } -#main p { border-style: dotted; /* Nested comment More nested stuff */ border-width: 2px; } -#main .cool { width: 100px; } - -#left { font-size: 2em; font-weight: bold; float: left; } diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/complex.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/complex.css deleted file mode 100644 index 6a0fee6b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/complex.css +++ /dev/null @@ -1,87 +0,0 @@ -body { margin: 0; font: 0.85em "Lucida Grande", "Trebuchet MS", Verdana, sans-serif; color: #fff; background: url(/images/global_bg.gif); } - -#page { width: 900px; margin: 0 auto; background: #440008; border-top-width: 5px; border-top-style: solid; border-top-color: #ff8500; } - -#header { height: 75px; padding: 0; } -#header h1 { float: left; width: 274px; height: 75px; margin: 0; background-image: url(/images/global_logo.gif); /* Crazy nested comment */ background-repeat: no-repeat; text-indent: -9999px; } -#header .status { float: right; padding-top: .5em; padding-left: .5em; padding-right: .5em; padding-bottom: 0; } -#header .status p { float: left; margin-top: 0; margin-right: 0.5em; margin-bottom: 0; margin-left: 0; } -#header .status ul { float: left; margin: 0; padding: 0; } -#header .status li { list-style-type: none; display: inline; margin: 0 5px; } -#header .status a:link, #header .status a:visited { color: #ff8500; text-decoration: none; } -#header .status a:hover { text-decoration: underline; } -#header .search { float: right; clear: right; margin: 12px 0 0 0; } -#header .search form { margin: 0; } -#header .search input { margin: 0 3px 0 0; padding: 2px; border: none; } - -#menu { clear: both; text-align: right; height: 20px; border-bottom: 5px solid #006b95; background: #00a4e4; } -#menu .contests ul { margin: 0 5px 0 0; padding: 0; } -#menu .contests ul li { list-style-type: none; margin: 0 5px; padding: 5px 5px 0 5px; display: inline; font-size: 1.1em; color: #fff; background: #00a4e4; } -#menu .contests ul li / This rule isn't a comment! { red: green; } -#menu .contests a:link, #menu .contests a:visited { color: #fff; text-decoration: none; font-weight: bold; } -#menu .contests a:hover { text-decoration: underline; } - -#content { clear: both; } -#content .container { clear: both; } -#content .container .column { float: left; } -#content .container .column .right { float: right; } -#content a:link, #content a:visited { color: #93d700; text-decoration: none; } -#content a:hover { text-decoration: underline; } - -#content p, #content div { width: 40em; } -#content p li, #content p dt, #content p dd, #content div li, #content div dt, #content div dd { color: #ddffdd; background-color: #4792bb; } -#content .container.video .column.left { width: 200px; } -#content .container.video .column.left .box { margin-top: 10px; } -#content .container.video .column.left .box p { margin: 0 1em auto 1em; } -#content .container.video .column.left .box.participants img { float: left; margin: 0 1em auto 1em; border: 1px solid #6e000d; border-style: solid; } -#content .container.video .column.left .box.participants h2 { margin: 0 0 10px 0; padding: 0.5em; /* The background image is a gif! */ background: #6e000d url(/images/hdr_participant.gif) 2px 2px no-repeat; /* Okay check this out Multiline comments Wow dude I mean seriously, WOW */ text-indent: -9999px; border-top-width: 5px; border-top-style: solid; border-top-color: #a20013; border-right-width: 1px; border-right-style: dotted; } -#content .container.video .column.middle { width: 500px; } -#content .container.video .column.right { width: 200px; } -#content .container.video .column.right .box { margin-top: 0; } -#content .container.video .column.right .box p { margin: 0 1em auto 1em; } -#content .container.video .column p { margin-top: 0; } - -#content.contests .container.information .column.right .box { margin: 1em 0; } -#content.contests .container.information .column.right .box.videos .thumbnail img { width: 200px; height: 150px; margin-bottom: 5px; } -#content.contests .container.information .column.right .box.videos a:link, #content.contests .container.information .column.right .box.videos a:visited { color: #93d700; text-decoration: none; } -#content.contests .container.information .column.right .box.videos a:hover { text-decoration: underline; } -#content.contests .container.information .column.right .box.votes a { display: block; width: 200px; height: 60px; margin: 15px 0; background: url(/images/btn_votenow.gif) no-repeat; text-indent: -9999px; outline: none; border: none; } -#content.contests .container.information .column.right .box.votes h2 { margin: 52px 0 10px 0; padding: 0.5em; background: #6e000d url(/images/hdr_videostats.gif) 2px 2px no-repeat; text-indent: -9999px; border-top: 5px solid #a20013; } - -#content.contests .container.video .box.videos h2 { margin: 0; padding: 0.5em; background: #6e000d url(/images/hdr_newestclips.gif) 2px 2px no-repeat; text-indent: -9999px; border-top: 5px solid #a20013; } -#content.contests .container.video .box.videos table { width: 100; } -#content.contests .container.video .box.videos table td { padding: 1em; width: 25; vertical-align: top; } -#content.contests .container.video .box.videos table td p { margin: 0 0 5px 0; } -#content.contests .container.video .box.videos table td a:link, #content.contests .container.video .box.videos table td a:visited { color: #93d700; text-decoration: none; } -#content.contests .container.video .box.videos table td a:hover { text-decoration: underline; } -#content.contests .container.video .box.videos .thumbnail { float: left; } -#content.contests .container.video .box.videos .thumbnail img { width: 80px; height: 60px; margin: 0 10px 0 0; border: 1px solid #6e000d; } - -#content .container.comments .column { margin-top: 15px; } -#content .container.comments .column.left { width: 600px; } -#content .container.comments .column.left .box ol { margin: 0; padding: 0; } -#content .container.comments .column.left .box li { list-style-type: none; padding: 10px; margin: 0 0 1em 0; background: #6e000d; border-top: 5px solid #a20013; } -#content .container.comments .column.left .box li div { margin-bottom: 1em; } -#content .container.comments .column.left .box li ul { text-align: right; } -#content .container.comments .column.left .box li ul li { display: inline; border: none; padding: 0; } -#content .container.comments .column.right { width: 290px; padding-left: 10px; } -#content .container.comments .column.right h2 { margin: 0; padding: 0.5em; background: #6e000d url(/images/hdr_addcomment.gif) 2px 2px no-repeat; text-indent: -9999px; border-top: 5px solid #a20013; } -#content .container.comments .column.right .box textarea { width: 290px; height: 100px; border: none; } - -#footer { margin-top: 10px; padding: 1.2em 1.5em; background: #ff8500; } -#footer ul { margin: 0; padding: 0; list-style-type: none; } -#footer ul li { display: inline; margin: 0 0.5em; color: #440008; } -#footer ul.links { float: left; } -#footer ul.links a:link, #footer ul.links a:visited { color: #440008; text-decoration: none; } -#footer ul.links a:hover { text-decoration: underline; } -#footer ul.copyright { float: right; } - -.clear { clear: both; } - -.centered { text-align: center; } - -img { border: none; } - -button.short { width: 60px; height: 22px; padding: 0 0 2px 0; color: #fff; border: none; background: url(/images/btn_short.gif) no-repeat; } - -table { border-collapse: collapse; } diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/compressed.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/compressed.css deleted file mode 100644 index c8190b3c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/compressed.css +++ /dev/null @@ -1 +0,0 @@ -#main{width:15em;color:#0000ff}#main p{border-style:dotted;border-width:2px}#main .cool{width:100px}#left{font-size:2em;font-weight:bold;float:left} diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/expanded.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/expanded.css deleted file mode 100644 index 05f91fa5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/expanded.css +++ /dev/null @@ -1,19 +0,0 @@ -#main { - width: 15em; - color: #0000ff; -} -#main p { - border-style: dotted; - /* Nested comment - * More nested stuff */ - border-width: 2px; -} -#main .cool { - width: 100px; -} - -#left { - font-size: 2em; - font-weight: bold; - float: left; -} diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/import.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/import.css deleted file mode 100644 index 97c4797e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/import.css +++ /dev/null @@ -1,29 +0,0 @@ -imported { otherconst: hello; myconst: goodbye; pre-mixin: here; } - -body { font: Arial; background: blue; } - -#page { width: 700px; height: 100; } -#page #header { height: 300px; } -#page #header h1 { font-size: 50px; color: blue; } - -#content.user.show #container.top #column.left { width: 100px; } -#content.user.show #container.top #column.right { width: 600px; } -#content.user.show #container.bottom { background: brown; } - -midrule { inthe: middle; } - -body { font: Arial; background: blue; } - -#page { width: 700px; height: 100; } -#page #header { height: 300px; } -#page #header h1 { font-size: 50px; color: blue; } - -#content.user.show #container.top #column.left { width: 100px; } -#content.user.show #container.top #column.right { width: 600px; } -#content.user.show #container.bottom { background: brown; } - -@import url(basic.css); -@import url(../results/complex.css); -#foo { background-color: #baf; } - -nonimported { myconst: hello; otherconst: goodbye; post-mixin: here; } diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/line_numbers.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/line_numbers.css deleted file mode 100644 index 3c657f93..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/line_numbers.css +++ /dev/null @@ -1,49 +0,0 @@ -/* line 1, ../templates/line_numbers.sass */ -foo { - bar: baz; } - -/* line 6, ../templates/importee.sass */ -imported { - otherconst: 12; - myconst: goodbye; } - /* line 5, ../templates/line_numbers.sass */ - imported squggle { - blat: bang; } - -/* line 3, ../templates/basic.sass */ -body { - font: Arial; - background: blue; } - -/* line 7, ../templates/basic.sass */ -#page { - width: 700px; - height: 100; } - /* line 10, ../templates/basic.sass */ - #page #header { - height: 300px; } - /* line 12, ../templates/basic.sass */ - #page #header h1 { - font-size: 50px; - color: blue; } - -/* line 18, ../templates/basic.sass */ -#content.user.show #container.top #column.left { - width: 100px; } -/* line 20, ../templates/basic.sass */ -#content.user.show #container.top #column.right { - width: 600px; } -/* line 22, ../templates/basic.sass */ -#content.user.show #container.bottom { - background: brown; } - -/* line 13, ../templates/importee.sass */ -midrule { - inthe: middle; } - -/* line 12, ../templates/line_numbers.sass */ -umph { - foo: bar; } - /* line 18, ../templates/importee.sass */ - umph baz { - blat: bang; } diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/mixins.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/mixins.css deleted file mode 100644 index 1d6f162b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/mixins.css +++ /dev/null @@ -1,95 +0,0 @@ -#main { - width: 15em; - color: #0000ff; -} -#main p { - border-top-width: 2px; - border-top-color: #ffcc00; - border-left-width: 1px; - border-left-color: #000; - -moz-border-radius: 10px; - border-style: dotted; - border-width: 2px; -} -#main .cool { - width: 100px; -} - -#left { - border-top-width: 2px; - border-top-color: #ffcc00; - border-left-width: 1px; - border-left-color: #000; - -moz-border-radius: 10px; - font-size: 2em; - font-weight: bold; - float: left; -} - -#right { - border-top-width: 2px; - border-top-color: #ffcc00; - border-left-width: 1px; - border-left-color: #000; - -moz-border-radius: 10px; - color: #f00; - font-size: 20px; - float: right; -} - -.bordered { - border-top-width: 2px; - border-top-color: #ffcc00; - border-left-width: 1px; - border-left-color: #000; - -moz-border-radius: 10px; -} - -.complex { - color: #f00; - font-size: 20px; - text-decoration: none; -} -.complex:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} -* html .complex { - height: 1px; - color: #f00; - font-size: 20px; -} - -.more-complex { - color: #f00; - font-size: 20px; - text-decoration: none; - display: inline; - -webkit-nonsense-top-right: 1px; - -webkit-nonsense-bottom-left: 1px; -} -.more-complex:after { - content: "."; - display: block; - height: 0; - clear: both; - visibility: hidden; -} -* html .more-complex { - height: 1px; - color: #f00; - font-size: 20px; -} -.more-complex a:hover { - text-decoration: underline; - color: #f00; - font-size: 20px; - border-top-width: 2px; - border-top-color: #ffcc00; - border-left-width: 1px; - border-left-color: #000; - -moz-border-radius: 10px; -} diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/multiline.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/multiline.css deleted file mode 100644 index 8fa95355..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/multiline.css +++ /dev/null @@ -1,24 +0,0 @@ -#main, -#header { - height: 50px; } - #main div, - #header div { - width: 100px; } - #main div a span, - #main div em span, - #header div a span, - #header div em span { - color: pink; } - -#one div.nested, -#one span.nested, -#one p.nested, -#two div.nested, -#two span.nested, -#two p.nested, -#three div.nested, -#three span.nested, -#three p.nested { - font-weight: bold; - border-color: red; - display: block; } diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/nested.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/nested.css deleted file mode 100644 index 061e6c1d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/nested.css +++ /dev/null @@ -1,22 +0,0 @@ -#main { - width: 15em; - color: #0000ff; } - #main p { - border-style: dotted; - /* Nested comment - * More nested stuff */ - border-width: 2px; } - #main .cool { - width: 100px; } - -#left { - font-size: 2em; - font-weight: bold; - float: left; } - -#right .header { - border-style: solid; } -#right .body { - border-style: dotted; } -#right .footer { - border-style: dashed; } diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/parent_ref.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/parent_ref.css deleted file mode 100644 index c502a232..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/parent_ref.css +++ /dev/null @@ -1,13 +0,0 @@ -a { color: #000; } -a:hover { color: #f00; } - -p, div { width: 100em; } -p foo, div foo { width: 10em; } -p:hover, p bar, div:hover, div bar { height: 20em; } - -#cool { border-style: solid; border-width: 2em; } -.ie7 #cool, .ie6 #cool { content: string(Totally not cool.); } -.firefox #cool { content: string(Quite cool.); } - -.wow, .snazzy { font-family: fantasy; } -.wow:hover, .wow:visited, .snazzy:hover, .snazzy:visited { font-weight: bold; } diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/script.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/script.css deleted file mode 100644 index c7ff9fb7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/script.css +++ /dev/null @@ -1,16 +0,0 @@ -#main { content: Hello!; qstr: Quo"ted"!; hstr: Hyph-en!; width: 30em; background-color: #000; color: #ffffaa; short-color: #112233; named-color: olive; con: foo bar(9 hi there boom); con2: noquo quo; } -#main #sidebar { background-color: #00ff98; num-normal: 10; num-dec: 10.2; num-dec0: 99; num-neg: -10; esc: 10 +12; many: 6; order: 7; complex: #4c9db1hi16; } - -#plus { num-num: 7; num-num-un: 25em; num-num-un2: 23em; num-num-neg: 9.87; num-str: 100px; num-col: #b7b7b7; num-perc: 31%; str-str: hi there; str-str2: hi there; str-col: 14em solid #112233; str-num: times: 13; col-num: #ff7b9d; col-col: #5173ff; } - -#minus { num-num: 900; col-num: #f9f9f4; col-col: #000035; unary-num: -1; unary-const: 10; unary-paren: -11; unary-two: 12; unary-many: 12; unary-crazy: -15; } - -#times { num-num: 7; num-col: #7496b8; col-num: #092345; col-col: #243648; } - -#div { num-num: 3.333; num-num2: 3.333; col-num: #092345; col-col: #0b0d0f; comp: 1px; } - -#mod { num-num: 2; col-col: #0f0e05; col-num: #020001; } - -#const { escaped-quote: !foo; default: Hello! !important; } - -#regression { a: 4; } diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/subdir/nested_subdir/nested_subdir.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/subdir/nested_subdir/nested_subdir.css deleted file mode 100644 index 7aadcfe6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/subdir/nested_subdir/nested_subdir.css +++ /dev/null @@ -1 +0,0 @@ -#pi { width: 314px; } \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/subdir/subdir.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/subdir/subdir.css deleted file mode 100644 index e4047289..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/subdir/subdir.css +++ /dev/null @@ -1,3 +0,0 @@ -#nested { relative: true; } - -#subdir { font-size: 20px; font-weight: bold; } \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/units.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/units.css deleted file mode 100644 index cb566d58..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/results/units.css +++ /dev/null @@ -1,11 +0,0 @@ -b { - foo: 5px; - bar: 24px; - baz: 66.667%; - many-units: 32em; - mm: 15mm; - pc: 2pc; - pt: -72pt; - inches: 2in; - more-inches: 3.5in; - mixed: 6px; } diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/script_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/script_test.rb deleted file mode 100644 index 463a13f4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/script_test.rb +++ /dev/null @@ -1,267 +0,0 @@ -#!/usr/bin/env ruby -require File.dirname(__FILE__) + '/../test_helper' -require 'sass/engine' - -class SassScriptTest < Test::Unit::TestCase - include Sass::Script - - def test_color_checks_input - assert_raise(Sass::SyntaxError, "Color values must be between 0 and 255") {Color.new([1, 2, -1])} - assert_raise(Sass::SyntaxError, "Color values must be between 0 and 255") {Color.new([256, 2, 3])} - end - - def test_string_escapes - assert_equal '"', resolve("\"\\\"\"") - assert_equal "\\", resolve("\"\\\\\"") - assert_equal "\\02fa", resolve("\"\\02fa\"") - end - - def test_color_names - assert_equal "white", resolve("white") - assert_equal "white", resolve("#ffffff") - assert_equal "#fffffe", resolve("white - #000001") - end - - def test_implicit_strings - silence_warnings do - assert_equal Sass::Script::String.new("foo"), eval("foo") - assert_equal Sass::Script::String.new("foo bar"), eval("foo bar") - assert_equal Sass::Script::String.new("foo/bar"), eval("foo/bar") - end - end - - def test_interpolation - assert_equal "foo bar, baz bang", resolve('"foo #{"bar"}, #{"baz"} bang"') - assert_equal "foo bar baz bang", resolve('"foo #{"#{"ba" + "r"} baz"} bang"') - assert_equal 'foo #{bar baz} bang', resolve('"foo \#{#{"ba" + "r"} baz} bang"') - assert_equal 'foo #{baz bang', resolve('"foo #{"\#{" + "baz"} bang"') - end - - def test_rule_interpolation - assert_equal(< 2) - end - assert_equal "public_instance_methods()", resolve("public_instance_methods()") - end - - def test_hyphen_warning - a = Sass::Script::String.new("a") - b = Sass::Script::String.new("b") - assert_warning(< a, "b" => b))} -DEPRECATION WARNING: -On line 1, character 3 of 'test_hyphen_warning_inline.sass' -- will be allowed as part of variable names in version 2.4. -Please add whitespace to separate it from the previous token. -WARN - - assert_warning(< 2") - assert_equal "false", resolve("2 > 2") - assert_equal "true", resolve("3 > 2") - assert_equal "false", resolve("1 >= 2") - assert_equal "true", resolve("2 >= 2") - assert_equal "true", resolve("3 >= 2") - assert_equal "true", resolve("1 < 2") - assert_equal "false", resolve("2 < 2") - assert_equal "false", resolve("3 < 2") - assert_equal "true", resolve("1 <= 2") - assert_equal "true", resolve("2 <= 2") - assert_equal "false", resolve("3 <= 2") - end - - def test_equals - assert_equal("true", resolve('"foo" == !foo', {}, - env("foo" => Sass::Script::String.new("foo")))) - assert_equal "true", resolve("1 == 1.0") - assert_equal "true", resolve("false != true") - assert_equal "false", resolve("1em == 1px") - assert_equal "false", resolve("12 != 12") - end - - def test_operation_precedence - assert_equal "false true", resolve("true and false false or true") - assert_equal "true", resolve("false and true or true and true") - assert_equal "true", resolve("1 == 2 or 3 == 3") - assert_equal "true", resolve("1 < 2 == 3 >= 3") - assert_equal "true", resolve("1 + 3 > 4 - 2") - assert_equal "11", resolve("1 + 2 * 3 + 4") - end - - def test_functions - assert_equal "#80ff80", resolve("hsl(120, 100%, 75%)") - assert_equal "#81ff81", resolve("hsl(120, 100%, 75%) + #010001") - end - - def test_operator_unit_conversion - assert_equal "1.1cm", resolve("1cm + 1mm") - assert_equal "true", resolve("2mm < 1cm") - assert_equal "true", resolve("10mm == 1cm") - assert_equal "true", resolve("1 == 1cm") - assert_equal "true", resolve("1.1cm == 11mm") - end - - # Regression tests - - def test_interpolation_after_hash - assert_equal "#2", resolve('"##{1 + 1}"') - end - - private - - def resolve(str, opts = {}, environment = env) - munge_filename opts - eval(str, opts, environment).to_s - end - - def eval(str, opts = {}, environment = env) - munge_filename opts - Sass::Script.parse(str, opts[:line] || 1, - opts[:offset] || 0, opts[:filename]).perform(environment) - end - - def render(sass, options = {}) - munge_filename options - Sass::Engine.new(sass, options).render - end - - def env(hash = {}) - env = Sass::Environment.new - hash.each {|k, v| env.set_var(k, v)} - env - end - - def test_number_printing - assert_equal "1", eval("1") - assert_equal "1", eval("1.0") - assert_equal "1.121", eval("1.1214") - assert_equal "1.122", eval("1.1215") - assert_equal "Infinity", eval("1.0/0.0") - assert_equal "-Infinity", eval("-1.0/0.0") - assert_equal "NaN", eval("0.0/0.0") - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/_partial.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/_partial.sass deleted file mode 100644 index bef627d2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/_partial.sass +++ /dev/null @@ -1,2 +0,0 @@ -#foo - :background-color #baf diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/alt.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/alt.sass deleted file mode 100644 index f805e182..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/alt.sass +++ /dev/null @@ -1,16 +0,0 @@ -h1 - :float left - :width 274px - height: 75px - margin: 0 - background: - repeat: no-repeat - :image none - a:hover, a:visited - color: green - b:hover - color: red - :background-color green - const - nosp= 1 + 2 - sp = 1 + 2 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/basic.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/basic.sass deleted file mode 100644 index 71117bf5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/basic.sass +++ /dev/null @@ -1,23 +0,0 @@ - - -body - :font Arial - :background blue - -#page - :width 700px - :height 100 - #header - :height 300px - h1 - :font-size 50px - :color blue - -#content.user.show - #container.top - #column.left - :width 100px - #column.right - :width 600px - #container.bottom - :background brown \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/bork.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/bork.sass deleted file mode 100644 index b0d9abea..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/bork.sass +++ /dev/null @@ -1,2 +0,0 @@ -bork - :bork= !bork diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/bork2.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/bork2.sass deleted file mode 100644 index 462afb5a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/bork2.sass +++ /dev/null @@ -1,2 +0,0 @@ -bork - :bork: bork; diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/compact.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/compact.sass deleted file mode 100644 index e37f86e8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/compact.sass +++ /dev/null @@ -1,17 +0,0 @@ -#main - :width 15em - :color #0000ff - p - :border - :style dotted - /* Nested comment - More nested stuff - :width 2px - .cool - :width 100px - -#left - :font - :size 2em - :weight bold - :float left diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/complex.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/complex.sass deleted file mode 100644 index cf9d28bb..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/complex.sass +++ /dev/null @@ -1,307 +0,0 @@ -body - :margin 0 - :font 0.85em "Lucida Grande", "Trebuchet MS", Verdana, sans-serif - :color #fff - :background url(/images/global_bg.gif) - -#page - :width 900px - :margin 0 auto - :background #440008 - :border-top - :width 5px - :style solid - :color #ff8500 - -#header - :height 75px - :padding 0 - h1 - :float left - :width 274px - :height 75px - :margin 0 - :background - :image url(/images/global_logo.gif) - /* Crazy nested comment - :repeat no-repeat - :text-indent -9999px - .status - :float right - :padding - :top .5em - :left .5em - :right .5em - :bottom 0 - p - :float left - :margin - :top 0 - :right 0.5em - :bottom 0 - :left 0 - ul - :float left - :margin 0 - :padding 0 - li - :list-style-type none - :display inline - :margin 0 5px - a:link, a:visited - :color #ff8500 - :text-decoration none - a:hover - :text-decoration underline - .search - :float right - :clear right - :margin 12px 0 0 0 - form - :margin 0 - input - :margin 0 3px 0 0 - :padding 2px - :border none - -#menu - :clear both - :text-align right - :height 20px - :border-bottom 5px solid #006b95 - :background #00a4e4 - .contests - ul - :margin 0 5px 0 0 - :padding 0 - li - :list-style-type none - :margin 0 5px - :padding 5px 5px 0 5px - :display inline - :font-size 1.1em - // This comment is properly indented - :color #fff - :background #00a4e4 - / This rule isn't a comment! - :red green - a:link, a:visited - :color #fff - :text-decoration none - :font-weight bold - a:hover - :text-decoration underline - -//General content information -#content - :clear both - .container - :clear both - .column - :float left - .right - :float right - a:link, a:visited - :color #93d700 - :text-decoration none - a:hover - :text-decoration underline - -// A hard tab: - - -#content - p, div - :width 40em - li, dt, dd - :color #ddffdd - :background-color #4792bb - .container.video - .column.left - :width 200px - .box - :margin-top 10px - p - :margin 0 1em auto 1em - .box.participants - img - :float left - :margin 0 1em auto 1em - :border 1px solid #6e000d - :style solid - h2 - :margin 0 0 10px 0 - :padding 0.5em - /* The background image is a gif! - :background #6e000d url(/images/hdr_participant.gif) 2px 2px no-repeat - /* Okay check this out - Multiline comments - Wow dude - I mean seriously, WOW - :text-indent -9999px - // And also... - Multiline comments that don't output! - Snazzy, no? - :border - :top - :width 5px - :style solid - :color #a20013 - :right - :width 1px - :style dotted - .column.middle - :width 500px - .column.right - :width 200px - .box - :margin-top 0 - p - :margin 0 1em auto 1em - .column - p - :margin-top 0 - -#content.contests - .container.information - .column.right - .box - :margin 1em 0 - .box.videos - .thumbnail img - :width 200px - :height 150px - :margin-bottom 5px - a:link, a:visited - :color #93d700 - :text-decoration none - a:hover - :text-decoration underline - .box.votes - a - :display block - :width 200px - :height 60px - :margin 15px 0 - :background url(/images/btn_votenow.gif) no-repeat - :text-indent -9999px - :outline none - :border none - h2 - :margin 52px 0 10px 0 - :padding 0.5em - :background #6e000d url(/images/hdr_videostats.gif) 2px 2px no-repeat - :text-indent -9999px - :border-top 5px solid #a20013 - -#content.contests - .container.video - .box.videos - h2 - :margin 0 - :padding 0.5em - :background #6e000d url(/images/hdr_newestclips.gif) 2px 2px no-repeat - :text-indent -9999px - :border-top 5px solid #a20013 - table - :width 100 - td - :padding 1em - :width 25 - :vertical-align top - p - :margin 0 0 5px 0 - a:link, a:visited - :color #93d700 - :text-decoration none - a:hover - :text-decoration underline - .thumbnail - :float left - img - :width 80px - :height 60px - :margin 0 10px 0 0 - :border 1px solid #6e000d - -#content - .container.comments - .column - :margin-top 15px - .column.left - :width 600px - .box - ol - :margin 0 - :padding 0 - li - :list-style-type none - :padding 10px - :margin 0 0 1em 0 - :background #6e000d - :border-top 5px solid #a20013 - div - :margin-bottom 1em - ul - :text-align right - li - :display inline - :border none - :padding 0 - .column.right - :width 290px - :padding-left 10px - h2 - :margin 0 - :padding 0.5em - :background #6e000d url(/images/hdr_addcomment.gif) 2px 2px no-repeat - :text-indent -9999px - :border-top 5px solid #a20013 - .box - textarea - :width 290px - :height 100px - :border none - -#footer - :margin-top 10px - :padding 1.2em 1.5em - :background #ff8500 - ul - :margin 0 - :padding 0 - :list-style-type none - li - :display inline - :margin 0 0.5em - :color #440008 - ul.links - :float left - a:link, a:visited - :color #440008 - :text-decoration none - a:hover - :text-decoration underline - ul.copyright - :float right - - -.clear - :clear both - -.centered - :text-align center - -img - :border none - -button.short - :width 60px - :height 22px - :padding 0 0 2px 0 - :color #fff - :border none - :background url(/images/btn_short.gif) no-repeat - -table - :border-collapse collapse diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/compressed.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/compressed.sass deleted file mode 100644 index 675fea4b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/compressed.sass +++ /dev/null @@ -1,15 +0,0 @@ -#main - :width 15em - :color #0000ff - p - :border - :style dotted - :width 2px - .cool - :width 100px - -#left - :font - :size 2em - :weight bold - :float left diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/expanded.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/expanded.sass deleted file mode 100644 index e37f86e8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/expanded.sass +++ /dev/null @@ -1,17 +0,0 @@ -#main - :width 15em - :color #0000ff - p - :border - :style dotted - /* Nested comment - More nested stuff - :width 2px - .cool - :width 100px - -#left - :font - :size 2em - :weight bold - :float left diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/import.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/import.sass deleted file mode 100644 index 1c76dc62..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/import.sass +++ /dev/null @@ -1,11 +0,0 @@ -!preconst = "hello" - -=premixin - pre-mixin: here - -@import importee.sass, basic.sass, basic.css, ../results/complex.css, partial.sass - -nonimported - :myconst = !preconst - :otherconst = !postconst - +postmixin diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/importee.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/importee.sass deleted file mode 100644 index 246c22f5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/importee.sass +++ /dev/null @@ -1,19 +0,0 @@ -!postconst = "goodbye" - -=postmixin - post-mixin: here - -imported - :otherconst = !preconst - :myconst = !postconst - +premixin - -@import basic - -midrule - :inthe middle - -=crazymixin - foo: bar - baz - blat: bang diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/line_numbers.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/line_numbers.sass deleted file mode 100644 index c554d581..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/line_numbers.sass +++ /dev/null @@ -1,13 +0,0 @@ -foo - bar: baz - -=premixin - squggle - blat: bang - -!preconst = 12 - -@import importee - -umph - +crazymixin \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/mixins.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/mixins.sass deleted file mode 100644 index 86546f0f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/mixins.sass +++ /dev/null @@ -1,76 +0,0 @@ -!yellow = #fc0 - -=bordered - :border - :top - :width 2px - :color = !yellow - :left - :width 1px - :color #000 - -moz-border-radius: 10px - -=header-font - :color #f00 - :font - :size 20px - -=compound - +header-font - +bordered - -=complex - +header-font - text: - decoration: none - &:after - content: "." - display: block - height: 0 - clear: both - visibility: hidden - * html & - height: 1px - +header-font -=deep - a:hover - :text-decoration underline - +compound - - -#main - :width 15em - :color #0000ff - p - +bordered - :border - :style dotted - :width 2px - .cool - :width 100px - -#left - +bordered - :font - :size 2em - :weight bold - :float left - -#right - +bordered - +header-font - :float right - -.bordered - +bordered - -.complex - +complex - -.more-complex - +complex - +deep - display: inline - -webkit-nonsense: - top-right: 1px - bottom-left: 1px diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/multiline.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/multiline.sass deleted file mode 100644 index 83140e91..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/multiline.sass +++ /dev/null @@ -1,20 +0,0 @@ -#main, -#header - height: 50px - div - width: 100px - a, - em - span - color: pink - -#one, -#two, -#three - div.nested, - span.nested, - p.nested - :font - :weight bold - :border-color red - :display block \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/nested.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/nested.sass deleted file mode 100644 index a9ee4e01..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/nested.sass +++ /dev/null @@ -1,25 +0,0 @@ -#main - :width 15em - :color #0000ff - p - :border - :style dotted - /* Nested comment - More nested stuff - :width 2px - .cool - :width 100px - -#left - :font - :size 2em - :weight bold - :float left - -#right - .header - :border-style solid - .body - :border-style dotted - .footer - :border-style dashed diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/parent_ref.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/parent_ref.sass deleted file mode 100644 index 6b261d73..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/parent_ref.sass +++ /dev/null @@ -1,25 +0,0 @@ -a - :color #000 - &:hover - :color #f00 - -p, div - :width 100em - & foo - :width 10em - &:hover, bar - :height 20em - -#cool - :border - :style solid - :width 2em - .ie7 &, .ie6 & - :content string(Totally not cool.) - .firefox & - :content string(Quite cool.) - -.wow, .snazzy - :font-family fantasy - &:hover, &:visited - :font-weight bold diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/script.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/script.sass deleted file mode 100644 index 2d60e287..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/script.sass +++ /dev/null @@ -1,101 +0,0 @@ -!width = 10em + 20 -!color = #00ff98 -!main_text = #ffa -!num = 10 -!dec = 10.2 -!dec_0 = 99.0 -!neg = -10 -!esc= 10"+12" -!str= "Hello!" -!qstr= "Quo\"ted\"!" -!hstr= "Hyph-en!" -!concat = "#{5 + 4} hi there" -!percent= 11% -!complex = 1px/1em - -#main - :content = !str - :qstr = !qstr - :hstr = !hstr - :width = !width - :background-color #000 - :color= !main_text - :short-color= #123 - :named-color= olive - :con= "foo" bar (!concat "boom") - :con2= "noquo" "quo" - #sidebar - :background-color= !color - :num - :normal= !num - :dec= !dec - :dec0= !dec_0 - :neg= !neg - :esc= !esc - :many= 1 + 2 + 3 - :order= 1 + 2 * 3 - :complex= ((1 + 2) + 15)+#3a8b9f + ("hi"+(1 +1+ 2)* 4) - -#plus - :num - :num= 5+2 - :num-un= 10em + 15em - :num-un2= 10 + 13em - :num-neg= 10 + -.13 - :str= 100 * 1px - :col= 13 + #aaa - :perc = !percent + 20% - :str - :str= "hi" + "\ there" - :str2= "hi" + " there" - :col= "14em solid " + #123 - :num= "times: " + 13 - :col - :num= #f02 + 123.5 - :col= #12A + #405162 - -#minus - :num - :num= 912 - 12 - :col - :num= #fffffa - 5.2 - :col= #abcdef - #fedcba - :unary - :num= -1 - :const= -!neg - :paren= -(5 + 6) - :two= --12 - :many= --------12 - :crazy= -----(5 + ---!neg) - -#times - :num - :num= 2 * 3.5 - :col= 2 * #3a4b5c - :col - :num= #12468a * 0.5 - :col= #121212 * #020304 - -#div - :num - :num= 10 / 3.0 - :num2= 10 / 3 - :col - :num= #12468a / 2 - :col= #abcdef / #0f0f0f - :comp = !complex * 1em - -#mod - :num - :num= 17 % 3 - :col - :col= #5f6e7d % #10200a - :num= #aaabac % 3 - -#const - :escaped - :quote = "!foo" - :default = !str !important - -#regression - :a= (3 + 2) - 1 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/subdir/nested_subdir/_nested_partial.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/subdir/nested_subdir/_nested_partial.sass deleted file mode 100644 index 04008f60..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +++ /dev/null @@ -1,2 +0,0 @@ -#nested - :relative true diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/subdir/nested_subdir/nested_subdir.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/subdir/nested_subdir/nested_subdir.sass deleted file mode 100644 index aae9eebf..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +++ /dev/null @@ -1,3 +0,0 @@ -#pi - :width 314px - \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/subdir/subdir.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/subdir/subdir.sass deleted file mode 100644 index 8fff002d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/subdir/subdir.sass +++ /dev/null @@ -1,6 +0,0 @@ -@import nested_subdir/nested_partial.sass - -#subdir - :font - :size 20px - :weight bold diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/units.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/units.sass deleted file mode 100644 index 9404f951..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/sass/templates/units.sass +++ /dev/null @@ -1,11 +0,0 @@ -b - :foo= 0.5 * 10px - :bar= 10zzz * 12px / 5zzz - :baz= percentage(12.0px / 18px) - :many-units= 10.0zzz / 3yyy * 12px / 5zzz * 3yyy / 3px * 4em - :mm= 5mm + 1cm - :pc= 1pc + 12pt - :pt= 72pt - 2in - :inches= 1in + 2.54cm - :more-inches= 1in + ((72pt * 2in) + (36pt * 1in)) / 2.54cm - :mixed= (1 + (1em * 6px / 3in)) * 4in / 2em diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/test_helper.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/test_helper.rb deleted file mode 100644 index 3e88d74d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/haml-2.2.17/test/test_helper.rb +++ /dev/null @@ -1,35 +0,0 @@ -lib_dir = File.dirname(__FILE__) + '/../lib' -require File.dirname(__FILE__) + '/linked_rails' - -require 'test/unit' -require 'fileutils' -$:.unshift lib_dir unless $:.include?(lib_dir) -require 'haml' -require 'sass' - -Sass::RAILS_LOADED = true unless defined?(Sass::RAILS_LOADED) - -class Test::Unit::TestCase - def munge_filename(opts) - return if opts.has_key?(:filename) - test_name = caller[1].gsub(/^.*`(?:\w+ )*(\w+)'.*$/, '\1') - opts[:filename] = "#{test_name}_inline.sass" - end - - def clean_up_sassc - path = File.dirname(__FILE__) + "/../.sass-cache" - FileUtils.rm_r(path) if File.exist?(path) - end - - def assert_warning(message) - the_real_stderr, $stderr = $stderr, StringIO.new - yield - assert_equal message.strip, $stderr.string.strip - ensure - $stderr = the_real_stderr - end - - def silence_warnings(&block) - Haml::Util.silence_warnings(&block) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/CHANGELOG b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/CHANGELOG deleted file mode 100644 index efb043db..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/CHANGELOG +++ /dev/null @@ -1,222 +0,0 @@ -= Change Log - -Below is a complete listing of changes for each revision of HighLine. - -== 1.5.1 - -* Fixed the long standing echo true bug. - (reported by Lauri Tuominen) -* Improved Windows API calls to support the redirection of STDIN. - (patch by Aaron Simmons) -* Updated gem specification to avoid a deprecated call. -* Made a minor documentation clarification about character mode support. -* Worked around some API changes in Ruby's standard library in Ruby 1.9. - (patch by Jake Benilov) - -== 1.5.0 - -* Fixed a bug that would prevent Readline from showing all completions. - (reported by Yaohan Chen) -* Added the ability to pass a block to HighLine#agree(). - (patch by Yaohan Chen) - -== 1.4.0 - -* Made the code grabbing terminal size a little more cross-platform by - adding support for Solaris. (patch by Ronald Braswell and Coey Minear) - -== 1.2.9 - -* Additional work on the backspacing issue. (patch by Jeremy Hinegardner) -* Fixed Readline prompt bug. (patch by Jeremy Hinegardner) - -== 1.2.8 - -* Fixed backspacing past the prompt and interrupting a prompt bugs. - (patch by Jeremy Hinegardner) - -== 1.2.7 - -* Fixed the stty indent bug. -* Fixed the echo backspace bug. -* Added HighLine::track_eof=() setting to work are threaded eof?() calls. - -== 1.2.6 - -Patch by Jeremy Hinegardner: - -* Added ColorScheme support. -* Added HighLine::Question.overwrite mode. -* Various documentation fixes. - -== 1.2.5 - -* Really fixed the bug I tried to fix in 1.2.4. - -== 1.2.4 - -* Fixed a crash causing bug when using menus, reported by Patrick Hof. - -== 1.2.3 - -* Treat Cygwin like a Posix OS, instead of a native Windows environment. - -== 1.2.2 - -* Minor documentation corrections. -* Applied Thomas Werschleiln's patch to fix termio buffering on Solaris. -* Applied Justin Bailey's patch to allow canceling paged output. -* Fixed a documentation bug in the description of character case settings. -* Added a notice about termios in HighLine::Question#echo. -* Finally working around the infamous "fast typing" bug - -== 1.2.1 - -* Applied Justin Bailey's fix for the page_print() infinite loop bug. -* Made a SystemExtensions module to expose OS level functionality other - libraries may want to access. -* Publicly exposed the get_character() method, per user requests. -* Added terminal_size(), output_cols(), and output_rows() methods. -* Added :auto setting for warp_at=() and page_at=(). - -== 1.2.0 - -* Improved RubyForge and gem spec project descriptions. -* Added basic examples to README. -* Added a VERSION constant. -* Added support for hidden menu commands. -* Added Object.or_ask() when using highline/import. - -== 1.0.4 - -* Moved the HighLine project to Subversion. -* HighLine's color escapes can now be disabled. -* Fixed EOF bug introduced in the last release. -* Updated HighLine web page. -* Moved to a forked development/stable version numbering. - -== 1.0.2 - -* Removed old and broken help tests. -* Fixed test case typo found by David A. Black. -* Added ERb escapes processing to lists, for coloring list items. Color escapes - do not add to list element size. -* HighLine now throws EOFError when input is exhausted. - -== 1.0.1 - -* Minor bug fix: Moved help initialization to before response building, so help - would show up in the default responses. - -== 1.0.0 - -* Fixed documentation typo pointed out by Gavin Kistner. -* Added gather = ... option to question for fetching entire Arrays or - Hashes filled with answers. You can set +gather+ to a count of answers to - collect, a String or Regexp matching the end of input, or a Hash where each - key can be used in a new question. -* Added File support to HighLine.ask(). You can specify a _directory_ and a - _glob_ pattern that combine into a list of file choices the user can select - from. You can choose to receive the user's answer as an open filehandle or as - a Pathname object. -* Added Readline support for history and editing. -* Added tab completion for menu and file selection selection (requires - Readline). -* Added an optional character limit for input. -* Added a complete help system to HighLine's shell menu creation tools. - -== 0.6.1 - -* Removed termios dependancy in gem, to fix Windows' install. - -== 0.6.0 - -* Implemented HighLine.choose() for menu handling. - * Provided shortcut choose(item1, item2, ...) for simple menus. - * Allowed Ruby code to be attached to each menu item, to create a complete - menu solution. - * Provided for total customization of the menu layout. - * Allowed for menu selection by index, name or both. - * Added a _shell_ mode to allow menu selection with additional details - following the name. -* Added a list() utility method that can be invoked just like color(). It can - layout Arrays for you in any output in the modes :columns_across, - :columns_down, :inline and :rows -* Added support for echo = "*" style settings. User code can now - choose the echo character this way. -* Modified HighLine to user the "termios" library for character input, if - available. Will return to old behavior (using "stty"), if "termios" cannot be - loaded. -* Improved "stty" state restoring code. -* Fixed "stty" code to handle interrupt signals. -* Improved the default auto-complete error message and exposed this message - through the +responses+ interface as :no_completion. - -== 0.5.0 - -* Implemented echo = false for HighLine::Question objects, primarily to - make fetching passwords trivial. -* Fixed an auto-complete bug that could cause a crash when the user gave an - answer that didn't complete to any valid choice. -* Implemented +case+ for HighLine::Question objects to provide character case - conversions on given answers. Can be set to :up, :down, or - :capitalize. -* Exposed @answer to the response system, to allow response that are - aware of incorrect input. -* Implemented +confirm+ for HighLine::Question objects to allow for verification - for sensitive user choices. If set to +true+, user will have to answer an - "Are you sure? " question. Can also be set to the question to confirm with - the user. - -== 0.4.0 - -* Added @wrap_at and @page_at settings and accessors to - HighLine, to control text flow. -* Implemented line wrapping with adjustable limit. -* Implemented paged printing with adjustable limit. - -== 0.3.0 - -* Added support for installing with setup.rb. -* All output is now treated as an ERb sequence, allowing Ruby code to be - embedded in output strings. -* Added support for ANSI color sequences in say(). (And everything else - by extension.) -* Added whitespace handling for answers. Can be set to :strip, - :chomp, :collapse, :strip_and_collapse, - :chomp_and_collapse, :remove, or :none. -* Exposed question details to ERb completion through @question, to allow for - intelligent responses. -* Simplified HighLine internals using @question. -* Added support for fetching single character input either with getc() or - HighLine's own cross-platform terminal input routine. -* Improved type conversion to handle user defined classes. - -== 0.2.0 - -* Added Unit Tests to cover an already fixed output bug in the future. -* Added Rakefile and setup test action (default). -* Renamed HighLine::Answer to HighLine::Question to better illustrate its role. -* Renamed fetch_line() to get_response() to better define its goal. -* Simplified explain_error in terms of the Question object. -* Renamed accept?() to in_range?() to better define purpose. -* Reworked valid?() into valid_answer?() to better fit Question object. -* Reworked @member into @in, to make it easier to remember and - switched implementation to include?(). -* Added range checks for @above and @below. -* Fixed the bug causing ask() to swallow NoMethodErrors. -* Rolled ask_on_error() into responses. -* Redirected imports to Kernel from Object. -* Added support for validate = lambda { ... }. -* Added default answer support. -* Fixed bug that caused ask() to die with an empty question. -* Added complete documentation. -* Improve the implemetation of agree() to be the intended "yes" or "no" only - question. -* Added Rake tasks for documentation and packaging. -* Moved project to RubyForge. - -== 0.1.0 - -* Initial release as the solution to - {Ruby Quiz #29}[http://www.rubyquiz.com/quiz29.html]. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/INSTALL b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/INSTALL deleted file mode 100644 index c22f0414..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/INSTALL +++ /dev/null @@ -1,35 +0,0 @@ -= Installing HighLine - -RubyGems is the preferred easy install method for HighLine. However, you can -install HighLine manually as described below. - -== Installing the Gem - -HighLine is intended to be installed via the -RubyGems[http://rubyforge.org/projects/rubygems/] system. To get the latest -version, simply enter the following into your command prompt: - - $ sudo gem install highline - -You must have RubyGems[http://rubyforge.org/projects/rubygems/] installed for -the above to work. - -== Installing Manually - -Download the latest version of HighLine from the -{RubyForge project page}[http://rubyforge.org/frs/?group_id=683]. Navigate to -the root project directory and enter: - - $ sudo ruby setup.rb - -== Using termios - -While not a requirement, HighLine will take advantage of the termios library if -installed (on Unix). This slightly improves HighLine's character reading -capabilities and thus is recommended for all Unix users. - -If using the HighLine gem, you should be able to add termios as easily as: - - $ sudo gem install termios - -For manual installs, consult the termios documentation. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/LICENSE b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/LICENSE deleted file mode 100644 index ff6f232c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -= License Terms - -Distributed under the user's choice of the {GPL Version 2}[http://www.gnu.org/licenses/old-licenses/gpl-2.0.html] (see COPYING for details) or the -{Ruby software license}[http://www.ruby-lang.org/en/LICENSE.txt] by -James Edward Gray II and Greg Brown. - -Please email James[mailto:james@grayproductions.net] with any questions. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/README b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/README deleted file mode 100644 index f28478bb..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/README +++ /dev/null @@ -1,63 +0,0 @@ -= Read Me - -by James Edward Gray II - -== Description - -Welcome to HighLine. - -HighLine was designed to ease the tedious tasks of doing console input and -output with low-level methods like gets() and puts(). HighLine provides a -robust system for requesting data from a user, without needing to code all the -error checking and validation rules and without needing to convert the typed -Strings into what your program really needs. Just tell HighLine what you're -after, and let it do all the work. - -== Documentation - -See HighLine and HighLine::Question for documentation. - -== Examples - -Basic usage: - - ask("Company? ") { |q| q.default = "none" } - -Validation: - - ask("Age? ", Integer) { |q| q.in = 0..105 } - ask("Name? (last, first) ") { |q| q.validate = /\A\w+, ?\w+\Z/ } - -Type conversion for answers: - - ask("Birthday? ", Date) - ask("Interests? (comma sep list) ", lambda { |str| str.split(/,\s*/) }) - -Reading passwords: - - ask("Enter your password: ") { |q| q.echo = false } - ask("Enter your password: ") { |q| q.echo = "x" } - -ERb based output (with HighLine's ANSI color tools): - - say("This should be <%= color('bold', BOLD) %>!") - -Menus: - - choose do |menu| - menu.prompt = "Please choose your favorite programming language? " - - menu.choice(:ruby) { say("Good choice!") } - menu.choices(:python, :perl) { say("Not from around here, are you?") } - end - -For more examples see the examples/ directory of this project. - -== Installing - -See the INSTALL file for instructions. - -== Questions and/or Comments - -Feel free to email {James Edward Gray II}[mailto:james@grayproductions.net] or -{Gregory Brown}[mailto:gregory.t.brown@gmail.com] with any questions. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/Rakefile deleted file mode 100644 index 5c74b161..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/Rakefile +++ /dev/null @@ -1,82 +0,0 @@ -require "rake/rdoctask" -require "rake/testtask" -require "rake/gempackagetask" - -require "rubygems" - -dir = File.dirname(__FILE__) -lib = File.join(dir, "lib", "highline.rb") -version = File.read(lib)[/^\s*VERSION\s*=\s*(['"])(\d\.\d\.\d)\1/, 2] - -task :default => [:test] - -Rake::TestTask.new do |test| - test.libs << "test" - test.test_files = [ "test/ts_all.rb" ] - test.verbose = true -end - -Rake::RDocTask.new do |rdoc| - rdoc.rdoc_files.include( "README", "INSTALL", - "TODO", "CHANGELOG", - "AUTHORS", "COPYING", - "LICENSE", "lib/" ) - rdoc.main = "README" - rdoc.rdoc_dir = "doc/html" - rdoc.title = "HighLine Documentation" -end - -desc "Upload current documentation to Rubyforge" -task :upload_docs => [:rdoc] do - sh "scp -r doc/html/* " + - "bbazzarrakk@rubyforge.org:/var/www/gforge-projects/highline/doc/" - sh "scp -r site/* " + - "bbazzarrakk@rubyforge.org:/var/www/gforge-projects/highline/" -end - -spec = Gem::Specification.new do |spec| - spec.name = "highline" - spec.version = version - spec.platform = Gem::Platform::RUBY - spec.summary = "HighLine is a high-level command-line IO library." - spec.files = Dir.glob("{examples,lib,test}/**/*.rb"). - delete_if { |item| item.include?("CVS") } + - ["Rakefile", "setup.rb"] - - spec.test_files = "test/ts_all.rb" - spec.has_rdoc = true - spec.extra_rdoc_files = %w{README INSTALL TODO CHANGELOG LICENSE} - spec.rdoc_options << '--title' << 'HighLine Documentation' << - '--main' << 'README' - - spec.require_path = 'lib' - - spec.author = "James Edward Gray II" - spec.email = "james@grayproductions.net" - spec.rubyforge_project = "highline" - spec.homepage = "http://highline.rubyforge.org" - spec.description = <!") - if i == 0 - say( "This should be " + - "<%= color('white on #{c}', :white, :on_#{c}) %>!") - else - say( "This should be " + - "<%= color( '#{colors[i - 1]} on #{c}', - :#{colors[i - 1]}, :on_#{c} ) %>!") - end -end - -# Using color with constants. -say("This should be <%= color('bold', BOLD) %>!") -say("This should be <%= color('underlined', UNDERLINE) %>!") - -# Using constants only. -say("This might even <%= BLINK %>blink<%= CLEAR %>!") - -# It even works with list wrapping. -erb_digits = %w{Zero One Two Three Four} + - ["<%= color('Five', :blue) %%>"] + - %w{Six Seven Eight Nine} -say("<%= list(#{erb_digits.inspect}, :columns_down, 3) %>") diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/asking_for_arrays.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/asking_for_arrays.rb deleted file mode 100644 index 6c62a0e4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/asking_for_arrays.rb +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/local/bin/ruby -w - -# asking_for_arrays.rb -# -# Created by James Edward Gray II on 2005-07-05. -# Copyright 2005 Gray Productions. All rights reserved. - -require "rubygems" -require "highline/import" -require "pp" - -grades = ask( "Enter test scores (or a blank line to quit):", - lambda { |ans| ans =~ /^-?\d+$/ ? Integer(ans) : ans} ) do |q| - q.gather = "" -end - -say("Grades:") -pp grades diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/basic_usage.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/basic_usage.rb deleted file mode 100644 index 60ecdc18..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/basic_usage.rb +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/local/bin/ruby -w - -# basic_usage.rb -# -# Created by James Edward Gray II on 2005-04-28. -# Copyright 2005 Gray Productions. All rights reserved. - -require "rubygems" -require "highline/import" -require "yaml" - -contacts = [ ] - -class NameClass - def self.parse( string ) - if string =~ /^\s*(\w+),\s*(\w+)\s*$/ - self.new($2, $1) - else - raise ArgumentError, "Invalid name format." - end - end - - def initialize(first, last) - @first, @last = first, last - end - - attr_reader :first, :last -end - -begin - entry = Hash.new - - # basic output - say("Enter a contact:") - - # basic input - entry[:name] = ask("Name? (last, first) ", NameClass) do |q| - q.validate = /\A\w+, ?\w+\Z/ - end - entry[:company] = ask("Company? ") { |q| q.default = "none" } - entry[:address] = ask("Address? ") - entry[:city] = ask("City? ") - entry[:state] = ask("State? ") do |q| - q.case = :up - q.validate = /\A[A-Z]{2}\Z/ - end - entry[:zip] = ask("Zip? ") do |q| - q.validate = /\A\d{5}(?:-?\d{4})?\Z/ - end - entry[:phone] = ask( "Phone? ", - lambda { |p| p.delete("^0-9"). - sub(/\A(\d{3})/, '(\1) '). - sub(/(\d{4})\Z/, '-\1') } ) do |q| - q.validate = lambda { |p| p.delete("^0-9").length == 10 } - q.responses[:not_valid] = "Enter a phone numer with area code." - end - entry[:age] = ask("Age? ", Integer) { |q| q.in = 0..105 } - entry[:birthday] = ask("Birthday? ", Date) - entry[:interests] = ask( "Interests? (comma separated list) ", - lambda { |str| str.split(/,\s*/) } ) - entry[:description] = ask("Enter a description for this contact.") do |q| - q.whitespace = :strip_and_collapse - end - - contacts << entry -# shortcut for yes and no questions -end while agree("Enter another contact? ", true) - -if agree("Save these contacts? ", true) - file_name = ask("Enter a file name: ") do |q| - q.validate = /\A\w+\Z/ - q.confirm = true - end - File.open("#{file_name}.yaml", "w") { |file| YAML.dump(contacts, file) } -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/color_scheme.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/color_scheme.rb deleted file mode 100644 index 6d1e0a76..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/color_scheme.rb +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env ruby -w - -# color_scheme.rb -# -# Created by Jeremy Hinegardner on 2007-01-24 -# Copyright 2007 Jeremy Hinegardner. All rights reserved - -require 'rubygems' -require 'highline/import' - -# Create a color scheme, naming color patterns with symbol names. -ft = HighLine::ColorScheme.new do |cs| - cs[:headline] = [ :bold, :yellow, :on_black ] - cs[:horizontal_line] = [ :bold, :white, :on_blue] - cs[:even_row] = [ :green ] - cs[:odd_row] = [ :magenta ] - end - -# Assign that color scheme to HighLine... -HighLine.color_scheme = ft - -# ...and use it. -say("<%= color('Headline', :headline) %>") -say("<%= color('-'*20, :horizontal_line) %>") - -# Setup a toggle for rows. -i = true -("A".."D").each do |row| - row_color = i ? :even_row : :odd_row - say("<%= color('#{row}', '#{row_color}') %>") - i = !i -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/limit.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/limit.rb deleted file mode 100644 index a3813e5d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/limit.rb +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env ruby -w - -# limit.rb -# -# Created by James Edward Gray II on 2008-11-12. -# Copyright 2008 Gray Productions. All rights reserved. - -require "rubygems" -require "highline/import" - -text = ask("Enter text (max 10 chars): ") { |q| q.limit = 10 } -puts "You entered: #{text}!" diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/menus.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/menus.rb deleted file mode 100644 index e31c11df..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/menus.rb +++ /dev/null @@ -1,65 +0,0 @@ -#!/usr/local/bin/ruby -w - -require "rubygems" -require "highline/import" - -# The old way, using ask() and say()... -choices = %w{ruby python perl} -say("This is the old way using ask() and say()...") -say("Please choose your favorite programming language:") -say(choices.map { |c| " #{c}\n" }.join) - -case ask("? ", choices) -when "ruby" - say("Good choice!") -else - say("Not from around here, are you?") -end - -# The new and improved choose()... -say("\nThis is the new mode (default)...") -choose do |menu| - menu.prompt = "Please choose your favorite programming language? " - - menu.choice :ruby do say("Good choice!") end - menu.choices(:python, :perl) do say("Not from around here, are you?") end -end - -say("\nThis is letter indexing...") -choose do |menu| - menu.index = :letter - menu.index_suffix = ") " - - menu.prompt = "Please choose your favorite programming language? " - - menu.choice :ruby do say("Good choice!") end - menu.choices(:python, :perl) do say("Not from around here, are you?") end -end - -say("\nThis is with a different layout...") -choose do |menu| - menu.layout = :one_line - - menu.header = "Languages" - menu.prompt = "Favorite? " - - menu.choice :ruby do say("Good choice!") end - menu.choices(:python, :perl) do say("Not from around here, are you?") end -end - -say("\nYou can even build shells...") -loop do - choose do |menu| - menu.layout = :menu_only - - menu.shell = true - - menu.choice(:load, "Load a file.") do |command, details| - say("Loading file with options: #{details}...") - end - menu.choice(:save, "Save a file.") do |command, details| - say("Saving file with options: #{details}...") - end - menu.choice(:quit, "Exit program.") { exit } - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/overwrite.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/overwrite.rb deleted file mode 100644 index 1ca2db52..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/overwrite.rb +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/local/bin/ruby -w - -# overwrite.rb -# -# Created by Jeremy Hinegardner on 2007-01-24 -# Copyright 2007 Jeremy Hinegardner. All rights reserved - -require 'rubygems' -require 'highline/import' - -prompt = "here is your password:" -ask( - "#{prompt} <%= color('mypassword', RED, BOLD) %> (Press Any Key to blank) " -) do |q| - q.overwrite = true - q.echo = false # overwrite works best when echo is false. - q.character = true # if this is set to :getc then overwrite does not work -end -say("<%= color('Look! blanked out!', GREEN) %>") diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/page_and_wrap.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/page_and_wrap.rb deleted file mode 100644 index 3209a4ab..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/examples/page_and_wrap.rb +++ /dev/null @@ -1,322 +0,0 @@ -#!/usr/local/bin/ruby -w - -# page_and_wrap.rb -# -# Created by James Edward Gray II on 2005-05-07. -# Copyright 2005 Gray Productions. All rights reserved. - -require "rubygems" -require "highline/import" - -$terminal.wrap_at = 80 -$terminal.page_at = 22 - -say(<@question is set before ask() is called, parameters are - # ignored and that object (must be a HighLine::Question) is used to drive - # the process instead. - # - # Raises EOFError if input is exhausted. - # - def ask( question, answer_type = String, &details ) # :yields: question - @question ||= Question.new(question, answer_type, &details) - - return gather if @question.gather - - # readline() needs to handle it's own output, but readline only supports - # full line reading. Therefore if @question.echo is anything but true, - # the prompt will not be issued. And we have to account for that now. - say(@question) unless (@question.readline and @question.echo == true) - begin - @answer = @question.answer_or_default(get_response) - unless @question.valid_answer?(@answer) - explain_error(:not_valid) - raise QuestionError - end - - @answer = @question.convert(@answer) - - if @question.in_range?(@answer) - if @question.confirm - # need to add a layer of scope to ask a question inside a - # question, without destroying instance data - context_change = self.class.new(@input, @output, @wrap_at, @page_at) - if @question.confirm == true - confirm_question = "Are you sure? " - else - # evaluate ERb under initial scope, so it will have - # access to @question and @answer - template = ERB.new(@question.confirm, nil, "%") - confirm_question = template.result(binding) - end - unless context_change.agree(confirm_question) - explain_error(nil) - raise QuestionError - end - end - - @answer - else - explain_error(:not_in_range) - raise QuestionError - end - rescue QuestionError - retry - rescue ArgumentError, NameError => error - raise if error.is_a?(NoMethodError) - if error.message =~ /ambiguous/ - # the assumption here is that OptionParser::Completion#complete - # (used for ambiguity resolution) throws exceptions containing - # the word 'ambiguous' whenever resolution fails - explain_error(:ambiguous_completion) - else - explain_error(:invalid_type) - end - retry - rescue Question::NoAutoCompleteMatch - explain_error(:no_completion) - retry - ensure - @question = nil # Reset Question object. - end - end - - # - # This method is HighLine's menu handler. For simple usage, you can just - # pass all the menu items you wish to display. At that point, choose() will - # build and display a menu, walk the user through selection, and return - # their choice amoung the provided items. You might use this in a case - # statement for quick and dirty menus. - # - # However, choose() is capable of much more. If provided, a block will be - # passed a HighLine::Menu object to configure. Using this method, you can - # customize all the details of menu handling from index display, to building - # a complete shell-like menuing system. See HighLine::Menu for all the - # methods it responds to. - # - # Raises EOFError if input is exhausted. - # - def choose( *items, &details ) - @menu = @question = Menu.new(&details) - @menu.choices(*items) unless items.empty? - - # Set _answer_type_ so we can double as the Question for ask(). - @menu.answer_type = if @menu.shell - lambda do |command| # shell-style selection - first_word = command.to_s.split.first || "" - - options = @menu.options - options.extend(OptionParser::Completion) - answer = options.complete(first_word) - - if answer.nil? - raise Question::NoAutoCompleteMatch - end - - [answer.last, command.sub(/^\s*#{first_word}\s*/, "")] - end - else - @menu.options # normal menu selection, by index or name - end - - # Provide hooks for ERb layouts. - @header = @menu.header - @prompt = @menu.prompt - - if @menu.shell - selected = ask("Ignored", @menu.answer_type) - @menu.select(self, *selected) - else - selected = ask("Ignored", @menu.answer_type) - @menu.select(self, selected) - end - end - - # - # This method provides easy access to ANSI color sequences, without the user - # needing to remember to CLEAR at the end of each sequence. Just pass the - # _string_ to color, followed by a list of _colors_ you would like it to be - # affected by. The _colors_ can be HighLine class constants, or symbols - # (:blue for BLUE, for example). A CLEAR will automatically be embedded to - # the end of the returned String. - # - # This method returns the original _string_ unchanged if HighLine::use_color? - # is +false+. - # - def color( string, *colors ) - return string unless self.class.use_color? - - colors.map! do |c| - if self.class.using_color_scheme? and self.class.color_scheme.include? c - self.class.color_scheme[c] - elsif c.is_a? Symbol - self.class.const_get(c.to_s.upcase) - else - c - end - end - "#{colors.flatten.join}#{string}#{CLEAR}" - end - - # - # This method is a utility for quickly and easily laying out lists. It can - # be accessed within ERb replacements of any text that will be sent to the - # user. - # - # The only required parameter is _items_, which should be the Array of items - # to list. A specified _mode_ controls how that list is formed and _option_ - # has different effects, depending on the _mode_. Recognized modes are: - # - # :columns_across:: _items_ will be placed in columns, flowing - # from left to right. If given, _option_ is the - # number of columns to be used. When absent, - # columns will be determined based on _wrap_at_ - # or a default of 80 characters. - # :columns_down:: Identical to :columns_across, save - # flow goes down. - # :inline:: All _items_ are placed on a single line. The - # last two _items_ are separated by _option_ or - # a default of " or ". All other _items_ are - # separated by ", ". - # :rows:: The default mode. Each of the _items_ is - # placed on it's own line. The _option_ - # parameter is ignored in this mode. - # - # Each member of the _items_ Array is passed through ERb and thus can contain - # their own expansions. Color escape expansions do not contribute to the - # final field width. - # - def list( items, mode = :rows, option = nil ) - items = items.to_ary.map do |item| - ERB.new(item, nil, "%").result(binding) - end - - case mode - when :inline - option = " or " if option.nil? - - case items.size - when 0 - "" - when 1 - items.first - when 2 - "#{items.first}#{option}#{items.last}" - else - items[0..-2].join(", ") + "#{option}#{items.last}" - end - when :columns_across, :columns_down - max_length = actual_length( - items.max { |a, b| actual_length(a) <=> actual_length(b) } - ) - - if option.nil? - limit = @wrap_at || 80 - option = (limit + 2) / (max_length + 2) - end - - items = items.map do |item| - pad = max_length + (item.length - actual_length(item)) - "%-#{pad}s" % item - end - row_count = (items.size / option.to_f).ceil - - if mode == :columns_across - rows = Array.new(row_count) { Array.new } - items.each_with_index do |item, index| - rows[index / option] << item - end - - rows.map { |row| row.join(" ") + "\n" }.join - else - columns = Array.new(option) { Array.new } - items.each_with_index do |item, index| - columns[index / row_count] << item - end - - list = "" - columns.first.size.times do |index| - list << columns.map { |column| column[index] }. - compact.join(" ") + "\n" - end - list - end - else - items.map { |i| "#{i}\n" }.join - end - end - - # - # The basic output method for HighLine objects. If the provided _statement_ - # ends with a space or tab character, a newline will not be appended (output - # will be flush()ed). All other cases are passed straight to Kernel.puts(). - # - # The _statement_ parameter is processed as an ERb template, supporting - # embedded Ruby code. The template is evaluated with a binding inside - # the HighLine instance, providing easy access to the ANSI color constants - # and the HighLine.color() method. - # - def say( statement ) - statement = statement.to_str - return unless statement.length > 0 - - template = ERB.new(statement, nil, "%") - statement = template.result(binding) - - statement = wrap(statement) unless @wrap_at.nil? - statement = page_print(statement) unless @page_at.nil? - - if statement[-1, 1] == " " or statement[-1, 1] == "\t" - @output.print(statement) - @output.flush - else - @output.puts(statement) - end - end - - # - # Set to an integer value to cause HighLine to wrap output lines at the - # indicated character limit. When +nil+, the default, no wrapping occurs. If - # set to :auto, HighLine will attempt to determing the columns - # available for the @output or use a sensible default. - # - def wrap_at=( setting ) - @wrap_at = setting == :auto ? output_cols : setting - end - - # - # Set to an integer value to cause HighLine to page output lines over the - # indicated line limit. When +nil+, the default, no paging occurs. If - # set to :auto, HighLine will attempt to determing the rows available - # for the @output or use a sensible default. - # - def page_at=( setting ) - @page_at = setting == :auto ? output_rows : setting - end - - # - # Returns the number of columns for the console, or a default it they cannot - # be determined. - # - def output_cols - return 80 unless @output.tty? - terminal_size.first - rescue - return 80 - end - - # - # Returns the number of rows for the console, or a default if they cannot be - # determined. - # - def output_rows - return 24 unless @output.tty? - terminal_size.last - rescue - return 24 - end - - private - - # - # A helper method for sending the output stream and error and repeat - # of the question. - # - def explain_error( error ) - say(@question.responses[error]) unless error.nil? - if @question.responses[:ask_on_error] == :question - say(@question) - elsif @question.responses[:ask_on_error] - say(@question.responses[:ask_on_error]) - end - end - - # - # Collects an Array/Hash full of answers as described in - # HighLine::Question.gather(). - # - # Raises EOFError if input is exhausted. - # - def gather( ) - @gather = @question.gather - @answers = [ ] - original_question = @question - - @question.gather = false - - case @gather - when Integer - @answers << ask(@question) - @gather -= 1 - - original_question.question = "" - until @gather.zero? - @question = original_question - @answers << ask(@question) - @gather -= 1 - end - when String, Regexp - @answers << ask(@question) - - original_question.question = "" - until (@gather.is_a?(String) and @answers.last.to_s == @gather) or - (@gather.is_a?(Regexp) and @answers.last.to_s =~ @gather) - @question = original_question - @answers << ask(@question) - end - - @answers.pop - when Hash - @answers = { } - @gather.keys.sort.each do |key| - @question = original_question - @key = key - @answers[key] = ask(@question) - end - end - - @answers - end - - # - # Read a line of input from the input stream and process whitespace as - # requested by the Question object. - # - # If Question's _readline_ property is set, that library will be used to - # fetch input. *WARNING*: This ignores the currently set input stream. - # - # Raises EOFError if input is exhausted. - # - def get_line( ) - if @question.readline - require "readline" # load only if needed - - # capture say()'s work in a String to feed to readline() - old_output = @output - @output = StringIO.new - say(@question) - question = @output.string - @output = old_output - - # prep auto-completion - Readline.completion_proc = lambda do |string| - @question.selection.grep(/\A#{Regexp.escape(string)}/) - end - - # work-around ugly readline() warnings - old_verbose = $VERBOSE - $VERBOSE = nil - answer = @question.change_case( - @question.remove_whitespace( - Readline.readline(question, true) ) ) - $VERBOSE = old_verbose - - answer - else - raise EOFError, "The input stream is exhausted." if @@track_eof and - @input.eof? - - @question.change_case(@question.remove_whitespace(@input.gets)) - end - end - - # - # Return a line or character of input, as requested for this question. - # Character input will be returned as a single character String, - # not an Integer. - # - # This question's _first_answer_ will be returned instead of input, if set. - # - # Raises EOFError if input is exhausted. - # - def get_response( ) - return @question.first_answer if @question.first_answer? - - if @question.character.nil? - if @question.echo == true and @question.limit.nil? - get_line - else - raw_no_echo_mode if stty = CHARACTER_MODE == "stty" - - line = "" - backspace_limit = 0 - begin - - while character = (stty ? @input.getbyte : get_character(@input)) - # honor backspace and delete - if character == 127 or character == 8 - line.slice!(-1, 1) - backspace_limit -= 1 - else - line << character.chr - backspace_limit = line.size - end - # looking for carriage return (decimal 13) or - # newline (decimal 10) in raw input - break if character == 13 or character == 10 or - (@question.limit and line.size == @question.limit) - if @question.echo != false - if character == 127 or character == 8 - # only backspace if we have characters on the line to - # eliminate, otherwise we'll tromp over the prompt - if backspace_limit >= 0 then - @output.print("\b#{ERASE_CHAR}") - else - # do nothing - end - else - if @question.echo == true - @output.print(character.chr) - else - @output.print(@question.echo) - end - end - @output.flush - end - end - ensure - restore_mode if stty - end - if @question.overwrite - @output.print("\r#{ERASE_LINE}") - @output.flush - else - say("\n") - end - - @question.change_case(@question.remove_whitespace(line)) - end - elsif @question.character == :getc - @question.change_case(@input.getbyte.chr) - else - response = get_character(@input).chr - if @question.overwrite - @output.print("\r#{ERASE_LINE}") - @output.flush - else - echo = if @question.echo == true - response - elsif @question.echo != false - @question.echo - else - "" - end - say("#{echo}\n") - end - @question.change_case(response) - end - end - - # - # Page print a series of at most _page_at_ lines for _output_. After each - # page is printed, HighLine will pause until the user presses enter/return - # then display the next page of data. - # - # Note that the final page of _output_ is *not* printed, but returned - # instead. This is to support any special handling for the final sequence. - # - def page_print( output ) - lines = output.scan(/[^\n]*\n?/) - while lines.size > @page_at - @output.puts lines.slice!(0...@page_at).join - @output.puts - # Return last line if user wants to abort paging - return (["...\n"] + lines.slice(-2,1)).join unless continue_paging? - end - return lines.join - end - - # - # Ask user if they wish to continue paging output. Allows them to type "q" to - # cancel the paging process. - # - def continue_paging? - command = HighLine.new(@input, @output).ask( - "-- press enter/return to continue or q to stop -- " - ) { |q| q.character = true } - command !~ /\A[qQ]\Z/ # Only continue paging if Q was not hit. - end - - # - # Wrap a sequence of _lines_ at _wrap_at_ characters per line. Existing - # newlines will not be affected by this process, but additional newlines - # may be added. - # - def wrap( text ) - wrapped = [ ] - text.each_line do |line| - while line =~ /([^\n]{#{@wrap_at + 1},})/ - search = $1.dup - replace = $1.dup - if index = replace.rindex(" ", @wrap_at) - replace[index, 1] = "\n" - replace.sub!(/\n[ \t]+/, "\n") - line.sub!(search, replace) - else - line[@wrap_at, 0] = "\n" - end - end - wrapped << line - end - return wrapped.join - end - - # - # Returns the length of the passed +string_with_escapes+, minus and color - # sequence escapes. - # - def actual_length( string_with_escapes ) - string_with_escapes.gsub(/\e\[\d{1,2}m/, "").length - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/color_scheme.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/color_scheme.rb deleted file mode 100644 index e7cbdf99..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/color_scheme.rb +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/local/bin/ruby -w - -# color_scheme.rb -# -# Created by Jeremy Hinegardner on 2007-01-24 -# Copyright 2007. All rights reserved -# -# This is Free Software. See LICENSE and COPYING for details - -require 'highline' - -class HighLine - # - # ColorScheme objects encapsulate a named set of colors to be used in the - # HighLine.colors() method call. For example, by applying a ColorScheme that - # has a :warning color then the following could be used: - # - # colors("This is a warning", :warning) - # - # A ColorScheme contains named sets of HighLine color constants. - # - # Example: Instantiating a color scheme, applying it to HighLine, - # and using it: - # - # ft = HighLine::ColorScheme.new do |cs| - # cs[:headline] = [ :bold, :yellow, :on_black ] - # cs[:horizontal_line] = [ :bold, :white ] - # cs[:even_row] = [ :green ] - # cs[:odd_row] = [ :magenta ] - # end - # - # HighLine.color_scheme = ft - # say("<%= color('Headline', :headline) %>") - # say("<%= color('-'*20, :horizontal_line) %>") - # i = true - # ("A".."D").each do |row| - # if i then - # say("<%= color('#{row}', :even_row ) %>") - # else - # say("<%= color('#{row}', :odd_row) %>") - # end - # i = !i - # end - # - # - class ColorScheme - # - # Create an instance of HighLine::ColorScheme. The customization can - # happen as a passed in Hash or via the yielded block. Key's are - # converted to :symbols and values are converted to HighLine - # constants. - # - def initialize( h = nil ) - @scheme = Hash.new - load_from_hash(h) unless h.nil? - yield self if block_given? - end - - # Load multiple colors from key/value pairs. - def load_from_hash( h ) - h.each_pair do |color_tag, constants| - self[color_tag] = constants - end - end - - # Does this color scheme include the given tag name? - def include?( color_tag ) - @scheme.keys.include?(to_symbol(color_tag)) - end - - # Allow the scheme to be accessed like a Hash. - def []( color_tag ) - @scheme[to_symbol(color_tag)] - end - - # Allow the scheme to be set like a Hash. - def []=( color_tag, constants ) - @scheme[to_symbol(color_tag)] = constants.map { |c| to_constant(c) } - end - - private - - # Return a normalized representation of a color name. - def to_symbol( t ) - t.to_s.downcase - end - - # Return a normalized representation of a color setting. - def to_constant( v ) - v = v.to_s if v.is_a?(Symbol) - if v.is_a?(String) then - HighLine.const_get(v.upcase) - else - v - end - end - end - - # A sample ColorScheme. - class SampleColorScheme < ColorScheme - # - # Builds the sample scheme with settings for :critical, - # :error, :warning, :notice, :info, - # :debug, :row_even, and :row_odd colors. - # - def initialize( h = nil ) - scheme = { - :critical => [ :yellow, :on_red ], - :error => [ :bold, :red ], - :warning => [ :bold, :yellow ], - :notice => [ :bold, :magenta ], - :info => [ :bold, :cyan ], - :debug => [ :bold, :green ], - :row_even => [ :cyan ], - :row_odd => [ :magenta ] - } - super(scheme) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/compatibility.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/compatibility.rb deleted file mode 100644 index ceaac255..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/compatibility.rb +++ /dev/null @@ -1,17 +0,0 @@ -unless STDIN.respond_to?(:getbyte) - class IO - alias_method :getbyte, :getc - end - - class StringIO - alias_method :getbyte, :getc - end -end - -unless "".respond_to?(:each_line) - - # Not a perfect translation, but sufficient for our needs. - class String - alias_method :each_line, :each - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/import.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/import.rb deleted file mode 100644 index 579a9734..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/import.rb +++ /dev/null @@ -1,43 +0,0 @@ -#!/usr/local/bin/ruby -w - -# import.rb -# -# Created by James Edward Gray II on 2005-04-26. -# Copyright 2005 Gray Productions. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -require "highline" -require "forwardable" - -$terminal = HighLine.new - -# -# require "highline/import" adds shortcut methods to Kernel, making -# agree(), ask(), choose() and say() globally available. This is handy for -# quick and dirty input and output. These methods use the HighLine object in -# the global variable $terminal, which is initialized to used -# $stdin and $stdout (you are free to change this). -# Otherwise, these methods are identical to their HighLine counterparts, see that -# class for detailed explanations. -# -module Kernel - extend Forwardable - def_delegators :$terminal, :agree, :ask, :choose, :say -end - -class Object - # - # Tries this object as a _first_answer_ for a HighLine::Question. See that - # attribute for details. - # - # *Warning*: This Object will be passed to String() before set. - # - def or_ask( *args, &details ) - ask(*args) do |question| - question.first_answer = String(self) unless nil? - - details.call(question) unless details.nil? - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/menu.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/menu.rb deleted file mode 100644 index ad992ac0..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/menu.rb +++ /dev/null @@ -1,395 +0,0 @@ -#!/usr/local/bin/ruby -w - -# menu.rb -# -# Created by Gregory Thomas Brown on 2005-05-10. -# Copyright 2005. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -require "highline/question" - -class HighLine - # - # Menu objects encapsulate all the details of a call to HighLine.choose(). - # Using the accessors and Menu.choice() and Menu.choices(), the block passed - # to HighLine.choose() can detail all aspects of menu display and control. - # - class Menu < Question - # - # Create an instance of HighLine::Menu. All customization is done - # through the passed block, which should call accessors and choice() and - # choices() as needed to define the Menu. Note that Menus are also - # Questions, so all that functionality is available to the block as - # well. - # - def initialize( ) - # - # Initialize Question objects with ignored values, we'll - # adjust ours as needed. - # - super("Ignored", [ ], &nil) # avoiding passing the block along - - @items = [ ] - @hidden_items = [ ] - @help = Hash.new("There's no help for that topic.") - - @index = :number - @index_suffix = ". " - @select_by = :index_or_name - @flow = :rows - @list_option = nil - @header = nil - @prompt = "? " - @layout = :list - @shell = false - @nil_on_handled = false - - # Override Questions responses, we'll set our own. - @responses = { } - # Context for action code. - @highline = nil - - yield self if block_given? - - init_help if @shell and not @help.empty? - update_responses # rebuild responses based on our settings - end - - # - # An _index_ to append to each menu item in display. See - # Menu.index=() for details. - # - attr_reader :index - # - # The String placed between an _index_ and a menu item. Defaults to - # ". ". Switches to " ", when _index_ is set to a String (like "-"). - # - attr_accessor :index_suffix - # - # The _select_by_ attribute controls how the user is allowed to pick a - # menu item. The available choices are: - # - # :index:: The user is allowed to type the numerical - # or alphetical index for their selection. - # :index_or_name:: Allows both methods from the - # :index option and the - # :name option. - # :name:: Menu items are selected by typing a portion - # of the item name that will be - # auto-completed. - # - attr_accessor :select_by - # - # This attribute is passed directly on as the mode to HighLine.list() by - # all the preset layouts. See that method for appropriate settings. - # - attr_accessor :flow - # - # This setting is passed on as the third parameter to HighLine.list() - # by all the preset layouts. See that method for details of its - # effects. Defaults to +nil+. - # - attr_accessor :list_option - # - # Used by all the preset layouts to display title and/or introductory - # information, when set. Defaults to +nil+. - # - attr_accessor :header - # - # Used by all the preset layouts to ask the actual question to fetch a - # menu selection from the user. Defaults to "? ". - # - attr_accessor :prompt - # - # An ERb _layout_ to use when displaying this Menu object. See - # Menu.layout=() for details. - # - attr_reader :layout - # - # When set to +true+, responses are allowed to be an entire line of - # input, including details beyond the command itself. Only the first - # "word" of input will be matched against the menu choices, but both the - # command selected and the rest of the line will be passed to provided - # action blocks. Defaults to +false+. - # - attr_accessor :shell - # - # When +true+, any selected item handled by provided action code, will - # return +nil+, instead of the results to the action code. This may - # prove handy when dealing with mixed menus where only the names of - # items without any code (and +nil+, of course) will be returned. - # Defaults to +false+. - # - attr_accessor :nil_on_handled - - # - # Adds _name_ to the list of available menu items. Menu items will be - # displayed in the order they are added. - # - # An optional _action_ can be associated with this name and if provided, - # it will be called if the item is selected. The result of the method - # will be returned, unless _nil_on_handled_ is set (when you would get - # +nil+ instead). In _shell_ mode, a provided block will be passed the - # command chosen and any details that followed the command. Otherwise, - # just the command is passed. The @highline variable is set to - # the current HighLine context before the action code is called and can - # thus be used for adding output and the like. - # - def choice( name, help = nil, &action ) - @items << [name, action] - - @help[name.to_s.downcase] = help unless help.nil? - end - - # - # A shortcut for multiple calls to the sister method choice(). Be - # warned: An _action_ set here will apply to *all* provided - # _names_. This is considered to be a feature, so you can easily - # hand-off interface processing to a different chunk of code. - # - def choices( *names, &action ) - names.each { |n| choice(n, &action) } - end - - # Identical to choice(), but the item will not be listed for the user. - def hidden( name, help = nil, &action ) - @hidden_items << [name, action] - - @help[name.to_s.downcase] = help unless help.nil? - end - - # - # Sets the indexing style for this Menu object. Indexes are appended to - # menu items, when displayed in list form. The available settings are: - # - # :number:: Menu items will be indexed numerically, starting - # with 1. This is the default method of indexing. - # :letter:: Items will be indexed alphabetically, starting - # with a. - # :none:: No index will be appended to menu items. - # any String:: Will be used as the literal _index_. - # - # Setting the _index_ to :none a literal String, also adjusts - # _index_suffix_ to a single space and _select_by_ to :none. - # Because of this, you should make a habit of setting the _index_ first. - # - def index=( style ) - @index = style - - # Default settings. - if @index == :none or @index.is_a?(String) - @index_suffix = " " - @select_by = :name - end - end - - # - # Initializes the help system by adding a :help choice, some - # action code, and the default help listing. - # - def init_help( ) - return if @items.include?(:help) - - topics = @help.keys.sort - help_help = @help.include?("help") ? @help["help"] : - "This command will display helpful messages about " + - "functionality, like this one. To see the help for " + - "a specific topic enter:\n\thelp [TOPIC]\nTry asking " + - "for help on any of the following:\n\n" + - "<%= list(#{topics.inspect}, :columns_across) %>" - choice(:help, help_help) do |command, topic| - topic.strip! - topic.downcase! - if topic.empty? - @highline.say(@help["help"]) - else - @highline.say("= #{topic}\n\n#{@help[topic]}") - end - end - end - - # - # Used to set help for arbitrary topics. Use the topic "help" - # to override the default message. - # - def help( topic, help ) - @help[topic] = help - end - - # - # Setting a _layout_ with this method also adjusts some other attributes - # of the Menu object, to ideal defaults for the chosen _layout_. To - # account for that, you probably want to set a _layout_ first in your - # configuration block, if needed. - # - # Accepted settings for _layout_ are: - # - # :list:: The default _layout_. The _header_ if set - # will appear at the top on its own line with - # a trailing colon. Then the list of menu - # items will follow. Finally, the _prompt_ - # will be used as the ask()-like question. - # :one_line:: A shorter _layout_ that fits on one line. - # The _header_ comes first followed by a - # colon and spaces, then the _prompt_ with menu - # items between trailing parenthesis. - # :menu_only:: Just the menu items, followed up by a likely - # short _prompt_. - # any ERb String:: Will be taken as the literal _layout_. This - # String can access @header, - # @menu and @prompt, but is - # otherwise evaluated in the typical HighLine - # context, to provide access to utilities like - # HighLine.list() primarily. - # - # If set to either :one_line, or :menu_only, _index_ - # will default to :none and _flow_ will default to - # :inline. - # - def layout=( new_layout ) - @layout = new_layout - - # Default settings. - case @layout - when :one_line, :menu_only - self.index = :none - @flow = :inline - end - end - - # - # This method returns all possible options for auto-completion, based - # on the settings of _index_ and _select_by_. - # - def options( ) - # add in any hidden menu commands - @items.concat(@hidden_items) - - by_index = if @index == :letter - l_index = "`" - @items.map { "#{l_index.succ!}" } - else - (1 .. @items.size).collect { |s| String(s) } - end - by_name = @items.collect { |c| c.first } - - case @select_by - when :index then - by_index - when :name - by_name - else - by_index + by_name - end - ensure - # make sure the hidden items are removed, before we return - @items.slice!(@items.size - @hidden_items.size, @hidden_items.size) - end - - # - # This method processes the auto-completed user selection, based on the - # rules for this Menu object. If an action was provided for the - # selection, it will be executed as described in Menu.choice(). - # - def select( highline_context, selection, details = nil ) - # add in any hidden menu commands - @items.concat(@hidden_items) - - # Find the selected action. - name, action = if selection =~ /^\d+$/ - @items[selection.to_i - 1] - else - l_index = "`" - index = @items.map { "#{l_index.succ!}" }.index(selection) - @items.find { |c| c.first == selection } or @items[index] - end - - # Run or return it. - if not @nil_on_handled and not action.nil? - @highline = highline_context - if @shell - action.call(name, details) - else - action.call(name) - end - elsif action.nil? - name - else - nil - end - ensure - # make sure the hidden items are removed, before we return - @items.slice!(@items.size - @hidden_items.size, @hidden_items.size) - end - - # - # Allows Menu objects to pass as Arrays, for use with HighLine.list(). - # This method returns all menu items to be displayed, complete with - # indexes. - # - def to_ary( ) - case @index - when :number - @items.map { |c| "#{@items.index(c) + 1}#{@index_suffix}#{c.first}" } - when :letter - l_index = "`" - @items.map { |c| "#{l_index.succ!}#{@index_suffix}#{c.first}" } - when :none - @items.map { |c| "#{c.first}" } - else - @items.map { |c| "#{index}#{@index_suffix}#{c.first}" } - end - end - - # - # Allows Menu to behave as a String, just like Question. Returns the - # _layout_ to be rendered, which is used by HighLine.say(). - # - def to_str( ) - case @layout - when :list - '<%= if @header.nil? then '' else "#{@header}:\n" end %>' + - "<%= list( @menu, #{@flow.inspect}, - #{@list_option.inspect} ) %>" + - "<%= @prompt %>" - when :one_line - '<%= if @header.nil? then '' else "#{@header}: " end %>' + - "<%= @prompt %>" + - "(<%= list( @menu, #{@flow.inspect}, - #{@list_option.inspect} ) %>)" + - "<%= @prompt[/\s*$/] %>" - when :menu_only - "<%= list( @menu, #{@flow.inspect}, - #{@list_option.inspect} ) %><%= @prompt %>" - else - @layout - end - end - - # - # This method will update the intelligent responses to account for - # Menu specific differences. This overrides the work done by - # Question.build_responses(). - # - def update_responses( ) - append_default unless default.nil? - @responses = { :ambiguous_completion => - "Ambiguous choice. " + - "Please choose one of #{options.inspect}.", - :ask_on_error => - "? ", - :invalid_type => - "You must enter a valid #{options}.", - :no_completion => - "You must choose one of " + - "#{options.inspect}.", - :not_in_range => - "Your answer isn't within the expected range " + - "(#{expected_range}).", - :not_valid => - "Your answer isn't valid (must match " + - "#{@validate.inspect})." }.merge(@responses) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/question.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/question.rb deleted file mode 100644 index b6cabcec..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/question.rb +++ /dev/null @@ -1,463 +0,0 @@ -#!/usr/local/bin/ruby -w - -# question.rb -# -# Created by James Edward Gray II on 2005-04-26. -# Copyright 2005 Gray Productions. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -require "optparse" -require "date" -require "pathname" - -class HighLine - # - # Question objects contain all the details of a single invocation of - # HighLine.ask(). The object is initialized by the parameters passed to - # HighLine.ask() and then queried to make sure each step of the input - # process is handled according to the users wishes. - # - class Question - # An internal HighLine error. User code does not need to trap this. - class NoAutoCompleteMatch < StandardError - # do nothing, just creating a unique error type - end - - # - # Create an instance of HighLine::Question. Expects a _question_ to ask - # (can be "") and an _answer_type_ to convert the answer to. - # The _answer_type_ parameter must be a type recongnized by - # Question.convert(). If given, a block is yeilded the new Question - # object to allow custom initializaion. - # - def initialize( question, answer_type ) - # initialize instance data - @question = question - @answer_type = answer_type - - @character = nil - @limit = nil - @echo = true - @readline = false - @whitespace = :strip - @case = nil - @default = nil - @validate = nil - @above = nil - @below = nil - @in = nil - @confirm = nil - @gather = false - @first_answer = nil - @directory = Pathname.new(File.expand_path(File.dirname($0))) - @glob = "*" - @responses = Hash.new - @overwrite = false - - # allow block to override settings - yield self if block_given? - - # finalize responses based on settings - build_responses - end - - # The ERb template of the question to be asked. - attr_accessor :question - # The type that will be used to convert this answer. - attr_accessor :answer_type - # - # Can be set to +true+ to use HighLine's cross-platform character reader - # instead of fetching an entire line of input. (Note: HighLine's - # character reader *ONLY* supports STDIN on Windows and Unix and may not - # work correctly if STDIN is redirected.) Can also be set to :getc - # to use that method on the input stream. - # - # *WARNING*: The _echo_ and _overwrite_ attributes for a question are - # ignored when using the :getc method. - # - attr_accessor :character - # - # Allows you to set a character limit for input. - # - # *WARNING*: This option forces a character by character read. - # - attr_accessor :limit - # - # Can be set to +true+ or +false+ to control whether or not input will - # be echoed back to the user. A setting of +true+ will cause echo to - # match input, but any other true value will be treated as to String to - # echo for each character typed. - # - # This requires HighLine's character reader. See the _character_ - # attribute for details. - # - # *Note*: When using HighLine to manage echo on Unix based systems, we - # recommend installing the termios gem. Without it, it's possible to type - # fast enough to have letters still show up (when reading character by - # character only). - # - attr_accessor :echo - # - # Use the Readline library to fetch input. This allows input editing as - # well as keeping a history. In addition, tab will auto-complete - # within an Array of choices or a file listing. - # - # *WARNING*: This option is incompatible with all of HighLine's - # character reading modes and it causes HighLine to ignore the - # specified _input_ stream. - # - attr_accessor :readline - # - # Used to control whitespace processing for the answer to this question. - # See HighLine::Question.remove_whitespace() for acceptable settings. - # - attr_accessor :whitespace - # - # Used to control character case processing for the answer to this question. - # See HighLine::Question.change_case() for acceptable settings. - # - attr_accessor :case - # Used to provide a default answer to this question. - attr_accessor :default - # - # If set to a Regexp, the answer must match (before type conversion). - # Can also be set to a Proc which will be called with the provided - # answer to validate with a +true+ or +false+ return. - # - attr_accessor :validate - # Used to control range checks for answer. - attr_accessor :above, :below - # If set, answer must pass an include?() check on this object. - attr_accessor :in - # - # Asks a yes or no confirmation question, to ensure a user knows what - # they have just agreed to. If set to +true+ the question will be, - # "Are you sure? " Any other true value for this attribute is assumed - # to be the question to ask. When +false+ or +nil+ (the default), - # answers are not confirmed. - # - attr_accessor :confirm - # - # When set, the user will be prompted for multiple answers which will - # be collected into an Array or Hash and returned as the final answer. - # - # You can set _gather_ to an Integer to have an Array of exactly that - # many answers collected, or a String/Regexp to match an end input which - # will not be returned in the Array. - # - # Optionally _gather_ can be set to a Hash. In this case, the question - # will be asked once for each key and the answers will be returned in a - # Hash, mapped by key. The @key variable is set before each - # question is evaluated, so you can use it in your question. - # - attr_accessor :gather - # - # When set to a non *nil* value, this will be tried as an answer to the - # question. If this answer passes validations, it will become the result - # without the user ever being prompted. Otherwise this value is discarded, - # and this Question is resolved as a normal call to HighLine.ask(). - # - attr_writer :first_answer - # - # The directory from which a user will be allowed to select files, when - # File or Pathname is specified as an _answer_type_. Initially set to - # Pathname.new(File.expand_path(File.dirname($0))). - # - attr_accessor :directory - # - # The glob pattern used to limit file selection when File or Pathname is - # specified as an _answer_type_. Initially set to "*". - # - attr_accessor :glob - # - # A Hash that stores the various responses used by HighLine to notify - # the user. The currently used responses and their purpose are as - # follows: - # - # :ambiguous_completion:: Used to notify the user of an - # ambiguous answer the auto-completion - # system cannot resolve. - # :ask_on_error:: This is the question that will be - # redisplayed to the user in the event - # of an error. Can be set to - # :question to repeat the - # original question. - # :invalid_type:: The error message shown when a type - # conversion fails. - # :no_completion:: Used to notify the user that their - # selection does not have a valid - # auto-completion match. - # :not_in_range:: Used to notify the user that a - # provided answer did not satisfy - # the range requirement tests. - # :not_valid:: The error message shown when - # validation checks fail. - # - attr_reader :responses - # - # When set to +true+ the question is asked, but output does not progress to - # the next line. The Cursor is moved back to the beginning of the question - # line and it is cleared so that all the contents of the line disappear from - # the screen. - # - attr_accessor :overwrite - - # - # Returns the provided _answer_string_ or the default answer for this - # Question if a default was set and the answer is empty. - # - def answer_or_default( answer_string ) - if answer_string.length == 0 and not @default.nil? - @default - else - answer_string - end - end - - # - # Called late in the initialization process to build intelligent - # responses based on the details of this Question object. - # - def build_responses( ) - ### WARNING: This code is quasi-duplicated in ### - ### Menu.update_responses(). Check there too when ### - ### making changes! ### - append_default unless default.nil? - @responses = { :ambiguous_completion => - "Ambiguous choice. " + - "Please choose one of #{@answer_type.inspect}.", - :ask_on_error => - "? ", - :invalid_type => - "You must enter a valid #{@answer_type}.", - :no_completion => - "You must choose one of " + - "#{@answer_type.inspect}.", - :not_in_range => - "Your answer isn't within the expected range " + - "(#{expected_range}).", - :not_valid => - "Your answer isn't valid (must match " + - "#{@validate.inspect})." }.merge(@responses) - ### WARNING: This code is quasi-duplicated in ### - ### Menu.update_responses(). Check there too when ### - ### making changes! ### - end - - # - # Returns the provided _answer_string_ after changing character case by - # the rules of this Question. Valid settings for whitespace are: - # - # +nil+:: Do not alter character case. - # (Default.) - # :up:: Calls upcase(). - # :upcase:: Calls upcase(). - # :down:: Calls downcase(). - # :downcase:: Calls downcase(). - # :capitalize:: Calls capitalize(). - # - # An unrecognized choice (like :none) is treated as +nil+. - # - def change_case( answer_string ) - if [:up, :upcase].include?(@case) - answer_string.upcase - elsif [:down, :downcase].include?(@case) - answer_string.downcase - elsif @case == :capitalize - answer_string.capitalize - else - answer_string - end - end - - # - # Transforms the given _answer_string_ into the expected type for this - # Question. Currently supported conversions are: - # - # [...]:: Answer must be a member of the passed Array. - # Auto-completion is used to expand partial - # answers. - # lambda {...}:: Answer is passed to lambda for conversion. - # Date:: Date.parse() is called with answer. - # DateTime:: DateTime.parse() is called with answer. - # File:: The entered file name is auto-completed in - # terms of _directory_ + _glob_, opened, and - # returned. - # Float:: Answer is converted with Kernel.Float(). - # Integer:: Answer is converted with Kernel.Integer(). - # +nil+:: Answer is left in String format. (Default.) - # Pathname:: Same as File, save that a Pathname object is - # returned. - # String:: Answer is converted with Kernel.String(). - # Regexp:: Answer is fed to Regexp.new(). - # Symbol:: The method to_sym() is called on answer and - # the result returned. - # any other Class:: The answer is passed on to - # Class.parse(). - # - # This method throws ArgumentError, if the conversion cannot be - # completed for any reason. - # - def convert( answer_string ) - if @answer_type.nil? - answer_string - elsif [Float, Integer, String].include?(@answer_type) - Kernel.send(@answer_type.to_s.to_sym, answer_string) - elsif @answer_type == Symbol - answer_string.to_sym - elsif @answer_type == Regexp - Regexp.new(answer_string) - elsif @answer_type.is_a?(Array) or [File, Pathname].include?(@answer_type) - # cheating, using OptionParser's Completion module - choices = selection - choices.extend(OptionParser::Completion) - answer = choices.complete(answer_string) - if answer.nil? - raise NoAutoCompleteMatch - end - if @answer_type.is_a?(Array) - answer.last - elsif @answer_type == File - File.open(File.join(@directory.to_s, answer.last)) - else - Pathname.new(File.join(@directory.to_s, answer.last)) - end - elsif [Date, DateTime].include?(@answer_type) or @answer_type.is_a?(Class) - @answer_type.parse(answer_string) - elsif @answer_type.is_a?(Proc) - @answer_type[answer_string] - end - end - - # Returns a english explination of the current range settings. - def expected_range( ) - expected = [ ] - - expected << "above #{@above}" unless @above.nil? - expected << "below #{@below}" unless @below.nil? - expected << "included in #{@in.inspect}" unless @in.nil? - - case expected.size - when 0 then "" - when 1 then expected.first - when 2 then expected.join(" and ") - else expected[0..-2].join(", ") + ", and #{expected.last}" - end - end - - # Returns _first_answer_, which will be unset following this call. - def first_answer( ) - @first_answer - ensure - @first_answer = nil - end - - # Returns true if _first_answer_ is set. - def first_answer?( ) - not @first_answer.nil? - end - - # - # Returns +true+ if the _answer_object_ is greater than the _above_ - # attribute, less than the _below_ attribute and included?()ed in the - # _in_ attribute. Otherwise, +false+ is returned. Any +nil+ attributes - # are not checked. - # - def in_range?( answer_object ) - (@above.nil? or answer_object > @above) and - (@below.nil? or answer_object < @below) and - (@in.nil? or @in.include?(answer_object)) - end - - # - # Returns the provided _answer_string_ after processing whitespace by - # the rules of this Question. Valid settings for whitespace are: - # - # +nil+:: Do not alter whitespace. - # :strip:: Calls strip(). (Default.) - # :chomp:: Calls chomp(). - # :collapse:: Collapses all whitspace runs to a - # single space. - # :strip_and_collapse:: Calls strip(), then collapses all - # whitspace runs to a single space. - # :chomp_and_collapse:: Calls chomp(), then collapses all - # whitspace runs to a single space. - # :remove:: Removes all whitespace. - # - # An unrecognized choice (like :none) is treated as +nil+. - # - # This process is skipped, for single character input. - # - def remove_whitespace( answer_string ) - if @whitespace.nil? - answer_string - elsif [:strip, :chomp].include?(@whitespace) - answer_string.send(@whitespace) - elsif @whitespace == :collapse - answer_string.gsub(/\s+/, " ") - elsif [:strip_and_collapse, :chomp_and_collapse].include?(@whitespace) - result = answer_string.send(@whitespace.to_s[/^[a-z]+/]) - result.gsub(/\s+/, " ") - elsif @whitespace == :remove - answer_string.gsub(/\s+/, "") - else - answer_string - end - end - - # - # Returns an Array of valid answers to this question. These answers are - # only known when _answer_type_ is set to an Array of choices, File, or - # Pathname. Any other time, this method will return an empty Array. - # - def selection( ) - if @answer_type.is_a?(Array) - @answer_type - elsif [File, Pathname].include?(@answer_type) - Dir[File.join(@directory.to_s, @glob)].map do |file| - File.basename(file) - end - else - [ ] - end - end - - # Stringifies the question to be asked. - def to_str( ) - @question - end - - # - # Returns +true+ if the provided _answer_string_ is accepted by the - # _validate_ attribute or +false+ if it's not. - # - # It's important to realize that an answer is validated after whitespace - # and case handling. - # - def valid_answer?( answer_string ) - @validate.nil? or - (@validate.is_a?(Regexp) and answer_string =~ @validate) or - (@validate.is_a?(Proc) and @validate[answer_string]) - end - - private - - # - # Adds the default choice to the end of question between |...|. - # Trailing whitespace is preserved so the function of HighLine.say() is - # not affected. - # - def append_default( ) - if @question =~ /([\t ]+)\Z/ - @question << "|#{@default}|#{$1}" - elsif @question == "" - @question << "|#{@default}| " - elsif @question[-1, 1] == "\n" - @question[-2, 0] = " |#{@default}|" - else - @question << " |#{@default}|" - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/system_extensions.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/system_extensions.rb deleted file mode 100644 index 60adbf0d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/lib/highline/system_extensions.rb +++ /dev/null @@ -1,193 +0,0 @@ -#!/usr/local/bin/ruby -w - -# system_extensions.rb -# -# Created by James Edward Gray II on 2006-06-14. -# Copyright 2006 Gray Productions. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -class HighLine - module SystemExtensions - module_function - - # - # This section builds character reading and terminal size functions - # to suit the proper platform we're running on. Be warned: Here be - # dragons! - # - begin - # Cygwin will look like Windows, but we want to treat it like a Posix OS: - raise LoadError, "Cygwin is a Posix OS." if RUBY_PLATFORM =~ /\bcygwin\b/i - - require "Win32API" # See if we're on Windows. - - CHARACTER_MODE = "Win32API" # For Debugging purposes only. - - # - # Windows savvy getc(). - # - # - def get_character( input = STDIN ) - @stdin_handle ||= GetStdHandle(STD_INPUT_HANDLE) - - begin - SetConsoleEcho(@stdin_handle, false) - input.getbyte - ensure - SetConsoleEcho(@stdin_handle, true) - end - end - - # A Windows savvy method to fetch the console columns, and rows. - def terminal_size - stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE) - - bufx, bufy, curx, cury, wattr, left, top, right, bottom, maxx, maxy = - GetConsoleScreenBufferInfo(stdout_handle) - return right - left + 1, bottom - top + 1 - end - - # windows savvy console echo toggler - def SetConsoleEcho( console_handle, on ) - mode = GetConsoleMode(console_handle) - - # toggle the console echo bit - if on - mode |= ENABLE_ECHO_INPUT - else - mode &= ~ENABLE_ECHO_INPUT - end - - ok = SetConsoleMode(console_handle, mode) - end - - # win32 console APIs - - STD_INPUT_HANDLE = -10 - STD_OUTPUT_HANDLE = -11 - STD_ERROR_HANDLE = -12 - - ENABLE_PROCESSED_INPUT = 0x0001 - ENABLE_LINE_INPUT = 0x0002 - ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002 - ENABLE_ECHO_INPUT = 0x0004 - ENABLE_WINDOW_INPUT = 0x0008 - ENABLE_MOUSE_INPUT = 0x0010 - ENABLE_INSERT_MODE = 0x0020 - ENABLE_QUICK_EDIT_MODE = 0x0040 - - @@apiGetStdHandle = nil - @@apiGetConsoleMode = nil - @@apiSetConsoleMode = nil - @@apiGetConsoleScreenBufferInfo = nil - - def GetStdHandle( handle_type ) - @@apiGetStdHandle ||= Win32API.new( "kernel32", "GetStdHandle", - ['L'], 'L' ) - - @@apiGetStdHandle.call( handle_type ) - end - - def GetConsoleMode( console_handle ) - @@apiGetConsoleMode ||= Win32API.new( "kernel32", "GetConsoleMode", - ['L', 'P'], 'I' ) - - mode = ' ' * 4 - @@apiGetConsoleMode.call(console_handle, mode) - mode.unpack('L')[0] - end - - def SetConsoleMode( console_handle, mode ) - @@apiSetConsoleMode ||= Win32API.new( "kernel32", "SetConsoleMode", - ['L', 'L'], 'I' ) - - @@apiSetConsoleMode.call(console_handle, mode) != 0 - end - - def GetConsoleScreenBufferInfo( console_handle ) - @@apiGetConsoleScreenBufferInfo ||= - Win32API.new( "kernel32", "GetConsoleScreenBufferInfo", - ['L', 'P'], 'L' ) - - format = 'SSSSSssssSS' - buf = ([0] * format.size).pack(format) - @@apiGetConsoleScreenBufferInfo.call(console_handle, buf) - buf.unpack(format) - end - - rescue LoadError # If we're not on Windows try... - begin - require "termios" # Unix, first choice. - - CHARACTER_MODE = "termios" # For Debugging purposes only. - - # - # Unix savvy getc(). (First choice.) - # - # *WARNING*: This method requires the "termios" library! - # - def get_character( input = STDIN ) - old_settings = Termios.getattr(input) - - new_settings = old_settings.dup - new_settings.c_lflag &= ~(Termios::ECHO | Termios::ICANON) - new_settings.c_cc[Termios::VMIN] = 1 - - begin - Termios.setattr(input, Termios::TCSANOW, new_settings) - input.getbyte - ensure - Termios.setattr(input, Termios::TCSANOW, old_settings) - end - end - rescue LoadError # If our first choice fails, default. - CHARACTER_MODE = "stty" # For Debugging purposes only. - - # - # Unix savvy getc(). (Second choice.) - # - # *WARNING*: This method requires the external "stty" program! - # - def get_character( input = STDIN ) - raw_no_echo_mode - - begin - input.getbyte - ensure - restore_mode - end - end - - # - # Switched the input mode to raw and disables echo. - # - # *WARNING*: This method requires the external "stty" program! - # - def raw_no_echo_mode - @state = `stty -g` - system "stty raw -echo cbreak isig" - end - - # - # Restores a previously saved input mode. - # - # *WARNING*: This method requires the external "stty" program! - # - def restore_mode - system "stty #{@state}" - end - end - - # A Unix savvy method to fetch the console columns, and rows. - def terminal_size - if /solaris/ =~ RUBY_PLATFORM and - `stty` =~ /\brows = (\d+).*\bcolumns = (\d+)/ - [$2, $1].map { |c| x.to_i } - else - `stty size`.split.map { |x| x.to_i }.reverse - end - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/setup.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/setup.rb deleted file mode 100644 index 0807023d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/setup.rb +++ /dev/null @@ -1,1360 +0,0 @@ -# -# setup.rb -# -# Copyright (c) 2000-2004 Minero Aoki -# -# This program is free software. -# You can distribute/modify this program under the terms of -# the GNU LGPL, Lesser General Public License version 2.1. -# - -unless Enumerable.method_defined?(:map) # Ruby 1.4.6 - module Enumerable - alias map collect - end -end - -unless File.respond_to?(:read) # Ruby 1.6 - def File.read(fname) - open(fname) {|f| - return f.read - } - end -end - -def File.binread(fname) - open(fname, 'rb') {|f| - return f.read - } -end - -# for corrupted windows stat(2) -def File.dir?(path) - File.directory?((path[-1,1] == '/') ? path : path + '/') -end - - -class SetupError < StandardError; end - -def setup_rb_error(msg) - raise SetupError, msg -end - -# -# Config -# - -if arg = ARGV.detect {|arg| /\A--rbconfig=/ =~ arg } - ARGV.delete(arg) - require arg.split(/=/, 2)[1] - $".push 'rbconfig.rb' -else - require 'rbconfig' -end - -def multipackage_install? - FileTest.directory?(File.dirname($0) + '/packages') -end - - -class ConfigItem - def initialize(name, template, default, desc) - @name = name.freeze - @template = template - @value = default - @default = default.dup.freeze - @description = desc - end - - attr_reader :name - attr_reader :description - - attr_accessor :default - alias help_default default - - def help_opt - "--#{@name}=#{@template}" - end - - def value - @value - end - - def eval(table) - @value.gsub(%r<\$([^/]+)>) { table[$1] } - end - - def set(val) - @value = check(val) - end - - private - - def check(val) - setup_rb_error "config: --#{name} requires argument" unless val - val - end -end - -class BoolItem < ConfigItem - def config_type - 'bool' - end - - def help_opt - "--#{@name}" - end - - private - - def check(val) - return 'yes' unless val - unless /\A(y(es)?|n(o)?|t(rue)?|f(alse))\z/i =~ val - setup_rb_error "config: --#{@name} accepts only yes/no for argument" - end - (/\Ay(es)?|\At(rue)/i =~ value) ? 'yes' : 'no' - end -end - -class PathItem < ConfigItem - def config_type - 'path' - end - - private - - def check(path) - setup_rb_error "config: --#{@name} requires argument" unless path - path[0,1] == '$' ? path : File.expand_path(path) - end -end - -class ProgramItem < ConfigItem - def config_type - 'program' - end -end - -class SelectItem < ConfigItem - def initialize(name, template, default, desc) - super - @ok = template.split('/') - end - - def config_type - 'select' - end - - private - - def check(val) - unless @ok.include?(val.strip) - setup_rb_error "config: use --#{@name}=#{@template} (#{val})" - end - val.strip - end -end - -class PackageSelectionItem < ConfigItem - def initialize(name, template, default, help_default, desc) - super name, template, default, desc - @help_default = help_default - end - - attr_reader :help_default - - def config_type - 'package' - end - - private - - def check(val) - unless File.dir?("packages/#{val}") - setup_rb_error "config: no such package: #{val}" - end - val - end -end - -class ConfigTable_class - - def initialize(items) - @items = items - @table = {} - items.each do |i| - @table[i.name] = i - end - ALIASES.each do |ali, name| - @table[ali] = @table[name] - end - end - - include Enumerable - - def each(&block) - @items.each(&block) - end - - def key?(name) - @table.key?(name) - end - - def lookup(name) - @table[name] or raise ArgumentError, "no such config item: #{name}" - end - - def add(item) - @items.push item - @table[item.name] = item - end - - def remove(name) - item = lookup(name) - @items.delete_if {|i| i.name == name } - @table.delete_if {|name, i| i.name == name } - item - end - - def new - dup() - end - - def savefile - '.config' - end - - def load - begin - t = dup() - File.foreach(savefile()) do |line| - k, v = *line.split(/=/, 2) - t[k] = v.strip - end - t - rescue Errno::ENOENT - setup_rb_error $!.message + "#{File.basename($0)} config first" - end - end - - def save - @items.each {|i| i.value } - File.open(savefile(), 'w') {|f| - @items.each do |i| - f.printf "%s=%s\n", i.name, i.value if i.value - end - } - end - - def [](key) - lookup(key).eval(self) - end - - def []=(key, val) - lookup(key).set val - end - -end - -c = ::Config::CONFIG - -rubypath = c['bindir'] + '/' + c['ruby_install_name'] - -major = c['MAJOR'].to_i -minor = c['MINOR'].to_i -teeny = c['TEENY'].to_i -version = "#{major}.#{minor}" - -# ruby ver. >= 1.4.4? -newpath_p = ((major >= 2) or - ((major == 1) and - ((minor >= 5) or - ((minor == 4) and (teeny >= 4))))) - -if c['rubylibdir'] - # V < 1.6.3 - _stdruby = c['rubylibdir'] - _siteruby = c['sitedir'] - _siterubyver = c['sitelibdir'] - _siterubyverarch = c['sitearchdir'] -elsif newpath_p - # 1.4.4 <= V <= 1.6.3 - _stdruby = "$prefix/lib/ruby/#{version}" - _siteruby = c['sitedir'] - _siterubyver = "$siteruby/#{version}" - _siterubyverarch = "$siterubyver/#{c['arch']}" -else - # V < 1.4.4 - _stdruby = "$prefix/lib/ruby/#{version}" - _siteruby = "$prefix/lib/ruby/#{version}/site_ruby" - _siterubyver = _siteruby - _siterubyverarch = "$siterubyver/#{c['arch']}" -end -libdir = '-* dummy libdir *-' -stdruby = '-* dummy rubylibdir *-' -siteruby = '-* dummy site_ruby *-' -siterubyver = '-* dummy site_ruby version *-' -parameterize = lambda {|path| - path.sub(/\A#{Regexp.quote(c['prefix'])}/, '$prefix')\ - .sub(/\A#{Regexp.quote(libdir)}/, '$libdir')\ - .sub(/\A#{Regexp.quote(stdruby)}/, '$stdruby')\ - .sub(/\A#{Regexp.quote(siteruby)}/, '$siteruby')\ - .sub(/\A#{Regexp.quote(siterubyver)}/, '$siterubyver') -} -libdir = parameterize.call(c['libdir']) -stdruby = parameterize.call(_stdruby) -siteruby = parameterize.call(_siteruby) -siterubyver = parameterize.call(_siterubyver) -siterubyverarch = parameterize.call(_siterubyverarch) - -if arg = c['configure_args'].split.detect {|arg| /--with-make-prog=/ =~ arg } - makeprog = arg.sub(/'/, '').split(/=/, 2)[1] -else - makeprog = 'make' -end - -common_conf = [ - PathItem.new('prefix', 'path', c['prefix'], - 'path prefix of target environment'), - PathItem.new('bindir', 'path', parameterize.call(c['bindir']), - 'the directory for commands'), - PathItem.new('libdir', 'path', libdir, - 'the directory for libraries'), - PathItem.new('datadir', 'path', parameterize.call(c['datadir']), - 'the directory for shared data'), - PathItem.new('mandir', 'path', parameterize.call(c['mandir']), - 'the directory for man pages'), - PathItem.new('sysconfdir', 'path', parameterize.call(c['sysconfdir']), - 'the directory for man pages'), - PathItem.new('stdruby', 'path', stdruby, - 'the directory for standard ruby libraries'), - PathItem.new('siteruby', 'path', siteruby, - 'the directory for version-independent aux ruby libraries'), - PathItem.new('siterubyver', 'path', siterubyver, - 'the directory for aux ruby libraries'), - PathItem.new('siterubyverarch', 'path', siterubyverarch, - 'the directory for aux ruby binaries'), - PathItem.new('rbdir', 'path', '$siterubyver', - 'the directory for ruby scripts'), - PathItem.new('sodir', 'path', '$siterubyverarch', - 'the directory for ruby extentions'), - PathItem.new('rubypath', 'path', rubypath, - 'the path to set to #! line'), - ProgramItem.new('rubyprog', 'name', rubypath, - 'the ruby program using for installation'), - ProgramItem.new('makeprog', 'name', makeprog, - 'the make program to compile ruby extentions'), - SelectItem.new('shebang', 'all/ruby/never', 'ruby', - 'shebang line (#!) editing mode'), - BoolItem.new('without-ext', 'yes/no', 'no', - 'does not compile/install ruby extentions') -] -class ConfigTable_class # open again - ALIASES = { - 'std-ruby' => 'stdruby', - 'site-ruby-common' => 'siteruby', # For backward compatibility - 'site-ruby' => 'siterubyver', # For backward compatibility - 'bin-dir' => 'bindir', - 'bin-dir' => 'bindir', - 'rb-dir' => 'rbdir', - 'so-dir' => 'sodir', - 'data-dir' => 'datadir', - 'ruby-path' => 'rubypath', - 'ruby-prog' => 'rubyprog', - 'ruby' => 'rubyprog', - 'make-prog' => 'makeprog', - 'make' => 'makeprog' - } -end -multipackage_conf = [ - PackageSelectionItem.new('with', 'name,name...', '', 'ALL', - 'package names that you want to install'), - PackageSelectionItem.new('without', 'name,name...', '', 'NONE', - 'package names that you do not want to install') -] -if multipackage_install? - ConfigTable = ConfigTable_class.new(common_conf + multipackage_conf) -else - ConfigTable = ConfigTable_class.new(common_conf) -end - - -module MetaConfigAPI - - def eval_file_ifexist(fname) - instance_eval File.read(fname), fname, 1 if File.file?(fname) - end - - def config_names - ConfigTable.map {|i| i.name } - end - - def config?(name) - ConfigTable.key?(name) - end - - def bool_config?(name) - ConfigTable.lookup(name).config_type == 'bool' - end - - def path_config?(name) - ConfigTable.lookup(name).config_type == 'path' - end - - def value_config?(name) - case ConfigTable.lookup(name).config_type - when 'bool', 'path' - true - else - false - end - end - - def add_config(item) - ConfigTable.add item - end - - def add_bool_config(name, default, desc) - ConfigTable.add BoolItem.new(name, 'yes/no', default ? 'yes' : 'no', desc) - end - - def add_path_config(name, default, desc) - ConfigTable.add PathItem.new(name, 'path', default, desc) - end - - def set_config_default(name, default) - ConfigTable.lookup(name).default = default - end - - def remove_config(name) - ConfigTable.remove(name) - end - -end - - -# -# File Operations -# - -module FileOperations - - def mkdir_p(dirname, prefix = nil) - dirname = prefix + File.expand_path(dirname) if prefix - $stderr.puts "mkdir -p #{dirname}" if verbose? - return if no_harm? - - # does not check '/'... it's too abnormal case - dirs = File.expand_path(dirname).split(%r<(?=/)>) - if /\A[a-z]:\z/i =~ dirs[0] - disk = dirs.shift - dirs[0] = disk + dirs[0] - end - dirs.each_index do |idx| - path = dirs[0..idx].join('') - Dir.mkdir path unless File.dir?(path) - end - end - - def rm_f(fname) - $stderr.puts "rm -f #{fname}" if verbose? - return if no_harm? - - if File.exist?(fname) or File.symlink?(fname) - File.chmod 0777, fname - File.unlink fname - end - end - - def rm_rf(dn) - $stderr.puts "rm -rf #{dn}" if verbose? - return if no_harm? - - Dir.chdir dn - Dir.foreach('.') do |fn| - next if fn == '.' - next if fn == '..' - if File.dir?(fn) - verbose_off { - rm_rf fn - } - else - verbose_off { - rm_f fn - } - end - end - Dir.chdir '..' - Dir.rmdir dn - end - - def move_file(src, dest) - File.unlink dest if File.exist?(dest) - begin - File.rename src, dest - rescue - File.open(dest, 'wb') {|f| f.write File.binread(src) } - File.chmod File.stat(src).mode, dest - File.unlink src - end - end - - def install(from, dest, mode, prefix = nil) - $stderr.puts "install #{from} #{dest}" if verbose? - return if no_harm? - - realdest = prefix ? prefix + File.expand_path(dest) : dest - realdest = File.join(realdest, File.basename(from)) if File.dir?(realdest) - str = File.binread(from) - if diff?(str, realdest) - verbose_off { - rm_f realdest if File.exist?(realdest) - } - File.open(realdest, 'wb') {|f| - f.write str - } - File.chmod mode, realdest - - File.open("#{objdir_root()}/InstalledFiles", 'a') {|f| - if prefix - f.puts realdest.sub(prefix, '') - else - f.puts realdest - end - } - end - end - - def diff?(new_content, path) - return true unless File.exist?(path) - new_content != File.binread(path) - end - - def command(str) - $stderr.puts str if verbose? - system str or raise RuntimeError, "'system #{str}' failed" - end - - def ruby(str) - command config('rubyprog') + ' ' + str - end - - def make(task = '') - command config('makeprog') + ' ' + task - end - - def extdir?(dir) - File.exist?(dir + '/MANIFEST') - end - - def all_files_in(dirname) - Dir.open(dirname) {|d| - return d.select {|ent| File.file?("#{dirname}/#{ent}") } - } - end - - REJECT_DIRS = %w( - CVS SCCS RCS CVS.adm .svn - ) - - def all_dirs_in(dirname) - Dir.open(dirname) {|d| - return d.select {|n| File.dir?("#{dirname}/#{n}") } - %w(. ..) - REJECT_DIRS - } - end - -end - - -# -# Main Installer -# - -module HookUtils - - def run_hook(name) - try_run_hook "#{curr_srcdir()}/#{name}" or - try_run_hook "#{curr_srcdir()}/#{name}.rb" - end - - def try_run_hook(fname) - return false unless File.file?(fname) - begin - instance_eval File.read(fname), fname, 1 - rescue - setup_rb_error "hook #{fname} failed:\n" + $!.message - end - true - end - -end - - -module HookScriptAPI - - def get_config(key) - @config[key] - end - - alias config get_config - - def set_config(key, val) - @config[key] = val - end - - # - # srcdir/objdir (works only in the package directory) - # - - #abstract srcdir_root - #abstract objdir_root - #abstract relpath - - def curr_srcdir - "#{srcdir_root()}/#{relpath()}" - end - - def curr_objdir - "#{objdir_root()}/#{relpath()}" - end - - def srcfile(path) - "#{curr_srcdir()}/#{path}" - end - - def srcexist?(path) - File.exist?(srcfile(path)) - end - - def srcdirectory?(path) - File.dir?(srcfile(path)) - end - - def srcfile?(path) - File.file? srcfile(path) - end - - def srcentries(path = '.') - Dir.open("#{curr_srcdir()}/#{path}") {|d| - return d.to_a - %w(. ..) - } - end - - def srcfiles(path = '.') - srcentries(path).select {|fname| - File.file?(File.join(curr_srcdir(), path, fname)) - } - end - - def srcdirectories(path = '.') - srcentries(path).select {|fname| - File.dir?(File.join(curr_srcdir(), path, fname)) - } - end - -end - - -class ToplevelInstaller - - Version = '3.3.1' - Copyright = 'Copyright (c) 2000-2004 Minero Aoki' - - TASKS = [ - [ 'all', 'do config, setup, then install' ], - [ 'config', 'saves your configurations' ], - [ 'show', 'shows current configuration' ], - [ 'setup', 'compiles ruby extentions and others' ], - [ 'install', 'installs files' ], - [ 'clean', "does `make clean' for each extention" ], - [ 'distclean',"does `make distclean' for each extention" ] - ] - - def ToplevelInstaller.invoke - instance().invoke - end - - @singleton = nil - - def ToplevelInstaller.instance - @singleton ||= new(File.dirname($0)) - @singleton - end - - include MetaConfigAPI - - def initialize(ardir_root) - @config = nil - @options = { 'verbose' => true } - @ardir = File.expand_path(ardir_root) - end - - def inspect - "#<#{self.class} #{__id__()}>" - end - - def invoke - run_metaconfigs - case task = parsearg_global() - when nil, 'all' - @config = load_config('config') - parsearg_config - init_installers - exec_config - exec_setup - exec_install - else - @config = load_config(task) - __send__ "parsearg_#{task}" - init_installers - __send__ "exec_#{task}" - end - end - - def run_metaconfigs - eval_file_ifexist "#{@ardir}/metaconfig" - end - - def load_config(task) - case task - when 'config' - ConfigTable.new - when 'clean', 'distclean' - if File.exist?(ConfigTable.savefile) - then ConfigTable.load - else ConfigTable.new - end - else - ConfigTable.load - end - end - - def init_installers - @installer = Installer.new(@config, @options, @ardir, File.expand_path('.')) - end - - # - # Hook Script API bases - # - - def srcdir_root - @ardir - end - - def objdir_root - '.' - end - - def relpath - '.' - end - - # - # Option Parsing - # - - def parsearg_global - valid_task = /\A(?:#{TASKS.map {|task,desc| task }.join '|'})\z/ - - while arg = ARGV.shift - case arg - when /\A\w+\z/ - setup_rb_error "invalid task: #{arg}" unless valid_task =~ arg - return arg - - when '-q', '--quiet' - @options['verbose'] = false - - when '--verbose' - @options['verbose'] = true - - when '-h', '--help' - print_usage $stdout - exit 0 - - when '-v', '--version' - puts "#{File.basename($0)} version #{Version}" - exit 0 - - when '--copyright' - puts Copyright - exit 0 - - else - setup_rb_error "unknown global option '#{arg}'" - end - end - - nil - end - - - def parsearg_no_options - unless ARGV.empty? - setup_rb_error "#{task}: unknown options: #{ARGV.join ' '}" - end - end - - alias parsearg_show parsearg_no_options - alias parsearg_setup parsearg_no_options - alias parsearg_clean parsearg_no_options - alias parsearg_distclean parsearg_no_options - - def parsearg_config - re = /\A--(#{ConfigTable.map {|i| i.name }.join('|')})(?:=(.*))?\z/ - @options['config-opt'] = [] - - while i = ARGV.shift - if /\A--?\z/ =~ i - @options['config-opt'] = ARGV.dup - break - end - m = re.match(i) or setup_rb_error "config: unknown option #{i}" - name, value = *m.to_a[1,2] - @config[name] = value - end - end - - def parsearg_install - @options['no-harm'] = false - @options['install-prefix'] = '' - while a = ARGV.shift - case a - when /\A--no-harm\z/ - @options['no-harm'] = true - when /\A--prefix=(.*)\z/ - path = $1 - path = File.expand_path(path) unless path[0,1] == '/' - @options['install-prefix'] = path - else - setup_rb_error "install: unknown option #{a}" - end - end - end - - def print_usage(out) - out.puts 'Typical Installation Procedure:' - out.puts " $ ruby #{File.basename $0} config" - out.puts " $ ruby #{File.basename $0} setup" - out.puts " # ruby #{File.basename $0} install (may require root privilege)" - out.puts - out.puts 'Detailed Usage:' - out.puts " ruby #{File.basename $0} " - out.puts " ruby #{File.basename $0} [] []" - - fmt = " %-24s %s\n" - out.puts - out.puts 'Global options:' - out.printf fmt, '-q,--quiet', 'suppress message outputs' - out.printf fmt, ' --verbose', 'output messages verbosely' - out.printf fmt, '-h,--help', 'print this message' - out.printf fmt, '-v,--version', 'print version and quit' - out.printf fmt, ' --copyright', 'print copyright and quit' - out.puts - out.puts 'Tasks:' - TASKS.each do |name, desc| - out.printf fmt, name, desc - end - - fmt = " %-24s %s [%s]\n" - out.puts - out.puts 'Options for CONFIG or ALL:' - ConfigTable.each do |item| - out.printf fmt, item.help_opt, item.description, item.help_default - end - out.printf fmt, '--rbconfig=path', 'rbconfig.rb to load',"running ruby's" - out.puts - out.puts 'Options for INSTALL:' - out.printf fmt, '--no-harm', 'only display what to do if given', 'off' - out.printf fmt, '--prefix=path', 'install path prefix', '$prefix' - out.puts - end - - # - # Task Handlers - # - - def exec_config - @installer.exec_config - @config.save # must be final - end - - def exec_setup - @installer.exec_setup - end - - def exec_install - @installer.exec_install - end - - def exec_show - ConfigTable.each do |i| - printf "%-20s %s\n", i.name, i.value - end - end - - def exec_clean - @installer.exec_clean - end - - def exec_distclean - @installer.exec_distclean - end - -end - - -class ToplevelInstallerMulti < ToplevelInstaller - - include HookUtils - include HookScriptAPI - include FileOperations - - def initialize(ardir) - super - @packages = all_dirs_in("#{@ardir}/packages") - raise 'no package exists' if @packages.empty? - end - - def run_metaconfigs - eval_file_ifexist "#{@ardir}/metaconfig" - @packages.each do |name| - eval_file_ifexist "#{@ardir}/packages/#{name}/metaconfig" - end - end - - def init_installers - @installers = {} - @packages.each do |pack| - @installers[pack] = Installer.new(@config, @options, - "#{@ardir}/packages/#{pack}", - "packages/#{pack}") - end - - with = extract_selection(config('with')) - without = extract_selection(config('without')) - @selected = @installers.keys.select {|name| - (with.empty? or with.include?(name)) \ - and not without.include?(name) - } - end - - def extract_selection(list) - a = list.split(/,/) - a.each do |name| - setup_rb_error "no such package: #{name}" unless @installers.key?(name) - end - a - end - - def print_usage(f) - super - f.puts 'Inluded packages:' - f.puts ' ' + @packages.sort.join(' ') - f.puts - end - - # - # multi-package metaconfig API - # - - attr_reader :packages - - def declare_packages(list) - raise 'package list is empty' if list.empty? - list.each do |name| - raise "directory packages/#{name} does not exist"\ - unless File.dir?("#{@ardir}/packages/#{name}") - end - @packages = list - end - - # - # Task Handlers - # - - def exec_config - run_hook 'pre-config' - each_selected_installers {|inst| inst.exec_config } - run_hook 'post-config' - @config.save # must be final - end - - def exec_setup - run_hook 'pre-setup' - each_selected_installers {|inst| inst.exec_setup } - run_hook 'post-setup' - end - - def exec_install - run_hook 'pre-install' - each_selected_installers {|inst| inst.exec_install } - run_hook 'post-install' - end - - def exec_clean - rm_f ConfigTable.savefile - run_hook 'pre-clean' - each_selected_installers {|inst| inst.exec_clean } - run_hook 'post-clean' - end - - def exec_distclean - rm_f ConfigTable.savefile - run_hook 'pre-distclean' - each_selected_installers {|inst| inst.exec_distclean } - run_hook 'post-distclean' - end - - # - # lib - # - - def each_selected_installers - Dir.mkdir 'packages' unless File.dir?('packages') - @selected.each do |pack| - $stderr.puts "Processing the package `#{pack}' ..." if @options['verbose'] - Dir.mkdir "packages/#{pack}" unless File.dir?("packages/#{pack}") - Dir.chdir "packages/#{pack}" - yield @installers[pack] - Dir.chdir '../..' - end - end - - def verbose? - @options['verbose'] - end - - def no_harm? - @options['no-harm'] - end - -end - - -class Installer - - FILETYPES = %w( bin lib ext data ) - - include HookScriptAPI - include HookUtils - include FileOperations - - def initialize(config, opt, srcroot, objroot) - @config = config - @options = opt - @srcdir = File.expand_path(srcroot) - @objdir = File.expand_path(objroot) - @currdir = '.' - end - - def inspect - "#<#{self.class} #{File.basename(@srcdir)}>" - end - - # - # Hook Script API base methods - # - - def srcdir_root - @srcdir - end - - def objdir_root - @objdir - end - - def relpath - @currdir - end - - # - # configs/options - # - - def no_harm? - @options['no-harm'] - end - - def verbose? - @options['verbose'] - end - - def verbose_off - begin - save, @options['verbose'] = @options['verbose'], false - yield - ensure - @options['verbose'] = save - end - end - - # - # TASK config - # - - def exec_config - exec_task_traverse 'config' - end - - def config_dir_bin(rel) - end - - def config_dir_lib(rel) - end - - def config_dir_ext(rel) - extconf if extdir?(curr_srcdir()) - end - - def extconf - opt = @options['config-opt'].join(' ') - command "#{config('rubyprog')} #{curr_srcdir()}/extconf.rb #{opt}" - end - - def config_dir_data(rel) - end - - # - # TASK setup - # - - def exec_setup - exec_task_traverse 'setup' - end - - def setup_dir_bin(rel) - all_files_in(curr_srcdir()).each do |fname| - adjust_shebang "#{curr_srcdir()}/#{fname}" - end - end - - def adjust_shebang(path) - return if no_harm? - tmpfile = File.basename(path) + '.tmp' - begin - File.open(path, 'rb') {|r| - first = r.gets - return unless File.basename(config('rubypath')) == 'ruby' - return unless File.basename(first.sub(/\A\#!/, '').split[0]) == 'ruby' - $stderr.puts "adjusting shebang: #{File.basename(path)}" if verbose? - File.open(tmpfile, 'wb') {|w| - w.print first.sub(/\A\#!\s*\S+/, '#! ' + config('rubypath')) - w.write r.read - } - move_file tmpfile, File.basename(path) - } - ensure - File.unlink tmpfile if File.exist?(tmpfile) - end - end - - def setup_dir_lib(rel) - end - - def setup_dir_ext(rel) - make if extdir?(curr_srcdir()) - end - - def setup_dir_data(rel) - end - - # - # TASK install - # - - def exec_install - rm_f 'InstalledFiles' - exec_task_traverse 'install' - end - - def install_dir_bin(rel) - install_files collect_filenames_auto(), "#{config('bindir')}/#{rel}", 0755 - end - - def install_dir_lib(rel) - install_files ruby_scripts(), "#{config('rbdir')}/#{rel}", 0644 - end - - def install_dir_ext(rel) - return unless extdir?(curr_srcdir()) - install_files ruby_extentions('.'), - "#{config('sodir')}/#{File.dirname(rel)}", - 0555 - end - - def install_dir_data(rel) - install_files collect_filenames_auto(), "#{config('datadir')}/#{rel}", 0644 - end - - def install_files(list, dest, mode) - mkdir_p dest, @options['install-prefix'] - list.each do |fname| - install fname, dest, mode, @options['install-prefix'] - end - end - - def ruby_scripts - collect_filenames_auto().select {|n| /\.rb\z/ =~ n } - end - - # picked up many entries from cvs-1.11.1/src/ignore.c - reject_patterns = %w( - core RCSLOG tags TAGS .make.state - .nse_depinfo #* .#* cvslog.* ,* .del-* *.olb - *~ *.old *.bak *.BAK *.orig *.rej _$* *$ - - *.org *.in .* - ) - mapping = { - '.' => '\.', - '$' => '\$', - '#' => '\#', - '*' => '.*' - } - REJECT_PATTERNS = Regexp.new('\A(?:' + - reject_patterns.map {|pat| - pat.gsub(/[\.\$\#\*]/) {|ch| mapping[ch] } - }.join('|') + - ')\z') - - def collect_filenames_auto - mapdir((existfiles() - hookfiles()).reject {|fname| - REJECT_PATTERNS =~ fname - }) - end - - def existfiles - all_files_in(curr_srcdir()) | all_files_in('.') - end - - def hookfiles - %w( pre-%s post-%s pre-%s.rb post-%s.rb ).map {|fmt| - %w( config setup install clean ).map {|t| sprintf(fmt, t) } - }.flatten - end - - def mapdir(filelist) - filelist.map {|fname| - if File.exist?(fname) # objdir - fname - else # srcdir - File.join(curr_srcdir(), fname) - end - } - end - - def ruby_extentions(dir) - Dir.open(dir) {|d| - ents = d.select {|fname| /\.#{::Config::CONFIG['DLEXT']}\z/ =~ fname } - if ents.empty? - setup_rb_error "no ruby extention exists: 'ruby #{$0} setup' first" - end - return ents - } - end - - # - # TASK clean - # - - def exec_clean - exec_task_traverse 'clean' - rm_f ConfigTable.savefile - rm_f 'InstalledFiles' - end - - def clean_dir_bin(rel) - end - - def clean_dir_lib(rel) - end - - def clean_dir_ext(rel) - return unless extdir?(curr_srcdir()) - make 'clean' if File.file?('Makefile') - end - - def clean_dir_data(rel) - end - - # - # TASK distclean - # - - def exec_distclean - exec_task_traverse 'distclean' - rm_f ConfigTable.savefile - rm_f 'InstalledFiles' - end - - def distclean_dir_bin(rel) - end - - def distclean_dir_lib(rel) - end - - def distclean_dir_ext(rel) - return unless extdir?(curr_srcdir()) - make 'distclean' if File.file?('Makefile') - end - - # - # lib - # - - def exec_task_traverse(task) - run_hook "pre-#{task}" - FILETYPES.each do |type| - if config('without-ext') == 'yes' and type == 'ext' - $stderr.puts 'skipping ext/* by user option' if verbose? - next - end - traverse task, type, "#{task}_dir_#{type}" - end - run_hook "post-#{task}" - end - - def traverse(task, rel, mid) - dive_into(rel) { - run_hook "pre-#{task}" - __send__ mid, rel.sub(%r[\A.*?(?:/|\z)], '') - all_dirs_in(curr_srcdir()).each do |d| - traverse task, "#{rel}/#{d}", mid - end - run_hook "post-#{task}" - } - end - - def dive_into(rel) - return unless File.dir?("#{@srcdir}/#{rel}") - - dir = File.basename(rel) - Dir.mkdir dir unless File.dir?(dir) - prevdir = Dir.pwd - Dir.chdir dir - $stderr.puts '---> ' + rel if verbose? - @currdir = rel - yield - Dir.chdir prevdir - $stderr.puts '<--- ' + rel if verbose? - @currdir = File.dirname(rel) - end - -end - - -if $0 == __FILE__ - begin - if multipackage_install? - ToplevelInstallerMulti.invoke - else - ToplevelInstaller.invoke - end - rescue SetupError - raise if $DEBUG - $stderr.puts $!.message - $stderr.puts "Try 'ruby #{$0} --help' for detailed usage." - exit 1 - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/tc_color_scheme.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/tc_color_scheme.rb deleted file mode 100644 index cb5cbd0e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/tc_color_scheme.rb +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/local/bin/ruby -w - -# tc_color_scheme.rb -# -# Created by Jeremy Hinegardner on 2007-01-24. -# Copyright 2007 Jeremy Hinegardner. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -require "test/unit" - -require "highline" -require "stringio" - -class TestColorScheme < Test::Unit::TestCase - def setup - @input = StringIO.new - @output = StringIO.new - @terminal = HighLine.new(@input, @output) - - @old_color_scheme = HighLine.color_scheme - end - - def teardown - HighLine.color_scheme = @old_color_scheme - end - - def test_using_color_scheme - assert_equal(false,HighLine.using_color_scheme?) - - HighLine.color_scheme = HighLine::ColorScheme.new - assert_equal(true,HighLine.using_color_scheme?) - end - - def test_scheme - HighLine.color_scheme = HighLine::SampleColorScheme.new - - @terminal.say("This should be <%= color('warning yellow', :warning) %>.") - assert_equal("This should be \e[1m\e[33mwarning yellow\e[0m.\n",@output.string) - @output.rewind - - @terminal.say("This should be <%= color('warning yellow', 'warning') %>.") - assert_equal("This should be \e[1m\e[33mwarning yellow\e[0m.\n",@output.string) - @output.rewind - - @terminal.say("This should be <%= color('warning yellow', 'WarNing') %>.") - assert_equal("This should be \e[1m\e[33mwarning yellow\e[0m.\n",@output.string) - @output.rewind - - # turn it back off, should raise an exception - HighLine.color_scheme = @old_color_scheme - assert_raises(NameError) { - @terminal.say("This should be <%= color('nothing at all', :error) %>.") - } - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/tc_highline.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/tc_highline.rb deleted file mode 100644 index ba4e1778..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/tc_highline.rb +++ /dev/null @@ -1,823 +0,0 @@ -#!/usr/local/bin/ruby -w - -# tc_highline.rb -# -# Created by James Edward Gray II on 2005-04-26. -# Copyright 2005 Gray Productions. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -require "test/unit" - -require "highline" -require "stringio" - -if HighLine::CHARACTER_MODE == "Win32API" - class HighLine - # Override Windows' character reading so it's not tied to STDIN. - def get_character( input = STDIN ) - input.getc - end - end -end - -class TestHighLine < Test::Unit::TestCase - def setup - @input = StringIO.new - @output = StringIO.new - @terminal = HighLine.new(@input, @output) - end - - def test_agree - @input << "y\nyes\nYES\nHell no!\nNo\n" - @input.rewind - - assert_equal(true, @terminal.agree("Yes or no? ")) - assert_equal(true, @terminal.agree("Yes or no? ")) - assert_equal(true, @terminal.agree("Yes or no? ")) - assert_equal(false, @terminal.agree("Yes or no? ")) - - @input.truncate(@input.rewind) - @input << "yellow" - @input.rewind - - assert_equal(true, @terminal.agree("Yes or no? ", :getc)) - end - - def test_agree_with_block - @input << "\n\n" - @input.rewind - - assert_equal(true, @terminal.agree("Yes or no? ") { |q| q.default = "y" }) - assert_equal(false, @terminal.agree("Yes or no? ") { |q| q.default = "n" }) - end - - def test_ask - name = "James Edward Gray II" - @input << name << "\n" - @input.rewind - - assert_equal(name, @terminal.ask("What is your name? ")) - - assert_raise(EOFError) { @terminal.ask("Any input left? ") } - end - - def test_bug_fixes - # auto-complete bug - @input << "ruby\nRuby\n" - @input.rewind - - languages = [:Perl, :Python, :Ruby] - answer = @terminal.ask( "What is your favorite programming language? ", - languages ) - assert_equal(languages.last, answer) - - @input.truncate(@input.rewind) - @input << "ruby\n" - @input.rewind - - answer = @terminal.ask( "What is your favorite programming language? ", - languages ) do |q| - q.case = :capitalize - end - assert_equal(languages.last, answer) - - # poor auto-complete error message - @input.truncate(@input.rewind) - @input << "lisp\nruby\n" - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask( "What is your favorite programming language? ", - languages ) do |q| - q.case = :capitalize - end - assert_equal(languages.last, answer) - assert_equal( "What is your favorite programming language? " + - "You must choose one of [:Perl, :Python, :Ruby].\n" + - "? ", @output.string ) - end - - def test_case_changes - @input << "jeg2\n" - @input.rewind - - answer = @terminal.ask("Enter your initials ") do |q| - q.case = :up - end - assert_equal("JEG2", answer) - - @input.truncate(@input.rewind) - @input << "cRaZY\n" - @input.rewind - - answer = @terminal.ask("Enter a search string: ") do |q| - q.case = :down - end - assert_equal("crazy", answer) - end - - def test_character_echo - @input << "password\r" - @input.rewind - - answer = @terminal.ask("Please enter your password: ") do |q| - q.echo = "*" - end - assert_equal("password", answer) - assert_equal("Please enter your password: ********\n", @output.string) - - @input.truncate(@input.rewind) - @input << "2" - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask( "Select an option (1, 2 or 3): ", - Integer ) do |q| - q.echo = "*" - q.character = true - end - assert_equal(2, answer) - assert_equal("Select an option (1, 2 or 3): *\n", @output.string) - end - - def test_backspace_does_not_enter_prompt - @input << "\b\b" - @input.rewind - answer = @terminal.ask("Please enter your password: ") do |q| - q.echo = "*" - end - assert_equal("", answer) - assert_equal("Please enter your password: \n",@output.string) - end - - def test_readline_on_non_echo_question_has_prompt - @input << "you can't see me" - @input.rewind - answer = @terminal.ask("Please enter some hidden text: ") do |q| - q.readline = true - q.echo = "*" - end - assert_equal("you can't see me", answer) - assert_equal("Please enter some hidden text: ****************\n",@output.string) - end - - def test_character_reading - # WARNING: This method does NOT cover Unix and Windows savvy testing! - @input << "12345" - @input.rewind - - answer = @terminal.ask("Enter a single digit: ", Integer) do |q| - q.character = :getc - end - assert_equal(1, answer) - end - - def test_color - @terminal.say("This should be <%= BLUE %>blue<%= CLEAR %>!") - assert_equal("This should be \e[34mblue\e[0m!\n", @output.string) - - @output.truncate(@output.rewind) - - @terminal.say( "This should be " + - "<%= BOLD + ON_WHITE %>bold on white<%= CLEAR %>!" ) - assert_equal( "This should be \e[1m\e[47mbold on white\e[0m!\n", - @output.string ) - - @output.truncate(@output.rewind) - - @terminal.say("This should be <%= color('cyan', CYAN) %>!") - assert_equal("This should be \e[36mcyan\e[0m!\n", @output.string) - - @output.truncate(@output.rewind) - - @terminal.say( "This should be " + - "<%= color('blinking on red', :blink, :on_red) %>!" ) - assert_equal( "This should be \e[5m\e[41mblinking on red\e[0m!\n", - @output.string ) - - @output.truncate(@output.rewind) - - # turn off color - old_setting = HighLine.use_color? - assert_nothing_raised(Exception) { HighLine.use_color = false } - @terminal.say("This should be <%= color('cyan', CYAN) %>!") - assert_equal("This should be cyan!\n", @output.string) - HighLine.use_color = old_setting - end - - def test_confirm - @input << "junk.txt\nno\nsave.txt\ny\n" - @input.rewind - - answer = @terminal.ask("Enter a filename: ") do |q| - q.confirm = "Are you sure you want to overwrite <%= @answer %>? " - q.responses[:ask_on_error] = :question - end - assert_equal("save.txt", answer) - assert_equal( "Enter a filename: " + - "Are you sure you want to overwrite junk.txt? " + - "Enter a filename: " + - "Are you sure you want to overwrite save.txt? ", - @output.string ) - - @input.truncate(@input.rewind) - @input << "junk.txt\nyes\nsave.txt\nn\n" - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask("Enter a filename: ") do |q| - q.confirm = "Are you sure you want to overwrite <%= @answer %>? " - end - assert_equal("junk.txt", answer) - assert_equal( "Enter a filename: " + - "Are you sure you want to overwrite junk.txt? ", - @output.string ) - end - - def test_defaults - @input << "\nNo Comment\n" - @input.rewind - - answer = @terminal.ask("Are you sexually active? ") do |q| - q.validate = /\Ay(?:es)?|no?|no comment\Z/i - end - assert_equal("No Comment", answer) - - @input.truncate(@input.rewind) - @input << "\nYes\n" - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask("Are you sexually active? ") do |q| - q.default = "No Comment" - q.validate = /\Ay(?:es)?|no?|no comment\Z/i - end - assert_equal("No Comment", answer) - assert_equal( "Are you sexually active? |No Comment| ", - @output.string ) - end - - def test_empty - @input << "\n" - @input.rewind - - answer = @terminal.ask("") do |q| - q.default = "yes" - q.validate = /\Ay(?:es)?|no?\Z/i - end - assert_equal("yes", answer) - end - - def test_erb - @terminal.say( "The integers from 1 to 10 are:\n" + - "% (1...10).each do |n|\n" + - "\t<%= n %>,\n" + - "% end\n" + - "\tand 10" ) - assert_equal( "The integers from 1 to 10 are:\n" + - "\t1,\n\t2,\n\t3,\n\t4,\n\t5,\n" + - "\t6,\n\t7,\n\t8,\n\t9,\n\tand 10\n", - @output.string ) - end - - def test_files - @input << "#{File.basename(__FILE__)[0, 5]}\n" - @input.rewind - - file = @terminal.ask("Select a file: ", File) do |q| - q.directory = File.expand_path(File.dirname(__FILE__)) - q.glob = "*.rb" - end - assert_instance_of(File, file) - assert_equal("#!/usr/local/bin/ruby -w\n", file.gets) - assert_equal("\n", file.gets) - assert_equal("# tc_highline.rb\n", file.gets) - file.close - - @input.rewind - - pathname = @terminal.ask("Select a file: ", Pathname) do |q| - q.directory = File.expand_path(File.dirname(__FILE__)) - q.glob = "*.rb" - end - assert_instance_of(Pathname, pathname) - assert_equal(File.size(__FILE__), pathname.size) - end - - def test_gather - @input << "James\nDana\nStorm\nGypsy\n\n" - @input.rewind - - answers = @terminal.ask("Enter four names:") do |q| - q.gather = 4 - end - assert_equal(%w{James Dana Storm Gypsy}, answers) - assert_equal("\n", @input.gets) - assert_equal("Enter four names:\n", @output.string) - - @input.rewind - - answers = @terminal.ask("Enter four names:") do |q| - q.gather = "" - end - assert_equal(%w{James Dana Storm Gypsy}, answers) - - @input.rewind - - answers = @terminal.ask("Enter four names:") do |q| - q.gather = /^\s*$/ - end - assert_equal(%w{James Dana Storm Gypsy}, answers) - - @input.truncate(@input.rewind) - @input << "29\n49\n30\n" - @input.rewind - @output.truncate(@output.rewind) - - answers = @terminal.ask("<%= @key %>: ", Integer) do |q| - q.gather = { "Age" => 0, "Wife's Age" => 0, "Father's Age" => 0} - end - assert_equal( { "Age" => 29, "Wife's Age" => 30, "Father's Age" => 49}, - answers ) - assert_equal("Age: Father's Age: Wife's Age: ", @output.string) - end - - def test_lists - digits = %w{Zero One Two Three Four Five Six Seven Eight Nine} - erb_digits = digits.dup - erb_digits[erb_digits.index("Five")] = "<%= color('Five', :blue) %%>" - - @terminal.say("<%= list(#{digits.inspect}) %>") - assert_equal(digits.map { |d| "#{d}\n" }.join, @output.string) - - @output.truncate(@output.rewind) - - @terminal.say("<%= list(#{digits.inspect}, :inline) %>") - assert_equal( digits[0..-2].join(", ") + " or #{digits.last}\n", - @output.string ) - - @output.truncate(@output.rewind) - - @terminal.say("<%= list(#{digits.inspect}, :inline, ' and ') %>") - assert_equal( digits[0..-2].join(", ") + " and #{digits.last}\n", - @output.string ) - - @output.truncate(@output.rewind) - - @terminal.say("<%= list(#{digits.inspect}, :columns_down, 3) %>") - assert_equal( "Zero Four Eight\n" + - "One Five Nine \n" + - "Two Six \n" + - "Three Seven\n", - @output.string ) - - @output.truncate(@output.rewind) - - @terminal.say("<%= list(#{erb_digits.inspect}, :columns_down, 3) %>") - assert_equal( "Zero Four Eight\n" + - "One \e[34mFive\e[0m Nine \n" + - "Two Six \n" + - "Three Seven\n", - @output.string ) - - colums_of_twenty = ["12345678901234567890"] * 5 - - @output.truncate(@output.rewind) - - @terminal.say("<%= list(#{colums_of_twenty.inspect}, :columns_down) %>") - assert_equal( "12345678901234567890 12345678901234567890 " + - "12345678901234567890\n" + - "12345678901234567890 12345678901234567890\n", - @output.string ) - - @output.truncate(@output.rewind) - - @terminal.say("<%= list(#{digits.inspect}, :columns_across, 3) %>") - assert_equal( "Zero One Two \n" + - "Three Four Five \n" + - "Six Seven Eight\n" + - "Nine \n", - @output.string ) - - colums_of_twenty.pop - - @output.truncate(@output.rewind) - - @terminal.say("<%= list( #{colums_of_twenty.inspect}, :columns_across ) %>") - assert_equal( "12345678901234567890 12345678901234567890 " + - "12345678901234567890\n" + - "12345678901234567890\n", - @output.string ) - end - - def test_mode - assert(%w[Win32API termios stty].include?(HighLine::CHARACTER_MODE)) - end - - class NameClass - def self.parse( string ) - if string =~ /^\s*(\w+),\s*(\w+)\s+(\w+)\s*$/ - self.new($2, $3, $1) - else - raise ArgumentError, "Invalid name format." - end - end - - def initialize(first, middle, last) - @first, @middle, @last = first, middle, last - end - - attr_reader :first, :middle, :last - end - - def test_my_class_conversion - @input << "Gray, James Edward\n" - @input.rewind - - answer = @terminal.ask("Your name? ", NameClass) do |q| - q.validate = lambda do |name| - names = name.split(/,\s*/) - return false unless names.size == 2 - return false if names.first =~ /\s/ - names.last.split.size == 2 - end - end - assert_instance_of(NameClass, answer) - assert_equal("Gray", answer.last) - assert_equal("James", answer.first) - assert_equal("Edward", answer.middle) - end - - def test_no_echo - @input << "password\r" - @input.rewind - - answer = @terminal.ask("Please enter your password: ") do |q| - q.echo = false - end - assert_equal("password", answer) - assert_equal("Please enter your password: \n", @output.string) - - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask("Pick a letter or number: ") do |q| - q.character = true - q.echo = false - end - assert_equal("p", answer) - assert_equal("a", @input.getc.chr) - assert_equal("Pick a letter or number: \n", @output.string) - end - - def test_paging - @terminal.page_at = 22 - - @input << "\n\n" - @input.rewind - - @terminal.say((1..50).map { |n| "This is line #{n}.\n"}.join) - assert_equal( (1..22).map { |n| "This is line #{n}.\n"}.join + - "\n-- press enter/return to continue or q to stop -- \n\n" + - (23..44).map { |n| "This is line #{n}.\n"}.join + - "\n-- press enter/return to continue or q to stop -- \n\n" + - (45..50).map { |n| "This is line #{n}.\n"}.join, - @output.string ) - end - - def test_range_requirements - @input << "112\n-541\n28\n" - @input.rewind - - answer = @terminal.ask("Tell me your age.", Integer) do |q| - q.in = 0..105 - end - assert_equal(28, answer) - assert_equal( "Tell me your age.\n" + - "Your answer isn't within the expected range " + - "(included in 0..105).\n" + - "? " + - "Your answer isn't within the expected range " + - "(included in 0..105).\n" + - "? ", @output.string ) - - @input.truncate(@input.rewind) - @input << "1\n-541\n28\n" - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask("Tell me your age.", Integer) do |q| - q.above = 3 - end - assert_equal(28, answer) - assert_equal( "Tell me your age.\n" + - "Your answer isn't within the expected range " + - "(above 3).\n" + - "? " + - "Your answer isn't within the expected range " + - "(above 3).\n" + - "? ", @output.string ) - - @input.truncate(@input.rewind) - @input << "1\n28\n-541\n" - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask("Lowest numer you can think of?", Integer) do |q| - q.below = 0 - end - assert_equal(-541, answer) - assert_equal( "Lowest numer you can think of?\n" + - "Your answer isn't within the expected range " + - "(below 0).\n" + - "? " + - "Your answer isn't within the expected range " + - "(below 0).\n" + - "? ", @output.string ) - - @input.truncate(@input.rewind) - @input << "1\n-541\n6\n" - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask("Enter a low even number: ", Integer) do |q| - q.above = 0 - q.below = 10 - q.in = [2, 4, 6, 8] - end - assert_equal(6, answer) - assert_equal( "Enter a low even number: " + - "Your answer isn't within the expected range " + - "(above 0, below 10, and included in [2, 4, 6, 8]).\n" + - "? " + - "Your answer isn't within the expected range " + - "(above 0, below 10, and included in [2, 4, 6, 8]).\n" + - "? ", @output.string ) - end - - def test_reask - number = 61676 - @input << "Junk!\n" << number << "\n" - @input.rewind - - answer = @terminal.ask("Favorite number? ", Integer) - assert_kind_of(Integer, number) - assert_instance_of(Fixnum, number) - assert_equal(number, answer) - assert_equal( "Favorite number? " + - "You must enter a valid Integer.\n" + - "? ", @output.string ) - - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask("Favorite number? ", Integer) do |q| - q.responses[:ask_on_error] = :question - q.responses[:invalid_type] = "Not a valid number!" - end - assert_kind_of(Integer, number) - assert_instance_of(Fixnum, number) - assert_equal(number, answer) - assert_equal( "Favorite number? " + - "Not a valid number!\n" + - "Favorite number? ", @output.string ) - - @input.truncate(@input.rewind) - @input << "gen\ngene\n" - @input.rewind - @output.truncate(@output.rewind) - - answer = @terminal.ask("Select a mode: ", [:generate, :gentle]) - assert_instance_of(Symbol, answer) - assert_equal(:generate, answer) - assert_equal( "Select a mode: " + - "Ambiguous choice. " + - "Please choose one of [:generate, :gentle].\n" + - "? ", @output.string ) - end - - def test_response_embedding - @input << "112\n-541\n28\n" - @input.rewind - - answer = @terminal.ask("Tell me your age.", Integer) do |q| - q.in = 0..105 - q.responses[:not_in_range] = "Need a <%= @question.answer_type %>" + - " <%= @question.expected_range %>." - end - assert_equal(28, answer) - assert_equal( "Tell me your age.\n" + - "Need a Integer included in 0..105.\n" + - "? " + - "Need a Integer included in 0..105.\n" + - "? ", @output.string ) - end - - def test_say - @terminal.say("This will have a newline.") - assert_equal("This will have a newline.\n", @output.string) - - @output.truncate(@output.rewind) - - @terminal.say("This will also have one newline.\n") - assert_equal("This will also have one newline.\n", @output.string) - - @output.truncate(@output.rewind) - - @terminal.say("This will not have a newline. ") - assert_equal("This will not have a newline. ", @output.string) - end - - def test_type_conversion - number = 61676 - @input << number << "\n" - @input.rewind - - answer = @terminal.ask("Favorite number? ", Integer) - assert_kind_of(Integer, answer) - assert_instance_of(Fixnum, answer) - assert_equal(number, answer) - - @input.truncate(@input.rewind) - number = 1_000_000_000_000_000_000_000_000_000_000 - @input << number << "\n" - @input.rewind - - answer = @terminal.ask("Favorite number? ", Integer) - assert_kind_of(Integer, answer) - assert_instance_of(Bignum, answer) - assert_equal(number, answer) - - @input.truncate(@input.rewind) - number = 10.5002 - @input << number << "\n" - @input.rewind - - answer = @terminal.ask( "Favorite number? ", - lambda { |n| n.to_f.abs.round } ) - assert_kind_of(Integer, answer) - assert_instance_of(Fixnum, answer) - assert_equal(11, answer) - - @input.truncate(@input.rewind) - animal = :dog - @input << animal << "\n" - @input.rewind - - answer = @terminal.ask("Favorite animal? ", Symbol) - assert_instance_of(Symbol, answer) - assert_equal(animal, answer) - - @input.truncate(@input.rewind) - @input << "16th June 1976\n" - @input.rewind - - answer = @terminal.ask("Enter your birthday.", Date) - assert_instance_of(Date, answer) - assert_equal(16, answer.day) - assert_equal(6, answer.month) - assert_equal(1976, answer.year) - - @input.truncate(@input.rewind) - pattern = "^yes|no$" - @input << pattern << "\n" - @input.rewind - - answer = @terminal.ask("Give me a pattern to match with: ", Regexp) - assert_instance_of(Regexp, answer) - assert_equal(/#{pattern}/, answer) - - @input.truncate(@input.rewind) - @input << "gen\n" - @input.rewind - - answer = @terminal.ask("Select a mode: ", [:generate, :run]) - assert_instance_of(Symbol, answer) - assert_equal(:generate, answer) - end - - def test_validation - @input << "system 'rm -rf /'\n105\n0b101_001\n" - @input.rewind - - answer = @terminal.ask("Enter a binary number: ") do |q| - q.validate = /\A(?:0b)?[01_]+\Z/ - end - assert_equal("0b101_001", answer) - assert_equal( "Enter a binary number: " + - "Your answer isn't valid " + - "(must match /\\A(?:0b)?[01_]+\\Z/).\n" + - "? " + - "Your answer isn't valid " + - "(must match /\\A(?:0b)?[01_]+\\Z/).\n" + - "? ", @output.string ) - - @input.truncate(@input.rewind) - @input << "Gray II, James Edward\n" + - "Gray, Dana Ann Leslie\n" + - "Gray, James Edward\n" - @input.rewind - - answer = @terminal.ask("Your name? ") do |q| - q.validate = lambda do |name| - names = name.split(/,\s*/) - return false unless names.size == 2 - return false if names.first =~ /\s/ - names.last.split.size == 2 - end - end - assert_equal("Gray, James Edward", answer) - end - - def test_whitespace - @input << " A lot\tof \t space\t \there! \n" - @input.rewind - - answer = @terminal.ask("Enter a whitespace filled string: ") do |q| - q.whitespace = :chomp - end - assert_equal(" A lot\tof \t space\t \there! ", answer) - - @input.rewind - - answer = @terminal.ask("Enter a whitespace filled string: ") - assert_equal("A lot\tof \t space\t \there!", answer) - - @input.rewind - - answer = @terminal.ask("Enter a whitespace filled string: ") do |q| - q.whitespace = :strip_and_collapse - end - assert_equal("A lot of space here!", answer) - - @input.rewind - - answer = @terminal.ask("Enter a whitespace filled string: ") do |q| - q.whitespace = :remove - end - assert_equal("Alotofspacehere!", answer) - - @input.rewind - - answer = @terminal.ask("Enter a whitespace filled string: ") do |q| - q.whitespace = :none - end - assert_equal(" A lot\tof \t space\t \there! \n", answer) - end - - def test_wrap - @terminal.wrap_at = 80 - - @terminal.say("This is a very short line.") - assert_equal("This is a very short line.\n", @output.string) - - @output.truncate(@output.rewind) - - @terminal.say( "This is a long flowing paragraph meant to span " + - "several lines. This text should definitely be " + - "wrapped at the set limit, in the result. Your code " + - "does well with things like this.\n\n" + - " * This is a simple embedded list.\n" + - " * You're code should not mess with this...\n" + - " * Because it's already formatted correctly and " + - "does not\n" + - " exceed the limit!" ) - assert_equal( "This is a long flowing paragraph meant to span " + - "several lines. This text should\n" + - "definitely be wrapped at the set limit, in the " + - "result. Your code does well with\n" + - "things like this.\n\n" + - " * This is a simple embedded list.\n" + - " * You're code should not mess with this...\n" + - " * Because it's already formatted correctly and does " + - "not\n" + - " exceed the limit!\n", @output.string ) - - @output.truncate(@output.rewind) - - @terminal.say("-=" * 50) - assert_equal(("-=" * 40 + "\n") + ("-=" * 10 + "\n"), @output.string) - end - - def test_track_eof - assert_raise(EOFError) { @terminal.ask("Any input left? ") } - - # turn EOF tracking - old_setting = HighLine.track_eof? - assert_nothing_raised(Exception) { HighLine.track_eof = false } - begin - @terminal.ask("And now? ") # this will still blow up, nothing available - rescue - assert_not_equal(EOFError, $!.class) # but HighLine's safe guards are off - end - HighLine.track_eof = old_setting - end - - def test_version - assert_not_nil(HighLine::VERSION) - assert_instance_of(String, HighLine::VERSION) - assert(HighLine::VERSION.frozen?) - assert_match(/\A\d\.\d\.\d\Z/, HighLine::VERSION) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/tc_import.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/tc_import.rb deleted file mode 100644 index 005d5a92..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/tc_import.rb +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/local/bin/ruby -w - -# tc_import.rb -# -# Created by James Edward Gray II on 2005-04-26. -# Copyright 2005 Gray Productions. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -require "test/unit" - -require "highline/import" -require "stringio" - -class TestImport < Test::Unit::TestCase - def test_import - assert_respond_to(self, :agree) - assert_respond_to(self, :ask) - assert_respond_to(self, :choose) - assert_respond_to(self, :say) - end - - def test_or_ask - old_terminal = $terminal - - input = StringIO.new - output = StringIO.new - $terminal = HighLine.new(input, output) - - input << "10\n" - input.rewind - - assert_equal(10, nil.or_ask("How much? ", Integer)) - - input.rewind - - assert_equal(20, "20".or_ask("How much? ", Integer)) - assert_equal(20, 20.or_ask("How much? ", Integer)) - - assert_equal(10, 20.or_ask("How much? ", Integer) { |q| q.in = 1..10 }) - ensure - $terminal = old_terminal - end - - def test_redirection - old_terminal = $terminal - - $terminal = HighLine.new(nil, (output = StringIO.new)) - say("Testing...") - assert_equal("Testing...\n", output.string) - ensure - $terminal = old_terminal - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/tc_menu.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/tc_menu.rb deleted file mode 100644 index fee18714..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/tc_menu.rb +++ /dev/null @@ -1,429 +0,0 @@ -#!/usr/local/bin/ruby -w - -# tc_menu.rb -# -# Created by Gregory Thomas Brown on 2005-05-10. -# Copyright 2005. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -require "test/unit" - -require "highline" -require "stringio" - -class TestMenu < Test::Unit::TestCase - def setup - @input = StringIO.new - @output = StringIO.new - @terminal = HighLine.new(@input, @output) - end - - def test_choices - @input << "2\n" - @input.rewind - - output = @terminal.choose do |menu| - menu.choices("Sample1", "Sample2", "Sample3") - end - assert_equal("Sample2", output) - end - - def test_flow - @input << "Sample1\n" - @input.rewind - - @terminal.choose do |menu| - # Default: menu.flow = :rows - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("1. Sample1\n2. Sample2\n3. Sample3\n? ", @output.string) - - @output.truncate(@output.rewind) - @input.rewind - - @terminal.choose do |menu| - menu.flow = :columns_across - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("1. Sample1 2. Sample2 3. Sample3\n? ", @output.string) - - @output.truncate(@output.rewind) - @input.rewind - - @terminal.choose do |menu| - menu.flow = :inline - menu.index = :none - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("Sample1, Sample2 or Sample3? ", @output.string) - end - - def test_help - @input << "help\nhelp load\nhelp rules\nhelp missing\n" - @input.rewind - - 4.times do - @terminal.choose do |menu| - menu.shell = true - - menu.choice(:load, "Load a file.") - menu.choice(:save, "Save data in file.") - menu.choice(:quit, "Exit program.") - - menu.help("rules", "The rules of this system are as follows...") - end - end - assert_equal( "1. load\n2. save\n3. quit\n4. help\n? " + - "This command will display helpful messages about " + - "functionality, like this one. To see the help for a " + - "specific topic enter:\n" + - "\thelp [TOPIC]\n" + - "Try asking for help on any of the following:\n" + - "\nload quit rules save \n" + - "1. load\n2. save\n3. quit\n4. help\n? " + - "= load\n\n" + - "Load a file.\n" + - "1. load\n2. save\n3. quit\n4. help\n? " + - "= rules\n\n" + - "The rules of this system are as follows...\n" + - "1. load\n2. save\n3. quit\n4. help\n? " + - "= missing\n\n" + - "There's no help for that topic.\n", @output.string ) - end - - def test_index - @input << "Sample1\n" - @input.rewind - - @terminal.choose do |menu| - # Default: menu.index = :number - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("1. Sample1\n2. Sample2\n3. Sample3\n? ", @output.string) - - @output.truncate(@output.rewind) - @input.rewind - - @terminal.choose do |menu| - menu.index = :letter - menu.index_suffix = ") " - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("a) Sample1\nb) Sample2\nc) Sample3\n? ", @output.string) - - @output.truncate(@output.rewind) - @input.rewind - - @terminal.choose do |menu| - menu.index = :none - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("Sample1\nSample2\nSample3\n? ", @output.string) - - @output.truncate(@output.rewind) - @input.rewind - - @terminal.choose do |menu| - menu.index = "*" - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("* Sample1\n* Sample2\n* Sample3\n? ", @output.string) - end - - def test_layouts - @input << "save\n" - @input.rewind - - @terminal.choose(:load, :save, :quit) # Default: layout = :list - assert_equal("1. load\n2. save\n3. quit\n? ", @output.string) - - @input.rewind - @output.truncate(@output.rewind) - - @terminal.choose(:load, :save, :quit) do |menu| - menu.header = "File Menu" - end - assert_equal( "File Menu:\n" + - "1. load\n2. save\n3. quit\n? ", @output.string ) - - @input.rewind - @output.truncate(@output.rewind) - - @terminal.choose(:load, :save, :quit) do |menu| - menu.layout = :one_line - menu.header = "File Menu" - menu.prompt = "Operation? " - end - assert_equal( "File Menu: Operation? " + - "(load, save or quit) ", @output.string ) - - @input.rewind - @output.truncate(@output.rewind) - - @terminal.choose(:load, :save, :quit) do |menu| - menu.layout = :menu_only - end - assert_equal("load, save or quit? ", @output.string) - - @input.rewind - @output.truncate(@output.rewind) - - @terminal.choose(:load, :save, :quit) do |menu| - menu.layout = '<%= list(@menu) %>File Menu: ' - end - assert_equal("1. load\n2. save\n3. quit\nFile Menu: ", @output.string) - end - - def test_list_option - @input << "l\n" - @input.rewind - - @terminal.choose(:load, :save, :quit) do |menu| - menu.layout = :menu_only - menu.list_option = ", or " - end - assert_equal("load, save, or quit? ", @output.string) - end - - def test_nil_on_handled - @input << "3\n3\n2\n" - @input.rewind - - # Shows that by default proc results are returned. - output = @terminal.choose do |menu| - menu.choice "Sample1" do "output1" end - menu.choice "Sample2" do "output2" end - menu.choice "Sample3" do "output3" end - end - assert_equal("output3", output) - - # - # Shows that they can be replaced with +nil+ by setting - # _nil_on_handled to +true+. - # - output = @terminal.choose do |menu| - menu.nil_on_handled = true - menu.choice "Sample1" do "output1" end - menu.choice "Sample2" do "output2" end - menu.choice "Sample3" do "output3" end - end - assert_equal(nil, output) - - # Shows that a menu item without a proc will be returned no matter what. - output = @terminal.choose do |menu| - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("Sample2", output) - end - - def test_passed_command - @input << "q\n" - @input.rewind - - selected = nil - @terminal.choose do |menu| - menu.choices(:load, :save, :quit) { |command| selected = command } - end - assert_equal(:quit, selected) - end - - def test_question_options - @input << "save\n" - @input.rewind - - answer = @terminal.choose(:Load, :Save, :Quit) do |menu| - menu.case = :capitalize - end - assert_equal(:Save, answer) - - @input.rewind - - answer = @terminal.choose(:Load, :Save, :Quit) do |menu| - menu.case = :capitalize - menu.character = :getc - end - assert_equal(:Save, answer) - assert_equal(?a, @input.getc) - end - - def test_select_by - @input << "Sample1\n2\n" - @input.rewind - - selected = @terminal.choose do |menu| - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("Sample1", selected) - - @input.rewind - - selected = @terminal.choose do |menu| - menu.select_by = :index - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("Sample2", selected) - - @input.rewind - - selected = @terminal.choose do |menu| - menu.select_by = :name - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - end - assert_equal("Sample1", selected) - end - - def test_hidden - @input << "Hidden\n4\n" - @input.rewind - - selected = @terminal.choose do |menu| - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - menu.hidden "Hidden!" - end - assert_equal("Hidden!", selected) - assert_equal("1. Sample1\n2. Sample2\n3. Sample3\n? ", @output.string) - - @input.rewind - - selected = @terminal.choose do |menu| - menu.select_by = :index - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - menu.hidden "Hidden!" - end - assert_equal("Hidden!", selected) - - @input.rewind - - selected = @terminal.choose do |menu| - menu.select_by = :name - - menu.choice "Sample1" - menu.choice "Sample2" - menu.choice "Sample3" - menu.hidden "Hidden!" - end - assert_equal("Hidden!", selected) - - @input.rewind - end - - def test_select_by_letter - @input << "b\n" - @input.rewind - - selected = @terminal.choose do |menu| - menu.index = :letter - menu.choice :save - menu.choice :load - menu.choice :quit - end - assert_equal(:load, selected) - end - - def test_shell - @input << "save --some-option my_file.txt\n" - @input.rewind - - selected = nil - options = nil - answer = @terminal.choose do |menu| - menu.choices(:load, :quit) - menu.choice(:save) do |command, details| - selected = command - options = details - - "Saved!" - end - menu.shell = true - end - assert_equal("Saved!", answer) - assert_equal(:save, selected) - assert_equal("--some-option my_file.txt", options) - end - - def test_simple_menu_shortcut - @input << "3\n" - @input.rewind - - selected = @terminal.choose(:save, :load, :quit) - assert_equal(:quit, selected) - end - - def test_symbols - @input << "3\n" - @input.rewind - - selected = @terminal.choose do |menu| - menu.choices(:save, :load, :quit) - end - assert_equal(:quit, selected) - end - - def test_paged_print_infinite_loop_bug - @terminal.page_at = 5 - # Will page twice, so start with two new lines - @input << "\n\n3\n" - @input.rewind - - # Sadly this goes into an infinite loop without the fix to page_print - selected = @terminal.choose(* 1..10) - assert_equal(selected, 3) - end - - - def test_cancel_paging - # Tests that paging can be cancelled halfway through - @terminal.page_at = 5 - # Will page twice, so stop after first page and make choice 3 - @input << "q\n3\n" - @input.rewind - - selected = @terminal.choose(* 1..10) - assert_equal(selected, 3) - - # Make sure paging message appeared - assert( @output.string.index('press enter/return to continue or q to stop'), - "Paging message did not appear." ) - - # Make sure it only appeared once - assert( @output.string !~ /q to stop.*q to stop/m, - "Paging message appeared more than once." ) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/ts_all.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/ts_all.rb deleted file mode 100644 index 735dccee..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/highline-1.5.1/test/ts_all.rb +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/local/bin/ruby -w - -# ts_all.rb -# -# Created by James Edward Gray II on 2005-04-26. -# Copyright 2005 Gray Productions. All rights reserved. -# -# This is Free Software. See LICENSE and COPYING for details. - -require "test/unit" - -require "tc_highline" -require "tc_import" -require "tc_menu" -require "tc_color_scheme" diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/http-access2.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/http-access2.rb deleted file mode 100644 index 43fd5d81..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/http-access2.rb +++ /dev/null @@ -1,53 +0,0 @@ -# HTTPAccess2 - HTTP accessing library. -# Copyright (C) 2000-2007 NAKAMURA, Hiroshi . - -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - -# http-access2.rb is based on http-access.rb in http-access/0.0.4. Some part -# of code in http-access.rb was recycled in http-access2.rb. Those part is -# copyrighted by Maehashi-san. - - -require 'httpclient' - - -module HTTPAccess2 - VERSION = ::HTTPClient::VERSION - RUBY_VERSION_STRING = ::HTTPClient::RUBY_VERSION_STRING - SSLEnabled = ::HTTPClient::SSLEnabled - SSPIEnabled = ::HTTPClient::SSPIEnabled - DEBUG_SSL = true - - Util = ::HTTPClient::Util - - class Client < ::HTTPClient - class RetryableResponse < StandardError - end - end - - SSLConfig = ::HTTPClient::SSLConfig - BasicAuth = ::HTTPClient::BasicAuth - DigestAuth = ::HTTPClient::DigestAuth - NegotiateAuth = ::HTTPClient::NegotiateAuth - AuthFilterBase = ::HTTPClient::AuthFilterBase - WWWAuth = ::HTTPClient::WWWAuth - ProxyAuth = ::HTTPClient::ProxyAuth - Site = ::HTTPClient::Site - Connection = ::HTTPClient::Connection - SessionManager = ::HTTPClient::SessionManager - SSLSocketWrap = ::HTTPClient::SSLSocketWrap - DebugSocket = ::HTTPClient::DebugSocket - - class Session < ::HTTPClient::Session - class Error < StandardError - end - class InvalidState < Error - end - class BadResponse < Error - end - class KeepAliveDisconnected < Error - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/http-access2/cookie.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/http-access2/cookie.rb deleted file mode 100644 index 56f78842..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/http-access2/cookie.rb +++ /dev/null @@ -1 +0,0 @@ -require 'httpclient/cookie' diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/http-access2/http.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/http-access2/http.rb deleted file mode 100644 index fc9b23c8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/http-access2/http.rb +++ /dev/null @@ -1 +0,0 @@ -require 'httpclient/http' diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient.rb deleted file mode 100644 index e83d1d01..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient.rb +++ /dev/null @@ -1,1020 +0,0 @@ -# HTTPClient - HTTP client library. -# Copyright (C) 2000-2009 NAKAMURA, Hiroshi . -# -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -require 'uri' -require 'stringio' -require 'digest/sha1' - -# Extra library -require 'httpclient/util' -require 'httpclient/ssl_config' -require 'httpclient/connection' -require 'httpclient/session' -require 'httpclient/http' -require 'httpclient/auth' -require 'httpclient/cookie' - - -# The HTTPClient class provides several methods for accessing Web resources -# via HTTP. -# -# HTTPClient instance is designed to be MT-safe. You can call a HTTPClient -# instance from several threads without synchronization after setting up an -# instance. -# -# clnt = HTTPClient.new -# clnt.set_cookie_store('/home/nahi/cookie.dat') -# urls.each do |url| -# Thread.new(url) do |u| -# p clnt.head(u).status -# end -# end -# -# == How to use -# -# At first, how to create your client. See initialize for more detail. -# -# 1. Create simple client. -# -# clnt = HTTPClient.new -# -# 2. Accessing resources through HTTP proxy. You can use environment -# variable 'http_proxy' or 'HTTP_PROXY' instead. -# -# clnt = HTTPClient.new('http://myproxy:8080') -# -# === How to retrieve web resources -# -# See get_content. -# -# 1. Get content of specified URL. It returns a String of whole result. -# -# puts clnt.get_content('http://dev.ctor.org/') -# -# 2. Get content as chunks of String. It yields chunks of String. -# -# clnt.get_content('http://dev.ctor.org/') do |chunk| -# puts chunk -# end -# -# === Invoking other HTTP methods -# -# See head, get, post, put, delete, options, propfind, proppatch and trace. -# It returns a HTTP::Message instance as a response. -# -# 1. Do HEAD request. -# -# res = clnt.head(uri) -# p res.header['Last-Modified'][0] -# -# 2. Do GET request with query. -# -# query = { 'keyword' => 'ruby', 'lang' => 'en' } -# res = clnt.get(uri, query) -# p res.status -# p res.contenttype -# p res.header['X-Custom'] -# puts res.content -# -# === How to POST -# -# See post. -# -# 1. Do POST a form data. -# -# body = { 'keyword' => 'ruby', 'lang' => 'en' } -# res = clnt.post(uri, body) -# -# 2. Do multipart file upload with POST. No need to set extra header by -# yourself from httpclient/2.1.4. -# -# File.open('/tmp/post_data') do |file| -# body = { 'upload' => file, 'user' => 'nahi' } -# res = clnt.post(uri, body) -# end -# -# === Accessing via SSL -# -# Ruby needs to be compiled with OpenSSL. -# -# 1. Get content of specified URL via SSL. -# Just pass an URL which starts with 'https://'. -# -# https_url = 'https://www.rsa.com' -# clnt.get_content(https_url) -# -# 2. Getting peer certificate from response. -# -# res = clnt.get(https_url) -# p res.peer_cert #=> returns OpenSSL::X509::Certificate -# -# 3. Configuring OpenSSL options. See HTTPClient::SSLConfig for more details. -# -# user_cert_file = 'cert.pem' -# user_key_file = 'privkey.pem' -# clnt.ssl_config.set_client_cert_file(user_cert_file, user_key_file) -# clnt.get_content(https_url) -# -# === Handling Cookies -# -# 1. Using volatile Cookies. Nothing to do. HTTPClient handles Cookies. -# -# clnt = HTTPClient.new -# clnt.get_content(url1) # receives Cookies. -# clnt.get_content(url2) # sends Cookies if needed. -# -# 2. Saving non volatile Cookies to a specified file. Need to set a file at -# first and invoke save method at last. -# -# clnt = HTTPClient.new -# clnt.set_cookie_store('/home/nahi/cookie.dat') -# clnt.get_content(url) -# ... -# clnt.save_cookie_store -# -# 3. Disabling Cookies. -# -# clnt = HTTPClient.new -# clnt.cookie_manager = nil -# -# === Configuring authentication credentials -# -# 1. Authentication with Web server. Supports BasicAuth, DigestAuth, and -# Negotiate/NTLM (requires ruby/ntlm module). -# -# clnt = HTTPClient.new -# domain = 'http://dev.ctor.org/http-access2/' -# user = 'user' -# password = 'user' -# clnt.set_auth(domain, user, password) -# p clnt.get_content('http://dev.ctor.org/http-access2/login').status -# -# 2. Authentication with Proxy server. Supports BasicAuth and NTLM -# (requires win32/sspi) -# -# clnt = HTTPClient.new(proxy) -# user = 'proxy' -# password = 'proxy' -# clnt.set_proxy_auth(user, password) -# p clnt.get_content(url) -# -# === Invoking HTTP methods with custom header -# -# Pass a Hash or an Array for extheader argument. -# -# extheader = { 'Accept' => '*/*' } -# clnt.get_content(uri, query, extheader) -# -# extheader = [['Accept', 'image/jpeg'], ['Accept', 'image/png']] -# clnt.get_content(uri, query, extheader) -# -# === Invoking HTTP methods asynchronously -# -# See head_async, get_async, post_async, put_async, delete_async, -# options_async, propfind_async, proppatch_async, and trace_async. -# It immediately returns a HTTPClient::Connection instance as a returning value. -# -# connection = clnt.post_async(url, body) -# print 'posting.' -# while true -# break if connection.finished? -# print '.' -# sleep 1 -# end -# puts '.' -# res = connection.pop -# p res.status -# p res.content.read # res.content is an IO for the res of async method. -# -# === Shortcut methods -# -# You can invoke get_content, get, etc. without creating HTTPClient instance. -# -# ruby -rhttpclient -e 'puts HTTPClient.get_content(ARGV.shift)' http://dev.ctor.org/ -# ruby -rhttpclient -e 'p HTTPClient.head(ARGV.shift).header["last-modified"]' http://dev.ctor.org/ -# -class HTTPClient - VERSION = '2.1.5' - RUBY_VERSION_STRING = "ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]" - /: (\S+) (\S+)/ =~ %q$Id: httpclient.rb 280 2009-06-02 15:44:28Z nahi $ - LIB_NAME = "(#{$1}/#{$2}, #{RUBY_VERSION_STRING})" - - include Util - - # Raised for indicating running environment configuration error for example - # accessing via SSL under the ruby which is not compiled with OpenSSL. - class ConfigurationError < StandardError - end - - # Raised for indicating HTTP response error. - class BadResponseError < RuntimeError - # HTTP::Message:: a response - attr_reader :res - - def initialize(msg, res = nil) # :nodoc: - super(msg) - @res = res - end - end - - # Raised for indicating a timeout error. - class TimeoutError < RuntimeError - end - - # Raised for indicating a connection timeout error. - # You can configure connection timeout via HTTPClient#connect_timeout=. - class ConnectTimeoutError < TimeoutError - end - - # Raised for indicating a request sending timeout error. - # You can configure request sending timeout via HTTPClient#send_timeout=. - class SendTimeoutError < TimeoutError - end - - # Raised for indicating a response receiving timeout error. - # You can configure response receiving timeout via - # HTTPClient#receive_timeout=. - class ReceiveTimeoutError < TimeoutError - end - - # Deprecated. just for backward compatibility - class Session - BadResponse = ::HTTPClient::BadResponseError - end - - class << self - %w(get_content post_content head get post put delete options propfind proppatch trace).each do |name| - eval <<-EOD - def #{name}(*arg, &block) - clnt = new - begin - clnt.#{name}(*arg, &block) - ensure - clnt.reset_all - end - end - EOD - end - - private - - def attr_proxy(symbol, assignable = false) - name = symbol.to_s - define_method(name) { - @session_manager.__send__(name) - } - if assignable - aname = name + '=' - define_method(aname) { |rhs| - reset_all - @session_manager.__send__(aname, rhs) - } - end - end - end - - # HTTPClient::SSLConfig:: SSL configurator. - attr_reader :ssl_config - # WebAgent::CookieManager:: Cookies configurator. - attr_accessor :cookie_manager - # An array of response HTTP message body String which is used for loop-back - # test. See test/* to see how to use it. If you want to do loop-back test - # of HTTP header, use test_loopback_http_response instead. - attr_reader :test_loopback_response - # An array of request filter which can trap HTTP request/response. - # See HTTPClient::WWWAuth to see how to use it. - attr_reader :request_filter - # HTTPClient::ProxyAuth:: Proxy authentication handler. - attr_reader :proxy_auth - # HTTPClient::WWWAuth:: WWW authentication handler. - attr_reader :www_auth - # How many times get_content and post_content follows HTTP redirect. - # 10 by default. - attr_accessor :follow_redirect_count - - # Set HTTP version as a String:: 'HTTP/1.0' or 'HTTP/1.1' - attr_proxy(:protocol_version, true) - # Connect timeout in sec. - attr_proxy(:connect_timeout, true) - # Request sending timeout in sec. - attr_proxy(:send_timeout, true) - # Response receiving timeout in sec. - attr_proxy(:receive_timeout, true) - # Negotiation retry count for authentication. 5 by default. - attr_proxy(:protocol_retry_count, true) - # if your ruby is older than 2005-09-06, do not set socket_sync = false to - # avoid an SSL socket blocking bug in openssl/buffering.rb. - attr_proxy(:socket_sync, true) - # User-Agent header in HTTP request. - attr_proxy(:agent_name, true) - # From header in HTTP request. - attr_proxy(:from, true) - # An array of response HTTP String (not a HTTP message body) which is used - # for loopback test. See test/* to see how to use it. - attr_proxy(:test_loopback_http_response) - - # Default extheader for PROPFIND request. - PROPFIND_DEFAULT_EXTHEADER = { 'Depth' => '0' } - - # Creates a HTTPClient instance which manages sessions, cookies, etc. - # - # HTTPClient.new takes 3 optional arguments for proxy url string, - # User-Agent String and From header String. User-Agent and From are embedded - # in HTTP request Header if given. No User-Agent and From header added - # without setting it explicitly. - # - # proxy = 'http://myproxy:8080' - # agent_name = 'MyAgent/0.1' - # from = 'from@example.com' - # HTTPClient.new(proxy, agent_name, from) - # - # You can use a keyword argument style Hash. Keys are :proxy, :agent_name - # and :from. - # - # HTTPClient.new(:agent_name = 'MyAgent/0.1') - def initialize(*args) - proxy, agent_name, from = keyword_argument(args, :proxy, :agent_name, :from) - @proxy = nil # assigned later. - @no_proxy = nil - @www_auth = WWWAuth.new - @proxy_auth = ProxyAuth.new - @request_filter = [@proxy_auth, @www_auth] - @debug_dev = nil - @redirect_uri_callback = method(:default_redirect_uri_callback) - @test_loopback_response = [] - @session_manager = SessionManager.new(self) - @session_manager.agent_name = agent_name - @session_manager.from = from - @session_manager.ssl_config = @ssl_config = SSLConfig.new(self) - @cookie_manager = WebAgent::CookieManager.new - @follow_redirect_count = 10 - load_environment - self.proxy = proxy if proxy - end - - # Returns debug device if exists. See debug_dev=. - def debug_dev - @debug_dev - end - - # Sets debug device. Once debug device is set, all HTTP requests and - # responses are dumped to given device. dev must respond to << for dump. - # - # Calling this method resets all existing sessions. - def debug_dev=(dev) - @debug_dev = dev - reset_all - @session_manager.debug_dev = dev - end - - # Returns URI object of HTTP proxy if exists. - def proxy - @proxy - end - - # Sets HTTP proxy used for HTTP connection. Given proxy can be an URI, - # a String or nil. You can set user/password for proxy authentication like - # HTTPClient#proxy = 'http://user:passwd@myproxy:8080' - # - # You can use environment variable 'http_proxy' or 'HTTP_PROXY' for it. - # You need to use 'cgi_http_proxy' or 'CGI_HTTP_PROXY' instead if you run - # HTTPClient from CGI environment from security reason. (HTTPClient checks - # 'REQUEST_METHOD' environment variable whether it's CGI or not) - # - # Calling this method resets all existing sessions. - def proxy=(proxy) - if proxy.nil? - @proxy = nil - @proxy_auth.reset_challenge - else - @proxy = urify(proxy) - if @proxy.scheme == nil or @proxy.scheme.downcase != 'http' or - @proxy.host == nil or @proxy.port == nil - raise ArgumentError.new("unsupported proxy #{proxy}") - end - @proxy_auth.reset_challenge - if @proxy.user || @proxy.password - @proxy_auth.set_auth(@proxy.user, @proxy.password) - end - end - reset_all - @session_manager.proxy = @proxy - @proxy - end - - # Returns NO_PROXY setting String if given. - def no_proxy - @no_proxy - end - - # Sets NO_PROXY setting String. no_proxy must be a comma separated String. - # Each entry must be 'host' or 'host:port' such as; - # HTTPClient#no_proxy = 'example.com,example.co.jp:443' - # - # 'localhost' is treated as a no_proxy site regardless of explicitly listed. - # HTTPClient checks given URI objects before accessing it. - # 'host' is tail string match. No IP-addr conversion. - # - # You can use environment variable 'no_proxy' or 'NO_PROXY' for it. - # - # Calling this method resets all existing sessions. - def no_proxy=(no_proxy) - @no_proxy = no_proxy - reset_all - end - - # Sets credential for Web server authentication. - # domain:: a String or an URI to specify where HTTPClient should use this - # credential. If you set uri to nil, HTTPClient uses this credential - # wherever a server requires it. - # user:: username String. - # passwd:: password String. - # - # You can set multiple credentials for each uri. - # - # clnt.set_auth('http://www.example.com/foo/', 'foo_user', 'passwd') - # clnt.set_auth('http://www.example.com/bar/', 'bar_user', 'passwd') - # - # Calling this method resets all existing sessions. - def set_auth(domain, user, passwd) - uri = urify(domain) - @www_auth.set_auth(uri, user, passwd) - reset_all - end - - # Deprecated. Use set_auth instead. - def set_basic_auth(domain, user, passwd) - uri = urify(domain) - @www_auth.basic_auth.set(uri, user, passwd) - reset_all - end - - # Sets credential for Proxy authentication. - # user:: username String. - # passwd:: password String. - # - # Calling this method resets all existing sessions. - def set_proxy_auth(user, passwd) - @proxy_auth.set_auth(user, passwd) - reset_all - end - - # Sets the filename where non-volatile Cookies be saved by calling - # save_cookie_store. - # This method tries to load and managing Cookies from the specified file. - # - # Calling this method resets all existing sessions. - def set_cookie_store(filename) - @cookie_manager.cookies_file = filename - @cookie_manager.load_cookies if filename - reset_all - end - - # Try to save Cookies to the file specified in set_cookie_store. Unexpected - # error will be raised if you don't call set_cookie_store first. - # (interface mismatch between WebAgent::CookieManager implementation) - def save_cookie_store - @cookie_manager.save_cookies - end - - # Sets callback proc when HTTP redirect status is returned for get_content - # and post_content. default_redirect_uri_callback is used by default. - # - # If you need strict implementation which does not allow relative URI - # redirection, set strict_redirect_uri_callback instead. - # - # clnt.redirect_uri_callback = clnt.method(:strict_redirect_uri_callback) - # - def redirect_uri_callback=(redirect_uri_callback) - @redirect_uri_callback = redirect_uri_callback - end - - # Retrieves a web resource. - # - # uri:: a String or an URI object which represents an URL of web resource. - # query:: a Hash or an Array of query part of URL. - # e.g. { "a" => "b" } => 'http://host/part?a=b'. - # Give an array to pass multiple value like - # [["a", "b"], ["a", "c"]] => 'http://host/part?a=b&a=c'. - # extheader:: a Hash or an Array of extra headers. e.g. - # { 'Accept' => '*/*' } or - # [['Accept', 'image/jpeg'], ['Accept', 'image/png']]. - # &block:: Give a block to get chunked message-body of response like - # get_content(uri) { |chunked_body| ... }. - # Size of each chunk may not be the same. - # - # get_content follows HTTP redirect status (see HTTP::Status.redirect?) - # internally and try to retrieve content from redirected URL. See - # redirect_uri_callback= how HTTP redirection is handled. - # - # If you need to get full HTTP response including HTTP status and headers, - # use get method. get returns HTTP::Message as a response and you need to - # follow HTTP redirect by yourself if you need. - def get_content(uri, query = nil, extheader = {}, &block) - follow_redirect(:get, uri, query, nil, extheader, &block).content - end - - # Posts a content. - # - # uri:: a String or an URI object which represents an URL of web resource. - # body:: a Hash or an Array of body part. - # e.g. { "a" => "b" } => 'a=b'. - # Give an array to pass multiple value like - # [["a", "b"], ["a", "c"]] => 'a=b&a=c'. - # When you pass a File as a value, it will be posted as a - # multipart/form-data. e.g. { 'upload' => file } - # extheader:: a Hash or an Array of extra headers. e.g. - # { 'Accept' => '*/*' } or - # [['Accept', 'image/jpeg'], ['Accept', 'image/png']]. - # &block:: Give a block to get chunked message-body of response like - # post_content(uri) { |chunked_body| ... }. - # Size of each chunk may not be the same. - # - # post_content follows HTTP redirect status (see HTTP::Status.redirect?) - # internally and try to post the content to redirected URL. See - # redirect_uri_callback= how HTTP redirection is handled. - # - # If you need to get full HTTP response including HTTP status and headers, - # use post method. - def post_content(uri, body = nil, extheader = {}, &block) - follow_redirect(:post, uri, nil, body, extheader, &block).content - end - - # A method for redirect uri callback. How to use: - # clnt.redirect_uri_callback = clnt.method(:strict_redirect_uri_callback) - # This callback does not allow relative redirect such as - # Location: ../foo/ - # in HTTP header. (raises BadResponseError instead) - def strict_redirect_uri_callback(uri, res) - newuri = URI.parse(res.header['location'][0]) - if https?(uri) && !https?(newuri) - raise BadResponseError.new("redirecting to non-https resource") - end - unless newuri.is_a?(URI::HTTP) - raise BadResponseError.new("unexpected location: #{newuri}", res) - end - puts "redirect to: #{newuri}" if $DEBUG - newuri - end - - # A default method for redirect uri callback. This method is used by - # HTTPClient instance by default. - # This callback allows relative redirect such as - # Location: ../foo/ - # in HTTP header. - def default_redirect_uri_callback(uri, res) - newuri = URI.parse(res.header['location'][0]) - if https?(uri) && !https?(newuri) - raise BadResponseError.new("redirecting to non-https resource") - end - unless newuri.is_a?(URI::HTTP) - newuri = uri + newuri - STDERR.puts("could be a relative URI in location header which is not recommended") - STDERR.puts("'The field value consists of a single absolute URI' in HTTP spec") - end - puts "redirect to: #{newuri}" if $DEBUG - newuri - end - - # Sends HEAD request to the specified URL. See request for arguments. - def head(uri, query = nil, extheader = {}) - request(:head, uri, query, nil, extheader) - end - - # Sends GET request to the specified URL. See request for arguments. - def get(uri, query = nil, extheader = {}, &block) - request(:get, uri, query, nil, extheader, &block) - end - - # Sends POST request to the specified URL. See request for arguments. - def post(uri, body = '', extheader = {}, &block) - request(:post, uri, nil, body, extheader, &block) - end - - # Sends PUT request to the specified URL. See request for arguments. - def put(uri, body = '', extheader = {}, &block) - request(:put, uri, nil, body, extheader, &block) - end - - # Sends DELETE request to the specified URL. See request for arguments. - def delete(uri, extheader = {}, &block) - request(:delete, uri, nil, nil, extheader, &block) - end - - # Sends OPTIONS request to the specified URL. See request for arguments. - def options(uri, extheader = {}, &block) - request(:options, uri, nil, nil, extheader, &block) - end - - # Sends PROPFIND request to the specified URL. See request for arguments. - def propfind(uri, extheader = PROPFIND_DEFAULT_EXTHEADER, &block) - request(:propfind, uri, nil, nil, extheader, &block) - end - - # Sends PROPPATCH request to the specified URL. See request for arguments. - def proppatch(uri, body = nil, extheader = {}, &block) - request(:proppatch, uri, nil, body, extheader, &block) - end - - # Sends TRACE request to the specified URL. See request for arguments. - def trace(uri, query = nil, body = nil, extheader = {}, &block) - request('TRACE', uri, query, body, extheader, &block) - end - - # Sends a request to the specified URL. - # - # method:: HTTP method to be sent. method.to_s.upcase is used. - # uri:: a String or an URI object which represents an URL of web resource. - # query:: a Hash or an Array of query part of URL. - # e.g. { "a" => "b" } => 'http://host/part?a=b' - # Give an array to pass multiple value like - # [["a", "b"], ["a", "c"]] => 'http://host/part?a=b&a=c' - # body:: a Hash or an Array of body part. - # e.g. { "a" => "b" } => 'a=b'. - # Give an array to pass multiple value like - # [["a", "b"], ["a", "c"]] => 'a=b&a=c'. - # When the given method is 'POST' and the given body contains a file - # as a value, it will be posted as a multipart/form-data. - # e.g. { 'upload' => file } - # See HTTP::Message.file? for actual condition of 'a file'. - # extheader:: a Hash or an Array of extra headers. e.g. - # { 'Accept' => '*/*' } or - # [['Accept', 'image/jpeg'], ['Accept', 'image/png']]. - # &block:: Give a block to get chunked message-body of response like - # get(uri) { |chunked_body| ... }. - # Size of each chunk may not be the same. - # - # You can also pass a String as a body. HTTPClient just sends a String as - # a HTTP request message body. - # - # When you pass an IO as a body, HTTPClient sends it as a HTTP request with - # chunked encoding (Transfer-Encoding: chunked in HTTP header). Bear in mind - # that some server application does not support chunked request. At least - # cgi.rb does not support it. - def request(method, uri, query = nil, body = nil, extheader = {}, &block) - uri = urify(uri) - if block - filtered_block = proc { |res, str| - block.call(str) - } - end - do_request(method, uri, query, body, extheader, &filtered_block) - end - - # Sends HEAD request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def head_async(uri, query = nil, extheader = {}) - request_async(:head, uri, query, nil, extheader) - end - - # Sends GET request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def get_async(uri, query = nil, extheader = {}) - request_async(:get, uri, query, nil, extheader) - end - - # Sends POST request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def post_async(uri, body = nil, extheader = {}) - request_async(:post, uri, nil, body, extheader) - end - - # Sends PUT request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def put_async(uri, body = nil, extheader = {}) - request_async(:put, uri, nil, body, extheader) - end - - # Sends DELETE request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def delete_async(uri, extheader = {}) - request_async(:delete, uri, nil, nil, extheader) - end - - # Sends OPTIONS request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def options_async(uri, extheader = {}) - request_async(:options, uri, nil, nil, extheader) - end - - # Sends PROPFIND request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def propfind_async(uri, extheader = PROPFIND_DEFAULT_EXTHEADER) - request_async(:propfind, uri, nil, nil, extheader) - end - - # Sends PROPPATCH request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def proppatch_async(uri, body = nil, extheader = {}) - request_async(:proppatch, uri, nil, body, extheader) - end - - # Sends TRACE request in async style. See request_async for arguments. - # It immediately returns a HTTPClient::Connection instance as a result. - def trace_async(uri, query = nil, body = nil, extheader = {}) - request_async(:trace, uri, query, body, extheader) - end - - # Sends a request in async style. request method creates new Thread for - # HTTP connection and returns a HTTPClient::Connection instance immediately. - # - # Arguments definition is the same as request. - def request_async(method, uri, query = nil, body = nil, extheader = {}) - uri = urify(uri) - do_request_async(method, uri, query, body, extheader) - end - - # Resets internal session for the given URL. Keep-alive connection for the - # site (host-port pair) is disconnected if exists. - def reset(uri) - uri = urify(uri) - @session_manager.reset(uri) - end - - # Resets all of internal sessions. Keep-alive connections are disconnected. - def reset_all - @session_manager.reset_all - end - -private - - class RetryableResponse < StandardError # :nodoc: - end - - class KeepAliveDisconnected < StandardError # :nodoc: - end - - def do_request(method, uri, query, body, extheader, &block) - conn = Connection.new - res = nil - if HTTP::Message.file?(body) - pos = body.pos rescue nil - end - retry_count = @session_manager.protocol_retry_count - proxy = no_proxy?(uri) ? nil : @proxy - while retry_count > 0 - body.pos = pos if pos - req = create_request(method, uri, query, body, extheader) - begin - protect_keep_alive_disconnected do - do_get_block(req, proxy, conn, &block) - end - res = conn.pop - break - rescue RetryableResponse - res = conn.pop - retry_count -= 1 - end - end - res - end - - def do_request_async(method, uri, query, body, extheader) - conn = Connection.new - t = Thread.new(conn) { |tconn| - if HTTP::Message.file?(body) - pos = body.pos rescue nil - end - retry_count = @session_manager.protocol_retry_count - proxy = no_proxy?(uri) ? nil : @proxy - while retry_count > 0 - body.pos = pos if pos - req = create_request(method, uri, query, body, extheader) - begin - protect_keep_alive_disconnected do - do_get_stream(req, proxy, tconn) - end - break - rescue RetryableResponse - retry_count -= 1 - end - end - } - conn.async_thread = t - conn - end - - def load_environment - # http_proxy - if getenv('REQUEST_METHOD') - # HTTP_PROXY conflicts with the environment variable usage in CGI where - # HTTP_* is used for HTTP header information. Unlike open-uri, we - # simply ignore http_proxy in CGI env and use cgi_http_proxy instead. - self.proxy = getenv('cgi_http_proxy') - else - self.proxy = getenv('http_proxy') - end - # no_proxy - self.no_proxy = getenv('no_proxy') - end - - def getenv(name) - ENV[name.downcase] || ENV[name.upcase] - end - - def follow_redirect(method, uri, query, body, extheader, &block) - uri = urify(uri) - if block - filtered_block = proc { |r, str| - block.call(str) if HTTP::Status.successful?(r.status) - } - end - if HTTP::Message.file?(body) - pos = body.pos rescue nil - end - retry_number = 0 - while retry_number < @follow_redirect_count - body.pos = pos if pos - res = do_request(method, uri, query, body, extheader, &filtered_block) - if HTTP::Status.successful?(res.status) - return res - elsif HTTP::Status.redirect?(res.status) - uri = urify(@redirect_uri_callback.call(uri, res)) - retry_number += 1 - else - raise BadResponseError.new("unexpected response: #{res.header.inspect}", res) - end - end - raise BadResponseError.new("retry count exceeded", res) - end - - def protect_keep_alive_disconnected - begin - yield - rescue KeepAliveDisconnected - yield - end - end - - def create_request(method, uri, query, body, extheader) - method = method.to_s.upcase - if extheader.is_a?(Hash) - extheader = extheader.to_a - else - extheader = extheader.dup - end - boundary = nil - if body - dummy, content_type = extheader.find { |key, value| - key.downcase == 'content-type' - } - if content_type - if /\Amultipart/ =~ content_type - if content_type =~ /boundary=(.+)\z/ - boundary = $1 - else - boundary = create_boundary - content_type = "#{content_type}; boundary=#{boundary}" - extheader = override_header(extheader, 'Content-Type', content_type) - end - end - elsif method == 'POST' - if file_in_form_data?(body) - boundary = create_boundary - content_type = "multipart/form-data; boundary=#{boundary}" - else - content_type = 'application/x-www-form-urlencoded' - end - extheader << ['Content-Type', content_type] - end - end - req = HTTP::Message.new_request(method, uri, query, body, boundary) - extheader.each do |key, value| - req.header.add(key, value) - end - if @cookie_manager && cookie = @cookie_manager.find(uri) - req.header.add('Cookie', cookie) - end - req - end - - def create_boundary - Digest::SHA1.hexdigest(Time.now.to_s) - end - - def file_in_form_data?(body) - HTTP::Message.multiparam_query?(body) && - body.any? { |k, v| HTTP::Message.file?(v) } - end - - def override_header(extheader, key, value) - result = [] - extheader.each do |k, v| - if k.downcase == key.downcase - result << [key, value] - else - result << [k, v] - end - end - result - end - - NO_PROXY_HOSTS = ['localhost'] - - def no_proxy?(uri) - if !@proxy or NO_PROXY_HOSTS.include?(uri.host) - return true - end - unless @no_proxy - return false - end - @no_proxy.scan(/([^:,]+)(?::(\d+))?/) do |host, port| - if /(\A|\.)#{Regexp.quote(host)}\z/i =~ uri.host && - (!port || uri.port == port.to_i) - return true - end - end - false - end - - def https?(uri) - uri.scheme.downcase == 'https' - end - - # !! CAUTION !! - # Method 'do_get*' runs under MT conditon. Be careful to change. - def do_get_block(req, proxy, conn, &block) - @request_filter.each do |filter| - filter.filter_request(req) - end - if str = @test_loopback_response.shift - dump_dummy_request_response(req.body.dump, str) if @debug_dev - conn.push(HTTP::Message.new_response(str)) - return - end - content = block ? nil : '' - res = HTTP::Message.new_response(content) - @debug_dev << "= Request\n\n" if @debug_dev - sess = @session_manager.query(req, proxy) - res.peer_cert = sess.ssl_peer_cert - @debug_dev << "\n\n= Response\n\n" if @debug_dev - do_get_header(req, res, sess) - conn.push(res) - sess.get_body do |part| - if block - block.call(res, part) - else - content << part - end - end - @session_manager.keep(sess) unless sess.closed? - commands = @request_filter.collect { |filter| - filter.filter_response(req, res) - } - if commands.find { |command| command == :retry } - raise RetryableResponse.new - end - end - - def do_get_stream(req, proxy, conn) - @request_filter.each do |filter| - filter.filter_request(req) - end - if str = @test_loopback_response.shift - dump_dummy_request_response(req.body.dump, str) if @debug_dev - conn.push(HTTP::Message.new_response(StringIO.new(str))) - return - end - piper, pipew = IO.pipe - res = HTTP::Message.new_response(piper) - @debug_dev << "= Request\n\n" if @debug_dev - sess = @session_manager.query(req, proxy) - res.peer_cert = sess.ssl_peer_cert - @debug_dev << "\n\n= Response\n\n" if @debug_dev - do_get_header(req, res, sess) - conn.push(res) - sess.get_body do |part| - pipew.syswrite(part) - end - pipew.close - @session_manager.keep(sess) unless sess.closed? - commands = @request_filter.collect { |filter| - filter.filter_response(req, res) - } - # ignore commands (not retryable in async mode) - end - - def do_get_header(req, res, sess) - res.version, res.status, res.reason, headers = sess.get_header - headers.each do |key, value| - res.header.add(key, value) - end - if @cookie_manager - res.header['set-cookie'].each do |cookie| - @cookie_manager.parse(cookie, req.header.request_uri) - end - end - end - - def dump_dummy_request_response(req, res) - @debug_dev << "= Dummy Request\n\n" - @debug_dev << req - @debug_dev << "\n\n= Dummy Response\n\n" - @debug_dev << res - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/auth.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/auth.rb deleted file mode 100644 index 571a16f7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/auth.rb +++ /dev/null @@ -1,522 +0,0 @@ -# HTTPClient - HTTP client library. -# Copyright (C) 2000-2009 NAKAMURA, Hiroshi . -# -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -require 'digest/md5' -require 'httpclient/session' - - -class HTTPClient - - begin - require 'net/ntlm' - NTLMEnabled = true - rescue LoadError - NTLMEnabled = false - end - - begin - require 'win32/sspi' - SSPIEnabled = true - rescue LoadError - SSPIEnabled = false - end - - - # Common abstract class for authentication filter. - # - # There are 2 authentication filters. - # WWWAuth:: Authentication filter for handling authentication negotiation - # between Web server. Parses 'WWW-Authentication' header in - # response and generates 'Authorization' header in request. - # ProxyAuth:: Authentication filter for handling authentication negotiation - # between Proxy server. Parses 'Proxy-Authentication' header in - # response and generates 'Proxy-Authorization' header in request. - class AuthFilterBase - private - - def parse_authentication_header(res, tag) - challenge = res.header[tag] - return nil unless challenge - challenge.collect { |c| parse_challenge_header(c) }.compact - end - - def parse_challenge_header(challenge) - scheme, param_str = challenge.scan(/\A(\S+)(?:\s+(.*))?\z/)[0] - return nil if scheme.nil? - return scheme, param_str - end - end - - - # Authentication filter for handling authentication negotiation between - # Web server. Parses 'WWW-Authentication' header in response and - # generates 'Authorization' header in request. - # - # Authentication filter is implemented using request filter of HTTPClient. - # It traps HTTP response header and maintains authentication state, and - # traps HTTP request header for inserting necessary authentication header. - # - # WWWAuth has sub filters (BasicAuth, DigestAuth, NegotiateAuth and - # SSPINegotiateAuth) and delegates some operations to it. - # NegotiateAuth requires 'ruby/ntlm' module. - # SSPINegotiateAuth requires 'win32/sspi' module. - class WWWAuth < AuthFilterBase - attr_reader :basic_auth - attr_reader :digest_auth - attr_reader :negotiate_auth - attr_reader :sspi_negotiate_auth - - # Creates new WWWAuth. - def initialize - @basic_auth = BasicAuth.new - @digest_auth = DigestAuth.new - @negotiate_auth = NegotiateAuth.new - @sspi_negotiate_auth = SSPINegotiateAuth.new - # sort authenticators by priority - @authenticator = [@negotiate_auth, @sspi_negotiate_auth, @digest_auth, @basic_auth] - end - - # Resets challenge state. See sub filters for more details. - def reset_challenge - @authenticator.each do |auth| - auth.reset_challenge - end - end - - # Set authentication credential. See sub filters for more details. - def set_auth(uri, user, passwd) - @authenticator.each do |auth| - auth.set(uri, user, passwd) - end - reset_challenge - end - - # Filter API implementation. Traps HTTP request and insert - # 'Authorization' header if needed. - def filter_request(req) - @authenticator.each do |auth| - if cred = auth.get(req) - req.header.set('Authorization', auth.scheme + " " + cred) - return - end - end - end - - # Filter API implementation. Traps HTTP response and parses - # 'WWW-Authenticate' header. - def filter_response(req, res) - command = nil - if res.status == HTTP::Status::UNAUTHORIZED - if challenge = parse_authentication_header(res, 'www-authenticate') - uri = req.header.request_uri - challenge.each do |scheme, param_str| - @authenticator.each do |auth| - if scheme.downcase == auth.scheme.downcase - challengeable = auth.challenge(uri, param_str) - command = :retry if challengeable - end - end - end - # ignore unknown authentication scheme - end - end - command - end - end - - - # Authentication filter for handling authentication negotiation between - # Proxy server. Parses 'Proxy-Authentication' header in response and - # generates 'Proxy-Authorization' header in request. - # - # Authentication filter is implemented using request filter of HTTPClient. - # It traps HTTP response header and maintains authentication state, and - # traps HTTP request header for inserting necessary authentication header. - # - # ProxyAuth has sub filters (BasicAuth, NegotiateAuth, and SSPINegotiateAuth) - # and delegates some operations to it. - # NegotiateAuth requires 'ruby/ntlm' module. - # SSPINegotiateAuth requires 'win32/sspi' module. - class ProxyAuth < AuthFilterBase - attr_reader :basic_auth - attr_reader :negotiate_auth - attr_reader :sspi_negotiate_auth - - # Creates new ProxyAuth. - def initialize - @basic_auth = BasicAuth.new - @negotiate_auth = NegotiateAuth.new - @sspi_negotiate_auth = SSPINegotiateAuth.new - # sort authenticators by priority - @authenticator = [@negotiate_auth, @sspi_negotiate_auth, @basic_auth] - end - - # Resets challenge state. See sub filters for more details. - def reset_challenge - @authenticator.each do |auth| - auth.reset_challenge - end - end - - # Set authentication credential. See sub filters for more details. - def set_auth(user, passwd) - @authenticator.each do |auth| - auth.set(nil, user, passwd) - end - reset_challenge - end - - # Filter API implementation. Traps HTTP request and insert - # 'Proxy-Authorization' header if needed. - def filter_request(req) - @authenticator.each do |auth| - if cred = auth.get(req) - req.header.set('Proxy-Authorization', auth.scheme + " " + cred) - return - end - end - end - - # Filter API implementation. Traps HTTP response and parses - # 'Proxy-Authenticate' header. - def filter_response(req, res) - command = nil - if res.status == HTTP::Status::PROXY_AUTHENTICATE_REQUIRED - if challenge = parse_authentication_header(res, 'proxy-authenticate') - uri = req.header.request_uri - challenge.each do |scheme, param_str| - @authenticator.each do |auth| - if scheme.downcase == auth.scheme.downcase - challengeable = auth.challenge(uri, param_str) - command = :retry if challengeable - end - end - end - # ignore unknown authentication scheme - end - end - command - end - end - - # Authentication filter for handling BasicAuth negotiation. - # Used in WWWAuth and ProxyAuth. - class BasicAuth - # Authentication scheme. - attr_reader :scheme - - # Creates new BasicAuth filter. - def initialize - @cred = nil - @auth = {} - @challengeable = {} - @scheme = "Basic" - end - - # Resets challenge state. Do not send '*Authorization' header until the - # server sends '*Authentication' again. - def reset_challenge - @challengeable.clear - end - - # Set authentication credential. - # uri == nil for generic purpose (allow to use user/password for any URL). - def set(uri, user, passwd) - if uri.nil? - @cred = ["#{user}:#{passwd}"].pack('m').tr("\n", '') - else - uri = Util.uri_dirname(uri) - @auth[uri] = ["#{user}:#{passwd}"].pack('m').tr("\n", '') - end - end - - # Response handler: returns credential. - # It sends cred only when a given uri is; - # * child page of challengeable(got *Authenticate before) uri and, - # * child page of defined credential - def get(req) - target_uri = req.header.request_uri - return nil unless @challengeable.find { |uri, ok| - Util.uri_part_of(target_uri, uri) and ok - } - return @cred if @cred - Util.hash_find_value(@auth) { |uri, cred| - Util.uri_part_of(target_uri, uri) - } - end - - # Challenge handler: remember URL for response. - def challenge(uri, param_str) - @challengeable[uri] = true - true - end - end - - - # Authentication filter for handling DigestAuth negotiation. - # Used in WWWAuth. - class DigestAuth - # Authentication scheme. - attr_reader :scheme - - # Creates new DigestAuth filter. - def initialize - @auth = {} - @challenge = {} - @nonce_count = 0 - @scheme = "Digest" - end - - # Resets challenge state. Do not send '*Authorization' header until the - # server sends '*Authentication' again. - def reset_challenge - @challenge.clear - end - - # Set authentication credential. - # uri == nil is ignored. - def set(uri, user, passwd) - if uri - uri = Util.uri_dirname(uri) - @auth[uri] = [user, passwd] - end - end - - # Response handler: returns credential. - # It sends cred only when a given uri is; - # * child page of challengeable(got *Authenticate before) uri and, - # * child page of defined credential - def get(req) - target_uri = req.header.request_uri - param = Util.hash_find_value(@challenge) { |uri, v| - Util.uri_part_of(target_uri, uri) - } - return nil unless param - user, passwd = Util.hash_find_value(@auth) { |uri, auth_data| - Util.uri_part_of(target_uri, uri) - } - return nil unless user - uri = req.header.request_uri - calc_cred(req.header.request_method, uri, user, passwd, param) - end - - # Challenge handler: remember URL and challenge token for response. - def challenge(uri, param_str) - @challenge[uri] = parse_challenge_param(param_str) - true - end - - private - - # this method is implemented by sromano and posted to - # http://tools.assembla.com/breakout/wiki/DigestForSoap - # Thanks! - # supported algorithm: MD5 only for now - def calc_cred(method, uri, user, passwd, param) - a_1 = "#{user}:#{param['realm']}:#{passwd}" - a_2 = "#{method}:#{uri.path}" - nonce = param['nonce'] - cnonce = generate_cnonce() - @nonce_count += 1 - message_digest = [] - message_digest << Digest::MD5.hexdigest(a_1) - message_digest << nonce - message_digest << ('%08x' % @nonce_count) - message_digest << cnonce - message_digest << param['qop'] - message_digest << Digest::MD5.hexdigest(a_2) - header = [] - header << "username=\"#{user}\"" - header << "realm=\"#{param['realm']}\"" - header << "nonce=\"#{nonce}\"" - header << "uri=\"#{uri.path}\"" - header << "cnonce=\"#{cnonce}\"" - header << "nc=#{'%08x' % @nonce_count}" - header << "qop=\"#{param['qop']}\"" - header << "response=\"#{Digest::MD5.hexdigest(message_digest.join(":"))}\"" - header << "algorithm=\"MD5\"" - header << "opaque=\"#{param['opaque']}\"" if param.key?('opaque') - header.join(", ") - end - - # cf. WEBrick::HTTPAuth::DigestAuth#generate_next_nonce(aTime) - def generate_cnonce - now = "%012d" % Time.now.to_i - pk = Digest::MD5.hexdigest([now, self.__id__, Process.pid, rand(65535)].join)[0, 32] - [now + ':' + pk].pack('m*').chop - end - - def parse_challenge_param(param_str) - param = {} - param_str.scan(/\s*([^\,]+(?:\\.[^\,]*)*)/).each do |str| - key, value = str[0].scan(/\A([^=]+)=(.*)\z/)[0] - if /\A"(.*)"\z/ =~ value - value = $1.gsub(/\\(.)/, '\1') - end - param[key] = value - end - param - end - end - - - # Authentication filter for handling Negotiate/NTLM negotiation. - # Used in WWWAuth and ProxyAuth. - # - # NegotiateAuth depends on 'ruby/ntlm' module. - class NegotiateAuth - # Authentication scheme. - attr_reader :scheme - # NTLM opt for ruby/ntlm. {:ntlmv2 => true} by default. - attr_reader :ntlm_opt - - # Creates new NegotiateAuth filter. - def initialize - @auth = {} - @auth_default = nil - @challenge = {} - @scheme = "Negotiate" - @ntlm_opt = { - :ntlmv2 => true - } - end - - # Resets challenge state. Do not send '*Authorization' header until the - # server sends '*Authentication' again. - def reset_challenge - @challenge.clear - end - - # Set authentication credential. - # uri == nil for generic purpose (allow to use user/password for any URL). - def set(uri, user, passwd) - if uri - uri = Util.uri_dirname(uri) - @auth[uri] = [user, passwd] - else - @auth_default = [user, passwd] - end - end - - # Response handler: returns credential. - # See ruby/ntlm for negotiation state transition. - def get(req) - return nil unless NTLMEnabled - target_uri = req.header.request_uri - domain_uri, param = @challenge.find { |uri, v| - Util.uri_part_of(target_uri, uri) - } - return nil unless param - user, passwd = Util.hash_find_value(@auth) { |uri, auth_data| - Util.uri_part_of(target_uri, uri) - } - unless user - user, passwd = @auth_default - end - return nil unless user - state = param[:state] - authphrase = param[:authphrase] - case state - when :init - t1 = Net::NTLM::Message::Type1.new - return t1.encode64 - when :response - t2 = Net::NTLM::Message.decode64(authphrase) - t3 = t2.response({:user => user, :password => passwd}, @ntlm_opt.dup) - @challenge.delete(domain_uri) - return t3.encode64 - end - nil - end - - # Challenge handler: remember URL and challenge token for response. - def challenge(uri, param_str) - return false unless NTLMEnabled - if param_str.nil? or @challenge[uri].nil? - c = @challenge[uri] = {} - c[:state] = :init - c[:authphrase] = "" - else - c = @challenge[uri] - c[:state] = :response - c[:authphrase] = param_str - end - true - end - end - - - # Authentication filter for handling Negotiate/NTLM negotiation. - # Used in ProxyAuth. - # - # SSPINegotiateAuth depends on 'win32/sspi' module. - class SSPINegotiateAuth - # Authentication scheme. - attr_reader :scheme - - # Creates new SSPINegotiateAuth filter. - def initialize - @challenge = {} - @scheme = "Negotiate" - end - - # Resets challenge state. Do not send '*Authorization' header until the - # server sends '*Authentication' again. - def reset_challenge - @challenge.clear - end - - # Set authentication credential. - # NOT SUPPORTED: username and necessary data is retrieved by win32/sspi. - # See win32/sspi for more details. - def set(uri, user, passwd) - # not supported - end - - # Response handler: returns credential. - # See win32/sspi for negotiation state transition. - def get(req) - return nil unless SSPIEnabled - target_uri = req.header.request_uri - domain_uri, param = @challenge.find { |uri, v| - Util.uri_part_of(target_uri, uri) - } - return nil unless param - state = param[:state] - authenticator = param[:authenticator] - authphrase = param[:authphrase] - case state - when :init - authenticator = param[:authenticator] = Win32::SSPI::NegotiateAuth.new - return authenticator.get_initial_token(@scheme) - when :response - @challenge.delete(domain_uri) - return authenticator.complete_authentication(authphrase) - end - nil - end - - # Challenge handler: remember URL and challenge token for response. - def challenge(uri, param_str) - return false unless SSPIEnabled - if param_str.nil? or @challenge[uri].nil? - c = @challenge[uri] = {} - c[:state] = :init - c[:authenticator] = nil - c[:authphrase] = "" - else - c = @challenge[uri] - c[:state] = :response - c[:authphrase] = param_str - end - true - end - end - - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/cacert.p7s b/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/cacert.p7s deleted file mode 100644 index 6a120d5f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/cacert.p7s +++ /dev/null @@ -1,1579 +0,0 @@ -MIME-Version: 1.0 -Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="----6E1446C08659E2DBCE5A94E3E5BD325D" - -This is an S/MIME signed message - -------6E1446C08659E2DBCE5A94E3E5BD325D ------BEGIN CERTIFICATE----- -MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw -MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML -QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD -VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA -A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul -CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n -tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl -dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch -PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC -+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O -BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl -MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk -ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB -IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X -7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz -43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY -eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl -pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA -WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs -IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 -MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux -FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h -bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v -dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt -H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 -uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX -mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX -a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN -E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 -WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD -VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 -Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU -cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx -IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN -AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH -YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC -Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX -c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a -mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1 -MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK -EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh -BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq -xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G -87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i -2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U -WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1 -0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G -A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr -pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL -ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm -aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv -hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm -hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X -dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3 -P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y -iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no -xqE= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP -bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2 -MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft -ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lk -hsmj76CGv2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym -1BW32J/X3HGrfpq/m44zDyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsW -OqMFf6Dch9Wc/HKpoH145LcxVR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb -2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQko -O3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAU -AK3Zo/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB -BQUAA4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF -Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAb -LjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTIdGcL+oir -oQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43gKd8hdIaC2y+C -MMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds -sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP -bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2 -MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft -ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC -206B89enfHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFci -KtZHgVdEglZTvYYUAQv8f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2 -JxhP7JsowtS013wMPgwr38oE18aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9 -BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7e -Xz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8B -PeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67 -Xnfn6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEq -Z8A9W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ -o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3 -+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124HhnAgMBAAGj -YzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3OpaaEg5+31IqEj -FNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE -AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmn -xPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2 -LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzccc -obGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8 -CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMe -IjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMA -DjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2F -AjgQ5ANh1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUX -Om/9riW99XJZZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPb -AZO1XB4Y3WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQl -Zvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw -RY8mkaKO/qk= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDpjCCAo6gAwIBAgIEAgAAvzANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJJ -RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MS8wLQYD -VQQDEyZCYWx0aW1vcmUgQ3liZXJUcnVzdCBDb2RlIFNpZ25pbmcgUm9vdDAeFw0w -MDA1MTcxNDAxMDBaFw0yNTA1MTcyMzU5MDBaMGcxCzAJBgNVBAYTAklFMRIwEAYD -VQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxLzAtBgNVBAMTJkJh -bHRpbW9yZSBDeWJlclRydXN0IENvZGUgU2lnbmluZyBSb290MIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyHGaGBKOetv5mvxBr9jy9AmOrT/+Zzc82skm -ULGxPsvoTnMA8rLc88VG+wnvGJbOp+CchF0gDnqgqjaL+ii2eC6z7OhH8wTwkCO0 -6q/lU7gF90ddK4bxp6TGOzW20g1SQdf0knXhogpQVoe+lwt7M4UQuSgY7jPqSBHX -W5FHdiLU7s9d56hOHJ2Wkd2cvXQJqHJhqrAhOvE9LANWCdLB3MO1x1Q3q+YmorJG -cXPKEYjuvOdk99ARGnNAWshJLA+375B/aIAEOAsbDzvU9aCzwo7hNLSAmW2edtSS -KUCxldI3pGcSf+Biu641xZk2gkS45ngYM2Fxk1stjZ94lYLrbQIDAQABo1owWDAT -BgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUyEE0XBUVBOVA8tGrmm8kknqH -QlowEgYDVR0TAQH/BAgwBgEB/wIBAzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcN -AQEFBQADggEBAFJ0qpVLIozHPZak/l36L7W86/AL6VY4HdFtDaG8aIvwxYClJDT9 -8pYYEYahNvU351RA1WQfw19wQmstOceeUgXO52py0o1yP0dQg6vHjSXJsOOnUxaV -pmpT6hidj3ipd3ca+bSXR1mIJyi1yuEu1z4Oog24IkQD49FjsEE6ofWkLfd2HgRU -mXgyQNcrfE26ppyweW4Hvozs7tc4aVvBDFZon/7r0eHIiPnyzX++hbREZwBQPvQm -A2Tqd33oXj4cN0fI1uqk8zY8l8I5cgWUGSXD1zdBD8Efh4r9qr7psWRX5NuSoc/h -Seg7H5ETWsOP2SVYSYBHD8YDrqzjv7fAqio= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ -RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD -VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX -DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y -ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy -VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr -mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr -IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK -mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu -XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy -dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye -jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 -BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 -DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 -9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx -jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 -Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz -ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS -R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xKTAnBgNVBAMTIENoYW1iZXJz -IG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEyMjk1MFoXDTM4MDcz -MTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBj -dXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIw -EAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEp -MCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW9 -28sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKAXuFixrYp4YFs8r/lfTJq -VKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorjh40G072Q -DuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR -5gN/ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfL -ZEFHcpOrUMPrCXZkNNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05a -Sd+pZgvMPMZ4fKecHePOjlO+Bd5gD2vlGts/4+EhySnB8esHnFIbAURRPHsl18Tl -UlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331lubKgdaX8ZSD6e2wsWsSaR6s -+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ0wlf2eOKNcx5 -Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj -ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAx -hduub+84Mxh2EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNV -HQ4EFgQU+SSsD7K1+HnA+mCIG8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1 -+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpN -YWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29t -L2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVy -ZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAt -IDIwMDiCCQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRV -HSAAMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20w -DQYJKoZIhvcNAQEFBQADggIBAJASryI1wqM58C7e6bXpeHxIvj99RZJe6dqxGfwW -PJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH3qLPaYRgM+gQDROpI9CF -5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbURWpGqOt1 -glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaH -FoI6M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2 -pSB7+R5KBWIBpih1YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MD -xvbxrN8y8NmBGuScvfaAFPDRLLmF9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QG -tjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcKzBIKinmwPQN/aUv0NCB9szTq -jktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvGnrDQWzilm1De -fhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg -OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZ -d0jQ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEn -MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL -ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMg -b2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAxNjEzNDNaFw0zNzA5MzAxNjEzNDRa -MH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZpcm1hIFNBIENJRiBB -ODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3JnMSIw -IAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0B -AQEFAAOCAQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtb -unXF/KGIJPov7coISjlUxFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0d -BmpAPrMMhe5cG3nCYsS4No41XQEMIwRHNaqbYE6gZj3LJgqcQKH0XZi/caulAGgq -7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jWDA+wWFjbw2Y3npuRVDM3 -0pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFVd9oKDMyX -roDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIG -A1UdEwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5j -aGFtYmVyc2lnbi5vcmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p -26EpW1eLTXYGduHRooowDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIA -BzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hhbWJlcnNpZ24ub3JnMCcGA1Ud -EgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYDVR0gBFEwTzBN -BgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz -aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEB -AAxBl8IahsAifJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZd -p0AJPaxJRUXcLo0waLIJuvvDL8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi -1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wNUPf6s+xCX6ndbcj0dc97wXImsQEc -XCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/nADydb47kMgkdTXg0 -eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1erfu -tGWaIZDgqtCYvDi1czyL+Nw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD -aGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMxNDBaFw0zODA3MzEx -MjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3Vy -cmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAG -A1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAl -BgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZI -hvcNAQEBBQADggIPADCCAgoCggIBAMDfVtPkOpt2RbQT2//BthmLN0EYlVJH6xed -KYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXfXjaOcNFccUMd2drvXNL7 -G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0ZJJ0YPP2 -zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4 -ddPB/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyG -HoiMvvKRhI9lNNgATH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2 -Id3UwD2ln58fQ1DJu7xsepeY7s2MH/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3V -yJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfeOx2YItaswTXbo6Al/3K1dh3e -beksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSFHTynyQbehP9r -6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh -wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsog -zCtLkykPAgMBAAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQW -BBS5CcqcHtvTbDprru1U8VuTBjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDpr -ru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UEBhMCRVUxQzBBBgNVBAcTOk1hZHJp -ZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJmaXJtYS5jb20vYWRk -cmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJmaXJt -YSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiC -CQDJzdPp1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCow -KAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZI -hvcNAQEFBQADggIBAICIf3DekijZBZRG/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZ -UohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6ReAJ3spED8IXDneRRXoz -X1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/sdZ7LoR/x -fxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVz -a2Mg9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yyd -Yhz2rXzdpjEetrHHfoUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMd -SqlapskD7+3056huirRXhOukP9DuqqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9O -AP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETrP3iZ8ntxPjzxmKfFGBI/5rso -M0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVqc5iJWzouE4ge -v8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z -09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTAeFw0wMjA2MTExMDQ2MzlaFw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6xwS7TT3zNJc4YPk/E -jG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdLkKWo -ePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GI -ULdtlkIJ89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapu -Ob7kky/ZR6By6/qmW6/KUz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUg -AKpoC6EahQGcxEZjgoi2IrHu/qpGWX7PNSzVttpd90gzFFS269lvzs2I1qsb2pY7 -HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA -uI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+GXYkHAQa -TOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTg -xSvgGrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1q -CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x -O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs -6GAqm4VKQPNriiTsBhYscw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM -MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D -ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU -cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 -WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg -Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw -IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH -UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM -TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU -BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM -kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x -AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV -HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y -sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL -I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 -J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY -VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI -03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb -MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow -GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj -YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL -MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE -BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM -GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua -BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe -3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 -YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR -rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm -ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU -oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF -MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v -QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t -b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF -AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q -GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz -Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 -G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi -l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 -smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc -MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj -IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB -IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE -RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl -U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290 -IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU -ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC -QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr -rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S -NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc -QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH -txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP -BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp -tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa -IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl -6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+ -xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU -Cm26OWMohpLzGITY+9HPBVZkVw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv -b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl -cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c -JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP -mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ -wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 -VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ -AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB -AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW -BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun -pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC -dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf -fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm -NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx -H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe -+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD -QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB -CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 -nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt -43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P -T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 -gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO -BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR -TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw -DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr -hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg -06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF -PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls -YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk -CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j -ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL -MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 -LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug -RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm -+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW -PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM -xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB -Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 -hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg -EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA -FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec -nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z -eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF -hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 -Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe -vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep -+OkuE6N36B9K ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML -RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 -IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0xOTEy -MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 -LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp -YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG -A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq -K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe -sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX -MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT -XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ -HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH -4QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGA -vtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJFrlwMB0G -CSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEA -WUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo -oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQ -h7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18 -f3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfN -B/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVy -vUxFnmG6v4SBkgPR0ml8xQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIE7TCCBFagAwIBAgIEOAOR7jANBgkqhkiG9w0BAQQFADCByTELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MUgwRgYDVQQLFD93d3cuZW50cnVzdC5u -ZXQvQ2xpZW50X0NBX0luZm8vQ1BTIGluY29ycC4gYnkgcmVmLiBsaW1pdHMgbGlh -Yi4xJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV -BAMTKkVudHJ1c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe -Fw05OTEwMTIxOTI0MzBaFw0xOTEwMTIxOTU0MzBaMIHJMQswCQYDVQQGEwJVUzEU -MBIGA1UEChMLRW50cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9D -bGllbnRfQ0FfSW5mby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjEl -MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMq -RW50cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0G -CSqGSIb3DQEBAQUAA4GLADCBhwKBgQDIOpleMRffrCdvkHvkGf9FozTC28GoT/Bo -6oT9n3V5z8GKUZSvx1cDR2SerYIbWtp/N3hHuzeYEpbOxhN979IMMFGpOZ5V+Pux -5zDeg7K6PvHViTs7hbqqdCz+PzFur5GVbgbUB01LLFZHGARS2g4Qk79jkJvh34zm -AqTmT173iwIBA6OCAeAwggHcMBEGCWCGSAGG+EIBAQQEAwIABzCCASIGA1UdHwSC -ARkwggEVMIHkoIHhoIHepIHbMIHYMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50 -cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9DbGllbnRfQ0FfSW5m -by9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjElMCMGA1UECxMcKGMp -IDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQg -Q2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCyg -KqAohiZodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NSTC9DbGllbnQxLmNybDArBgNV -HRAEJDAigA8xOTk5MTAxMjE5MjQzMFqBDzIwMTkxMDEyMTkyNDMwWjALBgNVHQ8E -BAMCAQYwHwYDVR0jBBgwFoAUxPucKXuXzUyW/O5bs8qZdIuV6kwwHQYDVR0OBBYE -FMT7nCl7l81MlvzuW7PKmXSLlepMMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA -BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEEBQADgYEAP66K8ddmAwWePvrqHEa7 -pFuPeJoSSJn59DXeDDYHAmsQOokUgZwxpnyyQbJq5wcBoUv5nyU7lsqZwz6hURzz -wy5E97BnRqqS5TvaHBkUODDV4qIxJS7x7EU47fgGWANzYrAQMY9Av2TgXD7FTx/a -EkP/TOYGJqibGapEPHayXOw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEgzCCA+ygAwIBAgIEOJ725DANBgkqhkiG9w0BAQQFADCBtDEUMBIGA1UEChML -RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9HQ0NBX0NQUyBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAyMDAw -IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENsaWVu -dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMDAyMDcxNjE2NDBaFw0yMDAy -MDcxNjQ2NDBaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 -LmVudHJ1c3QubmV0L0dDQ0FfQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp -YWIuKTElMCMGA1UECxMcKGMpIDIwMDAgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG -A1UEAxMqRW50cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCTdLS25MVL1qFof2LV7PdRV7Ny -Spj10InJrWPNTTVRaoTUrcloeW+46xHbh65cJFET8VQlhK8pK5/jgOLZy93GRUk0 -iJBeAZfv6lOm3fzB3ksqJeTpNfpVBQbliXrqpBFXO/x8PTbNZzVtpKklWb1m9fkn -5JVn1j+SgF7yNH0rhQIDAQABo4IBnjCCAZowEQYJYIZIAYb4QgEBBAQDAgAHMIHd -BgNVHR8EgdUwgdIwgc+ggcyggcmkgcYwgcMxFDASBgNVBAoTC0VudHJ1c3QubmV0 -MUAwPgYDVQQLFDd3d3cuZW50cnVzdC5uZXQvR0NDQV9DUFMgaW5jb3JwLiBieSBy -ZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMjAwMCBFbnRydXN0Lm5l -dCBMaW1pdGVkMTMwMQYDVQQDEypFbnRydXN0Lm5ldCBDbGllbnQgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMjAwMDAy -MDcxNjE2NDBagQ8yMDIwMDIwNzE2NDY0MFowCwYDVR0PBAQDAgEGMB8GA1UdIwQY -MBaAFISLdP3FjcD/J20gN0V8/i3OutN9MB0GA1UdDgQWBBSEi3T9xY3A/ydtIDdF -fP4tzrrTfTAMBgNVHRMEBTADAQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4w -AwIEkDANBgkqhkiG9w0BAQQFAAOBgQBObzWAO9GK9Q6nIMstZVXQkvTnhLUGJoMS -hAusO7JE7r3PQNsgDrpuFOow4DtifH+La3xKp9U1PL6oXOpLu5OOgGarDyn9TS2/ -GpsKkMWr2tGzhtQvJFJcem3G8v7lTRowjJDyutdKPkN+1MhQGof4T4HHdguEOnKd -zmVml64mXg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIElTCCA/6gAwIBAgIEOJsRPDANBgkqhkiG9w0BAQQFADCBujEUMBIGA1UEChML -RW50cnVzdC5uZXQxPzA9BgNVBAsUNnd3dy5lbnRydXN0Lm5ldC9TU0xfQ1BTIGlu -Y29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDIwMDAg -RW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJl -IFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMDAyMDQxNzIwMDBa -Fw0yMDAyMDQxNzUwMDBaMIG6MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDE/MD0GA1UE -CxQ2d3d3LmVudHJ1c3QubmV0L1NTTF9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p -dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMjAwMCBFbnRydXN0Lm5ldCBMaW1pdGVk -MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp -b24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHwV9OcfHO -8GCGD9JYf9Mzly0XonUwtZZkJi9ow0SrqHXmAGc0V55lxyKbc+bT3QgON1WqJUaB -bL3+qPZ1V1eMkGxKwz6LS0MKyRFWmponIpnPVZ5h2QLifLZ8OAfc439PmrkDQYC2 -dWcTC5/oVzbIXQA23mYU2m52H083jIITiQIDAQABo4IBpDCCAaAwEQYJYIZIAYb4 -QgEBBAQDAgAHMIHjBgNVHR8EgdswgdgwgdWggdKggc+kgcwwgckxFDASBgNVBAoT -C0VudHJ1c3QubmV0MT8wPQYDVQQLFDZ3d3cuZW50cnVzdC5uZXQvU1NMX0NQUyBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAyMDAw -IEVudHJ1c3QubmV0IExpbWl0ZWQxOjA4BgNVBAMTMUVudHJ1c3QubmV0IFNlY3Vy -ZSBTZXJ2ZXIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxDTALBgNVBAMTBENSTDEw -KwYDVR0QBCQwIoAPMjAwMDAyMDQxNzIwMDBagQ8yMDIwMDIwNDE3NTAwMFowCwYD -VR0PBAQDAgEGMB8GA1UdIwQYMBaAFMtswGvjuz7L/CKc/vuLkpyw8m4iMB0GA1Ud -DgQWBBTLbMBr47s+y/winP77i5KcsPJuIjAMBgNVHRMEBTADAQH/MB0GCSqGSIb2 -fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQQFAAOBgQBi24GRzsia -d0Iv7L0no1MPUBvqTpLwqa+poLpIYcvvyQbvH9X07t9WLebKahlzqlO+krNQAraF -JnJj2HVQYnUUt7NQGj/KEQALhUVpbbalrlHhStyCP2yMNLJ3a9kC9n8O6mUE8c1U -yrrJzOCE98g+EZfTYAkYvAX/bIkz8OwVDw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u -ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc -KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u -ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 -MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE -ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j -b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF -bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg -U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA -A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ -I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 -wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC -AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb -oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 -BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p -dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk -MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp -b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu -dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 -MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi -E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa -MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI -hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN -95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd -2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV -UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy -dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 -MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx -dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f -BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A -cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC -AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ -MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm -aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw -ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj -IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF -MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA -A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y -7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh -1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT -ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw -MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j -LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ -KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo -RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu -WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw -Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD -AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK -eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM -zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ -WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN -/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV -UzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2Vj -dXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0 -NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXggU2VjdXJlMSYwJAYD -VQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn2Z0G -vxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/ -BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0C -AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEX -MBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJl -IGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkw -NjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBq -y/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQF -MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA -A4GBAAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy -0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1 -E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT -ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw -MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj -dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l -c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC -UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc -58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ -o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH -MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr -aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA -A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA -Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv -8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT -MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i -YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg -R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 -9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq -fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv -iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU -1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ -bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW -MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA -ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l -uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn -Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS -tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF -PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un -hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV -5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw -MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT -aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ -jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp -xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp -1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG -snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ -U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 -9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B -AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz -yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE -38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP -AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad -DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME -HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G -A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp -Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 -MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG -A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL -v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 -eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq -tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd -C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa -zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB -mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH -V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n -bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG -3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs -J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO -291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS -ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd -AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 -TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh -MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE -YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 -MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo -ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg -MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN -ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA -PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w -wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi -EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY -avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ -YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE -sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h -/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 -IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD -ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy -OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P -TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ -HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER -dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf -ReYNnyicsbkqWletNw+vHX/bvZ8= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDtjCCAp6gAwIBAgICAbYwDQYJKoZIhvcNAQEFBQAwcDELMAkGA1UEBhMCVVMx -GDAWBgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1 -c3QgU29sdXRpb25zLCBJbmMuMR4wHAYDVQQDExVHVEUgQ3liZXJUcnVzdCBSb290 -IDUwHhcNOTgwODE0MTQ1MDAwWhcNMTMwODE0MjM1OTAwWjBwMQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU -cnVzdCBTb2x1dGlvbnMsIEluYy4xHjAcBgNVBAMTFUdURSBDeWJlclRydXN0IFJv -b3QgNTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALwSbj+KfHqXAewe -uzlaAvR4RKJIG457SVJ6uHtHs6+Um2+7lvoramVcuByUc76/iQoigO5X/IwFu3Cf -lzkE2qOHXKjlyq/AM5rVN1xLrOSA0KYjYPv9ci6UncfOwgQy73hgXe2thw9FZR48 -mgqavl0dmezn8tHGehfZrZtUln/EfGC/haoVNR1A2hG87FQhKC0joajwzy3N3fx+ -D17hZQdWywe00lboXjHMGGPEhtIthc+Tkqtt/mg5+95zvYb45EZ66p8My/QZ/mO8 -0Sx7iDM29uThnAxTgWAc2i6rlqkWiBNQmbK9Vd8VMH7o5Zj7cH5stQf8/Ea30O03 -ln4y/iECAwEAAaNaMFgwEgYDVR0TAQH/BAgwBgEB/wIBBTAOBgNVHQ8BAf8EBAMC -AQYwFwYDVR0gBBAwDjAMBgoqhkiG+GMBAgEDMBkGA1UdDgQSBBB2CkkhOEyf3vjE -ScdxcZGdMA0GCSqGSIb3DQEBBQUAA4IBAQBBOtQYW9q43iEc4Y4J5fFoNP/elvQH -9ac886xKsZv6kvqb7eYyIapKdsXcTzjl39WG5NXIdn2Y17HNj021kSNsi4rr6nzv -FJTExvAfSi0ycWMrY5EmAgm2gB3t4sy4f9uHY8jh0GwmsTUdQGYQG82VVBgzYewT -T9oT95mvPtDPjqZyorPDBZrJJ32SzH5SjbOrcG2eiZ9N6xp1wpiq1QIW1wyKvyXk -6y28mOlYOBl8uTf+2+KZCHMGx5eDan0QAS8yuRcFSmXmL86+XlOmgumaUwqEdC2D -ysiUFnZflGEo8IWnObvXi9moshMdVAk0JH0ggX1mfqKQdFwQxr3sqxvC ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD -VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv -bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv -b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU -cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds -b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH -iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS -r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 -04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r -GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 -3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P -lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDEl -MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMh -U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIz -MloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09N -IFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNlY3VyaXR5IENvbW11 -bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSE -RMqm4miO/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gO -zXppFodEtZDkBp2uoQSXWHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5 -bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4zZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDF -MxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4bepJz11sS6/vmsJWXMY1 -VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK9U2vP9eC -OKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G -CSqGSIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HW -tWS3irO4G8za+6xmiEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZ -q51ihPZRwSzJIxXYKLerJRO1RuGGAv8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDb -EJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnWmHyojf6GPgcWkuF75x3sM3Z+ -Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEWT1MKZPlO9L9O -VL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY -MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t -dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 -WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD -VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 -9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ -DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 -Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N -QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ -xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G -A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG -kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr -Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 -Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU -JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot -RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy -NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y -LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ -TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y -TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 -LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW -I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw -nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP -MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAx -MDQwNjEwNDkxM1oXDTIxMDQwNjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNV -BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMSBDQTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H887dF+2rDNbS82rDTG -29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9EJUk -oVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk -3w0LBUXl0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBL -qdReLjVQCfOAl/QMF6452F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIIN -nvmLVz5MxxftLItyM19yejhW1ebZrgUaHXVFsculJRwSVzb9IjcCAwEAAaMzMDEw -DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZTiFIwCwYDVR0PBAQDAgEG -MA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE928Jj2VuX -ZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0H -DjxVyhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VO -TzF2nBBhjrZTOqMRvq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2Uv -kVrCqIexVmiUefkl98HVrhq4uz2PqYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4w -zMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9ZIRlXvVWa ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP -MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAx -MDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNV -BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3/Ei9vX+ALTU74W+o -Z6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybTdXnt -5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s -3TmVToMGf+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2Ej -vOr7nQKV0ba5cTppCD8PtOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu -8nYybieDwnPz3BjotJPqdURrBGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEw -DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEG -MA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zil -zqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/ -3DEIcbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvD -FNr450kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6 -Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2 -ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl -MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp -U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw -NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE -ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp -ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 -DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf -8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN -+lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 -X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa -K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA -1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G -A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR -zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 -YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD -bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w -DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 -L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D -eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl -xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp -VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY -WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNV -BAYTAkNIMRUwEwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2ln -biBHb2xkIENBIC0gRzIwHhcNMDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBF -MQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMR8wHQYDVQQDExZT -d2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC -CgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUqt2/8 -76LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+ -bbqBHH5CjCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c -6bM8K8vzARO/Ws/BtQpgvd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqE -emA8atufK+ze3gE/bk3lUIbLtK/tREDFylqM2tIrfKjuvqblCqoOpd8FUrdVxyJd -MmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvRAiTysybUa9oEVeXBCsdt -MDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuendjIj3o02y -MszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69y -FGkOpeUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPi -aG59je883WX0XaxR7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxM -gI93e2CaHt+28kgeDrpOVG2Y4OGiGqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCB -qTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUWyV7 -lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64OfPAeGZe6Drn -8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov -L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe6 -45R88a7A3hfm5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczO -UYrHUDFu4Up+GC9pWbY9ZIEr44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5 -O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOfMke6UiI0HTJ6CVanfCU2qT1L2sCC -bwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6mGu6uLftIdxf+u+yv -GPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxpmo/a -77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCC -hdiDyyJkvC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid3 -92qgQmwLOM7XdVAyksLfKzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEpp -Ld6leNcG2mqeSz53OiATIgHQv2ieY2BrNU0LbbqhPcCT4H8js1WtciVORvnSFu+w -ZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6LqjviOvrv1vA+ACOzB2+htt -Qc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE -BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWdu -IFBsYXRpbnVtIENBIC0gRzIwHhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAw -WjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMSMwIQYDVQQD -ExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu669y -IIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2Htn -IuJpX+UFeNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+ -6ixuEFGSzH7VozPY1kneWCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5ob -jM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIoj5+saCB9bzuohTEJfwvH6GXp43gOCWcw -izSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/68++QHkwFix7qepF6w9fl -+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34TaNhxKFrY -zt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaP -pZjydomyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtF -KwH3HBqi7Ri6Cr2D+m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuW -ae5ogObnmLo2t/5u7Su9IPhlGdpVCX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMB -AAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O -BBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCvzAeHFUdvOMW0 -ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW -IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUA -A4ICAQAIhab1Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0 -uMoI3LQwnkAHFmtllXcBrqS3NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+ -FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4U99REJNi54Av4tHgvI42Rncz7Lj7 -jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8KV2LwUvJ4ooTHbG/ -u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl9x8D -YSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1 -puEa+S1BaYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXa -icYwu+uPyyIIoK6q8QNsOktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbG -DI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSYMdp08YSTcU1f+2BY0fvEwW2JorsgH51x -kcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAciIfNAChs0B0QTwoRqjt8Z -Wr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDITCCAoqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFBlcnNvbmFsIEJhc2lj -IENBMSgwJgYJKoZIhvcNAQkBFhlwZXJzb25hbC1iYXNpY0B0aGF3dGUuY29tMB4X -DTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgcsxCzAJBgNVBAYTAlpBMRUw -EwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UE -ChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2Vy -dmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQZXJzb25hbCBCYXNpYyBD -QTEoMCYGCSqGSIb3DQEJARYZcGVyc29uYWwtYmFzaWNAdGhhd3RlLmNvbTCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLyTU23AUE+CFeZIlDWmWr5vQvoPR+53 -dXLdjUmbllegeNTKP1GzaQuRdhciB5dqxFGTS+CN7zeVoQxN2jSQHReJl+A1OFdK -wPQIcOk8RHtQfmGakOMj04gRRif1CwcOu93RfyAKiLlWCy4cgNrx454p7xS9CkT7 -G1sY0b8jkyECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQF -AAOBgQAt4plrsD16iddZopQBHyvdEktTwq1/qqcAXJFAVyVKOKqEcLnZgA+le1z7 -c8a914phXAPjLSeoF+CEhULcXpvGt7Jtu3Sv5D/Lp7ew4F2+eIMllNLbgQ95B21P -9DkVWlIBe94y1k049hJcBlDfBVu9FEuh3ym6O0GN92NWod8isQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVt -YWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUu -Y29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgdExCzAJBgNVBAYT -AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEa -MBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBG -cmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhh -d3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1GnX1LCUZFtx6UfY -DFG26nKRsIRefS0Nj3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6WZBrCFG5E -rHzmj+hND3EfQDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVq -uzgkCGqYx7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zAN -BgkqhkiG9w0BAQQFAAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjP -MPuoSpaKH2JCI4wXD/S6ZJwXrEcp352YXtJsYHFcoqzceePnbgBHH7UNKOgCneSa -/RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK/qarigd1iwzdUYRr5PjRznei -gQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDKTCCApKgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBzzELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEjMCEGA1UEAxMaVGhhd3RlIFBlcnNvbmFsIFByZW1p -dW0gQ0ExKjAoBgkqhkiG9w0BCQEWG3BlcnNvbmFsLXByZW1pdW1AdGhhd3RlLmNv -bTAeFw05NjAxMDEwMDAwMDBaFw0yMDEyMzEyMzU5NTlaMIHPMQswCQYDVQQGEwJa -QTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAY -BgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9u -IFNlcnZpY2VzIERpdmlzaW9uMSMwIQYDVQQDExpUaGF3dGUgUGVyc29uYWwgUHJl -bWl1bSBDQTEqMCgGCSqGSIb3DQEJARYbcGVyc29uYWwtcHJlbWl1bUB0aGF3dGUu -Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJZtn4B0TPuYwu8KHvE0Vs -Bd/eJxZRNkERbGw77f4QfRKe5ZtCmv5gMcNmt3M6SK5O0DI3lIi1DbbZ8/JE2dWI -Et12TfIa/G8jHnrx2JhFTgcQ7xZC0EN1bUre4qrJMf8fAHB8Zs8QJQi6+u4A6UYD -ZicRFTuqW/KY3TZCstqIdQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqG -SIb3DQEBBAUAA4GBAGk2ifc0KjNyL2071CKyuG+axTZmDhs8obF1Wub9NdP4qPIH -b4Vnjt4rueIXsDqg8A6iAJrf8xQVbrvIhVqYgPn/vnQdPfP+MCXRNzRn+qVxeTBh -KXLA4CxM+1bkOqhv5TJZUtt1KFBZDPgLGeSs2a+WjS9Q2wfD6h+rM+D1KzGJ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy -dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t -MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB -MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG -A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl -cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv -bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE -VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ -ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR -uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG -9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI -hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM -pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm -MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx -MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT -DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 -dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl -cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 -DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD -gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 -yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX -L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj -EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG -7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e -QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ -qdq5snUb9kLy78fyGPmJvKP/iiMucEc= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV -BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 -Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYwMTEyMTQzODQzWhcNMjUxMjMxMjI1 -OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i -SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UEAxMc -VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jf -tMjWQ+nEdVl//OEd+DFwIxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKg -uNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2J -XjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQXa7pIXSSTYtZgo+U4+lK -8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7uSNQZu+99 -5OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1Ud -EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3 -kUrL84J6E1wIqzCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy -dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6 -Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz -JTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 -Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u -TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iS -GNn3Bzn1LL4GdXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprt -ZjluS5TmVfwLG4t3wVMTZonZKNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8 -au0WOB9/WIFaGusyiC2y8zl3gK9etmF1KdsjTYjKUCjLhdLTEKJZbtOTVAB6okaV -hgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kPJOzHdiEoZa5X6AeI -dUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfkvQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDtjCCAp6gAwIBAgIOBcAAAQACQdAGCk3OdRAwDQYJKoZIhvcNAQEFBQAwdjEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV -BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDQgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 -Q2VudGVyIENsYXNzIDQgQ0EgSUkwHhcNMDYwMzIzMTQxMDIzWhcNMjUxMjMxMjI1 -OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i -SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgNCBDQTElMCMGA1UEAxMc -VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgNCBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBALXNTJytrlG7fEjFDSmGehSt2VA9CXIgDRS2Y8b+WJ7gIV7z -jyIZ3E6RIM1viCmis8GsKnK6i1S4QF/yqvhDhsIwXMynXX/GCEnkDjkvjhjWkd0j -FnmA22xIHbzB3ygQY9GB493fL3l1oht48pQB5hBiecugfQLANIJ7x8CtHUzXapZ2 -W78mhEj9h/aECqqSB5lIPGG8ToVYx5ct/YFKocabEvVCUNFkPologiJw3fX64yhC -L04y87OjNopq1mJcrPoBbbTgci6VaLTxkwzGioLSHVPqfOA/QrcSWrjN2qUGZ8uh -d32llvCSHmcOHUJG5vnt+0dTf1cERh9GX8eu4I8CAwEAAaNCMEAwDwYDVR0TAQH/ -BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFB/quz4lGwa9pd1iBX7G -TFq/6A9DMA0GCSqGSIb3DQEBBQUAA4IBAQBYpCubTPfkpJKknGWYGWIi/HIy6QRd -xMRwLVpG3kxHiiW5ot3u6hKvSI3vK2fbO8w0mCr3CEf/Iq978fTr4jgCMxh1KBue -dmWsiANy8jhHHYz1nwqIUxAUu4DlDLNdjRfuHhkcho0UZ3iMksseIUn3f9MYv5x5 -+F0IebWqak2SNmy8eesOPXmK2PajVnBd3ttPedJ60pVchidlvqDTB4FAVd0Qy+BL -iILAkH0457+W4Ze6mqtCD9Of2J4VMxHL94J59bXAQVaS4d9VA61Iz9PyLrHHLVZM -ZHQqMc7cdalUR6SnQnIJ5+ECpkeyBM1CE+FhDOB4OiIgohxgQoaH96Xm ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV -BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1 -c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcNMDYwMzIyMTU1NDI4WhcNMjUxMjMx -MjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIg -R21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYwJAYD -VQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSR -JJZ4Hgmgm5qVSkr1YnwCqMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3T -fCZdzHd55yx4Oagmcw6iXSVphU9VDprvxrlE4Vc93x9UIuVvZaozhDrzznq+VZeu -jRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtwag+1m7Z3W0hZneTvWq3z -wZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9OgdwZu5GQ -fezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYD -VR0jBBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0G -CSqGSIb3DQEBBQUAA4IBAQAo0uCG1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X1 -7caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/CyvwbZ71q+s2IhtNerNXxTPqYn -8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3ghUJGooWMNjs -ydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT -ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/ -2TYcuiUaUj0a7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd -AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC -FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi -1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq -jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ -wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ -WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy -NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC -uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw -IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 -g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN -9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP -BSeOE6Fuwg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN -8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ -RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 -hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 -ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM -EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 -A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy -WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ -1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 -6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT -91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml -e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p -TpPDpFQUWw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB -kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw -IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG -EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD -VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu -dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN -BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6 -E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ -D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK -4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq -lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW -bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB -o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT -MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js -LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr -BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB -AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft -Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj -j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH -KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv -2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3 -mfnGV/TJVTl4uix5yaaIK/QI ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCB -rjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0BgNVBAMTLVVUTi1VU0VSRmlyc3Qt -Q2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05OTA3MDkxNzI4NTBa -Fw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAV -BgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5l -dHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UE -AxMtVVROLVVTRVJGaXJzdC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWls -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3B -YHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIxB8dOtINknS4p1aJkxIW9 -hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8om+rWV6l -L8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLm -SGHGTPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM -1tZUOt4KpLoDd7NlyP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws -6wIDAQABo4G5MIG2MAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud -DgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNVHR8EUTBPME2gS6BJhkdodHRw -Oi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGllbnRBdXRoZW50 -aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH -AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u -7mFVbwQ+zznexRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0 -xtcgBEXkzYABurorbs6q15L+5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQ -rfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarVNZ1yQAOJujEdxRBoUp7fooXFXAim -eOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZw7JHpsIyYdfHb0gk -USeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB -lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt -SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG -A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe -MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v -d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh -cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn -0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ -M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a -MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd -oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI -DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy -oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 -dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy -bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF -BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM -//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli -CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE -CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t -3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS -KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCB -lTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAbBgNVBAMTFFVUTi1VU0VSRmlyc3Qt -T2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAzNlowgZUxCzAJBgNV -BAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxHjAc -BgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3 -dy51c2VydHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCC -ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicP -HxzfOpuCaDDASmEd8S8O+r5596Uj71VRloTN2+O5bj4x2AogZ8f02b+U60cEPgLO -KqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQw5ujm9M89RKZd7G3CeBo -5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vulBe3/IW+ -pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehb -kkj7RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUC -AwEAAaOBrzCBrDALBgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E -FgQU2u1kdBScFDyr3ZmpvVsoTYs8ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDov -L2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmlyc3QtT2JqZWN0LmNybDApBgNV -HSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQwDQYJKoZIhvcN -AQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw -NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXB -mMiKVl0+7kNOPmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU -4U3GDZlDAQ0Slox4nb9QorFEqmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK5 -81OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCGhU3IfdeLA/5u1fedFqySLKAj5ZyR -Uh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy -NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY -dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 -WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS -v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v -UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu -IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC -W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICPTCCAaYCEQDNun9W8N/kvFT+IqyzcqpVMA0GCSqGSIb3DQEBAgUAMF8xCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xh -c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05 -NjAxMjkwMDAwMDBaFw0yODA4MDEyMzU5NTlaMF8xCzAJBgNVBAYTAlVTMRcwFQYD -VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJp -bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOB -jQAwgYkCgYEA5Rm/baNWYS2ZSHH2Z965jeu3noaACpEO+jglr0aIguVzqKCbJF0N -H8xlbgyw0FaEGIeaBpsQoXPftFg5a27B9hXVqKg/qhIGjTGsf7A01480Z4gJzRQR -4k5FVmkfeAKA2txHkSm7NsljXMXg1y2He6G3MrB7MLoqLzGq7qNn2tsCAwEAATAN -BgkqhkiG9w0BAQIFAAOBgQBMP7iLxmjf7kMzDl3ppssHhE16M/+SG/Q2rdiVIjZo -EWx8QszznC7EBz8UsA9P/5CSdvnivErpj82ggAr3xSnxgiJduLHdgSOjeyUVRjB5 -FvjqBUuUfx3CHMjjt/QQQDwTw18fU+hI5Ia0e6E1sHslurjTjqs/OJ0ANACY89Fx -lA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgdk4xWArzZbxpvUjZudVYK -VdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIqWpDBucSm -Fc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0J -h9ZrbWB85a7FkCMMXErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2ul -uIncrKTdcu1OofdPvAbT6shkdHvClUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68 -DzFc6PLZ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN2E1Lm0+afY8wR4 -nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/EbRrsC+MO -8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjV -ojYJrKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjb -PG7PoBMAGrgnoeS+Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP2 -6KbqxzcSXKMpHgLZ2x87tNcPVkeBFQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vr -n5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAq2aN17O6x5q25lXQBfGfMY1a -qtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/Ny9Sn2WCVhDr4 -wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3 -ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrs -pSCAaWihT37ha88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4 -E1Z5T21Q6huwtVexN2ZYI/PcD98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEC0b/EoXjaOR6+f/9YtFvgswDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAyIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQC2WoujDWojg4BrzzmH9CETMwZMJaLtVRKXxaeAufqDwSCg+i8VDXyh -YGt+eSz6Bg86rvYbb7HS/y8oUl+DfUvEerf4Zh+AVPy3wo5ZShRXRtGak75BkQO7 -FYCTXOvnzAhsPz6zSvz/S2wj1VCCJkQZjiPDceoZJEcEnnW/yKYAHwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBAIobK/o5wXTXXtgZZKJYSi034DNHD6zt96rbHuSLBlxg -J8pFUs4W7z8GZOeUaHxgMxURaa+dYo2jA1Rrpr7l7gUYYAS/QoD90KioHgE796Nc -r6Pc5iaAIzy4RHT3Cq5Ji2F4zCS/iIqnDupzGUH9TQPwiNHleI2lKk/2lw0Xd8rY ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0Ns -YXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH -MjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y -aXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAe -Fw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJVUzEX -MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGlj -IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMx -KGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s -eTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjM -HiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjw -DqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cC -AwEAATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9ji -nb3/7aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX -rXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnIn -jBJ7xUS0rg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVy -aVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24s -IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNp -Z24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJBgNV -BAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNp -Z24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIElu -Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24g -Q2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt -IEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArwoNwtUs22e5LeWU -J92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6tW8UvxDO -JxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUY -wZF7C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9o -koqQHgiBVrKtaaNS0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjN -qWm6o+sdDZykIKbBoMXRRkwXbdKsZj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/E -Srg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0JhU8wI1NQ0kdvekhktdmnLfe -xbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf0xwLRtxyID+u -7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU -sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RI -sH/7NiXaldDxJBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTP -cjnhsUPgKM+351psE2tJs//jGHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do -lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc -AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 -pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 -13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk -U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i -F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY -oJ2daZH9 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b -N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t -KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu -kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm -CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ -Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu -imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te -2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe -DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC -/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p -F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt -TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD -VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0 -MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVowXzELMAkGA1UEBhMCVVMxIDAeBgNV -BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2Vy -dmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUAA4GJ -ADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII -0haGN1XpsSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphI -uR2nKRoTLkoRWZweFdVJVCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZI -hvcNAQECBQADfgBl3X7hsuyw4jrg7HFGmhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3 -YQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2qUtN8iD3zV9/ZHuO3ABc -1/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICoTCCAgqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBizELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzAN -BgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAd -BgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwHhcNOTcwMTAxMDAwMDAwWhcN -MjAxMjMxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4g -Q2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsG -A1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1l -c3RhbXBpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANYrWHhhRYZT -6jR7UZztsOYuGA7+4F+oJ9O0yeB8WU4WDnNUYMF/9p8u6TqFJBU820cEY8OexJQa -Wt9MevPZQx08EHp5JduQ/vBR5zDWQQD9nyjfeb6Uu522FOMjhdepQeBMpHmwKxqL -8vg7ij5FrHGSALSQQZj7X+36ty6K+Ig3AgMBAAGjEzARMA8GA1UdEwEB/wQFMAMB -Af8wDQYJKoZIhvcNAQEEBQADgYEAZ9viwuaHPUCDhjc1fR/OmsMMZiCouqoEiYbC -9RAIDb/LogWK0E02PvTX72nGXuSwlG9KuefeW4i2e9vjJ+V2w/A1wcu1J5szedyQ -pgCed/r8zSeUQhac0xxo7L9c3eWpexAKMnRUEzGLhQOEkbdYATAUOK8oyvyxUBkZ -CayJSdM= ------END CERTIFICATE----- - -------6E1446C08659E2DBCE5A94E3E5BD325D -Content-Type: application/x-pkcs7-signature; name="smime.p7s" -Content-Transfer-Encoding: base64 -Content-Disposition: attachment; filename="smime.p7s" - -MIIGZAYJKoZIhvcNAQcCoIIGVTCCBlECAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3 -DQEHAaCCBAEwggP9MIIC5aADAgECAgEBMA0GCSqGSIb3DQEBDQUAMEsxCzAJBgNV -BAYTAkpQMREwDwYDVQQKDAhjdG9yLm9yZzEUMBIGA1UECwwLRGV2ZWxvcG1lbnQx -EzARBgNVBAMMCmh0dHBjbGllbnQwHhcNMDkwNTIxMTIzOTA1WhcNMzcxMjMxMjM1 -OTU5WjBLMQswCQYDVQQGEwJKUDERMA8GA1UECgwIY3Rvci5vcmcxFDASBgNVBAsM -C0RldmVsb3BtZW50MRMwEQYDVQQDDApodHRwY2xpZW50MIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEAzY+WR1Mf3vO8geg8gyPzvCc2+mohBQPsv+GXKw7R -cGyZH9dlR5RkoHXQlCoxe+JalOdT0pTrEZPHcQjjB93Z2kvAf93h3srgueBbWRju -QmVl4mFqSegbNDjRFIj1aRDRH0o4Tzzx/s6RMFp9wvxTJYVUgyFAHDZ32I2Xglzr -1CiNrIIOhJddtsQ/SfzKLsfAhTdEW5foO0yk7Hj/UrtnTTZxw4Yncn2QeB4NBJC0 -XjZxBgLuqPbrsj85CCcHvJzFMI/QTtt1dCD7OqyeCuFqg2f/4j4Kg7ucPi3i5D4H -hqAAuHg8/GxtAP0wIv5W6s0Yti/QdV35mUtuWl10L08tOwIDAQABo4HrMIHoMA8G -A1UdEwEB/wQFMAMBAf8wMQYJYIZIAYb4QgENBCQWIlJ1YnkvT3BlblNTTCBHZW5l -cmF0ZWQgQ2VydGlmaWNhdGUwHQYDVR0OBBYEFECcHpeUyg5ybsdUDD4lbFjbTk8d -MA4GA1UdDwEB/wQEAwIBBjBzBgNVHSMEbDBqgBRAnB6XlMoOcm7HVAw+JWxY205P -HaFPpE0wSzELMAkGA1UEBhMCSlAxETAPBgNVBAoMCGN0b3Iub3JnMRQwEgYDVQQL -DAtEZXZlbG9wbWVudDETMBEGA1UEAwwKaHR0cGNsaWVudIIBATANBgkqhkiG9w0B -AQ0FAAOCAQEAFUV6nJsPleqwGc6f+gMe8rTEA8wXgCnge3XIxAs5uDylpWEA1J2o -h68+UKv+Y8sNGNzL4nV8KcTqUJ+x8t1OACOKuq3ymb3Y1xzGYnyFOYx3ctYLWf55 -hZqiWpMJVEwGl7xRj16fJesWi50eWv16mvXwToCzpWsJJ+lcVmQP1YdVJanOQHeo -BO7mpwMLMIdsjTvnkx2b/WEokIPiXr2Hcnc6FEgRQ8l8ec+8znC2LILZ1wT2K3AT -/B1XMEl4gFclCb5CP4rypdxFPNlkYgGPDafjrEmBbpidw0IdT9ZZ80JjB2SeAdL9 -o3whsSOELB++JcWKxWsM3/6llkYx/rtlpjGCAiswggInAgEBMFAwSzELMAkGA1UE -BhMCSlAxETAPBgNVBAoMCGN0b3Iub3JnMRQwEgYDVQQLDAtEZXZlbG9wbWVudDET -MBEGA1UEAwwKaHR0cGNsaWVudAIBATAJBgUrDgMCGgUAoIGxMBgGCSqGSIb3DQEJ -AzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTA5MDUyMTE0NDk0NFowIwYJ -KoZIhvcNAQkEMRYEFFDQ3nAOgPYQwrUaptjAEGUfFzNdMFIGCSqGSIb3DQEJDzFF -MEMwCgYIKoZIhvcNAwcwDgYIKoZIhvcNAwICAgCAMA0GCCqGSIb3DQMCAgFAMAcG -BSsOAwIHMA0GCCqGSIb3DQMCAgEoMA0GCSqGSIb3DQEBAQUABIIBAB0oF/1XdRei -fY6DQ5APLyKh8PsiCUjulYOoGbZS9bIfz4OXHeLyenTe/tAM7uT4MaTZP3H7fmPc -1XR48FGJt8BvHSlxa/EJ4xG58sfxgkZnm6qtKaKvW+vgHR4287tlDAhJlfigkSoT -3jpb2qYADOYZ+++v0K1sigLi5y239kv46hFbHVBw34K5fhxeaPw8SNGZRdRo2Tf6 -GVI0qD/GCz/mmJ/MBdspZjNnKGI76EpcbzpoDCWGxgMMOvyKO/CWCQ9iahxQu4PN -2DvKrWXaRWbAD0KwCzYhn3dARocZp71KfxZ4uJWjFz0emcSudebdOYMnzee4br0r -V+ct53+Li7s= - -------6E1446C08659E2DBCE5A94E3E5BD325D-- - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/cacert_sha1.p7s b/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/cacert_sha1.p7s deleted file mode 100644 index 8aa65e4d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/cacert_sha1.p7s +++ /dev/null @@ -1,1579 +0,0 @@ -MIME-Version: 1.0 -Content-Type: multipart/signed; protocol="application/x-pkcs7-signature"; micalg=sha1; boundary="----16967DC47640EB3C0A89A6FE94592C26" - -This is an S/MIME signed message - -------16967DC47640EB3C0A89A6FE94592C26 ------BEGIN CERTIFICATE----- -MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMw -MTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML -QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYD -VQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUA -A4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ul -CDtbKRY654eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6n -tGO0/7Gcrjyvd7ZWxbWroulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyl -dI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1Zmne3yzxbrww2ywkEtvrNTVokMsAsJch -PXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJuiGMx1I4S+6+JNM3GOGvDC -+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8wHQYDVR0O -BBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBl -MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFk -ZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENB -IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxtZBsfzQ3duQH6lmM0MkhHma6X -7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0PhiVYrqW9yTkkz -43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY -eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJl -pz/+0WatC7xrmYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOA -WiFeIc9TVPC6b4nbqKqVz4vjccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs -IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 -MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux -FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h -bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v -dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt -H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 -uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX -mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX -a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN -E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 -WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD -VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 -Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU -cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx -IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN -AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH -YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC -Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX -c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a -mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3 -b3JrMSMwIQYDVQQDExpBZGRUcnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1 -MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcxCzAJBgNVBAYTAlNFMRQwEgYDVQQK -EwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5ldHdvcmsxIzAh -BgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwq -xBb/4Oxx64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G -87B4pfYOQnrjfxvM0PC3KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i -2O+tCBGaKZnhqkRFmhJePp1tUvznoD1oL/BLcHwTOK28FSXx1s6rosAx1i+f4P8U -WfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GRwVY18BTcZTYJbqukB8c1 -0cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HUMIHRMB0G -A1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6Fr -pGkwZzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQL -ExRBZGRUcnVzdCBUVFAgTmV0d29yazEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlm -aWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBABmrder4i2VhlRO6aQTv -hsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxGGuoYQ992zPlm -hpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X -dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3 -P6CxB9bpT9zeRXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9Y -iQBCYz95OdBEsIJuQRno3eDBiFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5no -xqE= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP -bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2 -MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft -ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lk -hsmj76CGv2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym -1BW32J/X3HGrfpq/m44zDyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsW -OqMFf6Dch9Wc/HKpoH145LcxVR5lu9RhsCFg7RAycsWSJR74kEoYeEfffjA3PlAb -2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP8c9GsEsPPt2IYriMqQko -O3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0TAQH/BAUw -AwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAU -AK3Zo/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB -BQUAA4IBAQB8itEfGDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkF -Zu90821fnZmv9ov761KyBZiibyrFVL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAb -LjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft3OJvx8Fi8eNy1gTIdGcL+oir -oQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43gKd8hdIaC2y+C -MMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds -sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTQW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBP -bmxpbmUgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2 -MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0Ft -ZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2EgT25saW5lIFJvb3Qg -Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIP -ADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC -206B89enfHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFci -KtZHgVdEglZTvYYUAQv8f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2 -JxhP7JsowtS013wMPgwr38oE18aO6lhOqKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9 -BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JNRvCAOVIyD+OEsnpD8l7e -Xz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0gBe4lL8B -PeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67 -Xnfn6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEq -Z8A9W6Wa6897GqidFEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZ -o2C7HK2JNDJiuEMhBnIMoVxtRsX6Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3 -+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnjB453cMor9H124HhnAgMBAAGj -YzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3OpaaEg5+31IqEj -FNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE -AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmn -xPBUlgtk87FYT15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2 -LHo1YGwRgJfMqZJS5ivmae2p+DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzccc -obGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXgJXUjhx5c3LqdsKyzadsXg8n33gy8 -CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//ZoyzH1kUQ7rVyZ2OuMe -IjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgOZtMA -DjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2F -AjgQ5ANh1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUX -Om/9riW99XJZZLF0KjhfGEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPb -AZO1XB4Y3WRayhgoPmMEEf0cjQAPuDffZ4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQl -Zvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuPcX/9XhmgD0uRuMRUvAaw -RY8mkaKO/qk= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDpjCCAo6gAwIBAgIEAgAAvzANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJJ -RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MS8wLQYD -VQQDEyZCYWx0aW1vcmUgQ3liZXJUcnVzdCBDb2RlIFNpZ25pbmcgUm9vdDAeFw0w -MDA1MTcxNDAxMDBaFw0yNTA1MTcyMzU5MDBaMGcxCzAJBgNVBAYTAklFMRIwEAYD -VQQKEwlCYWx0aW1vcmUxEzARBgNVBAsTCkN5YmVyVHJ1c3QxLzAtBgNVBAMTJkJh -bHRpbW9yZSBDeWJlclRydXN0IENvZGUgU2lnbmluZyBSb290MIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyHGaGBKOetv5mvxBr9jy9AmOrT/+Zzc82skm -ULGxPsvoTnMA8rLc88VG+wnvGJbOp+CchF0gDnqgqjaL+ii2eC6z7OhH8wTwkCO0 -6q/lU7gF90ddK4bxp6TGOzW20g1SQdf0knXhogpQVoe+lwt7M4UQuSgY7jPqSBHX -W5FHdiLU7s9d56hOHJ2Wkd2cvXQJqHJhqrAhOvE9LANWCdLB3MO1x1Q3q+YmorJG -cXPKEYjuvOdk99ARGnNAWshJLA+375B/aIAEOAsbDzvU9aCzwo7hNLSAmW2edtSS -KUCxldI3pGcSf+Biu641xZk2gkS45ngYM2Fxk1stjZ94lYLrbQIDAQABo1owWDAT -BgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUyEE0XBUVBOVA8tGrmm8kknqH -QlowEgYDVR0TAQH/BAgwBgEB/wIBAzAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcN -AQEFBQADggEBAFJ0qpVLIozHPZak/l36L7W86/AL6VY4HdFtDaG8aIvwxYClJDT9 -8pYYEYahNvU351RA1WQfw19wQmstOceeUgXO52py0o1yP0dQg6vHjSXJsOOnUxaV -pmpT6hidj3ipd3ca+bSXR1mIJyi1yuEu1z4Oog24IkQD49FjsEE6ofWkLfd2HgRU -mXgyQNcrfE26ppyweW4Hvozs7tc4aVvBDFZon/7r0eHIiPnyzX++hbREZwBQPvQm -A2Tqd33oXj4cN0fI1uqk8zY8l8I5cgWUGSXD1zdBD8Efh4r9qr7psWRX5NuSoc/h -Seg7H5ETWsOP2SVYSYBHD8YDrqzjv7fAqio= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ -RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD -VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX -DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y -ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy -VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr -mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr -IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK -mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu -XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy -dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye -jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1 -BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3 -DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92 -9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx -jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0 -Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz -ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS -R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xKTAnBgNVBAMTIENoYW1iZXJz -IG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEyMjk1MFoXDTM4MDcz -MTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBj -dXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIw -EAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEp -MCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0G -CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW9 -28sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKAXuFixrYp4YFs8r/lfTJq -VKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorjh40G072Q -DuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR -5gN/ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfL -ZEFHcpOrUMPrCXZkNNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05a -Sd+pZgvMPMZ4fKecHePOjlO+Bd5gD2vlGts/4+EhySnB8esHnFIbAURRPHsl18Tl -UlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331lubKgdaX8ZSD6e2wsWsSaR6s -+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ0wlf2eOKNcx5 -Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj -ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAx -hduub+84Mxh2EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNV -HQ4EFgQU+SSsD7K1+HnA+mCIG8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1 -+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpN -YWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29t -L2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVy -ZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAt -IDIwMDiCCQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRV -HSAAMCowKAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20w -DQYJKoZIhvcNAQEFBQADggIBAJASryI1wqM58C7e6bXpeHxIvj99RZJe6dqxGfwW -PJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH3qLPaYRgM+gQDROpI9CF -5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbURWpGqOt1 -glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaH -FoI6M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2 -pSB7+R5KBWIBpih1YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MD -xvbxrN8y8NmBGuScvfaAFPDRLLmF9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QG -tjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcKzBIKinmwPQN/aUv0NCB9szTq -jktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvGnrDQWzilm1De -fhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg -OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZ -d0jQ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEn -MCUGA1UEChMeQUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQL -ExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMg -b2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAxNjEzNDNaFw0zNzA5MzAxNjEzNDRa -MH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZpcm1hIFNBIENJRiBB -ODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3JnMSIw -IAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0B -AQEFAAOCAQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtb -unXF/KGIJPov7coISjlUxFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0d -BmpAPrMMhe5cG3nCYsS4No41XQEMIwRHNaqbYE6gZj3LJgqcQKH0XZi/caulAGgq -7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jWDA+wWFjbw2Y3npuRVDM3 -0pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFVd9oKDMyX -roDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIG -A1UdEwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5j -aGFtYmVyc2lnbi5vcmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p -26EpW1eLTXYGduHRooowDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIA -BzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hhbWJlcnNpZ24ub3JnMCcGA1Ud -EgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYDVR0gBFEwTzBN -BgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz -aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEB -AAxBl8IahsAifJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZd -p0AJPaxJRUXcLo0waLIJuvvDL8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi -1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wNUPf6s+xCX6ndbcj0dc97wXImsQEc -XCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/nADydb47kMgkdTXg0 -eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1erfu -tGWaIZDgqtCYvDi1czyL+Nw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYD -VQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0 -IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3 -MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD -aGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMxNDBaFw0zODA3MzEx -MjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUgY3Vy -cmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAG -A1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAl -BgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZI -hvcNAQEBBQADggIPADCCAgoCggIBAMDfVtPkOpt2RbQT2//BthmLN0EYlVJH6xed -KYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXfXjaOcNFccUMd2drvXNL7 -G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0ZJJ0YPP2 -zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4 -ddPB/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyG -HoiMvvKRhI9lNNgATH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2 -Id3UwD2ln58fQ1DJu7xsepeY7s2MH/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3V -yJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfeOx2YItaswTXbo6Al/3K1dh3e -beksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSFHTynyQbehP9r -6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh -wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsog -zCtLkykPAgMBAAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQW -BBS5CcqcHtvTbDprru1U8VuTBjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDpr -ru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UEBhMCRVUxQzBBBgNVBAcTOk1hZHJp -ZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJmaXJtYS5jb20vYWRk -cmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJmaXJt -YSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiC -CQDJzdPp1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCow -KAYIKwYBBQUHAgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZI -hvcNAQEFBQADggIBAICIf3DekijZBZRG/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZ -UohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6ReAJ3spED8IXDneRRXoz -X1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/sdZ7LoR/x -fxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVz -a2Mg9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yyd -Yhz2rXzdpjEetrHHfoUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMd -SqlapskD7+3056huirRXhOukP9DuqqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9O -AP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETrP3iZ8ntxPjzxmKfFGBI/5rso -M0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVqc5iJWzouE4ge -v8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z -09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTAeFw0wMjA2MTExMDQ2MzlaFw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBM -MRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBD -QTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6xwS7TT3zNJc4YPk/E -jG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdLkKWo -ePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GI -ULdtlkIJ89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapu -Ob7kky/ZR6By6/qmW6/KUz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUg -AKpoC6EahQGcxEZjgoi2IrHu/qpGWX7PNSzVttpd90gzFFS269lvzs2I1qsb2pY7 -HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEA -uI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+GXYkHAQa -TOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTg -xSvgGrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1q -CjqTE5s7FCMTY5w/0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5x -O/fIR/RpbxXyEV6DHpx8Uq79AtoSqFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs -6GAqm4VKQPNriiTsBhYscw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBM -MSIwIAYDVQQKExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5D -ZXJ0dW0gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBU -cnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIyMTIwNzM3WhcNMjkxMjMxMTIwNzM3 -WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBUZWNobm9sb2dpZXMg -Uy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MSIw -IAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0B -AQEFAAOCAQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rH -UV+rpDKmYYe2bg+G0jACl/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LM -TXPb865Px1bVWqeWifrzq2jUI4ZZJ88JJ7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVU -BBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4fOQtf/WsX+sWn7Et0brM -kUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0cvW0QM8x -AcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNV -HRMBAf8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNV -HQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15y -sHhE49wcrwn9I0j6vSrEuVUEtRCjjSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfL -I9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1mS1FhIrlQgnXdAIv94nYmem8 -J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5ajZt3hrvJBW8qY -VoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI -03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEb -MBkGA1UECAwSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRow -GAYDVQQKDBFDb21vZG8gQ0EgTGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmlj -YXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAwMFoXDTI4MTIzMTIzNTk1OVowezEL -MAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UE -BwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNVBAMM -GEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQua -BtDFcCLNSS1UY8y2bmhGC1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe -3M/vg4aijJRPn2jymJBGhCfHdr/jzDUsi14HZGWCwEiwqJH5YZ92IFCokcdmtet4 -YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszWY19zjNoFmag4qMsXeDZR -rOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjHYpy+g8cm -ez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQU -oBEKIz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF -MAMBAf8wewYDVR0fBHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20v -QUFBQ2VydGlmaWNhdGVTZXJ2aWNlcy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29t -b2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2VzLmNybDANBgkqhkiG9w0BAQUF -AAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm7l3sAg9g1o1Q -GE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz -Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2 -G9w84FoVxp7Z8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsi -l2D4kF501KKaU73yqWjgom7C12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3 -smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEc -MBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2Vj -IFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENB -IDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5MjM1OTAwWjBxMQswCQYDVQQGEwJE -RTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxl -U2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290 -IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEU -ha88EOQ5bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhC -QN/Po7qCWWqSG6wcmtoIKyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1Mjwr -rFDa1sPeg5TKqAyZMg4ISFZbavva4VhYAUlfckE8FQYBjl2tqriTtM2e66foai1S -NNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aKSe5TBY8ZTNXeWHmb0moc -QqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTVjlsB9WoH -txa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAP -BgNVHRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOC -AQEAlGRZrTlk5ynrE/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756Abrsp -tJh6sTtU6zkXR34ajgv8HzFZMQSyzhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpa -IzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8rZ7/gFnkm0W09juwzTkZmDLl -6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4Gdyd1Lx+4ivn+ -xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU -Cm26OWMohpLzGITY+9HPBVZkVw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBl -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv -b3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzExMTEwMDAwMDAwWjBlMQswCQYDVQQG -EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl -cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwggEi -MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7c -JpSIqvTO9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYP -mDI2dsze3Tyoou9q+yHyUmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+ -wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4 -VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpyoeb6pNnVFzF1roV9Iq4/ -AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whfGHdPAgMB -AAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQW -BBRF66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYun -pyGd823IDzANBgkqhkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRC -dWKuh+vy1dneVrOfzM4UKLkNl2BcEkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTf -fwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38FnSbNd67IJKusm7Xi+fT8r87cm -NW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i8b5QZ7dsvfPx -H2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe -+o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD -QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT -MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j -b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG -9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB -CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97 -nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt -43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P -T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4 -gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO -BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR -TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw -DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr -hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg -06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF -PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls -YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk -CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBs -MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 -d3cuZGlnaWNlcnQuY29tMSswKQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5j -ZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAwMFoXDTMxMTExMDAwMDAwMFowbDEL -MAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZMBcGA1UECxMQd3d3 -LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFuY2Ug -RVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm -+9S75S0tMqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTW -PNt0OKRKzE0lgvdKpVMSOO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEM -xChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFB -Ik5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQNAQTXKFx01p8VdteZOE3 -hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUeh10aUAsg -EsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQF -MAMBAf8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaA -FLE+w2kD+L9HAdSYJhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3Nec -nzyIZgYIVyHbIUf4KmeqvxgydkAQV8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6z -eM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFpmyPInngiK3BD41VHMWEZ71jF -hS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkKmNEVX58Svnw2 -Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe -vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep -+OkuE6N36B9K ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChML -RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5 -IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENlcnRp -ZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQxNzUwNTFaFw0xOTEy -MjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 -LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp -YWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG -A1UEAxMqRW50cnVzdC5uZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgp -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArU1LqRKGsuqjIAcVFmQq -K0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOLGp18EzoOH1u3Hs/lJBQe -sYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSrhRSGlVuX -MlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVT -XTzWnLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/ -HoZdenoVve8AjhUiVBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH -4QIDAQABo3QwcjARBglghkgBhvhCAQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGA -vtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdERgL7YibkIozH5oSQJFrlwMB0G -CSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEA -WUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo -oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQ -h7A6tcOdBTcSo8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18 -f3v/rxzP5tsHrV7bhZ3QKw0z2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfN -B/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjXOP/swNlQ8C5LWK5Gb9Auw2DaclVy -vUxFnmG6v4SBkgPR0ml8xQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIE7TCCBFagAwIBAgIEOAOR7jANBgkqhkiG9w0BAQQFADCByTELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MUgwRgYDVQQLFD93d3cuZW50cnVzdC5u -ZXQvQ2xpZW50X0NBX0luZm8vQ1BTIGluY29ycC4gYnkgcmVmLiBsaW1pdHMgbGlh -Yi4xJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV -BAMTKkVudHJ1c3QubmV0IENsaWVudCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAe -Fw05OTEwMTIxOTI0MzBaFw0xOTEwMTIxOTU0MzBaMIHJMQswCQYDVQQGEwJVUzEU -MBIGA1UEChMLRW50cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9D -bGllbnRfQ0FfSW5mby9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjEl -MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMq -RW50cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0G -CSqGSIb3DQEBAQUAA4GLADCBhwKBgQDIOpleMRffrCdvkHvkGf9FozTC28GoT/Bo -6oT9n3V5z8GKUZSvx1cDR2SerYIbWtp/N3hHuzeYEpbOxhN979IMMFGpOZ5V+Pux -5zDeg7K6PvHViTs7hbqqdCz+PzFur5GVbgbUB01LLFZHGARS2g4Qk79jkJvh34zm -AqTmT173iwIBA6OCAeAwggHcMBEGCWCGSAGG+EIBAQQEAwIABzCCASIGA1UdHwSC -ARkwggEVMIHkoIHhoIHepIHbMIHYMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50 -cnVzdC5uZXQxSDBGBgNVBAsUP3d3dy5lbnRydXN0Lm5ldC9DbGllbnRfQ0FfSW5m -by9DUFMgaW5jb3JwLiBieSByZWYuIGxpbWl0cyBsaWFiLjElMCMGA1UECxMcKGMp -IDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5uZXQg -Q2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCyg -KqAohiZodHRwOi8vd3d3LmVudHJ1c3QubmV0L0NSTC9DbGllbnQxLmNybDArBgNV -HRAEJDAigA8xOTk5MTAxMjE5MjQzMFqBDzIwMTkxMDEyMTkyNDMwWjALBgNVHQ8E -BAMCAQYwHwYDVR0jBBgwFoAUxPucKXuXzUyW/O5bs8qZdIuV6kwwHQYDVR0OBBYE -FMT7nCl7l81MlvzuW7PKmXSLlepMMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA -BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEEBQADgYEAP66K8ddmAwWePvrqHEa7 -pFuPeJoSSJn59DXeDDYHAmsQOokUgZwxpnyyQbJq5wcBoUv5nyU7lsqZwz6hURzz -wy5E97BnRqqS5TvaHBkUODDV4qIxJS7x7EU47fgGWANzYrAQMY9Av2TgXD7FTx/a -EkP/TOYGJqibGapEPHayXOw= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEgzCCA+ygAwIBAgIEOJ725DANBgkqhkiG9w0BAQQFADCBtDEUMBIGA1UEChML -RW50cnVzdC5uZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9HQ0NBX0NQUyBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAyMDAw -IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNVBAMTKkVudHJ1c3QubmV0IENsaWVu -dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMDAyMDcxNjE2NDBaFw0yMDAy -MDcxNjQ2NDBaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3d3d3 -LmVudHJ1c3QubmV0L0dDQ0FfQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxp -YWIuKTElMCMGA1UECxMcKGMpIDIwMDAgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEG -A1UEAxMqRW50cnVzdC5uZXQgQ2xpZW50IENlcnRpZmljYXRpb24gQXV0aG9yaXR5 -MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCTdLS25MVL1qFof2LV7PdRV7Ny -Spj10InJrWPNTTVRaoTUrcloeW+46xHbh65cJFET8VQlhK8pK5/jgOLZy93GRUk0 -iJBeAZfv6lOm3fzB3ksqJeTpNfpVBQbliXrqpBFXO/x8PTbNZzVtpKklWb1m9fkn -5JVn1j+SgF7yNH0rhQIDAQABo4IBnjCCAZowEQYJYIZIAYb4QgEBBAQDAgAHMIHd -BgNVHR8EgdUwgdIwgc+ggcyggcmkgcYwgcMxFDASBgNVBAoTC0VudHJ1c3QubmV0 -MUAwPgYDVQQLFDd3d3cuZW50cnVzdC5uZXQvR0NDQV9DUFMgaW5jb3JwLiBieSBy -ZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMjAwMCBFbnRydXN0Lm5l -dCBMaW1pdGVkMTMwMQYDVQQDEypFbnRydXN0Lm5ldCBDbGllbnQgQ2VydGlmaWNh -dGlvbiBBdXRob3JpdHkxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQwIoAPMjAwMDAy -MDcxNjE2NDBagQ8yMDIwMDIwNzE2NDY0MFowCwYDVR0PBAQDAgEGMB8GA1UdIwQY -MBaAFISLdP3FjcD/J20gN0V8/i3OutN9MB0GA1UdDgQWBBSEi3T9xY3A/ydtIDdF -fP4tzrrTfTAMBgNVHRMEBTADAQH/MB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4w -AwIEkDANBgkqhkiG9w0BAQQFAAOBgQBObzWAO9GK9Q6nIMstZVXQkvTnhLUGJoMS -hAusO7JE7r3PQNsgDrpuFOow4DtifH+La3xKp9U1PL6oXOpLu5OOgGarDyn9TS2/ -GpsKkMWr2tGzhtQvJFJcem3G8v7lTRowjJDyutdKPkN+1MhQGof4T4HHdguEOnKd -zmVml64mXg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIElTCCA/6gAwIBAgIEOJsRPDANBgkqhkiG9w0BAQQFADCBujEUMBIGA1UEChML -RW50cnVzdC5uZXQxPzA9BgNVBAsUNnd3dy5lbnRydXN0Lm5ldC9TU0xfQ1BTIGlu -Y29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDIwMDAg -RW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJl -IFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMDAyMDQxNzIwMDBa -Fw0yMDAyMDQxNzUwMDBaMIG6MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDE/MD0GA1UE -CxQ2d3d3LmVudHJ1c3QubmV0L1NTTF9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p -dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMjAwMCBFbnRydXN0Lm5ldCBMaW1pdGVk -MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp -b24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHwV9OcfHO -8GCGD9JYf9Mzly0XonUwtZZkJi9ow0SrqHXmAGc0V55lxyKbc+bT3QgON1WqJUaB -bL3+qPZ1V1eMkGxKwz6LS0MKyRFWmponIpnPVZ5h2QLifLZ8OAfc439PmrkDQYC2 -dWcTC5/oVzbIXQA23mYU2m52H083jIITiQIDAQABo4IBpDCCAaAwEQYJYIZIAYb4 -QgEBBAQDAgAHMIHjBgNVHR8EgdswgdgwgdWggdKggc+kgcwwgckxFDASBgNVBAoT -C0VudHJ1c3QubmV0MT8wPQYDVQQLFDZ3d3cuZW50cnVzdC5uZXQvU1NMX0NQUyBp -bmNvcnAuIGJ5IHJlZi4gKGxpbWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAyMDAw -IEVudHJ1c3QubmV0IExpbWl0ZWQxOjA4BgNVBAMTMUVudHJ1c3QubmV0IFNlY3Vy -ZSBTZXJ2ZXIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkxDTALBgNVBAMTBENSTDEw -KwYDVR0QBCQwIoAPMjAwMDAyMDQxNzIwMDBagQ8yMDIwMDIwNDE3NTAwMFowCwYD -VR0PBAQDAgEGMB8GA1UdIwQYMBaAFMtswGvjuz7L/CKc/vuLkpyw8m4iMB0GA1Ud -DgQWBBTLbMBr47s+y/winP77i5KcsPJuIjAMBgNVHRMEBTADAQH/MB0GCSqGSIb2 -fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0BAQQFAAOBgQBi24GRzsia -d0Iv7L0no1MPUBvqTpLwqa+poLpIYcvvyQbvH9X07t9WLebKahlzqlO+krNQAraF -JnJj2HVQYnUUt7NQGj/KEQALhUVpbbalrlHhStyCP2yMNLJ3a9kC9n8O6mUE8c1U -yrrJzOCE98g+EZfTYAkYvAX/bIkz8OwVDw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMC -VVMxFDASBgNVBAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5u -ZXQvQ1BTIGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMc -KGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDE6MDgGA1UEAxMxRW50cnVzdC5u -ZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05OTA1 -MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIGA1UE -ChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5j -b3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF -bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUg -U2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUA -A4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQaO2f55M28Qpku0f1BBc/ -I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5gXpa0zf3 -wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OC -AdcwggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHb -oIHYpIHVMIHSMQswCQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5 -BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1p -dHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1pdGVk -MTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRp -b24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu -dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0 -MFqBDzIwMTkwNTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8Bdi -E1U9s/8KAGv7UISX8+1i0BowHQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAa -MAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EABAwwChsEVjQuMAMCBJAwDQYJKoZI -hvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyNEwr75Ji174z4xRAN -95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9n9cd -2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV -UzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2Vy -dGlmaWNhdGUgQXV0aG9yaXR5MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1 -MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoTB0VxdWlmYXgxLTArBgNVBAsTJEVx -dWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPRfM6f -BeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+A -cJkVV5MW8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kC -AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQ -MA4GA1UEChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlm -aWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTgw -ODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvSspXXR9gj -IBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQF -MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA -A4GBAFjOKer89961zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y -7qj/WsjTVbJmcVfewCHrPSqnI0kBBIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh -1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee9570+sB3c4 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBT -ZWN1cmUgZUJ1c2luZXNzIENBLTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQw -MDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5j -LjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENBLTEwgZ8wDQYJ -KoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ1MRo -RvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBu -WqDZQu4aIZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKw -Env+j6YDAgMBAAGjZjBkMBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTAD -AQH/MB8GA1UdIwQYMBaAFEp4MlIR21kWNl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRK -eDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQFAAOBgQB1W6ibAxHm6VZM -zfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5lSE/9dR+ -WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN -/Bf+KpYrtWKmpj29f5JZzVoqgrI3eQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJV -UzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2Vj -dXJlIGVCdXNpbmVzcyBDQS0yMB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0 -NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDkVxdWlmYXggU2VjdXJlMSYwJAYD -VQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn2Z0G -vxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/ -BPO3QSQ5BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0C -AwEAAaOCAQkwggEFMHAGA1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEX -MBUGA1UEChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJl -IGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoGA1UdEAQTMBGBDzIwMTkw -NjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9euSBIplBq -y/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQF -MAMBAf8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUA -A4GBAAyGgq3oThr1jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy -0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1 -E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUmV+GRMOrN ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEc -MBoGA1UEChMTRXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBT -ZWN1cmUgR2xvYmFsIGVCdXNpbmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIw -MDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMxHDAaBgNVBAoTE0VxdWlmYXggU2Vj -dXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEdsb2JhbCBlQnVzaW5l -c3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRVPEnC -UdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc -58O/gGzNqfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/ -o5brhTMhHD4ePmBudpxnhcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAH -MA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUvqigdHJQa0S3ySPY+6j/s1dr -aGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hsMA0GCSqGSIb3DQEBBAUA -A4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okENI7SS+RkA -Z70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv -8qIYNMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVT -MRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9i -YWwgQ0EwHhcNMDIwNTIxMDQwMDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQG -EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjEbMBkGA1UEAxMSR2VvVHJ1c3Qg -R2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2swYYzD9 -9BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjoBbdq -fnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDv -iS2Aelet8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU -1XupGc1V3sjs0l44U+VcT4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+ -bw8HHa8sHo9gOeL6NlMTOdReJivbPagUvTLrGAMoUgRx5aszPeE4uwc2hGKceeoW -MPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBTA -ephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVkDBF9qn1l -uMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKIn -Z57QzxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfS -tQWVYrmm3ok9Nns4d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcF -PseKUgzbFbS9bZvlxrFUaKnjaZC2mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Un -hw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6pXE0zX5IJL4hmXXeXxx12E6nV -5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvmMw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkG -A1UEBhMCQkUxGTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jv -b3QgQ0ExGzAZBgNVBAMTEkdsb2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAw -MDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9i -YWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYDVQQDExJHbG9iYWxT -aWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDaDuaZ -jc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavp -xy0Sy6scTHAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp -1Wrjsok6Vjk4bwY8iGlbKk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdG -snUOhugZitVtbNV4FpWi6cgKOOvyJBNPc1STE4U6G7weNLWLBYy5d4ux2x8gkasJ -U26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrXgzT/LCrBbBlDSgeF59N8 -9iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8E -BTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0B -AQUFAAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOz -yj1hTdNGCbM+w6DjY1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE -38NflNUVyRRBnMRddWQVDf9VMOyGj/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymP -AbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhHhm4qxFYxldBniYUr+WymXUad -DKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveCX4XSQRjbgbME -HMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4G -A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNp -Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1 -MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMjETMBEG -A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6ErPL -v4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8 -eoLrvozps6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklq -tTleiDTsvHgMCJiEbKjNS7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzd -C9XZzPnqJworc5HGnRusyMvo4KD0L5CLTfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pa -zq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6CygPCm48CAwEAAaOBnDCB -mTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUm+IH -V2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5n -bG9iYWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG -3lm0mi3f3BmGLjANBgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4Gs -J0/WwbgcQ3izDJr86iw8bmEbTUsp9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO -291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu01yiPqFbQfXf5WRDLenVOavS -ot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG79G+dwfCMNYxd -AfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 -TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEh -MB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBE -YWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3 -MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkGA1UEBhMCVVMxITAfBgNVBAoTGFRo -ZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28gRGFkZHkgQ2xhc3Mg -MiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQADggEN -ADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCA -PVYYYwhv2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6w -wdhFJ2+qN1j3hybX2C32qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXi -EqITLdiOr18SPaAIBQi2XKVlOARFmR6jYGB0xUGlcmIbYsUfb18aQr4CUWWoriMY -avx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmYvLEHZ6IVDd2gWMZEewo+ -YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0OBBYEFNLE -sNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h -/t2oatTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5 -IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmlj -YXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD -ggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wimPQoZ+YeAEW5p5JYXMP80kWNy -OO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKtI3lpjbi2Tc7P -TMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ -HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mER -dEr/VxqHD3VILs9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5Cuf -ReYNnyicsbkqWletNw+vHX/bvZ8= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDtjCCAp6gAwIBAgICAbYwDQYJKoZIhvcNAQEFBQAwcDELMAkGA1UEBhMCVVMx -GDAWBgNVBAoTD0dURSBDb3Jwb3JhdGlvbjEnMCUGA1UECxMeR1RFIEN5YmVyVHJ1 -c3QgU29sdXRpb25zLCBJbmMuMR4wHAYDVQQDExVHVEUgQ3liZXJUcnVzdCBSb290 -IDUwHhcNOTgwODE0MTQ1MDAwWhcNMTMwODE0MjM1OTAwWjBwMQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU -cnVzdCBTb2x1dGlvbnMsIEluYy4xHjAcBgNVBAMTFUdURSBDeWJlclRydXN0IFJv -b3QgNTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALwSbj+KfHqXAewe -uzlaAvR4RKJIG457SVJ6uHtHs6+Um2+7lvoramVcuByUc76/iQoigO5X/IwFu3Cf -lzkE2qOHXKjlyq/AM5rVN1xLrOSA0KYjYPv9ci6UncfOwgQy73hgXe2thw9FZR48 -mgqavl0dmezn8tHGehfZrZtUln/EfGC/haoVNR1A2hG87FQhKC0joajwzy3N3fx+ -D17hZQdWywe00lboXjHMGGPEhtIthc+Tkqtt/mg5+95zvYb45EZ66p8My/QZ/mO8 -0Sx7iDM29uThnAxTgWAc2i6rlqkWiBNQmbK9Vd8VMH7o5Zj7cH5stQf8/Ea30O03 -ln4y/iECAwEAAaNaMFgwEgYDVR0TAQH/BAgwBgEB/wIBBTAOBgNVHQ8BAf8EBAMC -AQYwFwYDVR0gBBAwDjAMBgoqhkiG+GMBAgEDMBkGA1UdDgQSBBB2CkkhOEyf3vjE -ScdxcZGdMA0GCSqGSIb3DQEBBQUAA4IBAQBBOtQYW9q43iEc4Y4J5fFoNP/elvQH -9ac886xKsZv6kvqb7eYyIapKdsXcTzjl39WG5NXIdn2Y17HNj021kSNsi4rr6nzv -FJTExvAfSi0ycWMrY5EmAgm2gB3t4sy4f9uHY8jh0GwmsTUdQGYQG82VVBgzYewT -T9oT95mvPtDPjqZyorPDBZrJJ32SzH5SjbOrcG2eiZ9N6xp1wpiq1QIW1wyKvyXk -6y28mOlYOBl8uTf+2+KZCHMGx5eDan0QAS8yuRcFSmXmL86+XlOmgumaUwqEdC2D -ysiUFnZflGEo8IWnObvXi9moshMdVAk0JH0ggX1mfqKQdFwQxr3sqxvC ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYD -VQQKEw9HVEUgQ29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNv -bHV0aW9ucywgSW5jLjEjMCEGA1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJv -b3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEzMjM1OTAwWjB1MQswCQYDVQQGEwJV -UzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQLEx5HVEUgQ3liZXJU -cnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0IEds -b2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrH -iM3dFw4usJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTS -r41tiGeA5u2ylc9yMcqlHHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X4 -04Wqk2kmhXBIgD8SFcd5tB8FLztimQIDAQABMA0GCSqGSIb3DQEBBAUAA4GBAG3r -GwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMWM4ETCJ57NE7fQMh017l9 -3PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OFNMQkpw0P -lZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDEl -MCMGA1UEChMcU0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMh -U2VjdXJpdHkgQ29tbXVuaWNhdGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIz -MloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UEBhMCSlAxJTAjBgNVBAoTHFNFQ09N -IFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNlY3VyaXR5IENvbW11 -bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC -ggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSE -RMqm4miO/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gO -zXppFodEtZDkBp2uoQSXWHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5 -bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4zZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDF -MxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4bepJz11sS6/vmsJWXMY1 -VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK9U2vP9eC -OKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0G -CSqGSIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HW -tWS3irO4G8za+6xmiEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZ -q51ihPZRwSzJIxXYKLerJRO1RuGGAv8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDb -EJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnWmHyojf6GPgcWkuF75x3sM3Z+ -Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEWT1MKZPlO9L9O -VL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEY -MBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21t -dW5pY2F0aW9uIFJvb3RDQTEwHhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5 -WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMPU0VDT00gVHJ1c3QubmV0MScwJQYD -VQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw8yl8 -9f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJ -DKaVv0uMDPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9 -Ms+k2Y7CI9eNqPPYJayX5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/N -QV3Is00qVUarH9oe4kA92819uZKAnDfdDJZkndwi92SL32HeFZRSFaB9UslLqCHJ -xrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2JChzAgMBAAGjPzA9MB0G -A1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYwDwYDVR0T -AQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vG -kl3g0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfr -Uj94nK9NrvjVT8+amCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5 -Bw+SUEmK3TGXX8npN6o7WWWXlDLJs58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJU -JRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ6rBK+1YWc26sTfcioU+tHXot -RSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAiFL39vmwLAw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIyMjM0OFoXDTE5MDYy -NTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9Y -LqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIiGQj4/xEjm84H9b9pGib+ -TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCmDuJWBQ8Y -TfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0 -LBwGlN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLW -I8sogTLDAHkY7FkXicnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPw -nXS3qT6gpf+2SQMT2iLM7XGCK5nPOrf1LXLI ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP -MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAx -MDQwNjEwNDkxM1oXDTIxMDQwNjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNV -BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMSBDQTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H887dF+2rDNbS82rDTG -29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9EJUk -oVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk -3w0LBUXl0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBL -qdReLjVQCfOAl/QMF6452F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIIN -nvmLVz5MxxftLItyM19yejhW1ebZrgUaHXVFsculJRwSVzb9IjcCAwEAAaMzMDEw -DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZTiFIwCwYDVR0PBAQDAgEG -MA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE928Jj2VuX -ZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0H -DjxVyhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VO -TzF2nBBhjrZTOqMRvq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2Uv -kVrCqIexVmiUefkl98HVrhq4uz2PqYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4w -zMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9ZIRlXvVWa ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEP -MA0GA1UEChMGU29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAx -MDQwNjA3Mjk0MFoXDTIxMDQwNjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNV -BAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJhIENsYXNzMiBDQTCCASIwDQYJKoZI -hvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3/Ei9vX+ALTU74W+o -Z6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybTdXnt -5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s -3TmVToMGf+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2Ej -vOr7nQKV0ba5cTppCD8PtOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu -8nYybieDwnPz3BjotJPqdURrBGAgcVeHnfO+oJAjPYok4doh28MCAwEAAaMzMDEw -DwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITTXjwwCwYDVR0PBAQDAgEG -MA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt0jSv9zil -zqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/ -3DEIcbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvD -FNr450kkkdAdavphOe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6 -Tk6ezAyNlNzZRZxe7EJQY670XcSxEtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2 -ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLHllpwrN9M ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzEl -MCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMp -U3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQw -NjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBoMQswCQYDVQQGEwJVUzElMCMGA1UE -ChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZp -ZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqGSIb3 -DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf -8MOh2tTYbitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN -+lq2cwQlZut3f+dZxkqZJRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0 -X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVmepsZGD3/cVE8MC5fvj13c7JdBmzDI1aa -K4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSNF4Azbl5KXZnJHoe0nRrA -1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HFMIHCMB0G -A1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fR -zt0fhvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0 -YXJmaWVsZCBUZWNobm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBD -bGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8w -DQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGsafPzWdqbAYcaT1epoXkJKtv3 -L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLMPUxA2IGvd56D -eruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl -xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynp -VSJYACPq4xJDKVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEY -WQPJIrSPnNVeKtelttQKbfi3QBFGmh95DmK/D5fs4C8fF5Q= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UE -BhMCQ0gxFTATBgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWdu -IFBsYXRpbnVtIENBIC0gRzIwHhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAw -WjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dpc3NTaWduIEFHMSMwIQYDVQQD -ExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQAD -ggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu669y -IIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2Htn -IuJpX+UFeNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+ -6ixuEFGSzH7VozPY1kneWCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5ob -jM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIoj5+saCB9bzuohTEJfwvH6GXp43gOCWcw -izSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/68++QHkwFix7qepF6w9fl -+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34TaNhxKFrY -zt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaP -pZjydomyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtF -KwH3HBqi7Ri6Cr2D+m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuW -ae5ogObnmLo2t/5u7Su9IPhlGdpVCX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMB -AAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0O -BBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCvzAeHFUdvOMW0 -ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW -IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUA -A4ICAQAIhab1Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0 -uMoI3LQwnkAHFmtllXcBrqS3NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+ -FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4U99REJNi54Av4tHgvI42Rncz7Lj7 -jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8KV2LwUvJ4ooTHbG/ -u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl9x8D -YSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1 -puEa+S1BaYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXa -icYwu+uPyyIIoK6q8QNsOktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbG -DI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSYMdp08YSTcU1f+2BY0fvEwW2JorsgH51x -kcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAciIfNAChs0B0QTwoRqjt8Z -Wr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -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 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDITCCAoqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCByzELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFBlcnNvbmFsIEJhc2lj -IENBMSgwJgYJKoZIhvcNAQkBFhlwZXJzb25hbC1iYXNpY0B0aGF3dGUuY29tMB4X -DTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgcsxCzAJBgNVBAYTAlpBMRUw -EwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEaMBgGA1UE -ChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2Vy -dmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQZXJzb25hbCBCYXNpYyBD -QTEoMCYGCSqGSIb3DQEJARYZcGVyc29uYWwtYmFzaWNAdGhhd3RlLmNvbTCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvLyTU23AUE+CFeZIlDWmWr5vQvoPR+53 -dXLdjUmbllegeNTKP1GzaQuRdhciB5dqxFGTS+CN7zeVoQxN2jSQHReJl+A1OFdK -wPQIcOk8RHtQfmGakOMj04gRRif1CwcOu93RfyAKiLlWCy4cgNrx454p7xS9CkT7 -G1sY0b8jkyECAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQF -AAOBgQAt4plrsD16iddZopQBHyvdEktTwq1/qqcAXJFAVyVKOKqEcLnZgA+le1z7 -c8a914phXAPjLSeoF+CEhULcXpvGt7Jtu3Sv5D/Lp7ew4F2+eIMllNLbgQ95B21P -9DkVWlIBe94y1k049hJcBlDfBVu9FEuh3ym6O0GN92NWod8isQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDLTCCApagAwIBAgIBADANBgkqhkiG9w0BAQQFADCB0TELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEkMCIGA1UEAxMbVGhhd3RlIFBlcnNvbmFsIEZyZWVt -YWlsIENBMSswKQYJKoZIhvcNAQkBFhxwZXJzb25hbC1mcmVlbWFpbEB0aGF3dGUu -Y29tMB4XDTk2MDEwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgdExCzAJBgNVBAYT -AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEa -MBgGA1UEChMRVGhhd3RlIENvbnN1bHRpbmcxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xJDAiBgNVBAMTG1RoYXd0ZSBQZXJzb25hbCBG -cmVlbWFpbCBDQTErMCkGCSqGSIb3DQEJARYccGVyc29uYWwtZnJlZW1haWxAdGhh -d3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA1GnX1LCUZFtx6UfY -DFG26nKRsIRefS0Nj3sS34UldSh0OkIsYyeflXtL734Zhx2G6qPduc6WZBrCFG5E -rHzmj+hND3EfQDimAKOHePb5lIZererAXnbr2RSjXW56fAylS1V/Bhkpf56aJtVq -uzgkCGqYx7Hao5iR/Xnb5VrEHLkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zAN -BgkqhkiG9w0BAQQFAAOBgQDH7JJ+Tvj1lqVnYiqk8E0RYNBvjWBYYawmu1I1XAjP -MPuoSpaKH2JCI4wXD/S6ZJwXrEcp352YXtJsYHFcoqzceePnbgBHH7UNKOgCneSa -/RP0ptl8sfjcXyMmCZGAc9AUG95DqYMl8uacLxXK/qarigd1iwzdUYRr5PjRznei -gQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDKTCCApKgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBzzELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMRowGAYD -VQQKExFUaGF3dGUgQ29uc3VsdGluZzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBT -ZXJ2aWNlcyBEaXZpc2lvbjEjMCEGA1UEAxMaVGhhd3RlIFBlcnNvbmFsIFByZW1p -dW0gQ0ExKjAoBgkqhkiG9w0BCQEWG3BlcnNvbmFsLXByZW1pdW1AdGhhd3RlLmNv -bTAeFw05NjAxMDEwMDAwMDBaFw0yMDEyMzEyMzU5NTlaMIHPMQswCQYDVQQGEwJa -QTEVMBMGA1UECBMMV2VzdGVybiBDYXBlMRIwEAYDVQQHEwlDYXBlIFRvd24xGjAY -BgNVBAoTEVRoYXd0ZSBDb25zdWx0aW5nMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9u -IFNlcnZpY2VzIERpdmlzaW9uMSMwIQYDVQQDExpUaGF3dGUgUGVyc29uYWwgUHJl -bWl1bSBDQTEqMCgGCSqGSIb3DQEJARYbcGVyc29uYWwtcHJlbWl1bUB0aGF3dGUu -Y29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDJZtn4B0TPuYwu8KHvE0Vs -Bd/eJxZRNkERbGw77f4QfRKe5ZtCmv5gMcNmt3M6SK5O0DI3lIi1DbbZ8/JE2dWI -Et12TfIa/G8jHnrx2JhFTgcQ7xZC0EN1bUre4qrJMf8fAHB8Zs8QJQi6+u4A6UYD -ZicRFTuqW/KY3TZCstqIdQIDAQABoxMwETAPBgNVHRMBAf8EBTADAQH/MA0GCSqG -SIb3DQEBBAUAA4GBAGk2ifc0KjNyL2071CKyuG+axTZmDhs8obF1Wub9NdP4qPIH -b4Vnjt4rueIXsDqg8A6iAJrf8xQVbrvIhVqYgPn/vnQdPfP+MCXRNzRn+qVxeTBh -KXLA4CxM+1bkOqhv5TJZUtt1KFBZDPgLGeSs2a+WjS9Q2wfD6h+rM+D1KzGJ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UEAxMYVGhhd3RlIFByZW1pdW0gU2Vy -dmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZlckB0aGF3dGUuY29t -MB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYTAlpB -MRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsG -A1UEChMUVGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRp -b24gU2VydmljZXMgRGl2aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNl -cnZlciBDQTEoMCYGCSqGSIb3DQEJARYZcHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNv -bTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2aovXwlue2oFBYo847kkE -VdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIhUdib0GfQ -ug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMR -uHM/qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG -9w0BAQQFAAOBgQAmSCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUI -hfzJATj/Tb7yFkJD57taRvvBxhEf8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JM -pAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7tUCemDaYj+bvLpgcUQg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYD -VQQKExRUaGF3dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlv -biBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEm -MCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wHhcNOTYwODAx -MDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT -DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3 -dGUgQ29uc3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNl -cyBEaXZpc2lvbjEZMBcGA1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3 -DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQAD -gY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl/Kj0R1HahbUgdJSGHg91 -yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg71CcEJRCX -L+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGj -EzARMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG -7oWDTSEwjsrZqG9JGubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6e -QNuozDJ0uW8NxuOzRAvZim+aKZuZGCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZ -qdq5snUb9kLy78fyGPmJvKP/iiMucEc= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV -BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 -Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYwMTEyMTQzODQzWhcNMjUxMjMxMjI1 -OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i -SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UEAxMc -VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jf -tMjWQ+nEdVl//OEd+DFwIxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKg -uNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2J -XjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQXa7pIXSSTYtZgo+U4+lK -8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7uSNQZu+99 -5OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1Ud -EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3 -kUrL84J6E1wIqzCB7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRy -dXN0Y2VudGVyLmRlL2NybC92Mi90Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6 -Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBUcnVzdENlbnRlciUyMENsYXNz -JTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21iSCxPVT1yb290 -Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u -TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iS -GNn3Bzn1LL4GdXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprt -ZjluS5TmVfwLG4t3wVMTZonZKNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8 -au0WOB9/WIFaGusyiC2y8zl3gK9etmF1KdsjTYjKUCjLhdLTEKJZbtOTVAB6okaV -hgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kPJOzHdiEoZa5X6AeI -dUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfkvQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDtjCCAp6gAwIBAgIOBcAAAQACQdAGCk3OdRAwDQYJKoZIhvcNAQEFBQAwdjEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNV -BAsTGVRDIFRydXN0Q2VudGVyIENsYXNzIDQgQ0ExJTAjBgNVBAMTHFRDIFRydXN0 -Q2VudGVyIENsYXNzIDQgQ0EgSUkwHhcNMDYwMzIzMTQxMDIzWhcNMjUxMjMxMjI1 -OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIgR21i -SDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgNCBDQTElMCMGA1UEAxMc -VEMgVHJ1c3RDZW50ZXIgQ2xhc3MgNCBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQAD -ggEPADCCAQoCggEBALXNTJytrlG7fEjFDSmGehSt2VA9CXIgDRS2Y8b+WJ7gIV7z -jyIZ3E6RIM1viCmis8GsKnK6i1S4QF/yqvhDhsIwXMynXX/GCEnkDjkvjhjWkd0j -FnmA22xIHbzB3ygQY9GB493fL3l1oht48pQB5hBiecugfQLANIJ7x8CtHUzXapZ2 -W78mhEj9h/aECqqSB5lIPGG8ToVYx5ct/YFKocabEvVCUNFkPologiJw3fX64yhC -L04y87OjNopq1mJcrPoBbbTgci6VaLTxkwzGioLSHVPqfOA/QrcSWrjN2qUGZ8uh -d32llvCSHmcOHUJG5vnt+0dTf1cERh9GX8eu4I8CAwEAAaNCMEAwDwYDVR0TAQH/ -BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFB/quz4lGwa9pd1iBX7G -TFq/6A9DMA0GCSqGSIb3DQEBBQUAA4IBAQBYpCubTPfkpJKknGWYGWIi/HIy6QRd -xMRwLVpG3kxHiiW5ot3u6hKvSI3vK2fbO8w0mCr3CEf/Iq978fTr4jgCMxh1KBue -dmWsiANy8jhHHYz1nwqIUxAUu4DlDLNdjRfuHhkcho0UZ3iMksseIUn3f9MYv5x5 -+F0IebWqak2SNmy8eesOPXmK2PajVnBd3ttPedJ60pVchidlvqDTB4FAVd0Qy+BL -iILAkH0457+W4Ze6mqtCD9Of2J4VMxHL94J59bXAQVaS4d9VA61Iz9PyLrHHLVZM -ZHQqMc7cdalUR6SnQnIJ5+ECpkeyBM1CE+FhDOB4OiIgohxgQoaH96Xm ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTEL -MAkGA1UEBhMCREUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNV -BAsTG1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1 -c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcNMDYwMzIyMTU1NDI4WhcNMjUxMjMx -MjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1c3RDZW50ZXIg -R21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYwJAYD -VQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcN -AQEBBQADggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSR -JJZ4Hgmgm5qVSkr1YnwCqMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3T -fCZdzHd55yx4Oagmcw6iXSVphU9VDprvxrlE4Vc93x9UIuVvZaozhDrzznq+VZeu -jRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtwag+1m7Z3W0hZneTvWq3z -wZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9OgdwZu5GQ -fezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYD -VR0jBBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAO -BgNVHQ8BAf8EBAMCAYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0G -CSqGSIb3DQEBBQUAA4IBAQAo0uCG1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X1 -7caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/CyvwbZ71q+s2IhtNerNXxTPqYn -8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3ghUJGooWMNjs -ydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT -ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/ -2TYcuiUaUj0a7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgxMDAxMTA0MDE0WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUd -AqSzm1nzHoqvNK38DcLZSBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiC -FoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/FvudocP05l03Sx5iRUKrERLMjfTlH6VJi -1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx9702cu+fjOlbpSD8DT6Iavq -jnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGVWOHAD3bZ -wI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/ -WSA2AHmgoCJrjNXyYdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhy -NsZt+U2e+iKo4YFWz827n+qrkRk4r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPAC -uvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNfvNoBYimipidx5joifsFvHZVw -IEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR3p1m0IvVVGb6 -g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN -9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlP -BSeOE6Fuwg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUx -KzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAd -BgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNl -YyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgxMDAxMTAyOTU2WhcNMzMxMDAxMjM1 -OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lzdGVtcyBFbnRlcnBy -aXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBDZW50 -ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN -8ELg63iIVl6bmlQdTQyK9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/ -RLyTPWGrTs0NvvAgJ1gORH8EGoel15YUNpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4 -hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZFiP0Zf3WHHx+xGwpzJFu5 -ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W0eDrXltM -EnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGj -QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1 -A/d2O2GCahKqGFPrAyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOy -WL6ukK2YJ5f+AbGwUgC4TeQbIXQbfsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ -1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzTucpH9sry9uetuUg/vBa3wW30 -6gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7hP0HHRwA11fXT -91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml -e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4p -TpPDpFQUWw== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCB -kzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZBgNVBAMTElVUTiAtIERBVEFDb3Jw -IFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBaMIGTMQswCQYDVQQG -EwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYD -VQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cu -dXNlcnRydXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjAN -BgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6 -E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ysraP6LnD43m77VkIVni5c7yPeIbkFdicZ -D0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlowHDyUwDAXlCCpVZvNvlK -4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA9P4yPykq -lXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulW -bfXv33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQAB -o4GrMIGoMAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRT -MtGzz3/64PGgXYVOktKeRR20TzA9BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3Js -LnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dDLmNybDAqBgNVHSUEIzAhBggr -BgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3DQEBBQUAA4IB -AQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft -Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyj -j98C5OBxOvG0I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVH -KWss5nbZqSl9Mt3JNjy9rjXxEZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv -2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwPDPafepE39peC4N1xaf92P2BNPM/3 -mfnGV/TJVTl4uix5yaaIK/QI ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCB -rjELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0BgNVBAMTLVVUTi1VU0VSRmlyc3Qt -Q2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05OTA3MDkxNzI4NTBa -Fw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAV -BgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5l -dHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UE -AxMtVVROLVVTRVJGaXJzdC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWls -MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3B -YHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIxB8dOtINknS4p1aJkxIW9 -hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8om+rWV6l -L8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLm -SGHGTPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM -1tZUOt4KpLoDd7NlyP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws -6wIDAQABo4G5MIG2MAsGA1UdDwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud -DgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNVHR8EUTBPME2gS6BJhkdodHRw -Oi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGllbnRBdXRoZW50 -aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH -AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u -7mFVbwQ+zznexRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0 -xtcgBEXkzYABurorbs6q15L+5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQ -rfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarVNZ1yQAOJujEdxRBoUp7fooXFXAim -eOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZw7JHpsIyYdfHb0gk -USeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCB -lzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3Qt -SGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgxOTIyWjCBlzELMAkG -A1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEe -MBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8v -d3d3LnVzZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdh -cmUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn -0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlIwrthdBKWHTxqctU8EGc6Oe0rE81m65UJ -M6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFdtqdt++BxF2uiiPsA3/4a -MXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8i4fDidNd -oI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqI -DsjfPe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9Ksy -oUhbAgMBAAGjgbkwgbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYD -VR0OBBYEFKFyXyYbKJhDlV0HN9WFlp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0 -dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LUhhcmR3YXJlLmNy -bDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEF -BQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM -//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28Gpgoiskli -CE7/yMgUsogWXecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gE -CJChicsZUN/KHAG8HQQZexB2lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t -3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kniCrVWFCVH/A7HFe7fRQ5YiuayZSS -KqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67nfhmqA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCB -lTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2Ug -Q2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho -dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAbBgNVBAMTFFVUTi1VU0VSRmlyc3Qt -T2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAzNlowgZUxCzAJBgNV -BAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkxHjAc -BgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3 -dy51c2VydHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCC -ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicP -HxzfOpuCaDDASmEd8S8O+r5596Uj71VRloTN2+O5bj4x2AogZ8f02b+U60cEPgLO -KqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQw5ujm9M89RKZd7G3CeBo -5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vulBe3/IW+ -pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehb -kkj7RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUC -AwEAAaOBrzCBrDALBgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E -FgQU2u1kdBScFDyr3ZmpvVsoTYs8ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDov -L2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmlyc3QtT2JqZWN0LmNybDApBgNV -HSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQwDQYJKoZIhvcN -AQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw -NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXB -mMiKVl0+7kNOPmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU -4U3GDZlDAQ0Slox4nb9QorFEqmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK5 -81OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCGhU3IfdeLA/5u1fedFqySLKAj5ZyR -Uh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g= ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0 -IFZhbGlkYXRpb24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAz -BgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9y -aXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG -9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAwMTk1NFoXDTE5MDYy -NjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0d29y -azEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs -YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRw -Oi8vd3d3LnZhbGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNl -cnQuY29tMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDOOnHK5avIWZJV16vY -dA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVCCSRrCl6zfN1SLUzm1NZ9 -WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7RfZHM047QS -v4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9v -UJSZSWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTu -IYEZoDJJKPTEjlbVUjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwC -W/POuZ6lcg5Ktz885hZo+L7tdEy8W9ViH0Pd ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICPTCCAaYCEQDNun9W8N/kvFT+IqyzcqpVMA0GCSqGSIb3DQEBAgUAMF8xCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xh -c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw05 -NjAxMjkwMDAwMDBaFw0yODA4MDEyMzU5NTlaMF8xCzAJBgNVBAYTAlVTMRcwFQYD -VQQKEw5WZXJpU2lnbiwgSW5jLjE3MDUGA1UECxMuQ2xhc3MgMSBQdWJsaWMgUHJp -bWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCBnzANBgkqhkiG9w0BAQEFAAOB -jQAwgYkCgYEA5Rm/baNWYS2ZSHH2Z965jeu3noaACpEO+jglr0aIguVzqKCbJF0N -H8xlbgyw0FaEGIeaBpsQoXPftFg5a27B9hXVqKg/qhIGjTGsf7A01480Z4gJzRQR -4k5FVmkfeAKA2txHkSm7NsljXMXg1y2He6G3MrB7MLoqLzGq7qNn2tsCAwEAATAN -BgkqhkiG9w0BAQIFAAOBgQBMP7iLxmjf7kMzDl3ppssHhE16M/+SG/Q2rdiVIjZo -EWx8QszznC7EBz8UsA9P/5CSdvnivErpj82ggAr3xSnxgiJduLHdgSOjeyUVRjB5 -FvjqBUuUfx3CHMjjt/QQQDwTw18fU+hI5Ia0e6E1sHslurjTjqs/OJ0ANACY89Fx -lA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMSBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgdk4xWArzZbxpvUjZudVYK -VdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIqWpDBucSm -Fc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0J -h9ZrbWB85a7FkCMMXErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2ul -uIncrKTdcu1OofdPvAbT6shkdHvClUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68 -DzFc6PLZ ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN2E1Lm0+afY8wR4 -nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/EbRrsC+MO -8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjV -ojYJrKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjb -PG7PoBMAGrgnoeS+Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP2 -6KbqxzcSXKMpHgLZ2x87tNcPVkeBFQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vr -n5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAq2aN17O6x5q25lXQBfGfMY1a -qtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/Ny9Sn2WCVhDr4 -wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3 -ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrs -pSCAaWihT37ha88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4 -E1Z5T21Q6huwtVexN2ZYI/PcD98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEC0b/EoXjaOR6+f/9YtFvgswDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAyIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAyIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQC2WoujDWojg4BrzzmH9CETMwZMJaLtVRKXxaeAufqDwSCg+i8VDXyh -YGt+eSz6Bg86rvYbb7HS/y8oUl+DfUvEerf4Zh+AVPy3wo5ZShRXRtGak75BkQO7 -FYCTXOvnzAhsPz6zSvz/S2wj1VCCJkQZjiPDceoZJEcEnnW/yKYAHwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBAIobK/o5wXTXXtgZZKJYSi034DNHD6zt96rbHuSLBlxg -J8pFUs4W7z8GZOeUaHxgMxURaa+dYo2jA1Rrpr7l7gUYYAS/QoD90KioHgE796Nc -r6Pc5iaAIzy4RHT3Cq5Ji2F4zCS/iIqnDupzGUH9TQPwiNHleI2lKk/2lw0Xd8rY ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0Ns -YXNzIDIgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBH -MjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y -aXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazAe -Fw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJVUzEX -MBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGlj -IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMx -KGMpIDE5OTggVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25s -eTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29yazCBnzANBgkqhkiG9w0B -AQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjxnNuX6Zr8wgQGE75fUsjM -HiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRCwiNPStjw -DqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cC -AwEAATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9ji -nb3/7aHmZuovCfTK1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAX -rXfMSTWqz9iP0b63GJZHc2pUIjRkLbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnIn -jBJ7xUS0rg== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVy -aVNpZ24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24s -IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNp -Z24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 -eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJBgNV -BAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNp -Z24gVHJ1c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIElu -Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24g -Q2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAt -IEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArwoNwtUs22e5LeWU -J92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6tW8UvxDO -JxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUY -wZF7C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9o -koqQHgiBVrKtaaNS0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjN -qWm6o+sdDZykIKbBoMXRRkwXbdKsZj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/E -Srg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0JhU8wI1NQ0kdvekhktdmnLfe -xbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf0xwLRtxyID+u -7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU -sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RI -sH/7NiXaldDxJBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTP -cjnhsUPgKM+351psE2tJs//jGHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFz -cyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2 -MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVowXzELMAkGA1UEBhMCVVMxFzAVBgNV -BAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmlt -YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUAA4GN -ADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhE -BarsAx94f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/is -I19wKTakyYbnsZogy1Olhec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0G -CSqGSIb3DQEBAgUAA4GBALtMEivPLCYATxQT3ab7/AoRhIzzKBxnki98tsX63/Do -lbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59AhWM1pF+NEHJwZRDmJXNyc -AA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2OmufTqj/ZA1k ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJ -BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xh -c3MgMyBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcy -MTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3Jp -emVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMB4X -DTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVTMRcw -FQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMg -UHJpbWFyeSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEo -YykgMTk5OCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5 -MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEB -AQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCOFoUgRm1HP9SFIIThbbP4 -pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71lSk8UOg0 -13gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwID -AQABMA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSk -U01UbSuvDV1Ai2TT1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7i -F6YM40AIOw7n60RzKprxaZLvcRTDOaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpY -oJ2daZH9 ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQsw -CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZl -cmlTaWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWdu -LCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlT -aWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3Jp -dHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQswCQYD -VQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlT -aWduIFRydXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJ -bmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWdu -IENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg -LSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMu6nFL8eB8aHm8b -N3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1EUGO+i2t -KmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGu -kxUccLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBm -CC+Vk7+qRy+oRpfwEuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJ -Xwzw3sJ2zq/3avL6QaaiMxTJ5Xpj055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWu -imi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAERSWwauSCPc/L8my/uRan2Te -2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5fj267Cz3qWhMe -DGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC -/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565p -F4ErWjfJXir0xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGt -TxzhT5yvDwyd93gN2PQ1VoDat20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICNDCCAaECEAKtZn5ORf5eV288mBle3cAwDQYJKoZIhvcNAQECBQAwXzELMAkG -A1UEBhMCVVMxIDAeBgNVBAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYD -VQQLEyVTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk0 -MTEwOTAwMDAwMFoXDTEwMDEwNzIzNTk1OVowXzELMAkGA1UEBhMCVVMxIDAeBgNV -BAoTF1JTQSBEYXRhIFNlY3VyaXR5LCBJbmMuMS4wLAYDVQQLEyVTZWN1cmUgU2Vy -dmVyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGbMA0GCSqGSIb3DQEBAQUAA4GJ -ADCBhQJ+AJLOesGugz5aqomDV6wlAXYMra6OLDfO6zV4ZFQD5YRAUcm/jwjiioII -0haGN1XpsSECrXZogZoFokvJSyVmIlZsiAeP94FZbYQHZXATcXY+m3dM41CJVphI -uR2nKRoTLkoRWZweFdVJVCxzOmmCsZc5nG1wZ0jl3S3WyB57AgMBAAEwDQYJKoZI -hvcNAQECBQADfgBl3X7hsuyw4jrg7HFGmhkRuNPHoLQDQCYCPgmc4RKz0Vr2N6W3 -YQO2WxZpO8ZECAyIUwxrl0nHPjXcbLm7qt9cuzovk2C2qUtN8iD3zV9/ZHuO3ABc -1/p3yjkWWW8O6tO1g39NTUJWdrTJXwT4OPjr0l91X817/OWOgHz8UA== ------END CERTIFICATE----- ------BEGIN CERTIFICATE----- -MIICoTCCAgqgAwIBAgIBADANBgkqhkiG9w0BAQQFADCBizELMAkGA1UEBhMCWkEx -FTATBgNVBAgTDFdlc3Rlcm4gQ2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzAN -BgNVBAoTBlRoYXd0ZTEdMBsGA1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAd -BgNVBAMTFlRoYXd0ZSBUaW1lc3RhbXBpbmcgQ0EwHhcNOTcwMTAxMDAwMDAwWhcN -MjAxMjMxMjM1OTU5WjCBizELMAkGA1UEBhMCWkExFTATBgNVBAgTDFdlc3Rlcm4g -Q2FwZTEUMBIGA1UEBxMLRHVyYmFudmlsbGUxDzANBgNVBAoTBlRoYXd0ZTEdMBsG -A1UECxMUVGhhd3RlIENlcnRpZmljYXRpb24xHzAdBgNVBAMTFlRoYXd0ZSBUaW1l -c3RhbXBpbmcgQ0EwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANYrWHhhRYZT -6jR7UZztsOYuGA7+4F+oJ9O0yeB8WU4WDnNUYMF/9p8u6TqFJBU820cEY8OexJQa -Wt9MevPZQx08EHp5JduQ/vBR5zDWQQD9nyjfeb6Uu522FOMjhdepQeBMpHmwKxqL -8vg7ij5FrHGSALSQQZj7X+36ty6K+Ig3AgMBAAGjEzARMA8GA1UdEwEB/wQFMAMB -Af8wDQYJKoZIhvcNAQEEBQADgYEAZ9viwuaHPUCDhjc1fR/OmsMMZiCouqoEiYbC -9RAIDb/LogWK0E02PvTX72nGXuSwlG9KuefeW4i2e9vjJ+V2w/A1wcu1J5szedyQ -pgCed/r8zSeUQhac0xxo7L9c3eWpexAKMnRUEzGLhQOEkbdYATAUOK8oyvyxUBkZ -CayJSdM= ------END CERTIFICATE----- - -------16967DC47640EB3C0A89A6FE94592C26 -Content-Type: application/x-pkcs7-signature; name="smime.p7s" -Content-Transfer-Encoding: base64 -Content-Disposition: attachment; filename="smime.p7s" - -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 -YpE4U6BVZ0o= - -------16967DC47640EB3C0A89A6FE94592C26-- - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/connection.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/connection.rb deleted file mode 100644 index dc4052a8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/connection.rb +++ /dev/null @@ -1,84 +0,0 @@ -# HTTPClient - HTTP client library. -# Copyright (C) 2000-2009 NAKAMURA, Hiroshi . -# -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -class HTTPClient - - - # Represents a HTTP response to an asynchronous request. Async methods of - # HTTPClient such as get_async, post_async, etc. returns an instance of - # Connection. - # - # == How to use - # - # 1. Invoke HTTP method asynchronously and check if it's been finished - # periodically. - # - # connection = clnt.post_async(url, body) - # print 'posting.' - # while true - # break if connection.finished? - # print '.' - # sleep 1 - # end - # puts '.' - # res = connection.pop - # p res.status - # - # 2. Read the response as an IO. - # - # connection = clnt.get_async('http://dev.ctor.org/') - # io = connection.pop.content - # while str = io.read(40) - # p str - # end - class Connection - attr_accessor :async_thread - - def initialize(header_queue = [], body_queue = []) # :nodoc: - @headers = header_queue - @body = body_queue - @async_thread = nil - @queue = Queue.new - end - - # Checks if the asynchronous invocation has been finished or not. - def finished? - if !@async_thread - # Not in async mode. - true - elsif @async_thread.alive? - # Working... - false - else - # Async thread have been finished. - join - true - end - end - - # Retrieves a HTTP::Message instance of HTTP response. Do not invoke this - # method twice for now. The second invocation will be blocked. - def pop - @queue.pop - end - - def push(result) # :nodoc: - @queue.push(result) - end - - # Waits the completion of the asynchronous invocation. - def join - if @async_thread - @async_thread.join - end - nil - end - end - - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/cookie.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/cookie.rb deleted file mode 100644 index 4ba1279c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/cookie.rb +++ /dev/null @@ -1,562 +0,0 @@ -# cookie.rb is redistributed file which is originally included in Webagent -# version 0.6.2 by TAKAHASHI `Maki' Masayoshi. And it contains some bug fixes. -# You can download the entire package of Webagent from -# http://www.rubycolor.org/arc/. - - -# Cookie class -# -# I refered to w3m's source to make these classes. Some comments -# are quoted from it. I'm thanksful for author(s) of it. -# -# w3m homepage: http://ei5nazha.yz.yamagata-u.ac.jp/~aito/w3m/eng/ - -require 'uri' -require 'time' -require 'monitor' - -class WebAgent - - module CookieUtils - - def head_match?(str1, str2) - str1 == str2[0, str1.length] - end - - def tail_match?(str1, str2) - if str1.length > 0 - str1 == str2[-str1.length..-1].to_s - else - true - end - end - - def domain_match(host, domain) - domainname = domain.sub(/\.\z/, '').downcase - hostname = host.sub(/\.\z/, '').downcase - case domain - when /\d+\.\d+\.\d+\.\d+/ - return (hostname == domainname) - when '.' - return true - when /^\./ - # allows; host == rubyforge.org, domain == .rubyforge.org - return tail_match?(domainname, '.' + hostname) - else - return (hostname == domainname) - end - end - - def total_dot_num(string) - string.scan(/\./).length() - end - - end - - class Cookie - include CookieUtils - - attr_accessor :name, :value - attr_accessor :domain, :path - attr_accessor :expires ## for Netscape Cookie - attr_accessor :url - attr_writer :use, :secure, :discard, :domain_orig, :path_orig, :override - - USE = 1 - SECURE = 2 - DOMAIN = 4 - PATH = 8 - DISCARD = 16 - OVERRIDE = 32 - OVERRIDE_OK = 32 - - def initialize() - @name = @value = @domain = @path = nil - @expires = nil - @url = nil - @use = @secure = @discard = @domain_orig = @path_orig = @override = nil - end - - def discard? - @discard - end - - def use? - @use - end - - def secure? - @secure - end - - def domain_orig? - @domain_orig - end - - def path_orig? - @path_orig - end - - def override? - @override - end - - def flag - flg = 0 - flg += USE if @use - flg += SECURE if @secure - flg += DOMAIN if @domain_orig - flg += PATH if @path_orig - flg += DISCARD if @discard - flg += OVERRIDE if @override - flg - end - - def set_flag(flag) - flag = flag.to_i - @use = true if flag & USE > 0 - @secure = true if flag & SECURE > 0 - @domain_orig = true if flag & DOMAIN > 0 - @path_orig = true if flag & PATH > 0 - @discard = true if flag & DISCARD > 0 - @override = true if flag & OVERRIDE > 0 - end - - def match?(url) - domainname = url.host - if (!domainname || - !domain_match(domainname, @domain) || - (@path && !head_match?(@path, url.path)) || - (@secure && (url.scheme != 'https')) ) - return false - else - return true - end - end - - def join_quotedstr(array, sep) - ret = Array.new() - old_elem = nil - array.each{|elem| - if (elem.scan(/"/).length % 2) == 0 - if old_elem - old_elem << sep << elem - else - ret << elem - old_elem = nil - end - else - if old_elem - old_elem << sep << elem - ret << old_elem - old_elem = nil - else - old_elem = elem.dup - end - end - } - ret - end - - def parse(str, url) - @url = url - # TODO: should not depend on join_quotedstr. scan with escape like CSV. - cookie_elem = str.split(/;/) - cookie_elem = join_quotedstr(cookie_elem, ';') - cookie_elem -= [""] # del empty elements, a cookie might included ";;" - first_elem = cookie_elem.shift - if first_elem !~ /([^=]*)(\=(.*))?/ - return - ## raise ArgumentError 'invalid cookie value' - end - @name = $1.strip - @value = normalize_cookie_value($3) - cookie_elem.each{|pair| - key, value = pair.split(/=/, 2) ## value may nil - key.strip! - value = normalize_cookie_value(value) - case key.downcase - when 'domain' - @domain = value - when 'expires' - @expires = nil - begin - @expires = Time.parse(value).gmtime() if value - rescue ArgumentError - end - when 'path' - @path = value - when 'secure' - @secure = true ## value may nil, but must 'true'. - else - ## ignore - end - } - end - - def normalize_cookie_value(value) - if value - value = value.strip.sub(/\A"(.*)"\z/) { $1 } - value = nil if value.empty? - end - value - end - private :normalize_cookie_value - end - - class CookieManager - include CookieUtils - - ### errors - class Error < StandardError; end - class ErrorOverrideOK < Error; end - class SpecialError < Error; end - - attr_reader :cookies - attr_accessor :cookies_file - attr_accessor :accept_domains, :reject_domains - - # for conformance to http://wp.netscape.com/newsref/std/cookie_spec.html - attr_accessor :netscape_rule - SPECIAL_DOMAIN = [".com",".edu",".gov",".mil",".net",".org",".int"] - - def initialize(file=nil) - @cookies = Array.new() - @cookies.extend(MonitorMixin) - @cookies_file = file - @is_saved = true - @reject_domains = Array.new() - @accept_domains = Array.new() - @netscape_rule = false - end - - def cookies=(cookies) - @cookies = cookies - @cookies.extend(MonitorMixin) - end - - def save_all_cookies(force = nil, save_unused = true, save_discarded = true) - @cookies.synchronize do - check_expired_cookies() - if @is_saved and !force - return - end - File.open(@cookies_file, 'w') do |f| - @cookies.each do |cookie| - if (cookie.use? or save_unused) and - (!cookie.discard? or save_discarded) - f.print(cookie.url.to_s,"\t", - cookie.name,"\t", - cookie.value,"\t", - cookie.expires.to_i,"\t", - cookie.domain,"\t", - cookie.path,"\t", - cookie.flag,"\n") - end - end - end - end - @is_saved = true - end - - def save_cookies(force = nil) - save_all_cookies(force, false, false) - end - - def check_expired_cookies() - @cookies.reject!{|cookie| - is_expired = (cookie.expires && (cookie.expires < Time.now.gmtime)) - if is_expired && !cookie.discard? - @is_saved = false - end - is_expired - } - end - - def parse(str, url) - cookie = WebAgent::Cookie.new() - cookie.parse(str, url) - add(cookie) - end - - def make_cookie_str(cookie_list) - if cookie_list.empty? - return nil - end - - ret = '' - c = cookie_list.shift - ret += "#{c.name}=#{c.value}" - cookie_list.each{|cookie| - ret += "; #{cookie.name}=#{cookie.value}" - } - return ret - end - private :make_cookie_str - - - def find(url) - return nil if @cookies.empty? - - cookie_list = Array.new() - @cookies.each{|cookie| - is_expired = (cookie.expires && (cookie.expires < Time.now.gmtime)) - if cookie.use? && !is_expired && cookie.match?(url) - if cookie_list.select{|c1| c1.name == cookie.name}.empty? - cookie_list << cookie - end - end - } - return make_cookie_str(cookie_list) - end - - def find_cookie_info(domain, path, name) - @cookies.find{|c| - c.domain == domain && c.path == path && c.name == name - } - end - private :find_cookie_info - - # not tested well; used only netscape_rule = true. - def cookie_error(err, override) - if !err.kind_of?(ErrorOverrideOK) || !override - raise err - end - end - private :cookie_error - - def add(cookie) - url = cookie.url - name, value = cookie.name, cookie.value - expires, domain, path = - cookie.expires, cookie.domain, cookie.path - secure, domain_orig, path_orig = - cookie.secure?, cookie.domain_orig?, cookie.path_orig? - discard, override = - cookie.discard?, cookie.override? - - domainname = url.host - domain_orig, path_orig = domain, path - use_security = override - - if domain - - # [DRAFT 12] s. 4.2.2 (does not apply in the case that - # host name is the same as domain attribute for version 0 - # cookie) - # I think that this rule has almost the same effect as the - # tail match of [NETSCAPE]. - if domain !~ /^\./ && domainname != domain - domain = '.'+domain - end - - # [NETSCAPE] rule - if @netscape_rule - n = total_dot_num(domain) - if n < 2 - cookie_error(SpecialError.new(), override) - elsif n == 2 - ## [NETSCAPE] rule - ok = SPECIAL_DOMAIN.select{|sdomain| - sdomain == domain[-(sdomain.length)..-1] - } - if ok.empty? - cookie_error(SpecialError.new(), override) - end - end - end - - # this implementation does not check RFC2109 4.3.2 case 2; - # the portion of host not in domain does not contain a dot. - # according to nsCookieService.cpp in Firefox 3.0.4, Firefox 3.0.4 - # and IE does not check, too. - end - - path ||= url.path.sub(%r|/[^/]*|, '') - domain ||= domainname - @cookies.synchronize do - cookie = find_cookie_info(domain, path, name) - if !cookie - cookie = WebAgent::Cookie.new() - cookie.use = true - @cookies << cookie - end - check_expired_cookies() - end - - cookie.url = url - cookie.name = name - cookie.value = value - cookie.expires = expires - cookie.domain = domain - cookie.path = path - - ## for flag - cookie.secure = secure - cookie.domain_orig = domain_orig - cookie.path_orig = path_orig - if discard || cookie.expires == nil - cookie.discard = true - else - cookie.discard = false - @is_saved = false - end - end - - def load_cookies() - return if !File.readable?(@cookies_file) - @cookies.synchronize do - @cookies.clear - File.open(@cookies_file,'r'){|f| - while line = f.gets - cookie = WebAgent::Cookie.new() - @cookies << cookie - col = line.chomp.split(/\t/) - cookie.url = URI.parse(col[0]) - cookie.name = col[1] - cookie.value = col[2] - if col[3].empty? or col[3] == '0' - cookie.expires = nil - else - cookie.expires = Time.at(col[3].to_i).gmtime - end - cookie.domain = col[4] - cookie.path = col[5] - cookie.set_flag(col[6]) - end - } - end - end - - def check_cookie_accept_domain(domain) - unless domain - return false - end - @accept_domains.each{|dom| - if domain_match(domain, dom) - return true - end - } - @reject_domains.each{|dom| - if domain_match(domain, dom) - return false - end - } - return true - end - end -end - -__END__ - -=begin - -== WebAgent::CookieManager Class - -Load, save, parse and send cookies. - -=== Usage - - ## initialize - cm = WebAgent::CookieManager.new("/home/foo/bar/cookie") - - ## load cookie data - cm.load_cookies() - - ## parse cookie from string (maybe "Set-Cookie:" header) - cm.parse(str) - - ## send cookie data to url - f.write(cm.find(url)) - - ## save cookie to cookiefile - cm.save_cookies() - - -=== Class Methods - - -- CookieManager::new(file=nil) - - create new CookieManager. If a file is provided, - use it as cookies' file. - -=== Methods - - -- CookieManager#save_cookies(force = nil) - - save cookies' data into file. if argument is true, - save data although data is not modified. - - -- CookieManager#parse(str, url) - - parse string and store cookie (to parse HTTP response header). - - -- CookieManager#find(url) - - get cookies and make into string (to send as HTTP request header). - - -- CookieManager#add(cookie) - - add new cookie. - - -- CookieManager#load_cookies() - - load cookies' data from file. - - -== WebAgent::CookieUtils Module - - -- CookieUtils::head_match?(str1, str2) - -- CookieUtils::tail_match?(str1, str2) - -- CookieUtils::domain_match(host, domain) - -- CookieUtils::total_dot_num(str) - - -== WebAgent::Cookie Class - -=== Class Methods - - -- Cookie::new() - - create new cookie. - -=== Methods - - -- Cookie#match?(url) - - match cookie by url. if match, return true. otherwise, - return false. - - -- Cookie#name - -- Cookie#name=(name) - -- Cookie#value - -- Cookie#value=(value) - -- Cookie#domain - -- Cookie#domain=(domain) - -- Cookie#path - -- Cookie#path=(path) - -- Cookie#expires - -- Cookie#expires=(expires) - -- Cookie#url - -- Cookie#url=(url) - - accessor methods for cookie's items. - - -- Cookie#discard? - -- Cookie#discard=(discard) - -- Cookie#use? - -- Cookie#use=(use) - -- Cookie#secure? - -- Cookie#secure=(secure) - -- Cookie#domain_orig? - -- Cookie#domain_orig=(domain_orig) - -- Cookie#path_orig? - -- Cookie#path_orig=(path_orig) - -- Cookie#override? - -- Cookie#override=(override) - -- Cookie#flag - -- Cookie#set_flag(flag_num) - - accessor methods for flags. - -=end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/http.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/http.rb deleted file mode 100644 index 4b0d91cc..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/http.rb +++ /dev/null @@ -1,867 +0,0 @@ -# HTTPClient - HTTP client library. -# Copyright (C) 2000-2009 NAKAMURA, Hiroshi . -# -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -require 'time' - - -# A namespace module for HTTP Message definitions used by HTTPClient. -module HTTP - - - # Represents HTTP response status code. Defines constants for HTTP response - # and some conditional methods. - module Status - OK = 200 - CREATED = 201 - ACCEPTED = 202 - NON_AUTHORITATIVE_INFORMATION = 203 - NO_CONTENT = 204 - RESET_CONTENT = 205 - PARTIAL_CONTENT = 206 - MOVED_PERMANENTLY = 301 - FOUND = 302 - SEE_OTHER = 303 - TEMPORARY_REDIRECT = MOVED_TEMPORARILY = 307 - BAD_REQUEST = 400 - UNAUTHORIZED = 401 - PROXY_AUTHENTICATE_REQUIRED = 407 - INTERNAL = 500 - - # Status codes for successful HTTP response. - SUCCESSFUL_STATUS = [ - OK, CREATED, ACCEPTED, - NON_AUTHORITATIVE_INFORMATION, NO_CONTENT, - RESET_CONTENT, PARTIAL_CONTENT - ] - - # Status codes which is a redirect. - REDIRECT_STATUS = [ - MOVED_PERMANENTLY, FOUND, SEE_OTHER, - TEMPORARY_REDIRECT, MOVED_TEMPORARILY - ] - - # Returns true if the given status represents successful HTTP response. - # See also SUCCESSFUL_STATUS. - def self.successful?(status) - SUCCESSFUL_STATUS.include?(status) - end - - # Returns true if the given status is thought to be redirect. - # See also REDIRECT_STATUS. - def self.redirect?(status) - REDIRECT_STATUS.include?(status) - end - end - - - # Represents a HTTP message. A message is for a request or a response. - # - # Request message is generated from given parameters internally so users - # don't need to care about it. Response message is the instance that - # methods of HTTPClient returns so users need to know how to extract - # HTTP response data from Message. - # - # Some attributes are only for a request or a response, not both. - # - # == How to use HTTP response message - # - # 1. Gets response message body. - # - # res = clnt.get(url) - # p res.content #=> String - # - # 2. Gets response status code. - # - # res = clnt.get(url) - # p res.status #=> 200, 501, etc. (Integer) - # - # 3. Gets response header. - # - # res = clnt.get(url) - # res.header['set-cookie'].each do |value| - # p value - # end - # assert_equal(1, res.header['last-modified'].size) - # p res.header['last-modified'].first - # - class Message - - CRLF = "\r\n" - - # Represents HTTP message header. - class Headers - # HTTP version in a HTTP header. Float. - attr_accessor :http_version - # Size of body. nil when size is unknown (e.g. chunked response). - attr_reader :body_size - # Request/Response is chunked or not. - attr_accessor :chunked - - # Request only. Requested method. - attr_reader :request_method - # Request only. Requested URI. - attr_accessor :request_uri - # Request only. Requested query. - attr_accessor :request_query - # Request only. Requested via proxy or not. - attr_accessor :request_via_proxy - - # Response only. HTTP status - attr_reader :status_code - # Response only. HTTP status reason phrase. - attr_accessor :reason_phrase - - # Used for dumping response. - attr_accessor :body_type # :nodoc: - # Used for dumping response. - attr_accessor :body_charset # :nodoc: - # Used for dumping response. - attr_accessor :body_date # :nodoc: - - # HTTP response status code to reason phrase mapping definition. - STATUS_CODE_MAP = { - Status::OK => 'OK', - Status::CREATED => "Created", - Status::NON_AUTHORITATIVE_INFORMATION => "Non-Authoritative Information", - Status::NO_CONTENT => "No Content", - Status::RESET_CONTENT => "Reset Content", - Status::PARTIAL_CONTENT => "Partial Content", - Status::MOVED_PERMANENTLY => 'Moved Permanently', - Status::FOUND => 'Found', - Status::SEE_OTHER => 'See Other', - Status::TEMPORARY_REDIRECT => 'Temporary Redirect', - Status::MOVED_TEMPORARILY => 'Temporary Redirect', - Status::BAD_REQUEST => 'Bad Request', - Status::INTERNAL => 'Internal Server Error', - } - - # $KCODE to charset mapping definition. - CHARSET_MAP = { - 'NONE' => 'us-ascii', - 'EUC' => 'euc-jp', - 'SJIS' => 'shift_jis', - 'UTF8' => 'utf-8', - } - - # Creates a Message::Headers. Use init_request, init_response, or - # init_connect_request for acutual initialize. - def initialize - @http_version = 1.1 - @body_size = nil - @chunked = false - - @request_method = nil - @request_uri = nil - @request_query = nil - @request_via_proxy = nil - - @status_code = nil - @reason_phrase = nil - - @body_type = nil - @body_charset = nil - @body_date = nil - - @is_request = nil - @header_item = [] - @dumped = false - end - - # Initialize this instance as a CONNECT request. - def init_connect_request(uri) - @is_request = true - @request_method = 'CONNECT' - @request_uri = uri - @request_query = nil - @http_version = 1.0 - end - - # Placeholder URI object for nil uri. - NIL_URI = URI.parse('http://nil-uri-given/') - # Initialize this instance as a general request. - def init_request(method, uri, query = nil) - @is_request = true - @request_method = method - @request_uri = uri || NIL_URI - @request_query = query - @request_via_proxy = false - end - - # Initialize this instance as a response. - def init_response(status_code) - @is_request = false - self.status_code = status_code - end - - # Sets status code and reason phrase. - def status_code=(status_code) - @status_code = status_code - @reason_phrase = STATUS_CODE_MAP[@status_code] - end - - # Returns 'Content-Type' header value. - def contenttype - self['Content-Type'][0] - end - - # Sets 'Content-Type' header value. Overrides if already exists. - def contenttype=(contenttype) - delete('Content-Type') - self['Content-Type'] = contenttype - end - - # Sets byte size of message body. - # body_size == nil means that the body is_a? IO - def body_size=(body_size) - @body_size = body_size - end - - # Dumps message header part and returns a dumped String. - def dump - set_header - str = nil - if @is_request - str = request_line - else - str = response_status_line - end - str + @header_item.collect { |key, value| - "#{ key }: #{ value }#{ CRLF }" - }.join - end - - # Adds a header. Addition order is preserved. - def add(key, value) - if value.is_a?(Array) - value.each do |v| - @header_item.push([key, v]) - end - else - @header_item.push([key, value]) - end - end - - # Sets a header. - def set(key, value) - delete(key) - add(key, value) - end - - # Returns an Array of headers for the given key. Each element is a pair - # of key and value. It returns an single element Array even if the only - # one header exists. If nil key given, it returns all headers. - def get(key = nil) - if key.nil? - all - else - key = key.upcase - @header_item.find_all { |k, v| k.upcase == key } - end - end - - # Returns an Array of all headers. - def all - @header_item - end - - # Deletes headers of the given key. - def delete(key) - key = key.upcase - @header_item.delete_if { |k, v| k.upcase == key } - end - - # Adds a header. See set. - def []=(key, value) - set(key, value) - end - - # Returns an Array of header values for the given key. - def [](key) - get(key).collect { |item| item[1] } - end - - private - - def request_line - path = create_query_uri(@request_uri, @request_query) - if @request_via_proxy - path = "#{ @request_uri.scheme }://#{ @request_uri.host }:#{ @request_uri.port }#{ path }" - end - "#{ @request_method } #{ path } HTTP/#{ @http_version }#{ CRLF }" - end - - def response_status_line - if defined?(Apache) - "HTTP/#{ @http_version } #{ @status_code } #{ @reason_phrase }#{ CRLF }" - else - "Status: #{ @status_code } #{ @reason_phrase }#{ CRLF }" - end - end - - def set_header - if @is_request - set_request_header - else - set_response_header - end - end - - def set_request_header - return if @dumped - @dumped = true - keep_alive = Message.keep_alive_enabled?(@http_version) - if !keep_alive and @request_method != 'CONNECT' - set('Connection', 'close') - end - if @chunked - set('Transfer-Encoding', 'chunked') - elsif @body_size and (keep_alive or @body_size != 0) - set('Content-Length', @body_size.to_s) - end - if @http_version >= 1.1 - if @request_uri.port == @request_uri.default_port - # GFE/1.3 dislikes default port number (returns 404) - set('Host', "#{@request_uri.host}") - else - set('Host', "#{@request_uri.host}:#{@request_uri.port}") - end - end - end - - def set_response_header - return if @dumped - @dumped = true - if defined?(Apache) && self['Date'].empty? - set('Date', Time.now.httpdate) - end - keep_alive = Message.keep_alive_enabled?(@http_version) - if @chunked - set('Transfer-Encoding', 'chunked') - else - if keep_alive or @body_size != 0 - set('Content-Length', @body_size.to_s) - end - end - if @body_date - set('Last-Modified', @body_date.httpdate) - end - if self['Content-Type'].empty? - set('Content-Type', "#{ @body_type || 'text/html' }; charset=#{ charset_label(@body_charset || $KCODE) }") - end - end - - def charset_label(charset) - CHARSET_MAP[charset] || 'us-ascii' - end - - def create_query_uri(uri, query) - if @request_method == 'CONNECT' - return "#{uri.host}:#{uri.port}" - end - path = uri.path - path = '/' if path.nil? or path.empty? - query_str = nil - if uri.query - query_str = uri.query - end - if query - if query_str - query_str += "&#{Message.create_query_part_str(query)}" - else - query_str = Message.create_query_part_str(query) - end - end - if query_str - path += "?#{query_str}" - end - path - end - end - - - # Represents HTTP message body. - class Body - # Size of body. nil when size is unknown (e.g. chunked response). - attr_reader :size - # maxbytes of IO#read for streaming request. See DEFAULT_CHUNK_SIZE. - attr_accessor :chunk_size - - # Default value for chunk_size - DEFAULT_CHUNK_SIZE = 1024 * 16 - - # Creates a Message::Body. Use init_request or init_response - # for acutual initialize. - def initialize - @body = nil - @size = nil - @positions = nil - @chunk_size = nil - end - - # Initialize this instance as a request. - def init_request(body = nil, boundary = nil) - @boundary = boundary - @positions = {} - set_content(body, boundary) - @chunk_size = DEFAULT_CHUNK_SIZE - end - - # Initialize this instance as a response. - def init_response(body = nil) - @body = body - if @body.respond_to?(:size) - @size = @body.size - else - @size = nil - end - end - - # Dumps message body to given dev. - # dev needs to respond to <<. - # - # Message header must be given as the first argument for performance - # reason. (header is dumped to dev, too) - # If no dev (the second argument) given, this method returns a dumped - # String. - def dump(header = '', dev = '') - if @body.is_a?(Parts) - dev << header - buf = '' - @body.parts.each do |part| - if Message.file?(part) - reset_pos(part) - while !part.read(@chunk_size, buf).nil? - dev << buf - end - else - dev << part - end - end - elsif @body - dev << header + @body - else - dev << header - end - dev - end - - # Dumps message body with chunked encoding to given dev. - # dev needs to respond to <<. - # - # Message header must be given as the first argument for performance - # reason. (header is dumped to dev, too) - # If no dev (the second argument) given, this method returns a dumped - # String. - def dump_chunked(header = '', dev = '') - dev << header - if @body.is_a?(Parts) - @body.parts.each do |part| - if Message.file?(part) - reset_pos(part) - dump_chunks(part, dev) - else - dev << dump_chunk(part) - end - end - dev << (dump_last_chunk + CRLF) - elsif @body - reset_pos(@body) - dump_chunks(@body, dev) - dev << (dump_last_chunk + CRLF) - end - dev - end - - # Returns a message body itself. - def content - @body - end - - private - - def set_content(body, boundary = nil) - if body.respond_to?(:read) - # uses Transfer-Encoding: chunked. bear in mind that server may not - # support it. at least ruby's CGI doesn't. - @body = body - remember_pos(@body) - @size = nil - elsif boundary and Message.multiparam_query?(body) - @body = build_query_multipart_str(body, boundary) - @size = @body.size - else - @body = Message.create_query_part_str(body) - @size = @body.size - end - end - - def remember_pos(io) - # IO may not support it (ex. IO.pipe) - @positions[io] = io.pos rescue nil - end - - def reset_pos(io) - io.pos = @positions[io] if @positions.key?(io) - end - - def dump_chunks(io, dev) - buf = '' - while !io.read(@chunk_size, buf).nil? - dev << dump_chunk(buf) - end - end - - def dump_chunk(str) - dump_chunk_size(str.size) + (str + CRLF) - end - - def dump_last_chunk - dump_chunk_size(0) - end - - def dump_chunk_size(size) - sprintf("%x", size) + CRLF - end - - class Parts - attr_reader :size - - def initialize - @body = [] - @size = 0 - @as_stream = false - end - - def add(part) - if Message.file?(part) - @as_stream = true - @body << part - if part.respond_to?(:size) - if sz = part.size - @size += sz - else - @size = nil - end - elsif part.respond_to?(:lstat) - @size += part.lstat.size - else - # use chunked upload - @size = nil - end - elsif @body[-1].is_a?(String) - @body[-1] += part.to_s - @size += part.to_s.size if @size - else - @body << part.to_s - @size += part.to_s.size if @size - end - end - - def parts - if @as_stream - @body - else - [@body.join] - end - end - end - - def build_query_multipart_str(query, boundary) - parts = Parts.new - query.each do |attr, value| - value ||= '' - headers = ["--#{boundary}"] - if Message.file?(value) - remember_pos(value) - param_str = params_from_file(value).collect { |k, v| - "#{k}=\"#{v}\"" - }.join("; ") - if value.respond_to?(:mime_type) - content_type = value.mime_type - else - content_type = Message.mime_type(value.path) - end - headers << %{Content-Disposition: form-data; name="#{attr}"; #{param_str}} - headers << %{Content-Type: #{content_type}} - else - headers << %{Content-Disposition: form-data; name="#{attr}"} - end - parts.add(headers.join(CRLF) + CRLF + CRLF) - parts.add(value) - parts.add(CRLF) - end - parts.add("--#{boundary}--" + CRLF + CRLF) # empty epilogue - parts - end - - def params_from_file(value) - params = {} - params['filename'] = File.basename(value.path || '') - # Creation time is not available from File::Stat - if value.respond_to?(:mtime) - params['modification-date'] = value.mtime.rfc822 - end - if value.respond_to?(:atime) - params['read-date'] = value.atime.rfc822 - end - params - end - end - - - class << self - private :new - - # Creates a Message instance of 'CONNECT' request. - # 'CONNECT' request does not have Body. - # uri:: an URI that need to connect. Only uri.host and uri.port are used. - def new_connect_request(uri) - m = new - m.header.init_connect_request(uri) - m.header.body_size = nil - m - end - - # Creates a Message instance of general request. - # method:: HTTP method String. - # uri:: an URI object which represents an URL of web resource. - # query:: a Hash or an Array of query part of URL. - # e.g. { "a" => "b" } => 'http://host/part?a=b' - # Give an array to pass multiple value like - # [["a", "b"], ["a", "c"]] => 'http://host/part?a=b&a=c' - # body:: a Hash or an Array of body part. - # e.g. { "a" => "b" } => 'a=b'. - # Give an array to pass multiple value like - # [["a", "b"], ["a", "c"]] => 'a=b&a=c'. - # boundary:: When the boundary given, it is sent as - # a multipart/form-data using this boundary String. - def new_request(method, uri, query = nil, body = nil, boundary = nil) - m = new - m.header.init_request(method, uri, query) - m.body = Body.new - m.body.init_request(body || '', boundary) - if body - m.header.body_size = m.body.size - m.header.chunked = true if m.body.size.nil? - else - m.header.body_size = nil - end - m - end - - # Creates a Message instance of response. - # body:: a String or an IO of response message body. - def new_response(body) - m = new - m.header.init_response(Status::OK) - m.body = Body.new - m.body.init_response(body) - m.header.body_size = m.body.size || 0 - m - end - - @@mime_type_handler = nil - - # Sets MIME type handler. - # - # handler must respond to :call with a single argument :path and returns - # a MIME type String e.g. 'text/html'. - # When the handler returns nil or an empty String, - # 'application/octet-stream' is used. - # - # When you set nil to the handler, internal_mime_type is used instead. - # The handler is nil by default. - def mime_type_handler=(handler) - @@mime_type_handler = handler - end - - # Returns MIME type handler. - def mime_type_handler - @@mime_type_handler - end - - # For backward compatibility. - alias set_mime_type_func mime_type_handler= - alias get_mime_type_func mime_type_handler - - def mime_type(path) # :nodoc: - if @@mime_type_handler - res = @@mime_type_handler.call(path) - if !res || res.to_s == '' - return 'application/octet-stream' - else - return res - end - else - internal_mime_type(path) - end - end - - # Default MIME type handler. - # See mime_type_handler=. - def internal_mime_type(path) - case path - when /\.txt$/i - 'text/plain' - when /\.(htm|html)$/i - 'text/html' - when /\.doc$/i - 'application/msword' - when /\.png$/i - 'image/png' - when /\.gif$/i - 'image/gif' - when /\.(jpg|jpeg)$/i - 'image/jpeg' - else - 'application/octet-stream' - end - end - - # Returns true if the given HTTP version allows keep alive connection. - # version:: Float - def keep_alive_enabled?(version) - version >= 1.1 - end - - # Returns true if the given query (or body) has a multiple parameter. - def multiparam_query?(query) - query.is_a?(Array) or query.is_a?(Hash) - end - - # Returns true if the given object is a File. In HTTPClient, a file is; - # * must respond to :read for retrieving String chunks. - # * must respond to :path and returns a path for Content-Disposition. - # * must respond to :pos and :pos= to rewind for reading. - # Rewinding is only needed for following HTTP redirect. Some IO impl - # defines :pos= but raises an Exception for pos= such as StringIO - # but there's no problem as far as using it for non-following methods - # (get/post/etc.) - def file?(obj) - obj.respond_to?(:read) and obj.respond_to?(:path) and - obj.respond_to?(:pos) and obj.respond_to?(:pos=) - end - - def create_query_part_str(query) # :nodoc: - if multiparam_query?(query) - escape_query(query) - elsif query.respond_to?(:read) - query = query.read - else - query.to_s - end - end - - def escape_query(query) # :nodoc: - query.collect { |attr, value| - if value.respond_to?(:read) - value = value.read - end - escape(attr.to_s) << '=' << escape(value.to_s) - }.join('&') - end - - # from CGI.escape - def escape(str) # :nodoc: - str.gsub(/([^ a-zA-Z0-9_.-]+)/n) { - '%' + $1.unpack('H2' * $1.size).join('%').upcase - }.tr(' ', '+') - end - end - - - # HTTP::Message::Headers:: message header. - attr_accessor :header - - # HTTP::Message::Body:: message body. - attr_reader :body - - # OpenSSL::X509::Certificate:: response only. server certificate which is - # used for retrieving the response. - attr_accessor :peer_cert - - # Creates a Message. This method should be used internally. - # Use Message.new_connect_request, Message.new_request or - # Message.new_response instead. - def initialize # :nodoc: - @header = Headers.new - @body = @peer_cert = nil - end - - # Dumps message (header and body) to given dev. - # dev needs to respond to <<. - def dump(dev = '') - str = header.dump + CRLF - if header.chunked - dev = body.dump_chunked(str, dev) - elsif body - dev = body.dump(str, dev) - else - dev << str - end - dev - end - - # Sets a new body. header.body_size is updated with new body.size. - def body=(body) - @body = body - @header.body_size = @body.size if @header - end - - # Returns HTTP version in a HTTP header. Float. - def version - @header.http_version - end - - # Sets HTTP version in a HTTP header. Float. - def version=(version) - @header.http_version = version - end - - # Returns HTTP status code in response. Integer. - def status - @header.status_code - end - - alias code status - alias status_code status - - # Sets HTTP status code of response. Integer. - # Reason phrase is updated, too. - def status=(status) - @header.status_code = status - end - - # Returns HTTP status reason phrase in response. String. - def reason - @header.reason_phrase - end - - # Sets HTTP status reason phrase of response. String. - def reason=(reason) - @header.reason_phrase = reason - end - - # Sets 'Content-Type' header value. Overrides if already exists. - def contenttype - @header.contenttype - end - - # Returns 'Content-Type' header value. - def contenttype=(contenttype) - @header.contenttype = contenttype - end - - # Returns a content of message body. A String or an IO. - def content - @body.content - end - end - - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/session.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/session.rb deleted file mode 100644 index 5ac5cd60..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/session.rb +++ /dev/null @@ -1,863 +0,0 @@ -# HTTPClient - HTTP client library. -# Copyright (C) 2000-2009 NAKAMURA, Hiroshi . -# -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - -# httpclient/session.rb is based on http-access.rb in http-access/0.0.4. -# Some part of code in http-access.rb was recycled in httpclient.rb. -# Those part is copyrighted by Maehashi-san. - - -require 'socket' -require 'thread' -require 'stringio' - -require 'httpclient/timeout' -require 'httpclient/ssl_config' -require 'httpclient/http' - - -class HTTPClient - - - # Represents a Site: protocol scheme, host String and port Number. - class Site - # Protocol scheme. - attr_accessor :scheme - # Host String. - attr_reader :host - # Port number. - attr_reader :port - - # Creates a new Site based on the given URI. - def initialize(uri = nil) - if uri - @scheme = uri.scheme - @host = uri.host - @port = uri.port.to_i - else - @scheme = 'tcp' - @host = '0.0.0.0' - @port = 0 - end - end - - # Returns address String. - def addr - "#{@scheme}://#{@host}:#{@port.to_s}" - end - - # Returns true is scheme, host and port are '==' - def ==(rhs) - (@scheme == rhs.scheme) and (@host == rhs.host) and (@port == rhs.port) - end - - # Same as ==. - def eql?(rhs) - self == rhs - end - - def hash # :nodoc: - [@scheme, @host, @port].hash - end - - def to_s # :nodoc: - addr - end - - # Returns true if scheme, host and port of the given URI matches with this. - def match(uri) - (@scheme == uri.scheme) and (@host == uri.host) and (@port == uri.port.to_i) - end - - def inspect # :nodoc: - sprintf("#<%s:0x%x %s>", self.class.name, __id__, addr) - end - end - - - # Manages sessions for a HTTPClient instance. - class SessionManager - # Name of this client. Used for 'User-Agent' header in HTTP request. - attr_accessor :agent_name - # Owner of this client. Used for 'From' header in HTTP request. - attr_accessor :from - - # Requested protocol version - attr_accessor :protocol_version - # Chunk size for chunked request - attr_accessor :chunk_size - # Device for dumping log for debugging - attr_accessor :debug_dev - # Boolean value for Socket#sync - attr_accessor :socket_sync - - attr_accessor :connect_timeout - # Maximum retry count. 0 for infinite. - attr_accessor :connect_retry - attr_accessor :send_timeout - attr_accessor :receive_timeout - attr_accessor :read_block_size - attr_accessor :protocol_retry_count - - attr_accessor :ssl_config - - attr_reader :test_loopback_http_response - - def initialize(client) - @client = client - @proxy = client.proxy - - @agent_name = nil - @from = nil - - @protocol_version = nil - @debug_dev = client.debug_dev - @socket_sync = true - @chunk_size = 4096 - - @connect_timeout = 60 - @connect_retry = 1 - @send_timeout = 120 - @receive_timeout = 60 # For each read_block_size bytes - @read_block_size = 1024 * 16 # follows net/http change in 1.8.7 - @protocol_retry_count = 5 - - @ssl_config = nil - @test_loopback_http_response = [] - - @sess_pool = [] - @sess_pool_mutex = Mutex.new - end - - def proxy=(proxy) - if proxy.nil? - @proxy = nil - else - @proxy = Site.new(proxy) - end - end - - def query(req, via_proxy) - req.body.chunk_size = @chunk_size - sess = open(req.header.request_uri, via_proxy) - begin - sess.query(req) - rescue - sess.close - raise - end - sess - end - - def reset(uri) - site = Site.new(uri) - close(site) - end - - def reset_all - close_all - end - - def keep(sess) - add_cached_session(sess) - end - - private - - def open(uri, via_proxy = false) - sess = nil - if cached = get_cached_session(uri) - sess = cached - else - sess = Session.new(@client, Site.new(uri), @agent_name, @from) - sess.proxy = via_proxy ? @proxy : nil - sess.socket_sync = @socket_sync - sess.requested_version = @protocol_version if @protocol_version - sess.connect_timeout = @connect_timeout - sess.connect_retry = @connect_retry - sess.send_timeout = @send_timeout - sess.receive_timeout = @receive_timeout - sess.read_block_size = @read_block_size - sess.protocol_retry_count = @protocol_retry_count - sess.ssl_config = @ssl_config - sess.debug_dev = @debug_dev - sess.test_loopback_http_response = @test_loopback_http_response - end - sess - end - - def close_all - @sess_pool_mutex.synchronize do - @sess_pool.each do |sess| - sess.close - end - end - @sess_pool.clear - end - - def close(dest) - if cached = get_cached_session(dest) - cached.close - true - else - false - end - end - - def get_cached_session(uri) - cached = nil - @sess_pool_mutex.synchronize do - new_pool = [] - @sess_pool.each do |s| - if s.dest.match(uri) - cached = s - else - new_pool << s - end - end - @sess_pool = new_pool - end - cached - end - - def add_cached_session(sess) - @sess_pool_mutex.synchronize do - @sess_pool << sess - end - end - end - - - # Wraps up OpenSSL::SSL::SSLSocket and offers debugging features. - class SSLSocketWrap - def initialize(socket, context, debug_dev = nil) - unless SSLEnabled - raise ConfigurationError.new('Ruby/OpenSSL module is required') - end - @context = context - @socket = socket - @ssl_socket = create_openssl_socket(@socket) - @debug_dev = debug_dev - end - - def ssl_connect - @ssl_socket.connect - end - - def post_connection_check(host) - verify_mode = @context.verify_mode || OpenSSL::SSL::VERIFY_NONE - if verify_mode == OpenSSL::SSL::VERIFY_NONE - return - elsif @ssl_socket.peer_cert.nil? and - check_mask(verify_mode, OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT) - raise OpenSSL::SSL::SSLError.new('no peer cert') - end - hostname = host.host - if @ssl_socket.respond_to?(:post_connection_check) and RUBY_VERSION > "1.8.4" - @ssl_socket.post_connection_check(hostname) - else - @context.post_connection_check(@ssl_socket.peer_cert, hostname) - end - end - - def peer_cert - @ssl_socket.peer_cert - end - - def close - @ssl_socket.close - @socket.close - end - - def closed? - @socket.closed? - end - - def eof? - @ssl_socket.eof? - end - - def gets(*args) - str = @ssl_socket.gets(*args) - debug(str) - str - end - - def read(*args) - str = @ssl_socket.read(*args) - debug(str) - str - end - - def readpartial(*args) - str = @ssl_socket.readpartial(*args) - debug(str) - str - end - - def <<(str) - rv = @ssl_socket.write(str) - debug(str) - rv - end - - def flush - @ssl_socket.flush - end - - def sync - @ssl_socket.sync - end - - def sync=(sync) - @ssl_socket.sync = sync - end - - private - - def check_mask(value, mask) - value & mask == mask - end - - def create_openssl_socket(socket) - ssl_socket = nil - if OpenSSL::SSL.const_defined?("SSLContext") - ctx = OpenSSL::SSL::SSLContext.new - @context.set_context(ctx) - ssl_socket = OpenSSL::SSL::SSLSocket.new(socket, ctx) - else - ssl_socket = OpenSSL::SSL::SSLSocket.new(socket) - @context.set_context(ssl_socket) - end - ssl_socket - end - - def debug(str) - @debug_dev << str if @debug_dev && str - end - end - - - # Wraps up a Socket for method interception. - module SocketWrap - def initialize(socket, *args) - super(*args) - @socket = socket - end - - def close - @socket.close - end - - def closed? - @socket.closed? - end - - def eof? - @socket.eof? - end - - def gets(*args) - @socket.gets(*args) - end - - def read(*args) - @socket.read(*args) - end - - def readpartial(*args) - # StringIO doesn't support :readpartial - if @socket.respond_to?(:readpartial) - @socket.readpartial(*args) - else - @socket.read(*args) - end - end - - def <<(str) - @socket << str - end - - def flush - @socket.flush - end - - def sync - @socket.sync - end - - def sync=(sync) - @socket.sync = sync - end - end - - - # Module for intercepting Socket methods and dumps in/out to given debugging - # device. debug_dev must respond to <<. - module DebugSocket - extend SocketWrap - - def debug_dev=(debug_dev) - @debug_dev = debug_dev - end - - def close - super - debug("! CONNECTION CLOSED\n") - end - - def gets(*args) - str = super - debug(str) - str - end - - def read(*args) - str = super - debug(str) - str - end - - def readpartial(*args) - str = super - debug(str) - str - end - - def <<(str) - super - debug(str) - end - - private - - def debug(str) - @debug_dev << str if str && @debug_dev - end - end - - - # Dummy Socket for emulating loopback test. - class LoopBackSocket - include SocketWrap - - def initialize(host, port, response) - super(response.is_a?(StringIO) ? response : StringIO.new(response)) - @host = host - @port = port - end - - def <<(str) - # ignored - end - end - - - # Manages a HTTP session with a Site. - class Session - include HTTPClient::Timeout - - # Destination site - attr_reader :dest - # Proxy site - attr_accessor :proxy - # Boolean value for Socket#sync - attr_accessor :socket_sync - # Requested protocol version - attr_accessor :requested_version - # Device for dumping log for debugging - attr_accessor :debug_dev - - attr_accessor :connect_timeout - attr_accessor :connect_retry - attr_accessor :send_timeout - attr_accessor :receive_timeout - attr_accessor :read_block_size - attr_accessor :protocol_retry_count - - attr_accessor :ssl_config - attr_reader :ssl_peer_cert - attr_accessor :test_loopback_http_response - - def initialize(client, dest, agent_name, from) - @client = client - @dest = dest - @proxy = nil - @socket_sync = true - @requested_version = nil - - @debug_dev = nil - - @connect_timeout = nil - @connect_retry = 1 - @send_timeout = nil - @receive_timeout = nil - @read_block_size = nil - @protocol_retry_count = 5 - - @ssl_config = nil - @ssl_peer_cert = nil - - @test_loopback_http_response = nil - - @agent_name = agent_name - @from = from - @state = :INIT - - @requests = [] - - @status = nil - @reason = nil - @headers = [] - - @socket = nil - @readbuf = nil - end - - # Send a request to the server - def query(req) - connect if @state == :INIT - req.header.request_via_proxy = !@proxy.nil? - begin - timeout(@send_timeout, SendTimeoutError) do - set_header(req) - req.dump(@socket) - # flush the IO stream as IO::sync mode is false - @socket.flush unless @socket_sync - end - rescue Errno::ECONNABORTED, Errno::ECONNRESET, Errno::EPIPE - close - raise KeepAliveDisconnected.new - rescue HTTPClient::TimeoutError - close - raise - rescue - if SSLEnabled and $!.is_a?(OpenSSL::SSL::SSLError) - raise KeepAliveDisconnected.new - else - raise - end - end - - @state = :META if @state == :WAIT - @next_connection = nil - @requests.push(req) - end - - def close - if !@socket.nil? and !@socket.closed? - # @socket.flush may block when it the socket is already closed by - # foreign host and the client runs under MT-condition. - @socket.close - end - @state = :INIT - end - - def closed? - @state == :INIT - end - - def get_header - begin - if @state != :META - raise RuntimeError.new("get_status must be called at the beginning of a session") - end - read_header - rescue - close - raise - end - [@version, @status, @reason, @headers] - end - - def eof? - if !@content_length.nil? - @content_length == 0 - else - @socket.closed? or @socket.eof? - end - end - - def get_body(&block) - begin - read_header if @state == :META - return nil if @state != :DATA - if @chunked - read_body_chunked(&block) - elsif @content_length - read_body_length(&block) - else - read_body_rest(&block) - end - rescue - close - raise - end - if eof? - if @next_connection - @state = :WAIT - else - close - end - end - nil - end - - private - - def set_header(req) - if @requested_version - if /^(?:HTTP\/|)(\d+.\d+)$/ =~ @requested_version - req.version = $1.to_f - end - end - if @agent_name - req.header.set('User-Agent', "#{@agent_name} #{LIB_NAME}") - end - if @from - req.header.set('From', @from) - end - req.header.set('Date', Time.now.httpdate) - end - - # Connect to the server - def connect - site = @proxy || @dest - retry_number = 0 - begin - timeout(@connect_timeout, ConnectTimeoutError) do - @socket = create_socket(site) - if @dest.scheme == 'https' - if @socket.is_a?(LoopBackSocket) - connect_ssl_proxy(@socket, URI.parse(@dest.to_s)) if @proxy - else - @socket = create_ssl_socket(@socket) - connect_ssl_proxy(@socket, URI.parse(@dest.to_s)) if @proxy - @socket.ssl_connect - @socket.post_connection_check(@dest) - @ssl_peer_cert = @socket.peer_cert - end - end - # Use Ruby internal buffering instead of passing data immediately - # to the underlying layer - # => we need to to call explicitly flush on the socket - @socket.sync = @socket_sync - end - rescue RetryableResponse - retry_number += 1 - if retry_number < @protocol_retry_count - retry - end - raise BadResponseError.new("connect to the server failed with status #{@status} #{@reason}") - rescue TimeoutError - if @connect_retry == 0 - retry - else - retry_number += 1 - retry if retry_number < @connect_retry - end - close - raise - end - @state = :WAIT - end - - def create_socket(site) - socket = nil - begin - @debug_dev << "! CONNECT TO #{site.host}:#{site.port}\n" if @debug_dev - if str = @test_loopback_http_response.shift - socket = LoopBackSocket.new(site.host, site.port, str) - else - socket = TCPSocket.new(site.host, site.port) - end - if @debug_dev - @debug_dev << "! CONNECTION ESTABLISHED\n" - socket.extend(DebugSocket) - socket.debug_dev = @debug_dev - end - rescue SystemCallError => e - e.message << " (#{site})" - raise - rescue SocketError => e - e.message << " (#{site})" - raise - end - socket - end - - # wrap socket with OpenSSL. - def create_ssl_socket(raw_socket) - SSLSocketWrap.new(raw_socket, @ssl_config, @debug_dev) - end - - def connect_ssl_proxy(socket, uri) - req = HTTP::Message.new_connect_request(uri) - @client.request_filter.each do |filter| - filter.filter_request(req) - end - set_header(req) - req.dump(@socket) - @socket.flush unless @socket_sync - res = HTTP::Message.new_response('') - parse_header - res.version, res.status, res.reason = @version, @status, @reason - @headers.each do |key, value| - res.header.set(key, value) - end - commands = @client.request_filter.collect { |filter| - filter.filter_response(req, res) - } - if commands.find { |command| command == :retry } - raise RetryableResponse.new - end - unless @status == 200 - raise BadResponseError.new("connect to ssl proxy failed with status #{@status} #{@reason}", res) - end - end - - # Read status block. - def read_header - @content_length = nil - @chunked = false - @chunk_length = 0 - parse_header - - # Head of the request has been parsed. - @state = :DATA - req = @requests.shift - - if req.header.request_method == 'HEAD' - @content_length = 0 - if @next_connection - @state = :WAIT - else - close - end - end - @next_connection = false unless @content_length - end - - StatusParseRegexp = %r(\AHTTP/(\d+\.\d+)\s+(\d\d\d)\s*([^\r\n]+)?\r?\n\z) - def parse_header - timeout(@receive_timeout, ReceiveTimeoutError) do - begin - initial_line = @socket.gets("\n") - if initial_line.nil? - raise KeepAliveDisconnected.new - end - if StatusParseRegexp !~ initial_line - @version = '0.9' - @status = nil - @reason = nil - @next_connection = false - @content_length = nil - @readbuf = initial_line - break - end - @version, @status, @reason = $1, $2.to_i, $3 - @next_connection = HTTP::Message.keep_alive_enabled?(@version.to_f) - @headers = [] - while true - line = @socket.gets("\n") - unless line - raise BadResponseError.new('unexpected EOF') - end - line.chomp! - break if line.empty? - key, value = line.split(/\s*:\s*/, 2) - parse_keepalive_header(key, value) - @headers << [key, value] - end - end while (@version == '1.1' && @status == 100) - end - end - - def parse_keepalive_header(key, value) - key = key.downcase - if key == 'content-length' - @content_length = value.to_i - elsif key == 'transfer-encoding' and value.downcase == 'chunked' - @chunked = true - @chunk_length = 0 - @content_length = nil - elsif key == 'connection' or key == 'proxy-connection' - if value.downcase == 'keep-alive' - @next_connection = true - else - @next_connection = false - end - end - end - - def read_body_length(&block) - return nil if @content_length == 0 - buf = '' - while true - maxbytes = @read_block_size - maxbytes = @content_length if maxbytes > @content_length - timeout(@receive_timeout, ReceiveTimeoutError) do - begin - @socket.readpartial(maxbytes, buf) - rescue EOFError - buf = nil - end - end - if buf && buf.length > 0 - @content_length -= buf.length - yield buf - else - @content_length = 0 - end - return if @content_length == 0 - end - end - - RS = "\r\n" - def read_body_chunked(&block) - buf = '' - while true - len = @socket.gets(RS) - @chunk_length = len.hex - if @chunk_length == 0 - @content_length = 0 - @socket.gets(RS) - return - end - timeout(@receive_timeout, ReceiveTimeoutError) do - @socket.read(@chunk_length + 2, buf) - end - unless buf.empty? - yield buf.slice(0, @chunk_length) - end - end - end - - def read_body_rest - if @readbuf and @readbuf.length > 0 - yield @readbuf - @readbuf = nil - end - buf = '' - while true - timeout(@receive_timeout, ReceiveTimeoutError) do - begin - @socket.readpartial(@read_block_size, buf) - rescue EOFError - buf = nil - end - end - if buf && buf.length > 0 - yield buf - else - return - end - end - end - end - - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/ssl_config.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/ssl_config.rb deleted file mode 100644 index 2bda00ee..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/ssl_config.rb +++ /dev/null @@ -1,417 +0,0 @@ -# HTTPClient - HTTP client library. -# Copyright (C) 2000-2009 NAKAMURA, Hiroshi . -# -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -class HTTPClient - - begin - require 'openssl' - SSLEnabled = true - rescue LoadError - SSLEnabled = false - end - - # Represents SSL configuration for HTTPClient instance. - # The implementation depends on OpenSSL. - # - # == Trust Anchor Control - # - # SSLConfig loads 'httpclient/cacert.p7s' as a trust anchor - # (trusted certificate(s)) with set_trust_ca in initialization time. - # This means that HTTPClient instance trusts some CA certificates by default, - # like Web browsers. 'httpclient/cacert.p7s' is created by the author and - # included in released package. - # - # 'cacert.p7s' is automatically generated from JDK 1.6. - # - # You may want to change trust anchor by yourself. Call clear_cert_store - # then set_trust_ca for that purpose. - class SSLConfig - include OpenSSL if SSLEnabled - - # OpenSSL::X509::Certificate:: certificate for SSL client authenticateion. - # nil by default. (no client authenticateion) - attr_reader :client_cert - # OpenSSL::PKey::PKey:: private key for SSL client authentication. - # nil by default. (no client authenticateion) - attr_reader :client_key - - # A number which represents OpenSSL's verify mode. Default value is - # OpenSSL::SSL::VERIFY_PEER | OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT. - attr_reader :verify_mode - # A number of verify depth. Certification path which length is longer than - # this depth is not allowed. - attr_reader :verify_depth - # A callback handler for custom certificate verification. nil by default. - # If the handler is set, handler.call is invoked just after general - # OpenSSL's verification. handler.call is invoked with 2 arguments, - # ok and ctx; ok is a result of general OpenSSL's verification. ctx is a - # OpenSSL::X509::StoreContext. - attr_reader :verify_callback - # SSL timeout in sec. nil by default. - attr_reader :timeout - # A number of OpenSSL's SSL options. Default value is - # OpenSSL::SSL::OP_ALL | OpenSSL::SSL::OP_NO_SSLv2 - attr_reader :options - # A String of OpenSSL's cipher configuration. Default value is - # ALL:!ADH:!LOW:!EXP:!MD5:+SSLv2:@STRENGTH - # See ciphers(1) man in OpenSSL for more detail. - attr_reader :ciphers - - # OpenSSL::X509::X509::Store used for verification. You can reset the - # store with clear_cert_store and set the new store with cert_store=. - attr_reader :cert_store # don't use if you don't know what it is. - - # For server side configuration. Ignore this. - attr_reader :client_ca # :nodoc: - - # Creates a SSLConfig. - def initialize(client) - return unless SSLEnabled - @client = client - @cert_store = X509::Store.new - @client_cert = @client_key = @client_ca = nil - @verify_mode = SSL::VERIFY_PEER | SSL::VERIFY_FAIL_IF_NO_PEER_CERT - @verify_depth = nil - @verify_callback = nil - @dest = nil - @timeout = nil - @options = defined?(SSL::OP_ALL) ? SSL::OP_ALL | SSL::OP_NO_SSLv2 : nil - @ciphers = "ALL:!ADH:!LOW:!EXP:!MD5:+SSLv2:@STRENGTH" - load_cacerts - end - - # Sets certificate (OpenSSL::X509::Certificate) for SSL client - # authentication. - # client_key and client_cert must be a pair. - # - # Calling this method resets all existing sessions. - def client_cert=(client_cert) - @client_cert = client_cert - change_notify - end - - # Sets private key (OpenSSL::PKey::PKey) for SSL client authentication. - # client_key and client_cert must be a pair. - # - # Calling this method resets all existing sessions. - def client_key=(client_key) - @client_key = client_key - change_notify - end - - # Sets certificate and private key for SSL client authentication. - # cert_file:: must be a filename of PEM/DER formatted file. - # key_file:: must be a filename of PEM/DER formatted file. Key must be an - # RSA key. If you want to use other PKey algorithm, - # use client_key=. - # - # Calling this method resets all existing sessions. - def set_client_cert_file(cert_file, key_file) - @client_cert = X509::Certificate.new(File.open(cert_file).read) - @client_key = PKey::RSA.new(File.open(key_file).read) - change_notify - end - - # Drops current certificate store (OpenSSL::X509::Store) for SSL and create - # new one for the next session. - # - # Calling this method resets all existing sessions. - def clear_cert_store - @cert_store = X509::Store.new - change_notify - end - - # Sets new certificate store (OpenSSL::X509::Store). - # don't use if you don't know what it is. - # - # Calling this method resets all existing sessions. - def cert_store=(cert_store) - @cert_store = cert_store - change_notify - end - - # Sets trust anchor certificate(s) for verification. - # trust_ca_file_or_hashed_dir:: a filename of a PEM/DER formatted - # OpenSSL::X509::Certificate or - # a 'c-rehash'eddirectory name which stores - # trusted certificate files. - # - # Calling this method resets all existing sessions. - def set_trust_ca(trust_ca_file_or_hashed_dir) - if FileTest.directory?(trust_ca_file_or_hashed_dir) - @cert_store.add_path(trust_ca_file_or_hashed_dir) - else - @cert_store.add_file(trust_ca_file_or_hashed_dir) - end - change_notify - end - - # Adds CRL for verification. - # crl:: a OpenSSL::X509::CRL or a filename of a PEM/DER formatted - # OpenSSL::X509::CRL. - # - # Calling this method resets all existing sessions. - def set_crl(crl) - unless crl.is_a?(X509::CRL) - crl = X509::CRL.new(File.open(crl).read) - end - @cert_store.add_crl(crl) - @cert_store.flags = X509::V_FLAG_CRL_CHECK | X509::V_FLAG_CRL_CHECK_ALL - change_notify - end - - # Sets verify mode of OpenSSL. New value must be a combination of - # constants OpenSSL::SSL::VERIFY_* - # - # Calling this method resets all existing sessions. - def verify_mode=(verify_mode) - @verify_mode = verify_mode - change_notify - end - - # Sets verify depth. New value must be a number. - # - # Calling this method resets all existing sessions. - def verify_depth=(verify_depth) - @verify_depth = verify_depth - change_notify - end - - # Sets callback handler for custom certificate verification. - # See verify_callback. - # - # Calling this method resets all existing sessions. - def verify_callback=(verify_callback) - @verify_callback = verify_callback - change_notify - end - - # Sets SSL timeout in sec. - # - # Calling this method resets all existing sessions. - def timeout=(timeout) - @timeout = timeout - change_notify - end - - # Sets SSL options. New value must be a combination of # constants - # OpenSSL::SSL::OP_* - # - # Calling this method resets all existing sessions. - def options=(options) - @options = options - change_notify - end - - # Sets cipher configuration. New value must be a String. - # - # Calling this method resets all existing sessions. - def ciphers=(ciphers) - @ciphers = ciphers - change_notify - end - - def client_ca=(client_ca) # :nodoc: - @client_ca = client_ca - change_notify - end - - # interfaces for SSLSocketWrap. - def set_context(ctx) # :nodoc: - # Verification: Use Store#verify_callback instead of SSLContext#verify*? - ctx.cert_store = @cert_store - ctx.verify_mode = @verify_mode - ctx.verify_depth = @verify_depth if @verify_depth - ctx.verify_callback = @verify_callback || method(:default_verify_callback) - # SSL config - ctx.cert = @client_cert - ctx.key = @client_key - ctx.client_ca = @client_ca - ctx.timeout = @timeout - ctx.options = @options - ctx.ciphers = @ciphers - end - - # post connection check proc for ruby < 1.8.5. - # this definition must match with the one in ext/openssl/lib/openssl/ssl.rb - def post_connection_check(peer_cert, hostname) # :nodoc: - check_common_name = true - cert = peer_cert - cert.extensions.each{|ext| - next if ext.oid != "subjectAltName" - ext.value.split(/,\s+/).each{|general_name| - if /\ADNS:(.*)/ =~ general_name - check_common_name = false - reg = Regexp.escape($1).gsub(/\\\*/, "[^.]+") - return true if /\A#{reg}\z/i =~ hostname - elsif /\AIP Address:(.*)/ =~ general_name - check_common_name = false - return true if $1 == hostname - end - } - } - if check_common_name - cert.subject.to_a.each{|oid, value| - if oid == "CN" - reg = Regexp.escape(value).gsub(/\\\*/, "[^.]+") - return true if /\A#{reg}\z/i =~ hostname - end - } - end - raise SSL::SSLError, "hostname was not match with the server certificate" - end - - # Default callback for verification: only dumps error. - def default_verify_callback(is_ok, ctx) - if $DEBUG - puts "#{ is_ok ? 'ok' : 'ng' }: #{ctx.current_cert.subject}" - end - if !is_ok - depth = ctx.error_depth - code = ctx.error - msg = ctx.error_string - STDERR.puts "at depth #{depth} - #{code}: #{msg}" - end - is_ok - end - - # Sample callback method: CAUTION: does not check CRL/ARL. - def sample_verify_callback(is_ok, ctx) - unless is_ok - depth = ctx.error_depth - code = ctx.error - msg = ctx.error_string - STDERR.puts "at depth #{depth} - #{code}: #{msg}" if $DEBUG - return false - end - - cert = ctx.current_cert - self_signed = false - ca = false - pathlen = nil - server_auth = true - self_signed = (cert.subject.cmp(cert.issuer) == 0) - - # Check extensions whatever its criticality is. (sample) - cert.extensions.each do |ex| - case ex.oid - when 'basicConstraints' - /CA:(TRUE|FALSE), pathlen:(\d+)/ =~ ex.value - ca = ($1 == 'TRUE') - pathlen = $2.to_i - when 'keyUsage' - usage = ex.value.split(/\s*,\s*/) - ca = usage.include?('Certificate Sign') - server_auth = usage.include?('Key Encipherment') - when 'extendedKeyUsage' - usage = ex.value.split(/\s*,\s*/) - server_auth = usage.include?('Netscape Server Gated Crypto') - when 'nsCertType' - usage = ex.value.split(/\s*,\s*/) - ca = usage.include?('SSL CA') - server_auth = usage.include?('SSL Server') - end - end - - if self_signed - STDERR.puts 'self signing CA' if $DEBUG - return true - elsif ca - STDERR.puts 'middle level CA' if $DEBUG - return true - elsif server_auth - STDERR.puts 'for server authentication' if $DEBUG - return true - end - - return false - end - - private - - def change_notify - @client.reset_all - end - - def load_cacerts - [ - [DIST_CERT, 'cacert.p7s'], - [DIST_CERT_SHA1, 'cacert_sha1.p7s'] - ].each do |cert_str, ca_file| - file = File.join(File.dirname(__FILE__), ca_file) - if File.exist?(file) - p7 = PKCS7.read_smime(File.open(file) { |f| f.read }) - selfcert = X509::Certificate.new(cert_str) - store = X509::Store.new - store.add_cert(selfcert) - if (p7.verify(nil, store, p7.data, 0)) - set_trust_ca(file) - return - end - end - end - STDERR.puts("cacerts loading failed") - end - - DIST_CERT =<<__DIST_CERT__ ------BEGIN CERTIFICATE----- -MIID/TCCAuWgAwIBAgIBATANBgkqhkiG9w0BAQ0FADBLMQswCQYDVQQGEwJKUDER -MA8GA1UECgwIY3Rvci5vcmcxFDASBgNVBAsMC0RldmVsb3BtZW50MRMwEQYDVQQD -DApodHRwY2xpZW50MB4XDTA5MDUyMTEyMzkwNVoXDTM3MTIzMTIzNTk1OVowSzEL -MAkGA1UEBhMCSlAxETAPBgNVBAoMCGN0b3Iub3JnMRQwEgYDVQQLDAtEZXZlbG9w -bWVudDETMBEGA1UEAwwKaHR0cGNsaWVudDCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAM2PlkdTH97zvIHoPIMj87wnNvpqIQUD7L/hlysO0XBsmR/XZUeU -ZKB10JQqMXviWpTnU9KU6xGTx3EI4wfd2dpLwH/d4d7K4LngW1kY7kJlZeJhakno -GzQ40RSI9WkQ0R9KOE888f7OkTBafcL8UyWFVIMhQBw2d9iNl4Jc69QojayCDoSX -XbbEP0n8yi7HwIU3RFuX6DtMpOx4/1K7Z002ccOGJ3J9kHgeDQSQtF42cQYC7qj2 -67I/OQgnB7ycxTCP0E7bdXQg+zqsngrhaoNn/+I+CoO7nD4t4uQ+B4agALh4PPxs -bQD9MCL+VurNGLYv0HVd+ZlLblpddC9PLTsCAwEAAaOB6zCB6DAPBgNVHRMBAf8E -BTADAQH/MDEGCWCGSAGG+EIBDQQkFiJSdWJ5L09wZW5TU0wgR2VuZXJhdGVkIENl -cnRpZmljYXRlMB0GA1UdDgQWBBRAnB6XlMoOcm7HVAw+JWxY205PHTAOBgNVHQ8B -Af8EBAMCAQYwcwYDVR0jBGwwaoAUQJwel5TKDnJux1QMPiVsWNtOTx2hT6RNMEsx -CzAJBgNVBAYTAkpQMREwDwYDVQQKDAhjdG9yLm9yZzEUMBIGA1UECwwLRGV2ZWxv -cG1lbnQxEzARBgNVBAMMCmh0dHBjbGllbnSCAQEwDQYJKoZIhvcNAQENBQADggEB -ABVFepybD5XqsBnOn/oDHvK0xAPMF4Ap4Ht1yMQLObg8paVhANSdqIevPlCr/mPL -DRjcy+J1fCnE6lCfsfLdTgAjirqt8pm92NccxmJ8hTmMd3LWC1n+eYWaolqTCVRM -Bpe8UY9enyXrFoudHlr9epr18E6As6VrCSfpXFZkD9WHVSWpzkB3qATu5qcDCzCH -bI0755Mdm/1hKJCD4l69h3J3OhRIEUPJfHnPvM5wtiyC2dcE9itwE/wdVzBJeIBX -JQm+Qj+K8qXcRTzZZGIBjw2n46xJgW6YncNCHU/WWfNCYwdkngHS/aN8IbEjhCwf -viXFisVrDN/+pZZGMf67ZaY= ------END CERTIFICATE----- -__DIST_CERT__ - - DIST_CERT_SHA1 =<<__DIST_CERT__ ------BEGIN CERTIFICATE----- -MIID/TCCAuWgAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJKUDER -MA8GA1UECgwIY3Rvci5vcmcxFDASBgNVBAsMC0RldmVsb3BtZW50MRMwEQYDVQQD -DApodHRwY2xpZW50MB4XDTA5MDYyNTE0MjUzN1oXDTEwMTIzMTIzNTk1OVowSzEL -MAkGA1UEBhMCSlAxETAPBgNVBAoMCGN0b3Iub3JnMRQwEgYDVQQLDAtEZXZlbG9w -bWVudDETMBEGA1UEAwwKaHR0cGNsaWVudDCCASIwDQYJKoZIhvcNAQEBBQADggEP -ADCCAQoCggEBAM2PlkdTH97zvIHoPIMj87wnNvpqIQUD7L/hlysO0XBsmR/XZUeU -ZKB10JQqMXviWpTnU9KU6xGTx3EI4wfd2dpLwH/d4d7K4LngW1kY7kJlZeJhakno -GzQ40RSI9WkQ0R9KOE888f7OkTBafcL8UyWFVIMhQBw2d9iNl4Jc69QojayCDoSX -XbbEP0n8yi7HwIU3RFuX6DtMpOx4/1K7Z002ccOGJ3J9kHgeDQSQtF42cQYC7qj2 -67I/OQgnB7ycxTCP0E7bdXQg+zqsngrhaoNn/+I+CoO7nD4t4uQ+B4agALh4PPxs -bQD9MCL+VurNGLYv0HVd+ZlLblpddC9PLTsCAwEAAaOB6zCB6DAPBgNVHRMBAf8E -BTADAQH/MDEGCWCGSAGG+EIBDQQkFiJSdWJ5L09wZW5TU0wgR2VuZXJhdGVkIENl -cnRpZmljYXRlMB0GA1UdDgQWBBRAnB6XlMoOcm7HVAw+JWxY205PHTAOBgNVHQ8B -Af8EBAMCAQYwcwYDVR0jBGwwaoAUQJwel5TKDnJux1QMPiVsWNtOTx2hT6RNMEsx -CzAJBgNVBAYTAkpQMREwDwYDVQQKDAhjdG9yLm9yZzEUMBIGA1UECwwLRGV2ZWxv -cG1lbnQxEzARBgNVBAMMCmh0dHBjbGllbnSCAQIwDQYJKoZIhvcNAQEFBQADggEB -AGKhgByl/ur6SBFFKJcISJONFRaxf2ji0l6ut9XO1H2BSOSRjUbsFDWdWZG+D24Q -JKKseSWPWAC5uHq00sBWkvmtip+duESPeDEdumdBhdiUUgGamW2Ew2y4yAdAVDeG -t1p2fs8SylQN6AMTG/+R+MGHxhvg+UELYLcvAjjcDW2VhDQaJ1eFEfcMW1zRtvvh -LJmVErouwFKyAjwhbF6sNxmToSnbO1ciWwIILMsOBNHMETCp+SzkRDIRWIkm6m+q -RwRyYoHysODGvnu8VXS1hGRr2GIxeBga7dAGa2VLE/iUQ0d4lEskYU+6C4ZLyAWF -O89dvLNRzpL10MaWCYVREks= ------END CERTIFICATE----- -__DIST_CERT__ - end - - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/timeout.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/timeout.rb deleted file mode 100644 index 3eb7e930..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/timeout.rb +++ /dev/null @@ -1,136 +0,0 @@ -# HTTPClient - HTTP client library. -# Copyright (C) 2000-2009 NAKAMURA, Hiroshi . -# -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -require 'timeout' -require 'thread' - - -class HTTPClient - - - # Replaces timeout.rb to avoid Thread creation and scheduling overhead. - # - # You should check another timeout replace in WEBrick. - # See lib/webrick/utils.rb in ruby/1.9. - # - # About this implementation: - # * Do not create Thread for each timeout() call. Just create 1 Thread for - # timeout scheduler. - # * Do not wakeup the scheduler thread so often. Let scheduler thread sleep - # until the nearest period. - class TimeoutScheduler - - # Represents timeout period. - class Period - attr_reader :thread, :time - - # Creates new Period. - def initialize(thread, time, ex) - @thread, @time, @ex = thread, time, ex - @lock = Mutex.new - end - - # Raises if thread exists and alive. - def raise(message) - @lock.synchronize do - if @thread and @thread.alive? - @thread.raise(@ex, message) - end - end - end - - # Cancel this Period. Mutex is needed to avoid too-late exception. - def cancel - @lock.synchronize do - @thread = nil - end - end - end - - # Creates new TimeoutScheduler. - def initialize - @pool = {} - @next = nil - @thread = start_timer_thread - end - - # Registers new timeout period. - def register(thread, sec, ex) - period = Period.new(thread, Time.now + sec, ex || ::Timeout::Error) - @pool[period] = true - if @next.nil? or period.time < @next - begin - @thread.wakeup - rescue ThreadError - # Thread may be dead by fork. - @thread = start_timer_thread - end - end - period - end - - # Cancels the given period. - def cancel(period) - @pool.delete(period) - period.cancel - end - - private - - def start_timer_thread - thread = Thread.new { - while true - if @pool.empty? - @next = nil - sleep - else - min, = @pool.min { |a, b| a[0].time <=> b[0].time } - @next = min.time - sec = @next - Time.now - if sec > 0 - sleep(sec) - end - end - now = Time.now - @pool.keys.each do |period| - if period.time < now - period.raise('execution expired') - cancel(period) - end - end - end - } - Thread.pass while thread.status != 'sleep' - thread - end - end - - class << self - # CAUTION: caller must aware of race condition. - def timeout_scheduler - @timeout_scheduler ||= TimeoutScheduler.new - end - end - timeout_scheduler # initialize at first time. - - module Timeout - def timeout(sec, ex = nil, &block) - return yield if sec == nil or sec.zero? - scheduler = nil - begin - scheduler = HTTPClient.timeout_scheduler - period = scheduler.register(Thread.current, sec, ex) - yield(sec) - ensure - scheduler.cancel(period) if scheduler and period - end - end - end - - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/util.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/util.rb deleted file mode 100644 index 4f13c6ec..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/httpclient/util.rb +++ /dev/null @@ -1,86 +0,0 @@ -# HTTPClient - HTTP client library. -# Copyright (C) 2000-2009 NAKAMURA, Hiroshi . -# -# This program is copyrighted free software by NAKAMURA, Hiroshi. You can -# redistribute it and/or modify it under the same terms of Ruby's license; -# either the dual license version in 2003, or any later version. - - -require 'uri' - - -class HTTPClient - - - # A module for common function. - module Util - # Keyword argument helper. - # args:: given arguments. - # *field:: a list of arguments to be extracted. - # - # You can extract 3 arguments (a, b, c) with: - # - # include Util - # def my_method(*args) - # a, b, c = keyword_argument(args, :a, :b, :c) - # ... - # end - # my_method(1, 2, 3) - # my_method(:b => 2, :a = 1) - # - # instead of; - # - # def my_method(a, b, c) - # ... - # end - # - def keyword_argument(args, *field) - if args.size == 1 and args[0].is_a?(Hash) - args[0].values_at(*field) - else - args - end - end - - # Gets an URI instance. - def urify(uri) - if uri.nil? - nil - elsif uri.is_a?(URI) - uri - else - URI.parse(uri.to_s) - end - end - - # Returns true if the given 2 URIs have a part_of relationship. - # * the same scheme - # * the same host String (no host resolution or IP-addr conversion) - # * the same port number - # * target URI's path starts with base URI's path. - def uri_part_of(uri, part) - ((uri.scheme == part.scheme) and - (uri.host == part.host) and - (uri.port == part.port) and - uri.path.upcase.index(part.path.upcase) == 0) - end - module_function :uri_part_of - - # Returns parent directory URI of the given URI. - def uri_dirname(uri) - uri = uri.clone - uri.path = uri.path.sub(/\/[^\/]*\z/, '/') - uri - end - module_function :uri_dirname - - # Finds a value of a Hash. - def hash_find_value(hash, &block) - v = hash.find(&block) - v ? v[1] : nil - end - module_function :hash_find_value - end - - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/tags b/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/tags deleted file mode 100644 index 6ca07f81..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/httpclient-2.1.5.2/lib/tags +++ /dev/null @@ -1,908 +0,0 @@ -::HTTP httpclient/http.rb /^module HTTP/ -::HTTP::Message httpclient/http.rb /^ class Message/ -::HTTP::Message#HTTP::Message.new httpclient/http.rb /^ def initialize/ -::HTTP::Message#body httpclient/http.rb /^ attr_reader :body/ -::HTTP::Message#body= httpclient/http.rb /^ def body=/ -::HTTP::Message#code httpclient/http.rb /^ alias code/ -::HTTP::Message#content httpclient/http.rb /^ def content/ -::HTTP::Message#contenttype httpclient/http.rb /^ def contenttype/ -::HTTP::Message#contenttype= httpclient/http.rb /^ def contenttype=/ -::HTTP::Message#dump httpclient/http.rb /^ def dump/ -::HTTP::Message#header httpclient/http.rb /^ attr_accessor :header/ -::HTTP::Message#peer_cert httpclient/http.rb /^ attr_accessor :peer_cert/ -::HTTP::Message#reason httpclient/http.rb /^ def reason/ -::HTTP::Message#reason= httpclient/http.rb /^ def reason=/ -::HTTP::Message#status httpclient/http.rb /^ def status/ -::HTTP::Message#status= httpclient/http.rb /^ def status=/ -::HTTP::Message#status_code httpclient/http.rb /^ alias status_code/ -::HTTP::Message#version httpclient/http.rb /^ def version/ -::HTTP::Message#version= httpclient/http.rb /^ def version=/ -::HTTP::Message.create_query_part_str httpclient/http.rb /^ def create_query_part_str/ -::HTTP::Message.escape httpclient/http.rb /^ def escape/ -::HTTP::Message.escape_query httpclient/http.rb /^ def escape_query/ -::HTTP::Message.file? httpclient/http.rb /^ def file?/ -::HTTP::Message.get_mime_type_func httpclient/http.rb /^ alias get_mime_type_func/ -::HTTP::Message.internal_mime_type httpclient/http.rb /^ def internal_mime_type/ -::HTTP::Message.keep_alive_enabled? httpclient/http.rb /^ def keep_alive_enabled?/ -::HTTP::Message.mime_type httpclient/http.rb /^ def mime_type/ -::HTTP::Message.mime_type_handler httpclient/http.rb /^ def mime_type_handler/ -::HTTP::Message.mime_type_handler= httpclient/http.rb /^ def mime_type_handler=/ -::HTTP::Message.multiparam_query? httpclient/http.rb /^ def multiparam_query?/ -::HTTP::Message.new_connect_request httpclient/http.rb /^ def new_connect_request/ -::HTTP::Message.new_request httpclient/http.rb /^ def new_request/ -::HTTP::Message.new_response httpclient/http.rb /^ def new_response/ -::HTTP::Message.set_mime_type_func httpclient/http.rb /^ alias set_mime_type_func/ -::HTTP::Message::Body httpclient/http.rb /^ class Body/ -::HTTP::Message::Body#HTTP::Message::Body.new httpclient/http.rb /^ def initialize/ -::HTTP::Message::Body#build_query_multipart_str httpclient/http.rb /^ def build_query_multipart_str/ -::HTTP::Message::Body#chunk_size httpclient/http.rb /^ attr_accessor :chunk_size/ -::HTTP::Message::Body#content httpclient/http.rb /^ def content/ -::HTTP::Message::Body#dump httpclient/http.rb /^ def dump/ -::HTTP::Message::Body#dump_chunk httpclient/http.rb /^ def dump_chunk/ -::HTTP::Message::Body#dump_chunk_size httpclient/http.rb /^ def dump_chunk_size/ -::HTTP::Message::Body#dump_chunked httpclient/http.rb /^ def dump_chunked/ -::HTTP::Message::Body#dump_chunks httpclient/http.rb /^ def dump_chunks/ -::HTTP::Message::Body#dump_last_chunk httpclient/http.rb /^ def dump_last_chunk/ -::HTTP::Message::Body#init_request httpclient/http.rb /^ def init_request/ -::HTTP::Message::Body#init_response httpclient/http.rb /^ def init_response/ -::HTTP::Message::Body#params_from_file httpclient/http.rb /^ def params_from_file/ -::HTTP::Message::Body#remember_pos httpclient/http.rb /^ def remember_pos/ -::HTTP::Message::Body#reset_pos httpclient/http.rb /^ def reset_pos/ -::HTTP::Message::Body#set_content httpclient/http.rb /^ def set_content/ -::HTTP::Message::Body#size httpclient/http.rb /^ attr_reader :size/ -::HTTP::Message::Body::Parts httpclient/http.rb /^ class Parts/ -::HTTP::Message::Body::Parts#HTTP::Message::Body::Parts.new httpclient/http.rb /^ def initialize/ -::HTTP::Message::Body::Parts#add httpclient/http.rb /^ def add/ -::HTTP::Message::Body::Parts#parts httpclient/http.rb /^ def parts/ -::HTTP::Message::Body::Parts#size httpclient/http.rb /^ attr_reader :size/ -::HTTP::Message::Headers httpclient/http.rb /^ class Headers/ -::HTTP::Message::Headers#HTTP::Message::Headers.new httpclient/http.rb /^ def initialize/ -::HTTP::Message::Headers#[] httpclient/http.rb /^ def []/ -::HTTP::Message::Headers#[]= httpclient/http.rb /^ def []=/ -::HTTP::Message::Headers#add httpclient/http.rb /^ def add/ -::HTTP::Message::Headers#all httpclient/http.rb /^ def all/ -::HTTP::Message::Headers#body_charset httpclient/http.rb /^ attr_accessor :body_charset # :nodoc:/ -::HTTP::Message::Headers#body_date httpclient/http.rb /^ attr_accessor :body_date # :nodoc:/ -::HTTP::Message::Headers#body_size httpclient/http.rb /^ attr_reader :body_size/ -::HTTP::Message::Headers#body_size= httpclient/http.rb /^ def body_size=/ -::HTTP::Message::Headers#body_type httpclient/http.rb /^ attr_accessor :body_type # :nodoc:/ -::HTTP::Message::Headers#charset_label httpclient/http.rb /^ def charset_label/ -::HTTP::Message::Headers#chunked httpclient/http.rb /^ attr_accessor :chunked/ -::HTTP::Message::Headers#contenttype httpclient/http.rb /^ def contenttype/ -::HTTP::Message::Headers#contenttype= httpclient/http.rb /^ def contenttype=/ -::HTTP::Message::Headers#create_query_uri httpclient/http.rb /^ def create_query_uri/ -::HTTP::Message::Headers#delete httpclient/http.rb /^ def delete/ -::HTTP::Message::Headers#dump httpclient/http.rb /^ def dump/ -::HTTP::Message::Headers#get httpclient/http.rb /^ def get/ -::HTTP::Message::Headers#http_version httpclient/http.rb /^ attr_accessor :http_version/ -::HTTP::Message::Headers#init_connect_request httpclient/http.rb /^ def init_connect_request/ -::HTTP::Message::Headers#init_request httpclient/http.rb /^ def init_request/ -::HTTP::Message::Headers#init_response httpclient/http.rb /^ def init_response/ -::HTTP::Message::Headers#reason_phrase httpclient/http.rb /^ attr_accessor :reason_phrase/ -::HTTP::Message::Headers#request_line httpclient/http.rb /^ def request_line/ -::HTTP::Message::Headers#request_method httpclient/http.rb /^ attr_reader :request_method/ -::HTTP::Message::Headers#request_query httpclient/http.rb /^ attr_accessor :request_query/ -::HTTP::Message::Headers#request_uri httpclient/http.rb /^ attr_accessor :request_uri/ -::HTTP::Message::Headers#request_via_proxy httpclient/http.rb /^ attr_accessor :request_via_proxy/ -::HTTP::Message::Headers#response_status_line httpclient/http.rb /^ def response_status_line/ -::HTTP::Message::Headers#set httpclient/http.rb /^ def set/ -::HTTP::Message::Headers#set_header httpclient/http.rb /^ def set_header/ -::HTTP::Message::Headers#set_request_header httpclient/http.rb /^ def set_request_header/ -::HTTP::Message::Headers#set_response_header httpclient/http.rb /^ def set_response_header/ -::HTTP::Message::Headers#status_code httpclient/http.rb /^ attr_reader :status_code/ -::HTTP::Message::Headers#status_code= httpclient/http.rb /^ def status_code=/ -::HTTP::Status httpclient/http.rb /^ module Status/ -::HTTP::Status.redirect? httpclient/http.rb /^ def self.redirect?/ -::HTTP::Status.successful? httpclient/http.rb /^ def self.successful?/ -::HTTPClient httpclient.rb /^class HTTPClient/ -::HTTPClient httpclient/auth.rb /^class HTTPClient/ -::HTTPClient httpclient/connection.rb /^class HTTPClient/ -::HTTPClient httpclient/session.rb /^class HTTPClient/ -::HTTPClient httpclient/ssl_config.rb /^class HTTPClient/ -::HTTPClient httpclient/timeout.rb /^class HTTPClient/ -::HTTPClient httpclient/util.rb /^class HTTPClient/ -::HTTPClient#HTTPClient.new httpclient.rb /^ def initialize/ -::HTTPClient#cookie_manager httpclient.rb /^ attr_accessor :cookie_manager/ -::HTTPClient#create_boundary httpclient.rb /^ def create_boundary/ -::HTTPClient#create_request httpclient.rb /^ def create_request/ -::HTTPClient#debug_dev httpclient.rb /^ def debug_dev/ -::HTTPClient#debug_dev= httpclient.rb /^ def debug_dev=/ -::HTTPClient#default_redirect_uri_callback httpclient.rb /^ def default_redirect_uri_callback/ -::HTTPClient#delete httpclient.rb /^ def delete/ -::HTTPClient#delete_async httpclient.rb /^ def delete_async/ -::HTTPClient#do_get_block httpclient.rb /^ def do_get_block/ -::HTTPClient#do_get_header httpclient.rb /^ def do_get_header/ -::HTTPClient#do_get_stream httpclient.rb /^ def do_get_stream/ -::HTTPClient#do_request httpclient.rb /^ def do_request/ -::HTTPClient#do_request_async httpclient.rb /^ def do_request_async/ -::HTTPClient#dump_dummy_request_response httpclient.rb /^ def dump_dummy_request_response/ -::HTTPClient#file_in_form_data? httpclient.rb /^ def file_in_form_data?/ -::HTTPClient#follow_redirect httpclient.rb /^ def follow_redirect/ -::HTTPClient#follow_redirect_count httpclient.rb /^ attr_accessor :follow_redirect_count/ -::HTTPClient#get httpclient.rb /^ def get/ -::HTTPClient#get_async httpclient.rb /^ def get_async/ -::HTTPClient#get_content httpclient.rb /^ def get_content/ -::HTTPClient#getenv httpclient.rb /^ def getenv/ -::HTTPClient#head httpclient.rb /^ def head/ -::HTTPClient#head_async httpclient.rb /^ def head_async/ -::HTTPClient#https? httpclient.rb /^ def https?/ -::HTTPClient#load_environment httpclient.rb /^ def load_environment/ -::HTTPClient#no_proxy httpclient.rb /^ def no_proxy/ -::HTTPClient#no_proxy= httpclient.rb /^ def no_proxy=/ -::HTTPClient#no_proxy? httpclient.rb /^ def no_proxy?/ -::HTTPClient#options httpclient.rb /^ def options/ -::HTTPClient#options_async httpclient.rb /^ def options_async/ -::HTTPClient#override_header httpclient.rb /^ def override_header/ -::HTTPClient#post httpclient.rb /^ def post/ -::HTTPClient#post_async httpclient.rb /^ def post_async/ -::HTTPClient#post_content httpclient.rb /^ def post_content/ -::HTTPClient#propfind httpclient.rb /^ def propfind/ -::HTTPClient#propfind_async httpclient.rb /^ def propfind_async/ -::HTTPClient#proppatch httpclient.rb /^ def proppatch/ -::HTTPClient#proppatch_async httpclient.rb /^ def proppatch_async/ -::HTTPClient#protect_keep_alive_disconnected httpclient.rb /^ def protect_keep_alive_disconnected/ -::HTTPClient#proxy httpclient.rb /^ def proxy/ -::HTTPClient#proxy= httpclient.rb /^ def proxy=/ -::HTTPClient#proxy_auth httpclient.rb /^ attr_reader :proxy_auth/ -::HTTPClient#put httpclient.rb /^ def put/ -::HTTPClient#put_async httpclient.rb /^ def put_async/ -::HTTPClient#redirect_uri_callback= httpclient.rb /^ def redirect_uri_callback=/ -::HTTPClient#request httpclient.rb /^ def request/ -::HTTPClient#request_async httpclient.rb /^ def request_async/ -::HTTPClient#request_filter httpclient.rb /^ attr_reader :request_filter/ -::HTTPClient#reset httpclient.rb /^ def reset/ -::HTTPClient#reset_all httpclient.rb /^ def reset_all/ -::HTTPClient#save_cookie_store httpclient.rb /^ def save_cookie_store/ -::HTTPClient#set_auth httpclient.rb /^ def set_auth/ -::HTTPClient#set_basic_auth httpclient.rb /^ def set_basic_auth/ -::HTTPClient#set_cookie_store httpclient.rb /^ def set_cookie_store/ -::HTTPClient#set_proxy_auth httpclient.rb /^ def set_proxy_auth/ -::HTTPClient#ssl_config httpclient.rb /^ attr_reader :ssl_config/ -::HTTPClient#strict_redirect_uri_callback httpclient.rb /^ def strict_redirect_uri_callback/ -::HTTPClient#test_loopback_response httpclient.rb /^ attr_reader :test_loopback_response/ -::HTTPClient#trace httpclient.rb /^ def trace/ -::HTTPClient#trace_async httpclient.rb /^ def trace_async/ -::HTTPClient#www_auth httpclient.rb /^ attr_reader :www_auth/ -::HTTPClient.attr_proxy httpclient.rb /^ def attr_proxy/ -::HTTPClient.timeout_scheduler httpclient/timeout.rb /^ def timeout_scheduler/ -::HTTPClient::AuthFilterBase httpclient/auth.rb /^ class AuthFilterBase/ -::HTTPClient::AuthFilterBase#parse_authentication_header httpclient/auth.rb /^ def parse_authentication_header/ -::HTTPClient::AuthFilterBase#parse_challenge_header httpclient/auth.rb /^ def parse_challenge_header/ -::HTTPClient::BadResponseError httpclient.rb /^ class BadResponseError/ -::HTTPClient::BadResponseError#HTTPClient::BadResponseError.new httpclient.rb /^ def initialize/ -::HTTPClient::BadResponseError#res httpclient.rb /^ attr_reader :res/ -::HTTPClient::BasicAuth httpclient/auth.rb /^ class BasicAuth/ -::HTTPClient::BasicAuth#HTTPClient::BasicAuth.new httpclient/auth.rb /^ def initialize/ -::HTTPClient::BasicAuth#challenge httpclient/auth.rb /^ def challenge/ -::HTTPClient::BasicAuth#get httpclient/auth.rb /^ def get/ -::HTTPClient::BasicAuth#reset_challenge httpclient/auth.rb /^ def reset_challenge/ -::HTTPClient::BasicAuth#scheme httpclient/auth.rb /^ attr_reader :scheme/ -::HTTPClient::BasicAuth#set httpclient/auth.rb /^ def set/ -::HTTPClient::ConfigurationError httpclient.rb /^ class ConfigurationError/ -::HTTPClient::ConnectTimeoutError httpclient.rb /^ class ConnectTimeoutError/ -::HTTPClient::Connection httpclient/connection.rb /^ class Connection/ -::HTTPClient::Connection#HTTPClient::Connection.new httpclient/connection.rb /^ def initialize/ -::HTTPClient::Connection#async_thread httpclient/connection.rb /^ attr_accessor :async_thread/ -::HTTPClient::Connection#finished? httpclient/connection.rb /^ def finished?/ -::HTTPClient::Connection#join httpclient/connection.rb /^ def join/ -::HTTPClient::Connection#pop httpclient/connection.rb /^ def pop/ -::HTTPClient::Connection#push httpclient/connection.rb /^ def push/ -::HTTPClient::DebugSocket httpclient/session.rb /^ module DebugSocket/ -::HTTPClient::DebugSocket#<< httpclient/session.rb /^ def < to make json/pure - work in environments that don't provide iconv. - * Applied patch by okkez_ in order to fix Ruby Bug #1768: - http://redmine.ruby-lang.org/issues/show/1768. - * Finally got around to avoid the rather paranoid escaping of ?/ characters - in the generator's output. The parsers aren't affected by this change. - Thanks to Rich Apodaca for the suggestion. -2009-06-29 (1.1.7) - * Security Fix for JSON::Pure::Parser. A specially designed string could - cause catastrophic backtracking in one of the parser's regular expressions - in earlier 1.1.x versions. JSON::Ext::Parser isn't affected by this issue. - Thanks to Bartosz Blimke for reporting this - problem. - * This release also uses a less strict ruby version requirement for the - creation of the mswin32 native gem. -2009-05-10 (1.1.6) - * No changes. І tested native linux gems in the last release and they don't - play well with different ruby versions other than the one the gem was built - with. This release is just to bump the version number in order to skip the - native gem on rubyforge. -2009-05-10 (1.1.5) - * Started to build gems with rake-compiler gem. - * Applied patch object/array class patch from Brian Candler - and fixes. -2009-04-01 (1.1.4) - * Fixed a bug in the creation of serialized generic rails objects reported by - Friedrich Graeter . - * Deleted tests/runner.rb, we're using testrb instead. - * Editor supports Infinity in numbers now. - * Made some changes in order to get the library to compile/run under Ruby - 1.9. - * Improved speed of the code path for the fast_generate method in the pure - variant. -2008-07-10 (1.1.3) - * Wesley Beary reported a bug in json/add/core's DateTime - handling: If the nominator and denominator of the offset were divisible by - each other Ruby's Rational#to_s returns them as an integer not a fraction - with '/'. This caused a ZeroDivisionError during parsing. - * Use Date#start and DateTime#start instead of sg method, while - remaining backwards compatible. - * Supports ragel >= 6.0 now. - * Corrected some tests. - * Some minor changes. -2007-11-27 (1.1.2) - * Remember default dir (last used directory) in editor. - * JSON::Editor.edit method added, the editor can now receive json texts from - the clipboard via C-v. - * Load json texts from an URL pasted via middle button press. - * Added :create_additions option to Parser. This makes it possible to disable - the creation of additions by force, in order to treat json texts as data - while having additions loaded. - * Jacob Maine reported, that JSON(:foo) outputs a JSON - object if the rails addition is enabled, which is wrong. It now outputs a - JSON string "foo" instead, like suggested by Jacob Maine. - * Discovered a bug in the Ruby Bugs Tracker on rubyforge, that was reported - by John Evans lgastako@gmail.com. He could produce a crash in the JSON - generator by returning something other than a String instance from a - to_json method. I now guard against this by doing a rather crude type - check, which raises an exception instead of crashing. -2007-07-06 (1.1.1) - * Yui NARUSE sent some patches to fix tests for Ruby - 1.9. I applied them and adapted some of them a bit to run both on 1.8 and - 1.9. - * Introduced a JSON.parse! method without depth checking for people who like - danger. - * Made generate and pretty_generate methods configurable by an options hash. - * Added :allow_nan option to parser and generator in order to handle NaN, - Infinity, and -Infinity correctly - if requested. Floats, which aren't numbers, - aren't valid JSON according to RFC4627, so by default an exception will be - raised if any of these symbols are encountered. Thanks to Andrea Censi - for his hint about this. - * Fixed some more tests for Ruby 1.9. - * Implemented dump/load interface of Marshal as suggested in ruby-core:11405 - by murphy . - * Implemented the max_nesting feature for generate methods, too. - * Added some implementations for ruby core's custom objects for - serialisation/deserialisation purposes. -2007-05-21 (1.1.0) - * Implemented max_nesting feature for parser to avoid stack overflows for - data from untrusted sources. If you trust the source, you can disable it - with the option max_nesting => false. - * Piers Cawley reported a bug, that not every - character can be escaped by ?\ as required by RFC4627. There's a - contradiction between David Crockford's JSON checker test vectors (in - tests/fixtures) and RFC4627, though. I decided to stick to the RFC, because - the JSON checker seems to be a bit older than the RFC. - * Extended license to Ruby License, which includes the GPL. - * Added keyboard shortcuts, and 'Open location' menu item to edit_json.rb. -2007-05-09 (1.0.4) - * Applied a patch from Yui NARUSE to make JSON compile - under Ruby 1.9. Thank you very much for mailing it to me! - * Made binary variants of JSON fail early, instead of falling back to the - pure version. This should avoid overshadowing of eventual problems while - loading of the binary. -2007-03-24 (1.0.3) - * Improved performance of pure variant a bit. - * The ext variant of this release supports the mswin32 platform. Ugh! -2007-03-24 (1.0.2) - * Ext Parser didn't parse 0e0 correctly into 0.0: Fixed! -2007-03-24 (1.0.1) - * Forgot some object files in the build dir. I really like that - not! -2007-03-24 (1.0.0) - * Added C implementations for the JSON generator and a ragel based JSON - parser in C. - * Much more tests, especially fixtures from json.org. - * Further improved conformance to RFC4627. -2007-02-09 (0.4.3) - * Conform more to RFC4627 for JSON: This means JSON strings - now always must contain exactly one object "{ ... }" or array "[ ... ]" in - order to be parsed without raising an exception. The definition of what - constitutes a whitespace is narrower in JSON than in Ruby ([ \t\r\n]), and - there are differences in floats and integers (no octals or hexadecimals) as - well. - * Added aliases generate and pretty_generate of unparse and pretty_unparse. - * Fixed a test case. - * Catch an Iconv::InvalidEncoding exception, that seems to occur on some Sun - boxes with SunOS 5.8, if iconv doesn't support utf16 conversions. This was - reported by Andrew R Jackson , thanks a bunch! -2006-08-25 (0.4.2) - * Fixed a bug in handling solidi (/-characters), that was reported by - Kevin Gilpin . -2006-02-06 (0.4.1) - * Fixed a bug related to escaping with backslashes. Thanks for the report go - to Florian Munz . -2005-09-23 (0.4.0) - * Initial Rubyforge Version diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/COPYING b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/COPYING deleted file mode 100644 index c3a2126d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/COPYING +++ /dev/null @@ -1,58 +0,0 @@ -Ruby is copyrighted free software by Yukihiro Matsumoto . -You can redistribute it and/or modify it under either the terms of the GPL -(see GPL file), or the conditions below: - - 1. You may make and give away verbatim copies of the source form of the - software without restriction, provided that you duplicate all of the - original copyright notices and associated disclaimers. - - 2. You may modify your copy of the software in any way, provided that - you do at least ONE of the following: - - a) place your modifications in the Public Domain or otherwise - make them Freely Available, such as by posting said - modifications to Usenet or an equivalent medium, or by allowing - the author to include your modifications in the software. - - b) use the modified software only within your corporation or - organization. - - c) rename any non-standard executables so the names do not conflict - with standard executables, which must also be provided. - - d) make other distribution arrangements with the author. - - 3. You may distribute the software in object code or executable - form, provided that you do at least ONE of the following: - - a) distribute the executables and library files of the software, - together with instructions (in the manual page or equivalent) - on where to get the original distribution. - - b) accompany the distribution with the machine-readable source of - the software. - - c) give non-standard executables non-standard names, with - instructions on where to get the original software distribution. - - d) make other distribution arrangements with the author. - - 4. You may modify and include the part of the software into any other - software (possibly commercial). But some files in the distribution - are not written by the author, so that they are not under this terms. - - They are gc.c(partly), utils.c(partly), regex.[ch], st.[ch] and some - files under the ./missing directory. See each file for the copying - condition. - - 5. The scripts and library files supplied as input to or produced as - output from the software do not automatically fall under the - copyright of the software, but belong to whomever generated them, - and may be sold commercially, and may be aggregated with this - software. - - 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR - IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE. - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/GPL b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/GPL deleted file mode 100644 index db2fc450..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/GPL +++ /dev/null @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/README b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/README deleted file mode 100644 index 2dd55e2d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/README +++ /dev/null @@ -1,360 +0,0 @@ -== json - JSON Implementation for Ruby - -=== Description - -This is a implementation of the JSON specification according to RFC 4627 -(http://www.ietf.org/rfc/rfc4627.txt). Starting from version 1.0.0 on there -will be two variants available: - -* A pure ruby variant, that relies on the iconv and the stringscan - extensions, which are both part of the ruby standard library. -* The quite a bit faster C extension variant, which is in parts implemented - in C and comes with its own unicode conversion functions and a parser - generated by the ragel state machine compiler - (http://www.cs.queensu.ca/~thurston/ragel). - -Both variants of the JSON generator escape all non-ASCII and control characters -with \uXXXX escape sequences, and support UTF-16 surrogate pairs in order to be -able to generate the whole range of unicode code points. This means that -generated JSON document is encoded as UTF-8 (because ASCII is a subset of -UTF-8) and at the same time avoids decoding problems for receiving endpoints, -that don't expect UTF-8 encoded texts. On the negative side this may lead to a -bit longer strings than necessarry. - -All strings, that are to be encoded as JSON strings, should be UTF-8 byte -sequences on the Ruby side. To encode raw binary strings, that aren't UTF-8 -encoded, please use the to_json_raw_object method of String (which produces -an object, that contains a byte array) and decode the result on the receiving -endpoint. - -The JSON parsers can parse UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, and UTF-32LE -JSON documents under Ruby 1.8. Under Ruby 1.9 they take advantage of Ruby's -M17n features and can parse all documents which have the correct -String#encoding set. If a document string has ASCII-8BIT as an encoding the -parser attempts to figure out which of the UTF encodings from above it is and -trys to parse it. - -=== Installation - -It's recommended to use the extension variant of JSON, because it's faster than -the pure ruby variant. If you cannot build it on your system, you can settle -for the latter. - -Just type into the command line as root: - - # rake install - -The above command will build the extensions and install them on your system. - - # rake install_pure - -or - - # ruby install.rb - -will just install the pure ruby implementation of JSON. - -If you use Rubygems you can type - - # gem install json - -instead, to install the newest JSON version. - -There is also a pure ruby json only variant of the gem, that can be installed -with: - - # gem install json_pure - -=== Compiling the extensions yourself - -If you want to build the extensions yourself you need rake: - - You can get it from rubyforge: - http://rubyforge.org/projects/rake - - or just type - - # gem install rake - - for the installation via rubygems. - -If you want to create the parser.c file from its parser.rl file or draw nice -graphviz images of the state machines, you need ragel from: http://www.cs.queensu.ca/~thurston/ragel - - -=== Usage - -To use JSON you can - require 'json' -to load the installed variant (either the extension 'json' or the pure -variant 'json_pure'). If you have installed the extension variant, you can -pick either the extension variant or the pure variant by typing - require 'json/ext' -or - require 'json/pure' - -Now you can parse a JSON document into a ruby data structure by calling - - JSON.parse(document) - -If you want to generate a JSON document from a ruby data structure call - JSON.generate(data) - -You can also use the pretty_generate method (which formats the output more -verbosely and nicely) or fast_generate (which doesn't do any of the security -checks generate performs, e. g. nesting deepness checks). - -To create a valid JSON document you have to make sure, that the output is -embedded in either a JSON array [] or a JSON object {}. The easiest way to do -this, is by putting your values in a Ruby Array or Hash instance. - -There are also the JSON and JSON[] methods which use parse on a String or -generate a JSON document from an array or hash: - - document = JSON 'test' => 23 # => "{\"test\":23}" - document = JSON['test'] => 23 # => "{\"test\":23}" - -and - - data = JSON '{"test":23}' # => {"test"=>23} - data = JSON['{"test":23}'] # => {"test"=>23} - -You can choose to load a set of common additions to ruby core's objects if -you - require 'json/add/core' - -After requiring this you can, e. g., serialise/deserialise Ruby ranges: - - JSON JSON(1..10) # => 1..10 - -To find out how to add JSON support to other or your own classes, read the -section "More Examples" below. - -To get the best compatibility to rails' JSON implementation, you can - require 'json/add/rails' - -Both of the additions attempt to require 'json' (like above) first, if it has -not been required yet. - -=== More Examples - -To create a JSON document from a ruby data structure, you can call -JSON.generate like that: - - json = JSON.generate [1, 2, {"a"=>3.141}, false, true, nil, 4..10] - # => "[1,2,{\"a\":3.141},false,true,null,\"4..10\"]" - -To get back a ruby data structure from a JSON document, you have to call -JSON.parse on it: - - JSON.parse json - # => [1, 2, {"a"=>3.141}, false, true, nil, "4..10"] - -Note, that the range from the original data structure is a simple -string now. The reason for this is, that JSON doesn't support ranges -or arbitrary classes. In this case the json library falls back to call -Object#to_json, which is the same as #to_s.to_json. - -It's possible to add JSON support serialization to arbitrary classes by -simply implementing a more specialized version of the #to_json method, that -should return a JSON object (a hash converted to JSON with #to_json) like -this (don't forget the *a for all the arguments): - - class Range - def to_json(*a) - { - 'json_class' => self.class.name, # = 'Range' - 'data' => [ first, last, exclude_end? ] - }.to_json(*a) - end - end - -The hash key 'json_class' is the class, that will be asked to deserialise the -JSON representation later. In this case it's 'Range', but any namespace of -the form 'A::B' or '::A::B' will do. All other keys are arbitrary and can be -used to store the necessary data to configure the object to be deserialised. - -If a the key 'json_class' is found in a JSON object, the JSON parser checks -if the given class responds to the json_create class method. If so, it is -called with the JSON object converted to a Ruby hash. So a range can -be deserialised by implementing Range.json_create like this: - - class Range - def self.json_create(o) - new(*o['data']) - end - end - -Now it possible to serialise/deserialise ranges as well: - - json = JSON.generate [1, 2, {"a"=>3.141}, false, true, nil, 4..10] - # => "[1,2,{\"a\":3.141},false,true,null,{\"json_class\":\"Range\",\"data\":[4,10,false]}]" - JSON.parse json - # => [1, 2, {"a"=>3.141}, false, true, nil, 4..10] - -JSON.generate always creates the shortest possible string representation of a -ruby data structure in one line. This is good for data storage or network -protocols, but not so good for humans to read. Fortunately there's also -JSON.pretty_generate (or JSON.pretty_generate) that creates a more readable -output: - - puts JSON.pretty_generate([1, 2, {"a"=>3.141}, false, true, nil, 4..10]) - [ - 1, - 2, - { - "a": 3.141 - }, - false, - true, - null, - { - "json_class": "Range", - "data": [ - 4, - 10, - false - ] - } - ] - -There are also the methods Kernel#j for generate, and Kernel#jj for -pretty_generate output to the console, that work analogous to Core Ruby's p and -the pp library's pp methods. - -The script tools/server.rb contains a small example if you want to test, how -receiving a JSON object from a webrick server in your browser with the -javasript prototype library (http://www.prototypejs.org) works. - -=== Speed Comparisons - -I have created some benchmark results (see the benchmarks/data-p4-3Ghz -subdir of the package) for the JSON-parser to estimate the speed up in the C -extension: - - Comparing times (call_time_mean): - 1 ParserBenchmarkExt#parser 900 repeats: - 553.922304770 ( real) -> 21.500x - 0.001805307 - 2 ParserBenchmarkYAML#parser 1000 repeats: - 224.513358139 ( real) -> 8.714x - 0.004454078 - 3 ParserBenchmarkPure#parser 1000 repeats: - 26.755020642 ( real) -> 1.038x - 0.037376163 - 4 ParserBenchmarkRails#parser 1000 repeats: - 25.763381731 ( real) -> 1.000x - 0.038814780 - calls/sec ( time) -> speed covers - secs/call - -In the table above 1 is JSON::Ext::Parser, 2 is YAML.load with YAML -compatbile JSON document, 3 is is JSON::Pure::Parser, and 4 is -ActiveSupport::JSON.decode. The ActiveSupport JSON-decoder converts the -input first to YAML and then uses the YAML-parser, the conversion seems to -slow it down so much that it is only as fast as the JSON::Pure::Parser! - -If you look at the benchmark data you can see that this is mostly caused by -the frequent high outliers - the median of the Rails-parser runs is still -overall smaller than the median of the JSON::Pure::Parser runs: - - Comparing times (call_time_median): - 1 ParserBenchmarkExt#parser 900 repeats: - 800.592479481 ( real) -> 26.936x - 0.001249075 - 2 ParserBenchmarkYAML#parser 1000 repeats: - 271.002390644 ( real) -> 9.118x - 0.003690004 - 3 ParserBenchmarkRails#parser 1000 repeats: - 30.227910865 ( real) -> 1.017x - 0.033082008 - 4 ParserBenchmarkPure#parser 1000 repeats: - 29.722384421 ( real) -> 1.000x - 0.033644676 - calls/sec ( time) -> speed covers - secs/call - -I have benchmarked the JSON-Generator as well. This generated a few more -values, because there are different modes that also influence the achieved -speed: - - Comparing times (call_time_mean): - 1 GeneratorBenchmarkExt#generator_fast 1000 repeats: - 547.354332608 ( real) -> 15.090x - 0.001826970 - 2 GeneratorBenchmarkExt#generator_safe 1000 repeats: - 443.968212317 ( real) -> 12.240x - 0.002252414 - 3 GeneratorBenchmarkExt#generator_pretty 900 repeats: - 375.104545883 ( real) -> 10.341x - 0.002665923 - 4 GeneratorBenchmarkPure#generator_fast 1000 repeats: - 49.978706968 ( real) -> 1.378x - 0.020008521 - 5 GeneratorBenchmarkRails#generator 1000 repeats: - 38.531868759 ( real) -> 1.062x - 0.025952543 - 6 GeneratorBenchmarkPure#generator_safe 1000 repeats: - 36.927649925 ( real) -> 1.018x 7 (>=3859) - 0.027079979 - 7 GeneratorBenchmarkPure#generator_pretty 1000 repeats: - 36.272134441 ( real) -> 1.000x 6 (>=3859) - 0.027569373 - calls/sec ( time) -> speed covers - secs/call - -In the table above 1-3 are JSON::Ext::Generator methods. 4, 6, and 7 are -JSON::Pure::Generator methods and 5 is the Rails JSON generator. It is now a -bit faster than the generator_safe and generator_pretty methods of the pure -variant but slower than the others. - -To achieve the fastest JSON document output, you can use the fast_generate -method. Beware, that this will disable the checking for circular Ruby data -structures, which may cause JSON to go into an infinite loop. - -Here are the median comparisons for completeness' sake: - - Comparing times (call_time_median): - 1 GeneratorBenchmarkExt#generator_fast 1000 repeats: - 708.258020939 ( real) -> 16.547x - 0.001411915 - 2 GeneratorBenchmarkExt#generator_safe 1000 repeats: - 569.105020353 ( real) -> 13.296x - 0.001757145 - 3 GeneratorBenchmarkExt#generator_pretty 900 repeats: - 482.825371244 ( real) -> 11.280x - 0.002071142 - 4 GeneratorBenchmarkPure#generator_fast 1000 repeats: - 62.717626652 ( real) -> 1.465x - 0.015944481 - 5 GeneratorBenchmarkRails#generator 1000 repeats: - 43.965681162 ( real) -> 1.027x - 0.022745013 - 6 GeneratorBenchmarkPure#generator_safe 1000 repeats: - 43.929073409 ( real) -> 1.026x 7 (>=3859) - 0.022763968 - 7 GeneratorBenchmarkPure#generator_pretty 1000 repeats: - 42.802514491 ( real) -> 1.000x 6 (>=3859) - 0.023363113 - calls/sec ( time) -> speed covers - secs/call - -=== Author - -Florian Frank - -=== License - -Ruby License, see the COPYING file included in the source distribution. The -Ruby License includes the GNU General Public License (GPL), Version 2, so see -the file GPL as well. - -=== Download - -The latest version of this library can be downloaded at - -* http://rubyforge.org/frs?group_id=953 - -Online Documentation should be located at - -* http://json.rubyforge.org diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/Rakefile deleted file mode 100644 index e2f950c5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/Rakefile +++ /dev/null @@ -1,287 +0,0 @@ -begin - require 'rake/gempackagetask' -rescue LoadError -end - -begin - require 'rake/extensiontask' -rescue LoadError - puts "WARNING: rake-compiler is not installed. You will not be able to build the json gem until you install it." -end - -require 'rake/clean' -CLOBBER.include Dir['benchmarks/data/*.{dat,log}'] - -require 'rbconfig' -include Config - -MAKE = ENV['MAKE'] || %w[gmake make].find { |c| system(c, '-v') } -PKG_NAME = 'json' -PKG_VERSION = File.read('VERSION').chomp -PKG_FILES = FileList["**/*"].exclude(/CVS|pkg|tmp|coverage|Makefile|\.nfs\./).exclude(/\.(so|bundle|o|#{CONFIG['DLEXT']})$/) -EXT_ROOT_DIR = 'ext/json/ext' -EXT_PARSER_DIR = "#{EXT_ROOT_DIR}/parser" -EXT_PARSER_DL = "#{EXT_ROOT_DIR}/parser.#{CONFIG['DLEXT']}" -EXT_PARSER_SRC = "#{EXT_PARSER_DIR}/parser.c" -PKG_FILES << EXT_PARSER_SRC -EXT_GENERATOR_DIR = "#{EXT_ROOT_DIR}/generator" -EXT_GENERATOR_DL = "#{EXT_ROOT_DIR}/generator.#{CONFIG['DLEXT']}" -EXT_GENERATOR_SRC = "#{EXT_GENERATOR_DIR}/generator.c" -RAGEL_CODEGEN = %w[rlcodegen rlgen-cd ragel].find { |c| system(c, '-v') } -RAGEL_DOTGEN = %w[rlgen-dot rlgen-cd ragel].find { |c| system(c, '-v') } -RAGEL_PATH = "#{EXT_PARSER_DIR}/parser.rl" -CLEAN.include FileList['diagrams/*.*'], 'doc', 'coverage', 'tmp', - FileList["ext/**/{Makefile,mkmf.log}"], - FileList["{ext,lib}/**/*.{so,bundle,#{CONFIG['DLEXT']},o,obj,pdb,lib,manifest,exp,def}"] - -def myruby(*args, &block) - @myruby ||= File.join(CONFIG['bindir'], CONFIG['ruby_install_name']) - options = (Hash === args.last) ? args.pop : {} - if args.length > 1 then - sh(*([@myruby] + args + [options]), &block) - else - sh("#{@myruby} #{args.first}", options, &block) - end -end - -desc "Installing library (pure)" -task :install_pure => :version do - myruby 'install.rb' -end - -task :install_ext_really do - sitearchdir = CONFIG["sitearchdir"] - cd 'ext' do - for file in Dir["json/ext/*.#{CONFIG['DLEXT']}"] - d = File.join(sitearchdir, file) - mkdir_p File.dirname(d) - install(file, d) - end - end -end - -desc "Installing library (extension)" -task :install_ext => [ :compile_ext, :install_pure, :install_ext_really ] - -desc "Installing library (extension)" -if RUBY_PLATFORM =~ /java/ - task :install => :install_pure -else - task :install => :install_ext -end - -desc "Compiling extension" -task :compile_ext => [ EXT_PARSER_DL, EXT_GENERATOR_DL ] - -file EXT_PARSER_DL => EXT_PARSER_SRC do - cd EXT_PARSER_DIR do - myruby 'extconf.rb' - sh MAKE - end - cp "#{EXT_PARSER_DIR}/parser.#{CONFIG['DLEXT']}", EXT_ROOT_DIR -end - -file EXT_GENERATOR_DL => EXT_GENERATOR_SRC do - cd EXT_GENERATOR_DIR do - myruby 'extconf.rb' - sh MAKE - end - cp "#{EXT_GENERATOR_DIR}/generator.#{CONFIG['DLEXT']}", EXT_ROOT_DIR -end - -desc "Generate parser with ragel" -task :ragel => EXT_PARSER_SRC - -task :ragel_clean do - rm_rf EXT_PARSER_SRC -end - -file EXT_PARSER_SRC => RAGEL_PATH do - cd EXT_PARSER_DIR do - if RAGEL_CODEGEN == 'ragel' - sh "ragel parser.rl -G2 -o parser.c" - else - sh "ragel -x parser.rl | #{RAGEL_CODEGEN} -G2" - end - end -end - -desc "Generate diagrams of ragel parser (ps)" -task :ragel_dot_ps do - root = 'diagrams' - specs = [] - File.new(RAGEL_PATH).grep(/^\s*machine\s*(\S+);\s*$/) { specs << $1 } - for s in specs - if RAGEL_DOTGEN == 'ragel' - sh "ragel #{RAGEL_PATH} -S#{s} -p -V | dot -Tps -o#{root}/#{s}.ps" - else - sh "ragel -x #{RAGEL_PATH} -S#{s} | #{RAGEL_DOTGEN} -p|dot -Tps -o#{root}/#{s}.ps" - end - end -end - -desc "Generate diagrams of ragel parser (png)" -task :ragel_dot_png do - root = 'diagrams' - specs = [] - File.new(RAGEL_PATH).grep(/^\s*machine\s*(\S+);\s*$/) { specs << $1 } - for s in specs - if RAGEL_DOTGEN == 'ragel' - sh "ragel #{RAGEL_PATH} -S#{s} -p -V | dot -Tpng -o#{root}/#{s}.png" - else - sh "ragel -x #{RAGEL_PATH} -S#{s} | #{RAGEL_DOTGEN} -p|dot -Tpng -o#{root}/#{s}.png" - end - end -end - -desc "Generate diagrams of ragel parser" -task :ragel_dot => [ :ragel_dot_png, :ragel_dot_ps ] - -desc "Testing library (pure ruby)" -task :test_pure => :clean do - ENV['JSON'] = 'pure' - ENV['RUBYOPT'] = "-Iext:lib #{ENV['RUBYOPT']}" - myruby "-S testrb #{Dir['./tests/*.rb'] * ' '}" -end - -desc "Testing library (extension)" -task :test_ext => :compile_ext do - ENV['JSON'] = 'ext' - ENV['RUBYOPT'] = "-Iext:lib #{ENV['RUBYOPT']}" - myruby "-S testrb #{Dir['./tests/*.rb'] * ' '}" -end - -desc "Testing library (pure ruby and extension)" -task :test => [ :test_pure, :test_ext ] - -desc "Benchmarking parser" -task :benchmark_parser do - ENV['RUBYOPT'] = "-Ilib:ext #{ENV['RUBYOPT']}" - myruby 'benchmarks/parser_benchmark.rb' -end - -desc "Benchmarking generator" -task :benchmark_generator do - ENV['RUBYOPT'] = "-Ilib:ext #{ENV['RUBYOPT']}" - myruby 'benchmarks/generator_benchmark.rb' -end - -desc "Benchmarking library" -task :benchmark => [ :benchmark_parser, :benchmark_generator ] - -desc "Create RDOC documentation" -task :doc => [ :version, EXT_PARSER_SRC ] do - sh "rdoc -o doc -m README README lib/json.rb #{FileList['lib/json/**/*.rb']} #{EXT_PARSER_SRC} #{EXT_GENERATOR_SRC}" -end - -if defined?(Gem) and defined?(Rake::GemPackageTask) and defined?(Rake::ExtensionTask) - spec_pure = Gem::Specification.new do |s| - s.name = 'json_pure' - s.version = PKG_VERSION - s.summary = "A JSON implementation in Ruby" - s.description = "This is a JSON implementation in pure Ruby." - - s.files = PKG_FILES - - s.require_path = 'lib' - - s.bindir = "bin" - s.executables = [ "edit_json.rb", "prettify_json.rb" ] - s.default_executable = "edit_json.rb" - - s.has_rdoc = true - s.extra_rdoc_files << 'README' - s.rdoc_options << - '--title' << 'JSON -- A JSON implemention' << '--main' << 'README' - s.test_files.concat Dir['tests/*.rb'] - - s.author = "Florian Frank" - s.email = "flori@ping.de" - s.homepage = "http://json.rubyforge.org" - s.rubyforge_project = "json" - end - - Rake::GemPackageTask.new(spec_pure) do |pkg| - pkg.need_tar = true - pkg.package_files = PKG_FILES - end - - spec_ext = Gem::Specification.new do |s| - s.name = 'json' - s.version = PKG_VERSION - s.summary = "A JSON implementation as a Ruby extension" - s.description = "This is a JSON implementation as a Ruby extension in C." - - s.files = PKG_FILES - - s.extensions = FileList['ext/**/extconf.rb'] - - s.require_path = EXT_ROOT_DIR - s.require_paths << 'ext' - s.require_paths << 'lib' - - s.bindir = "bin" - s.executables = [ "edit_json.rb", "prettify_json.rb" ] - s.default_executable = "edit_json.rb" - - s.has_rdoc = true - s.extra_rdoc_files << 'README' - s.rdoc_options << - '--title' << 'JSON -- A JSON implemention' << '--main' << 'README' - s.test_files.concat Dir['tests/*.rb'] - - s.author = "Florian Frank" - s.email = "flori@ping.de" - s.homepage = "http://json.rubyforge.org" - s.rubyforge_project = "json" - end - - Rake::GemPackageTask.new(spec_ext) do |pkg| - pkg.need_tar = true - pkg.package_files = PKG_FILES - end - - Rake::ExtensionTask.new do |ext| - ext.name = 'parser' - ext.gem_spec = spec_ext - ext.cross_compile = true - ext.cross_platform = 'i386-mswin32' - ext.ext_dir = 'ext/json/ext/parser' - ext.lib_dir = 'lib/json/ext' - end - - Rake::ExtensionTask.new do |ext| - ext.name = 'generator' - ext.gem_spec = spec_ext - ext.cross_compile = true - ext.cross_platform = 'i386-mswin32' - ext.ext_dir = 'ext/json/ext/generator' - ext.lib_dir = 'lib/json/ext' - end -end - -desc m = "Writing version information for #{PKG_VERSION}" -task :version do - puts m - File.open(File.join('lib', 'json', 'version.rb'), 'w') do |v| - v.puts < [ :clean, :version, :cross, :native, :gem ] do - sh "#$0 clean native gem" - sh "#$0 clean package" -end - -desc "Compile in the the source directory" -task :default => [ :version, :compile_ext ] diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/TODO b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/TODO deleted file mode 100644 index 8b137891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/TODO +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/VERSION b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/VERSION deleted file mode 100644 index 26aaba0e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/VERSION +++ /dev/null @@ -1 +0,0 @@ -1.2.0 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log deleted file mode 100644 index f63d7ff1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkComparison.log +++ /dev/null @@ -1,52 +0,0 @@ -========================== 2009-04-01T16:54:14 CEST =========================== - -Comparing times (call_time_mean): - 1 GeneratorBenchmarkExt#generator_fast 1000 repeats: - 547.354332608 ( real) -> 15.090x - 0.001826970 - 2 GeneratorBenchmarkExt#generator_safe 1000 repeats: - 443.968212317 ( real) -> 12.240x - 0.002252414 - 3 GeneratorBenchmarkExt#generator_pretty 900 repeats: - 375.104545883 ( real) -> 10.341x - 0.002665923 - 4 GeneratorBenchmarkPure#generator_fast 1000 repeats: - 49.978706968 ( real) -> 1.378x - 0.020008521 - 5 GeneratorBenchmarkRails#generator 1000 repeats: - 38.531868759 ( real) -> 1.062x - 0.025952543 - 6 GeneratorBenchmarkPure#generator_safe 1000 repeats: - 36.927649925 ( real) -> 1.018x 7 (>=3859) - 0.027079979 - 7 GeneratorBenchmarkPure#generator_pretty 1000 repeats: - 36.272134441 ( real) -> 1.000x 6 (>=3859) - 0.027569373 - calls/sec ( time) -> speed covers - secs/call - -Comparing times (call_time_median): - 1 GeneratorBenchmarkExt#generator_fast 1000 repeats: - 708.258020939 ( real) -> 16.547x - 0.001411915 - 2 GeneratorBenchmarkExt#generator_safe 1000 repeats: - 569.105020353 ( real) -> 13.296x - 0.001757145 - 3 GeneratorBenchmarkExt#generator_pretty 900 repeats: - 482.825371244 ( real) -> 11.280x - 0.002071142 - 4 GeneratorBenchmarkPure#generator_fast 1000 repeats: - 62.717626652 ( real) -> 1.465x - 0.015944481 - 5 GeneratorBenchmarkRails#generator 1000 repeats: - 43.965681162 ( real) -> 1.027x - 0.022745013 - 6 GeneratorBenchmarkPure#generator_safe 1000 repeats: - 43.929073409 ( real) -> 1.026x 7 (>=3859) - 0.022763968 - 7 GeneratorBenchmarkPure#generator_pretty 1000 repeats: - 42.802514491 ( real) -> 1.000x 6 (>=3859) - 0.023363113 - calls/sec ( time) -> speed covers - secs/call -=============================================================================== diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat deleted file mode 100644 index 4b1253c7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.00598106516199361 -3 -0.0112807270419403 -4 -0.0123696625707977 -5 -0.0156474123184087 -6 -0.0167058727326317 -7 -0.0174226257732614 -8 -0.0189193377912716 -9 -0.0214634645195233 -10 -0.0210243967687236 -11 -0.0184155266311585 -12 -0.0181108782382041 -13 -0.0176431070033873 -14 -0.0156578972028912 -15 -0.0177374502087085 -16 -0.0141455286987274 -17 -0.00795945141612284 -18 -0.0113514826844811 -19 -0.00973302086315654 -20 -0.00752544154967475 -21 -0.00910755332739381 -22 -0.0135251862007292 -23 -0.018973749693597 -24 -0.0204970425654037 -25 -0.0215794434931503 -26 -0.0208820323198205 -27 -0.0215343932179269 -28 -0.0197971427401652 -29 -0.0184170283596744 -30 -0.0175671796001255 -31 -0.0182236843115851 -32 -0.0197281221230859 -33 -0.0150052309130744 -34 -0.0149918485410557 -35 -0.0148118613887254 -36 -0.0167181900944588 -37 -0.0206983251289769 -38 -0.0210801801789031 -39 -0.0208844740744579 -40 -0.019184207940328 -41 -0.017212049362023 -42 -0.0120240041713764 -43 -0.0100234143586629 -44 -0.00665522354326635 -45 -0.0100620537646498 -46 -0.00769258313093049 -47 -0.0101574928855612 -48 -0.0159677916154784 -49 -0.0165646691066312 -50 -0.0130718375795871 -51 -0.0164703973814153 -52 -0.0175737709174274 -53 -0.0196185539680136 -54 -0.0206376650276647 -55 -0.0205816624943907 -56 -0.0182046841305021 -57 -0.0170847346598826 -58 -0.0173697791657325 -59 -0.0137208345061376 -60 -0.015172781992446 -61 -0.0115255106202091 -62 0.417092484407713 -63 0.504693995877898 -64 -0.00952721402961746 -65 -0.0131282852877526 -66 -0.0119948030163429 -67 -0.016073832621251 -68 -0.0161014355592232 -69 -0.0171579854383285 -70 -0.01991680519785 -71 -0.0201834782243293 -72 -0.0193410584396016 -73 -0.0171039752714963 -74 -0.0161429988491727 -75 -0.0132132704199617 -76 -0.0168078802690772 -77 -0.0158003286920553 -78 -0.00835714207351243 -79 -0.00762120905134282 -80 -0.0123153809247642 -81 -0.00899280191875777 -82 -0.0119224362468367 -83 -0.0119149552172981 -84 -0.0153878383194161 -85 -0.0180946307259483 -86 -0.0183903902356951 -87 -0.0192363155579457 -88 -0.0187515314979391 -89 -0.017863448747676 -90 -0.0164433211511183 -91 -0.0165939525554464 -92 -0.0165402045616707 -93 -0.0185978157278274 -94 -0.0142998133920208 -95 -0.0132850828003168 -96 -0.0138653751741504 -97 -0.015439338933265 -98 -0.020103623875719 -99 -0.0195401109212907 -100 -0.0201426108270252 -101 -0.0189159648139772 -102 -0.017741354411347 -103 -0.0123542006315354 -104 -0.00844298039184578 -105 -0.00684884437276309 -106 -0.00886668438174435 -107 -0.0112356781545771 -108 -0.00988387556228173 -109 -0.0132456696681112 -110 -0.0163390481544352 -111 -0.0139327158127501 -112 -0.0163794215654705 -113 -0.016828431108095 -114 -0.0170664831346389 -115 -0.0194839016196901 -116 -0.0196691116442597 -117 -0.0171523870407326 -118 -0.0162329780166863 -119 -0.015465269120626 -120 -0.0149628404982249 -121 -0.0131035423300313 -122 -0.0131195334166545 -123 -0.00981529237544382 -124 0.80187886471569 -125 0.0584684544905557 -126 -0.0102423491415993 -127 -0.0120909818906237 -128 -0.0108758895949621 -129 -0.014289679096502 -130 -0.0143039174642426 -131 -0.0156868282211593 -132 -0.0179722786147755 -133 -0.018466068371964 -134 -0.017079048029739 -135 -0.015065426013034 -136 -0.0138193891158787 -137 -0.0108007611003438 -138 -0.0135404983439662 -139 -0.0106058448707185 -140 -0.00496922876002826 -141 -0.00606791982549938 -142 -0.00898435609237426 -143 -0.00744828430883844 -144 -0.00954635887187427 -145 -0.0117471427501629 -146 -0.0167882985759187 -147 -0.0165458334875186 -148 -0.0185963339262843 -149 -0.0180476363378826 -150 -0.0184792287658906 -151 -0.0168571398090795 -152 -0.0156376237363163 -153 -0.0147405503105207 -154 -0.0155752570759927 -155 -0.0168091690226222 -156 -0.0121055609701471 -157 -0.0119152241705694 -158 -0.0119692018483073 -159 -0.0139405471343238 -160 -0.0182047564679262 -161 -0.0184815245671085 -162 -0.0183316150688267 -163 -0.016818527387266 -164 -0.0172998927309072 -165 -0.0124657171517376 -166 -0.0142205952112049 -167 -0.0114632791024164 -168 -0.011221691825434 -169 -0.00957685728179515 -170 -0.0118576208768814 -171 -0.0153568395493832 -172 -0.0151309123215381 -173 -0.0112872846794788 -174 -0.0147612619416181 -175 -0.0154278253183317 -176 -0.017303559049782 -177 -0.0182913411620323 -178 -0.0177712913609271 -179 -0.0155461026200739 -180 -0.0145007758787646 -181 -0.0144152256728993 -182 -0.0107727311780094 -183 -0.0119747664680712 -184 -0.00882273326524172 -185 0.298288232093739 -186 0.504424933837681 -187 -0.00805741122482888 -188 -0.00961890557289795 -189 -0.00944688808242372 -190 -0.0119139223572203 -191 -0.0124508210479303 -192 -0.0127383878728495 -193 -0.0140193628792942 -194 -0.0170021455698375 -195 -0.0164885587823976 -196 -0.0148914800888949 -197 -0.0140274704089252 -198 -0.0131444255262164 -199 -0.0142902568930679 -200 -0.0126395509953569 -201 -0.00514616330632373 -202 -0.00425889059218646 -203 -0.00870210148720889 -204 -0.00484025498847868 -205 -0.00794583465279226 -206 -0.0116098809300245 -207 -0.0102840248799257 -208 -0.0140847096783508 -209 -0.0161819274468977 -210 -0.0172520609046289 -211 -0.0165784733425168 -212 -0.0171152877835852 -213 -0.0173274798435417 -214 -0.0172101117258917 -215 -0.0170745436946526 -216 -0.0166392767496565 -217 -0.0113694394099134 -218 -0.0105561014609266 -219 -0.0105629655709691 -220 -0.0125843349808509 -221 -0.0169833235509721 -222 -0.0165970567333725 -223 -0.0169456130691041 -224 -0.0161440375799497 -225 -0.0149208783509213 -226 -0.0127041663317928 -227 -0.0111128965166982 -228 -0.0107029810231524 -229 -0.0101086923411873 -230 -0.0118221345845309 -231 -0.0102332052283776 -232 -0.0142577541114976 -233 -0.0140498538213083 -234 -0.010942704916447 -235 -0.0136212685457223 -236 -0.0138034339481212 -237 -0.0142845001756096 -238 -0.0165754738828122 -239 -0.0171898507581589 -240 -0.0146271352439982 -241 -0.0137790375298089 -242 -0.0133917511680577 -243 -0.0131288925890812 -244 -0.0109685827301647 -245 -0.0109244911317575 -246 -0.0080777880722406 -247 0.629508042863424 -248 0.116751190107802 -249 -0.00891172050628469 -250 -0.0107100331770611 -251 -0.00937995296389259 -252 -0.0124380337244143 -253 -0.0121281792844181 -254 -0.0135654919014245 -255 -0.0157362779934119 -256 -0.0164366578243166 -257 -0.0158700429675927 -258 -0.0136292281849102 -259 -0.0127546292697666 -260 -0.0122591657651713 -261 -0.0127690216839386 -262 -0.00988530296069743 -263 -0.00345655852423828 -264 -0.00433593866795492 -265 -0.00706082950577672 -266 -0.00451315885069749 -267 -0.00668518865876445 -268 -0.00988046989504585 -269 -0.0142752753866166 -270 -0.0139256221754419 -271 -0.0154989360192202 -272 -0.0151674600751258 -273 -0.0149460719819308 -274 -0.0149332807768296 -275 -0.0156711823892888 -276 -0.0155655062141426 -277 -0.0160655120365346 -278 -0.0148872833405304 -279 -0.00979872106668723 -280 -0.00908095518721164 -281 -0.00991496017614028 -282 -0.0116461289373857 -283 -0.0161876753215528 -284 -0.0160928457909713 -285 -0.0161826534411892 -286 -0.0144074994368989 -287 -0.0150828945998731 -288 -0.0112888375805587 -289 -0.01017522369822 -290 -0.00930009208093838 -291 -0.00867898201478243 -292 -0.00724704290881507 -293 -0.00975976377430877 -294 -0.0136277415192816 -295 -0.013064486102752 -296 -0.00951242385528366 -297 -0.0127976272170567 -298 -0.0136452137191805 -299 -0.0153115325990551 -300 -0.0163644585755829 -301 -0.0159743500315232 -302 -0.0137072967343182 -303 -0.0124465021916348 -304 -0.0124687214149045 -305 -0.00923829560254089 -306 -0.0116586507911887 -307 -0.0118002509969036 -308 0.176862227601212 -309 0.507428903450577 -310 -0.00730757087579498 -311 -0.00846216129742899 -312 -0.0086945045504047 -313 -0.011091656573089 -314 -0.0114036881984761 -315 -0.0114574795677765 -316 -0.0125072909586858 -317 -0.0147923369011883 -318 -0.0139629326786614 -319 -0.0118661842320723 -320 -0.0108640634604502 -321 -0.010582567791708 -322 -0.0114105551744683 -323 -0.0105534816285999 -324 -0.00543143567377151 -325 -0.00207879610778993 -326 -0.00616628496249775 -327 -0.00538988970591758 -328 -0.0031888414219768 -329 -0.00479592155107035 -330 -0.00797063379731725 -331 -0.011431205793035 -332 -0.0133294486936305 -333 -0.0147073192182352 -334 -0.014038242930232 -335 -0.0143451636631283 -336 -0.0140952574704935 -337 -0.0141886904764963 -338 -0.0136754388417917 -339 -0.0130591984480721 -340 -0.00725308466960931 -341 -0.00666308425269444 -342 -0.00687998553665841 -343 -0.00973374474504822 -344 -0.0145448202812331 -345 -0.0144458922456604 -346 -0.0146115187586966 -347 -0.0137964028516015 -348 -0.0124149959973093 -349 -0.0103171021174392 -350 -0.00982139573529766 -351 -0.0112899814813755 -352 -0.0106130941986117 -353 -0.0130952590767051 -354 -0.0147157103352019 -355 -0.0148442531106679 -356 -0.0143141102828524 -357 -0.0117602635999597 -358 -0.013769448570632 -359 -0.0143111324151261 -360 -0.0143034333755129 -361 -0.0145038145090546 -362 -0.0142515435786701 -363 -0.0119387033366702 -364 -0.0110049806968185 -365 -0.0105761121274039 -366 -0.0104785382739133 -367 -0.00944568136776289 -368 -0.0114291935775792 -369 -0.00879625572792011 -370 0.438761037882253 -371 0.179388282669024 -372 -0.00564395369291442 -373 -0.00796462420259203 -374 -0.00642615015965443 -375 -0.00989354521629732 -376 -0.00988574813192154 -377 -0.010723082658232 -378 -0.0127986854912136 -379 -0.0136055571418597 -380 -0.0128927066034855 -381 -0.0107658464618742 -382 -0.00995213975574464 -383 -0.00950294253792146 -384 -0.00955020479384878 -385 -0.00635693744222024 -386 -0.000110105629481581 -387 -0.00115234232053054 -388 -0.00429086433256201 -389 -0.00179503584405276 -390 -0.00481498545647159 -391 -0.00622514956456138 -392 -0.0109222820132791 -393 -0.0108955712556429 -394 -0.0123614076397208 -395 -0.0126411139244774 -396 -0.0124467915001655 -397 -0.0130137305814043 -398 -0.0128228771923896 -399 -0.0133955237199494 -400 -0.0133849955851085 -401 -0.0122588534660976 -402 -0.00605726179970702 -403 -0.00502476043379232 -404 -0.00560189961426453 -405 -0.0075065597345586 -406 -0.0127782782962923 -407 -0.0123644950908042 -408 -0.0124232734011331 -409 -0.0109783824772762 -410 -0.0115303718379531 -411 -0.00784267469552262 -412 -0.00849462201372912 -413 -0.00971386505469192 -414 -0.00917632724668119 -415 -0.0115816105603832 -416 -0.0132376761929919 -417 -0.0135661416672985 -418 -0.0131585974552153 -419 -0.009660405912689 -420 -0.013055251783936 -421 -0.0133821772767449 -422 -0.0130499023401334 -423 -0.0135178049026562 -424 -0.0131069725662085 -425 -0.0108380392131661 -426 -0.00969469507043081 -427 -0.00954426797454458 -428 -0.00662684836615926 -429 -0.00886476227407113 -430 -0.00950496793349554 -431 0.0516441983020747 -432 0.49322914953269 -433 -0.00439284173686481 -434 -0.00627870269436533 -435 -0.00627332941383523 -436 -0.0081288435528136 -437 -0.0083780008033963 -438 -0.00862522210775739 -439 -0.00957558038511007 -440 -0.0117456231732853 -441 -0.0115534470740916 -442 -0.00933816760400665 -443 -0.00879390501434828 -444 -0.00845807802179637 -445 -0.00898392178831317 -446 -0.00828222615510185 -447 -0.00430409141657551 -448 0.00156457708563651 -449 -0.00326984307949075 -450 -0.00317159959830949 -451 -0.000555487307447615 -452 -0.00364382690619819 -453 -0.0048566860611129 -454 -0.00894018408715954 -455 -0.0107486040996964 -456 -0.0116685949740421 -457 -0.0110016491468837 -458 -0.0115059582687225 -459 -0.0113472600167867 -460 -0.0116171812940172 -461 -0.0117282268858408 -462 -0.0117299783690078 -463 -0.010643752908432 -464 -0.00459501012645056 -465 -0.00453644637628407 -466 -0.0046306868795152 -467 -0.00635091362132938 -468 -0.0110723370950498 -469 -0.0112408403912337 -470 -0.0111324401483636 -471 -0.00982286064921767 -472 -0.00975128137366522 -473 -0.00628951348673262 -474 -0.00786220555305698 -475 -0.00721222723625666 -476 -0.0090992927480125 -477 -0.0111183444128793 -478 -0.0113067097038558 -479 -0.011160514456695 -480 -0.0112090771926765 -481 -0.00787638634175043 -482 -0.0112615847473125 -483 -0.011628136525895 -484 -0.011622337861315 -485 -0.0117577801145762 -486 -0.0116192296501852 -487 -0.0116776081404665 -488 -0.0111121010572735 -489 -0.0114339606683442 -490 -0.00850048144220754 -491 -0.00902076717194715 -492 -0.00658807969775991 -493 0.308280122150922 -494 0.179904382021428 -495 -0.00620246818692402 -496 -0.00732155340431931 -497 -0.00633028997310617 -498 -0.00733583870036483 -499 -0.00727032081926197 -500 -0.008010509906149 -501 -0.0104317034705988 -502 -0.0108056052586449 -503 -0.0101990692728759 -504 -0.00818461307326559 -505 -0.00749890086004878 -506 -0.00705010773652864 -507 -0.00756096305230179 -508 -0.00672526873673494 -509 0.00243080947177157 -510 0.00196312027219733 -511 -0.00235862710511876 -512 0.000701377712459682 -513 -0.00162314281016339 -514 -0.00353069628359856 -515 -0.00535592160011964 -516 -0.009629255720372 -517 -0.00984838119518035 -518 -0.0101309734254507 -519 -0.00965058701149376 -520 -0.00979426033632281 -521 -0.00938720368934997 -522 -0.00970041415352301 -523 -0.00945810455304286 -524 -0.00835333695491461 -525 -0.00280808168888623 -526 -0.0018804910475821 -527 -0.00249542031082639 -528 -0.00423360594570751 -529 -0.00881996119495001 -530 -0.00884482660493057 -531 -0.00893861689042032 -532 -0.00886923400254016 -533 -0.00998854214305494 -534 -0.00781482686410285 -535 -0.0048629430667884 -536 -0.00625148660128163 -537 -0.00591714866358709 -538 -0.00819957670878541 -539 -0.0104317069032842 -540 -0.0106270020619331 -541 -0.0104145097418402 -542 -0.00717985135988735 -543 -0.0101615859824435 -544 -0.0104518334037382 -545 -0.0100972729943529 -546 -0.0104524105955466 -547 -0.0103545229187737 -548 -0.0101624037567498 -549 -0.0100186657519469 -550 -0.0099303685542785 -551 -0.00989811608443676 -552 -0.00956029844279647 -553 -0.00987970559123677 -554 -0.00776430984790597 -555 0.433831953345655 -556 -0.00507447586044935 -557 -0.00562849792786146 -558 -0.00769600508140686 -559 -0.00901860581255264 -560 -0.00910092607595847 -561 -0.00887368633065391 -562 -0.00919143351659684 -563 -0.00919246832815283 -564 -0.008693156564635 -565 -0.00662529921447376 -566 -0.00607353164847735 -567 -0.00581991561933677 -568 -0.00632678279589719 -569 -0.00589706554542697 -570 -0.00209808022849792 -571 0.00411078303934323 -572 -0.000550094449704642 -573 -0.000635669377549439 -574 0.00207348794440178 -575 -0.000652521824982924 -576 -0.00515463244200143 -577 -0.00805160292500236 -578 -0.00758462894007334 -579 -0.00865860296291249 -580 -0.00829675359569146 -581 -0.0086341327011501 -582 -0.0083284907763213 -583 -0.00874191010292116 -584 -0.00870026046977296 -585 -0.00874342968783533 -586 -0.00782090704127864 -587 -0.00226753389792357 -588 -0.00233729750931911 -589 -0.00253165604475073 -590 -0.00420974711192665 -591 -0.00876258732479398 -592 -0.00860694373819948 -593 -0.00860741436892977 -594 -0.0083641380851702 -595 -0.00895178779353354 -596 -0.00556499426763376 -597 -0.00484682362918658 -598 -0.00431757566397834 -599 -0.00499416642389915 -600 -0.0069669589511167 -601 -0.00890645540721195 -602 -0.00886958918530451 -603 -0.00887658861258958 -604 -0.00581930809163898 -605 -0.00874979775103718 -606 -0.00880186470377256 -607 -0.0082818394785986 -608 -0.00853275083442652 -609 -0.00830191068093658 -610 -0.00821443778904117 -611 -0.00784238482387328 -612 -0.0079414174200303 -613 -0.00783383912859581 -614 -0.00787555505012593 -615 -0.00665499786835605 -616 0.176487627240953 -617 0.182522618275643 -618 -0.00369616845832028 -619 -0.00629001903058491 -620 -0.0075473564025736 -621 -0.00792057625851698 -622 -0.00782303511234032 -623 -0.00755843668657251 -624 -0.00792883379421707 -625 -0.00821060913555977 -626 -0.00741039814688092 -627 -0.00537210505585104 -628 -0.00495675282893683 -629 -0.00433218280972181 -630 -0.00535942261482297 -631 -0.00418008644241062 -632 0.00339696969399508 -633 0.00414508932380595 -634 -0.000193158774272635 -635 0.00259164894888744 -636 0.000223760303507433 -637 -0.00430196126108769 -638 -0.00456371747951704 -639 -0.00736903921601653 -640 -0.00712023652975677 -641 -0.0075278214202441 -642 -0.00720130207341965 -643 -0.00737872965783862 -644 -0.00699531188368127 -645 -0.00746073468584514 -646 -0.00732625819637498 -647 -0.00635877618822083 -648 -0.000793999038955055 -649 -8.0164531740219e-05 -650 -0.000446668232184141 -651 -0.00235908247044392 -652 -0.00713214115663551 -653 -0.00713237034121296 -654 -0.00694174474662415 -655 -0.00660829668781119 -656 -0.00716164439750203 -657 -0.00538381268641803 -658 -0.00345728430157964 -659 -0.0033493822325227 -660 -0.00308002139612534 -661 -0.00485508307526379 -662 -0.00689806029174172 -663 -0.00725543105565978 -664 -0.00698203515046677 -665 -0.0036867796009008 -666 -0.00651046025528584 -667 -0.0064253977689179 -668 -0.00603538702792052 -669 -0.00663542008142919 -670 -0.00686564183730989 -671 -0.007061940627829 -672 -0.00723724969313594 -673 -0.00690352936553413 -674 -0.00708800826417091 -675 -0.0068488351807369 -676 -0.00697588236069582 -677 -0.00489382754866038 -678 0.293679681878456 -679 -0.00217575247097526 -680 -0.00251980831108943 -681 -0.00469346437639234 -682 -0.00602274026620383 -683 -0.00613736008179977 -684 -0.00587828046880654 -685 -0.00631371498944638 -686 -0.00631120094430527 -687 -0.00664034373839927 -688 -0.0065666129986998 -689 -0.0067007590666881 -690 -0.00636748542215835 -691 -0.00656138473046679 -692 -0.00601000081275883 -693 -0.0026357408923799 -694 -0.000456498707602518 -695 -0.0016897260544663 -696 -0.00129952239659223 -697 0.00153196218519829 -698 0.000970496676276022 -699 -0.00251269063690647 -700 -0.00524088068527027 -701 -0.00518392957419252 -702 -0.00545009901887635 -703 -0.00523471171454499 -704 -0.00546688754012952 -705 -0.00514683356691874 -706 -0.00558347319397717 -707 -0.00550031695581813 -708 -0.00556266938963792 -709 -0.00450101319069993 -710 0.000877138356826208 -711 0.00114849594155746 -712 0.00116701578333245 -713 -0.000552903676364493 -714 -0.0051532107788052 -715 -0.00508271809802478 -716 -0.00497444873496618 -717 -0.00492017832252063 -718 -0.00541639497149525 -719 -0.00390291948630837 -720 -0.00239018748643075 -721 -0.00232508546653691 -722 -0.00238990898592966 -723 -0.00406012905361738 -724 -0.00582934957876193 -725 -0.00577054545061284 -726 -0.00588044486012239 -727 -0.00321173514726905 -728 -0.00576676030640332 -729 -0.00581363201901516 -730 -0.0056403530033928 -731 -0.00588225715878274 -732 -0.00580726160331349 -733 -0.00584418671281739 -734 -0.00551263103237493 -735 -0.00574673916997464 -736 -0.00550923727010732 -737 -0.00564351841421052 -738 -0.00461818807132501 -739 0.114369039955867 -740 0.113874088642992 -741 -0.00428093342498865 -742 -0.00466682336739501 -743 -0.00457646329947025 -744 -0.00489743453576601 -745 -0.00478667563624186 -746 -0.00478604895368296 -747 -0.00490784598204448 -748 -0.00514403999502352 -749 -0.00513630650904552 -750 -0.00518918499122095 -751 -0.00520548675089309 -752 -0.00507998628564919 -753 -0.00523911370578295 -754 -0.00411076499229555 -755 -0.000110526273692137 -756 -6.97046088930254e-05 -757 -0.000654613465091875 -758 0.00250880368745154 -759 0.00224241061455796 -760 -0.00127852637176592 -761 -0.00157811331971793 -762 -0.00436060574090802 -763 -0.00420211405494215 -764 -0.00448393259372739 -765 -0.00432404767220953 -766 -0.00453637743990225 -767 -0.0044808869432662 -768 -0.00464814288481283 -769 -0.00453419455157583 -770 -0.00369714822055501 -771 0.00151504237188244 -772 0.00179518632309489 -773 0.001877255156902 -774 -5.89581979368288e-06 -775 -0.00470919317381923 -776 -0.00458472486731563 -777 -0.00444898240381536 -778 -0.00416698542857512 -779 -0.00466136770411855 -780 -0.00300892846748779 -781 -0.00124674831643176 -782 -0.00133718137527554 -783 -0.00138860486323427 -784 -0.00288124092405525 -785 -0.00481691924321098 -786 -0.00486161642251353 -787 -0.00471484323647818 -788 -0.00221399725838215 -789 -0.00461120524247493 -790 -0.00490984409593776 -791 -0.00458164873735298 -792 -0.00500568265157337 -793 -0.00490456309124687 -794 -0.00492264602032272 -795 -0.00479512401393326 -796 -0.00461122828156398 -797 -0.00469058713813641 -798 -0.00454741240404029 -799 -0.00452098615172967 -800 -0.00315464001423668 -801 0.176647243851048 -802 -0.00310821457329599 -803 -0.00336871130300844 -804 -0.00334712545163953 -805 -0.00333048116128302 -806 -0.00340010988805163 -807 -0.00329002162318321 -808 -0.00389183721144577 -809 -0.003901676075626 -810 -0.00414870722240944 -811 -0.0042711605574371 -812 -0.00421188870174774 -813 -0.00414929847217633 -814 -0.00411313613833283 -815 -0.00371760367608498 -816 -0.000349935639289262 -817 0.00180273856524285 -818 0.000409396862338841 -819 0.000734497343308131 -820 0.00357982919909658 -821 0.00303969865706741 -822 -0.000471276008475531 -823 -0.00316577242759788 -824 -0.00325311026089004 -825 -0.00334640971609744 -826 -0.00347090142695205 -827 -0.00347282859499611 -828 -0.00359181895609804 -829 -0.00354380245119079 -830 -0.0035817065706009 -831 -0.00354789086207514 -832 -0.0033749175776577 -833 -0.000494214343391087 -834 -0.000251455009457498 -835 -1.57658927165261e-05 -836 -0.000109367762943036 -837 -0.00314845093040657 -838 -0.00309137992026045 -839 -0.00318781326315422 -840 -0.00286403779926594 -841 -0.00342399488914169 -842 -0.00153873408849432 -843 0.000122565876620567 -844 -1.39442056199256e-05 -845 -8.34506223344456e-06 -846 -0.00166426373161533 -847 -0.0033554053632988 -848 -0.00333776480910794 -849 -0.00310606886442986 -850 -0.00260312208985637 -851 -0.00283750216949298 -852 -0.00285757048464359 -853 -0.00279461193366553 -854 -0.00292497054991065 -855 -0.00301956311195488 -856 -0.00315103554002891 -857 -0.00317407494144514 -858 -0.00344006955591978 -859 -0.00328324564157648 -860 -0.00336672245209469 -861 -0.00320070783993313 -862 0.0571143000302908 -863 0.0581421535264736 -864 -0.0023646349129562 -865 -0.00248000937790515 -866 -0.00253895254011341 -867 -0.00263523871798653 -868 -0.00263848242276221 -869 -0.00242543818411627 -870 -0.00273912401905961 -871 -0.00279476040899776 -872 -0.00276176065666512 -873 -0.00287486997075063 -874 -0.00286611281167776 -875 -0.00273356872691796 -876 -0.00288780319152133 -877 -0.002745393856585 -878 -0.00110006883426424 -879 -0.00137915534327329 -880 -0.00167310911091998 -881 -0.00155747103077571 -882 -0.00146093482278994 -883 -0.00154136929877317 -884 -0.00153121465319545 -885 -0.00155953620814648 -886 -0.00144267681269488 -887 -0.00161412167459229 -888 -0.00163145566649099 -889 -0.00167029505161209 -890 -0.0016373144133233 -891 -0.00175124070416498 -892 -0.00167165052115149 -893 -0.00171108984754183 -894 0.00117838884322948 -895 0.00144758999216869 -896 0.00151805445737221 -897 0.00143935117483618 -898 -0.00186099280431895 -899 -0.00179654067064747 -900 -0.00179116042661383 -901 -0.00142755861186833 -902 -0.00186611279612203 -903 -0.000162622805446086 -904 0.00152056201372212 -905 0.0013706788122524 -906 0.00143726069429263 -907 -0.000252329857205533 -908 -0.00193352667375601 -909 -0.00209884306201327 -910 -0.00202064054439592 -911 -0.00173618259943807 -912 -0.00205445430329035 -913 -0.00214780602120254 -914 -0.00196595166631794 -915 -0.00219157283133128 -916 -0.00212894079242623 -917 -0.00207889032650752 -918 -0.00219841623335388 -919 -0.00205620493282394 -920 -0.00208349802201294 -921 -0.001893539445651 -922 -0.00194526313087232 -923 -0.00168643075330111 -924 0.0586998178531413 -925 -0.000911884922536993 -926 -0.00117572577102972 -927 -0.00129923545036716 -928 -0.00118465790078785 -929 -0.00132314491365947 -930 -0.00127160006680386 -931 -0.00138439529549555 -932 -0.00129787510221711 -933 -0.00144993779770551 -934 -0.001425792453437 -935 -0.0014496057960256 -936 -0.00119586479826629 -937 -0.000922564261699133 -938 -0.000922740892289067 -939 -0.000848528386538916 -940 0.00175174402948496 -941 0.000128892409261148 -942 -0.000419829894278227 -943 -0.000466898563936845 -944 -0.00047122376341752 -945 -0.000471416288654379 -946 -0.000513935965825421 -947 -0.000572116986488244 -948 -0.000449041074008682 -949 -0.000574563662818422 -950 -0.000610788790280961 -951 -0.000662270176313313 -952 -0.000642471283187866 -953 -0.000686357192098764 -954 -0.000680811112666425 -955 -0.000667897583364248 -956 0.00217250089025851 -957 0.00241500705227074 -958 0.00258713826301258 -959 0.0024109350186895 -960 -0.000776314155991479 -961 -0.00084983870235422 -962 -0.000772678557610008 -963 -0.000413064616358682 -964 -0.000839502130396645 -965 -0.000791381040363275 -966 -0.00077040262869677 -967 -0.000754568976269093 -968 -0.000450602414219829 -969 -0.000688212102427542 -970 -0.0007167932903372 -971 -0.000785852386158499 -972 -0.000722306234880277 -973 -0.000324661092143018 -974 -0.000653202791545457 -975 -0.000633458113878451 -976 -0.000607853671870952 -977 -0.000679470747639321 -978 -0.000681703637956587 -979 -0.000664738980547628 -980 -0.000722422330407423 -981 -0.000669373102929127 -982 -0.000718387488703849 -983 -0.000712032436105745 -984 -0.000590219813904669 -985 -0.000416669360601081 -986 0.000288888405178535 -987 0.000270024550156701 -988 0.000249840739788964 -989 0.000235694503184828 -990 0.000215798850441515 -991 0.00019492814388371 -992 0.000175357251222976 -993 0.000153462442160884 -994 0.000132677328666247 -995 0.000111945810591477 -996 9.04814593951449e-05 -997 7.02106833140884e-05 -998 5.0145189268859e-05 -999 3.05214189890438e-05 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat deleted file mode 100644 index 7df4c827..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_fast.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.00156402587890625 0.0 0.0 0.0 1 -2 0.00149393081665039 0.0 0.0 0.0 2 -3 0.00144386291503906 0.0 0.0 0.0 3 -4 0.0014338493347168 0.00999999999999979 0.00999999999999979 0.0 4 -5 0.00144386291503906 0.0 0.0 0.0 5 -6 0.00141716003417969 0.0 0.0 0.0 6 -7 0.00143003463745117 0.0 0.0 0.0 7 -8 0.0014190673828125 0.0 0.0 0.0 8 -9 0.00141215324401855 0.0 0.0 0.0 9 -10 0.00143003463745117 0.0 0.0 0.0 10 -11 0.00141310691833496 0.0100000000000007 0.0100000000000002 0.0 11 -12 0.0014190673828125 0.0 0.0 0.0 12 -13 0.00155305862426758 0.0 0.0 0.0 13 -14 0.00142192840576172 0.0 0.0 0.0 14 -15 0.00141000747680664 0.0 0.0 0.0 15 -16 0.00142812728881836 0.0 0.0 0.0 16 -17 0.00143098831176758 0.0 0.0 0.0 17 -18 0.00151705741882324 0.00999999999999979 0.00999999999999979 0.0 18 -19 0.00141406059265137 0.0 0.0 0.0 19 -20 0.0014197826385498 0.0 0.0 0.0 20 -21 0.00142383575439453 0.0 0.0 0.0 21 -22 0.00141191482543945 0.0 0.0 0.0 22 -23 0.00156402587890625 0.0 0.0 0.0 23 -24 0.00142812728881836 0.00999999999999979 0.00999999999999979 0.0 24 -25 0.00139307975769043 0.0 0.0 0.0 25 -26 0.00141000747680664 0.0 0.0 0.0 26 -27 0.00255894660949707 0.0 0.0 0.0 27 -28 0.00261497497558594 0.0 0.0 0.0 28 -29 0.00254607200622559 0.00999999999999979 0.00999999999999979 0.0 29 -30 0.00245094299316406 0.0 0.0 0.0 30 -31 0.00142312049865723 0.0 0.0 0.0 31 -32 0.00141000747680664 0.0 0.0 0.0 32 -33 0.00139904022216797 0.0 0.0 0.0 33 -34 0.00141096115112305 0.0 0.0 0.0 34 -35 0.00139689445495605 0.0100000000000007 0.0100000000000007 0.0 35 -36 0.00140500068664551 0.0 0.0 0.0 36 -37 0.00140786170959473 0.0 0.0 0.0 37 -38 0.00144600868225098 0.0 0.0 0.0 38 -39 0.00139689445495605 0.0 0.0 0.0 39 -40 0.00140810012817383 0.0 0.0 0.0 40 -41 0.00141406059265137 0.0 0.0 0.0 41 -42 0.00140595436096191 0.00999999999999979 0.00999999999999979 0.0 42 -43 0.00140094757080078 0.0 0.0 0.0 43 -44 0.00138092041015625 0.0 0.0 0.0 44 -45 0.00151491165161133 0.0 0.0 0.0 45 -46 0.00203394889831543 0.0 0.0 0.0 46 -47 0.00142693519592285 0.0 0.0 0.0 47 -48 0.00138998031616211 0.00999999999999979 0.00999999999999979 0.0 48 -49 0.00144696235656738 0.0 0.0 0.0 49 -50 0.00140500068664551 0.0 0.0 0.0 50 -51 0.00138998031616211 0.0 0.0 0.0 51 -52 0.00141000747680664 0.0 0.0 0.0 52 -53 0.00139188766479492 0.0 0.0 0.0 53 -54 0.00142598152160645 0.0 0.0 0.0 54 -55 0.00141406059265137 0.00999999999999979 0.00999999999999979 0.0 55 -56 0.00139594078063965 0.0 0.0 0.0 56 -57 0.00139284133911133 0.0 0.0 0.0 57 -58 0.00141692161560059 0.0 0.0 0.0 58 -59 0.00140810012817383 0.0 0.0 0.0 59 -60 0.00141215324401855 0.0 0.0 0.0 60 -61 0.00145602226257324 0.0 0.0 0.0 61 -62 0.0231201648712158 0.0300000000000002 0.0300000000000002 0.0 62 -63 0.0014808177947998 0.0 0.0 0.0 63 -64 0.00142788887023926 0.0 0.0 0.0 64 -65 0.00147199630737305 0.0 0.0 0.0 65 -66 0.00143098831176758 0.0 0.0 0.0 66 -67 0.00142908096313477 0.0 0.0 0.0 67 -68 0.00142097473144531 0.00999999999999979 0.00999999999999979 0.0 68 -69 0.00142598152160645 0.0 0.0 0.0 69 -70 0.00142812728881836 0.0 0.0 0.0 70 -71 0.00140595436096191 0.0 0.0 0.0 71 -72 0.00142288208007812 0.0 0.0 0.0 72 -73 0.00140810012817383 0.0 0.0 0.0 73 -74 0.00141692161560059 0.0 0.0 0.0 74 -75 0.00140786170959473 0.0100000000000007 0.0100000000000007 0.0 75 -76 0.00142312049865723 0.0 0.0 0.0 76 -77 0.00140213966369629 0.0 0.0 0.0 77 -78 0.00140500068664551 0.0 0.0 0.0 78 -79 0.00141096115112305 0.0 0.0 0.0 79 -80 0.00141406059265137 0.0 0.0 0.0 80 -81 0.00141310691833496 0.0 0.0 0.0 81 -82 0.00140905380249023 0.00999999999999979 0.00999999999999979 0.0 82 -83 0.00140190124511719 0.0 0.0 0.0 83 -84 0.00140881538391113 0.0 0.0 0.0 84 -85 0.00141191482543945 0.0 0.0 0.0 85 -86 0.00141406059265137 0.0 0.0 0.0 86 -87 0.00142097473144531 0.0 0.0 0.0 87 -88 0.0013890266418457 0.0 0.0 0.0 88 -89 0.00141406059265137 0.00999999999999979 0.00999999999999979 0.0 89 -90 0.00139498710632324 0.0 0.0 0.0 90 -91 0.00141286849975586 0.0 0.0 0.0 91 -92 0.00141096115112305 0.0 0.0 0.0 92 -93 0.00140190124511719 0.0 0.0 0.0 93 -94 0.00141501426696777 0.0 0.0 0.0 94 -95 0.0013880729675293 0.0 0.0 0.0 95 -96 0.00140595436096191 0.00999999999999979 0.00999999999999979 0.0 96 -97 0.00140213966369629 0.0 0.0 0.0 97 -98 0.0014040470123291 0.0 0.0 0.0 98 -99 0.00140500068664551 0.0 0.0 0.0 99 -100 0.00141501426696777 0.0 0.0 0.0 100 -101 0.00141119956970215 0.0 0.0 0.0 101 -102 0.00139808654785156 0.0 0.0 0.0 102 -103 0.00141000747680664 0.0 0.0 0.0 103 -104 0.00137805938720703 0.0 0.0 0.0 104 -105 0.00139307975769043 0.0 0.0 0.0 105 -106 0.00139594078063965 0.0 0.0 0.0 106 -107 0.00138688087463379 0.0 0.0 0.0 107 -108 0.00140810012817383 0.0 0.0 0.0 108 -109 0.00140094757080078 0.00999999999999979 0.00999999999999979 0.0 109 -110 0.00139999389648438 0.0 0.0 0.0 110 -111 0.00139808654785156 0.0 0.0 0.0 111 -112 0.00141096115112305 0.0 0.0 0.0 112 -113 0.00139212608337402 0.0 0.0 0.0 113 -114 0.00142288208007812 0.0 0.0 0.0 114 -115 0.00139188766479492 0.0 0.0 0.0 115 -116 0.00140810012817383 0.00999999999999979 0.00999999999999979 0.0 116 -117 0.00147700309753418 0.0 0.0 0.0 117 -118 0.00140810012817383 0.0 0.0 0.0 118 -119 0.0014030933380127 0.0 0.0 0.0 119 -120 0.00142097473144531 0.0 0.0 0.0 120 -121 0.00140213966369629 0.0 0.0 0.0 121 -122 0.00139689445495605 0.0 0.0 0.0 122 -123 0.0233688354492188 0.0300000000000002 0.0300000000000002 0.0 123 -124 0.0014951229095459 0.0 0.0 0.0 124 -125 0.00143909454345703 0.0 0.0 0.0 125 -126 0.00145697593688965 0.0 0.0 0.0 126 -127 0.00147509574890137 0.0 0.0 0.0 127 -128 0.00142598152160645 0.0 0.0 0.0 128 -129 0.00143003463745117 0.00999999999999979 0.00999999999999979 0.0 129 -130 0.00141477584838867 0.0 0.0 0.0 130 -131 0.00142502784729004 0.0 0.0 0.0 131 -132 0.00140786170959473 0.0 0.0 0.0 132 -133 0.00141310691833496 0.0 0.0 0.0 133 -134 0.00141000747680664 0.0 0.0 0.0 134 -135 0.00141501426696777 0.00999999999999979 0.00999999999999979 0.0 135 -136 0.00141501426696777 0.0 0.0 0.0 136 -137 0.0014190673828125 0.0 0.0 0.0 137 -138 0.00140500068664551 0.0 0.0 0.0 138 -139 0.00140595436096191 0.0 0.0 0.0 139 -140 0.00143909454345703 0.0 0.0 0.0 140 -141 0.00140094757080078 0.0 0.0 0.0 141 -142 0.00142407417297363 0.0100000000000007 0.0100000000000007 0.0 142 -143 0.00141406059265137 0.0 0.0 0.0 143 -144 0.00142002105712891 0.0 0.0 0.0 144 -145 0.00140094757080078 0.0 0.0 0.0 145 -146 0.00140690803527832 0.0 0.0 0.0 146 -147 0.0014188289642334 0.0 0.0 0.0 147 -148 0.00142002105712891 0.0 0.0 0.0 148 -149 0.00139808654785156 0.00999999999999979 0.00999999999999979 0.0 149 -150 0.00139594078063965 0.0 0.0 0.0 150 -151 0.00140285491943359 0.0 0.0 0.0 151 -152 0.0013880729675293 0.0 0.0 0.0 152 -153 0.00139498710632324 0.0 0.0 0.0 153 -154 0.0014040470123291 0.0 0.0 0.0 154 -155 0.0014040470123291 0.0 0.0 0.0 155 -156 0.00140094757080078 0.00999999999999979 0.00999999999999979 0.0 156 -157 0.0014030933380127 0.0 0.0 0.0 157 -158 0.00138711929321289 0.0 0.0 0.0 158 -159 0.00139999389648438 0.0 0.0 0.0 159 -160 0.00140595436096191 0.0 0.0 0.0 160 -161 0.00139689445495605 0.0 0.0 0.0 161 -162 0.00141000747680664 0.0 0.0 0.0 162 -163 0.00140094757080078 0.00999999999999979 0.00999999999999979 0.0 163 -164 0.00140905380249023 0.0 0.0 0.0 164 -165 0.00251889228820801 0.0 0.0 0.0 165 -166 0.00264787673950195 0.0 0.0 0.0 166 -167 0.00169110298156738 0.0 0.0 0.0 167 -168 0.00159692764282227 0.00999999999999979 0.00999999999999979 0.0 168 -169 0.00142788887023926 0.0 0.0 0.0 169 -170 0.00155997276306152 0.0 0.0 0.0 170 -171 0.00141811370849609 0.0 0.0 0.0 171 -172 0.00139784812927246 0.0 0.0 0.0 172 -173 0.00142884254455566 0.0 0.0 0.0 173 -174 0.00139999389648438 0.0 0.0 0.0 174 -175 0.00139784812927246 0.0100000000000007 0.0100000000000007 0.0 175 -176 0.00139999389648438 0.0 0.0 0.0 176 -177 0.00145101547241211 0.0 0.0 0.0 177 -178 0.00141716003417969 0.0 0.0 0.0 178 -179 0.00143289566040039 0.0 0.0 0.0 179 -180 0.00141310691833496 0.0 0.0 0.0 180 -181 0.00141406059265137 0.0 0.0 0.0 181 -182 0.00141406059265137 0.0 0.0 0.0 182 -183 0.00141310691833496 0.0 0.0 0.0 183 -184 0.00140595436096191 0.0 0.0 0.0 184 -185 0.0231029987335205 0.0199999999999996 0.0199999999999996 0.0 185 -186 0.00171899795532227 0.0 0.0 0.0 186 -187 0.00143694877624512 0.0100000000000007 0.0100000000000007 0.0 187 -188 0.00144410133361816 0.0 0.0 0.0 188 -189 0.00142693519592285 0.0 0.0 0.0 189 -190 0.00143599510192871 0.0 0.0 0.0 190 -191 0.00142097473144531 0.0 0.0 0.0 191 -192 0.00142979621887207 0.0 0.0 0.0 192 -193 0.00142502784729004 0.0 0.0 0.0 193 -194 0.00142002105712891 0.00999999999999979 0.00999999999999979 0.0 194 -195 0.00142908096313477 0.0 0.0 0.0 195 -196 0.00141191482543945 0.0 0.0 0.0 196 -197 0.00141382217407227 0.0 0.0 0.0 197 -198 0.00141191482543945 0.0 0.0 0.0 198 -199 0.00143718719482422 0.0 0.0 0.0 199 -200 0.00141096115112305 0.0 0.0 0.0 200 -201 0.00142407417297363 0.00999999999999979 0.00999999999999979 0.0 201 -202 0.00146198272705078 0.0 0.0 0.0 202 -203 0.00143194198608398 0.0 0.0 0.0 203 -204 0.00138998031616211 0.0 0.0 0.0 204 -205 0.00140595436096191 0.0 0.0 0.0 205 -206 0.00142097473144531 0.0 0.0 0.0 206 -207 0.00141787528991699 0.00999999999999979 0.00999999999999979 0.0 207 -208 0.00145101547241211 0.0 0.0 0.0 208 -209 0.00143909454345703 0.0 0.0 0.0 209 -210 0.00141215324401855 0.0 0.0 0.0 210 -211 0.00140094757080078 0.0 0.0 0.0 211 -212 0.0014030933380127 0.0 0.0 0.0 212 -213 0.00140595436096191 0.0 0.0 0.0 213 -214 0.00143194198608398 0.0100000000000007 0.0100000000000007 0.0 214 -215 0.00139999389648438 0.0 0.0 0.0 215 -216 0.00140786170959473 0.0 0.0 0.0 216 -217 0.00141501426696777 0.0 0.0 0.0 217 -218 0.00139904022216797 0.0 0.0 0.0 218 -219 0.00141310691833496 0.0 0.0 0.0 219 -220 0.00140786170959473 0.0 0.0 0.0 220 -221 0.00146889686584473 0.00999999999999979 0.00999999999999979 0.0 221 -222 0.00139880180358887 0.0 0.0 0.0 222 -223 0.00141501426696777 0.0 0.0 0.0 223 -224 0.00139808654785156 0.0 0.0 0.0 224 -225 0.00140690803527832 0.0 0.0 0.0 225 -226 0.00140500068664551 0.0 0.0 0.0 226 -227 0.00139713287353516 0.0 0.0 0.0 227 -228 0.00139498710632324 0.00999999999999979 0.00999999999999979 0.0 228 -229 0.00141000747680664 0.0 0.0 0.0 229 -230 0.00139284133911133 0.0 0.0 0.0 230 -231 0.00140690803527832 0.0 0.0 0.0 231 -232 0.0014040470123291 0.0 0.0 0.0 232 -233 0.00137710571289062 0.0 0.0 0.0 233 -234 0.00140595436096191 0.0 0.0 0.0 234 -235 0.00137901306152344 0.0 0.0 0.0 235 -236 0.00143909454345703 0.00999999999999979 0.00999999999999979 0.0 236 -237 0.00138688087463379 0.0 0.0 0.0 237 -238 0.00141811370849609 0.0 0.0 0.0 238 -239 0.00141406059265137 0.0 0.0 0.0 239 -240 0.00139284133911133 0.0 0.0 0.0 240 -241 0.0014188289642334 0.0 0.0 0.0 241 -242 0.0013878345489502 0.0 0.0 0.0 242 -243 0.00142407417297363 0.0100000000000007 0.0100000000000007 0.0 243 -244 0.00141000747680664 0.0 0.0 0.0 244 -245 0.00146222114562988 0.0 0.0 0.0 245 -246 0.0225439071655273 0.0199999999999996 0.0199999999999996 0.0 246 -247 0.00150012969970703 0.0 0.0 0.0 247 -248 0.00144600868225098 0.0 0.0 0.0 248 -249 0.00144791603088379 0.0 0.0 0.0 249 -250 0.00143003463745117 0.0 0.0 0.0 250 -251 0.00143313407897949 0.0 0.0 0.0 251 -252 0.00141406059265137 0.0 0.0 0.0 252 -253 0.00143194198608398 0.0 0.0 0.0 253 -254 0.00141596794128418 0.0 0.0 0.0 254 -255 0.00141811370849609 0.0 0.0 0.0 255 -256 0.00142002105712891 0.0100000000000007 0.0100000000000007 0.0 256 -257 0.0014190673828125 0.0 0.0 0.0 257 -258 0.00141000747680664 0.0 0.0 0.0 258 -259 0.00142097473144531 0.0 0.0 0.0 259 -260 0.00142192840576172 0.0 0.0 0.0 260 -261 0.00141096115112305 0.0 0.0 0.0 261 -262 0.00141215324401855 0.0 0.0 0.0 262 -263 0.00141501426696777 0.00999999999999979 0.00999999999999979 0.0 263 -264 0.00141096115112305 0.0 0.0 0.0 264 -265 0.00140213966369629 0.0 0.0 0.0 265 -266 0.00142192840576172 0.0 0.0 0.0 266 -267 0.0014030933380127 0.0 0.0 0.0 267 -268 0.00141596794128418 0.0 0.0 0.0 268 -269 0.00141000747680664 0.0 0.0 0.0 269 -270 0.00141406059265137 0.00999999999999979 0.00999999999999979 0.0 270 -271 0.00140810012817383 0.0 0.0 0.0 271 -272 0.00141215324401855 0.0 0.0 0.0 272 -273 0.00139999389648438 0.0 0.0 0.0 273 -274 0.00139093399047852 0.0 0.0 0.0 274 -275 0.00149083137512207 0.0 0.0 0.0 275 -276 0.00139594078063965 0.0 0.0 0.0 276 -277 0.00141191482543945 0.00999999999999979 0.00999999999999979 0.0 277 -278 0.0013887882232666 0.0 0.0 0.0 278 -279 0.00141382217407227 0.0 0.0 0.0 279 -280 0.0014030933380127 0.0 0.0 0.0 280 -281 0.00141787528991699 0.0 0.0 0.0 281 -282 0.0014030933380127 0.0 0.0 0.0 282 -283 0.00140714645385742 0.0100000000000007 0.0100000000000007 0.0 283 -284 0.00139999389648438 0.0 0.0 0.0 284 -285 0.00139904022216797 0.0 0.0 0.0 285 -286 0.00141000747680664 0.0 0.0 0.0 286 -287 0.00139498710632324 0.0 0.0 0.0 287 -288 0.00140500068664551 0.0 0.0 0.0 288 -289 0.00140810012817383 0.0 0.0 0.0 289 -290 0.00141096115112305 0.00999999999999979 0.00999999999999979 0.0 290 -291 0.0014030933380127 0.0 0.0 0.0 291 -292 0.00141692161560059 0.0 0.0 0.0 292 -293 0.00140786170959473 0.0 0.0 0.0 293 -294 0.00140810012817383 0.0 0.0 0.0 294 -295 0.00141000747680664 0.0 0.0 0.0 295 -296 0.00139212608337402 0.0 0.0 0.0 296 -297 0.00141406059265137 0.0 0.0 0.0 297 -298 0.0013890266418457 0.00999999999999979 0.00999999999999979 0.0 298 -299 0.00141096115112305 0.0 0.0 0.0 299 -300 0.00139379501342773 0.0 0.0 0.0 300 -301 0.00141501426696777 0.0 0.0 0.0 301 -302 0.00139498710632324 0.0 0.0 0.0 302 -303 0.00139594078063965 0.0 0.0 0.0 303 -304 0.00140690803527832 0.0 0.0 0.0 304 -305 0.00188708305358887 0.00999999999999979 0.00999999999999979 0.0 305 -306 0.00266003608703613 0.0 0.0 0.0 306 -307 0.00257205963134766 0.0 0.0 0.0 307 -308 0.0239479541778564 0.0300000000000002 0.0300000000000002 0.0 308 -309 0.0016789436340332 0.0 0.0 0.0 309 -310 0.00142788887023926 0.0 0.0 0.0 310 -311 0.00144720077514648 0.0 0.0 0.0 311 -312 0.00142407417297363 0.0 0.0 0.0 312 -313 0.00144100189208984 0.0 0.0 0.0 313 -314 0.00140810012817383 0.0 0.0 0.0 314 -315 0.00142502784729004 0.00999999999999979 0.00999999999999979 0.0 315 -316 0.00141501426696777 0.0 0.0 0.0 316 -317 0.00142884254455566 0.0 0.0 0.0 317 -318 0.00140810012817383 0.0 0.0 0.0 318 -319 0.00141692161560059 0.0 0.0 0.0 319 -320 0.00141096115112305 0.0 0.0 0.0 320 -321 0.00143098831176758 0.0 0.0 0.0 321 -322 0.00141501426696777 0.00999999999999979 0.00999999999999979 0.0 322 -323 0.00141501426696777 0.0 0.0 0.0 323 -324 0.00140595436096191 0.0 0.0 0.0 324 -325 0.00141692161560059 0.0 0.0 0.0 325 -326 0.00150609016418457 0.0 0.0 0.0 326 -327 0.00142478942871094 0.0 0.0 0.0 327 -328 0.00141191482543945 0.0 0.0 0.0 328 -329 0.00140190124511719 0.0100000000000007 0.0100000000000007 0.0 329 -330 0.00142121315002441 0.0 0.0 0.0 330 -331 0.00140500068664551 0.0 0.0 0.0 331 -332 0.00142288208007812 0.0 0.0 0.0 332 -333 0.00139188766479492 0.0 0.0 0.0 333 -334 0.00141811370849609 0.0 0.0 0.0 334 -335 0.00139999389648438 0.0 0.0 0.0 335 -336 0.00138592720031738 0.00999999999999979 0.00999999999999979 0.0 336 -337 0.00139522552490234 0.0 0.0 0.0 337 -338 0.00139093399047852 0.0 0.0 0.0 338 -339 0.00140500068664551 0.0 0.0 0.0 339 -340 0.00138497352600098 0.0 0.0 0.0 340 -341 0.00139999389648438 0.0 0.0 0.0 341 -342 0.00139594078063965 0.0 0.0 0.0 342 -343 0.00139617919921875 0.00999999999999979 0.00999999999999979 0.0 343 -344 0.00139784812927246 0.0 0.0 0.0 344 -345 0.00139784812927246 0.0 0.0 0.0 345 -346 0.00141716003417969 0.0 0.0 0.0 346 -347 0.00139307975769043 0.0 0.0 0.0 347 -348 0.00141191482543945 0.0 0.0 0.0 348 -349 0.00139999389648438 0.0 0.0 0.0 349 -350 0.00140380859375 0.00999999999999979 0.00999999999999979 0.0 350 -351 0.00140500068664551 0.0 0.0 0.0 351 -352 0.00149989128112793 0.0 0.0 0.0 352 -353 0.00278902053833008 0.0 0.0 0.0 353 -354 0.00261592864990234 0.0 0.0 0.0 354 -355 0.00245213508605957 0.0100000000000007 0.0100000000000007 0.0 355 -356 0.00246095657348633 0.0 0.0 0.0 356 -357 0.00265288352966309 0.0 0.0 0.0 357 -358 0.00261092185974121 0.00999999999999979 0.00999999999999979 0.0 358 -359 0.00242495536804199 0.0 0.0 0.0 359 -360 0.00170683860778809 0.0 0.0 0.0 360 -361 0.00139093399047852 0.0 0.0 0.0 361 -362 0.00142908096313477 0.0 0.0 0.0 362 -363 0.00140976905822754 0.0 0.0 0.0 363 -364 0.00142288208007812 0.00999999999999979 0.00999999999999979 0.0 364 -365 0.00140380859375 0.0 0.0 0.0 365 -366 0.00140714645385742 0.0 0.0 0.0 366 -367 0.00139594078063965 0.0 0.0 0.0 367 -368 0.00140118598937988 0.0 0.0 0.0 368 -369 0.0262439250946045 0.0300000000000002 0.0200000000000005 0.01 369 -370 0.00150489807128906 0.00999999999999979 0.00999999999999979 0.0 370 -371 0.00143313407897949 0.0 0.0 0.0 371 -372 0.00153613090515137 0.0 0.0 0.0 372 -373 0.00143313407897949 0.0 0.0 0.0 373 -374 0.00144290924072266 0.0 0.0 0.0 374 -375 0.00142097473144531 0.0 0.0 0.0 375 -376 0.00142097473144531 0.0 0.0 0.0 376 -377 0.00140810012817383 0.00999999999999979 0.00999999999999979 0.0 377 -378 0.00140690803527832 0.0 0.0 0.0 378 -379 0.0014338493347168 0.0 0.0 0.0 379 -380 0.00142192840576172 0.0 0.0 0.0 380 -381 0.00142502784729004 0.0 0.0 0.0 381 -382 0.00140595436096191 0.0 0.0 0.0 382 -383 0.00141811370849609 0.0 0.0 0.0 383 -384 0.00143003463745117 0.00999999999999979 0.00999999999999979 0.0 384 -385 0.00141596794128418 0.0 0.0 0.0 385 -386 0.00140619277954102 0.0 0.0 0.0 386 -387 0.00142288208007812 0.0 0.0 0.0 387 -388 0.00142002105712891 0.0 0.0 0.0 388 -389 0.00141596794128418 0.0 0.0 0.0 389 -390 0.00142407417297363 0.0 0.0 0.0 390 -391 0.00138282775878906 0.0100000000000007 0.0100000000000007 0.0 391 -392 0.00141501426696777 0.0 0.0 0.0 392 -393 0.00139188766479492 0.0 0.0 0.0 393 -394 0.00141382217407227 0.0 0.0 0.0 394 -395 0.00140714645385742 0.0 0.0 0.0 395 -396 0.00141000747680664 0.0 0.0 0.0 396 -397 0.00139307975769043 0.0 0.0 0.0 397 -398 0.00139307975769043 0.00999999999999979 0.00999999999999979 0.0 398 -399 0.00141000747680664 0.0 0.0 0.0 399 -400 0.00138998031616211 0.0 0.0 0.0 400 -401 0.00140213966369629 0.0 0.0 0.0 401 -402 0.00139904022216797 0.0 0.0 0.0 402 -403 0.00141191482543945 0.0 0.0 0.0 403 -404 0.00139999389648438 0.0 0.0 0.0 404 -405 0.00139188766479492 0.00999999999999979 0.00999999999999979 0.0 405 -406 0.00142502784729004 0.0 0.0 0.0 406 -407 0.00139904022216797 0.0 0.0 0.0 407 -408 0.00157594680786133 0.0 0.0 0.0 408 -409 0.00140500068664551 0.0 0.0 0.0 409 -410 0.00139784812927246 0.0 0.0 0.0 410 -411 0.00139188766479492 0.0 0.0 0.0 411 -412 0.00141215324401855 0.00999999999999979 0.00999999999999979 0.0 412 -413 0.00137901306152344 0.0 0.0 0.0 413 -414 0.0014040470123291 0.0 0.0 0.0 414 -415 0.00138497352600098 0.0 0.0 0.0 415 -416 0.00140285491943359 0.0 0.0 0.0 416 -417 0.00147199630737305 0.0 0.0 0.0 417 -418 0.00141096115112305 0.0100000000000007 0.0100000000000007 0.0 418 -419 0.0013890266418457 0.0 0.0 0.0 419 -420 0.00139093399047852 0.0 0.0 0.0 420 -421 0.00139999389648438 0.0 0.0 0.0 421 -422 0.00141406059265137 0.0 0.0 0.0 422 -423 0.00142383575439453 0.0 0.0 0.0 423 -424 0.00139904022216797 0.0 0.0 0.0 424 -425 0.00141310691833496 0.00999999999999979 0.00999999999999979 0.0 425 -426 0.0013880729675293 0.0 0.0 0.0 426 -427 0.00140094757080078 0.0 0.0 0.0 427 -428 0.00140786170959473 0.0 0.0 0.0 428 -429 0.00139880180358887 0.0 0.0 0.0 429 -430 0.00140118598937988 0.0 0.0 0.0 430 -431 0.0276179313659668 0.0299999999999994 0.0299999999999994 0.0 431 -432 0.00144100189208984 0.0 0.0 0.0 432 -433 0.00150609016418457 0.0 0.0 0.0 433 -434 0.0014500617980957 0.0 0.0 0.0 434 -435 0.00144720077514648 0.0100000000000007 0.0100000000000007 0.0 435 -436 0.00142598152160645 0.0 0.0 0.0 436 -437 0.00144004821777344 0.0 0.0 0.0 437 -438 0.00141215324401855 0.0 0.0 0.0 438 -439 0.00140690803527832 0.0 0.0 0.0 439 -440 0.00140905380249023 0.0 0.0 0.0 440 -441 0.00141191482543945 0.0 0.0 0.0 441 -442 0.00141382217407227 0.00999999999999979 0.00999999999999979 0.0 442 -443 0.00141382217407227 0.0 0.0 0.0 443 -444 0.00142979621887207 0.0 0.0 0.0 444 -445 0.00140786170959473 0.0 0.0 0.0 445 -446 0.00141787528991699 0.0 0.0 0.0 446 -447 0.00142502784729004 0.0 0.0 0.0 447 -448 0.00141716003417969 0.00999999999999979 0.00999999999999979 0.0 448 -449 0.00141692161560059 0.0 0.0 0.0 449 -450 0.00142502784729004 0.0 0.0 0.0 450 -451 0.00140690803527832 0.0 0.0 0.0 451 -452 0.00139808654785156 0.0 0.0 0.0 452 -453 0.00140094757080078 0.0 0.0 0.0 453 -454 0.00141501426696777 0.0 0.0 0.0 454 -455 0.00142598152160645 0.00999999999999979 0.00999999999999979 0.0 455 -456 0.00140595436096191 0.0 0.0 0.0 456 -457 0.00141096115112305 0.0 0.0 0.0 457 -458 0.00138306617736816 0.0 0.0 0.0 458 -459 0.00140500068664551 0.0 0.0 0.0 459 -460 0.00141096115112305 0.0 0.0 0.0 460 -461 0.0013880729675293 0.0 0.0 0.0 461 -462 0.00140094757080078 0.0100000000000007 0.0100000000000007 0.0 462 -463 0.00139594078063965 0.0 0.0 0.0 463 -464 0.00141310691833496 0.0 0.0 0.0 464 -465 0.00138282775878906 0.0 0.0 0.0 465 -466 0.00141596794128418 0.0 0.0 0.0 466 -467 0.00141692161560059 0.0 0.0 0.0 467 -468 0.00142002105712891 0.0 0.0 0.0 468 -469 0.00139999389648438 0.00999999999999979 0.00999999999999979 0.0 469 -470 0.00137901306152344 0.0 0.0 0.0 470 -471 0.00140595436096191 0.0 0.0 0.0 471 -472 0.0013880729675293 0.0 0.0 0.0 472 -473 0.00141310691833496 0.0 0.0 0.0 473 -474 0.0014040470123291 0.0 0.0 0.0 474 -475 0.00141406059265137 0.0 0.0 0.0 475 -476 0.00139713287353516 0.00999999999999979 0.00999999999999979 0.0 476 -477 0.00139307975769043 0.0 0.0 0.0 477 -478 0.00140786170959473 0.0 0.0 0.0 478 -479 0.00139784812927246 0.0 0.0 0.0 479 -480 0.00139784812927246 0.0 0.0 0.0 480 -481 0.00139999389648438 0.0 0.0 0.0 481 -482 0.00140190124511719 0.0 0.0 0.0 482 -483 0.00139594078063965 0.00999999999999979 0.00999999999999979 0.0 483 -484 0.0014188289642334 0.0 0.0 0.0 484 -485 0.00140810012817383 0.0 0.0 0.0 485 -486 0.00141596794128418 0.0 0.0 0.0 486 -487 0.0014030933380127 0.0 0.0 0.0 487 -488 0.00141596794128418 0.0 0.0 0.0 488 -489 0.00141811370849609 0.0 0.0 0.0 489 -490 0.00140094757080078 0.0100000000000007 0.0100000000000007 0.0 490 -491 0.00142717361450195 0.0 0.0 0.0 491 -492 0.00140190124511719 0.0 0.0 0.0 492 -493 0.0237669944763184 0.0199999999999996 0.0199999999999996 0.0 493 -494 0.00249719619750977 0.0 0.0 0.0 494 -495 0.00208711624145508 0.0 0.0 0.0 495 -496 0.00229597091674805 0.00999999999999979 0.00999999999999979 0.0 496 -497 0.00143194198608398 0.0 0.0 0.0 497 -498 0.00144100189208984 0.0 0.0 0.0 498 -499 0.00142002105712891 0.0 0.0 0.0 499 -500 0.00144791603088379 0.0 0.0 0.0 500 -501 0.00140190124511719 0.0 0.0 0.0 501 -502 0.00142192840576172 0.0 0.0 0.0 502 -503 0.00142502784729004 0.0100000000000007 0.0100000000000007 0.0 503 -504 0.0014350414276123 0.0 0.0 0.0 504 -505 0.00141811370849609 0.0 0.0 0.0 505 -506 0.00141811370849609 0.0 0.0 0.0 506 -507 0.00141596794128418 0.0 0.0 0.0 507 -508 0.00141501426696777 0.0 0.0 0.0 508 -509 0.00140094757080078 0.0 0.0 0.0 509 -510 0.00142502784729004 0.00999999999999979 0.00999999999999979 0.0 510 -511 0.0014350414276123 0.0 0.0 0.0 511 -512 0.00139403343200684 0.0 0.0 0.0 512 -513 0.00142598152160645 0.0 0.0 0.0 513 -514 0.00142598152160645 0.0 0.0 0.0 514 -515 0.00181007385253906 0.0 0.0 0.0 515 -516 0.00142097473144531 0.0 0.0 0.0 516 -517 0.0014030933380127 0.00999999999999979 0.00999999999999979 0.0 517 -518 0.00141310691833496 0.0 0.0 0.0 518 -519 0.00140595436096191 0.0 0.0 0.0 519 -520 0.00139999389648438 0.0 0.0 0.0 520 -521 0.00140881538391113 0.0 0.0 0.0 521 -522 0.00139498710632324 0.0 0.0 0.0 522 -523 0.00141406059265137 0.0 0.0 0.0 523 -524 0.00139307975769043 0.00999999999999979 0.00999999999999979 0.0 524 -525 0.0014040470123291 0.0 0.0 0.0 525 -526 0.00141501426696777 0.0 0.0 0.0 526 -527 0.00141716003417969 0.0 0.0 0.0 527 -528 0.00141501426696777 0.0 0.0 0.0 528 -529 0.00147104263305664 0.0 0.0 0.0 529 -530 0.00141096115112305 0.0 0.0 0.0 530 -531 0.00140213966369629 0.0100000000000007 0.0100000000000007 0.0 531 -532 0.00141406059265137 0.0 0.0 0.0 532 -533 0.00139904022216797 0.0 0.0 0.0 533 -534 0.00139403343200684 0.0 0.0 0.0 534 -535 0.00139713287353516 0.0 0.0 0.0 535 -536 0.00140786170959473 0.0 0.0 0.0 536 -537 0.00139403343200684 0.0 0.0 0.0 537 -538 0.00140714645385742 0.00999999999999979 0.00999999999999979 0.0 538 -539 0.00139093399047852 0.0 0.0 0.0 539 -540 0.00140094757080078 0.0 0.0 0.0 540 -541 0.00138711929321289 0.0 0.0 0.0 541 -542 0.00140500068664551 0.0 0.0 0.0 542 -543 0.00141406059265137 0.0 0.0 0.0 543 -544 0.0014030933380127 0.0 0.0 0.0 544 -545 0.00138497352600098 0.00999999999999979 0.00999999999999979 0.0 545 -546 0.00148582458496094 0.0 0.0 0.0 546 -547 0.00141191482543945 0.0 0.0 0.0 547 -548 0.00141119956970215 0.0 0.0 0.0 548 -549 0.00140690803527832 0.0 0.0 0.0 549 -550 0.00140881538391113 0.0 0.0 0.0 550 -551 0.00141286849975586 0.00999999999999979 0.00999999999999979 0.0 551 -552 0.00141286849975586 0.0 0.0 0.0 552 -553 0.00139021873474121 0.0 0.0 0.0 553 -554 0.0234880447387695 0.0200000000000005 0.0200000000000005 0.0 554 -555 0.00147581100463867 0.0 0.0 0.0 555 -556 0.00144290924072266 0.0 0.0 0.0 556 -557 0.00200700759887695 0.00999999999999979 0.00999999999999979 0.0 557 -558 0.00271010398864746 0.0 0.0 0.0 558 -559 0.00263786315917969 0.0 0.0 0.0 559 -560 0.00255584716796875 0.0 0.0 0.0 560 -561 0.0022728443145752 0.00999999999999979 0.00999999999999979 0.0 561 -562 0.0014340877532959 0.0 0.0 0.0 562 -563 0.00143599510192871 0.0 0.0 0.0 563 -564 0.00140905380249023 0.0 0.0 0.0 564 -565 0.00140786170959473 0.0 0.0 0.0 565 -566 0.00142693519592285 0.0 0.0 0.0 566 -567 0.00141596794128418 0.00999999999999979 0.00999999999999979 0.0 567 -568 0.00147199630737305 0.0 0.0 0.0 568 -569 0.00142502784729004 0.0 0.0 0.0 569 -570 0.00143003463745117 0.0 0.0 0.0 570 -571 0.00140595436096191 0.0 0.0 0.0 571 -572 0.00144600868225098 0.0 0.0 0.0 572 -573 0.00141096115112305 0.0 0.0 0.0 573 -574 0.00142717361450195 0.0100000000000007 0.0100000000000007 0.0 574 -575 0.0025019645690918 0.0 0.0 0.0 575 -576 0.00191497802734375 0.0 0.0 0.0 576 -577 0.00141119956970215 0.0 0.0 0.0 577 -578 0.00140690803527832 0.0 0.0 0.0 578 -579 0.00141501426696777 0.00999999999999979 0.00999999999999979 0.0 579 -580 0.00141692161560059 0.0 0.0 0.0 580 -581 0.00139212608337402 0.0 0.0 0.0 581 -582 0.00140810012817383 0.0 0.0 0.0 582 -583 0.00139307975769043 0.0 0.0 0.0 583 -584 0.00139498710632324 0.0 0.0 0.0 584 -585 0.0014030933380127 0.0 0.0 0.0 585 -586 0.0014030933380127 0.00999999999999979 0.00999999999999979 0.0 586 -587 0.00141096115112305 0.0 0.0 0.0 587 -588 0.00140500068664551 0.0 0.0 0.0 588 -589 0.00144505500793457 0.0 0.0 0.0 589 -590 0.00141191482543945 0.0 0.0 0.0 590 -591 0.00140213966369629 0.0 0.0 0.0 591 -592 0.00139594078063965 0.0 0.0 0.0 592 -593 0.00141096115112305 0.00999999999999979 0.00999999999999979 0.0 593 -594 0.00139093399047852 0.0 0.0 0.0 594 -595 0.00148797035217285 0.0 0.0 0.0 595 -596 0.00139999389648438 0.0 0.0 0.0 596 -597 0.00139689445495605 0.0 0.0 0.0 597 -598 0.00140094757080078 0.0 0.0 0.0 598 -599 0.00140786170959473 0.0 0.0 0.0 599 -600 0.00140810012817383 0.0100000000000007 0.0100000000000007 0.0 600 -601 0.00140810012817383 0.0 0.0 0.0 601 -602 0.00140500068664551 0.0 0.0 0.0 602 -603 0.00139093399047852 0.0 0.0 0.0 603 -604 0.00142192840576172 0.0 0.0 0.0 604 -605 0.00138998031616211 0.0 0.0 0.0 605 -606 0.00140213966369629 0.0 0.0 0.0 606 -607 0.00140285491943359 0.00999999999999979 0.00999999999999979 0.0 607 -608 0.00141000747680664 0.0 0.0 0.0 608 -609 0.00140190124511719 0.0 0.0 0.0 609 -610 0.00142097473144531 0.0 0.0 0.0 610 -611 0.00139689445495605 0.0 0.0 0.0 611 -612 0.00147509574890137 0.0 0.0 0.0 612 -613 0.00141000747680664 0.0 0.0 0.0 613 -614 0.00140285491943359 0.00999999999999979 0.00999999999999979 0.0 614 -615 0.00142002105712891 0.0 0.0 0.0 615 -616 0.0232539176940918 0.0200000000000005 0.0200000000000005 0.0 616 -617 0.00145983695983887 0.0 0.0 0.0 617 -618 0.00142908096313477 0.0 0.0 0.0 618 -619 0.00143790245056152 0.00999999999999979 0.00999999999999979 0.0 619 -620 0.00141000747680664 0.0 0.0 0.0 620 -621 0.00141692161560059 0.0 0.0 0.0 621 -622 0.00142216682434082 0.0 0.0 0.0 622 -623 0.00140905380249023 0.0 0.0 0.0 623 -624 0.00142598152160645 0.0 0.0 0.0 624 -625 0.00141096115112305 0.0 0.0 0.0 625 -626 0.00142097473144531 0.00999999999999979 0.00999999999999979 0.0 626 -627 0.00149297714233398 0.0 0.0 0.0 627 -628 0.0014348030090332 0.0 0.0 0.0 628 -629 0.00148200988769531 0.0 0.0 0.0 629 -630 0.0014040470123291 0.0 0.0 0.0 630 -631 0.00141596794128418 0.0 0.0 0.0 631 -632 0.00142216682434082 0.0 0.0 0.0 632 -633 0.00139999389648438 0.00999999999999979 0.00999999999999979 0.0 633 -634 0.00142693519592285 0.0 0.0 0.0 634 -635 0.00141692161560059 0.0 0.0 0.0 635 -636 0.00141501426696777 0.0 0.0 0.0 636 -637 0.00140976905822754 0.0 0.0 0.0 637 -638 0.00140500068664551 0.0 0.0 0.0 638 -639 0.00141787528991699 0.0 0.0 0.0 639 -640 0.0013880729675293 0.0100000000000007 0.0100000000000007 0.0 640 -641 0.00142812728881836 0.0 0.0 0.0 641 -642 0.0014040470123291 0.0 0.0 0.0 642 -643 0.0013880729675293 0.0 0.0 0.0 643 -644 0.00140810012817383 0.0 0.0 0.0 644 -645 0.00142192840576172 0.0 0.0 0.0 645 -646 0.00140810012817383 0.0 0.0 0.0 646 -647 0.00140190124511719 0.00999999999999979 0.00999999999999979 0.0 647 -648 0.00148701667785645 0.0 0.0 0.0 648 -649 0.0014040470123291 0.0 0.0 0.0 649 -650 0.00140094757080078 0.0 0.0 0.0 650 -651 0.00139904022216797 0.0 0.0 0.0 651 -652 0.00141811370849609 0.0 0.0 0.0 652 -653 0.00139403343200684 0.0 0.0 0.0 653 -654 0.00141191482543945 0.00999999999999979 0.00999999999999979 0.0 654 -655 0.00140500068664551 0.0 0.0 0.0 655 -656 0.00141096115112305 0.0 0.0 0.0 656 -657 0.00185894966125488 0.0 0.0 0.0 657 -658 0.00141286849975586 0.0 0.0 0.0 658 -659 0.00149917602539062 0.0 0.0 0.0 659 -660 0.00140190124511719 0.0 0.0 0.0 660 -661 0.00139188766479492 0.00999999999999979 0.00999999999999979 0.0 661 -662 0.00138711929321289 0.0 0.0 0.0 662 -663 0.00139904022216797 0.0 0.0 0.0 663 -664 0.00141596794128418 0.0 0.0 0.0 664 -665 0.00139212608337402 0.0 0.0 0.0 665 -666 0.00141191482543945 0.0 0.0 0.0 666 -667 0.00139403343200684 0.0 0.0 0.0 667 -668 0.00140905380249023 0.0100000000000007 0.0100000000000007 0.0 668 -669 0.00139307975769043 0.0 0.0 0.0 669 -670 0.00139999389648438 0.0 0.0 0.0 670 -671 0.00142002105712891 0.0 0.0 0.0 671 -672 0.00139904022216797 0.0 0.0 0.0 672 -673 0.00142097473144531 0.0 0.0 0.0 673 -674 0.00140500068664551 0.0 0.0 0.0 674 -675 0.00139594078063965 0.00999999999999979 0.00999999999999979 0.0 675 -676 0.00139284133911133 0.0 0.0 0.0 676 -677 0.0242998600006104 0.0199999999999996 0.0199999999999996 0.0 677 -678 0.00148987770080566 0.0 0.0 0.0 678 -679 0.00144290924072266 0.0 0.0 0.0 679 -680 0.00143098831176758 0.0100000000000007 0.0100000000000007 0.0 680 -681 0.00144410133361816 0.0 0.0 0.0 681 -682 0.00142598152160645 0.0 0.0 0.0 682 -683 0.00140094757080078 0.0 0.0 0.0 683 -684 0.00146293640136719 0.0 0.0 0.0 684 -685 0.00141811370849609 0.0 0.0 0.0 685 -686 0.00143098831176758 0.0 0.0 0.0 686 -687 0.00144100189208984 0.00999999999999979 0.00999999999999979 0.0 687 -688 0.00143003463745117 0.0 0.0 0.0 688 -689 0.00141406059265137 0.0 0.0 0.0 689 -690 0.00143194198608398 0.0 0.0 0.0 690 -691 0.0014040470123291 0.0 0.0 0.0 691 -692 0.00141191482543945 0.0 0.0 0.0 692 -693 0.00259590148925781 0.00999999999999979 0.00999999999999979 0.0 693 -694 0.00263714790344238 0.0 0.0 0.0 694 -695 0.00258207321166992 0.0 0.0 0.0 695 -696 0.00255298614501953 0.0 0.0 0.0 696 -697 0.00179100036621094 0.00999999999999979 0.00999999999999979 0.0 697 -698 0.00142312049865723 0.0 0.0 0.0 698 -699 0.00141215324401855 0.0 0.0 0.0 699 -700 0.00140094757080078 0.0 0.0 0.0 700 -701 0.00138998031616211 0.0 0.0 0.0 701 -702 0.00139999389648438 0.0 0.0 0.0 702 -703 0.00142312049865723 0.0 0.0 0.0 703 -704 0.00142812728881836 0.00999999999999979 0.00999999999999979 0.0 704 -705 0.00140690803527832 0.0 0.0 0.0 705 -706 0.00139999389648438 0.0 0.0 0.0 706 -707 0.00140500068664551 0.0 0.0 0.0 707 -708 0.00139498710632324 0.0 0.0 0.0 708 -709 0.00139498710632324 0.0 0.0 0.0 709 -710 0.0014030933380127 0.0 0.0 0.0 710 -711 0.00138497352600098 0.0100000000000007 0.0100000000000007 0.0 711 -712 0.00139498710632324 0.0 0.0 0.0 712 -713 0.00139904022216797 0.0 0.0 0.0 713 -714 0.00141000747680664 0.0 0.0 0.0 714 -715 0.00140118598937988 0.0 0.0 0.0 715 -716 0.00141406059265137 0.0 0.0 0.0 716 -717 0.00140094757080078 0.0 0.0 0.0 717 -718 0.00141787528991699 0.00999999999999979 0.00999999999999979 0.0 718 -719 0.00140714645385742 0.0 0.0 0.0 719 -720 0.00142097473144531 0.0 0.0 0.0 720 -721 0.0013880729675293 0.0 0.0 0.0 721 -722 0.00140094757080078 0.0 0.0 0.0 722 -723 0.0014190673828125 0.0 0.0 0.0 723 -724 0.00139117240905762 0.0 0.0 0.0 724 -725 0.00139784812927246 0.00999999999999979 0.00999999999999979 0.0 725 -726 0.00163793563842773 0.0 0.0 0.0 726 -727 0.00141406059265137 0.0 0.0 0.0 727 -728 0.00140500068664551 0.0 0.0 0.0 728 -729 0.00141692161560059 0.0 0.0 0.0 729 -730 0.00141000747680664 0.0 0.0 0.0 730 -731 0.00139594078063965 0.00999999999999979 0.00999999999999979 0.0 731 -732 0.00140595436096191 0.0 0.0 0.0 732 -733 0.00140881538391113 0.0 0.0 0.0 733 -734 0.00140500068664551 0.0 0.0 0.0 734 -735 0.00139904022216797 0.0 0.0 0.0 735 -736 0.00141787528991699 0.0 0.0 0.0 736 -737 0.00141406059265137 0.0 0.0 0.0 737 -738 0.00141000747680664 0.0100000000000007 0.0100000000000007 0.0 738 -739 0.0232431888580322 0.0199999999999996 0.0199999999999996 0.0 739 -740 0.00145602226257324 0.0 0.0 0.0 740 -741 0.00145196914672852 0.0 0.0 0.0 741 -742 0.00142693519592285 0.0 0.0 0.0 742 -743 0.00143599510192871 0.0 0.0 0.0 743 -744 0.00144100189208984 0.00999999999999979 0.00999999999999979 0.0 744 -745 0.00146389007568359 0.0 0.0 0.0 745 -746 0.00143003463745117 0.0 0.0 0.0 746 -747 0.00141501426696777 0.0 0.0 0.0 747 -748 0.00139808654785156 0.0 0.0 0.0 748 -749 0.00142097473144531 0.0 0.0 0.0 749 -750 0.00140905380249023 0.0 0.0 0.0 750 -751 0.00150108337402344 0.0100000000000007 0.0100000000000007 0.0 751 -752 0.00140714645385742 0.0 0.0 0.0 752 -753 0.00142908096313477 0.0 0.0 0.0 753 -754 0.0014040470123291 0.0 0.0 0.0 754 -755 0.00141501426696777 0.0 0.0 0.0 755 -756 0.00140094757080078 0.0 0.0 0.0 756 -757 0.00141215324401855 0.00999999999999979 0.00999999999999979 0.0 757 -758 0.00141000747680664 0.0 0.0 0.0 758 -759 0.00140714645385742 0.0 0.0 0.0 759 -760 0.00141096115112305 0.0 0.0 0.0 760 -761 0.00140213966369629 0.0 0.0 0.0 761 -762 0.0014188289642334 0.0 0.0 0.0 762 -763 0.00138497352600098 0.0 0.0 0.0 763 -764 0.00142192840576172 0.00999999999999979 0.00999999999999979 0.0 764 -765 0.00140380859375 0.0 0.0 0.0 765 -766 0.00153803825378418 0.0 0.0 0.0 766 -767 0.0013880729675293 0.0 0.0 0.0 767 -768 0.00141191482543945 0.0 0.0 0.0 768 -769 0.00139689445495605 0.0 0.0 0.0 769 -770 0.00144219398498535 0.0 0.0 0.0 770 -771 0.00145888328552246 0.00999999999999979 0.00999999999999979 0.0 771 -772 0.00142621994018555 0.0 0.0 0.0 772 -773 0.00138998031616211 0.0 0.0 0.0 773 -774 0.00141286849975586 0.0 0.0 0.0 774 -775 0.00140190124511719 0.0 0.0 0.0 775 -776 0.00139498710632324 0.0 0.0 0.0 776 -777 0.00141191482543945 0.0 0.0 0.0 777 -778 0.00138211250305176 0.0100000000000007 0.0100000000000007 0.0 778 -779 0.00141000747680664 0.0 0.0 0.0 779 -780 0.00139093399047852 0.0 0.0 0.0 780 -781 0.00139188766479492 0.0 0.0 0.0 781 -782 0.00139904022216797 0.0 0.0 0.0 782 -783 0.0013880729675293 0.0 0.0 0.0 783 -784 0.00139880180358887 0.0 0.0 0.0 784 -785 0.00137805938720703 0.00999999999999979 0.00999999999999979 0.0 785 -786 0.00141191482543945 0.0 0.0 0.0 786 -787 0.00139498710632324 0.0 0.0 0.0 787 -788 0.00141286849975586 0.0 0.0 0.0 788 -789 0.00140285491943359 0.0 0.0 0.0 789 -790 0.00140213966369629 0.0 0.0 0.0 790 -791 0.00139808654785156 0.0 0.0 0.0 791 -792 0.00141000747680664 0.00999999999999979 0.00999999999999979 0.0 792 -793 0.00142383575439453 0.0 0.0 0.0 793 -794 0.0014040470123291 0.0 0.0 0.0 794 -795 0.00141215324401855 0.0 0.0 0.0 795 -796 0.00140690803527832 0.0 0.0 0.0 796 -797 0.00139689445495605 0.0 0.0 0.0 797 -798 0.00139403343200684 0.0 0.0 0.0 798 -799 0.00141096115112305 0.00999999999999979 0.00999999999999979 0.0 799 -800 0.0231518745422363 0.0200000000000005 0.0200000000000005 0.0 800 -801 0.00148391723632812 0.0 0.0 0.0 801 -802 0.00144004821777344 0.0 0.0 0.0 802 -803 0.00144600868225098 0.0 0.0 0.0 803 -804 0.00148105621337891 0.00999999999999979 0.00999999999999979 0.0 804 -805 0.0014500617980957 0.0 0.0 0.0 805 -806 0.00141406059265137 0.0 0.0 0.0 806 -807 0.00140595436096191 0.0 0.0 0.0 807 -808 0.00142502784729004 0.0 0.0 0.0 808 -809 0.00140285491943359 0.0 0.0 0.0 809 -810 0.00142288208007812 0.0 0.0 0.0 810 -811 0.0014030933380127 0.00999999999999979 0.00999999999999979 0.0 811 -812 0.00139999389648438 0.0 0.0 0.0 812 -813 0.00141000747680664 0.0 0.0 0.0 813 -814 0.00140881538391113 0.0 0.0 0.0 814 -815 0.00143098831176758 0.0 0.0 0.0 815 -816 0.00140094757080078 0.0 0.0 0.0 816 -817 0.00143003463745117 0.0 0.0 0.0 817 -818 0.00140500068664551 0.0100000000000007 0.0100000000000007 0.0 818 -819 0.00142002105712891 0.0 0.0 0.0 819 -820 0.00141096115112305 0.0 0.0 0.0 820 -821 0.00142502784729004 0.0 0.0 0.0 821 -822 0.00141096115112305 0.0 0.0 0.0 822 -823 0.00140619277954102 0.0 0.0 0.0 823 -824 0.00139093399047852 0.0 0.0 0.0 824 -825 0.00139999389648438 0.00999999999999979 0.00999999999999979 0.0 825 -826 0.00139999389648438 0.0 0.0 0.0 826 -827 0.00140190124511719 0.0 0.0 0.0 827 -828 0.0014030933380127 0.0 0.0 0.0 828 -829 0.00139808654785156 0.0 0.0 0.0 829 -830 0.00140786170959473 0.0 0.0 0.0 830 -831 0.00171494483947754 0.0 0.0 0.0 831 -832 0.00259613990783691 0.0 0.0 0.0 832 -833 0.00256896018981934 0.0 0.0 0.0 833 -834 0.00258994102478027 0.0 0.0 0.0 834 -835 0.00195598602294922 0.00999999999999979 0.00999999999999979 0.0 835 -836 0.00141477584838867 0.0 0.0 0.0 836 -837 0.0014030933380127 0.0 0.0 0.0 837 -838 0.00140500068664551 0.0 0.0 0.0 838 -839 0.00138711929321289 0.0 0.0 0.0 839 -840 0.00139904022216797 0.0 0.0 0.0 840 -841 0.00139403343200684 0.0 0.0 0.0 841 -842 0.00141215324401855 0.00999999999999979 0.00999999999999979 0.0 842 -843 0.0014498233795166 0.0 0.0 0.0 843 -844 0.00139594078063965 0.0 0.0 0.0 844 -845 0.00139307975769043 0.0 0.0 0.0 845 -846 0.0013890266418457 0.0 0.0 0.0 846 -847 0.00141000747680664 0.0 0.0 0.0 847 -848 0.00138711929321289 0.0 0.0 0.0 848 -849 0.00221610069274902 0.0100000000000007 0.0100000000000007 0.0 849 -850 0.00145506858825684 0.0 0.0 0.0 850 -851 0.00141501426696777 0.0 0.0 0.0 851 -852 0.00145888328552246 0.0 0.0 0.0 852 -853 0.00140500068664551 0.0 0.0 0.0 853 -854 0.00139904022216797 0.0 0.0 0.0 854 -855 0.00137901306152344 0.0 0.0 0.0 855 -856 0.00144314765930176 0.00999999999999979 0.00999999999999979 0.0 856 -857 0.00139904022216797 0.0 0.0 0.0 857 -858 0.00142312049865723 0.0 0.0 0.0 858 -859 0.00139689445495605 0.0 0.0 0.0 859 -860 0.00140786170959473 0.0 0.0 0.0 860 -861 0.00139713287353516 0.0 0.0 0.0 861 -862 0.0231709480285645 0.0300000000000002 0.0300000000000002 0.0 862 -863 0.00148701667785645 0.0 0.0 0.0 863 -864 0.00143599510192871 0.0 0.0 0.0 864 -865 0.00144219398498535 0.0 0.0 0.0 865 -866 0.00142002105712891 0.0 0.0 0.0 866 -867 0.0014500617980957 0.0 0.0 0.0 867 -868 0.00142502784729004 0.00999999999999979 0.00999999999999979 0.0 868 -869 0.00141692161560059 0.0 0.0 0.0 869 -870 0.00142192840576172 0.0 0.0 0.0 870 -871 0.00142192840576172 0.0 0.0 0.0 871 -872 0.00141191482543945 0.0 0.0 0.0 872 -873 0.00143194198608398 0.0 0.0 0.0 873 -874 0.00142288208007812 0.0 0.0 0.0 874 -875 0.00142884254455566 0.00999999999999979 0.00999999999999979 0.0 875 -876 0.00160384178161621 0.0 0.0 0.0 876 -877 0.00264906883239746 0.0 0.0 0.0 877 -878 0.00261187553405762 0.0 0.0 0.0 878 -879 0.00243496894836426 0.00999999999999979 0.00999999999999979 0.0 879 -880 0.00259900093078613 0.0 0.0 0.0 880 -881 0.0026240348815918 0.0 0.0 0.0 881 -882 0.00248599052429199 0.0 0.0 0.0 882 -883 0.0024101734161377 0.0100000000000007 0.0100000000000007 0.0 883 -884 0.00142192840576172 0.0 0.0 0.0 884 -885 0.0014488697052002 0.0 0.0 0.0 885 -886 0.00140285491943359 0.0 0.0 0.0 886 -887 0.00140213966369629 0.0 0.0 0.0 887 -888 0.00141406059265137 0.0 0.0 0.0 888 -889 0.00139999389648438 0.0 0.0 0.0 889 -890 0.00140690803527832 0.00999999999999979 0.00999999999999979 0.0 890 -891 0.00139093399047852 0.0 0.0 0.0 891 -892 0.00140500068664551 0.0 0.0 0.0 892 -893 0.00140690803527832 0.0 0.0 0.0 893 -894 0.00141000747680664 0.0 0.0 0.0 894 -895 0.00140810012817383 0.0 0.0 0.0 895 -896 0.00139403343200684 0.0 0.0 0.0 896 -897 0.00140810012817383 0.00999999999999979 0.00999999999999979 0.0 897 -898 0.00140810012817383 0.0 0.0 0.0 898 -899 0.00143003463745117 0.0 0.0 0.0 899 -900 0.00141811370849609 0.0 0.0 0.0 900 -901 0.00142002105712891 0.0 0.0 0.0 901 -902 0.00138211250305176 0.0 0.0 0.0 902 -903 0.00141096115112305 0.00999999999999979 0.00999999999999979 0.0 903 -904 0.00140595436096191 0.0 0.0 0.0 904 -905 0.00140690803527832 0.0 0.0 0.0 905 -906 0.00141501426696777 0.0 0.0 0.0 906 -907 0.00139594078063965 0.0 0.0 0.0 907 -908 0.00142002105712891 0.0 0.0 0.0 908 -909 0.00139808654785156 0.0 0.0 0.0 909 -910 0.00140905380249023 0.0100000000000007 0.0100000000000007 0.0 910 -911 0.0014040470123291 0.0 0.0 0.0 911 -912 0.00139808654785156 0.0 0.0 0.0 912 -913 0.00141000747680664 0.0 0.0 0.0 913 -914 0.00140619277954102 0.0 0.0 0.0 914 -915 0.0014040470123291 0.0 0.0 0.0 915 -916 0.0014040470123291 0.0 0.0 0.0 916 -917 0.00141310691833496 0.00999999999999979 0.00999999999999979 0.0 917 -918 0.00147795677185059 0.0 0.0 0.0 918 -919 0.00141000747680664 0.0 0.0 0.0 919 -920 0.00140786170959473 0.0 0.0 0.0 920 -921 0.00141000747680664 0.0 0.0 0.0 921 -922 0.00140786170959473 0.0 0.0 0.0 922 -923 0.0234408378601074 0.0300000000000002 0.0300000000000002 0.0 923 -924 0.00142312049865723 0.0 0.0 0.0 924 -925 0.00144505500793457 0.0 0.0 0.0 925 -926 0.00144791603088379 0.0 0.0 0.0 926 -927 0.00144004821777344 0.0 0.0 0.0 927 -928 0.00142192840576172 0.0 0.0 0.0 928 -929 0.00143814086914062 0.00999999999999979 0.00999999999999979 0.0 929 -930 0.00141406059265137 0.0 0.0 0.0 930 -931 0.00141501426696777 0.0 0.0 0.0 931 -932 0.00142312049865723 0.0 0.0 0.0 932 -933 0.00141215324401855 0.0 0.0 0.0 933 -934 0.00143003463745117 0.0 0.0 0.0 934 -935 0.0014188289642334 0.0 0.0 0.0 935 -936 0.00142192840576172 0.00999999999999979 0.00999999999999979 0.0 936 -937 0.00142598152160645 0.0 0.0 0.0 937 -938 0.00143218040466309 0.0 0.0 0.0 938 -939 0.00140094757080078 0.0 0.0 0.0 939 -940 0.00141811370849609 0.0 0.0 0.0 940 -941 0.00142598152160645 0.0 0.0 0.0 941 -942 0.00143694877624512 0.0 0.0 0.0 942 -943 0.00146985054016113 0.00999999999999979 0.00999999999999979 0.0 943 -944 0.00139403343200684 0.0 0.0 0.0 944 -945 0.00141096115112305 0.0 0.0 0.0 945 -946 0.00140595436096191 0.0 0.0 0.0 946 -947 0.00140213966369629 0.0 0.0 0.0 947 -948 0.00139594078063965 0.0 0.0 0.0 948 -949 0.00140190124511719 0.0 0.0 0.0 949 -950 0.00140213966369629 0.0100000000000007 0.0100000000000007 0.0 950 -951 0.0014040470123291 0.0 0.0 0.0 951 -952 0.00139999389648438 0.0 0.0 0.0 952 -953 0.00139904022216797 0.0 0.0 0.0 953 -954 0.00139617919921875 0.0 0.0 0.0 954 -955 0.00141000747680664 0.0 0.0 0.0 955 -956 0.00141716003417969 0.0 0.0 0.0 956 -957 0.00139594078063965 0.00999999999999979 0.00999999999999979 0.0 957 -958 0.00141096115112305 0.0 0.0 0.0 958 -959 0.00139999389648438 0.0 0.0 0.0 959 -960 0.00141787528991699 0.0 0.0 0.0 960 -961 0.00139808654785156 0.0 0.0 0.0 961 -962 0.0014030933380127 0.0 0.0 0.0 962 -963 0.00140810012817383 0.0 0.0 0.0 963 -964 0.00203394889831543 0.00999999999999979 0.00999999999999979 0.0 964 -965 0.00265693664550781 0.0 0.0 0.0 965 -966 0.00261211395263672 0.0 0.0 0.0 966 -967 0.00254082679748535 0.0 0.0 0.0 967 -968 0.00202393531799316 0.00999999999999979 0.00999999999999979 0.0 968 -969 0.00142693519592285 0.0 0.0 0.0 969 -970 0.00139784812927246 0.0 0.0 0.0 970 -971 0.00140213966369629 0.0 0.0 0.0 971 -972 0.00139594078063965 0.0 0.0 0.0 972 -973 0.00141501426696777 0.0 0.0 0.0 973 -974 0.0014030933380127 0.00999999999999979 0.00999999999999979 0.0 974 -975 0.00144290924072266 0.0 0.0 0.0 975 -976 0.00140500068664551 0.0 0.0 0.0 976 -977 0.00140690803527832 0.0 0.0 0.0 977 -978 0.00142502784729004 0.0 0.0 0.0 978 -979 0.00141000747680664 0.0 0.0 0.0 979 -980 0.00141501426696777 0.0 0.0 0.0 980 -981 0.00140118598937988 0.0100000000000007 0.0100000000000007 0.0 981 -982 0.00142693519592285 0.0 0.0 0.0 982 -983 0.00141310691833496 0.0 0.0 0.0 983 -984 0.00140690803527832 0.0 0.0 0.0 984 -985 0.0233311653137207 0.0199999999999996 0.0199999999999996 0.0 985 -986 0.00148701667785645 0.00999999999999979 0.00999999999999979 0.0 986 -987 0.00144100189208984 0.0 0.0 0.0 987 -988 0.00140595436096191 0.0 0.0 0.0 988 -989 0.00144505500793457 0.0 0.0 0.0 989 -990 0.00142598152160645 0.0 0.0 0.0 990 -991 0.0014491081237793 0.0 0.0 0.0 991 -992 0.00139904022216797 0.0 0.0 0.0 992 -993 0.00142788887023926 0.0100000000000007 0.0100000000000007 0.0 993 -994 0.00141382217407227 0.0 0.0 0.0 994 -995 0.00141119956970215 0.0 0.0 0.0 995 -996 0.00139999389648438 0.0 0.0 0.0 996 -997 0.00142192840576172 0.0 0.0 0.0 997 -998 0.0014197826385498 0.0 0.0 0.0 998 -999 0.00142288208007812 0.0 0.0 0.0 999 -1000 0.00141811370849609 0.00999999999999979 0.00999999999999979 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat deleted file mode 100644 index 238a8f3b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat +++ /dev/null @@ -1,900 +0,0 @@ -#lag autocorrelation -101 1.0 -102 0.00222153397099066 -103 -0.0143375943792822 -104 -0.0230145315894251 -105 -0.0272569948085685 -106 -0.0289478311233791 -107 -0.0239202547218024 -108 -0.0254569116577405 -109 -0.0204533758607008 -110 -0.0264699250769266 -111 -0.0247691307865804 -112 -0.0281656685433677 -113 -0.0282797510426555 -114 -0.0264980555156702 -115 -0.0264456484724888 -116 -0.027624326287035 -117 -0.0204913232518958 -118 -0.0136418899889287 -119 -0.0164287250050804 -120 -0.0160068899951543 -121 -0.0213508645203322 -122 -0.0261094503544549 -123 -0.0283361918761636 -124 -0.0221634425280319 -125 -0.0200377132134378 -126 -0.0158156288853482 -127 -0.0184937620769426 -128 -0.0167418191590156 -129 -0.0267897605444739 -130 -0.0277175604156327 -131 -0.0255031340290104 -132 -0.0259704766205717 -133 -0.026687135609607 -134 -0.0259098393314182 -135 -0.0257383295981194 -136 -0.0223218665246626 -137 -0.0237310896666623 -138 -0.0241241330086241 -139 -0.0289642979203642 -140 -0.0268317636147499 -141 -0.0245114013773254 -142 -0.0203659369554139 -143 0.0378050317430218 -144 0.426940829336361 -145 0.38796107377986 -146 0.0415547540823161 -147 -0.0195440376652659 -148 -0.0255053999646579 -149 -0.0275465915036962 -150 -0.0268562381835056 -151 -0.0234577846735018 -152 -0.0209532827400553 -153 -0.0189455488110332 -154 -0.02305883351641 -155 -0.0263771953757563 -156 -0.0280604279698784 -157 -0.0270717426772097 -158 -0.0246648903144108 -159 -0.0247175651482116 -160 -0.021051073568524 -161 -0.0163198388224076 -162 -0.0144235534240568 -163 -0.0136936717999382 -164 -0.01698846339106 -165 -0.0172619597265475 -166 -0.022224434827852 -167 -0.0219642323974638 -168 -0.0213243463149422 -169 -0.0192387869040187 -170 -0.0197178180625259 -171 -0.0247915784961403 -172 -0.0218270561892234 -173 -0.0262672996245232 -174 -0.024849965587679 -175 -0.0250252615288926 -176 -0.0251007165159392 -177 -0.0238806074688618 -178 -0.0238757651256144 -179 -0.0240426101294269 -180 -0.0234219466443065 -181 -0.0212602833600402 -182 -0.0229991714197526 -183 -0.0261227540349392 -184 -0.0221623986521011 -185 -0.0198657473347064 -186 0.036858247139314 -187 0.29256789370978 -188 0.217268577909927 -189 0.196770495691689 -190 0.094220865706204 -191 -0.0203791531848586 -192 -0.0242142425710697 -193 -0.0227327141359121 -194 -0.0219087131272295 -195 -0.0139180641371944 -196 -0.0165931483689415 -197 -0.0139691174427045 -198 -0.0250038332172815 -199 -0.0262538643545197 -200 -0.025280145240993 -201 -0.022716588551902 -202 -0.0229491126971064 -203 -0.020163745252957 -204 -0.0180649219211942 -205 -0.0174961232004392 -206 -0.0153752959032635 -207 -0.0151070882074296 -208 -0.0162636711403948 -209 -0.0213539658247787 -210 -0.0241878645706104 -211 -0.0233292145480391 -212 -0.0222792602366159 -213 -0.0200857928095336 -214 -0.0224102357962423 -215 -0.0200431331454358 -216 -0.0251386240282493 -217 -0.0217360075267156 -218 -0.0231247916814153 -219 -0.0236289558661022 -220 -0.022798275340034 -221 -0.022394916702971 -222 -0.0240641627722647 -223 -0.02767136777592 -224 -0.0188563255687053 -225 -0.0201523683449021 -226 -0.0196358949998781 -227 -0.0201572059848371 -228 -0.0180306969850485 -229 0.0330883208878215 -230 0.187053030884649 -231 0.180166992312632 -232 0.175193540635547 -233 0.0852511978178321 -234 0.0836036324945735 -235 -0.0180475894095978 -236 -0.0203965677916504 -237 -0.0234729155755235 -238 -0.0203967773857997 -239 -0.0168134546888542 -240 -0.0145823454491767 -241 -0.0182208080214287 -242 -0.0222702719218944 -243 -0.0245502962962475 -244 -0.0230701140380481 -245 -0.0205544743992634 -246 -0.0152766305199052 -247 -0.015660060910655 -248 -0.0182272831792615 -249 -0.0161416465628721 -250 -0.0138775731037607 -251 -0.0146059144127008 -252 -0.014851378459684 -253 -0.0174697076620558 -254 -0.020394504090619 -255 -0.020923051703186 -256 -0.0188690748415421 -257 -0.020691771573437 -258 -0.0180158099925264 -259 -0.025009300618942 -260 -0.0241656012183153 -261 -0.0201701986649696 -262 -0.0213418341591563 -263 -0.0212876158412719 -264 -0.0196613481631524 -265 -0.0224579972849258 -266 -0.0222709347842853 -267 -0.021839178151421 -268 -0.0181242059899927 -269 -0.0196595880691145 -270 -0.0176712734167537 -271 -0.0174037647691641 -272 0.0361609936559733 -273 0.136273065680629 -274 0.137142321378537 -275 0.119170985165791 -276 0.135128869617739 -277 0.0365729744317657 -278 0.0813532152332901 -279 -0.0164218823860774 -280 -0.0150012133117104 -281 -0.0180652264456629 -282 -0.0180223031364979 -283 -0.0146583895021702 -284 -0.0178385632762936 -285 -0.0183688063955637 -286 -0.0199104201945895 -287 -0.0209162045756424 -288 -0.0182424612671294 -289 -0.0102871995641823 -290 -0.0097194264103497 -291 -0.0166796622739482 -292 -0.0193090133043633 -293 -0.0109789304127889 -294 -0.0145511817849648 -295 -0.0159177263733151 -296 -0.0162297085566881 -297 -0.0160458825546633 -298 -0.0185277530735613 -299 -0.0201185134004853 -300 -0.0225767827149403 -301 -0.020600528590444 -302 -0.0178266254999198 -303 -0.0228272615104135 -304 -0.0188650304163709 -305 -0.0192512492130587 -306 -0.0198882781449453 -307 -0.018944580372254 -308 -0.0191976364453834 -309 -0.020380651922197 -310 -0.020008249388093 -311 -0.0199582696579672 -312 -0.016107489794778 -313 -0.0168857973840798 -314 -0.0159072805310197 -315 0.0337796643954297 -316 0.091400279956598 -317 0.128355772863555 -318 0.0811615095759163 -319 0.0770716694548368 -320 0.145070077843674 -321 -0.0188619341727165 -322 0.0799864438805513 -323 -0.0199478816959614 -324 -0.0210772723197886 -325 -0.0210646569907724 -326 -0.0200788443102393 -327 -0.0211662403279555 -328 -0.0167589827973132 -329 -0.0177459345163699 -330 -0.0176456584861234 -331 -0.0220878387663237 -332 -0.0138294678922046 -333 -0.00950860063270121 -334 -0.0127373100109087 -335 -0.0165386832541542 -336 -0.0182671925631197 -337 -0.0109720091878599 -338 -0.0142702474119185 -339 -0.0110379801788155 -340 -0.0154139924731546 -341 -0.0128889876019394 -342 -0.0173631353598641 -343 -0.0222795571128729 -344 -0.0201510823246637 -345 -0.014168231775332 -346 -0.0172988244822199 -347 -0.0166164172889096 -348 -0.0174591997875334 -349 -0.0178598488132696 -350 -0.0174148484681578 -351 -0.0181701494308226 -352 -0.0170602479756066 -353 -0.022860700637634 -354 -0.0186677124344551 -355 -0.0163631644839097 -356 -0.0150447805883455 -357 -0.0155934972805149 -358 0.0412705831487356 -359 0.0432271691160312 -360 0.134082054092421 -361 0.030429559359917 -362 0.128011199059957 -363 0.0290649669583617 -364 0.0977105919898357 -365 0.0268435678280154 -366 0.0353018054840323 -367 -0.0198055818066033 -368 -0.018378272291099 -369 -0.019916785016334 -370 -0.0205847247605069 -371 -0.0201224650176015 -372 -0.01627691948957 -373 -0.0153629187371632 -374 -0.0125002930105743 -375 -0.0160149273157025 -376 -0.0130459873232066 -377 -0.0117001449083753 -378 -0.0128253666323881 -379 -0.0149389076420028 -380 -0.0147672676170861 -381 -0.00941821935965455 -382 -0.00473688018446407 -383 -0.00808553215461901 -384 -0.0105108934303795 -385 -0.0155256488187373 -386 -0.0210836438529971 -387 -0.0194168403848756 -388 -0.0138959279148097 -389 -0.0167510111816621 -390 -0.0170725457918982 -391 -0.016150326422395 -392 -0.0187592561556726 -393 -0.0201368328637298 -394 -0.0171077907044443 -395 -0.0171103523390093 -396 -0.0182097163513887 -397 -0.0172423936894017 -398 -0.0146907180546899 -399 -0.0148205318166592 -400 -0.0144952560105946 -401 0.0391317015604062 -402 -0.00325045294442625 -403 0.135229844753472 -404 0.0339587870366385 -405 0.0833862815909146 -406 0.0775145154752597 -407 0.0288174710076017 -408 0.0542563755615635 -409 0.0810954683226646 -410 -0.017752492355491 -411 -0.0180579468812209 -412 -0.0189407872188061 -413 -0.0189713023163003 -414 -0.0189831714463216 -415 -0.0186956047569828 -416 -0.0188493030013216 -417 -0.0190954931073824 -418 -0.0189538951395989 -419 -0.0168159225101202 -420 -0.0149622277586486 -421 -0.0134585088118323 -422 -0.0107702264004257 -423 -0.0116881974906342 -424 -0.0135084097379996 -425 -0.0115600330212086 -426 -0.00385827806043179 -427 -0.00648046756427941 -428 -0.010678969741849 -429 -0.0174377994416611 -430 -0.0197415520446045 -431 -0.01387746808618 -432 -0.0142870555311067 -433 -0.0126167043533278 -434 -0.0145341368337345 -435 -0.0172588314742905 -436 -0.0192532464901077 -437 -0.0178888029842574 -438 -0.0149435002438141 -439 -0.0143499589296186 -440 -0.0113284320025856 -441 -0.0146907285452937 -442 -0.0118090676160861 -443 -0.0129550696231186 -444 -0.00943679479582223 -445 0.0410693940588715 -446 0.0981340063555525 -447 0.0301059977373294 -448 0.0798620238351765 -449 0.0399504241633469 -450 0.0799710609081107 -451 0.0375183260101038 -452 -0.0128846089593424 -453 0.093737068719454 -454 -0.0166488241943883 -455 -0.0171620322539306 -456 -0.0176681103949864 -457 -0.0177135709591161 -458 -0.0174025569142706 -459 -0.0176679666536122 -460 -0.0181412705139815 -461 -0.0178162340211567 -462 -0.0148661374954626 -463 -0.012878454938704 -464 -0.0136407519521233 -465 -0.0103957847636471 -466 -0.00908338367847883 -467 -0.0110136706236845 -468 -0.0121798225855914 -469 -0.00417292561751909 -470 -0.00307290764550916 -471 -0.00798497461616614 -472 -0.0111435895667381 -473 -0.0153727357774596 -474 -0.0130271532875312 -475 -0.0124190182516596 -476 -0.0084547082575317 -477 -0.00918576031696132 -478 -0.0162409259378339 -479 -0.018065492839516 -480 -0.0168355167430056 -481 -0.0140509731408616 -482 -0.0149035783683084 -483 -0.00931711982847588 -484 -0.014271656696945 -485 -0.0121711176661241 -486 -0.016804905268994 -487 -0.0104196286531009 -488 0.0383870537436679 -489 0.0552773935471216 -490 0.0345937652331171 -491 0.0813542198669446 -492 0.0363428500481453 -493 0.0402459628537269 -494 0.0880185317795738 -495 -0.0129023101613787 -496 0.0302552183198115 -497 0.0536535190947818 -498 -0.0156069516901892 -499 -0.0162156062091284 -500 -0.0162183722980474 -501 -0.0157747057135625 -502 -0.0166040466989765 -503 -0.0161608566990615 -504 -0.0167537182627031 -505 -0.0164722018431066 -506 -0.0143593770446019 -507 -0.012530817471516 -508 -0.0130107038316214 -509 -0.0127117424488491 -510 -0.0123582491090572 -511 -0.0143988077890034 -512 -0.0132043617399602 -513 -0.0121255066830081 -514 -0.00947286185269373 -515 -0.00465100530248661 -516 -0.0117788080303492 -517 -0.0130751296092514 -518 -0.0155036171011815 -519 -0.010643006695032 -520 -0.00739844298156769 -521 -0.0112412204699085 -522 -0.0161872155724303 -523 -0.0168989403333427 -524 -0.0153730958327368 -525 -0.0125043590711503 -526 -0.00940141758011818 -527 -0.00767975179438695 -528 -0.0109057442427293 -529 -0.0152170670171314 -530 -0.0148168636021302 -531 0.0536268084567977 -532 0.00159158256076242 -533 0.0395691988094227 -534 0.0851832556342331 -535 0.0404885336981451 -536 0.0359152408805565 -537 0.0400801815807958 -538 0.0426897422408288 -539 0.032487435819703 -540 0.0379746640301957 -541 -0.0114145850527779 -542 -0.0143266971158537 -543 -0.0144808626295274 -544 -0.0142835316361234 -545 -0.0144672980991767 -546 -0.0149347701157941 -547 -0.0147221461325212 -548 -0.0149340818843796 -549 -0.0149339646879691 -550 -0.0125515123976881 -551 -0.0106843909304337 -552 -0.0120477982033282 -553 -0.0107426813396423 -554 -0.0103781179386869 -555 -0.00980456885361171 -556 -0.0108064202489364 -557 -0.0121145826899896 -558 -0.00556810926546485 -559 -0.00930006259964903 -560 -0.00516953265688487 -561 -0.0103764487413688 -562 -0.0101531608339304 -563 -0.00918822426319678 -564 -0.0101644666934554 -565 -0.0112481176383032 -566 -0.0145127017542735 -567 -0.0147134045513878 -568 -0.0123144344086325 -569 -0.00570964879226978 -570 -0.0063187706922707 -571 -0.00374866158046794 -572 -0.013607724159013 -573 -0.0137804453374875 -574 -0.00939070104936453 -575 0.0423495547767671 -576 0.000209272987046017 -577 0.0880471222849516 -578 0.0385858128624645 -579 0.0396811891208319 -580 0.0353924058064461 -581 0.0495909051898724 -582 -0.0113155170664094 -583 0.0871168673380537 -584 -0.0115980451842322 -585 -0.0125526032386238 -586 -0.012561736194457 -587 -0.0122507426071209 -588 -0.0123064811043512 -589 -0.0121521641917975 -590 -0.0125333975284308 -591 -0.0130863343506295 -592 -0.0134314408515597 -593 -0.0107991754906669 -594 -0.00884398203252155 -595 -0.0100733336463772 -596 -0.00922955762602743 -597 -0.00949676131734901 -598 -0.0110224903229849 -599 -0.00991288650680148 -600 -0.00936825932623963 -601 -0.00980726528701717 -602 -0.00476664596953343 -603 -0.011430503413995 -604 -0.0113213354943102 -605 -0.0134064415109797 -606 -0.0126055847537459 -607 -0.0135083477615435 -608 -0.0113488370833923 -609 -0.0093156617098165 -610 -0.00976577466545605 -611 -0.0133363567698321 -612 -0.00759897085944556 -613 -0.00510037875494374 -614 -0.00408004384283288 -615 -0.00918160520147706 -616 -0.0108113236545845 -617 -0.0106231816617747 -618 -0.00758999243430865 -619 0.0435531551195662 -620 0.0520037268502813 -621 0.0439044539134388 -622 0.0386654726142954 -623 0.0394118644732992 -624 0.0449248987301056 -625 -0.00863719437291388 -626 0.0412392562292136 -627 0.0440129688249318 -628 -0.0101620925718705 -629 -0.0109600840877224 -630 -0.0112705053011257 -631 -0.0116301438053661 -632 -0.0113736455019991 -633 -0.0117661118641892 -634 -0.0113961495319145 -635 -0.0117740021837853 -636 -0.0117094958602983 -637 -0.00939366161371644 -638 -0.00755907350023703 -639 -0.00838658396126048 -640 -0.0074832135472603 -641 -0.00801205358318107 -642 -0.00624145194619799 -643 -0.0070240024426915 -644 -0.00834613473332137 -645 -0.00670243676363534 -646 -0.0106128186631781 -647 -0.0123852232161095 -648 -0.0124265826160123 -649 -0.0112567385689026 -650 -0.0126065730661914 -651 -0.0123854746644478 -652 -0.00987776546588025 -653 -0.00722003160503851 -654 -0.00380201074432189 -655 -0.00665072917336648 -656 -0.00528196776714817 -657 -0.00510807558151163 -658 -0.00811089821457131 -659 -0.00755766045240185 -660 -0.00919072675598614 -661 -0.00917820835177611 -662 0.0449751982709438 -663 0.00545567790804502 -664 0.047402752921981 -665 0.0446605853927159 -666 0.0383269966597984 -667 0.0485706532828867 -668 -0.00861899683875584 -669 0.036175649351787 -670 0.0495063574698606 -671 -0.00922596004976487 -672 -0.0101114415486753 -673 -0.00993735125464903 -674 -0.0100323503804273 -675 -0.0105460378506107 -676 -0.0101900492452311 -677 -0.0104909689537006 -678 -0.0106006916930028 -679 -0.0104312931865838 -680 -0.0103517278463301 -681 -0.00740828023970121 -682 -0.00544494861028685 -683 -0.00608611560648061 -684 -0.00534756025333046 -685 -0.0031542340646546 -686 -0.00508349746510613 -687 -0.00739762226897734 -688 -0.0053663959286737 -689 -0.00916557860646553 -690 -0.0110500156300869 -691 -0.00988205922376505 -692 -0.0109866472880073 -693 -0.0111866547046902 -694 -0.0111122786835176 -695 -0.0108203039490724 -696 -0.0102592902413053 -697 -0.0107873762797399 -698 -0.010503275107589 -699 -0.0107835661252666 -700 -0.00885386551992296 -701 -0.00913096053370505 -702 -0.006655207615153 -703 -0.00593455487034946 -704 -0.00427919054888438 -705 -0.007897096903017 -706 0.0490946252850488 -707 0.00815207966824887 -708 0.0473241399151052 -709 0.0451019841097689 -710 0.0479372536790981 -711 -0.00656127986315397 -712 0.0402549343925511 -713 0.0449105363109089 -714 -0.00775184190900309 -715 -0.00768054605133951 -716 -0.00839927750787529 -717 -0.00843853230017117 -718 -0.00790960738283612 -719 -0.0080103177775415 -720 -0.00742775541399996 -721 -0.00765629252098078 -722 -0.00799975093255115 -723 -0.00852792228057431 -724 -0.00869178550957608 -725 -0.00626674339877887 -726 -0.00412677151228354 -727 -0.0048446048963408 -728 -0.000902395625628718 -729 -0.000758143099110528 -730 -0.00408369870009201 -731 -0.00365498969615341 -732 -0.00766259847340275 -733 -0.00952428752243833 -734 -0.00944480113586648 -735 -0.00948862662694449 -736 -0.00966174451824508 -737 -0.00945600129424617 -738 -0.00943741727131444 -739 -0.00927951393185398 -740 -0.00928797610609347 -741 -0.0093286159789273 -742 -0.00765123775530771 -743 -0.00891136789083873 -744 -0.00940772724441718 -745 -0.00786456325355482 -746 -0.0047977712696699 -747 -0.00308223523552548 -748 0.000335699172084439 -749 -0.00143686229797692 -750 0.0513266950133769 -751 0.00563569816195414 -752 0.0477166719391144 -753 0.0538442014782216 -754 -0.0056982279416085 -755 0.0394329868140949 -756 0.0485711646307275 -757 -0.00685930745583302 -758 -0.0069941514632557 -759 -0.0066395137630499 -760 -0.00736962474522024 -761 -0.00752916655217279 -762 -0.00739785479449587 -763 -0.00756967688350672 -764 -0.00753735518588655 -765 -0.00780124181595982 -766 -0.0077216624864741 -767 -0.00784018338356136 -768 -0.00785468874319521 -769 -0.00421699574952483 -770 -0.00190288158223283 -771 -0.000206480072774308 -772 0.00141964253926074 -773 -4.28774976178744e-05 -774 -0.000986275524641414 -775 -0.00657709364993877 -776 -0.00833283088512488 -777 -0.00818951629006444 -778 -0.00836751926023713 -779 -0.00846989619881298 -780 -0.00820214471451413 -781 -0.00821893302874576 -782 -0.00796875201723603 -783 -0.00797370090373924 -784 -0.00777868495761638 -785 -0.00789699981214183 -786 -0.00815610674254451 -787 -0.00778049198735858 -788 -0.00818383133025141 -789 -0.00781336379026083 -790 -0.00682906252309473 -791 -0.00521347355977257 -792 -0.00500213245575373 -793 -0.00506883410260168 -794 0.0474518412366765 -795 0.00530982771618318 -796 0.0565700977023552 -797 -0.000392750407902867 -798 0.0453538486416986 -799 0.0476616389325516 -800 -0.00485863626421196 -801 -0.00525412195734806 -802 -0.00565503507026226 -803 -0.00551485423027977 -804 -0.00524396672704169 -805 -0.00590408701477556 -806 -0.00575508257342466 -807 -0.0058689006002845 -808 -0.00561694855307918 -809 -0.00612555234095552 -810 -0.00608574219510099 -811 -0.00564904015986621 -812 -0.00490660016533395 -813 -0.0046171197705464 -814 0.00177390652695689 -815 0.0035896881022546 -816 0.00161554733058578 -817 0.00437187124600963 -818 -0.000991588850557123 -819 -0.00478099352848916 -820 -0.00637007664471483 -821 -0.00627509734235782 -822 -0.00655857327658989 -823 -0.00656425755979379 -824 -0.00650927617188294 -825 -0.00650262457960547 -826 -0.00662413230967772 -827 -0.00657738252698944 -828 -0.00645476393708 -829 -0.00659463926044406 -830 -0.00649001643087145 -831 -0.00610360245952262 -832 -0.00578387897293013 -833 -0.00402985580826015 -834 -0.00406634314030596 -835 -0.00261501841642483 -836 -0.00301755910132054 -837 -0.00326543386600453 -838 0.0572941624786258 -839 0.00764310260634384 -840 0.00124989263445848 -841 0.0485617649608875 -842 0.0534245959427794 -843 -0.00365723487459394 -844 -0.00424930954244624 -845 -0.00447294923783986 -846 -0.0044749818394267 -847 -0.00464870339809727 -848 -0.00404145529364563 -849 -0.0047634223597755 -850 -0.00467301475043984 -851 -0.00482869667199491 -852 -0.00492239000387982 -853 -0.00463765006041817 -854 -0.0046895918656674 -855 -0.00469126659620766 -856 -0.00430815035273188 -857 -0.00128800088385523 -858 0.00267781615699824 -859 0.00356342242419808 -860 0.00436645666734667 -861 0.00184035931246651 -862 -0.000943211896465123 -863 -0.00341308542653818 -864 -0.00529528124001912 -865 -0.00542898683100493 -866 -0.00553749798487258 -867 -0.00551487806193758 -868 -0.00531561848433044 -869 -0.0053876668196608 -870 -0.00553192702900933 -871 -0.00563989142175504 -872 -0.00521799189299869 -873 -0.00553828490350608 -874 -0.00542860483166627 -875 -0.00537895256953826 -876 -0.00402015584547178 -877 -0.00377599406291178 -878 -0.00402869364355377 -879 -0.00251857216946617 -880 -0.00240522631583728 -881 -0.00231339313710883 -882 -0.00221867026914885 -883 0.0485842407165457 -884 0.00444090950886226 -885 0.052462247531025 -886 -0.00245866728272721 -887 -0.00219100298033388 -888 -0.00258850605081842 -889 -0.0027963562987193 -890 -0.00291992258910256 -891 -0.00299261604099267 -892 -0.00287127254000797 -893 -0.00289608069594768 -894 -0.00280812344627608 -895 -0.00270762901550325 -896 -0.00266975879125481 -897 -0.00220006592251856 -898 -0.00202466427043569 -899 0.0013412649013256 -900 0.00249450051103929 -901 0.00162230152238072 -902 0.00338232047570188 -903 -6.05925325718229e-05 -904 -0.00259194486873829 -905 -0.00291640344192111 -906 -0.00250008679719597 -907 -0.0028490159247303 -908 -0.00308392356343406 -909 -0.00315698199289235 -910 -0.00298811214364333 -911 -0.00314332876724667 -912 -0.0031949080511993 -913 -0.00322269110310181 -914 -0.00327914040255845 -915 -0.00328848900129892 -916 -0.00333752382027206 -917 -0.00309757512659634 -918 -0.00328479456404456 -919 -0.00212177476264958 -920 -0.00213301941637447 -921 -0.00216845672650316 -922 -0.00207541491244113 -923 -0.00207359226664921 -924 -0.000795789430015217 -925 -0.000779514662456165 -926 -0.000756465833443346 -927 0.0577265267706453 -928 0.00687785865649293 -929 -0.00083343873726207 -930 -0.00107719646114928 -931 -0.00108475651120658 -932 -0.00117127681410593 -933 -0.00122811644473185 -934 -0.00127607908277042 -935 -0.00131021310298656 -936 -0.0013179072335 -937 -0.00147237322207706 -938 -0.00138343425729852 -939 -0.00136475351227092 -940 -0.00143219923016344 -941 -0.00132045547517709 -942 -0.00124130927220743 -943 -0.00118457113968125 -944 -0.0011509753919375 -945 -0.000999222689811352 -946 -0.00117359451012239 -947 -0.00105429594479484 -948 -0.00122085082695325 -949 -0.00129578013904683 -950 -0.00102761415169174 -951 -0.00140096472953254 -952 -0.00139860939031699 -953 -0.00151498094704311 -954 -0.0014719650713445 -955 -0.00156023800835947 -956 -0.00160881766904741 -957 -0.00156225880303738 -958 -0.00163459726309757 -959 -0.00163126714870796 -960 -0.00165394472715442 -961 -5.20102850007659e-05 -962 -0.000181333021969587 -963 -0.000229410914437179 -964 -0.000271936329999531 -965 -0.000289225646672715 -966 -0.000264626695269327 -967 -0.000343743683778553 -968 0.00109579617257524 -969 0.00106253650901319 -970 0.00103053375796608 -971 0.000994475133650943 -972 0.00096219604797213 -973 0.000930291083643673 -974 0.00089629434032705 -975 0.000862706715224073 -976 0.000829567281721935 -977 0.000796368072697504 -978 0.000761767798271763 -979 0.000730769092014861 -980 0.000695768030599533 -981 0.000665093515571032 -982 0.000631804759496164 -983 0.000597688431802904 -984 0.000571043223397954 -985 0.00053621559120878 -986 0.0005056031461063 -987 0.000470414024698076 -988 0.000436113652307852 -989 0.000401280866025421 -990 0.000366892747802913 -991 0.000332558486017457 -992 0.00029776201514551 -993 0.000264088081422397 -994 0.000229570195953799 -995 0.000203049247782519 -996 0.000169032219339048 -997 0.000134474421245207 -998 0.000100377453607142 -999 6.59658062483004e-05 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat deleted file mode 100644 index 619ef984..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_pretty.dat +++ /dev/null @@ -1,901 +0,0 @@ -#scatter real total user system repeat -101 0.00208497047424316 0.0 0.0 0.0 101 -102 0.00208020210266113 0.0 0.0 0.0 102 -103 0.00206804275512695 0.0 0.0 0.0 103 -104 0.00207710266113281 0.0 0.0 0.0 104 -105 0.00206398963928223 0.00999999999999979 0.00999999999999979 0.0 105 -106 0.00206398963928223 0.0 0.0 0.0 106 -107 0.00208497047424316 0.0 0.0 0.0 107 -108 0.00206398963928223 0.0 0.0 0.0 108 -109 0.00207400321960449 0.0 0.0 0.0 109 -110 0.00206398963928223 0.0 0.0 0.0 110 -111 0.00205802917480469 0.0 0.0 0.0 111 -112 0.00207996368408203 0.0 0.0 0.0 112 -113 0.00207304954528809 0.0 0.0 0.0 113 -114 0.00206899642944336 0.00999999999999979 0.00999999999999979 0.0 114 -115 0.00207114219665527 0.0 0.0 0.0 115 -116 0.00212287902832031 0.0 0.0 0.0 116 -117 0.00205707550048828 0.0 0.0 0.0 117 -118 0.0020599365234375 0.0 0.0 0.0 118 -119 0.00206613540649414 0.0100000000000016 0.0100000000000016 0.0 119 -120 0.00205683708190918 0.0 0.0 0.0 120 -121 0.00205206871032715 0.0 0.0 0.0 121 -122 0.00204992294311523 0.0 0.0 0.0 122 -123 0.00208115577697754 0.0 0.0 0.0 123 -124 0.00205588340759277 0.00999999999999979 0.00999999999999979 0.0 124 -125 0.00207877159118652 0.0 0.0 0.0 125 -126 0.00207400321960449 0.0 0.0 0.0 126 -127 0.00206089019775391 0.0 0.0 0.0 127 -128 0.00205779075622559 0.00999999999999979 0.00999999999999979 0.0 128 -129 0.00205898284912109 0.0 0.0 0.0 129 -130 0.00206899642944336 0.0 0.0 0.0 130 -131 0.00204896926879883 0.0 0.0 0.0 131 -132 0.00209593772888184 0.0 0.0 0.0 132 -133 0.00208401679992676 0.00999999999999979 0.00999999999999979 0.0 133 -134 0.0276279449462891 0.0199999999999996 0.0199999999999996 0.0 134 -135 0.0021820068359375 0.00999999999999979 0.00999999999999979 0.0 135 -136 0.00213503837585449 0.0 0.0 0.0 136 -137 0.00211405754089355 0.0 0.0 0.0 137 -138 0.00212502479553223 0.0 0.0 0.0 138 -139 0.0020899772644043 0.0 0.0 0.0 139 -140 0.00207901000976562 0.00999999999999979 0.00999999999999979 0.0 140 -141 0.00206589698791504 0.0 0.0 0.0 141 -142 0.00207710266113281 0.0 0.0 0.0 142 -143 0.00205492973327637 0.0 0.0 0.0 143 -144 0.00208020210266113 0.0 0.0 0.0 144 -145 0.00206184387207031 0.00999999999999979 0.00999999999999979 0.0 145 -146 0.00208377838134766 0.0 0.0 0.0 146 -147 0.00206995010375977 0.0 0.0 0.0 147 -148 0.00206708908081055 0.0 0.0 0.0 148 -149 0.00207114219665527 0.0100000000000016 0.0100000000000016 0.0 149 -150 0.0020759105682373 0.0 0.0 0.0 150 -151 0.0021510124206543 0.0 0.0 0.0 151 -152 0.00207805633544922 0.0 0.0 0.0 152 -153 0.00206089019775391 0.0 0.0 0.0 153 -154 0.00206089019775391 0.00999999999999979 0.00999999999999979 0.0 154 -155 0.00207614898681641 0.0 0.0 0.0 155 -156 0.00205588340759277 0.0 0.0 0.0 156 -157 0.00206494331359863 0.0 0.0 0.0 157 -158 0.00280499458312988 0.00999999999999979 0.00999999999999979 0.0 158 -159 0.00453996658325195 0.0 0.0 0.0 159 -160 0.00369596481323242 0.0 0.0 0.0 160 -161 0.00410914421081543 0.00999999999999979 0.00999999999999979 0.0 161 -162 0.00381112098693848 0.0 0.0 0.0 162 -163 0.00235795974731445 0.0 0.0 0.0 163 -164 0.00209784507751465 0.0 0.0 0.0 164 -165 0.00204992294311523 0.00999999999999979 0.00999999999999979 0.0 165 -166 0.00204110145568848 0.0 0.0 0.0 166 -167 0.00205802917480469 0.0 0.0 0.0 167 -168 0.00205707550048828 0.0 0.0 0.0 168 -169 0.00208711624145508 0.0 0.0 0.0 169 -170 0.00208187103271484 0.00999999999999979 0.00999999999999979 0.0 170 -171 0.00205421447753906 0.0 0.0 0.0 171 -172 0.0020749568939209 0.0 0.0 0.0 172 -173 0.00210809707641602 0.0 0.0 0.0 173 -174 0.00206804275512695 0.00999999999999979 0.00999999999999979 0.0 174 -175 0.00205206871032715 0.0 0.0 0.0 175 -176 0.00207614898681641 0.0 0.0 0.0 176 -177 0.0020759105682373 0.0 0.0 0.0 177 -178 0.0242831707000732 0.0300000000000011 0.0300000000000011 0.0 178 -179 0.00222992897033691 0.0 0.0 0.0 179 -180 0.00214791297912598 0.0 0.0 0.0 180 -181 0.00211286544799805 0.0 0.0 0.0 181 -182 0.00209379196166992 0.0 0.0 0.0 182 -183 0.00209307670593262 0.0 0.0 0.0 183 -184 0.00218510627746582 0.0 0.0 0.0 184 -185 0.00206613540649414 0.0 0.0 0.0 185 -186 0.00207090377807617 0.0 0.0 0.0 186 -187 0.00206613540649414 0.00999999999999979 0.00999999999999979 0.0 187 -188 0.00206112861633301 0.0 0.0 0.0 188 -189 0.00206303596496582 0.0 0.0 0.0 189 -190 0.00205802917480469 0.0 0.0 0.0 190 -191 0.00206398963928223 0.0 0.0 0.0 191 -192 0.00210189819335938 0.00999999999999979 0.00999999999999979 0.0 192 -193 0.00206804275512695 0.0 0.0 0.0 193 -194 0.00206708908081055 0.0 0.0 0.0 194 -195 0.00206208229064941 0.0 0.0 0.0 195 -196 0.0020899772644043 0.0 0.0 0.0 196 -197 0.00205612182617188 0.00999999999999979 0.00999999999999979 0.0 197 -198 0.00205898284912109 0.0 0.0 0.0 198 -199 0.00208115577697754 0.0 0.0 0.0 199 -200 0.0020759105682373 0.0 0.0 0.0 200 -201 0.00205302238464355 0.00999999999999979 0.00999999999999979 0.0 201 -202 0.00206995010375977 0.0 0.0 0.0 202 -203 0.00206089019775391 0.0 0.0 0.0 203 -204 0.0020439624786377 0.0 0.0 0.0 204 -205 0.00207185745239258 0.0 0.0 0.0 205 -206 0.0020449161529541 0.00999999999999979 0.00999999999999979 0.0 206 -207 0.00223898887634277 0.0 0.0 0.0 207 -208 0.00205707550048828 0.0 0.0 0.0 208 -209 0.00206303596496582 0.0 0.0 0.0 209 -210 0.00205707550048828 0.0 0.0 0.0 210 -211 0.00204896926879883 0.0100000000000016 0.0100000000000016 0.0 211 -212 0.00204205513000488 0.0 0.0 0.0 212 -213 0.00211596488952637 0.0 0.0 0.0 213 -214 0.00206494331359863 0.0 0.0 0.0 214 -215 0.0020749568939209 0.0 0.0 0.0 215 -216 0.00206279754638672 0.00999999999999979 0.00999999999999979 0.0 216 -217 0.00206589698791504 0.0 0.0 0.0 217 -218 0.00207114219665527 0.0 0.0 0.0 218 -219 0.00208210945129395 0.0 0.0 0.0 219 -220 0.00207901000976562 0.00999999999999979 0.00999999999999979 0.0 220 -221 0.00207304954528809 0.0 0.0 0.0 221 -222 0.00209498405456543 0.0 0.0 0.0 222 -223 0.0286588668823242 0.0299999999999994 0.0299999999999994 0.0 223 -224 0.00219297409057617 0.0 0.0 0.0 224 -225 0.00214004516601562 0.0 0.0 0.0 225 -226 0.00212192535400391 0.00999999999999979 0.00999999999999979 0.0 226 -227 0.00208878517150879 0.0 0.0 0.0 227 -228 0.00208306312561035 0.0 0.0 0.0 228 -229 0.00206398963928223 0.0 0.0 0.0 229 -230 0.00207996368408203 0.0 0.0 0.0 230 -231 0.00206494331359863 0.00999999999999979 0.00999999999999979 0.0 231 -232 0.00206494331359863 0.0 0.0 0.0 232 -233 0.0020751953125 0.0 0.0 0.0 233 -234 0.00207805633544922 0.0 0.0 0.0 234 -235 0.00206494331359863 0.0 0.0 0.0 235 -236 0.00206398963928223 0.00999999999999979 0.00999999999999979 0.0 236 -237 0.0020749568939209 0.0 0.0 0.0 237 -238 0.00206494331359863 0.0 0.0 0.0 238 -239 0.00206494331359863 0.0 0.0 0.0 239 -240 0.00205492973327637 0.0 0.0 0.0 240 -241 0.00206518173217773 0.0100000000000016 0.0100000000000016 0.0 241 -242 0.00207686424255371 0.0 0.0 0.0 242 -243 0.00204920768737793 0.0 0.0 0.0 243 -244 0.00206398963928223 0.0 0.0 0.0 244 -245 0.00206184387207031 0.00999999999999979 0.00999999999999979 0.0 245 -246 0.00205397605895996 0.0 0.0 0.0 246 -247 0.00206804275512695 0.0 0.0 0.0 247 -248 0.00204014778137207 0.0 0.0 0.0 248 -249 0.00206995010375977 0.0 0.0 0.0 249 -250 0.00205802917480469 0.00999999999999979 0.00999999999999979 0.0 250 -251 0.00205612182617188 0.0 0.0 0.0 251 -252 0.0020439624786377 0.0 0.0 0.0 252 -253 0.00204610824584961 0.0 0.0 0.0 253 -254 0.00206518173217773 0.0 0.0 0.0 254 -255 0.00204300880432129 0.00999999999999979 0.00999999999999979 0.0 255 -256 0.00205802917480469 0.0 0.0 0.0 256 -257 0.0020759105682373 0.0 0.0 0.0 257 -258 0.00206303596496582 0.0 0.0 0.0 258 -259 0.00207281112670898 0.0 0.0 0.0 259 -260 0.00205898284912109 0.00999999999999979 0.00999999999999979 0.0 260 -261 0.00205898284912109 0.0 0.0 0.0 261 -262 0.00205683708190918 0.0 0.0 0.0 262 -263 0.00207901000976562 0.0 0.0 0.0 263 -264 0.00206780433654785 0.00999999999999979 0.00999999999999979 0.0 264 -265 0.00208497047424316 0.0 0.0 0.0 265 -266 0.00219416618347168 0.0 0.0 0.0 266 -267 0.024918794631958 0.0199999999999996 0.0199999999999996 0.0 267 -268 0.00214409828186035 0.0100000000000016 0.0100000000000016 0.0 268 -269 0.0021209716796875 0.0 0.0 0.0 269 -270 0.00211095809936523 0.0 0.0 0.0 270 -271 0.00207209587097168 0.0 0.0 0.0 271 -272 0.0020902156829834 0.00999999999999979 0.00999999999999979 0.0 272 -273 0.00208091735839844 0.0 0.0 0.0 273 -274 0.00206494331359863 0.0 0.0 0.0 274 -275 0.00207281112670898 0.0 0.0 0.0 275 -276 0.00205397605895996 0.0 0.0 0.0 276 -277 0.0020599365234375 0.00999999999999979 0.00999999999999979 0.0 277 -278 0.00206208229064941 0.0 0.0 0.0 278 -279 0.00205898284912109 0.0 0.0 0.0 279 -280 0.00207304954528809 0.0 0.0 0.0 280 -281 0.0020909309387207 0.0 0.0 0.0 281 -282 0.00206708908081055 0.00999999999999979 0.00999999999999979 0.0 282 -283 0.00206303596496582 0.0 0.0 0.0 283 -284 0.0020449161529541 0.0 0.0 0.0 284 -285 0.00206398963928223 0.0 0.0 0.0 285 -286 0.00204992294311523 0.0 0.0 0.0 286 -287 0.00205111503601074 0.00999999999999979 0.00999999999999979 0.0 287 -288 0.00205397605895996 0.0 0.0 0.0 288 -289 0.00206589698791504 0.0 0.0 0.0 289 -290 0.00206184387207031 0.0 0.0 0.0 290 -291 0.00207281112670898 0.00999999999999979 0.00999999999999979 0.0 291 -292 0.00205683708190918 0.0 0.0 0.0 292 -293 0.00205802917480469 0.0 0.0 0.0 293 -294 0.00206208229064941 0.0 0.0 0.0 294 -295 0.00205206871032715 0.0 0.0 0.0 295 -296 0.00206208229064941 0.00999999999999979 0.00999999999999979 0.0 296 -297 0.00205707550048828 0.0 0.0 0.0 297 -298 0.00207400321960449 0.0 0.0 0.0 298 -299 0.00205802917480469 0.0 0.0 0.0 299 -300 0.00205802917480469 0.0 0.0 0.0 300 -301 0.00207018852233887 0.00999999999999979 0.00999999999999979 0.0 301 -302 0.00206995010375977 0.0 0.0 0.0 302 -303 0.0021510124206543 0.0 0.0 0.0 303 -304 0.0020599365234375 0.0 0.0 0.0 304 -305 0.00206208229064941 0.0 0.0 0.0 305 -306 0.00221395492553711 0.0100000000000016 0.0100000000000016 0.0 306 -307 0.00210285186767578 0.0 0.0 0.0 307 -308 0.00223803520202637 0.0 0.0 0.0 308 -309 0.0020909309387207 0.0 0.0 0.0 309 -310 0.00207996368408203 0.00999999999999979 0.00999999999999979 0.0 310 -311 0.0255651473999023 0.0199999999999996 0.0199999999999996 0.0 311 -312 0.00424313545227051 0.00999999999999979 0.00999999999999979 0.0 312 -313 0.00345015525817871 0.0 0.0 0.0 313 -314 0.00213217735290527 0.0 0.0 0.0 314 -315 0.00210309028625488 0.0 0.0 0.0 315 -316 0.00207686424255371 0.00999999999999979 0.00999999999999979 0.0 316 -317 0.00207209587097168 0.0 0.0 0.0 317 -318 0.00213503837585449 0.0 0.0 0.0 318 -319 0.00294709205627441 0.0 0.0 0.0 319 -320 0.00207018852233887 0.00999999999999979 0.00999999999999979 0.0 320 -321 0.00208091735839844 0.0 0.0 0.0 321 -322 0.00208783149719238 0.0 0.0 0.0 322 -323 0.00208806991577148 0.0 0.0 0.0 323 -324 0.00208210945129395 0.0 0.0 0.0 324 -325 0.0020601749420166 0.00999999999999979 0.00999999999999979 0.0 325 -326 0.00206303596496582 0.0 0.0 0.0 326 -327 0.00205588340759277 0.0 0.0 0.0 327 -328 0.00206208229064941 0.0 0.0 0.0 328 -329 0.00205492973327637 0.0 0.0 0.0 329 -330 0.00205683708190918 0.00999999999999979 0.00999999999999979 0.0 330 -331 0.00205397605895996 0.0 0.0 0.0 331 -332 0.00206303596496582 0.0 0.0 0.0 332 -333 0.00205397605895996 0.0 0.0 0.0 333 -334 0.00205802917480469 0.0 0.0 0.0 334 -335 0.00204992294311523 0.0100000000000016 0.0100000000000016 0.0 335 -336 0.0020599365234375 0.0 0.0 0.0 336 -337 0.00216293334960938 0.0 0.0 0.0 337 -338 0.00204205513000488 0.0 0.0 0.0 338 -339 0.00208377838134766 0.00999999999999979 0.00999999999999979 0.0 339 -340 0.00212287902832031 0.0 0.0 0.0 340 -341 0.00205206871032715 0.0 0.0 0.0 341 -342 0.00207185745239258 0.0 0.0 0.0 342 -343 0.00206279754638672 0.0 0.0 0.0 343 -344 0.00204896926879883 0.00999999999999979 0.00999999999999979 0.0 344 -345 0.00205779075622559 0.0 0.0 0.0 345 -346 0.00207614898681641 0.0 0.0 0.0 346 -347 0.00204992294311523 0.0 0.0 0.0 347 -348 0.00206398963928223 0.0 0.0 0.0 348 -349 0.00206184387207031 0.00999999999999979 0.00999999999999979 0.0 349 -350 0.00206518173217773 0.0 0.0 0.0 350 -351 0.00207805633544922 0.0 0.0 0.0 351 -352 0.0020749568939209 0.0 0.0 0.0 352 -353 0.00208401679992676 0.0 0.0 0.0 353 -354 0.00214099884033203 0.00999999999999979 0.00999999999999979 0.0 354 -355 0.0242671966552734 0.0199999999999996 0.0199999999999996 0.0 355 -356 0.00216913223266602 0.0 0.0 0.0 356 -357 0.00213503837585449 0.00999999999999979 0.00999999999999979 0.0 357 -358 0.00212192535400391 0.0 0.0 0.0 358 -359 0.00210094451904297 0.0 0.0 0.0 359 -360 0.0020909309387207 0.0 0.0 0.0 360 -361 0.00209498405456543 0.0 0.0 0.0 361 -362 0.00208592414855957 0.0100000000000016 0.0100000000000016 0.0 362 -363 0.00206685066223145 0.0 0.0 0.0 363 -364 0.00205492973327637 0.0 0.0 0.0 364 -365 0.00207710266113281 0.0 0.0 0.0 365 -366 0.00207304954528809 0.0 0.0 0.0 366 -367 0.00205421447753906 0.0 0.0 0.0 367 -368 0.00206685066223145 0.0 0.0 0.0 368 -369 0.00206613540649414 0.0 0.0 0.0 369 -370 0.00255608558654785 0.0 0.0 0.0 370 -371 0.00206899642944336 0.00999999999999979 0.00999999999999979 0.0 371 -372 0.00216817855834961 0.0 0.0 0.0 372 -373 0.00214409828186035 0.0 0.0 0.0 373 -374 0.00205111503601074 0.0 0.0 0.0 374 -375 0.0020749568939209 0.0 0.0 0.0 375 -376 0.0020759105682373 0.00999999999999979 0.00999999999999979 0.0 376 -377 0.0020599365234375 0.0 0.0 0.0 377 -378 0.00207805633544922 0.0 0.0 0.0 378 -379 0.00205898284912109 0.0 0.0 0.0 379 -380 0.00205492973327637 0.0 0.0 0.0 380 -381 0.00205397605895996 0.00999999999999979 0.00999999999999979 0.0 381 -382 0.00205588340759277 0.0 0.0 0.0 382 -383 0.00204014778137207 0.0 0.0 0.0 383 -384 0.00204610824584961 0.0 0.0 0.0 384 -385 0.00206184387207031 0.0 0.0 0.0 385 -386 0.00203680992126465 0.00999999999999979 0.00999999999999979 0.0 386 -387 0.00206804275512695 0.0 0.0 0.0 387 -388 0.00205707550048828 0.0 0.0 0.0 388 -389 0.00206804275512695 0.0 0.0 0.0 389 -390 0.00206589698791504 0.00999999999999979 0.00999999999999979 0.0 390 -391 0.00206780433654785 0.0 0.0 0.0 391 -392 0.00206494331359863 0.0 0.0 0.0 392 -393 0.00206303596496582 0.0 0.0 0.0 393 -394 0.00204896926879883 0.0 0.0 0.0 394 -395 0.00207185745239258 0.00999999999999979 0.00999999999999979 0.0 395 -396 0.00207304954528809 0.0 0.0 0.0 396 -397 0.00208806991577148 0.0 0.0 0.0 397 -398 0.00208806991577148 0.0 0.0 0.0 398 -399 0.024277925491333 0.0300000000000011 0.0300000000000011 0.0 399 -400 0.00216102600097656 0.0 0.0 0.0 400 -401 0.00212621688842773 0.0 0.0 0.0 401 -402 0.00209689140319824 0.0 0.0 0.0 402 -403 0.00210285186767578 0.00999999999999979 0.00999999999999979 0.0 403 -404 0.00208210945129395 0.0 0.0 0.0 404 -405 0.00401806831359863 0.0 0.0 0.0 405 -406 0.00404691696166992 0.00999999999999979 0.00999999999999979 0.0 406 -407 0.00400710105895996 0.0 0.0 0.0 407 -408 0.00207805633544922 0.0 0.0 0.0 408 -409 0.00208497047424316 0.0 0.0 0.0 409 -410 0.0020751953125 0.00999999999999979 0.00999999999999979 0.0 410 -411 0.00208187103271484 0.0 0.0 0.0 411 -412 0.00213217735290527 0.0 0.0 0.0 412 -413 0.00207400321960449 0.0 0.0 0.0 413 -414 0.00206208229064941 0.0 0.0 0.0 414 -415 0.00206613540649414 0.00999999999999979 0.00999999999999979 0.0 415 -416 0.00204205513000488 0.0 0.0 0.0 416 -417 0.00208091735839844 0.0 0.0 0.0 417 -418 0.00227904319763184 0.0 0.0 0.0 418 -419 0.00206899642944336 0.00999999999999979 0.00999999999999979 0.0 419 -420 0.00207114219665527 0.0 0.0 0.0 420 -421 0.00207090377807617 0.0 0.0 0.0 421 -422 0.00204086303710938 0.0 0.0 0.0 422 -423 0.00205683708190918 0.0 0.0 0.0 423 -424 0.00205421447753906 0.00999999999999979 0.00999999999999979 0.0 424 -425 0.00205588340759277 0.0 0.0 0.0 425 -426 0.0020439624786377 0.0 0.0 0.0 426 -427 0.00203394889831543 0.0 0.0 0.0 427 -428 0.0020599365234375 0.0 0.0 0.0 428 -429 0.00205612182617188 0.0100000000000016 0.0100000000000016 0.0 429 -430 0.00206303596496582 0.0 0.0 0.0 430 -431 0.00206899642944336 0.0 0.0 0.0 431 -432 0.00206804275512695 0.0 0.0 0.0 432 -433 0.00212502479553223 0.0 0.0 0.0 433 -434 0.00207805633544922 0.00999999999999979 0.00999999999999979 0.0 434 -435 0.00205397605895996 0.0 0.0 0.0 435 -436 0.00214004516601562 0.0 0.0 0.0 436 -437 0.0020451545715332 0.0 0.0 0.0 437 -438 0.0020599365234375 0.00999999999999979 0.00999999999999979 0.0 438 -439 0.00207805633544922 0.0 0.0 0.0 439 -440 0.00207304954528809 0.0 0.0 0.0 440 -441 0.00207090377807617 0.0 0.0 0.0 441 -442 0.0238261222839355 0.0299999999999994 0.0299999999999994 0.0 442 -443 0.00229191780090332 0.0 0.0 0.0 443 -444 0.00225210189819336 0.0 0.0 0.0 444 -445 0.00214314460754395 0.0 0.0 0.0 445 -446 0.00211405754089355 0.0 0.0 0.0 446 -447 0.0021059513092041 0.00999999999999979 0.00999999999999979 0.0 447 -448 0.00212502479553223 0.0 0.0 0.0 448 -449 0.00215005874633789 0.0 0.0 0.0 449 -450 0.00206708908081055 0.0 0.0 0.0 450 -451 0.00206208229064941 0.00999999999999979 0.00999999999999979 0.0 451 -452 0.00206995010375977 0.0 0.0 0.0 452 -453 0.00207304954528809 0.0 0.0 0.0 453 -454 0.00208711624145508 0.0 0.0 0.0 454 -455 0.00207400321960449 0.0 0.0 0.0 455 -456 0.00205802917480469 0.0100000000000016 0.0100000000000016 0.0 456 -457 0.00207400321960449 0.0 0.0 0.0 457 -458 0.00209999084472656 0.0 0.0 0.0 458 -459 0.00374412536621094 0.0 0.0 0.0 459 -460 0.00207614898681641 0.0 0.0 0.0 460 -461 0.00207996368408203 0.00999999999999979 0.00999999999999979 0.0 461 -462 0.00205206871032715 0.0 0.0 0.0 462 -463 0.00207209587097168 0.0 0.0 0.0 463 -464 0.00206708908081055 0.0 0.0 0.0 464 -465 0.00206398963928223 0.0 0.0 0.0 465 -466 0.00205302238464355 0.00999999999999979 0.00999999999999979 0.0 466 -467 0.00206995010375977 0.0 0.0 0.0 467 -468 0.00209617614746094 0.0 0.0 0.0 468 -469 0.00206899642944336 0.0 0.0 0.0 469 -470 0.0020451545715332 0.0 0.0 0.0 470 -471 0.00206589698791504 0.00999999999999979 0.00999999999999979 0.0 471 -472 0.0020442008972168 0.0 0.0 0.0 472 -473 0.00206089019775391 0.0 0.0 0.0 473 -474 0.00205492973327637 0.0 0.0 0.0 474 -475 0.00206708908081055 0.0 0.0 0.0 475 -476 0.00205087661743164 0.00999999999999979 0.00999999999999979 0.0 476 -477 0.00206589698791504 0.0 0.0 0.0 477 -478 0.00207209587097168 0.0 0.0 0.0 478 -479 0.00204992294311523 0.0 0.0 0.0 479 -480 0.00207209587097168 0.00999999999999979 0.00999999999999979 0.0 480 -481 0.0020599365234375 0.0 0.0 0.0 481 -482 0.00206613540649414 0.0 0.0 0.0 482 -483 0.00205898284912109 0.0 0.0 0.0 483 -484 0.00209403038024902 0.0 0.0 0.0 484 -485 0.00207710266113281 0.00999999999999979 0.00999999999999979 0.0 485 -486 0.0239040851593018 0.0200000000000014 0.0200000000000014 0.0 486 -487 0.00222492218017578 0.0 0.0 0.0 487 -488 0.00213289260864258 0.0 0.0 0.0 488 -489 0.0021212100982666 0.00999999999999979 0.00999999999999979 0.0 489 -490 0.0021059513092041 0.0 0.0 0.0 490 -491 0.00208616256713867 0.0 0.0 0.0 491 -492 0.00208687782287598 0.0 0.0 0.0 492 -493 0.00207901000976562 0.0 0.0 0.0 493 -494 0.00206494331359863 0.00999999999999979 0.00999999999999979 0.0 494 -495 0.00204300880432129 0.0 0.0 0.0 495 -496 0.00206112861633301 0.0 0.0 0.0 496 -497 0.00206708908081055 0.0 0.0 0.0 497 -498 0.0030369758605957 0.00999999999999979 0.00999999999999979 0.0 498 -499 0.00405597686767578 0.0 0.0 0.0 499 -500 0.00401997566223145 0.0 0.0 0.0 500 -501 0.0026099681854248 0.00999999999999979 0.00999999999999979 0.0 501 -502 0.00206303596496582 0.0 0.0 0.0 502 -503 0.00206589698791504 0.0 0.0 0.0 503 -504 0.00206708908081055 0.0 0.0 0.0 504 -505 0.00212311744689941 0.00999999999999979 0.00999999999999979 0.0 505 -506 0.00225090980529785 0.0 0.0 0.0 506 -507 0.00206089019775391 0.0 0.0 0.0 507 -508 0.00205683708190918 0.0 0.0 0.0 508 -509 0.00205397605895996 0.0 0.0 0.0 509 -510 0.00206184387207031 0.00999999999999979 0.00999999999999979 0.0 510 -511 0.00205707550048828 0.0 0.0 0.0 511 -512 0.00204896926879883 0.0 0.0 0.0 512 -513 0.00204920768737793 0.0 0.0 0.0 513 -514 0.00206398963928223 0.0 0.0 0.0 514 -515 0.00204992294311523 0.00999999999999979 0.00999999999999979 0.0 515 -516 0.00204110145568848 0.0 0.0 0.0 516 -517 0.00205183029174805 0.0 0.0 0.0 517 -518 0.00206089019775391 0.0 0.0 0.0 518 -519 0.00207400321960449 0.00999999999999979 0.00999999999999979 0.0 519 -520 0.00206184387207031 0.0 0.0 0.0 520 -521 0.00205802917480469 0.0 0.0 0.0 521 -522 0.00205802917480469 0.0 0.0 0.0 522 -523 0.00206112861633301 0.0 0.0 0.0 523 -524 0.00215315818786621 0.0100000000000016 0.0100000000000016 0.0 524 -525 0.0020451545715332 0.0 0.0 0.0 525 -526 0.00207614898681641 0.0 0.0 0.0 526 -527 0.00208091735839844 0.0 0.0 0.0 527 -528 0.00208616256713867 0.0 0.0 0.0 528 -529 0.00211095809936523 0.00999999999999979 0.00999999999999979 0.0 529 -530 0.0298140048980713 0.0299999999999994 0.0299999999999994 0.0 530 -531 0.00220298767089844 0.0 0.0 0.0 531 -532 0.00216102600097656 0.0 0.0 0.0 532 -533 0.00211501121520996 0.0 0.0 0.0 533 -534 0.00208687782287598 0.00999999999999979 0.00999999999999979 0.0 534 -535 0.0021059513092041 0.0 0.0 0.0 535 -536 0.00210785865783691 0.0 0.0 0.0 536 -537 0.0020749568939209 0.0 0.0 0.0 537 -538 0.00207400321960449 0.0 0.0 0.0 538 -539 0.00206589698791504 0.00999999999999979 0.00999999999999979 0.0 539 -540 0.00211691856384277 0.0 0.0 0.0 540 -541 0.00208401679992676 0.0 0.0 0.0 541 -542 0.00206995010375977 0.0 0.0 0.0 542 -543 0.00206995010375977 0.0 0.0 0.0 543 -544 0.00207996368408203 0.00999999999999979 0.00999999999999979 0.0 544 -545 0.00206589698791504 0.0 0.0 0.0 545 -546 0.00207996368408203 0.0 0.0 0.0 546 -547 0.00207018852233887 0.0 0.0 0.0 547 -548 0.00206899642944336 0.0 0.0 0.0 548 -549 0.00207304954528809 0.0100000000000016 0.0100000000000016 0.0 549 -550 0.00206708908081055 0.0 0.0 0.0 550 -551 0.00209689140319824 0.0 0.0 0.0 551 -552 0.0020749568939209 0.0 0.0 0.0 552 -553 0.00207400321960449 0.00999999999999979 0.00999999999999979 0.0 553 -554 0.00207400321960449 0.0 0.0 0.0 554 -555 0.0020449161529541 0.0 0.0 0.0 555 -556 0.00207209587097168 0.0 0.0 0.0 556 -557 0.00205898284912109 0.0 0.0 0.0 557 -558 0.00214600563049316 0.00999999999999979 0.00999999999999979 0.0 558 -559 0.00205612182617188 0.0 0.0 0.0 559 -560 0.00207901000976562 0.0 0.0 0.0 560 -561 0.00205612182617188 0.0 0.0 0.0 561 -562 0.00205707550048828 0.0 0.0 0.0 562 -563 0.00205397605895996 0.00999999999999979 0.00999999999999979 0.0 563 -564 0.00207209587097168 0.0 0.0 0.0 564 -565 0.0020599365234375 0.0 0.0 0.0 565 -566 0.00208687782287598 0.0 0.0 0.0 566 -567 0.00206708908081055 0.00999999999999979 0.00999999999999979 0.0 567 -568 0.00205397605895996 0.0 0.0 0.0 568 -569 0.00206995010375977 0.0 0.0 0.0 569 -570 0.00204896926879883 0.0 0.0 0.0 570 -571 0.00208187103271484 0.0 0.0 0.0 571 -572 0.00207901000976562 0.00999999999999979 0.00999999999999979 0.0 572 -573 0.0231339931488037 0.0199999999999996 0.0199999999999996 0.0 573 -574 0.00312709808349609 0.0 0.0 0.0 574 -575 0.00215601921081543 0.0 0.0 0.0 575 -576 0.00213813781738281 0.0100000000000016 0.0100000000000016 0.0 576 -577 0.00209593772888184 0.0 0.0 0.0 577 -578 0.00209403038024902 0.0 0.0 0.0 578 -579 0.00207901000976562 0.0 0.0 0.0 579 -580 0.00208401679992676 0.0 0.0 0.0 580 -581 0.00207114219665527 0.0 0.0 0.0 581 -582 0.00207710266113281 0.0 0.0 0.0 582 -583 0.00206685066223145 0.0 0.0 0.0 583 -584 0.00206184387207031 0.0 0.0 0.0 584 -585 0.00205588340759277 0.00999999999999979 0.00999999999999979 0.0 585 -586 0.0020751953125 0.0 0.0 0.0 586 -587 0.00206303596496582 0.0 0.0 0.0 587 -588 0.00206303596496582 0.0 0.0 0.0 588 -589 0.00205612182617188 0.0 0.0 0.0 589 -590 0.00207281112670898 0.00999999999999979 0.00999999999999979 0.0 590 -591 0.00385499000549316 0.0 0.0 0.0 591 -592 0.00404191017150879 0.0 0.0 0.0 592 -593 0.00359702110290527 0.00999999999999979 0.00999999999999979 0.0 593 -594 0.0020909309387207 0.0 0.0 0.0 594 -595 0.00204992294311523 0.0 0.0 0.0 595 -596 0.0020909309387207 0.0 0.0 0.0 596 -597 0.0020749568939209 0.00999999999999979 0.00999999999999979 0.0 597 -598 0.00209784507751465 0.0 0.0 0.0 598 -599 0.00205683708190918 0.0 0.0 0.0 599 -600 0.00203394889831543 0.0 0.0 0.0 600 -601 0.00205302238464355 0.0 0.0 0.0 601 -602 0.00205016136169434 0.00999999999999979 0.00999999999999979 0.0 602 -603 0.0020599365234375 0.0 0.0 0.0 603 -604 0.00205111503601074 0.0 0.0 0.0 604 -605 0.00206780433654785 0.0 0.0 0.0 605 -606 0.00204992294311523 0.00999999999999979 0.00999999999999979 0.0 606 -607 0.00206804275512695 0.0 0.0 0.0 607 -608 0.0020439624786377 0.0 0.0 0.0 608 -609 0.00205683708190918 0.0 0.0 0.0 609 -610 0.00210785865783691 0.0 0.0 0.0 610 -611 0.00206685066223145 0.00999999999999979 0.00999999999999979 0.0 611 -612 0.00205206871032715 0.0 0.0 0.0 612 -613 0.00204706192016602 0.0 0.0 0.0 613 -614 0.00208616256713867 0.0 0.0 0.0 614 -615 0.00210213661193848 0.0 0.0 0.0 615 -616 0.0239150524139404 0.0300000000000011 0.0300000000000011 0.0 616 -617 0.00241804122924805 0.0 0.0 0.0 617 -618 0.00215888023376465 0.0 0.0 0.0 618 -619 0.00210809707641602 0.00999999999999979 0.00999999999999979 0.0 619 -620 0.00209403038024902 0.0 0.0 0.0 620 -621 0.00210905075073242 0.0 0.0 0.0 621 -622 0.00210404396057129 0.0 0.0 0.0 622 -623 0.00208401679992676 0.0 0.0 0.0 623 -624 0.00205111503601074 0.00999999999999979 0.00999999999999979 0.0 624 -625 0.00206303596496582 0.0 0.0 0.0 625 -626 0.0020599365234375 0.0 0.0 0.0 626 -627 0.00207400321960449 0.0 0.0 0.0 627 -628 0.0020759105682373 0.0 0.0 0.0 628 -629 0.00206995010375977 0.00999999999999979 0.00999999999999979 0.0 629 -630 0.0021660327911377 0.0 0.0 0.0 630 -631 0.00207710266113281 0.0 0.0 0.0 631 -632 0.00208401679992676 0.0 0.0 0.0 632 -633 0.00205492973327637 0.0 0.0 0.0 633 -634 0.00207018852233887 0.00999999999999979 0.00999999999999979 0.0 634 -635 0.00204586982727051 0.0 0.0 0.0 635 -636 0.00205898284912109 0.0 0.0 0.0 636 -637 0.0029301643371582 0.0 0.0 0.0 637 -638 0.00209999084472656 0.00999999999999979 0.00999999999999979 0.0 638 -639 0.00206685066223145 0.0 0.0 0.0 639 -640 0.00207400321960449 0.0 0.0 0.0 640 -641 0.00206184387207031 0.0 0.0 0.0 641 -642 0.00205183029174805 0.0 0.0 0.0 642 -643 0.0020592212677002 0.0100000000000016 0.0100000000000016 0.0 643 -644 0.00204300880432129 0.0 0.0 0.0 644 -645 0.00207090377807617 0.0 0.0 0.0 645 -646 0.00207710266113281 0.0 0.0 0.0 646 -647 0.00206089019775391 0.00999999999999979 0.00999999999999979 0.0 647 -648 0.00205516815185547 0.0 0.0 0.0 648 -649 0.0020599365234375 0.0 0.0 0.0 649 -650 0.00206398963928223 0.0 0.0 0.0 650 -651 0.00206279754638672 0.0 0.0 0.0 651 -652 0.00206804275512695 0.00999999999999979 0.00999999999999979 0.0 652 -653 0.00206804275512695 0.0 0.0 0.0 653 -654 0.00207209587097168 0.0 0.0 0.0 654 -655 0.00206518173217773 0.0 0.0 0.0 655 -656 0.00206589698791504 0.0 0.0 0.0 656 -657 0.00209808349609375 0.00999999999999979 0.00999999999999979 0.0 657 -658 0.00213718414306641 0.0 0.0 0.0 658 -659 0.00212907791137695 0.0 0.0 0.0 659 -660 0.0242199897766113 0.0199999999999996 0.0199999999999996 0.0 660 -661 0.00217413902282715 0.0 0.0 0.0 661 -662 0.00212502479553223 0.0 0.0 0.0 662 -663 0.0021059513092041 0.0 0.0 0.0 663 -664 0.0020909309387207 0.0 0.0 0.0 664 -665 0.00208711624145508 0.00999999999999979 0.00999999999999979 0.0 665 -666 0.00214982032775879 0.0 0.0 0.0 666 -667 0.00213503837585449 0.0 0.0 0.0 667 -668 0.00210404396057129 0.0 0.0 0.0 668 -669 0.00216293334960938 0.0 0.0 0.0 669 -670 0.00207996368408203 0.0100000000000016 0.0100000000000016 0.0 670 -671 0.00222396850585938 0.0 0.0 0.0 671 -672 0.00205898284912109 0.0 0.0 0.0 672 -673 0.00205397605895996 0.0 0.0 0.0 673 -674 0.00206708908081055 0.00999999999999979 0.00999999999999979 0.0 674 -675 0.00205898284912109 0.0 0.0 0.0 675 -676 0.00207400321960449 0.0 0.0 0.0 676 -677 0.0020599365234375 0.0 0.0 0.0 677 -678 0.00206208229064941 0.0 0.0 0.0 678 -679 0.00206589698791504 0.00999999999999979 0.00999999999999979 0.0 679 -680 0.00203895568847656 0.0 0.0 0.0 680 -681 0.00205302238464355 0.0 0.0 0.0 681 -682 0.00205397605895996 0.0 0.0 0.0 682 -683 0.0020599365234375 0.0 0.0 0.0 683 -684 0.00207614898681641 0.00999999999999979 0.00999999999999979 0.0 684 -685 0.00306200981140137 0.0 0.0 0.0 685 -686 0.00403904914855957 0.0 0.0 0.0 686 -687 0.00366306304931641 0.00999999999999979 0.00999999999999979 0.0 687 -688 0.00224184989929199 0.0 0.0 0.0 688 -689 0.00207114219665527 0.0 0.0 0.0 689 -690 0.00205707550048828 0.0 0.0 0.0 690 -691 0.00207996368408203 0.00999999999999979 0.00999999999999979 0.0 691 -692 0.00224709510803223 0.0 0.0 0.0 692 -693 0.00273489952087402 0.0 0.0 0.0 693 -694 0.00208401679992676 0.0 0.0 0.0 694 -695 0.00205206871032715 0.00999999999999979 0.00999999999999979 0.0 695 -696 0.00206899642944336 0.0 0.0 0.0 696 -697 0.00205492973327637 0.0 0.0 0.0 697 -698 0.00207281112670898 0.0 0.0 0.0 698 -699 0.00207114219665527 0.0 0.0 0.0 699 -700 0.00206804275512695 0.00999999999999979 0.00999999999999979 0.0 700 -701 0.00208711624145508 0.0 0.0 0.0 701 -702 0.0020899772644043 0.0 0.0 0.0 702 -703 0.0264170169830322 0.0300000000000011 0.0300000000000011 0.0 703 -704 0.00216817855834961 0.0 0.0 0.0 704 -705 0.00217700004577637 0.0 0.0 0.0 705 -706 0.00212311744689941 0.0 0.0 0.0 706 -707 0.0021059513092041 0.0 0.0 0.0 707 -708 0.00207686424255371 0.00999999999999979 0.00999999999999979 0.0 708 -709 0.00207686424255371 0.0 0.0 0.0 709 -710 0.00207209587097168 0.0 0.0 0.0 710 -711 0.00206804275512695 0.0 0.0 0.0 711 -712 0.00208497047424316 0.0 0.0 0.0 712 -713 0.00206303596496582 0.00999999999999979 0.00999999999999979 0.0 713 -714 0.00206899642944336 0.0 0.0 0.0 714 -715 0.00206398963928223 0.0 0.0 0.0 715 -716 0.00207996368408203 0.0 0.0 0.0 716 -717 0.00206804275512695 0.00999999999999979 0.00999999999999979 0.0 717 -718 0.00205397605895996 0.0 0.0 0.0 718 -719 0.00206899642944336 0.0 0.0 0.0 719 -720 0.00207686424255371 0.0 0.0 0.0 720 -721 0.00207400321960449 0.0 0.0 0.0 721 -722 0.00207614898681641 0.00999999999999979 0.00999999999999979 0.0 722 -723 0.00206184387207031 0.0 0.0 0.0 723 -724 0.00207996368408203 0.0 0.0 0.0 724 -725 0.00208902359008789 0.0 0.0 0.0 725 -726 0.00206303596496582 0.0 0.0 0.0 726 -727 0.00204992294311523 0.00999999999999979 0.00999999999999979 0.0 727 -728 0.00205898284912109 0.0 0.0 0.0 728 -729 0.00204992294311523 0.0 0.0 0.0 729 -730 0.00204205513000488 0.0 0.0 0.0 730 -731 0.00205898284912109 0.0 0.0 0.0 731 -732 0.00206422805786133 0.00999999999999979 0.00999999999999979 0.0 732 -733 0.00205898284912109 0.0 0.0 0.0 733 -734 0.00205111503601074 0.0 0.0 0.0 734 -735 0.00208902359008789 0.0 0.0 0.0 735 -736 0.00207805633544922 0.0100000000000016 0.0100000000000016 0.0 736 -737 0.00207400321960449 0.0 0.0 0.0 737 -738 0.00205492973327637 0.0 0.0 0.0 738 -739 0.0020751953125 0.0 0.0 0.0 739 -740 0.00207400321960449 0.0 0.0 0.0 740 -741 0.00206089019775391 0.00999999999999979 0.00999999999999979 0.0 741 -742 0.00254416465759277 0.0 0.0 0.0 742 -743 0.00206899642944336 0.0 0.0 0.0 743 -744 0.00208902359008789 0.0 0.0 0.0 744 -745 0.00208783149719238 0.0 0.0 0.0 745 -746 0.0239109992980957 0.0299999999999994 0.0299999999999994 0.0 746 -747 0.00231599807739258 0.0 0.0 0.0 747 -748 0.00217008590698242 0.0 0.0 0.0 748 -749 0.00211906433105469 0.0 0.0 0.0 749 -750 0.00209808349609375 0.00999999999999979 0.00999999999999979 0.0 750 -751 0.00207805633544922 0.0 0.0 0.0 751 -752 0.00208497047424316 0.0 0.0 0.0 752 -753 0.00206589698791504 0.0 0.0 0.0 753 -754 0.00207901000976562 0.00999999999999979 0.00999999999999979 0.0 754 -755 0.00206089019775391 0.0 0.0 0.0 755 -756 0.00207114219665527 0.0 0.0 0.0 756 -757 0.0020759105682373 0.0 0.0 0.0 757 -758 0.00206613540649414 0.0 0.0 0.0 758 -759 0.00204706192016602 0.00999999999999979 0.00999999999999979 0.0 759 -760 0.00205898284912109 0.0 0.0 0.0 760 -761 0.0020749568939209 0.0 0.0 0.0 761 -762 0.00206208229064941 0.0 0.0 0.0 762 -763 0.00206804275512695 0.0 0.0 0.0 763 -764 0.00213193893432617 0.0100000000000016 0.0100000000000016 0.0 764 -765 0.00206494331359863 0.0 0.0 0.0 765 -766 0.00205707550048828 0.0 0.0 0.0 766 -767 0.00206589698791504 0.0 0.0 0.0 767 -768 0.00207901000976562 0.00999999999999979 0.00999999999999979 0.0 768 -769 0.00204682350158691 0.0 0.0 0.0 769 -770 0.00206899642944336 0.0 0.0 0.0 770 -771 0.00208497047424316 0.0 0.0 0.0 771 -772 0.00206398963928223 0.0 0.0 0.0 772 -773 0.00205683708190918 0.00999999999999979 0.00999999999999979 0.0 773 -774 0.00205397605895996 0.0 0.0 0.0 774 -775 0.00206184387207031 0.0 0.0 0.0 775 -776 0.00205206871032715 0.0 0.0 0.0 776 -777 0.00205802917480469 0.0 0.0 0.0 777 -778 0.00281596183776855 0.00999999999999979 0.00999999999999979 0.0 778 -779 0.00403189659118652 0.0 0.0 0.0 779 -780 0.00367498397827148 0.0 0.0 0.0 780 -781 0.00383210182189941 0.00999999999999979 0.00999999999999979 0.0 781 -782 0.00206995010375977 0.0 0.0 0.0 782 -783 0.00206804275512695 0.0 0.0 0.0 783 -784 0.00208091735839844 0.00999999999999979 0.00999999999999979 0.0 784 -785 0.00210189819335938 0.0 0.0 0.0 785 -786 0.00206494331359863 0.0 0.0 0.0 786 -787 0.00209212303161621 0.0 0.0 0.0 787 -788 0.00208687782287598 0.0 0.0 0.0 788 -789 0.0249569416046143 0.0299999999999994 0.0299999999999994 0.0 789 -790 0.00217914581298828 0.0 0.0 0.0 790 -791 0.00213813781738281 0.0 0.0 0.0 791 -792 0.00213003158569336 0.0100000000000016 0.0100000000000016 0.0 792 -793 0.00212001800537109 0.0 0.0 0.0 793 -794 0.00209903717041016 0.0 0.0 0.0 794 -795 0.0021519660949707 0.0 0.0 0.0 795 -796 0.0020749568939209 0.0 0.0 0.0 796 -797 0.00205802917480469 0.00999999999999979 0.00999999999999979 0.0 797 -798 0.00208711624145508 0.0 0.0 0.0 798 -799 0.00205707550048828 0.0 0.0 0.0 799 -800 0.00207114219665527 0.0 0.0 0.0 800 -801 0.00207710266113281 0.0 0.0 0.0 801 -802 0.00207400321960449 0.00999999999999979 0.00999999999999979 0.0 802 -803 0.00207686424255371 0.0 0.0 0.0 803 -804 0.00207185745239258 0.0 0.0 0.0 804 -805 0.00206398963928223 0.0 0.0 0.0 805 -806 0.00205898284912109 0.0 0.0 0.0 806 -807 0.00205302238464355 0.00999999999999979 0.00999999999999979 0.0 807 -808 0.00205397605895996 0.0 0.0 0.0 808 -809 0.00205206871032715 0.0 0.0 0.0 809 -810 0.00205111503601074 0.0 0.0 0.0 810 -811 0.0020749568939209 0.00999999999999979 0.00999999999999979 0.0 811 -812 0.00206279754638672 0.0 0.0 0.0 812 -813 0.00205302238464355 0.0 0.0 0.0 813 -814 0.00204801559448242 0.0 0.0 0.0 814 -815 0.00205302238464355 0.0 0.0 0.0 815 -816 0.00206995010375977 0.00999999999999979 0.00999999999999979 0.0 816 -817 0.00208091735839844 0.0 0.0 0.0 817 -818 0.00214910507202148 0.0 0.0 0.0 818 -819 0.00205802917480469 0.0 0.0 0.0 819 -820 0.00217890739440918 0.0 0.0 0.0 820 -821 0.00206398963928223 0.00999999999999979 0.00999999999999979 0.0 821 -822 0.00204706192016602 0.0 0.0 0.0 822 -823 0.00205111503601074 0.0 0.0 0.0 823 -824 0.00206804275512695 0.0 0.0 0.0 824 -825 0.00206089019775391 0.00999999999999979 0.00999999999999979 0.0 825 -826 0.00207018852233887 0.0 0.0 0.0 826 -827 0.00208306312561035 0.0 0.0 0.0 827 -828 0.00205206871032715 0.0 0.0 0.0 828 -829 0.00206398963928223 0.0 0.0 0.0 829 -830 0.00209403038024902 0.0100000000000016 0.0100000000000016 0.0 830 -831 0.00208497047424316 0.0 0.0 0.0 831 -832 0.023939847946167 0.0199999999999996 0.0199999999999996 0.0 832 -833 0.00230288505554199 0.0 0.0 0.0 833 -834 0.0021669864654541 0.00999999999999979 0.00999999999999979 0.0 834 -835 0.00211286544799805 0.0 0.0 0.0 835 -836 0.0021059513092041 0.0 0.0 0.0 836 -837 0.00207304954528809 0.0 0.0 0.0 837 -838 0.0020749568939209 0.0 0.0 0.0 838 -839 0.00204682350158691 0.00999999999999979 0.00999999999999979 0.0 839 -840 0.00207400321960449 0.0 0.0 0.0 840 -841 0.0020592212677002 0.0 0.0 0.0 841 -842 0.00206589698791504 0.0 0.0 0.0 842 -843 0.00207114219665527 0.00999999999999979 0.00999999999999979 0.0 843 -844 0.00207304954528809 0.0 0.0 0.0 844 -845 0.00208091735839844 0.0 0.0 0.0 845 -846 0.00206303596496582 0.0 0.0 0.0 846 -847 0.00208115577697754 0.0 0.0 0.0 847 -848 0.00204992294311523 0.00999999999999979 0.00999999999999979 0.0 848 -849 0.00209403038024902 0.0 0.0 0.0 849 -850 0.00208497047424316 0.0 0.0 0.0 850 -851 0.00206804275512695 0.0 0.0 0.0 851 -852 0.00207209587097168 0.0 0.0 0.0 852 -853 0.0020599365234375 0.00999999999999979 0.00999999999999979 0.0 853 -854 0.0021519660949707 0.0 0.0 0.0 854 -855 0.00205707550048828 0.0 0.0 0.0 855 -856 0.00204801559448242 0.0 0.0 0.0 856 -857 0.00205111503601074 0.0100000000000016 0.0100000000000016 0.0 857 -858 0.00204992294311523 0.0 0.0 0.0 858 -859 0.00207304954528809 0.0 0.0 0.0 859 -860 0.00205898284912109 0.0 0.0 0.0 860 -861 0.00205802917480469 0.0 0.0 0.0 861 -862 0.00205397605895996 0.00999999999999979 0.00999999999999979 0.0 862 -863 0.00206089019775391 0.0 0.0 0.0 863 -864 0.00206780433654785 0.0 0.0 0.0 864 -865 0.00206708908081055 0.0 0.0 0.0 865 -866 0.00214815139770508 0.0 0.0 0.0 866 -867 0.00205397605895996 0.00999999999999979 0.00999999999999979 0.0 867 -868 0.00206112861633301 0.0 0.0 0.0 868 -869 0.00206589698791504 0.0 0.0 0.0 869 -870 0.00207686424255371 0.0 0.0 0.0 870 -871 0.00206613540649414 0.0 0.0 0.0 871 -872 0.00345492362976074 0.00999999999999979 0.00999999999999979 0.0 872 -873 0.00410318374633789 0.0 0.0 0.0 873 -874 0.00406002998352051 0.00999999999999979 0.00999999999999979 0.0 874 -875 0.0259261131286621 0.0199999999999996 0.0199999999999996 0.0 875 -876 0.00219607353210449 0.0 0.0 0.0 876 -877 0.00211405754089355 0.00999999999999979 0.00999999999999979 0.0 877 -878 0.00212407112121582 0.0 0.0 0.0 878 -879 0.00208306312561035 0.0 0.0 0.0 879 -880 0.00209808349609375 0.0 0.0 0.0 880 -881 0.00233793258666992 0.0 0.0 0.0 881 -882 0.00206804275512695 0.00999999999999979 0.00999999999999979 0.0 882 -883 0.0020759105682373 0.0 0.0 0.0 883 -884 0.00209188461303711 0.0 0.0 0.0 884 -885 0.00206899642944336 0.0 0.0 0.0 885 -886 0.00205397605895996 0.0100000000000016 0.0100000000000016 0.0 886 -887 0.00205588340759277 0.0 0.0 0.0 887 -888 0.00216484069824219 0.0 0.0 0.0 888 -889 0.00208091735839844 0.0 0.0 0.0 889 -890 0.0020751953125 0.0 0.0 0.0 890 -891 0.00336885452270508 0.00999999999999979 0.00999999999999979 0.0 891 -892 0.00415396690368652 0.0 0.0 0.0 892 -893 0.0037381649017334 0.00999999999999979 0.00999999999999979 0.0 893 -894 0.00412487983703613 0.0 0.0 0.0 894 -895 0.00375986099243164 0.0 0.0 0.0 895 -896 0.00278496742248535 0.00999999999999979 0.00999999999999979 0.0 896 -897 0.00209403038024902 0.0 0.0 0.0 897 -898 0.00205516815185547 0.0 0.0 0.0 898 -899 0.00205516815185547 0.0 0.0 0.0 899 -900 0.00203704833984375 0.0 0.0 0.0 900 -901 0.0020599365234375 0.00999999999999979 0.00999999999999979 0.0 901 -902 0.00205421447753906 0.0 0.0 0.0 902 -903 0.0020599365234375 0.0 0.0 0.0 903 -904 0.00206089019775391 0.0 0.0 0.0 904 -905 0.00207686424255371 0.00999999999999979 0.00999999999999979 0.0 905 -906 0.00207209587097168 0.0 0.0 0.0 906 -907 0.00205898284912109 0.0 0.0 0.0 907 -908 0.00206112861633301 0.0 0.0 0.0 908 -909 0.00209903717041016 0.0 0.0 0.0 909 -910 0.00206708908081055 0.00999999999999979 0.00999999999999979 0.0 910 -911 0.00206804275512695 0.0 0.0 0.0 911 -912 0.00206804275512695 0.0 0.0 0.0 912 -913 0.00207805633544922 0.0 0.0 0.0 913 -914 0.00206613540649414 0.0 0.0 0.0 914 -915 0.00205707550048828 0.00999999999999979 0.00999999999999979 0.0 915 -916 0.00208497047424316 0.0 0.0 0.0 916 -917 0.00207996368408203 0.0 0.0 0.0 917 -918 0.0248808860778809 0.0300000000000011 0.0300000000000011 0.0 918 -919 0.00217318534851074 0.0 0.0 0.0 919 -920 0.00228309631347656 0.0 0.0 0.0 920 -921 0.00214815139770508 0.0 0.0 0.0 921 -922 0.00209498405456543 0.0 0.0 0.0 922 -923 0.00209903717041016 0.00999999999999979 0.00999999999999979 0.0 923 -924 0.00206685066223145 0.0 0.0 0.0 924 -925 0.00208783149719238 0.0 0.0 0.0 925 -926 0.0020751953125 0.0 0.0 0.0 926 -927 0.0020599365234375 0.00999999999999979 0.00999999999999979 0.0 927 -928 0.00206398963928223 0.0 0.0 0.0 928 -929 0.00207400321960449 0.0 0.0 0.0 929 -930 0.00224184989929199 0.0 0.0 0.0 930 -931 0.00207209587097168 0.0 0.0 0.0 931 -932 0.00207114219665527 0.00999999999999979 0.00999999999999979 0.0 932 -933 0.00206995010375977 0.0 0.0 0.0 933 -934 0.00206613540649414 0.0 0.0 0.0 934 -935 0.00207114219665527 0.0 0.0 0.0 935 -936 0.00207901000976562 0.0 0.0 0.0 936 -937 0.00206494331359863 0.00999999999999979 0.00999999999999979 0.0 937 -938 0.0020751953125 0.0 0.0 0.0 938 -939 0.00211882591247559 0.0 0.0 0.0 939 -940 0.00212502479553223 0.0 0.0 0.0 940 -941 0.00206303596496582 0.0 0.0 0.0 941 -942 0.00205111503601074 0.00999999999999979 0.00999999999999979 0.0 942 -943 0.00204205513000488 0.0 0.0 0.0 943 -944 0.00206303596496582 0.0 0.0 0.0 944 -945 0.00205516815185547 0.0 0.0 0.0 945 -946 0.00206208229064941 0.0100000000000016 0.0100000000000016 0.0 946 -947 0.00205683708190918 0.0 0.0 0.0 947 -948 0.00204181671142578 0.0 0.0 0.0 948 -949 0.00206589698791504 0.0 0.0 0.0 949 -950 0.0020451545715332 0.0 0.0 0.0 950 -951 0.00209593772888184 0.00999999999999979 0.00999999999999979 0.0 951 -952 0.00205802917480469 0.0 0.0 0.0 952 -953 0.0020751953125 0.0 0.0 0.0 953 -954 0.00205492973327637 0.0 0.0 0.0 954 -955 0.00206303596496582 0.0 0.0 0.0 955 -956 0.00206112861633301 0.00999999999999979 0.00999999999999979 0.0 956 -957 0.00208592414855957 0.0 0.0 0.0 957 -958 0.00208497047424316 0.0 0.0 0.0 958 -959 0.00207114219665527 0.0 0.0 0.0 959 -960 0.0264370441436768 0.0299999999999994 0.0299999999999994 0.0 960 -961 0.00537300109863281 0.0 0.0 0.0 961 -962 0.00217485427856445 0.0 0.0 0.0 962 -963 0.00213003158569336 0.0 0.0 0.0 963 -964 0.00212383270263672 0.0 0.0 0.0 964 -965 0.0021059513092041 0.0 0.0 0.0 965 -966 0.0020909309387207 0.0 0.0 0.0 966 -967 0.00208091735839844 0.00999999999999979 0.00999999999999979 0.0 967 -968 0.00207018852233887 0.0 0.0 0.0 968 -969 0.00207185745239258 0.0 0.0 0.0 969 -970 0.00205111503601074 0.0 0.0 0.0 970 -971 0.00208306312561035 0.0 0.0 0.0 971 -972 0.00212502479553223 0.00999999999999979 0.00999999999999979 0.0 972 -973 0.00206995010375977 0.0 0.0 0.0 973 -974 0.0020749568939209 0.0 0.0 0.0 974 -975 0.0020749568939209 0.0 0.0 0.0 975 -976 0.00205898284912109 0.0 0.0 0.0 976 -977 0.00207304954528809 0.0100000000000016 0.0100000000000016 0.0 977 -978 0.00208806991577148 0.0 0.0 0.0 978 -979 0.00207090377807617 0.0 0.0 0.0 979 -980 0.00214314460754395 0.0 0.0 0.0 980 -981 0.00208497047424316 0.00999999999999979 0.00999999999999979 0.0 981 -982 0.00206112861633301 0.0 0.0 0.0 982 -983 0.00220704078674316 0.0 0.0 0.0 983 -984 0.00206184387207031 0.0 0.0 0.0 984 -985 0.00206589698791504 0.0 0.0 0.0 985 -986 0.00204014778137207 0.00999999999999979 0.00999999999999979 0.0 986 -987 0.00205302238464355 0.0 0.0 0.0 987 -988 0.00204801559448242 0.0 0.0 0.0 988 -989 0.0020439624786377 0.0 0.0 0.0 989 -990 0.00206494331359863 0.0 0.0 0.0 990 -991 0.00205516815185547 0.00999999999999979 0.00999999999999979 0.0 991 -992 0.0020599365234375 0.0 0.0 0.0 992 -993 0.00205802917480469 0.0 0.0 0.0 993 -994 0.0021820068359375 0.0 0.0 0.0 994 -995 0.00206708908081055 0.0 0.0 0.0 995 -996 0.00205802917480469 0.00999999999999979 0.00999999999999979 0.0 996 -997 0.00205183029174805 0.0 0.0 0.0 997 -998 0.00205588340759277 0.0 0.0 0.0 998 -999 0.00207781791687012 0.0 0.0 0.0 999 -1000 0.00205588340759277 0.0 0.0 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat deleted file mode 100644 index d7d94870..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.00528996763305527 -3 -0.0138044594871689 -4 -0.0208681851283985 -5 -0.0229957953064787 -6 -0.0234292596261009 -7 -0.0233334130282492 -8 -0.0241516165777752 -9 -0.0241644202341525 -10 -0.0231287425073633 -11 -0.0221175625393535 -12 -0.0186101437936229 -13 -0.0156353533961561 -14 -0.0188403159027361 -15 -0.0180504812480117 -16 -0.0217450273227108 -17 -0.0247063596763229 -18 -0.022001265884962 -19 -0.0178556473266542 -20 -0.0204164647356919 -21 -0.0182966079953989 -22 -0.0211862321337847 -23 -0.0194789850013599 -24 -0.0177742253841285 -25 -0.0092503749482194 -26 -0.00746819898929803 -27 -0.00487803332820888 -28 -0.00735913264216409 -29 -0.0094394794377043 -30 -0.0102366066065294 -31 -0.0111156180663134 -32 -0.0157818671782769 -33 -0.0168016431622766 -34 -0.0163332307175096 -35 -0.0175436530212509 -36 -0.0223712161905215 -37 -0.0219314894935517 -38 -0.0227830748204048 -39 -0.0193824105679253 -40 -0.0204213811978047 -41 -0.0174876805960081 -42 -0.0192426282967821 -43 -0.0191023286022659 -44 -0.024469189862908 -45 -0.0248594429598138 -46 -0.024075293188514 -47 -0.0231590035654209 -48 -0.0226253872291486 -49 -0.0224682138682447 -50 -0.0218129103220923 -51 -0.0192654328544414 -52 -0.0147320037081153 -53 0.272452233337269 -54 0.435015820040845 -55 0.200430320069216 -56 -0.017516322722285 -57 -0.0206134354119561 -58 -0.0216729701700104 -59 -0.0218336495632955 -60 -0.0220087456364863 -61 -0.0221961766164921 -62 -0.0220196148858699 -63 -0.0196199273707057 -64 -0.0175555144594074 -65 -0.0157115875281919 -66 -0.0178703168441715 -67 -0.020014167059419 -68 -0.0226085951821202 -69 -0.0214388900491651 -70 -0.0226874815779736 -71 -0.0209263363718717 -72 -0.0186668218529576 -73 -0.0190861172260196 -74 -0.0165844428487903 -75 -0.0183297192997319 -76 -0.0196886608427949 -77 -0.0172252505382256 -78 -0.0127282633379294 -79 -0.0118674197279215 -80 -0.00761080829361313 -81 -0.00745049886576533 -82 -0.00437801934505245 -83 -0.00530855529011354 -84 -0.00941286938636584 -85 -0.0107154791645881 -86 -0.015323870013456 -87 -0.012519266967711 -88 -0.0149736969801129 -89 -0.021651681277203 -90 -0.0230618749379273 -91 -0.0168683483705937 -92 -0.0192914563246245 -93 -0.0149596795587543 -94 -0.0156422337243361 -95 -0.0212673261015622 -96 -0.021939557403789 -97 -0.0201423837801739 -98 -0.0236606423193213 -99 -0.0214696557426392 -100 -0.0224265353446497 -101 -0.0214300874958868 -102 -0.0215321124434072 -103 -0.0196750526265947 -104 -0.0164815420539262 -105 0.153451795677057 -106 0.152304917983925 -107 0.269683604711283 -108 0.163866062031231 -109 0.0917700861184397 -110 -0.0154344686250538 -111 -0.0160009187714221 -112 -0.0181194294640359 -113 -0.0198996862071363 -114 -0.0210940088036923 -115 -0.0202294695724758 -116 -0.0201134577323488 -117 -0.0176142238854856 -118 -0.0179934480509661 -119 -0.0184941333999111 -120 -0.0209217833739569 -121 -0.0193706489699845 -122 -0.0212596356685163 -123 -0.0193402304952815 -124 -0.0168126115507807 -125 -0.0168285157052044 -126 -0.0178485073702407 -127 -0.0153236968353027 -128 -0.0172450763888923 -129 -0.0181958874426915 -130 -0.019599041433368 -131 -0.012097521583517 -132 -0.0144122698713183 -133 -0.0132513281935601 -134 -0.00875555666212923 -135 -0.00361627820509766 -136 -0.000259967785037514 -137 -0.00805847419201842 -138 -0.012649535174109 -139 -0.0145979054471083 -140 -0.0107561179136776 -141 -0.0136228025301689 -142 -0.0159619507661417 -143 -0.0191425909401178 -144 -0.0163101158814417 -145 -0.012129043859938 -146 -0.0151299875018323 -147 -0.0203386298647967 -148 -0.0209988316244983 -149 -0.0219068901698134 -150 -0.0224671072591489 -151 -0.0170418184704867 -152 -0.0201957214089058 -153 -0.0205846116271679 -154 -0.0199413534929481 -155 -0.0179691672443825 -156 -0.0150768539756268 -157 0.0995215742652554 -158 0.0981837663624077 -159 0.0931229461077249 -160 0.21175246910869 -161 0.105079528542058 -162 0.0913032756563397 -163 0.0339528356592639 -164 -0.0182805568898494 -165 -0.0193574268532822 -166 -0.019701338364763 -167 -0.0189643836934548 -168 -0.0188745629207454 -169 -0.0165737067851004 -170 -0.0158076140033874 -171 -0.0161004869746426 -172 -0.0195930716982896 -173 -0.0182623379689477 -174 -0.0200811074454518 -175 -0.0187342710910368 -176 -0.0166229225659487 -177 -0.0167237872378271 -178 -0.0201685104197428 -179 -0.0165324418353769 -180 -0.0129150606429465 -181 -0.0169169105724671 -182 -0.017078473759628 -183 -0.018127591763309 -184 -0.0112307423687399 -185 -0.0134591703948938 -186 -0.0122816446332828 -187 -0.0167129471183761 -188 -0.00633335732749837 -189 -0.00217094534395089 -190 -0.003176289001772 -191 -0.0057871656139901 -192 -0.0115873213117581 -193 -0.00896702930637471 -194 -0.0120418100687928 -195 -0.0123921707383441 -196 -0.0172084711453154 -197 -0.0152400714377606 -198 -0.0111285496578555 -199 -0.0142340919577057 -200 -0.0192937621671048 -201 -0.0197880163686053 -202 -0.020849567081396 -203 -0.0198406262700084 -204 -0.0194104738114594 -205 -0.0148131274163057 -206 -0.0192079248734278 -207 -0.0187094339560537 -208 -0.0190732730711229 -209 0.0361934269621865 -210 0.0870917883041551 -211 0.0444891209616575 -212 0.0955027397552937 -213 0.154654506121038 -214 0.102102013193298 -215 0.0494447139937405 -216 0.0904567636647291 -217 -0.0152749334062708 -218 -0.0146608967815647 -219 -0.0147668855748172 -220 -0.0156264119143688 -221 -0.0169494608304957 -222 -0.0174532100041555 -223 -0.0180837899501967 -224 -0.0182277488931129 -225 -0.0161001752368341 -226 -0.0184991832755056 -227 -0.016936119098065 -228 -0.0148320934940219 -229 -0.015273255697935 -230 -0.0182123818891898 -231 -0.0138871665097331 -232 -0.0127350570541541 -233 -0.011100664599431 -234 -0.0138609863092704 -235 -0.0175586417976635 -236 -0.0148120796895902 -237 -0.01123198970569 -238 -0.00918469713802285 -239 -0.0144957683440811 -240 -0.0150294602056943 -241 -0.00892087391044469 -242 -0.0074976007380235 -243 -0.00500305299854478 -244 -0.0041320746296184 -245 -0.00691667857012371 -246 -0.00750372968060234 -247 -0.0107390437617496 -248 -0.0107754591390794 -249 -0.0174172611999561 -250 -0.0074172610106474 -251 -0.0112726180927846 -252 -0.0128024469916435 -253 -0.0177232020585621 -254 -0.0182539224409683 -255 -0.0178084592664765 -256 -0.0179231847033095 -257 -0.0176658037985606 -258 -0.0130046634117232 -259 -0.0176477704146573 -260 -0.0172408298470646 -261 -0.0173835849314203 -262 0.0885923665459635 -263 0.0358142986092356 -264 0.0500197172082544 -265 0.0969438699174651 -266 0.0998188153355495 -267 0.100534469863311 -268 0.0434275152967989 -269 0.0463586746755651 -270 0.0357679483900484 -271 -0.0163390926804664 -272 -0.0166539709796274 -273 -0.0166872870497804 -274 -0.017774068427573 -275 -0.01744643501098 -276 -0.0170706050536218 -277 -0.0147966340538359 -278 -0.0178408200541161 -279 -0.0149580558209695 -280 -0.0131592631424661 -281 -0.0131550961874815 -282 -0.0170541425549732 -283 -0.0136965468472329 -284 -0.0127321644242889 -285 -0.013612710529614 -286 -0.0110213426857256 -287 -0.0173230618274653 -288 -0.0169456472401162 -289 -0.0137220306520902 -290 -0.00961119036236773 -291 -0.00803307600491271 -292 -0.0130753503992976 -293 -0.010061738788462 -294 -0.0128263508570457 -295 -0.00871944477256595 -296 -0.0110828266355735 -297 -0.00145913051022751 -298 -0.00503831545783849 -299 -0.00613255184823567 -300 -0.00317532255742617 -301 -0.0110344422659596 -302 -0.0133994629637518 -303 -0.00711499446473252 -304 -0.00989738058293298 -305 -0.011298222554831 -306 -0.0163568500491007 -307 -0.0172224634424476 -308 -0.016917507184404 -309 -0.0169070421736616 -310 -0.0163226499986189 -311 -0.016000223795697 -312 -0.0128559262318566 -313 -0.0163027746090817 -314 0.0367233579233198 -315 0.0342463768168967 -316 0.0392659770656562 -317 0.0503244855684373 -318 0.106836752186508 -319 0.0428611079691666 -320 0.0947673606581728 -321 0.0404266507177676 -322 0.0422539004134698 -323 0.046712070413077 -324 -0.01386005988438 -325 -0.0129602628678002 -326 -0.0128410216627282 -327 -0.013938492679744 -328 -0.0142137469756705 -329 -0.0135606375602427 -330 -0.0147616165618841 -331 -0.0152730174282578 -332 -0.0157757882742451 -333 -0.0159444484008054 -334 -0.0159291528868275 -335 -0.0125715321584254 -336 -0.0113945717528155 -337 -0.0126919884793404 -338 -0.0120634295155063 -339 -0.0132222456876789 -340 -0.0149011205134109 -341 -0.0112134307887339 -342 -0.00765611064427073 -343 -0.00812543527107914 -344 -0.0116729541542833 -345 -0.00968419876956315 -346 -0.0121532305148415 -347 -0.0128180241822045 -348 -0.0111731767567057 -349 -0.0110495088050017 -350 -0.00474012274853909 -351 -0.0037753856041303 -352 -0.00712557226243535 -353 -0.00254605671801213 -354 -0.00896555258188561 -355 -0.0111612047310962 -356 -0.00590533525415532 -357 -0.00840289962801529 -358 -0.0101831986911947 -359 -0.0147234273517197 -360 -0.0144572278847782 -361 -0.0153686584343928 -362 -0.0152089345642079 -363 -0.0151495230806089 -364 -0.0137849851202231 -365 -0.0104713526164238 -366 -0.0148077561021853 -367 0.0376152434167216 -368 0.0388904481596711 -369 0.0403627453868288 -370 0.0513758553433587 -371 0.107917898362666 -372 -0.00798200125691471 -373 0.093360263223118 -374 0.0414198673418266 -375 0.0393249984524126 -376 0.0385926575483875 -377 -0.0144476804559933 -378 -0.0139841878291661 -379 -0.0139656533470585 -380 -0.0141040067753594 -381 -0.014560155301369 -382 -0.0135420823152173 -383 -0.0145222675144676 -384 -0.014460155395546 -385 -0.0139959464489686 -386 -0.0138565068907983 -387 -0.0107326956886409 -388 -0.0110916304860035 -389 -0.0103687114713454 -390 -0.0109128112118145 -391 -0.0116952906973984 -392 -0.0135898535414944 -393 -0.0111540378855234 -394 -0.0103451114918221 -395 -0.00764288243223634 -396 -0.0111929653049535 -397 -0.00834039400762986 -398 -0.0122045257479647 -399 -0.00873973826972888 -400 -0.0110201500772717 -401 -0.00961579587076197 -402 -0.0131269667654366 -403 -0.00727683817981296 -404 -0.00189532678702501 -405 -0.0069679001311242 -406 -0.001107723493968 -407 -0.0032276027306313 -408 -0.00832965485216551 -409 -0.00619183401785534 -410 -0.00411170215472319 -411 -0.00737621873809235 -412 -0.0127249132834817 -413 -0.012360725256073 -414 -0.0139619534335789 -415 -0.0141106553759734 -416 -0.0133572727396227 -417 -0.0136325555164283 -418 -0.00934211074118071 -419 -0.0138978954665086 -420 0.0419144448041395 -421 0.0398516060966593 -422 0.0412341286880762 -423 0.0638570301312163 -424 0.0510869302001157 -425 0.0457777338184318 -426 0.0404413480661733 -427 0.03921924550858 -428 0.0407807393162245 -429 0.0390318225210268 -430 -0.0131869917758382 -431 -0.0131264891895899 -432 -0.0122572780353557 -433 -0.0113077056806523 -434 -0.00997101803890706 -435 -0.00912977714210345 -436 -0.0107250321456603 -437 -0.0114964596837888 -438 -0.0124446657069589 -439 -0.0132452844526251 -440 -0.0134871442198044 -441 -0.0134721722474661 -442 -0.0129760608103375 -443 -0.0135083529746117 -444 -0.00963739106708388 -445 -0.00960193173592791 -446 -0.00868490827989549 -447 -0.00562468586891634 -448 -0.00853085467733999 -449 -0.00565929471677666 -450 -0.011223863255388 -451 -0.00966138501976315 -452 -0.0090354154607024 -453 -0.00713189903764993 -454 -0.011915762088822 -455 -0.0119958054757221 -456 -0.00993992005512065 -457 -0.00969020982773293 -458 -0.00823692240018265 -459 -0.000762137019254547 -460 -0.0020574939054943 -461 -0.00301533448841631 -462 -0.0048914231194836 -463 -0.00351910868759082 -464 -0.00684827660431788 -465 -0.0116186865393049 -466 -0.011300766713872 -467 -0.0125877507082846 -468 -0.0122940688703853 -469 -0.0117006004743094 -470 -0.0120808872890787 -471 -0.0079558659705616 -472 -0.0121146783942612 -473 0.0430539568135278 -474 0.0413747171665245 -475 0.0523499660199948 -476 0.0583608476822571 -477 -0.00619124151362362 -478 0.100261603489863 -479 -0.0115737946916181 -480 0.0410488267232732 -481 0.0394584957178085 -482 0.0409791183648626 -483 -0.0114608582351028 -484 -0.0105762029046014 -485 -0.0107944072761537 -486 -0.0112852025771194 -487 -0.0117263968065824 -488 -0.0110523616082281 -489 -0.0119497692898177 -490 -0.0116197924803783 -491 -0.0118402671059512 -492 -0.011897810344265 -493 -0.0118894488668558 -494 -0.0119264743252911 -495 -0.0114690161171001 -496 -0.00731323308517564 -497 -0.00809920804780606 -498 -0.00742970488647833 -499 -0.00511857473147858 -500 -0.00847898987161735 -501 -0.00820255817878669 -502 -0.0114261236985163 -503 -0.0115203134210467 -504 -0.00860290050483073 -505 -0.00826598998994287 -506 -0.00724980855887389 -507 -0.0115572629089065 -508 -0.0102803597313671 -509 -0.00869596301166451 -510 -0.00845394207419729 -511 -0.0117046810178094 -512 -0.00179199508390725 -513 -0.00107544976391358 -514 3.80706993328397e-05 -515 -0.000596554636898724 -516 -0.00357817525748314 -517 -0.00275478226050938 -518 -0.00770597808246832 -519 -0.00966201636724091 -520 -0.0101235465897374 -521 -0.0101536171271843 -522 -0.011155833269644 -523 -0.0110476185961753 -524 -0.00669564292913809 -525 -0.0110511552401975 -526 0.0440369068608864 -527 0.0512502905452455 -528 0.0486364491522985 -529 -0.00947573738593063 -530 0.0556902385103537 -531 0.048793011831808 -532 0.0459173634094269 -533 -0.0106409633397968 -534 0.0407992456018877 -535 0.039174303444095 -536 -0.0108360842113073 -537 -0.0100788835149665 -538 -0.010254912645359 -539 -0.0100259263673741 -540 -0.00990611735032563 -541 -0.0094032789969041 -542 -0.00950843747839274 -543 -0.00845625372492551 -544 -0.00866941515320219 -545 -0.00846124322850009 -546 -0.00914497373023597 -547 -0.00993847480108134 -548 -0.0075404949330402 -549 -0.0105738813921492 -550 -0.00995220250924118 -551 -0.00737345302781976 -552 -0.00705109912188471 -553 -0.00701139365327054 -554 -0.0100844014809053 -555 -0.00967040948412226 -556 -0.00555743993134012 -557 -0.00567368083508669 -558 -0.00579497136824869 -559 -0.00863244150774459 -560 -0.00886461549077306 -561 -0.0071079244280313 -562 -0.00724638263714693 -563 -0.0106271670963377 -564 -0.011037491565844 -565 -0.00536963936657175 -566 -0.00611090090733861 -567 -0.0028887251775724 -568 -0.00191043898745117 -569 -0.00127008538342651 -570 -0.00355834410328823 -571 -0.00455486576193576 -572 -0.00787475936794373 -573 -0.00788070911313194 -574 -0.0095868651265576 -575 -0.00951475112345576 -576 -0.0093743009207885 -577 -0.00547534007201022 -578 -0.00937228540429001 -579 0.0550319460420979 -580 0.0480645516151382 -581 -0.00734599404058905 -582 0.0460830024666069 -583 0.0576848767980736 -584 -0.00479751472149516 -585 0.0476440575581396 -586 0.0440509543394544 -587 -0.0092326530313669 -588 0.0416175571960497 -589 -0.0085697744475703 -590 -0.00849597671001137 -591 -0.00868661526356155 -592 -0.00914985829952541 -593 -0.00899659236078795 -594 -0.00852948984142705 -595 -0.00914967236793954 -596 -0.00874291045968585 -597 -0.00901928709184545 -598 -0.00893752387862559 -599 -0.00891224538068911 -600 -0.00651845952670981 -601 -0.00883751161943683 -602 -0.0089038138028028 -603 -0.00557038586902196 -604 -0.00528015885880997 -605 -0.00549258943084052 -606 -0.00885043870546068 -607 -0.00888233763605627 -608 -0.00534145902438052 -609 -0.00549755365130086 -610 -0.00543696053556694 -611 -0.00822523019438649 -612 -0.00872078038906415 -613 -0.00768752566683437 -614 -0.00581778171379135 -615 -0.00582391899839174 -616 -0.00928453417405443 -617 -0.00967264668427969 -618 -0.00459002993915674 -619 -0.005950987566855 -620 -0.00566913223974097 -621 -0.00449639995945585 -622 0.000563029103117738 -623 -0.000478567451764753 -624 -0.00478545037303475 -625 -0.00138436078321331 -626 -0.00658049012770183 -627 -0.00727390808805458 -628 -0.00826948198171915 -629 -0.00802863304649895 -630 -0.00440359258641195 -631 -0.00781572985833776 -632 0.0467875647495199 -633 -0.0075634487605479 -634 0.0452825901031108 -635 0.047802503065829 -636 -0.00771441065516206 -637 0.0579827980967365 -638 -0.00344424350631554 -639 0.0474617155307238 -640 0.0443214745845027 -641 -0.00763674418359978 -642 -0.00783330048033026 -643 -0.00741506274953657 -644 -0.00766182032871294 -645 -0.00746333175586923 -646 -0.00774981281309243 -647 -0.00721405105565235 -648 -0.00748309956829258 -649 -0.00693846930808117 -650 -0.00687260605509018 -651 -0.00680305016519336 -652 -0.00392232393463165 -653 -0.00596409981793424 -654 -0.00637091532208361 -655 -0.0070021295658497 -656 -0.00745369558153276 -657 -0.00748127195784389 -658 -0.00764575146706985 -659 -0.00720638844475823 -660 -0.00404423858223977 -661 -0.00405994477085238 -662 -0.00403357383109679 -663 -0.00648614706767544 -664 -0.00685104080751668 -665 -0.0055280793955573 -666 -0.00315266716147567 -667 -0.00289308426512229 -668 -0.0072907609350431 -669 -0.00778772320057429 -670 -0.00488230712792173 -671 -0.00428235797819206 -672 -0.00192624881716949 -673 -0.00690255454554318 -674 -0.00713932385460058 -675 -0.00190412691550018 -676 -0.00393717929429579 -677 -0.00322818496016548 -678 -0.00243123536539799 -679 -0.00325588623994424 -680 -0.00538550295619236 -681 -0.00569794784977527 -682 -0.00289248819958694 -683 -0.00674738254274132 -684 -0.00654327601801023 -685 -0.00642602661328291 -686 0.0487750013526658 -687 0.047351094119514 -688 -0.00634438713740084 -689 0.0483969866326635 -690 -0.00631126189370909 -691 0.0575822184504765 -692 -0.00221791722280226 -693 0.0478438468160886 -694 -0.00601391341772256 -695 -0.0056575420242112 -696 -0.00594331685758806 -697 -0.00602482896673149 -698 -0.00605358459658212 -699 -0.00573917550488335 -700 -0.00612440997777024 -701 -0.00585399571222659 -702 -0.00621035443994097 -703 -0.00577194218906833 -704 -0.00613669297980652 -705 -0.00603898494035611 -706 -0.00619657263267714 -707 -0.00631266537086359 -708 -0.00624176954936451 -709 -0.006493542110829 -710 -0.00641811359085571 -711 -0.00580520415695734 -712 -0.00254464054715768 -713 -0.00229049693565925 -714 -0.00260111893418342 -715 -0.00527998866629625 -716 -0.00580492472038456 -717 -0.00465763013855649 -718 -0.00291794763769027 -719 -0.0026170818255646 -720 -0.00635539773199271 -721 -0.00671950951784405 -722 -0.00681695170475915 -723 -0.00342054050102763 -724 -0.00275560859414933 -725 -0.000438510861243582 -726 -0.00560480727876819 -727 -0.0041561152883926 -728 -0.00600365300527431 -729 -0.00265123271948093 -730 -0.00264290423293351 -731 -0.00282174940291308 -732 -0.00138157106781404 -733 -0.00215366901979637 -734 -0.00419250836135037 -735 -0.000767184920404968 -736 -0.00550222672199026 -737 -0.00539179599992564 -738 -0.00519932278664982 -739 0.0503886317719632 -740 -0.00520071436244274 -741 0.0475171927490064 -742 -0.0054330140398667 -743 0.047917953696494 -744 -0.00493698211328358 -745 0.0578078065249347 -746 -0.00102406638326662 -747 -0.00351464407443385 -748 -0.00471808955799036 -749 -0.00466085562121167 -750 -0.00504216853601972 -751 -0.00491478851728083 -752 -0.00511582115647942 -753 -0.00510690407002076 -754 -0.00467115492125063 -755 -0.00507292488280625 -756 -0.00469600377226158 -757 -0.00479060778969928 -758 -0.00466814567292629 -759 -0.00459391587926426 -760 -0.00459367283047094 -761 -0.00456390630082813 -762 -0.00455517712581946 -763 -0.00444580816383878 -764 -0.00414375346682848 -765 -0.00462598085672905 -766 -0.00499924843048424 -767 -0.00393636209693802 -768 -0.00456718162991524 -769 -0.00323237519329591 -770 -0.00148778939855011 -771 -0.00156596659778741 -772 -0.00512915993874979 -773 -0.00492227748379505 -774 -0.00510090567121982 -775 -0.00134085402411959 -776 -0.000327698557656855 -777 -8.39604799222434e-05 -778 -0.00353180377704261 -779 -0.000884661451432567 -780 -0.00538269466798041 -781 -0.00550165919535478 -782 -0.00474894345489591 -783 -0.00166595007800424 -784 -0.00164486517145988 -785 -0.0035315332501745 -786 -0.00381711953376717 -787 0.000511414240780713 -788 -0.00386876867596389 -789 -0.00388546637330086 -790 -0.00381782963314221 -791 -0.00381978862023741 -792 -0.00375421982535356 -793 0.0509990813856318 -794 -0.00381674314240938 -795 0.0477092429318382 -796 -0.00346493764501739 -797 0.0486187069130531 -798 -0.00339231221033292 -799 -0.00372220200580609 -800 -0.00287181937082116 -801 -0.00282120299186121 -802 -0.00303246455350132 -803 -0.00274260094361711 -804 -0.00310003295922211 -805 -0.00318965584106337 -806 -0.0031124174327327 -807 -0.00296156129101724 -808 -0.00261410724164222 -809 -0.00304904712449122 -810 -0.00281829350522029 -811 -0.00334413423907794 -812 -0.00324558699946082 -813 -0.00321794842161168 -814 -0.00321688033495476 -815 -0.00315375940221917 -816 -0.00336252254507409 -817 -0.00338748787969201 -818 -0.0034301958497396 -819 -0.00328180304356289 -820 -0.00258348401263859 -821 -0.00151860018638174 -822 0.000385489721472849 -823 0.000485212390458467 -824 -0.00320045213749609 -825 -0.00360387425612046 -826 -0.00368875452847038 -827 -0.000252971173092802 -828 0.000274558167106639 -829 0.000415225492461183 -830 -0.00244928117799424 -831 -0.00157932593327874 -832 -0.00367396988363851 -833 -0.00159554367802162 -834 -0.00368044170833197 -835 -0.00381051495784578 -836 -0.00324391585440044 -837 8.26736255865406e-05 -838 0.000153133563221676 -839 0.00199072719691019 -840 -0.00225648039461718 -841 -0.00274833553045294 -842 -0.0025524575347716 -843 -0.00266988934954553 -844 -0.00255016712114302 -845 -0.00249982952647676 -846 -0.00252451553899371 -847 0.0509521741597566 -848 -0.00203584084600686 -849 0.0482575025076935 -850 -0.00222502592695146 -851 -0.00243295457553993 -852 -0.00170644617880928 -853 -0.00187578228348824 -854 -0.00189936420623392 -855 -0.00181014970183154 -856 -0.0019587407113103 -857 -0.00203035618973669 -858 -0.00200647352201275 -859 -0.00193357132846691 -860 -0.00203929593752837 -861 -0.00206047244950508 -862 -0.00172974796194137 -863 -0.00222152628496213 -864 -0.00176469161067378 -865 -0.00214628615471073 -866 -0.00223274820098944 -867 -0.00192609654692526 -868 -0.00160052707734799 -869 -0.00117491475685682 -870 -0.00172104022111683 -871 -0.00197669922228011 -872 -0.00200394021725799 -873 -0.00221174196880852 -874 -0.00214414888155639 -875 -0.0022418657462635 -876 -0.00224815601970618 -877 -0.00217548907899938 -878 -0.00219023215478833 -879 0.00103657148517733 -880 0.00170021752346762 -881 0.00176856581251282 -882 -0.00119486637524174 -883 -0.000182189717262493 -884 -0.00231669994116794 -885 -0.00235562044940596 -886 -0.00240760288834928 -887 -0.000369271736430893 -888 -0.00246106212268728 -889 -0.00248445436295954 -890 -0.00240055220436233 -891 0.00124694319822849 -892 -0.00238841299541467 -893 -0.00120964260603448 -894 -0.00108173638550143 -895 -0.00126617766611188 -896 -0.00126735332683995 -897 -0.00132493094338301 -898 -0.00127297814761722 -899 -0.00107541591903143 -900 -0.00078859473755685 -901 0.0515056301543915 -902 -0.000768818460590909 -903 -0.00107659176705549 -904 -0.000363324073519261 -905 -0.000435897358878675 -906 -0.000440171834594805 -907 -0.000337150215603847 -908 -0.000521457828934685 -909 -0.000601509879478592 -910 -0.000562536656253432 -911 -0.000540431206158033 -912 -0.000585521045810499 -913 -0.000647443311740879 -914 -0.000652572655245648 -915 -0.000754504564741441 -916 -0.00026111034852018 -917 -0.000614503803880769 -918 -0.00028306248528981 -919 -0.00062103454712342 -920 -0.00080789702501966 -921 -0.000857347553194396 -922 -0.000973273096392423 -923 -0.00071891921707499 -924 -0.000852123727546584 -925 -0.000908061110978231 -926 -0.000897846447493529 -927 -0.00107192184892616 -928 -0.00103558075120389 -929 -0.000858383868863735 -930 -0.00100410240556484 -931 0.00217861450591949 -932 0.00284094109416015 -933 0.00290236058075264 -934 -4.67766974110993e-06 -935 -0.00115598145065964 -936 -0.00115889264986191 -937 -0.00120477520403814 -938 -0.0011160907820447 -939 -0.00122108572337335 -940 -0.00129438459340121 -941 -0.0012642472236683 -942 -0.00112755293175713 -943 0.00267094176933998 -944 -0.00127265229053917 -945 -0.00128120069665366 -946 -0.00125730796622217 -947 -0.000161188927728071 -948 -0.00018709473550969 -949 -0.000202988378879946 -950 -0.000298277929635308 -951 -0.000228270818099919 -952 -0.000234161898233589 -953 -0.00026231090883195 -954 -0.000188222581526064 -955 -3.12448503073219e-05 -956 0.000717016504105383 -957 0.000690863879115161 -958 0.000699560885968165 -959 0.000642085039518387 -960 0.000647697652791968 -961 0.000599074112689629 -962 0.000575154175297893 -963 0.000549298287923788 -964 0.000516895100767751 -965 0.000505782209635087 -966 0.000468256937777253 -967 0.000443201508212851 -968 0.000422857688527172 -969 0.000396172202507289 -970 0.000378968023322664 -971 0.000356781808907751 -972 0.000335281879557104 -973 0.000318039116828582 -974 0.00029453308441855 -975 0.000267951475057331 -976 0.000246035263474985 -977 0.000289581453389937 -978 0.000348007228990331 -979 0.00040460593179165 -980 0.000411143906352345 -981 0.000381827800477813 -982 0.000355749114743507 -983 0.000330472553418517 -984 0.000310675137741401 -985 0.000285966709056265 -986 0.000261731425090165 -987 0.000237012405074174 -988 0.000215826766435867 -989 0.000273446389041168 -990 0.000248883730962565 -991 0.000224615155659346 -992 0.000200129222402582 -993 0.000177275060030199 -994 0.00015277663830548 -995 0.000128527059295642 -996 0.000102904910816061 -997 8.05504321850845e-05 -998 5.85820006378074e-05 -999 3.63637004327478e-05 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat deleted file mode 100644 index 8844c14e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt#generator_safe.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.00191903114318848 0.0 0.0 0.0 1 -2 0.00184082984924316 0.0 0.0 0.0 2 -3 0.00179791450500488 0.0 0.0 0.0 3 -4 0.00180506706237793 0.0100000000000016 0.0100000000000016 0.0 4 -5 0.00179386138916016 0.0 0.0 0.0 5 -6 0.00174307823181152 0.0 0.0 0.0 6 -7 0.00177001953125 0.0 0.0 0.0 7 -8 0.00175905227661133 0.0 0.0 0.0 8 -9 0.00177288055419922 0.00999999999999801 0.00999999999999801 0.0 9 -10 0.00176692008972168 0.0 0.0 0.0 10 -11 0.00176906585693359 0.0 0.0 0.0 11 -12 0.0017549991607666 0.0 0.0 0.0 12 -13 0.00345110893249512 0.0 0.0 0.0 13 -14 0.0018010139465332 0.0100000000000016 0.0100000000000016 0.0 14 -15 0.0017697811126709 0.0 0.0 0.0 15 -16 0.00174093246459961 0.0 0.0 0.0 16 -17 0.00175905227661133 0.0 0.0 0.0 17 -18 0.00176501274108887 0.0 0.0 0.0 18 -19 0.00176501274108887 0.0 0.0 0.0 19 -20 0.00175905227661133 0.00999999999999801 0.00999999999999801 0.0 20 -21 0.00173807144165039 0.0 0.0 0.0 21 -22 0.00222587585449219 0.0 0.0 0.0 22 -23 0.00347685813903809 0.0 0.0 0.0 23 -24 0.00342988967895508 0.0100000000000016 0.0100000000000016 0.0 24 -25 0.00312495231628418 0.0 0.0 0.0 25 -26 0.00174784660339355 0.0 0.0 0.0 26 -27 0.00174403190612793 0.0 0.0 0.0 27 -28 0.00174093246459961 0.0100000000000016 0.0100000000000016 0.0 28 -29 0.00173211097717285 0.0 0.0 0.0 29 -30 0.00176692008972168 0.0 0.0 0.0 30 -31 0.00176620483398438 0.0 0.0 0.0 31 -32 0.00179195404052734 0.0 0.0 0.0 32 -33 0.0017549991607666 0.0 0.0 0.0 33 -34 0.00172591209411621 0.0 0.0 0.0 34 -35 0.00174117088317871 0.0 0.0 0.0 35 -36 0.00173783302307129 0.0 0.0 0.0 36 -37 0.00174689292907715 0.0 0.0 0.0 37 -38 0.00173211097717285 0.0 0.0 0.0 38 -39 0.00174999237060547 0.0100000000000016 0.0100000000000016 0.0 39 -40 0.00176692008972168 0.0 0.0 0.0 40 -41 0.00172901153564453 0.0 0.0 0.0 41 -42 0.00174593925476074 0.0 0.0 0.0 42 -43 0.00175309181213379 0.0 0.0 0.0 43 -44 0.00175905227661133 0.0 0.0 0.0 44 -45 0.00176715850830078 0.00999999999999801 0.00999999999999801 0.0 45 -46 0.00174784660339355 0.0 0.0 0.0 46 -47 0.0017399787902832 0.0 0.0 0.0 47 -48 0.00174307823181152 0.0 0.0 0.0 48 -49 0.00180912017822266 0.0 0.0 0.0 49 -50 0.00175309181213379 0.0100000000000016 0.0100000000000016 0.0 50 -51 0.0017399787902832 0.0 0.0 0.0 51 -52 0.00176811218261719 0.0 0.0 0.0 52 -53 0.00176596641540527 0.0 0.0 0.0 53 -54 0.00189590454101562 0.0 0.0 0.0 54 -55 0.024507999420166 0.0299999999999976 0.0299999999999976 0.0 55 -56 0.00197005271911621 0.0 0.0 0.0 56 -57 0.00185298919677734 0.0 0.0 0.0 57 -58 0.00178289413452148 0.0 0.0 0.0 58 -59 0.00177383422851562 0.0 0.0 0.0 59 -60 0.00178122520446777 0.0100000000000016 0.0100000000000016 0.0 60 -61 0.00177597999572754 0.0 0.0 0.0 61 -62 0.00182914733886719 0.0 0.0 0.0 62 -63 0.00176692008972168 0.0 0.0 0.0 63 -64 0.00177502632141113 0.0 0.0 0.0 64 -65 0.00175118446350098 0.0100000000000016 0.0100000000000016 0.0 65 -66 0.00176286697387695 0.0 0.0 0.0 66 -67 0.00175809860229492 0.0 0.0 0.0 67 -68 0.00176095962524414 0.0 0.0 0.0 68 -69 0.0017540454864502 0.0 0.0 0.0 69 -70 0.00175094604492188 0.0 0.0 0.0 70 -71 0.00176000595092773 0.00999999999999801 0.00999999999999801 0.0 71 -72 0.00174784660339355 0.0 0.0 0.0 72 -73 0.00272703170776367 0.0 0.0 0.0 73 -74 0.00178098678588867 0.0 0.0 0.0 74 -75 0.0017540454864502 0.0 0.0 0.0 75 -76 0.00175595283508301 0.0100000000000016 0.0100000000000016 0.0 76 -77 0.00174784660339355 0.0 0.0 0.0 77 -78 0.00176095962524414 0.0 0.0 0.0 78 -79 0.00175094604492188 0.0 0.0 0.0 79 -80 0.00174617767333984 0.0 0.0 0.0 80 -81 0.00176286697387695 0.00999999999999801 0.00999999999999801 0.0 81 -82 0.00174784660339355 0.0 0.0 0.0 82 -83 0.0017402172088623 0.0 0.0 0.0 83 -84 0.00174093246459961 0.0 0.0 0.0 84 -85 0.00174880027770996 0.0 0.0 0.0 85 -86 0.00174283981323242 0.0 0.0 0.0 86 -87 0.0017549991607666 0.0100000000000016 0.0100000000000016 0.0 87 -88 0.00175690650939941 0.0 0.0 0.0 88 -89 0.0017390251159668 0.0 0.0 0.0 89 -90 0.0017399787902832 0.0 0.0 0.0 90 -91 0.00176286697387695 0.0 0.0 0.0 91 -92 0.00174093246459961 0.00999999999999801 0.00999999999999801 0.0 92 -93 0.00173306465148926 0.0 0.0 0.0 93 -94 0.00173091888427734 0.0 0.0 0.0 94 -95 0.00175118446350098 0.0 0.0 0.0 95 -96 0.00173187255859375 0.0 0.0 0.0 96 -97 0.00177407264709473 0.0 0.0 0.0 97 -98 0.00174498558044434 0.0100000000000016 0.0100000000000016 0.0 98 -99 0.00173783302307129 0.0 0.0 0.0 99 -100 0.00174283981323242 0.0 0.0 0.0 100 -101 0.0017549991607666 0.0 0.0 0.0 101 -102 0.00173020362854004 0.0 0.0 0.0 102 -103 0.00172805786132812 0.0 0.0 0.0 103 -104 0.00174784660339355 0.0 0.0 0.0 104 -105 0.00175786018371582 0.0 0.0 0.0 105 -106 0.00176501274108887 0.0 0.0 0.0 106 -107 0.00174784660339355 0.0 0.0 0.0 107 -108 0.00176095962524414 0.0 0.0 0.0 108 -109 0.0247871875762939 0.0299999999999976 0.0299999999999976 0.0 109 -110 0.0018157958984375 0.0 0.0 0.0 110 -111 0.00183296203613281 0.0 0.0 0.0 111 -112 0.00179004669189453 0.0 0.0 0.0 112 -113 0.00177502632141113 0.0100000000000016 0.0100000000000016 0.0 113 -114 0.00177502632141113 0.0 0.0 0.0 114 -115 0.00174498558044434 0.0 0.0 0.0 115 -116 0.00174808502197266 0.0 0.0 0.0 116 -117 0.00175595283508301 0.0 0.0 0.0 117 -118 0.00174808502197266 0.00999999999999801 0.00999999999999801 0.0 118 -119 0.00177216529846191 0.0 0.0 0.0 119 -120 0.0017540454864502 0.0 0.0 0.0 120 -121 0.00176286697387695 0.0 0.0 0.0 121 -122 0.00176787376403809 0.0 0.0 0.0 122 -123 0.00175905227661133 0.0 0.0 0.0 123 -124 0.0017549991607666 0.0100000000000016 0.0100000000000016 0.0 124 -125 0.00174403190612793 0.0 0.0 0.0 125 -126 0.00174903869628906 0.0 0.0 0.0 126 -127 0.00180387496948242 0.0 0.0 0.0 127 -128 0.00177502632141113 0.0 0.0 0.0 128 -129 0.00175595283508301 0.00999999999999801 0.00999999999999801 0.0 129 -130 0.00174903869628906 0.0 0.0 0.0 130 -131 0.00176501274108887 0.0 0.0 0.0 131 -132 0.00191903114318848 0.0 0.0 0.0 132 -133 0.0034480094909668 0.0 0.0 0.0 133 -134 0.00341916084289551 0.0100000000000016 0.0100000000000016 0.0 134 -135 0.00260114669799805 0.0 0.0 0.0 135 -136 0.00203084945678711 0.0 0.0 0.0 136 -137 0.00176596641540527 0.0 0.0 0.0 137 -138 0.00175189971923828 0.0100000000000016 0.0100000000000016 0.0 138 -139 0.00176119804382324 0.0 0.0 0.0 139 -140 0.00174784660339355 0.0 0.0 0.0 140 -141 0.00173783302307129 0.0 0.0 0.0 141 -142 0.00179481506347656 0.0 0.0 0.0 142 -143 0.00173401832580566 0.00999999999999801 0.00999999999999801 0.0 143 -144 0.00175189971923828 0.0 0.0 0.0 144 -145 0.00174188613891602 0.0 0.0 0.0 145 -146 0.0017549991607666 0.0 0.0 0.0 146 -147 0.00174808502197266 0.0 0.0 0.0 147 -148 0.00174498558044434 0.0 0.0 0.0 148 -149 0.00174307823181152 0.0100000000000016 0.0100000000000016 0.0 149 -150 0.00175595283508301 0.0 0.0 0.0 150 -151 0.0017549991607666 0.0 0.0 0.0 151 -152 0.00174403190612793 0.0 0.0 0.0 152 -153 0.00174808502197266 0.0 0.0 0.0 153 -154 0.00174403190612793 0.0 0.0 0.0 154 -155 0.00183796882629395 0.00999999999999801 0.00999999999999801 0.0 155 -156 0.00176095962524414 0.0 0.0 0.0 156 -157 0.0017399787902832 0.0 0.0 0.0 157 -158 0.00181007385253906 0.0 0.0 0.0 158 -159 0.00175905227661133 0.0 0.0 0.0 159 -160 0.00177717208862305 0.0100000000000016 0.0100000000000016 0.0 160 -161 0.00175380706787109 0.0 0.0 0.0 161 -162 0.00177097320556641 0.0 0.0 0.0 162 -163 0.0254480838775635 0.0199999999999996 0.0199999999999996 0.0 163 -164 0.00185108184814453 0.00999999999999801 0.00999999999999801 0.0 164 -165 0.00188708305358887 0.0 0.0 0.0 165 -166 0.00177788734436035 0.0 0.0 0.0 166 -167 0.00183510780334473 0.0 0.0 0.0 167 -168 0.00177812576293945 0.0 0.0 0.0 168 -169 0.00177502632141113 0.0100000000000016 0.0100000000000016 0.0 169 -170 0.00174593925476074 0.0 0.0 0.0 170 -171 0.00176692008972168 0.0 0.0 0.0 171 -172 0.00175786018371582 0.0 0.0 0.0 172 -173 0.00176501274108887 0.0 0.0 0.0 173 -174 0.0018000602722168 0.0100000000000016 0.0100000000000016 0.0 174 -175 0.00176095962524414 0.0 0.0 0.0 175 -176 0.00175714492797852 0.0 0.0 0.0 176 -177 0.00174999237060547 0.0 0.0 0.0 177 -178 0.00176191329956055 0.0 0.0 0.0 178 -179 0.00175786018371582 0.0 0.0 0.0 179 -180 0.00174117088317871 0.00999999999999801 0.00999999999999801 0.0 180 -181 0.00177001953125 0.0 0.0 0.0 181 -182 0.00176095962524414 0.0 0.0 0.0 182 -183 0.00174903869628906 0.0 0.0 0.0 183 -184 0.00174093246459961 0.0 0.0 0.0 184 -185 0.00174307823181152 0.0 0.0 0.0 185 -186 0.00175595283508301 0.0100000000000016 0.0100000000000016 0.0 186 -187 0.00175189971923828 0.0 0.0 0.0 187 -188 0.00173711776733398 0.0 0.0 0.0 188 -189 0.00221514701843262 0.0 0.0 0.0 189 -190 0.00177502632141113 0.0 0.0 0.0 190 -191 0.00176811218261719 0.00999999999999801 0.00999999999999801 0.0 191 -192 0.00185799598693848 0.0 0.0 0.0 192 -193 0.00174903869628906 0.0 0.0 0.0 193 -194 0.00174379348754883 0.0 0.0 0.0 194 -195 0.0017399787902832 0.0 0.0 0.0 195 -196 0.00173401832580566 0.0100000000000016 0.0100000000000016 0.0 196 -197 0.00172996520996094 0.0 0.0 0.0 197 -198 0.00173401832580566 0.0 0.0 0.0 198 -199 0.00182390213012695 0.0 0.0 0.0 199 -200 0.00174784660339355 0.0 0.0 0.0 200 -201 0.0017549991607666 0.0 0.0 0.0 201 -202 0.00174307823181152 0.00999999999999801 0.00999999999999801 0.0 202 -203 0.00172710418701172 0.0 0.0 0.0 203 -204 0.00174283981323242 0.0 0.0 0.0 204 -205 0.00174999237060547 0.0 0.0 0.0 205 -206 0.00174093246459961 0.0 0.0 0.0 206 -207 0.00173616409301758 0.0 0.0 0.0 207 -208 0.00174903869628906 0.0100000000000016 0.0100000000000016 0.0 208 -209 0.00177407264709473 0.0 0.0 0.0 209 -210 0.00176286697387695 0.0 0.0 0.0 210 -211 0.00174903869628906 0.0 0.0 0.0 211 -212 0.00173807144165039 0.0 0.0 0.0 212 -213 0.00173020362854004 0.0100000000000016 0.0100000000000016 0.0 213 -214 0.00177502632141113 0.0 0.0 0.0 214 -215 0.00175309181213379 0.0 0.0 0.0 215 -216 0.00175595283508301 0.0 0.0 0.0 216 -217 0.0257258415222168 0.0299999999999976 0.0299999999999976 0.0 217 -218 0.00183296203613281 0.0 0.0 0.0 218 -219 0.00183606147766113 0.0 0.0 0.0 219 -220 0.0017850399017334 0.0 0.0 0.0 220 -221 0.00177097320556641 0.0 0.0 0.0 221 -222 0.00177097320556641 0.0100000000000016 0.0100000000000016 0.0 222 -223 0.00174808502197266 0.0 0.0 0.0 223 -224 0.00177216529846191 0.0 0.0 0.0 224 -225 0.0017549991607666 0.0 0.0 0.0 225 -226 0.00176095962524414 0.0 0.0 0.0 226 -227 0.00178098678588867 0.00999999999999801 0.00999999999999801 0.0 227 -228 0.00174188613891602 0.0 0.0 0.0 228 -229 0.0017540454864502 0.0 0.0 0.0 229 -230 0.00176477432250977 0.0 0.0 0.0 230 -231 0.00176191329956055 0.0 0.0 0.0 231 -232 0.00174713134765625 0.0 0.0 0.0 232 -233 0.00176095962524414 0.0100000000000016 0.0100000000000016 0.0 233 -234 0.00174903869628906 0.0 0.0 0.0 234 -235 0.0017549991607666 0.0 0.0 0.0 235 -236 0.00177001953125 0.0 0.0 0.0 236 -237 0.00174093246459961 0.0 0.0 0.0 237 -238 0.00174379348754883 0.0 0.0 0.0 238 -239 0.0017390251159668 0.00999999999999801 0.00999999999999801 0.0 239 -240 0.00175213813781738 0.0 0.0 0.0 240 -241 0.00174117088317871 0.0 0.0 0.0 241 -242 0.00341701507568359 0.0 0.0 0.0 242 -243 0.00347495079040527 0.0100000000000016 0.0100000000000016 0.0 243 -244 0.00339508056640625 0.0 0.0 0.0 244 -245 0.00204801559448242 0.0 0.0 0.0 245 -246 0.00174903869628906 0.0 0.0 0.0 246 -247 0.00174903869628906 0.0100000000000016 0.0100000000000016 0.0 247 -248 0.00174283981323242 0.0 0.0 0.0 248 -249 0.00176382064819336 0.0 0.0 0.0 249 -250 0.00179600715637207 0.0 0.0 0.0 250 -251 0.00175380706787109 0.0 0.0 0.0 251 -252 0.00175976753234863 0.00999999999999801 0.00999999999999801 0.0 252 -253 0.00174188613891602 0.0 0.0 0.0 253 -254 0.00174808502197266 0.0 0.0 0.0 254 -255 0.00175690650939941 0.0 0.0 0.0 255 -256 0.00173091888427734 0.0 0.0 0.0 256 -257 0.00175213813781738 0.0 0.0 0.0 257 -258 0.00174498558044434 0.0100000000000016 0.0100000000000016 0.0 258 -259 0.00174999237060547 0.0 0.0 0.0 259 -260 0.00175094604492188 0.0 0.0 0.0 260 -261 0.00177097320556641 0.0 0.0 0.0 261 -262 0.00174283981323242 0.0 0.0 0.0 262 -263 0.00174999237060547 0.00999999999999801 0.00999999999999801 0.0 263 -264 0.00174713134765625 0.0 0.0 0.0 264 -265 0.00174212455749512 0.0 0.0 0.0 265 -266 0.00174498558044434 0.0 0.0 0.0 266 -267 0.00180602073669434 0.0 0.0 0.0 267 -268 0.00176906585693359 0.0 0.0 0.0 268 -269 0.00176382064819336 0.0100000000000016 0.0100000000000016 0.0 269 -270 0.0255179405212402 0.0199999999999996 0.0199999999999996 0.0 270 -271 0.00179314613342285 0.0 0.0 0.0 271 -272 0.00182604789733887 0.00999999999999801 0.00999999999999801 0.0 272 -273 0.00179910659790039 0.0 0.0 0.0 273 -274 0.00179505348205566 0.0 0.0 0.0 274 -275 0.00176811218261719 0.0 0.0 0.0 275 -276 0.00177192687988281 0.0 0.0 0.0 276 -277 0.00177478790283203 0.0 0.0 0.0 277 -278 0.00176596641540527 0.0100000000000016 0.0100000000000016 0.0 278 -279 0.0020899772644043 0.0 0.0 0.0 279 -280 0.00182890892028809 0.0 0.0 0.0 280 -281 0.00177597999572754 0.0 0.0 0.0 281 -282 0.0018761157989502 0.0 0.0 0.0 282 -283 0.00176405906677246 0.0100000000000016 0.0100000000000016 0.0 283 -284 0.00177693367004395 0.0 0.0 0.0 284 -285 0.00175094604492188 0.0 0.0 0.0 285 -286 0.00176000595092773 0.0 0.0 0.0 286 -287 0.00176095962524414 0.0 0.0 0.0 287 -288 0.00176715850830078 0.0 0.0 0.0 288 -289 0.0017549991607666 0.00999999999999801 0.00999999999999801 0.0 289 -290 0.00177216529846191 0.0 0.0 0.0 290 -291 0.00175881385803223 0.0 0.0 0.0 291 -292 0.00177502632141113 0.0 0.0 0.0 292 -293 0.00174999237060547 0.0 0.0 0.0 293 -294 0.00176000595092773 0.0100000000000016 0.0100000000000016 0.0 294 -295 0.00173807144165039 0.0 0.0 0.0 295 -296 0.00174999237060547 0.0 0.0 0.0 296 -297 0.00174212455749512 0.0 0.0 0.0 297 -298 0.0017549991607666 0.0 0.0 0.0 298 -299 0.00174713134765625 0.0 0.0 0.0 299 -300 0.00174784660339355 0.00999999999999801 0.00999999999999801 0.0 300 -301 0.00174403190612793 0.0 0.0 0.0 301 -302 0.00175905227661133 0.0 0.0 0.0 302 -303 0.00174713134765625 0.0 0.0 0.0 303 -304 0.00293898582458496 0.0 0.0 0.0 304 -305 0.00175619125366211 0.0100000000000016 0.0100000000000016 0.0 305 -306 0.00176787376403809 0.0 0.0 0.0 306 -307 0.00173401832580566 0.0 0.0 0.0 307 -308 0.00176095962524414 0.0 0.0 0.0 308 -309 0.00177383422851562 0.0 0.0 0.0 309 -310 0.00175189971923828 0.0 0.0 0.0 310 -311 0.00173211097717285 0.00999999999999801 0.00999999999999801 0.0 311 -312 0.00173211097717285 0.0 0.0 0.0 312 -313 0.00175786018371582 0.0 0.0 0.0 313 -314 0.0017549991607666 0.0 0.0 0.0 314 -315 0.00180292129516602 0.0 0.0 0.0 315 -316 0.00176787376403809 0.0100000000000016 0.0100000000000016 0.0 316 -317 0.00175714492797852 0.0 0.0 0.0 317 -318 0.00177097320556641 0.0 0.0 0.0 318 -319 0.00173711776733398 0.0 0.0 0.0 319 -320 0.00174307823181152 0.0 0.0 0.0 320 -321 0.00177502632141113 0.0 0.0 0.0 321 -322 0.00176501274108887 0.0100000000000016 0.0100000000000016 0.0 322 -323 0.00177407264709473 0.0 0.0 0.0 323 -324 0.0253810882568359 0.0199999999999996 0.0199999999999996 0.0 324 -325 0.00182509422302246 0.00999999999999801 0.00999999999999801 0.0 325 -326 0.00184917449951172 0.0 0.0 0.0 326 -327 0.0018160343170166 0.0 0.0 0.0 327 -328 0.00176692008972168 0.0 0.0 0.0 328 -329 0.00176501274108887 0.0 0.0 0.0 329 -330 0.00177097320556641 0.0 0.0 0.0 330 -331 0.00176906585693359 0.0100000000000016 0.0100000000000016 0.0 331 -332 0.00175690650939941 0.0 0.0 0.0 332 -333 0.00176906585693359 0.0 0.0 0.0 333 -334 0.00173497200012207 0.0 0.0 0.0 334 -335 0.00176095962524414 0.0 0.0 0.0 335 -336 0.00176286697387695 0.00999999999999801 0.00999999999999801 0.0 336 -337 0.00176382064819336 0.0 0.0 0.0 337 -338 0.00174379348754883 0.0 0.0 0.0 338 -339 0.00174808502197266 0.0 0.0 0.0 339 -340 0.00175595283508301 0.0 0.0 0.0 340 -341 0.0017540454864502 0.0 0.0 0.0 341 -342 0.00174903869628906 0.0100000000000016 0.0100000000000016 0.0 342 -343 0.00172686576843262 0.0 0.0 0.0 343 -344 0.00175786018371582 0.0 0.0 0.0 344 -345 0.00181317329406738 0.0 0.0 0.0 345 -346 0.00176692008972168 0.0 0.0 0.0 346 -347 0.00175213813781738 0.00999999999999801 0.00999999999999801 0.0 347 -348 0.00172591209411621 0.0 0.0 0.0 348 -349 0.00174093246459961 0.0 0.0 0.0 349 -350 0.00202202796936035 0.0 0.0 0.0 350 -351 0.00346088409423828 0.0 0.0 0.0 351 -352 0.00342106819152832 0.0100000000000016 0.0100000000000016 0.0 352 -353 0.0033118724822998 0.0 0.0 0.0 353 -354 0.00195193290710449 0.0 0.0 0.0 354 -355 0.00175690650939941 0.0100000000000016 0.0100000000000016 0.0 355 -356 0.00174379348754883 0.0 0.0 0.0 356 -357 0.00174283981323242 0.0 0.0 0.0 357 -358 0.00174880027770996 0.0 0.0 0.0 358 -359 0.00177788734436035 0.0 0.0 0.0 359 -360 0.00173401832580566 0.0 0.0 0.0 360 -361 0.00173687934875488 0.00999999999999801 0.00999999999999801 0.0 361 -362 0.00174403190612793 0.0 0.0 0.0 362 -363 0.00174999237060547 0.0 0.0 0.0 363 -364 0.00173592567443848 0.0 0.0 0.0 364 -365 0.00175094604492188 0.0 0.0 0.0 365 -366 0.00174188613891602 0.0 0.0 0.0 366 -367 0.00175118446350098 0.0100000000000016 0.0100000000000016 0.0 367 -368 0.00175595283508301 0.0 0.0 0.0 368 -369 0.00174403190612793 0.0 0.0 0.0 369 -370 0.0017387866973877 0.0 0.0 0.0 370 -371 0.00177192687988281 0.0 0.0 0.0 371 -372 0.00177907943725586 0.00999999999999801 0.00999999999999801 0.0 372 -373 0.00174903869628906 0.0 0.0 0.0 373 -374 0.00176215171813965 0.0 0.0 0.0 374 -375 0.0023951530456543 0.0 0.0 0.0 375 -376 0.00357913970947266 0.0100000000000016 0.0100000000000016 0.0 376 -377 0.0294489860534668 0.0199999999999996 0.0199999999999996 0.0 377 -378 0.00180578231811523 0.00999999999999801 0.00999999999999801 0.0 378 -379 0.00181698799133301 0.0 0.0 0.0 379 -380 0.00183391571044922 0.0 0.0 0.0 380 -381 0.00181293487548828 0.0 0.0 0.0 381 -382 0.00175809860229492 0.0 0.0 0.0 382 -383 0.00176405906677246 0.0100000000000016 0.0100000000000016 0.0 383 -384 0.00176000595092773 0.0 0.0 0.0 384 -385 0.00175809860229492 0.0 0.0 0.0 385 -386 0.00177288055419922 0.0 0.0 0.0 386 -387 0.00175285339355469 0.0 0.0 0.0 387 -388 0.00175595283508301 0.0 0.0 0.0 388 -389 0.00177502632141113 0.0100000000000016 0.0100000000000016 0.0 389 -390 0.00174903869628906 0.0 0.0 0.0 390 -391 0.00176215171813965 0.0 0.0 0.0 391 -392 0.00174903869628906 0.0 0.0 0.0 392 -393 0.00174307823181152 0.0 0.0 0.0 393 -394 0.00177812576293945 0.00999999999999801 0.00999999999999801 0.0 394 -395 0.00176596641540527 0.0 0.0 0.0 395 -396 0.00178003311157227 0.0 0.0 0.0 396 -397 0.0017390251159668 0.0 0.0 0.0 397 -398 0.00174999237060547 0.0 0.0 0.0 398 -399 0.00174307823181152 0.0 0.0 0.0 399 -400 0.00176191329956055 0.0100000000000016 0.0100000000000016 0.0 400 -401 0.0017549991607666 0.0 0.0 0.0 401 -402 0.00173592567443848 0.0 0.0 0.0 402 -403 0.00173401832580566 0.0 0.0 0.0 403 -404 0.00176095962524414 0.0 0.0 0.0 404 -405 0.00174689292907715 0.00999999999999801 0.00999999999999801 0.0 405 -406 0.00176000595092773 0.0 0.0 0.0 406 -407 0.00172615051269531 0.0 0.0 0.0 407 -408 0.00174188613891602 0.0 0.0 0.0 408 -409 0.00174283981323242 0.0 0.0 0.0 409 -410 0.0017540454864502 0.0 0.0 0.0 410 -411 0.00174403190612793 0.0100000000000016 0.0100000000000016 0.0 411 -412 0.00172901153564453 0.0 0.0 0.0 412 -413 0.00173282623291016 0.0 0.0 0.0 413 -414 0.00174880027770996 0.0 0.0 0.0 414 -415 0.0017549991607666 0.0 0.0 0.0 415 -416 0.00173091888427734 0.00999999999999801 0.00999999999999801 0.0 416 -417 0.00174999237060547 0.0 0.0 0.0 417 -418 0.00184798240661621 0.0 0.0 0.0 418 -419 0.00175118446350098 0.0 0.0 0.0 419 -420 0.00173497200012207 0.0 0.0 0.0 420 -421 0.00173807144165039 0.0 0.0 0.0 421 -422 0.00174903869628906 0.0100000000000016 0.0100000000000016 0.0 422 -423 0.00174093246459961 0.0 0.0 0.0 423 -424 0.00177288055419922 0.0 0.0 0.0 424 -425 0.00176000595092773 0.0 0.0 0.0 425 -426 0.00174880027770996 0.0 0.0 0.0 426 -427 0.00173187255859375 0.0 0.0 0.0 427 -428 0.00179195404052734 0.0100000000000016 0.0100000000000016 0.0 428 -429 0.00175309181213379 0.0 0.0 0.0 429 -430 0.0253579616546631 0.0199999999999996 0.0199999999999996 0.0 430 -431 0.0018010139465332 0.00999999999999801 0.00999999999999801 0.0 431 -432 0.00183796882629395 0.0 0.0 0.0 432 -433 0.00179314613342285 0.0 0.0 0.0 433 -434 0.00180387496948242 0.0 0.0 0.0 434 -435 0.00178289413452148 0.0 0.0 0.0 435 -436 0.00178003311157227 0.0100000000000016 0.0100000000000016 0.0 436 -437 0.00177001953125 0.0 0.0 0.0 437 -438 0.00175285339355469 0.0 0.0 0.0 438 -439 0.00176405906677246 0.0 0.0 0.0 439 -440 0.00176501274108887 0.0 0.0 0.0 440 -441 0.00173497200012207 0.0 0.0 0.0 441 -442 0.00176215171813965 0.00999999999999801 0.00999999999999801 0.0 442 -443 0.00176000595092773 0.0 0.0 0.0 443 -444 0.0017390251159668 0.0 0.0 0.0 444 -445 0.00175714492797852 0.0 0.0 0.0 445 -446 0.00178098678588867 0.0 0.0 0.0 446 -447 0.00176286697387695 0.0 0.0 0.0 447 -448 0.00175595283508301 0.0100000000000016 0.0100000000000016 0.0 448 -449 0.00177097320556641 0.0 0.0 0.0 449 -450 0.00175905227661133 0.0 0.0 0.0 450 -451 0.00175595283508301 0.0 0.0 0.0 451 -452 0.00177693367004395 0.0 0.0 0.0 452 -453 0.00174999237060547 0.00999999999999801 0.00999999999999801 0.0 453 -454 0.00175595283508301 0.0 0.0 0.0 454 -455 0.00176191329956055 0.0 0.0 0.0 455 -456 0.00175094604492188 0.0 0.0 0.0 456 -457 0.00329685211181641 0.0 0.0 0.0 457 -458 0.00347805023193359 0.0100000000000016 0.0100000000000016 0.0 458 -459 0.00338196754455566 0.0 0.0 0.0 459 -460 0.00222587585449219 0.0 0.0 0.0 460 -461 0.00174784660339355 0.0100000000000016 0.0100000000000016 0.0 461 -462 0.00176715850830078 0.0 0.0 0.0 462 -463 0.00176501274108887 0.0 0.0 0.0 463 -464 0.00172901153564453 0.0 0.0 0.0 464 -465 0.00177407264709473 0.0 0.0 0.0 465 -466 0.00175309181213379 0.0 0.0 0.0 466 -467 0.00176095962524414 0.00999999999999801 0.00999999999999801 0.0 467 -468 0.00174403190612793 0.0 0.0 0.0 468 -469 0.00172996520996094 0.0 0.0 0.0 469 -470 0.00175285339355469 0.0 0.0 0.0 470 -471 0.00176000595092773 0.0 0.0 0.0 471 -472 0.00176119804382324 0.0100000000000016 0.0100000000000016 0.0 472 -473 0.00173187255859375 0.0 0.0 0.0 473 -474 0.00172281265258789 0.0 0.0 0.0 474 -475 0.00175905227661133 0.0 0.0 0.0 475 -476 0.00175714492797852 0.0 0.0 0.0 476 -477 0.00174093246459961 0.0 0.0 0.0 477 -478 0.00176501274108887 0.00999999999999801 0.00999999999999801 0.0 478 -479 0.00173497200012207 0.0 0.0 0.0 479 -480 0.00174593925476074 0.0 0.0 0.0 480 -481 0.00177001953125 0.0 0.0 0.0 481 -482 0.00177097320556641 0.0 0.0 0.0 482 -483 0.0255038738250732 0.0300000000000011 0.0300000000000011 0.0 483 -484 0.00180983543395996 0.0 0.0 0.0 484 -485 0.00182580947875977 0.0 0.0 0.0 485 -486 0.00181293487548828 0.0 0.0 0.0 486 -487 0.00178980827331543 0.00999999999999801 0.00999999999999801 0.0 487 -488 0.00177001953125 0.0 0.0 0.0 488 -489 0.00174784660339355 0.0 0.0 0.0 489 -490 0.00177311897277832 0.0 0.0 0.0 490 -491 0.00178694725036621 0.0 0.0 0.0 491 -492 0.00176596641540527 0.0100000000000016 0.0100000000000016 0.0 492 -493 0.00175786018371582 0.0 0.0 0.0 493 -494 0.00176286697387695 0.0 0.0 0.0 494 -495 0.00174117088317871 0.0 0.0 0.0 495 -496 0.0017540454864502 0.0 0.0 0.0 496 -497 0.00176811218261719 0.0 0.0 0.0 497 -498 0.00176405906677246 0.0100000000000016 0.0100000000000016 0.0 498 -499 0.00175595283508301 0.0 0.0 0.0 499 -500 0.00183701515197754 0.0 0.0 0.0 500 -501 0.00176692008972168 0.0 0.0 0.0 501 -502 0.00178289413452148 0.0 0.0 0.0 502 -503 0.00176692008972168 0.00999999999999801 0.00999999999999801 0.0 503 -504 0.00175595283508301 0.0 0.0 0.0 504 -505 0.00173616409301758 0.0 0.0 0.0 505 -506 0.00208091735839844 0.0 0.0 0.0 506 -507 0.00292181968688965 0.0 0.0 0.0 507 -508 0.00174379348754883 0.0 0.0 0.0 508 -509 0.00174093246459961 0.0100000000000016 0.0100000000000016 0.0 509 -510 0.00175595283508301 0.0 0.0 0.0 510 -511 0.00174808502197266 0.0 0.0 0.0 511 -512 0.00172805786132812 0.0 0.0 0.0 512 -513 0.00174903869628906 0.0 0.0 0.0 513 -514 0.00177097320556641 0.00999999999999801 0.00999999999999801 0.0 514 -515 0.0017540454864502 0.0 0.0 0.0 515 -516 0.00173282623291016 0.0 0.0 0.0 516 -517 0.00174498558044434 0.0 0.0 0.0 517 -518 0.00174188613891602 0.0 0.0 0.0 518 -519 0.00176811218261719 0.0 0.0 0.0 519 -520 0.00173711776733398 0.0100000000000016 0.0100000000000016 0.0 520 -521 0.00175690650939941 0.0 0.0 0.0 521 -522 0.00173592567443848 0.0 0.0 0.0 522 -523 0.0017390251159668 0.0 0.0 0.0 523 -524 0.00174903869628906 0.0 0.0 0.0 524 -525 0.00175881385803223 0.00999999999999801 0.00999999999999801 0.0 525 -526 0.00173497200012207 0.0 0.0 0.0 526 -527 0.00173616409301758 0.0 0.0 0.0 527 -528 0.00175189971923828 0.0 0.0 0.0 528 -529 0.00174403190612793 0.0 0.0 0.0 529 -530 0.00174903869628906 0.0 0.0 0.0 530 -531 0.00175595283508301 0.0100000000000016 0.0100000000000016 0.0 531 -532 0.00174307823181152 0.0 0.0 0.0 532 -533 0.00174999237060547 0.0 0.0 0.0 533 -534 0.00178980827331543 0.0 0.0 0.0 534 -535 0.00175809860229492 0.0 0.0 0.0 535 -536 0.025597095489502 0.0300000000000011 0.0300000000000011 0.0 536 -537 0.00178790092468262 0.0 0.0 0.0 537 -538 0.00197505950927734 0.0 0.0 0.0 538 -539 0.00181388854980469 0.0 0.0 0.0 539 -540 0.00177693367004395 0.00999999999999801 0.00999999999999801 0.0 540 -541 0.00177311897277832 0.0 0.0 0.0 541 -542 0.00185203552246094 0.0 0.0 0.0 542 -543 0.00176501274108887 0.0 0.0 0.0 543 -544 0.00176501274108887 0.0 0.0 0.0 544 -545 0.00176405906677246 0.0100000000000016 0.0100000000000016 0.0 545 -546 0.00176405906677246 0.0 0.0 0.0 546 -547 0.00174093246459961 0.0 0.0 0.0 547 -548 0.00175905227661133 0.0 0.0 0.0 548 -549 0.00177407264709473 0.0 0.0 0.0 549 -550 0.00176215171813965 0.0 0.0 0.0 550 -551 0.00174903869628906 0.00999999999999801 0.00999999999999801 0.0 551 -552 0.00175595283508301 0.0 0.0 0.0 552 -553 0.00174593925476074 0.0 0.0 0.0 553 -554 0.00176787376403809 0.0 0.0 0.0 554 -555 0.00176000595092773 0.0 0.0 0.0 555 -556 0.00175380706787109 0.0100000000000016 0.0100000000000016 0.0 556 -557 0.00174593925476074 0.0 0.0 0.0 557 -558 0.00173807144165039 0.0 0.0 0.0 558 -559 0.00180602073669434 0.0 0.0 0.0 559 -560 0.00174808502197266 0.0 0.0 0.0 560 -561 0.00174093246459961 0.0 0.0 0.0 561 -562 0.00177311897277832 0.00999999999999801 0.00999999999999801 0.0 562 -563 0.00174212455749512 0.0 0.0 0.0 563 -564 0.00174498558044434 0.0 0.0 0.0 564 -565 0.00191402435302734 0.0 0.0 0.0 565 -566 0.00347208976745605 0.0100000000000016 0.0100000000000016 0.0 566 -567 0.00344085693359375 0.0 0.0 0.0 567 -568 0.00338578224182129 0.0 0.0 0.0 568 -569 0.00339102745056152 0.0100000000000016 0.0100000000000016 0.0 569 -570 0.00190401077270508 0.0 0.0 0.0 570 -571 0.00175905227661133 0.0 0.0 0.0 571 -572 0.00177097320556641 0.0 0.0 0.0 572 -573 0.00176215171813965 0.0 0.0 0.0 573 -574 0.0017249584197998 0.0 0.0 0.0 574 -575 0.00174903869628906 0.00999999999999801 0.00999999999999801 0.0 575 -576 0.00174593925476074 0.0 0.0 0.0 576 -577 0.0017399787902832 0.0 0.0 0.0 577 -578 0.00174498558044434 0.0 0.0 0.0 578 -579 0.00174689292907715 0.0 0.0 0.0 579 -580 0.00175118446350098 0.0100000000000016 0.0100000000000016 0.0 580 -581 0.00174307823181152 0.0 0.0 0.0 581 -582 0.00175380706787109 0.0 0.0 0.0 582 -583 0.00175690650939941 0.0 0.0 0.0 583 -584 0.00174403190612793 0.0 0.0 0.0 584 -585 0.00174903869628906 0.0 0.0 0.0 585 -586 0.00176000595092773 0.00999999999999801 0.00999999999999801 0.0 586 -587 0.00176596641540527 0.0 0.0 0.0 587 -588 0.00175595283508301 0.0 0.0 0.0 588 -589 0.0243070125579834 0.0199999999999996 0.0199999999999996 0.0 589 -590 0.00179505348205566 0.0100000000000016 0.0100000000000016 0.0 590 -591 0.00179696083068848 0.0 0.0 0.0 591 -592 0.0018000602722168 0.0 0.0 0.0 592 -593 0.00178909301757812 0.0 0.0 0.0 593 -594 0.00181698799133301 0.0 0.0 0.0 594 -595 0.00178003311157227 0.00999999999999801 0.00999999999999801 0.0 595 -596 0.00175619125366211 0.0 0.0 0.0 596 -597 0.0017540454864502 0.0 0.0 0.0 597 -598 0.00177407264709473 0.0 0.0 0.0 598 -599 0.00177502632141113 0.0 0.0 0.0 599 -600 0.00176692008972168 0.0 0.0 0.0 600 -601 0.00175690650939941 0.0100000000000016 0.0100000000000016 0.0 601 -602 0.00173401832580566 0.0 0.0 0.0 602 -603 0.00175213813781738 0.0 0.0 0.0 603 -604 0.00176692008972168 0.0 0.0 0.0 604 -605 0.00175189971923828 0.0 0.0 0.0 605 -606 0.00176692008972168 0.0100000000000016 0.0100000000000016 0.0 606 -607 0.00175595283508301 0.0 0.0 0.0 607 -608 0.00176811218261719 0.0 0.0 0.0 608 -609 0.00176787376403809 0.0 0.0 0.0 609 -610 0.00177121162414551 0.0 0.0 0.0 610 -611 0.00175094604492188 0.0 0.0 0.0 611 -612 0.00174713134765625 0.00999999999999801 0.00999999999999801 0.0 612 -613 0.00174403190612793 0.0 0.0 0.0 613 -614 0.00173211097717285 0.0 0.0 0.0 614 -615 0.0017859935760498 0.0 0.0 0.0 615 -616 0.00175309181213379 0.0 0.0 0.0 616 -617 0.00174784660339355 0.0 0.0 0.0 617 -618 0.00174903869628906 0.0 0.0 0.0 618 -619 0.00175714492797852 0.0 0.0 0.0 619 -620 0.0022280216217041 0.0 0.0 0.0 620 -621 0.00176501274108887 0.0 0.0 0.0 621 -622 0.00176191329956055 0.0 0.0 0.0 622 -623 0.00185799598693848 0.00999999999999801 0.00999999999999801 0.0 623 -624 0.00174689292907715 0.0 0.0 0.0 624 -625 0.00174689292907715 0.0 0.0 0.0 625 -626 0.0017249584197998 0.0 0.0 0.0 626 -627 0.00173401832580566 0.0 0.0 0.0 627 -628 0.00175118446350098 0.0100000000000016 0.0100000000000016 0.0 628 -629 0.00173401832580566 0.0 0.0 0.0 629 -630 0.00174593925476074 0.0 0.0 0.0 630 -631 0.00174593925476074 0.0 0.0 0.0 631 -632 0.00174689292907715 0.0 0.0 0.0 632 -633 0.00175905227661133 0.0 0.0 0.0 633 -634 0.00177001953125 0.00999999999999801 0.00999999999999801 0.0 634 -635 0.00174403190612793 0.0 0.0 0.0 635 -636 0.00185108184814453 0.0 0.0 0.0 636 -637 0.00174403190612793 0.0 0.0 0.0 637 -638 0.00175023078918457 0.0 0.0 0.0 638 -639 0.00177407264709473 0.0100000000000016 0.0100000000000016 0.0 639 -640 0.00174403190612793 0.0 0.0 0.0 640 -641 0.00175714492797852 0.0 0.0 0.0 641 -642 0.0244560241699219 0.0199999999999996 0.0199999999999996 0.0 642 -643 0.00182914733886719 0.0100000000000016 0.0100000000000016 0.0 643 -644 0.00178813934326172 0.0 0.0 0.0 644 -645 0.00177693367004395 0.0 0.0 0.0 645 -646 0.00177192687988281 0.0 0.0 0.0 646 -647 0.00177478790283203 0.0 0.0 0.0 647 -648 0.00176906585693359 0.0 0.0 0.0 648 -649 0.00176787376403809 0.00999999999999801 0.00999999999999801 0.0 649 -650 0.00174212455749512 0.0 0.0 0.0 650 -651 0.00175595283508301 0.0 0.0 0.0 651 -652 0.00176286697387695 0.0 0.0 0.0 652 -653 0.00176095962524414 0.0 0.0 0.0 653 -654 0.00177597999572754 0.0100000000000016 0.0100000000000016 0.0 654 -655 0.00177288055419922 0.0 0.0 0.0 655 -656 0.00175118446350098 0.0 0.0 0.0 656 -657 0.00175309181213379 0.0 0.0 0.0 657 -658 0.0017540454864502 0.0 0.0 0.0 658 -659 0.0017549991607666 0.0 0.0 0.0 659 -660 0.00176215171813965 0.00999999999999801 0.00999999999999801 0.0 660 -661 0.00176692008972168 0.0 0.0 0.0 661 -662 0.00175619125366211 0.0 0.0 0.0 662 -663 0.00177288055419922 0.0 0.0 0.0 663 -664 0.00176310539245605 0.0 0.0 0.0 664 -665 0.00175189971923828 0.0 0.0 0.0 665 -666 0.00175094604492188 0.0100000000000016 0.0100000000000016 0.0 666 -667 0.00175189971923828 0.0 0.0 0.0 667 -668 0.00175905227661133 0.0 0.0 0.0 668 -669 0.00175690650939941 0.0 0.0 0.0 669 -670 0.00174903869628906 0.0 0.0 0.0 670 -671 0.00176382064819336 0.00999999999999801 0.00999999999999801 0.0 671 -672 0.00174307823181152 0.0 0.0 0.0 672 -673 0.00174117088317871 0.0 0.0 0.0 673 -674 0.00176906585693359 0.0 0.0 0.0 674 -675 0.00325989723205566 0.0 0.0 0.0 675 -676 0.00345802307128906 0.0100000000000016 0.0100000000000016 0.0 676 -677 0.0026400089263916 0.0 0.0 0.0 677 -678 0.00176692008972168 0.0 0.0 0.0 678 -679 0.00268101692199707 0.0100000000000016 0.0100000000000016 0.0 679 -680 0.00180482864379883 0.0 0.0 0.0 680 -681 0.00174808502197266 0.0 0.0 0.0 681 -682 0.00174283981323242 0.0 0.0 0.0 682 -683 0.00176095962524414 0.0 0.0 0.0 683 -684 0.00176095962524414 0.0 0.0 0.0 684 -685 0.00175595283508301 0.00999999999999801 0.00999999999999801 0.0 685 -686 0.00175094604492188 0.0 0.0 0.0 686 -687 0.00176477432250977 0.0 0.0 0.0 687 -688 0.00176000595092773 0.0 0.0 0.0 688 -689 0.00176906585693359 0.0 0.0 0.0 689 -690 0.00177502632141113 0.0100000000000016 0.0100000000000016 0.0 690 -691 0.00174808502197266 0.0 0.0 0.0 691 -692 0.00178909301757812 0.0 0.0 0.0 692 -693 0.00177693367004395 0.0 0.0 0.0 693 -694 0.0252690315246582 0.0299999999999976 0.0299999999999976 0.0 694 -695 0.00181198120117188 0.0 0.0 0.0 695 -696 0.00185799598693848 0.0 0.0 0.0 696 -697 0.00180315971374512 0.0 0.0 0.0 697 -698 0.00178194046020508 0.0 0.0 0.0 698 -699 0.00178718566894531 0.0100000000000016 0.0100000000000016 0.0 699 -700 0.00174593925476074 0.0 0.0 0.0 700 -701 0.00177192687988281 0.0 0.0 0.0 701 -702 0.00177216529846191 0.0 0.0 0.0 702 -703 0.00174808502197266 0.0 0.0 0.0 703 -704 0.00176882743835449 0.0 0.0 0.0 704 -705 0.0017540454864502 0.00999999999999801 0.00999999999999801 0.0 705 -706 0.00174403190612793 0.0 0.0 0.0 706 -707 0.00177288055419922 0.0 0.0 0.0 707 -708 0.00177001953125 0.0 0.0 0.0 708 -709 0.00176310539245605 0.0 0.0 0.0 709 -710 0.00175690650939941 0.0 0.0 0.0 710 -711 0.00179791450500488 0.0100000000000016 0.0100000000000016 0.0 711 -712 0.00183296203613281 0.0 0.0 0.0 712 -713 0.00177001953125 0.0 0.0 0.0 713 -714 0.00175595283508301 0.0 0.0 0.0 714 -715 0.00175189971923828 0.0 0.0 0.0 715 -716 0.00174713134765625 0.0 0.0 0.0 716 -717 0.00175809860229492 0.0100000000000016 0.0100000000000016 0.0 717 -718 0.00182104110717773 0.0 0.0 0.0 718 -719 0.0017399787902832 0.0 0.0 0.0 719 -720 0.00173497200012207 0.0 0.0 0.0 720 -721 0.00173783302307129 0.0 0.0 0.0 721 -722 0.0017399787902832 0.00999999999999801 0.00999999999999801 0.0 722 -723 0.00175285339355469 0.0 0.0 0.0 723 -724 0.00173282623291016 0.0 0.0 0.0 724 -725 0.00175213813781738 0.0 0.0 0.0 725 -726 0.00174498558044434 0.0 0.0 0.0 726 -727 0.00174093246459961 0.0 0.0 0.0 727 -728 0.00177121162414551 0.0100000000000016 0.0100000000000016 0.0 728 -729 0.00174903869628906 0.0 0.0 0.0 729 -730 0.00175690650939941 0.0 0.0 0.0 730 -731 0.00173711776733398 0.0 0.0 0.0 731 -732 0.0017399787902832 0.0 0.0 0.0 732 -733 0.00176596641540527 0.00999999999999801 0.00999999999999801 0.0 733 -734 0.00175619125366211 0.0 0.0 0.0 734 -735 0.00173687934875488 0.0 0.0 0.0 735 -736 0.00176000595092773 0.0 0.0 0.0 736 -737 0.00175714492797852 0.0 0.0 0.0 737 -738 0.00174689292907715 0.0 0.0 0.0 738 -739 0.00174689292907715 0.0100000000000016 0.0100000000000016 0.0 739 -740 0.00175309181213379 0.0 0.0 0.0 740 -741 0.00175189971923828 0.0 0.0 0.0 741 -742 0.00175881385803223 0.0 0.0 0.0 742 -743 0.00175189971923828 0.0 0.0 0.0 743 -744 0.00178813934326172 0.00999999999999801 0.00999999999999801 0.0 744 -745 0.00172710418701172 0.0 0.0 0.0 745 -746 0.00175690650939941 0.0 0.0 0.0 746 -747 0.0253231525421143 0.0200000000000031 0.0200000000000031 0.0 747 -748 0.00182986259460449 0.00999999999999801 0.00999999999999801 0.0 748 -749 0.00179004669189453 0.0 0.0 0.0 749 -750 0.00179314613342285 0.0 0.0 0.0 750 -751 0.00178098678588867 0.0 0.0 0.0 751 -752 0.00178003311157227 0.0 0.0 0.0 752 -753 0.00176811218261719 0.0100000000000016 0.0100000000000016 0.0 753 -754 0.00174283981323242 0.0 0.0 0.0 754 -755 0.00176811218261719 0.0 0.0 0.0 755 -756 0.00175881385803223 0.0 0.0 0.0 756 -757 0.00174784660339355 0.0 0.0 0.0 757 -758 0.00175905227661133 0.0 0.0 0.0 758 -759 0.00177812576293945 0.00999999999999801 0.00999999999999801 0.0 759 -760 0.00174689292907715 0.0 0.0 0.0 760 -761 0.00183987617492676 0.0 0.0 0.0 761 -762 0.0017549991607666 0.0 0.0 0.0 762 -763 0.00175786018371582 0.0 0.0 0.0 763 -764 0.00175380706787109 0.0100000000000016 0.0100000000000016 0.0 764 -765 0.00176501274108887 0.0 0.0 0.0 765 -766 0.00175690650939941 0.0 0.0 0.0 766 -767 0.00174498558044434 0.0 0.0 0.0 767 -768 0.0017549991607666 0.0 0.0 0.0 768 -769 0.00175714492797852 0.0 0.0 0.0 769 -770 0.00176405906677246 0.00999999999999801 0.00999999999999801 0.0 770 -771 0.00174999237060547 0.0 0.0 0.0 771 -772 0.00174689292907715 0.0 0.0 0.0 772 -773 0.00174999237060547 0.0 0.0 0.0 773 -774 0.0017387866973877 0.0 0.0 0.0 774 -775 0.00175309181213379 0.0 0.0 0.0 775 -776 0.0017399787902832 0.0100000000000016 0.0100000000000016 0.0 776 -777 0.00179791450500488 0.0 0.0 0.0 777 -778 0.00174188613891602 0.0 0.0 0.0 778 -779 0.00172996520996094 0.0 0.0 0.0 779 -780 0.00173211097717285 0.0 0.0 0.0 780 -781 0.00176191329956055 0.00999999999999801 0.00999999999999801 0.0 781 -782 0.00174999237060547 0.0 0.0 0.0 782 -783 0.00173711776733398 0.0 0.0 0.0 783 -784 0.00174212455749512 0.0 0.0 0.0 784 -785 0.00317001342773438 0.0 0.0 0.0 785 -786 0.00347280502319336 0.0100000000000016 0.0100000000000016 0.0 786 -787 0.00329899787902832 0.0 0.0 0.0 787 -788 0.00238609313964844 0.0 0.0 0.0 788 -789 0.00221085548400879 0.0100000000000016 0.0100000000000016 0.0 789 -790 0.00175285339355469 0.0 0.0 0.0 790 -791 0.00175309181213379 0.0 0.0 0.0 791 -792 0.00172901153564453 0.0 0.0 0.0 792 -793 0.00179696083068848 0.0 0.0 0.0 793 -794 0.00175285339355469 0.0 0.0 0.0 794 -795 0.00173783302307129 0.00999999999999801 0.00999999999999801 0.0 795 -796 0.00177001953125 0.0 0.0 0.0 796 -797 0.00176811218261719 0.0 0.0 0.0 797 -798 0.00175595283508301 0.0 0.0 0.0 798 -799 0.0301520824432373 0.0300000000000011 0.0300000000000011 0.0 799 -800 0.00359296798706055 0.00999999999999801 0.00999999999999801 0.0 800 -801 0.00265407562255859 0.0 0.0 0.0 801 -802 0.00182509422302246 0.0 0.0 0.0 802 -803 0.00179409980773926 0.0 0.0 0.0 803 -804 0.00177407264709473 0.0 0.0 0.0 804 -805 0.00176787376403809 0.0100000000000016 0.0100000000000016 0.0 805 -806 0.00177907943725586 0.0 0.0 0.0 806 -807 0.00176310539245605 0.0 0.0 0.0 807 -808 0.00176811218261719 0.0 0.0 0.0 808 -809 0.00174808502197266 0.0 0.0 0.0 809 -810 0.00175714492797852 0.00999999999999801 0.00999999999999801 0.0 810 -811 0.00174784660339355 0.0 0.0 0.0 811 -812 0.00178885459899902 0.0 0.0 0.0 812 -813 0.00174999237060547 0.0 0.0 0.0 813 -814 0.00176811218261719 0.0 0.0 0.0 814 -815 0.00174999237060547 0.0 0.0 0.0 815 -816 0.00175595283508301 0.0100000000000016 0.0100000000000016 0.0 816 -817 0.00176000595092773 0.0 0.0 0.0 817 -818 0.00177288055419922 0.0 0.0 0.0 818 -819 0.00176095962524414 0.0 0.0 0.0 819 -820 0.0017390251159668 0.0 0.0 0.0 820 -821 0.00179696083068848 0.0 0.0 0.0 821 -822 0.00174283981323242 0.0100000000000016 0.0100000000000016 0.0 822 -823 0.00174713134765625 0.0 0.0 0.0 823 -824 0.00175189971923828 0.0 0.0 0.0 824 -825 0.00175094604492188 0.0 0.0 0.0 825 -826 0.00173616409301758 0.0 0.0 0.0 826 -827 0.00174093246459961 0.00999999999999801 0.00999999999999801 0.0 827 -828 0.00174617767333984 0.0 0.0 0.0 828 -829 0.00174188613891602 0.0 0.0 0.0 829 -830 0.00173592567443848 0.0 0.0 0.0 830 -831 0.0017240047454834 0.0 0.0 0.0 831 -832 0.00176095962524414 0.0 0.0 0.0 832 -833 0.00174713134765625 0.0100000000000016 0.0100000000000016 0.0 833 -834 0.00175094604492188 0.0 0.0 0.0 834 -835 0.00173807144165039 0.0 0.0 0.0 835 -836 0.00176715850830078 0.0 0.0 0.0 836 -837 0.00174093246459961 0.0 0.0 0.0 837 -838 0.00176000595092773 0.00999999999999801 0.00999999999999801 0.0 838 -839 0.00174498558044434 0.0 0.0 0.0 839 -840 0.00174689292907715 0.0 0.0 0.0 840 -841 0.00177502632141113 0.0 0.0 0.0 841 -842 0.00175309181213379 0.0 0.0 0.0 842 -843 0.00175213813781738 0.0 0.0 0.0 843 -844 0.00175905227661133 0.0100000000000016 0.0100000000000016 0.0 844 -845 0.0017249584197998 0.0 0.0 0.0 845 -846 0.00174999237060547 0.0 0.0 0.0 846 -847 0.00175309181213379 0.0 0.0 0.0 847 -848 0.00177311897277832 0.0 0.0 0.0 848 -849 0.00175309181213379 0.00999999999999801 0.00999999999999801 0.0 849 -850 0.00175595283508301 0.0 0.0 0.0 850 -851 0.0253610610961914 0.0200000000000031 0.0200000000000031 0.0 851 -852 0.0018308162689209 0.0 0.0 0.0 852 -853 0.00182509422302246 0.00999999999999801 0.00999999999999801 0.0 853 -854 0.00179100036621094 0.0 0.0 0.0 854 -855 0.0018000602722168 0.0 0.0 0.0 855 -856 0.00175809860229492 0.0 0.0 0.0 856 -857 0.00182390213012695 0.0 0.0 0.0 857 -858 0.00175285339355469 0.0100000000000016 0.0100000000000016 0.0 858 -859 0.00172996520996094 0.0 0.0 0.0 859 -860 0.00173521041870117 0.0 0.0 0.0 860 -861 0.00176787376403809 0.0 0.0 0.0 861 -862 0.00175380706787109 0.0 0.0 0.0 862 -863 0.00174999237060547 0.0 0.0 0.0 863 -864 0.00177502632141113 0.00999999999999801 0.00999999999999801 0.0 864 -865 0.0017549991607666 0.0 0.0 0.0 865 -866 0.00175905227661133 0.0 0.0 0.0 866 -867 0.00177693367004395 0.0 0.0 0.0 867 -868 0.00178217887878418 0.0 0.0 0.0 868 -869 0.00177478790283203 0.0100000000000016 0.0100000000000016 0.0 869 -870 0.00176405906677246 0.0 0.0 0.0 870 -871 0.00176191329956055 0.0 0.0 0.0 871 -872 0.00175213813781738 0.0 0.0 0.0 872 -873 0.00175690650939941 0.0 0.0 0.0 873 -874 0.00174093246459961 0.0 0.0 0.0 874 -875 0.0017399787902832 0.00999999999999801 0.00999999999999801 0.0 875 -876 0.00173616409301758 0.0 0.0 0.0 876 -877 0.00174808502197266 0.0 0.0 0.0 877 -878 0.0017390251159668 0.0 0.0 0.0 878 -879 0.00174403190612793 0.0 0.0 0.0 879 -880 0.00173091888427734 0.0 0.0 0.0 880 -881 0.00175786018371582 0.0100000000000016 0.0100000000000016 0.0 881 -882 0.00173306465148926 0.0 0.0 0.0 882 -883 0.0017399787902832 0.0 0.0 0.0 883 -884 0.00173783302307129 0.0 0.0 0.0 884 -885 0.00172281265258789 0.0 0.0 0.0 885 -886 0.00175690650939941 0.0 0.0 0.0 886 -887 0.00173497200012207 0.00999999999999801 0.00999999999999801 0.0 887 -888 0.00175094604492188 0.0 0.0 0.0 888 -889 0.00172090530395508 0.0 0.0 0.0 889 -890 0.00198698043823242 0.0 0.0 0.0 890 -891 0.00344991683959961 0.0100000000000016 0.0100000000000016 0.0 891 -892 0.00345301628112793 0.0 0.0 0.0 892 -893 0.00206422805786133 0.0 0.0 0.0 893 -894 0.00191783905029297 0.0 0.0 0.0 894 -895 0.00174188613891602 0.0 0.0 0.0 895 -896 0.00173401832580566 0.0100000000000016 0.0100000000000016 0.0 896 -897 0.00175094604492188 0.0 0.0 0.0 897 -898 0.00176310539245605 0.0 0.0 0.0 898 -899 0.00176095962524414 0.0 0.0 0.0 899 -900 0.00181198120117188 0.0 0.0 0.0 900 -901 0.00175094604492188 0.00999999999999801 0.00999999999999801 0.0 901 -902 0.00177597999572754 0.0 0.0 0.0 902 -903 0.0245981216430664 0.0199999999999996 0.0199999999999996 0.0 903 -904 0.00182318687438965 0.0 0.0 0.0 904 -905 0.00179600715637207 0.0100000000000016 0.0100000000000016 0.0 905 -906 0.00179409980773926 0.0 0.0 0.0 906 -907 0.00178408622741699 0.0 0.0 0.0 907 -908 0.00177407264709473 0.0 0.0 0.0 908 -909 0.00176501274108887 0.0 0.0 0.0 909 -910 0.00176596641540527 0.0 0.0 0.0 910 -911 0.00175595283508301 0.00999999999999801 0.00999999999999801 0.0 911 -912 0.00176596641540527 0.0 0.0 0.0 912 -913 0.00176501274108887 0.0 0.0 0.0 913 -914 0.00175809860229492 0.0 0.0 0.0 914 -915 0.00176405906677246 0.0 0.0 0.0 915 -916 0.00176191329956055 0.0100000000000016 0.0100000000000016 0.0 916 -917 0.00175619125366211 0.0 0.0 0.0 917 -918 0.00175690650939941 0.0 0.0 0.0 918 -919 0.00175189971923828 0.0 0.0 0.0 919 -920 0.0017540454864502 0.0 0.0 0.0 920 -921 0.0017540454864502 0.0 0.0 0.0 921 -922 0.00176119804382324 0.00999999999999801 0.00999999999999801 0.0 922 -923 0.00176095962524414 0.0 0.0 0.0 923 -924 0.00176215171813965 0.0 0.0 0.0 924 -925 0.00173592567443848 0.0 0.0 0.0 925 -926 0.00174307823181152 0.0 0.0 0.0 926 -927 0.00173401832580566 0.0100000000000016 0.0100000000000016 0.0 927 -928 0.00174999237060547 0.0 0.0 0.0 928 -929 0.0017399787902832 0.0 0.0 0.0 929 -930 0.0017399787902832 0.0 0.0 0.0 930 -931 0.00177502632141113 0.0 0.0 0.0 931 -932 0.00175309181213379 0.0 0.0 0.0 932 -933 0.00174713134765625 0.0100000000000016 0.0100000000000016 0.0 933 -934 0.00172519683837891 0.0 0.0 0.0 934 -935 0.00182008743286133 0.0 0.0 0.0 935 -936 0.00175094604492188 0.0 0.0 0.0 936 -937 0.00175213813781738 0.0 0.0 0.0 937 -938 0.0017549991607666 0.00999999999999801 0.00999999999999801 0.0 938 -939 0.00175881385803223 0.0 0.0 0.0 939 -940 0.00176215171813965 0.0 0.0 0.0 940 -941 0.00270485877990723 0.0 0.0 0.0 941 -942 0.00175213813781738 0.0 0.0 0.0 942 -943 0.0017399787902832 0.0100000000000016 0.0100000000000016 0.0 943 -944 0.00174307823181152 0.0 0.0 0.0 944 -945 0.00173497200012207 0.0 0.0 0.0 945 -946 0.00174999237060547 0.0 0.0 0.0 946 -947 0.00175690650939941 0.0 0.0 0.0 947 -948 0.00176095962524414 0.0 0.0 0.0 948 -949 0.00173807144165039 0.00999999999999801 0.00999999999999801 0.0 949 -950 0.00175690650939941 0.0 0.0 0.0 950 -951 0.0017390251159668 0.0 0.0 0.0 951 -952 0.00178313255310059 0.0 0.0 0.0 952 -953 0.00176692008972168 0.0 0.0 0.0 953 -954 0.00176501274108887 0.0 0.0 0.0 954 -955 0.0254151821136475 0.0199999999999996 0.0199999999999996 0.0 955 -956 0.0018460750579834 0.0 0.0 0.0 956 -957 0.00177717208862305 0.0 0.0 0.0 957 -958 0.00177192687988281 0.0100000000000016 0.0100000000000016 0.0 958 -959 0.00177407264709473 0.0 0.0 0.0 959 -960 0.00177311897277832 0.0 0.0 0.0 960 -961 0.00176906585693359 0.0 0.0 0.0 961 -962 0.00176501274108887 0.0 0.0 0.0 962 -963 0.00174212455749512 0.00999999999999801 0.00999999999999801 0.0 963 -964 0.00176310539245605 0.0 0.0 0.0 964 -965 0.00176095962524414 0.0 0.0 0.0 965 -966 0.00175905227661133 0.0 0.0 0.0 966 -967 0.00174999237060547 0.0 0.0 0.0 967 -968 0.00176811218261719 0.0 0.0 0.0 968 -969 0.00175189971923828 0.0100000000000016 0.0100000000000016 0.0 969 -970 0.00194287300109863 0.0 0.0 0.0 970 -971 0.0017540454864502 0.0 0.0 0.0 971 -972 0.0019228458404541 0.0 0.0 0.0 972 -973 0.00176405906677246 0.0 0.0 0.0 973 -974 0.0017549991607666 0.00999999999999801 0.00999999999999801 0.0 974 -975 0.00176310539245605 0.0 0.0 0.0 975 -976 0.00173807144165039 0.0 0.0 0.0 976 -977 0.00182604789733887 0.0 0.0 0.0 977 -978 0.0017399787902832 0.0 0.0 0.0 978 -979 0.0017540454864502 0.0 0.0 0.0 979 -980 0.0017697811126709 0.0100000000000016 0.0100000000000016 0.0 980 -981 0.0017390251159668 0.0 0.0 0.0 981 -982 0.00175285339355469 0.0 0.0 0.0 982 -983 0.00174880027770996 0.0 0.0 0.0 983 -984 0.00176095962524414 0.0 0.0 0.0 984 -985 0.00176501274108887 0.00999999999999801 0.00999999999999801 0.0 985 -986 0.00175094604492188 0.0 0.0 0.0 986 -987 0.0017390251159668 0.0 0.0 0.0 987 -988 0.00174808502197266 0.0 0.0 0.0 988 -989 0.0017540454864502 0.0 0.0 0.0 989 -990 0.00174307823181152 0.0 0.0 0.0 990 -991 0.00172710418701172 0.0100000000000016 0.0100000000000016 0.0 991 -992 0.00177597999572754 0.0 0.0 0.0 992 -993 0.00174903869628906 0.0 0.0 0.0 993 -994 0.0017402172088623 0.0 0.0 0.0 994 -995 0.00173187255859375 0.0 0.0 0.0 995 -996 0.00175690650939941 0.0 0.0 0.0 996 -997 0.00175213813781738 0.00999999999999801 0.00999999999999801 0.0 997 -998 0.0017549991607666 0.0 0.0 0.0 998 -999 0.00175094604492188 0.0 0.0 0.0 999 -1000 0.00175905227661133 0.0 0.0 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log deleted file mode 100644 index 47b0c7fa..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkExt.log +++ /dev/null @@ -1,261 +0,0 @@ -========================== 2009-04-01T16:53:42 CEST =========================== -Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux]. -Running 'GeneratorBenchmarkExt' for 1000 iterations/method (compare_time=real) -=============================================================================== - -This first run is only for warmup. -GeneratorBenchmarkExt#generator_fast: - real total user system -sum 1.818191528 1.840000000 1.830000000 0.010000000 -min 0.001368999 0.000000000 0.000000000 0.000000000 -std- -0.000870656 -0.002702580 -0.002705600 -0.000306228 -mean 0.001818192 0.001840000 0.001830000 0.000010000 -std+ 0.004507039 0.006382580 0.006365600 0.000326228 -max 0.026389122 0.030000000 0.030000000 0.010000000 -std 0.002688848 0.004542580 0.004535600 0.000316228 -std% 147.885830391 246.879359662 247.847020509 3162.277660168 -harm 0.001475231 nan nan nan -geo 0.001529059 0.000000000 0.000000000 0.000000000 -q1 0.001397133 0.000000000 0.000000000 0.000000000 -med 0.001406908 0.000000000 0.000000000 0.000000000 -q3 0.001425028 0.000000000 0.000000000 0.000000000 - 1000 549.99706 0.001818192 - calls calls/sec secs/call - - 0.02514 -| - 0.02264 -|* - 0.02013 -| - 0.01763 -| - 0.01513 -| - 0.01263 -| - 0.01013 -| - 0.00762 -| - 0.00512 -| - 0.00262 -|************************************************** - -Outliers detected with box plot algo (median=0.00141, iqr=0.00003, factor=3.00): -high=63 very_high=132 - -Ljung-Box statistics: q=15.00353 (alpha=0.05, df=50). -0.00000 < 0.95000 => No autocorrelation was detected. - -GeneratorBenchmarkExt#generator_fast: - real total user system -sum 1.826970100 1.830000000 1.820000000 0.010000000 -min 0.001377106 0.000000000 0.000000000 0.000000000 -std- -0.000992693 -0.002749527 -0.002708588 -0.000306228 -mean 0.001826970 0.001830000 0.001820000 0.000010000 -std+ 0.004646633 0.006409527 0.006348588 0.000326228 -max 0.027617931 0.030000000 0.030000000 0.010000000 -std 0.002819663 0.004579527 0.004528588 0.000316228 -std% 154.335471491 250.247404066 248.823509412 3162.277660168 -harm 0.001469225 nan nan nan -geo 0.001522946 0.000000000 0.000000000 0.000000000 -q1 0.001402140 0.000000000 0.000000000 0.000000000 -med 0.001411915 0.000000000 0.000000000 0.000000000 -q3 0.001425982 0.000000000 0.000000000 0.000000000 - 1000 547.35433 0.001826970 - calls calls/sec secs/call - - 0.02631 -| - 0.02368 -|* - 0.02106 -| - 0.01843 -| - 0.01581 -| - 0.01319 -| - 0.01056 -| - 0.00794 -| - 0.00531 -| - 0.00269 -|************************************************** - -Outliers detected with box plot algo (median=0.00141, iqr=0.00002, factor=3.00): -high=84 very_high=91 - -Ljung-Box statistics: q=13.47105 (alpha=0.05, df=50). -0.00000 < 0.95000 => No autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -------------------------------------------------------------------------------- - -This first run is only for warmup. -GeneratorBenchmarkExt#generator_pretty: - real total user system -sum 2.625656843 2.590000000 2.580000000 0.010000000 -min 0.002025127 0.000000000 0.000000000 0.000000000 -std- -0.000656844 -0.002684440 -0.002689855 -0.000306228 -mean 0.002625657 0.002590000 0.002580000 0.000010000 -std+ 0.005908158 0.007864440 0.007849855 0.000326228 -max 0.028638124 0.030000000 0.030000000 0.010000000 -std 0.003282501 0.005274440 0.005269855 0.000316228 -std% 125.016381076 203.646340853 204.257944451 3162.277660168 -harm 0.002154247 nan nan nan -geo 0.002239052 0.000000000 0.000000000 0.000000000 -q1 0.002051830 0.000000000 0.000000000 0.000000000 -med 0.002062082 0.000000000 0.000000000 0.000000000 -q3 0.002082050 0.000000000 0.000000000 0.000000000 - 1000 380.85708 0.002625657 - calls calls/sec secs/call - - 0.02731 -| - 0.02465 -|* - 0.02198 -| - 0.01932 -| - 0.01666 -| - 0.01400 -| - 0.01134 -| - 0.00868 -| - 0.00602 -| - 0.00336 -|************************************************** - -Outliers detected with box plot algo (median=0.00206, iqr=0.00003, factor=3.00): -high=98 very_high=107 - -Ljung-Box statistics: q=349.53704 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -GeneratorBenchmarkExt#generator_pretty: - real total user system -sum 2.399331093 2.360000000 2.360000000 0.000000000 -min 0.002033949 0.000000000 0.000000000 0.000000000 -std- -0.000767217 -0.002736080 -0.002736080 0.000000000 -mean 0.002665923 0.002622222 0.002622222 0.000000000 -std+ 0.006099064 0.007980525 0.007980525 0.000000000 -max 0.029814005 0.030000000 0.030000000 0.000000000 -std 0.003433140 0.005358303 0.005358303 0.000000000 -std% 128.778658745 204.342051806 204.342051806 nan -harm 0.002164550 nan nan nan -geo 0.002253865 0.000000000 0.000000000 0.000000000 -q1 0.002059937 0.000000000 0.000000000 0.000000000 -med 0.002071142 0.000000000 0.000000000 0.000000000 -q3 0.002090931 0.000000000 0.000000000 0.000000000 - 900 375.10455 0.002665923 - calls calls/sec secs/call - - 0.02843 -| - 0.02565 -|* - 0.02287 -| - 0.02009 -| - 0.01731 -| - 0.01453 -| - 0.01176 -| - 0.00898 -| - 0.00620 -| - 0.00342 -|************************************************** - -Outliers detected with box plot algo (median=0.00207, iqr=0.00003, factor=3.00): -high=89 very_high=86 - -Ljung-Box statistics: q=342.52637 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -Truncated initial 100 measurements: 1000 -> 900 (-10.00%). -------------------------------------------------------------------------------- - -This first run is only for warmup. -GeneratorBenchmarkExt#generator_safe: - real total user system -sum 2.218419790 2.210000000 2.210000000 0.000000000 -min 0.001708984 0.000000000 0.000000000 0.000000000 -std- -0.000607850 -0.002484458 -0.002484458 0.000000000 -mean 0.002218420 0.002210000 0.002210000 0.000000000 -std+ 0.005044690 0.006904458 0.006904458 0.000000000 -max 0.026993036 0.030000000 0.030000000 0.000000000 -std 0.002826270 0.004694458 0.004694458 0.000000000 -std% 127.400134370 212.418923782 212.418923782 nan -harm 0.001839661 nan nan nan -geo 0.001909029 0.000000000 0.000000000 0.000000000 -q1 0.001738071 0.000000000 0.000000000 0.000000000 -med 0.001749992 0.000000000 0.000000000 0.000000000 -q3 0.001769066 0.000000000 0.000000000 0.000000000 - 1000 450.77131 0.002218420 - calls calls/sec secs/call - - 0.02573 -| - 0.02320 -| - 0.02067 -| - 0.01814 -| - 0.01562 -| - 0.01309 -| - 0.01056 -| - 0.00803 -| - 0.00550 -| - 0.00297 -|************************************************** - -Outliers detected with box plot algo (median=0.00175, iqr=0.00003, factor=3.00): -high=58 very_high=129 - -Ljung-Box statistics: q=24.03262 (alpha=0.05, df=50). -0.00070 < 0.95000 => No autocorrelation was detected. - -GeneratorBenchmarkExt#generator_safe: - real total user system -sum 2.252413511 2.250000000 2.250000000 0.000000000 -min 0.001720905 0.000000000 0.000000000 0.000000000 -std- -0.000940042 -0.002634809 -0.002634809 0.000000000 -mean 0.002252414 0.002250000 0.002250000 0.000000000 -std+ 0.005444869 0.007134809 0.007134809 0.000000000 -max 0.030152082 0.030000000 0.030000000 0.000000000 -std 0.003192455 0.004884809 0.004884809 0.000000000 -std% 141.734856492 217.102633117 217.102633117 nan -harm 0.001827244 nan nan nan -geo 0.001895755 0.000000000 0.000000000 0.000000000 -q1 0.001747131 0.000000000 0.000000000 0.000000000 -med 0.001757145 0.000000000 0.000000000 0.000000000 -q3 0.001773119 0.000000000 0.000000000 0.000000000 - 1000 443.96821 0.002252414 - calls calls/sec secs/call - - 0.02873 -| - 0.02589 -|* - 0.02304 -| - 0.02020 -| - 0.01736 -| - 0.01451 -| - 0.01167 -| - 0.00883 -| - 0.00599 -| - 0.00314 -|************************************************** - -Outliers detected with box plot algo (median=0.00176, iqr=0.00003, factor=3.00): -high=92 very_high=86 - -Ljung-Box statistics: q=19.23732 (alpha=0.05, df=50). -0.00003 < 0.95000 => No autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -========================== 2009-04-01T16:54:07 CEST =========================== - -Comparing times (call_time_mean): - 1 GeneratorBenchmarkExt#generator_fast 1000 repeats: - 547.354332608 ( real) -> 1.459x - 0.001826970 - 2 GeneratorBenchmarkExt#generator_safe 1000 repeats: - 443.968212317 ( real) -> 1.184x - 0.002252414 - 3 GeneratorBenchmarkExt#generator_pretty 900 repeats: - 375.104545883 ( real) -> 1.000x - 0.002665923 - calls/sec ( time) -> speed covers - secs/call - -Comparing times (call_time_median): - 1 GeneratorBenchmarkExt#generator_fast 1000 repeats: - 708.258020939 ( real) -> 1.467x - 0.001411915 - 2 GeneratorBenchmarkExt#generator_safe 1000 repeats: - 569.105020353 ( real) -> 1.179x - 0.001757145 - 3 GeneratorBenchmarkExt#generator_pretty 900 repeats: - 482.825371244 ( real) -> 1.000x - 0.002071142 - calls/sec ( time) -> speed covers - secs/call -=============================================================================== -Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_fast.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_fast-autocorrelation.dat'. -Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_pretty.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_pretty-autocorrelation.dat'. -Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_safe.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkExt#generator_safe-autocorrelation.dat'. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat deleted file mode 100644 index 39516bce..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.170725652741942 -3 -0.173770301666704 -4 -0.172897166156851 -5 -0.168221269286136 -6 -0.177979259169647 -7 0.175910550703494 -8 0.631061265876843 -9 -0.174719948437131 -10 -0.177293593621048 -11 -0.162698942321747 -12 -0.171029777522503 -13 -0.170296229667321 -14 0.528563135577363 -15 0.275831998572987 -16 -0.174813658667011 -17 -0.172093562954041 -18 -0.168544068156987 -19 -0.166590813818547 -20 -0.0638221070309873 -21 0.650522478992019 -22 0.0331509662336747 -23 -0.168760953941647 -24 -0.16341752594627 -25 -0.170818893187341 -26 -0.164732529292879 -27 0.162214061245849 -28 0.522886471249678 -29 -0.0702164490631389 -30 -0.170342702198113 -31 -0.161403416617991 -32 -0.166099481459981 -33 -0.11599356123736 -34 0.35515929301799 -35 0.320772083044373 -36 -0.117685112181583 -37 -0.169070189028916 -38 -0.159958239256153 -39 -0.159435335479438 -40 0.0319527022003592 -41 0.371475859420178 -42 0.175271663512744 -43 -0.138959890894007 -44 -0.163896984335847 -45 -0.169727435298396 -46 -0.13197665874304 -47 0.187359182943715 -48 0.291819477747683 -49 0.0816643898170594 -50 -0.150240775423654 -51 -0.150195661024305 -52 -0.165928012119222 -53 -0.0320978556096035 -54 0.221655302405546 -55 0.235675757438344 -56 0.0104091592019151 -57 -0.167146434535141 -58 -0.155117513175394 -59 -0.149297587622335 -60 0.0872938227826692 -61 0.203748825546551 -62 0.168550083168428 -63 -0.0396707902562578 -64 -0.158563031820387 -65 -0.159836689037633 -66 -0.0768666234623447 -67 0.148975157851596 -68 0.145123374753783 -69 0.133851392533958 -70 -0.0813691125651875 -71 -0.161000844437348 -72 -0.154719980109192 -73 0.0319631482416382 -74 0.130803526405489 -75 0.134803263091346 -76 0.0725284180216342 -77 -0.105199055037918 -78 -0.156074876537289 -79 -0.107946871185683 -80 0.0836764513383004 -81 0.114802110172454 -82 0.120184125868115 -83 0.0219557508902663 -84 -0.126340081403489 -85 -0.161799956489859 -86 -0.0125672540754974 -87 0.0971048482927368 -88 0.0787545812186751 -89 0.0948238873807684 -90 0.000719292583179628 -91 -0.14238726433046 -92 -0.123547942883664 -93 0.045691368088177 -94 0.0816329437452033 -95 0.0514248553628602 -96 0.079680652824934 -97 -0.0425865734879474 -98 -0.149657706603128 -99 -0.0482568721456359 -100 0.0598246932377812 -101 0.0730073630022969 -102 0.0493194581087269 -103 0.0614638905886062 -104 -0.0747784996077696 -105 -0.134762851026629 -106 0.0150375208487961 -107 0.0471753592749379 -108 0.0292261702954045 -109 0.0584126489508255 -110 0.0274065618881429 -111 -0.0923629805791867 -112 -0.0808051188610178 -113 0.0376068323578018 -114 0.0442243395389739 -115 0.0126091810820727 -116 0.0555017080552345 -117 -0.00777360178104387 -118 -0.0945093162279043 -119 -0.022038518955775 -120 0.0281685224822615 -121 0.0360696788220002 -122 0.00713767841566683 -123 0.0421452289712879 -124 -0.0237791430411877 -125 -0.0742603410791366 -126 0.00647409977150723 -127 0.023633020622411 -128 0.0112812718354579 -129 0.0206308476010651 -130 0.0255893471032846 -131 -0.0412520741546623 -132 -0.0335271150442982 -133 0.0103042519486441 -134 0.0216752613460992 -135 -0.0178133510217017 -136 0.0272498700028734 -137 0.016136487618036 -138 -0.0397127191558659 -139 0.000486023489007977 -140 0.00602879598312952 -141 0.0137117482424303 -142 -0.0239000113030396 -143 0.0256815555012877 -144 -0.00060378060179975 -145 -0.00976477458386044 -146 -0.00471952290156136 -147 0.00287226670988194 -148 -0.00739404113874663 -149 -0.00811924231656889 -150 0.0201609109752059 -151 0.00972768702895235 -152 0.000848772862832347 -153 -0.00315419376588145 -154 0.00325411212387319 -155 -0.0317897669469223 -156 0.00942578451848677 -157 -0.00114487370622857 -158 0.0316193613529631 -159 -0.0029035071383654 -160 -0.00961310004099253 -161 -0.00376402041194372 -162 -0.0304203576913082 -163 0.0040586071587507 -164 0.0181183011617105 -165 0.0289277830257262 -166 -0.00204748582187099 -167 -0.00833532939960483 -168 -0.0179545373314343 -169 -0.0281067596140224 -170 0.00621739022305282 -171 0.020061720611003 -172 0.0441951153685219 -173 -0.016767863675634 -174 -0.00891142478547904 -175 -0.034295757242845 -176 -0.016919846890981 -177 0.00444867679830856 -178 0.057088732705068 -179 0.01772144393744 -180 -0.0115305384915719 -181 -0.0214068916539082 -182 -0.0361142387382199 -183 -0.013268832313842 -184 0.010553526981677 -185 0.0641530212355029 -186 0.00531141736458679 -187 -0.0129434128279975 -188 -0.0288767748585849 -189 -0.0325395473006688 -190 -0.013236712565576 -191 0.0408115115996002 -192 0.0564202212852658 -193 -0.00419580869937261 -194 -0.0240043584548271 -195 -0.0410661026884763 -196 -0.0308430649531645 -197 -0.00193671234656414 -198 0.0574028584211738 -199 0.0464705207875104 -200 0.00131591241415564 -201 -0.0376248928893234 -202 -0.03907610654102 -203 -0.0270477565328025 -204 0.0208038841462715 -205 0.0713903559954449 -206 0.0172971300646441 -207 -0.0158722320069745 -208 -0.0368888763339713 -209 -0.0453718730430625 -210 -0.0217822862730174 -211 0.0539702430257461 -212 0.0523602401531812 -213 0.0209143114178913 -214 -0.0355801431609542 -215 -0.0377942204568278 -216 -0.0425711559012913 -217 -0.00707645512821953 -218 0.0728667936636181 -219 0.0361207184120543 -220 0.0128571335027956 -221 -0.0500603421741668 -222 -0.0391402365626237 -223 -0.0338696993621202 -224 0.0225822360602949 -225 0.0582954334884232 -226 0.0343772287798159 -227 0.000189606884889642 -228 -0.0526391089870516 -229 -0.0433107479511685 -230 -0.0222872074614468 -231 0.0506022312295133 -232 0.0475294709603697 -233 0.033409950599465 -234 -0.0396552908405006 -235 -0.0416731652109144 -236 -0.0376644416284466 -237 -0.0120295884760736 -238 0.0667676774080548 -239 0.0397241548411963 -240 0.0242686882994478 -241 -0.0511926472771689 -242 -0.0406717091383664 -243 -0.0294526606762824 -244 0.0122100601151817 -245 0.0582087173478016 -246 0.0279608706883549 -247 0.00958023333135808 -248 -0.0607734282446654 -249 -0.0326785608605117 -250 -0.0170207233666544 -251 0.0461938078567918 -252 0.0336445218462931 -253 0.0452208779230127 -254 -0.0303944318761255 -255 -0.0494219498376225 -256 -0.0318543144076625 -257 -0.00927701052965794 -258 0.0537742147750351 -259 0.0349392754231259 -260 0.0230828975637977 -261 -0.0377907249695523 -262 -0.0429055961196646 -263 -0.017728080300272 -264 0.000424042692478759 -265 0.0472551057914617 -266 0.0405778077745205 -267 -0.00156836352007451 -268 -0.0419460412931724 -269 -0.0345431630170736 -270 -0.0143420878981143 -271 0.0187023906658354 -272 0.0418900285241672 -273 0.0405074017275708 -274 -0.0190108947516174 -275 -0.0546041853190452 -276 -0.0171268537791246 -277 -0.0128446606789693 -278 0.0395381045567008 -279 0.0310776255240069 -280 0.0407363391562478 -281 -0.033091514570131 -282 -0.0503175108683564 -283 -0.022772349202314 -284 0.00530849685544454 -285 0.0324464330192744 -286 0.0465351961365909 -287 -0.00328476076139341 -288 -0.0300758395541426 -289 -0.0371777756744481 -290 -0.00431509980873169 -291 0.00608435003025785 -292 0.037638330575397 -293 0.0407716145244858 -294 -0.0176308532927816 -295 -0.0455722533058368 -296 -0.0254868606225217 -297 -0.00176448336443634 -298 0.015401834338667 -299 0.0470736363973921 -300 0.0286385461989055 -301 -0.02407787658874 -302 -0.0462179062100874 -303 -0.00954285257082467 -304 0.00223496307580496 -305 0.019441609399508 -306 0.0376394897901893 -307 0.0152437430866642 -308 -0.0312285316173427 -309 -0.0450095093247238 -310 0.00405494429487151 -311 -0.000906366188112425 -312 0.0342390932524035 -313 0.0351096044622525 -314 -0.0067200598875223 -315 -0.0344931951944617 -316 -0.0250051604191116 -317 -0.0079099140627721 -318 0.0136877534761663 -319 0.0470111495216969 -320 0.004066298860697 -321 -0.0106091011767897 -322 -0.035535335618417 -323 -0.00900628798721377 -324 -0.00437923810369414 -325 0.0183021198298254 -326 0.031707051659253 -327 0.0156128127338416 -328 -0.0272783407707802 -329 -0.036001647799748 -330 0.00528671926612521 -331 -0.000290217242915226 -332 0.0353019065669182 -333 0.00464723527656522 -334 0.00460168685380347 -335 -0.0215595994261557 -336 -0.0299493415452654 -337 -0.0034698093249361 -338 0.0165266322772037 -339 0.0315139059204056 -340 0.00362648192318334 -341 -0.00491801854061831 -342 -0.0231228284017189 -343 -0.0113129015126025 -344 -0.00300665710172655 -345 0.0130130997144332 -346 0.0223950145161189 -347 0.00202583064367953 -348 -0.0102668124711821 -349 -0.0253546874115718 -350 0.00644442693633731 -351 0.000780453480952724 -352 0.0284887918984724 -353 -0.00595281685205509 -354 0.0120132555793013 -355 -0.0181922031950026 -356 -0.0248881070928514 -357 -0.00242385809089605 -358 0.0194092079332272 -359 0.0144215071404531 -360 0.00612726395169545 -361 -0.00573485213524349 -362 -0.0117678537517965 -363 -0.0132866019915077 -364 -0.00168434348341747 -365 0.0210258042234829 -366 0.00299710982573773 -367 7.02933284912932e-05 -368 -0.00141527364094497 -369 -0.0174837658027455 -370 -0.00530972905386562 -371 0.00289284688712308 -372 0.0269088067868297 -373 -0.00857711045394559 -374 0.000634286012527533 -375 -0.00732827217084004 -376 -0.0129999392900683 -377 -0.00620543176764517 -378 0.0219005305671357 -379 0.00951579849769713 -380 -0.00156577259219444 -381 0.00334210346592974 -382 -0.0168913201522477 -383 -0.0140750807027531 -384 0.0026387459171992 -385 0.0167243976144324 -386 0.000401824368635554 -387 0.00494540377378665 -388 -0.0079650110757071 -389 -0.000153543070488744 -390 -0.0157596554184165 -391 0.00960203655959764 -392 0.0194333180320067 -393 -0.00698081626697105 -394 -0.00616259455878436 -395 -0.00885431917148208 -396 -0.000823472402578178 -397 -0.014306329807885 -398 0.0323044170275812 -399 -0.00116363767533424 -400 -0.00613094977576676 -401 0.00681272285172057 -402 -0.0120741370386856 -403 -0.00393525989936848 -404 0.00143625779594446 -405 0.0112941876899105 -406 0.00621416024416119 -407 -0.00715834709108978 -408 0.00349330341606058 -409 -0.0134328785266322 -410 -0.00983212957457947 -411 0.0170214269071715 -412 0.00768534801684557 -413 -0.00433253762066253 -414 0.00328760101068126 -415 -0.011902725027492 -416 0.0037433377806999 -417 -0.016429583975757 -418 0.0253614932452271 -419 0.00105507602999118 -420 -0.00501259523808327 -421 -0.0068805657075317 -422 -0.00611319813056072 -423 0.00133925647011242 -424 0.000593265112355031 -425 0.00636014210120566 -426 0.0100866038838847 -427 -0.0104562933845484 -428 -0.000506041760930212 -429 -0.003202190801565 -430 -0.00228403340255738 -431 0.00854908376124406 -432 0.00387003653786829 -433 -0.00478285696403202 -434 -0.00768626474153872 -435 0.00703888513154693 -436 -0.00944179389034701 -437 -0.001876043961929 -438 0.0164444486588937 -439 0.00420632904477211 -440 -0.0113129379390227 -441 -0.00359559614450257 -442 -0.00109952765661056 -443 0.0151360003108556 -444 -0.0154475593718288 -445 0.00602211025479499 -446 -0.000307234590538632 -447 0.0046588142745641 -448 -0.0126455787204799 -449 0.0111520432278555 -450 0.00974700164306953 -451 -0.0123611400743472 -452 0.0108946760123822 -453 -0.00120669950156729 -454 -0.0150988572259806 -455 0.00502353890121031 -456 0.00408149023215052 -457 0.00586521360666165 -458 -0.0102923932626118 -459 0.00382025608487933 -460 0.00255550573549941 -461 -0.00783828310549662 -462 0.00508824500063238 -463 0.0084446428666135 -464 -0.00872612495616409 -465 -0.0010875359595666 -466 0.00346175022973811 -467 -0.00495327642022978 -468 0.00325169084183052 -469 -0.00463312556182376 -470 0.0118854909647327 -471 -0.0171003407134582 -472 0.0123260637207544 -473 -0.00447510748083252 -474 -0.00707845418496072 -475 0.00755386113965643 -476 -0.00100076346057804 -477 0.00860719536195919 -478 -0.0136737162109966 -479 0.00711613796353955 -480 0.00622875998269613 -481 -0.0117802696216559 -482 0.00817288034030646 -483 -0.00010669129241017 -484 -0.00352870547469094 -485 -0.0041443261121201 -486 -0.000910571304832122 -487 0.00615718849758809 -488 0.00143910833275321 -489 -0.00107559220444337 -490 0.00356082962826646 -491 -0.00897791292059391 -492 0.00527546492556289 -493 0.00302276031439837 -494 -0.0139577905696164 -495 0.0153490659756607 -496 -0.00912850078466119 -497 0.000879808460620783 -498 0.000984936175184538 -499 0.0024123778693579 -500 0.00264304134465302 -501 -0.0020232636751576 -502 0.00551353717784557 -503 -0.00415080354514971 -504 -0.00545916667181435 -505 -0.00274028317951399 -506 0.00692379605051298 -507 0.00616679327772537 -508 -0.0103279571217553 -509 0.00599342336739776 -510 -0.00152316676140798 -511 -0.00167286162288039 -512 -0.00131993101685522 -513 0.0025282491153862 -514 -0.0017542373384818 -515 0.0105600742581342 -516 -0.0132267654750864 -517 0.00283731663919629 -518 -0.00266741199361332 -519 0.00157444027950648 -520 0.00420858755299597 -521 -0.00658258017129261 -522 0.00508600113202915 -523 -0.00598002733029911 -524 -0.000368464512649264 -525 0.00317302663744126 -526 0.00115765014094958 -527 0.00267985546857361 -528 -5.46265185716715e-05 -529 -0.0020009411803283 -530 0.00486700543717424 -531 -0.00895876165620023 -532 -0.00299164146372051 -533 0.00312859041046786 -534 0.00209406747343818 -535 0.00673942768658441 -536 -0.0080409196789959 -537 0.00240456617470404 -538 -0.00873512083231826 -539 0.0131577627923678 -540 -0.00665539290143677 -541 0.00346454545303284 -542 0.0035973446316873 -543 -0.00868085967804022 -544 -0.00333236624454644 -545 -0.000196442609818114 -546 0.00024806978901623 -547 0.00902390850008458 -548 0.00455805912058593 -549 -0.0021927440377309 -550 -0.00266277815142354 -551 -0.00688313353751191 -552 0.00853131376210095 -553 -0.00393842096864295 -554 -0.00523274211550968 -555 0.0169329221829408 -556 -0.0127945093367028 -557 -0.00072480763790979 -558 -0.00747843149724429 -559 0.0098746166146274 -560 -0.00240342067223121 -561 0.00696610332249864 -562 -0.00223635183687814 -563 -0.00541969587447053 -564 0.000337137313027405 -565 -0.00633065126280832 -566 0.00910870585819199 -567 -0.00455095051161683 -568 0.0151312578540391 -569 -0.0138690307629985 -570 0.00185264574846404 -571 -0.00664259858046173 -572 -0.00312306915210339 -573 0.0115985176835154 -574 -0.00759201236341693 -575 0.0123033300962974 -576 -0.0116628565174072 -577 0.00192424927530433 -578 -0.00508184861795511 -579 0.00510239186439487 -580 0.0086553620645795 -581 -0.00172738282515301 -582 -0.0021965366527628 -583 -0.00611685505872929 -584 -0.00193581230608064 -585 -0.00107517411193112 -586 0.00446964598329358 -587 -0.000130069247618965 -588 0.0106723190798826 -589 -0.00893242845988889 -590 -0.00281814645132135 -591 -0.00320913741145263 -592 0.00122039092287541 -593 0.0131068648072679 -594 -0.0156363425833423 -595 0.0163402377490577 -596 -0.0178296060018707 -597 0.00292057772226031 -598 0.0026057160047535 -599 -0.0056620372273394 -600 0.0221246161887441 -601 -0.0124193991673087 -602 0.0116954284234103 -603 -0.0182733365810819 -604 0.00268681939875375 -605 0.000740456981363333 -606 0.00452604181556726 -607 0.00480547630796285 -608 -0.00481203219844089 -609 -0.00358228345456814 -610 0.00284875874479068 -611 -0.00700099168490112 -612 0.00572849008389633 -613 0.0009937821532389 -614 0.00731073451366145 -615 0.00170654591193711 -616 -0.0139804622453969 -617 -0.00443468421233479 -618 0.00531823173567082 -619 -0.00198161915266415 -620 0.0150254959665873 -621 -0.00831801965928389 -622 0.00172646514060601 -623 -0.00862060723221882 -624 -0.00433533060780036 -625 0.00756501714009114 -626 -0.00135836313194754 -627 0.00932877978173298 -628 0.00124802151466854 -629 -0.00395113636252646 -630 -0.00485990513214748 -631 -0.00663176926963557 -632 -0.0010820412567438 -633 0.0133592195871343 -634 -0.00141240259407419 -635 0.00139234037081884 -636 -0.00360777343366459 -637 -0.0045878817789227 -638 -0.00220204565644013 -639 0.00147686629423844 -640 0.00543470252168979 -641 0.0105896351713388 -642 -0.00973902671101576 -643 -0.00668023801257986 -644 -0.00936843265363968 -645 0.0089634651091583 -646 3.84562452729655e-05 -647 0.00384580055961138 -648 0.0229816090537144 -649 -0.0184332961015907 -650 -0.00529759065480934 -651 -0.0066870495503683 -652 0.00225769689469144 -653 0.0102460370689819 -654 0.00338482338024052 -655 0.00379747442016746 -656 -0.00712302572663179 -657 -0.0114322113895202 -658 -0.00273386445516078 -659 0.00553489607050495 -660 0.00837690540674999 -661 0.00940739102513669 -662 -0.0053486413343748 -663 -0.00315193594161813 -664 -0.0105647918156018 -665 -0.00691297631409873 -666 0.0142090509210798 -667 -0.000975698964492755 -668 0.0132255885174397 -669 -0.00325960303321359 -670 -0.006651275593499 -671 -0.0192763045572716 -672 0.00410496738893783 -673 0.00865425824492816 -674 0.0074519049626705 -675 0.00640440261542484 -676 -0.00248884860489984 -677 -0.0175933146891799 -678 -0.00288003343042402 -679 0.00834623453163345 -680 -0.00449041088509132 -681 0.0232105507895105 -682 -0.00534719486763679 -683 -0.00392566304421506 -684 -0.0192148623617993 -685 -0.00286039387718507 -686 0.0169363828012178 -687 -0.00383913263684977 -688 0.0147166901415108 -689 -0.00527685630258491 -690 -0.00534763716897078 -691 -0.013028036623984 -692 0.00109856360189917 -693 0.00429859241906058 -694 0.0110770507839361 -695 0.00389958466319795 -696 -0.00500164744078786 -697 -0.00580430434909617 -698 -0.0175348619428549 -699 0.018367710926664 -700 -0.00285520470226993 -701 0.0191604505372293 -702 -0.00572139870349262 -703 -0.00245556604337348 -704 -0.0107607119705179 -705 -0.00773541821274989 -706 0.00425886688313039 -707 0.00803784819561882 -708 0.0116278126911605 -709 -0.00361748710592387 -710 -0.0039055675458961 -711 -0.0187689003370071 -712 0.00721078757871366 -713 -0.00118844249034332 -714 0.0125434153334007 -715 0.0101599061260829 -716 -0.00351197692479239 -717 -0.0123155660331183 -718 -0.0108643040658882 -719 0.00554949017948381 -720 0.00257600141246878 -721 0.00621936965849692 -722 0.0147249169696155 -723 -0.0117208865566673 -724 -0.0123019859554356 -725 -0.00803010597732602 -726 0.00658862562929511 -727 0.00614064100015319 -728 0.008551217239909 -729 0.0136644617518446 -730 -0.015679112924688 -731 -0.0164762866576538 -732 -0.00450956642363176 -733 0.00672813330266014 -734 0.0163514096475234 -735 0.00144257368405246 -736 0.00632093496019618 -737 -0.0144540308342644 -738 -0.0116512949908104 -739 -0.00303930205795109 -740 0.00684139171029531 -741 0.0157237606456902 -742 0.00173826522952491 -743 0.00162052201072558 -744 -0.0225327170375728 -745 -0.00244349662721446 -746 -0.00369988442043602 -747 0.020606075524278 -748 0.00234950019819143 -749 0.00933962911886964 -750 -0.00497392363419004 -751 -0.0191622234756475 -752 0.00152935854260608 -753 -0.00746413948201927 -754 0.0210618579576008 -755 0.00337450745565617 -756 0.0116901903545899 -757 -0.0211051168455275 -758 -0.0116996994412557 -759 -0.00384503529844727 -760 0.0106920319592258 -761 0.00606434563857974 -762 0.0109288893744588 -763 0.0065913741548423 -764 -0.024843059360248 -765 -0.00145794491644285 -766 -0.015899201893062 -767 0.0293737522747255 -768 0.000429876419139015 -769 0.0117737352022464 -770 -0.011804032635419 -771 -0.0160558691300165 -772 -0.00680765187518244 -773 0.00115856328840688 -774 0.016936256215249 -775 0.00599154100809263 -776 0.00618605288716798 -777 -0.0133717924580297 -778 -0.00856753018227533 -779 -0.0122498868461665 -780 0.0184368989458328 -781 0.00826995605347898 -782 -0.00370110797731906 -783 0.00766740753297887 -784 -0.0106558949199266 -785 -0.0145918234070912 -786 0.00262754124009611 -787 0.00732095805793885 -788 0.0141175867672096 -789 0.000917093953717164 -790 -0.00610693085809193 -791 -0.00263724165375204 -792 -0.0223403739509282 -793 0.0155086188394132 -794 -0.000414907985012158 -795 0.00818366497095633 -796 0.00390922245137539 -797 0.000518897249907908 -798 -0.0114231682864646 -799 -0.0131434185021701 -800 0.0106325516600345 -801 0.00726206049320438 -802 0.011973193565835 -803 -0.0117164916752715 -804 0.00837431504618953 -805 -0.0176484202352301 -806 -0.00242926974706211 -807 0.00617275793654123 -808 0.00157428575173083 -809 0.0140869636480763 -810 -0.00799595335938592 -811 -0.00145797624072917 -812 -0.0163218480242698 -813 0.0102032846601359 -814 0.00334029936869413 -815 0.00596774673469088 -816 -0.00191679139866682 -817 0.00111982507739117 -818 -0.00466131055412295 -819 -0.009977558947507 -820 0.0070518233255565 -821 -0.00235106334091928 -822 0.0135818413020524 -823 -0.0124536640788948 -824 0.00961249011142124 -825 -0.012067111031695 -826 0.000746163532116685 -827 -0.000618612461237987 -828 0.00932264378392892 -829 -0.00138865174580641 -830 -0.0026558878506514 -831 0.0039382752792092 -832 -0.00629021025673958 -833 -0.00703454327061739 -834 0.000852556936383089 -835 0.0170439482297759 -836 -0.0100201779805253 -837 0.00412500179406067 -838 -0.00228249593639731 -839 0.00340179323986006 -840 -0.0152704223182198 -841 0.0106042546349877 -842 0.00124240796525085 -843 0.000187170197715872 -844 -0.00396092509138278 -845 0.00476886425336974 -846 -0.00278502915166355 -847 -0.0105600821274784 -848 0.0187548308543433 -849 -0.0101103834519274 -850 0.00609860589988799 -851 -0.00970023587707483 -852 0.0175534712886796 -853 -0.0150157009573689 -854 0.000240696590543887 -855 0.00334623999363693 -856 0.000756223924502869 -857 -0.0019111813337376 -858 -0.000465320516901212 -859 0.0102121697808577 -860 -0.0119235594699214 -861 -0.000513039517075994 -862 7.13470533304221e-05 -863 0.00602093194270405 -864 -0.00562228912014448 -865 0.00897532104113402 -866 0.00135722877208738 -867 -0.0107137791823794 -868 0.000349804975704247 -869 0.00196275441326171 -870 -0.00207881051818241 -871 -0.00504133443326138 -872 0.01798662824207 -873 -0.00512468690960391 -874 -0.00936398567940176 -875 -0.00350357584735409 -876 0.00844402907196902 -877 -0.00535212289603013 -878 0.00359477004645202 -879 0.0100259050577573 -880 -0.00448613112164086 -881 -0.00772718523343422 -882 -0.00407471844508272 -883 0.00258842651253074 -884 -0.00497542569393132 -885 0.0140374940981116 -886 0.00485938827108293 -887 -0.00522635448674892 -888 -0.00995747147865195 -889 0.00286884969081893 -890 -0.00263726932721365 -891 0.00281869362544293 -892 0.00413911124089107 -893 0.00641299274583358 -894 -0.00461483322781905 -895 -0.00973466510643417 -896 -0.00244121423716433 -897 -0.00187439261201581 -898 0.0167254251905489 -899 -0.00323557017026858 -900 0.0070698910566062 -901 -0.00984192453152891 -902 -0.00745285112891651 -903 -0.00156488511331396 -904 0.00648910969501878 -905 0.00778960101933796 -906 -0.00110773006555918 -907 0.00797123926504478 -908 -0.0172915924405978 -909 -0.00567453921434972 -910 -0.00093198227439079 -911 0.017699519362806 -912 -0.000318037037700945 -913 -0.000901743764017103 -914 0.00248888283323065 -915 -0.0142481225576747 -916 -0.00627435836721236 -917 0.00855187280647071 -918 0.0105572049962355 -919 0.000583931991033486 -920 -4.30556267490633e-05 -921 -0.0045108941062306 -922 -0.0133739157611831 -923 -0.00313115415898723 -924 0.0189188436677887 -925 0.00153514138422627 -926 0.00103320993409772 -927 0.00112288481924235 -928 -0.00928188326624581 -929 -0.0129274841698096 -930 0.00498882941992066 -931 0.0128685052672079 -932 0.00095422558746866 -933 0.00287762148255505 -934 -0.00475028532754077 -935 -0.00822865912701703 -936 -0.00757218985298937 -937 0.0125664162380766 -938 0.00270238634995215 -939 0.00302457671529668 -940 0.00428294440890637 -941 -0.00899111620928394 -942 -0.0110893993806093 -943 0.00141333596146868 -944 0.00563271971888788 -945 0.00411002278120649 -946 0.00615934836425166 -947 -0.00174830591696001 -948 -0.00690959640532146 -949 -0.00762102396102174 -950 0.00236971536529725 -951 0.00460497853674718 -952 0.00598101123225428 -953 0.00706347780702416 -954 -0.0072207235025214 -955 -0.00731160125486541 -956 -0.00624993042258776 -957 0.00302766462338833 -958 0.00586320595091301 -959 0.00757297545746186 -960 0.000503174678108187 -961 -0.00664203641468952 -962 -0.00405954777539984 -963 -0.00594873760338403 -964 0.00307617052361439 -965 0.00775330844648307 -966 0.00843784117689838 -967 -0.00583155486504129 -968 -0.00522157454280821 -969 -0.00285538010476946 -970 -0.00558783047918071 -971 0.00390712343424286 -972 0.00929413763014091 -973 0.00249794635456826 -974 -0.00403614631431915 -975 -0.00252223207691292 -976 -0.00372319999128239 -977 -0.00468425218841592 -978 0.00588461196845991 -979 0.0101947594770192 -980 -0.00382374940790093 -981 -0.00256280880770612 -982 -0.00238724745188651 -983 -0.00254031623097892 -984 -0.00349304284255843 -985 0.00656620792235621 -986 0.0047392335299334 -987 -0.00245644332451687 -988 -0.000949186258308068 -989 -0.00204517319399663 -990 -0.00117348041470723 -991 -0.00165335740901138 -992 0.00532507797594932 -993 -0.00112887412444135 -994 -0.00102507341491478 -995 -0.000239825549954329 -996 -0.000229034611702856 -997 -0.00048382116878178 -998 -0.000558954253318938 -999 0.000343539178586105 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat deleted file mode 100644 index 9c717bb6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_fast.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.0163400173187256 0.00999999999999091 0.00999999999999091 0.0 1 -2 0.0159189701080322 0.00999999999999091 0.00999999999999091 0.0 2 -3 0.0164740085601807 0.0200000000000102 0.0200000000000102 0.0 3 -4 0.0157279968261719 0.00999999999999091 0.00999999999999091 0.0 4 -5 0.0157220363616943 0.0200000000000102 0.0200000000000102 0.0 5 -6 0.0156500339508057 0.00999999999999091 0.00999999999999091 0.0 6 -7 0.0407540798187256 0.0499999999999829 0.0499999999999829 0.0 7 -8 0.0177309513092041 0.0100000000000193 0.0100000000000193 0.0 8 -9 0.0160109996795654 0.0199999999999818 0.0199999999999818 0.0 9 -10 0.0159001350402832 0.0100000000000193 0.0100000000000193 0.0 10 -11 0.0192539691925049 0.0199999999999818 0.0199999999999818 0.0 11 -12 0.0170741081237793 0.0200000000000102 0.0200000000000102 0.0 12 -13 0.0155148506164551 0.0200000000000102 0.0200000000000102 0.0 13 -14 0.0416128635406494 0.039999999999992 0.039999999999992 0.0 14 -15 0.0161120891571045 0.00999999999999091 0.00999999999999091 0.0 15 -16 0.0159459114074707 0.0200000000000102 0.0200000000000102 0.0 16 -17 0.0158929824829102 0.0200000000000102 0.0200000000000102 0.0 17 -18 0.0158240795135498 0.00999999999999091 0.00999999999999091 0.0 18 -19 0.0156450271606445 0.0199999999999818 0.0199999999999818 0.0 19 -20 0.0159389972686768 0.0100000000000193 0.0100000000000193 0.0 20 -21 0.0409190654754639 0.039999999999992 0.039999999999992 0.0 21 -22 0.0160489082336426 0.0200000000000102 0.0200000000000102 0.0 22 -23 0.0169320106506348 0.0199999999999818 0.0199999999999818 0.0 23 -24 0.0198559761047363 0.0200000000000102 0.0200000000000102 0.0 24 -25 0.0158309936523438 0.00999999999999091 0.00999999999999091 0.0 25 -26 0.0156970024108887 0.0200000000000102 0.0200000000000102 0.0 26 -27 0.0156750679016113 0.0200000000000102 0.0200000000000102 0.0 27 -28 0.0406918525695801 0.039999999999992 0.039999999999992 0.0 28 -29 0.0161190032958984 0.00999999999999091 0.00999999999999091 0.0 29 -30 0.0162358283996582 0.0200000000000102 0.0200000000000102 0.0 30 -31 0.0158340930938721 0.00999999999999091 0.00999999999999091 0.0 31 -32 0.0157299041748047 0.0200000000000102 0.0200000000000102 0.0 32 -33 0.0156428813934326 0.0199999999999818 0.0199999999999818 0.0 33 -34 0.0156571865081787 0.0100000000000193 0.0100000000000193 0.0 34 -35 0.0409109592437744 0.039999999999992 0.039999999999992 0.0 35 -36 0.0192060470581055 0.0200000000000102 0.0200000000000102 0.0 36 -37 0.0160908699035645 0.0199999999999818 0.0199999999999818 0.0 37 -38 0.0158319473266602 0.0100000000000193 0.0100000000000193 0.0 38 -39 0.0157558917999268 0.0199999999999818 0.0199999999999818 0.0 39 -40 0.0158040523529053 0.0200000000000102 0.0200000000000102 0.0 40 -41 0.0156400203704834 0.00999999999999091 0.00999999999999091 0.0 41 -42 0.0408070087432861 0.0400000000000205 0.0400000000000205 0.0 42 -43 0.0159420967102051 0.0199999999999818 0.0199999999999818 0.0 43 -44 0.0159668922424316 0.00999999999999091 0.00999999999999091 0.0 44 -45 0.0213000774383545 0.0300000000000011 0.0300000000000011 0.0 45 -46 0.0170960426330566 0.0100000000000193 0.0100000000000193 0.0 46 -47 0.0160157680511475 0.0199999999999818 0.0199999999999818 0.0 47 -48 0.0156497955322266 0.0100000000000193 0.0100000000000193 0.0 48 -49 0.0446329116821289 0.0499999999999829 0.0499999999999829 0.0 49 -50 0.016150951385498 0.0200000000000102 0.0200000000000102 0.0 50 -51 0.0159158706665039 0.00999999999999091 0.00999999999999091 0.0 51 -52 0.0157129764556885 0.0200000000000102 0.0200000000000102 0.0 52 -53 0.0165328979492188 0.00999999999999091 0.00999999999999091 0.0 53 -54 0.0156497955322266 0.0200000000000102 0.0200000000000102 0.0 54 -55 0.0156981945037842 0.0200000000000102 0.0200000000000102 0.0 55 -56 0.0412800312042236 0.039999999999992 0.039999999999992 0.0 56 -57 0.0159571170806885 0.00999999999999091 0.00999999999999091 0.0 57 -58 0.015887975692749 0.0200000000000102 0.0200000000000102 0.0 58 -59 0.0158159732818604 0.00999999999999091 0.00999999999999091 0.0 59 -60 0.0156238079071045 0.0200000000000102 0.0200000000000102 0.0 60 -61 0.0156691074371338 0.0199999999999818 0.0199999999999818 0.0 61 -62 0.0447931289672852 0.0400000000000205 0.0400000000000205 0.0 62 -63 0.0160729885101318 0.0199999999999818 0.0199999999999818 0.0 63 -64 0.016963005065918 0.0100000000000193 0.0100000000000193 0.0 64 -65 0.015869140625 0.0199999999999818 0.0199999999999818 0.0 65 -66 0.0158119201660156 0.0200000000000102 0.0200000000000102 0.0 66 -67 0.0156521797180176 0.00999999999999091 0.00999999999999091 0.0 67 -68 0.0156309604644775 0.0200000000000102 0.0200000000000102 0.0 68 -69 0.0406920909881592 0.039999999999992 0.039999999999992 0.0 69 -70 0.0161399841308594 0.00999999999999091 0.00999999999999091 0.0 70 -71 0.0160379409790039 0.0200000000000102 0.0200000000000102 0.0 71 -72 0.0158870220184326 0.0200000000000102 0.0200000000000102 0.0 72 -73 0.0157949924468994 0.00999999999999091 0.00999999999999091 0.0 73 -74 0.019942045211792 0.0200000000000102 0.0200000000000102 0.0 74 -75 0.0156691074371338 0.0199999999999818 0.0199999999999818 0.0 75 -76 0.0406370162963867 0.0400000000000205 0.0400000000000205 0.0 76 -77 0.0160510540008545 0.00999999999999091 0.00999999999999091 0.0 77 -78 0.0159440040588379 0.0200000000000102 0.0200000000000102 0.0 78 -79 0.0159609317779541 0.0199999999999818 0.0199999999999818 0.0 79 -80 0.0160808563232422 0.0100000000000193 0.0100000000000193 0.0 80 -81 0.0156311988830566 0.0199999999999818 0.0199999999999818 0.0 81 -82 0.0157270431518555 0.00999999999999091 0.00999999999999091 0.0 82 -83 0.041240930557251 0.0500000000000114 0.0500000000000114 0.0 83 -84 0.0165321826934814 0.00999999999999091 0.00999999999999091 0.0 84 -85 0.0159039497375488 0.0200000000000102 0.0200000000000102 0.0 85 -86 0.0183000564575195 0.0200000000000102 0.0200000000000102 0.0 86 -87 0.0168759822845459 0.00999999999999091 0.00999999999999091 0.0 87 -88 0.0156400203704834 0.0200000000000102 0.0200000000000102 0.0 88 -89 0.0156240463256836 0.00999999999999091 0.00999999999999091 0.0 89 -90 0.0415260791778564 0.0500000000000114 0.0500000000000114 0.0 90 -91 0.0159800052642822 0.00999999999999091 0.00999999999999091 0.0 91 -92 0.0159440040588379 0.0200000000000102 0.0200000000000102 0.0 92 -93 0.0158178806304932 0.00999999999999091 0.00999999999999091 0.0 93 -94 0.0157041549682617 0.0199999999999818 0.0199999999999818 0.0 94 -95 0.0200591087341309 0.0200000000000102 0.0200000000000102 0.0 95 -96 0.018794059753418 0.0200000000000102 0.0200000000000102 0.0 96 -97 0.0408840179443359 0.039999999999992 0.039999999999992 0.0 97 -98 0.0196928977966309 0.0200000000000102 0.0200000000000102 0.0 98 -99 0.016610860824585 0.0199999999999818 0.0199999999999818 0.0 99 -100 0.0157420635223389 0.0100000000000193 0.0100000000000193 0.0 100 -101 0.015739917755127 0.0199999999999818 0.0199999999999818 0.0 101 -102 0.015592098236084 0.0100000000000193 0.0100000000000193 0.0 102 -103 0.0156228542327881 0.0199999999999818 0.0199999999999818 0.0 103 -104 0.0417301654815674 0.0400000000000205 0.0400000000000205 0.0 104 -105 0.015916109085083 0.0199999999999818 0.0199999999999818 0.0 105 -106 0.0158488750457764 0.00999999999999091 0.00999999999999091 0.0 106 -107 0.015733003616333 0.0200000000000102 0.0200000000000102 0.0 107 -108 0.0156040191650391 0.00999999999999091 0.00999999999999091 0.0 108 -109 0.0155818462371826 0.0200000000000102 0.0200000000000102 0.0 109 -110 0.041733980178833 0.039999999999992 0.039999999999992 0.0 110 -111 0.0190949440002441 0.0200000000000102 0.0200000000000102 0.0 111 -112 0.0159502029418945 0.0200000000000102 0.0200000000000102 0.0 112 -113 0.015855073928833 0.00999999999999091 0.00999999999999091 0.0 113 -114 0.0161051750183105 0.0200000000000102 0.0200000000000102 0.0 114 -115 0.0168948173522949 0.0199999999999818 0.0199999999999818 0.0 115 -116 0.0157649517059326 0.0100000000000193 0.0100000000000193 0.0 116 -117 0.0404441356658936 0.039999999999992 0.039999999999992 0.0 117 -118 0.0158331394195557 0.0199999999999818 0.0199999999999818 0.0 118 -119 0.0158309936523438 0.0100000000000193 0.0100000000000193 0.0 119 -120 0.0155770778656006 0.0199999999999818 0.0199999999999818 0.0 120 -121 0.0154340267181396 0.0100000000000193 0.0100000000000193 0.0 121 -122 0.0155458450317383 0.0199999999999818 0.0199999999999818 0.0 122 -123 0.0156569480895996 0.0200000000000102 0.0200000000000102 0.0 123 -124 0.0447821617126465 0.0499999999999829 0.039999999999992 0.01 124 -125 0.0162930488586426 0.0200000000000102 0.0200000000000102 0.0 125 -126 0.0159821510314941 0.00999999999999091 0.00999999999999091 0.0 126 -127 0.0158350467681885 0.0200000000000102 0.0200000000000102 0.0 127 -128 0.0157771110534668 0.00999999999999091 0.00999999999999091 0.0 128 -129 0.0155949592590332 0.0200000000000102 0.0200000000000102 0.0 129 -130 0.015751838684082 0.0200000000000102 0.0200000000000102 0.0 130 -131 0.0409200191497803 0.039999999999992 0.039999999999992 0.0 131 -132 0.0159509181976318 0.00999999999999091 0.00999999999999091 0.0 132 -133 0.0159890651702881 0.0200000000000102 0.0200000000000102 0.0 133 -134 0.015902042388916 0.00999999999999091 0.00999999999999091 0.0 134 -135 0.0158298015594482 0.0200000000000102 0.0200000000000102 0.0 135 -136 0.0156691074371338 0.0199999999999818 0.0199999999999818 0.0 136 -137 0.0194599628448486 0.0200000000000102 0.0200000000000102 0.0 137 -138 0.0408408641815186 0.039999999999992 0.039999999999992 0.0 138 -139 0.0161910057067871 0.0100000000000193 0.0100000000000193 0.0 139 -140 0.0158939361572266 0.0199999999999818 0.0199999999999818 0.0 140 -141 0.0157690048217773 0.0100000000000193 0.0100000000000193 0.0 141 -142 0.0156970024108887 0.0199999999999818 0.0199999999999818 0.0 142 -143 0.015625 0.0200000000000102 0.0200000000000102 0.0 143 -144 0.0156629085540771 0.00999999999999091 0.00999999999999091 0.0 144 -145 0.0474429130554199 0.0500000000000114 0.0500000000000114 0.0 145 -146 0.0159988403320312 0.0199999999999818 0.0199999999999818 0.0 146 -147 0.0159039497375488 0.0100000000000193 0.0100000000000193 0.0 147 -148 0.0157449245452881 0.0199999999999818 0.0199999999999818 0.0 148 -149 0.0188858509063721 0.0200000000000102 0.0200000000000102 0.0 149 -150 0.0156919956207275 0.00999999999999091 0.00999999999999091 0.0 150 -151 0.0404269695281982 0.0400000000000205 0.0400000000000205 0.0 151 -152 0.0160980224609375 0.0199999999999818 0.0199999999999818 0.0 152 -153 0.0167350769042969 0.0200000000000102 0.0200000000000102 0.0 153 -154 0.0159759521484375 0.00999999999999091 0.00999999999999091 0.0 154 -155 0.0158588886260986 0.0200000000000102 0.0200000000000102 0.0 155 -156 0.01568603515625 0.00999999999999091 0.00999999999999091 0.0 156 -157 0.0156669616699219 0.0200000000000102 0.0200000000000102 0.0 157 -158 0.0405089855194092 0.039999999999992 0.039999999999992 0.0 158 -159 0.0160729885101318 0.0200000000000102 0.0200000000000102 0.0 159 -160 0.0159640312194824 0.00999999999999091 0.00999999999999091 0.0 160 -161 0.0188910961151123 0.0200000000000102 0.0200000000000102 0.0 161 -162 0.0166840553283691 0.0199999999999818 0.0199999999999818 0.0 162 -163 0.0156660079956055 0.0100000000000193 0.0100000000000193 0.0 163 -164 0.0156950950622559 0.0199999999999818 0.0199999999999818 0.0 164 -165 0.0416688919067383 0.0400000000000205 0.0400000000000205 0.0 165 -166 0.0159718990325928 0.0199999999999818 0.0199999999999818 0.0 166 -167 0.0159449577331543 0.0100000000000193 0.0100000000000193 0.0 167 -168 0.0157949924468994 0.0199999999999818 0.0199999999999818 0.0 168 -169 0.0157520771026611 0.00999999999999091 0.00999999999999091 0.0 169 -170 0.0157308578491211 0.0200000000000102 0.0200000000000102 0.0 170 -171 0.0156319141387939 0.0200000000000102 0.0200000000000102 0.0 171 -172 0.0406780242919922 0.039999999999992 0.039999999999992 0.0 172 -173 0.0182578563690186 0.00999999999999091 0.00999999999999091 0.0 173 -174 0.0166499614715576 0.0200000000000102 0.0200000000000102 0.0 174 -175 0.0157749652862549 0.0200000000000102 0.0200000000000102 0.0 175 -176 0.0156049728393555 0.00999999999999091 0.00999999999999091 0.0 176 -177 0.0155508518218994 0.0200000000000102 0.0200000000000102 0.0 177 -178 0.0155460834503174 0.00999999999999091 0.00999999999999091 0.0 178 -179 0.0410678386688232 0.0500000000000114 0.0500000000000114 0.0 179 -180 0.0161750316619873 0.00999999999999091 0.00999999999999091 0.0 180 -181 0.0159769058227539 0.0199999999999818 0.0199999999999818 0.0 181 -182 0.0157239437103271 0.0100000000000193 0.0100000000000193 0.0 182 -183 0.0155858993530273 0.0199999999999818 0.0199999999999818 0.0 183 -184 0.0157029628753662 0.0100000000000193 0.0100000000000193 0.0 184 -185 0.0406639575958252 0.0499999999999829 0.0499999999999829 0.0 185 -186 0.020313024520874 0.0200000000000102 0.0200000000000102 0.0 186 -187 0.0159680843353271 0.00999999999999091 0.00999999999999091 0.0 187 -188 0.0159218311309814 0.0200000000000102 0.0200000000000102 0.0 188 -189 0.0158710479736328 0.00999999999999091 0.00999999999999091 0.0 189 -190 0.0158529281616211 0.0200000000000102 0.0200000000000102 0.0 190 -191 0.0155730247497559 0.0200000000000102 0.0200000000000102 0.0 191 -192 0.0405440330505371 0.039999999999992 0.039999999999992 0.0 192 -193 0.0161638259887695 0.00999999999999091 0.00999999999999091 0.0 193 -194 0.0165688991546631 0.0200000000000102 0.0200000000000102 0.0 194 -195 0.0231571197509766 0.0199999999999818 0.0199999999999818 0.0 195 -196 0.0159261226654053 0.0200000000000102 0.0200000000000102 0.0 196 -197 0.015887975692749 0.00999999999999091 0.00999999999999091 0.0 197 -198 0.0156550407409668 0.0200000000000102 0.0200000000000102 0.0 198 -199 0.0435981750488281 0.039999999999992 0.039999999999992 0.0 199 -200 0.0159139633178711 0.0200000000000102 0.0200000000000102 0.0 200 -201 0.0158441066741943 0.00999999999999091 0.00999999999999091 0.0 201 -202 0.0157480239868164 0.0200000000000102 0.0200000000000102 0.0 202 -203 0.0163719654083252 0.0200000000000102 0.0200000000000102 0.0 203 -204 0.0156970024108887 0.00999999999999091 0.00999999999999091 0.0 204 -205 0.01556396484375 0.0200000000000102 0.0200000000000102 0.0 205 -206 0.0408110618591309 0.039999999999992 0.039999999999992 0.0 206 -207 0.0159599781036377 0.0199999999999818 0.0199999999999818 0.0 207 -208 0.0159690380096436 0.0100000000000193 0.0100000000000193 0.0 208 -209 0.0159268379211426 0.0199999999999818 0.0199999999999818 0.0 209 -210 0.0157289505004883 0.0100000000000193 0.0100000000000193 0.0 210 -211 0.0156691074371338 0.0199999999999818 0.0199999999999818 0.0 211 -212 0.0189340114593506 0.0200000000000102 0.0200000000000102 0.0 212 -213 0.0407509803771973 0.039999999999992 0.039999999999992 0.0 213 -214 0.0168440341949463 0.0200000000000102 0.0200000000000102 0.0 214 -215 0.0158839225769043 0.00999999999999091 0.00999999999999091 0.0 215 -216 0.0157129764556885 0.0200000000000102 0.0200000000000102 0.0 216 -217 0.0155618190765381 0.00999999999999091 0.00999999999999091 0.0 217 -218 0.0155580043792725 0.0200000000000102 0.0200000000000102 0.0 218 -219 0.0405669212341309 0.039999999999992 0.039999999999992 0.0 219 -220 0.0161259174346924 0.0200000000000102 0.0200000000000102 0.0 220 -221 0.0161309242248535 0.00999999999999091 0.00999999999999091 0.0 221 -222 0.0159680843353271 0.0200000000000102 0.0200000000000102 0.0 222 -223 0.0159029960632324 0.00999999999999091 0.00999999999999091 0.0 223 -224 0.0187640190124512 0.0200000000000102 0.0200000000000102 0.0 224 -225 0.0158958435058594 0.0199999999999818 0.0199999999999818 0.0 225 -226 0.0405712127685547 0.0400000000000205 0.0400000000000205 0.0 226 -227 0.0160939693450928 0.0199999999999818 0.0199999999999818 0.0 227 -228 0.0159199237823486 0.0100000000000193 0.0100000000000193 0.0 228 -229 0.0160150527954102 0.0199999999999818 0.0199999999999818 0.0 229 -230 0.0161042213439941 0.0100000000000193 0.0100000000000193 0.0 230 -231 0.0156550407409668 0.0199999999999818 0.0199999999999818 0.0 231 -232 0.0155539512634277 0.00999999999999091 0.00999999999999091 0.0 232 -233 0.0406229496002197 0.0500000000000114 0.0500000000000114 0.0 233 -234 0.0177409648895264 0.00999999999999091 0.00999999999999091 0.0 234 -235 0.0160009860992432 0.0200000000000102 0.0200000000000102 0.0 235 -236 0.0169141292572021 0.00999999999999091 0.00999999999999091 0.0 236 -237 0.0185301303863525 0.0200000000000102 0.0200000000000102 0.0 237 -238 0.0156500339508057 0.0200000000000102 0.0200000000000102 0.0 238 -239 0.0157279968261719 0.00999999999999091 0.00999999999999091 0.0 239 -240 0.041100025177002 0.0500000000000114 0.0500000000000114 0.0 240 -241 0.0159239768981934 0.00999999999999091 0.00999999999999091 0.0 241 -242 0.0158870220184326 0.0200000000000102 0.0200000000000102 0.0 242 -243 0.0157818794250488 0.00999999999999091 0.00999999999999091 0.0 243 -244 0.0156459808349609 0.0199999999999818 0.0199999999999818 0.0 244 -245 0.0205349922180176 0.0200000000000102 0.0200000000000102 0.0 245 -246 0.0176489353179932 0.0200000000000102 0.0200000000000102 0.0 246 -247 0.0406951904296875 0.039999999999992 0.039999999999992 0.0 247 -248 0.0161759853363037 0.00999999999999091 0.00999999999999091 0.0 248 -249 0.0186100006103516 0.0200000000000102 0.0200000000000102 0.0 249 -250 0.0158610343933105 0.0200000000000102 0.0200000000000102 0.0 250 -251 0.0157759189605713 0.00999999999999091 0.00999999999999091 0.0 251 -252 0.0157499313354492 0.0200000000000102 0.0200000000000102 0.0 252 -253 0.0412969589233398 0.039999999999992 0.039999999999992 0.0 253 -254 0.0160319805145264 0.0200000000000102 0.0200000000000102 0.0 254 -255 0.0159080028533936 0.00999999999999091 0.00999999999999091 0.0 255 -256 0.01580810546875 0.0199999999999818 0.0199999999999818 0.0 256 -257 0.0157821178436279 0.0200000000000102 0.0200000000000102 0.0 257 -258 0.015578031539917 0.00999999999999091 0.00999999999999091 0.0 258 -259 0.0155758857727051 0.0200000000000102 0.0200000000000102 0.0 259 -260 0.0406520366668701 0.039999999999992 0.039999999999992 0.0 260 -261 0.0193078517913818 0.0200000000000102 0.0200000000000102 0.0 261 -262 0.0160150527954102 0.00999999999999091 0.00999999999999091 0.0 262 -263 0.015920877456665 0.0200000000000102 0.0200000000000102 0.0 263 -264 0.0161728858947754 0.0200000000000102 0.0200000000000102 0.0 264 -265 0.0163869857788086 0.00999999999999091 0.00999999999999091 0.0 265 -266 0.0156819820404053 0.0200000000000102 0.0200000000000102 0.0 266 -267 0.0407660007476807 0.039999999999992 0.039999999999992 0.0 267 -268 0.015861988067627 0.00999999999999091 0.00999999999999091 0.0 268 -269 0.015887975692749 0.0200000000000102 0.0200000000000102 0.0 269 -270 0.0157639980316162 0.0199999999999818 0.0199999999999818 0.0 270 -271 0.0156021118164062 0.0100000000000193 0.0100000000000193 0.0 271 -272 0.0162060260772705 0.0199999999999818 0.0199999999999818 0.0 272 -273 0.0156650543212891 0.0100000000000193 0.0100000000000193 0.0 273 -274 0.0440959930419922 0.0499999999999829 0.0499999999999829 0.0 274 -275 0.0158300399780273 0.0100000000000193 0.0100000000000193 0.0 275 -276 0.0157949924468994 0.0199999999999818 0.0199999999999818 0.0 276 -277 0.0157911777496338 0.0200000000000102 0.0200000000000102 0.0 277 -278 0.0155570507049561 0.00999999999999091 0.00999999999999091 0.0 278 -279 0.0156610012054443 0.0200000000000102 0.0200000000000102 0.0 279 -280 0.015800952911377 0.00999999999999091 0.00999999999999091 0.0 280 -281 0.041050910949707 0.039999999999992 0.039999999999992 0.0 281 -282 0.0158300399780273 0.0200000000000102 0.0200000000000102 0.0 282 -283 0.0173659324645996 0.0200000000000102 0.0200000000000102 0.0 283 -284 0.0157661437988281 0.00999999999999091 0.00999999999999091 0.0 284 -285 0.0156910419464111 0.0200000000000102 0.0200000000000102 0.0 285 -286 0.0156378746032715 0.00999999999999091 0.00999999999999091 0.0 286 -287 0.0446128845214844 0.0500000000000114 0.0500000000000114 0.0 287 -288 0.0160419940948486 0.00999999999999091 0.00999999999999091 0.0 288 -289 0.0161609649658203 0.0200000000000102 0.0200000000000102 0.0 289 -290 0.0157930850982666 0.00999999999999091 0.00999999999999091 0.0 290 -291 0.0157232284545898 0.0200000000000102 0.0200000000000102 0.0 291 -292 0.0155608654022217 0.0199999999999818 0.0199999999999818 0.0 292 -293 0.0156910419464111 0.0100000000000193 0.0100000000000193 0.0 293 -294 0.0463647842407227 0.0499999999999829 0.0499999999999829 0.0 294 -295 0.0179910659790039 0.0200000000000102 0.0200000000000102 0.0 295 -296 0.0158979892730713 0.00999999999999091 0.00999999999999091 0.0 296 -297 0.0157630443572998 0.0200000000000102 0.0200000000000102 0.0 297 -298 0.0156371593475342 0.00999999999999091 0.00999999999999091 0.0 298 -299 0.0191469192504883 0.0200000000000102 0.0200000000000102 0.0 299 -300 0.0167911052703857 0.0199999999999818 0.0199999999999818 0.0 300 -301 0.0407388210296631 0.0400000000000205 0.0400000000000205 0.0 301 -302 0.0159130096435547 0.0199999999999818 0.0199999999999818 0.0 302 -303 0.0166409015655518 0.0100000000000193 0.0100000000000193 0.0 303 -304 0.0158700942993164 0.0199999999999818 0.0199999999999818 0.0 304 -305 0.0156099796295166 0.0200000000000102 0.0200000000000102 0.0 305 -306 0.0155818462371826 0.00999999999999091 0.00999999999999091 0.0 306 -307 0.0156898498535156 0.0200000000000102 0.0200000000000102 0.0 307 -308 0.0406138896942139 0.039999999999992 0.039999999999992 0.0 308 -309 0.0159690380096436 0.00999999999999091 0.00999999999999091 0.0 309 -310 0.0157949924468994 0.0200000000000102 0.0200000000000102 0.0 310 -311 0.0166599750518799 0.00999999999999091 0.00999999999999091 0.0 311 -312 0.0184519290924072 0.0200000000000102 0.0200000000000102 0.0 312 -313 0.0156970024108887 0.0200000000000102 0.0200000000000102 0.0 313 -314 0.0414550304412842 0.039999999999992 0.039999999999992 0.0 314 -315 0.0159659385681152 0.0200000000000102 0.0200000000000102 0.0 315 -316 0.015855073928833 0.00999999999999091 0.00999999999999091 0.0 316 -317 0.0157890319824219 0.0200000000000102 0.0200000000000102 0.0 317 -318 0.0157499313354492 0.00999999999999091 0.00999999999999091 0.0 318 -319 0.0157718658447266 0.0199999999999818 0.0199999999999818 0.0 319 -320 0.0155758857727051 0.0200000000000102 0.0200000000000102 0.0 320 -321 0.0406579971313477 0.039999999999992 0.039999999999992 0.0 321 -322 0.0160129070281982 0.0100000000000193 0.0100000000000193 0.0 322 -323 0.0166339874267578 0.0199999999999818 0.0199999999999818 0.0 323 -324 0.020615816116333 0.0200000000000102 0.0200000000000102 0.0 324 -325 0.016042947769165 0.0200000000000102 0.0200000000000102 0.0 325 -326 0.0157880783081055 0.00999999999999091 0.00999999999999091 0.0 326 -327 0.0156471729278564 0.0200000000000102 0.0200000000000102 0.0 327 -328 0.0406618118286133 0.039999999999992 0.039999999999992 0.0 328 -329 0.0161919593811035 0.00999999999999091 0.00999999999999091 0.0 329 -330 0.0158429145812988 0.0200000000000102 0.0200000000000102 0.0 330 -331 0.0157439708709717 0.0199999999999818 0.0199999999999818 0.0 331 -332 0.0156080722808838 0.0100000000000193 0.0100000000000193 0.0 332 -333 0.0156378746032715 0.0199999999999818 0.0199999999999818 0.0 333 -334 0.015779972076416 0.0100000000000193 0.0100000000000193 0.0 334 -335 0.0407891273498535 0.039999999999992 0.039999999999992 0.0 335 -336 0.0195779800415039 0.0200000000000102 0.0200000000000102 0.0 336 -337 0.0160758495330811 0.0199999999999818 0.0199999999999818 0.0 337 -338 0.0156791210174561 0.0200000000000102 0.0200000000000102 0.0 338 -339 0.015733003616333 0.00999999999999091 0.00999999999999091 0.0 339 -340 0.0158100128173828 0.0200000000000102 0.0200000000000102 0.0 340 -341 0.0405211448669434 0.039999999999992 0.039999999999992 0.0 341 -342 0.0158991813659668 0.0100000000000193 0.0100000000000193 0.0 342 -343 0.0157461166381836 0.0199999999999818 0.0199999999999818 0.0 343 -344 0.0166110992431641 0.0200000000000102 0.0200000000000102 0.0 344 -345 0.0219199657440186 0.0199999999999818 0.0199999999999818 0.0 345 -346 0.0155389308929443 0.0100000000000193 0.0100000000000193 0.0 346 -347 0.0156941413879395 0.0199999999999818 0.0199999999999818 0.0 347 -348 0.0439140796661377 0.0400000000000205 0.0400000000000205 0.0 348 -349 0.016746997833252 0.0199999999999818 0.0199999999999818 0.0 349 -350 0.0159060955047607 0.0200000000000102 0.0200000000000102 0.0 350 -351 0.0158212184906006 0.00999999999999091 0.00999999999999091 0.0 351 -352 0.0157208442687988 0.0200000000000102 0.0200000000000102 0.0 352 -353 0.0156140327453613 0.00999999999999091 0.00999999999999091 0.0 353 -354 0.0168178081512451 0.0200000000000102 0.0200000000000102 0.0 354 -355 0.0407528877258301 0.039999999999992 0.039999999999992 0.0 355 -356 0.0157878398895264 0.0200000000000102 0.0200000000000102 0.0 356 -357 0.0157828330993652 0.00999999999999091 0.00999999999999091 0.0 357 -358 0.0156841278076172 0.0200000000000102 0.0200000000000102 0.0 358 -359 0.0156099796295166 0.00999999999999091 0.00999999999999091 0.0 359 -360 0.015535831451416 0.0200000000000102 0.0200000000000102 0.0 360 -361 0.0171799659729004 0.0199999999999818 0.0199999999999818 0.0 361 -362 0.044562816619873 0.0400000000000205 0.0400000000000205 0.0 362 -363 0.0159769058227539 0.0199999999999818 0.0199999999999818 0.0 363 -364 0.0167310237884521 0.0100000000000193 0.0100000000000193 0.0 364 -365 0.0156519412994385 0.0199999999999818 0.0199999999999818 0.0 365 -366 0.015625 0.0200000000000102 0.0200000000000102 0.0 366 -367 0.0161309242248535 0.00999999999999091 0.00999999999999091 0.0 367 -368 0.0406661033630371 0.039999999999992 0.039999999999992 0.0 368 -369 0.016185998916626 0.0200000000000102 0.0200000000000102 0.0 369 -370 0.0159850120544434 0.00999999999999091 0.00999999999999091 0.0 370 -371 0.0159509181976318 0.0200000000000102 0.0200000000000102 0.0 371 -372 0.015861988067627 0.0200000000000102 0.0200000000000102 0.0 372 -373 0.0157780647277832 0.00999999999999091 0.00999999999999091 0.0 373 -374 0.019244909286499 0.0200000000000102 0.0200000000000102 0.0 374 -375 0.0423779487609863 0.039999999999992 0.039999999999992 0.0 375 -376 0.0160589218139648 0.0200000000000102 0.0200000000000102 0.0 376 -377 0.0159640312194824 0.0199999999999818 0.0199999999999818 0.0 377 -378 0.0158970355987549 0.0100000000000193 0.0100000000000193 0.0 378 -379 0.0158810615539551 0.0199999999999818 0.0199999999999818 0.0 379 -380 0.0159378051757812 0.0100000000000193 0.0100000000000193 0.0 380 -381 0.0156619548797607 0.0199999999999818 0.0199999999999818 0.0 381 -382 0.0407819747924805 0.039999999999992 0.039999999999992 0.0 382 -383 0.0159389972686768 0.0200000000000102 0.0200000000000102 0.0 383 -384 0.0160889625549316 0.00999999999999091 0.00999999999999091 0.0 384 -385 0.0158150196075439 0.0200000000000102 0.0200000000000102 0.0 385 -386 0.0164110660552979 0.0200000000000102 0.0200000000000102 0.0 386 -387 0.0180950164794922 0.00999999999999091 0.00999999999999091 0.0 387 -388 0.0157089233398438 0.0200000000000102 0.0200000000000102 0.0 388 -389 0.0411288738250732 0.039999999999992 0.039999999999992 0.0 389 -390 0.0159080028533936 0.0200000000000102 0.0200000000000102 0.0 390 -391 0.0158810615539551 0.00999999999999091 0.00999999999999091 0.0 391 -392 0.0157151222229004 0.0200000000000102 0.0200000000000102 0.0 392 -393 0.0156629085540771 0.00999999999999091 0.00999999999999091 0.0 393 -394 0.0157067775726318 0.0199999999999818 0.0199999999999818 0.0 394 -395 0.0479769706726074 0.0500000000000114 0.0500000000000114 0.0 395 -396 0.01609206199646 0.00999999999999091 0.00999999999999091 0.0 396 -397 0.0158951282501221 0.0200000000000102 0.0200000000000102 0.0 397 -398 0.0161418914794922 0.00999999999999091 0.00999999999999091 0.0 398 -399 0.0201709270477295 0.0200000000000102 0.0200000000000102 0.0 399 -400 0.0157439708709717 0.0100000000000193 0.0100000000000193 0.0 400 -401 0.0157320499420166 0.0199999999999818 0.0199999999999818 0.0 401 -402 0.0412960052490234 0.0400000000000205 0.0400000000000205 0.0 402 -403 0.0162639617919922 0.00999999999999091 0.00999999999999091 0.0 403 -404 0.0161092281341553 0.0200000000000102 0.0200000000000102 0.0 404 -405 0.0159099102020264 0.0199999999999818 0.0199999999999818 0.0 405 -406 0.0157670974731445 0.00999999999999091 0.00999999999999091 0.0 406 -407 0.0156850814819336 0.0200000000000102 0.0200000000000102 0.0 407 -408 0.0156769752502441 0.00999999999999091 0.00999999999999091 0.0 408 -409 0.0408320426940918 0.0400000000000205 0.0400000000000205 0.0 409 -410 0.0158789157867432 0.0199999999999818 0.0199999999999818 0.0 410 -411 0.0202319622039795 0.0200000000000102 0.0200000000000102 0.0 411 -412 0.0158510208129883 0.0200000000000102 0.0200000000000102 0.0 412 -413 0.0156679153442383 0.00999999999999091 0.00999999999999091 0.0 413 -414 0.0159661769866943 0.0200000000000102 0.0200000000000102 0.0 414 -415 0.0161230564117432 0.00999999999999091 0.00999999999999091 0.0 415 -416 0.0410380363464355 0.0500000000000114 0.0500000000000114 0.0 416 -417 0.0158960819244385 0.00999999999999091 0.00999999999999091 0.0 417 -418 0.0158650875091553 0.0199999999999818 0.0199999999999818 0.0 418 -419 0.0157840251922607 0.0100000000000193 0.0100000000000193 0.0 419 -420 0.0155539512634277 0.0199999999999818 0.0199999999999818 0.0 420 -421 0.0157678127288818 0.0100000000000193 0.0100000000000193 0.0 421 -422 0.0412240028381348 0.0499999999999829 0.0499999999999829 0.0 422 -423 0.0191640853881836 0.0100000000000193 0.0100000000000193 0.0 423 -424 0.0165059566497803 0.0199999999999818 0.0199999999999818 0.0 424 -425 0.0159070491790771 0.0200000000000102 0.0200000000000102 0.0 425 -426 0.0158569812774658 0.00999999999999091 0.00999999999999091 0.0 426 -427 0.0156240463256836 0.0200000000000102 0.0200000000000102 0.0 427 -428 0.0156888961791992 0.00999999999999091 0.00999999999999091 0.0 428 -429 0.0410318374633789 0.0500000000000114 0.0500000000000114 0.0 429 -430 0.0159420967102051 0.00999999999999091 0.00999999999999091 0.0 430 -431 0.0159289836883545 0.0200000000000102 0.0200000000000102 0.0 431 -432 0.0157718658447266 0.00999999999999091 0.00999999999999091 0.0 432 -433 0.0156440734863281 0.0200000000000102 0.0200000000000102 0.0 433 -434 0.0156459808349609 0.00999999999999091 0.00999999999999091 0.0 434 -435 0.0156629085540771 0.0200000000000102 0.0200000000000102 0.0 435 -436 0.043510913848877 0.039999999999992 0.039999999999992 0.0 436 -437 0.0160140991210938 0.0200000000000102 0.0200000000000102 0.0 437 -438 0.015984058380127 0.0199999999999818 0.0199999999999818 0.0 438 -439 0.0160889625549316 0.0100000000000193 0.0100000000000193 0.0 439 -440 0.0160849094390869 0.0199999999999818 0.0199999999999818 0.0 440 -441 0.015700101852417 0.0100000000000193 0.0100000000000193 0.0 441 -442 0.0157110691070557 0.0199999999999818 0.0199999999999818 0.0 442 -443 0.0212619304656982 0.0199999999999818 0.0199999999999818 0.0 443 -444 0.0226690769195557 0.0200000000000102 0.0200000000000102 0.0 444 -445 0.0157680511474609 0.0200000000000102 0.0200000000000102 0.0 445 -446 0.015690803527832 0.00999999999999091 0.00999999999999091 0.0 446 -447 0.015653133392334 0.0200000000000102 0.0200000000000102 0.0 447 -448 0.0156688690185547 0.0199999999999818 0.0199999999999818 0.0 448 -449 0.0439548492431641 0.0400000000000205 0.0400000000000205 0.0 449 -450 0.0160410404205322 0.0199999999999818 0.0199999999999818 0.0 450 -451 0.0159320831298828 0.0100000000000193 0.0100000000000193 0.0 451 -452 0.0157608985900879 0.0199999999999818 0.0199999999999818 0.0 452 -453 0.0166118144989014 0.0100000000000193 0.0100000000000193 0.0 453 -454 0.0155959129333496 0.0199999999999818 0.0199999999999818 0.0 454 -455 0.0157961845397949 0.0200000000000102 0.0200000000000102 0.0 455 -456 0.0407929420471191 0.039999999999992 0.039999999999992 0.0 456 -457 0.0160069465637207 0.00999999999999091 0.00999999999999091 0.0 457 -458 0.015955924987793 0.0200000000000102 0.0200000000000102 0.0 458 -459 0.015923023223877 0.0200000000000102 0.0200000000000102 0.0 459 -460 0.0157721042633057 0.00999999999999091 0.00999999999999091 0.0 460 -461 0.0170860290527344 0.0200000000000102 0.0200000000000102 0.0 461 -462 0.0182251930236816 0.0199999999999818 0.0199999999999818 0.0 462 -463 0.0413410663604736 0.0400000000000205 0.0400000000000205 0.0 463 -464 0.0165669918060303 0.00999999999999091 0.00999999999999091 0.0 464 -465 0.0159049034118652 0.0200000000000102 0.0200000000000102 0.0 465 -466 0.0158209800720215 0.0199999999999818 0.0199999999999818 0.0 466 -467 0.0156691074371338 0.0100000000000193 0.0100000000000193 0.0 467 -468 0.0155670642852783 0.0199999999999818 0.0199999999999818 0.0 468 -469 0.0407600402832031 0.039999999999992 0.039999999999992 0.0 469 -470 0.0160460472106934 0.0100000000000193 0.0100000000000193 0.0 470 -471 0.0159029960632324 0.0199999999999818 0.0199999999999818 0.0 471 -472 0.0159380435943604 0.0200000000000102 0.0200000000000102 0.0 472 -473 0.0165109634399414 0.00999999999999091 0.00999999999999091 0.0 473 -474 0.0189468860626221 0.0200000000000102 0.0200000000000102 0.0 474 -475 0.0156781673431396 0.0200000000000102 0.0200000000000102 0.0 475 -476 0.0406448841094971 0.039999999999992 0.039999999999992 0.0 476 -477 0.0160341262817383 0.00999999999999091 0.00999999999999091 0.0 477 -478 0.0160388946533203 0.0200000000000102 0.0200000000000102 0.0 478 -479 0.0163199901580811 0.0200000000000102 0.0200000000000102 0.0 479 -480 0.0158259868621826 0.00999999999999091 0.00999999999999091 0.0 480 -481 0.0156810283660889 0.0199999999999818 0.0199999999999818 0.0 481 -482 0.0157148838043213 0.0100000000000193 0.0100000000000193 0.0 482 -483 0.0412290096282959 0.039999999999992 0.039999999999992 0.0 483 -484 0.0160889625549316 0.0200000000000102 0.0200000000000102 0.0 484 -485 0.0160059928894043 0.0199999999999818 0.0199999999999818 0.0 485 -486 0.0181820392608643 0.0200000000000102 0.0200000000000102 0.0 486 -487 0.0166311264038086 0.00999999999999091 0.00999999999999091 0.0 487 -488 0.0156669616699219 0.0200000000000102 0.0200000000000102 0.0 488 -489 0.0157821178436279 0.00999999999999091 0.00999999999999091 0.0 489 -490 0.0410869121551514 0.0400000000000205 0.0400000000000205 0.0 490 -491 0.0159239768981934 0.0199999999999818 0.0199999999999818 0.0 491 -492 0.0158579349517822 0.0200000000000102 0.0200000000000102 0.0 492 -493 0.0157217979431152 0.00999999999999091 0.00999999999999091 0.0 493 -494 0.021359920501709 0.0200000000000102 0.0200000000000102 0.0 494 -495 0.0177481174468994 0.0199999999999818 0.0199999999999818 0.0 495 -496 0.0405080318450928 0.0400000000000205 0.0400000000000205 0.0 496 -497 0.0161361694335938 0.0199999999999818 0.0199999999999818 0.0 497 -498 0.0198690891265869 0.0200000000000102 0.0200000000000102 0.0 498 -499 0.0160260200500488 0.00999999999999091 0.00999999999999091 0.0 499 -500 0.0157639980316162 0.0200000000000102 0.0200000000000102 0.0 500 -501 0.0156447887420654 0.0200000000000102 0.0200000000000102 0.0 501 -502 0.0156769752502441 0.00999999999999091 0.00999999999999091 0.0 502 -503 0.0437228679656982 0.039999999999992 0.039999999999992 0.0 503 -504 0.0161030292510986 0.0200000000000102 0.0200000000000102 0.0 504 -505 0.016016960144043 0.0199999999999818 0.0199999999999818 0.0 505 -506 0.0158760547637939 0.0100000000000193 0.0100000000000193 0.0 506 -507 0.01578688621521 0.0199999999999818 0.0199999999999818 0.0 507 -508 0.0156271457672119 0.0100000000000193 0.0100000000000193 0.0 508 -509 0.0157058238983154 0.0199999999999818 0.0199999999999818 0.0 509 -510 0.0442900657653809 0.0400000000000205 0.0400000000000205 0.0 510 -511 0.017132043838501 0.0199999999999818 0.0199999999999818 0.0 511 -512 0.0159881114959717 0.0200000000000102 0.0200000000000102 0.0 512 -513 0.0160439014434814 0.00999999999999091 0.00999999999999091 0.0 513 -514 0.0164890289306641 0.0200000000000102 0.0200000000000102 0.0 514 -515 0.0156888961791992 0.0200000000000102 0.0200000000000102 0.0 515 -516 0.040363073348999 0.039999999999992 0.039999999999992 0.0 516 -517 0.0161979198455811 0.00999999999999091 0.00999999999999091 0.0 517 -518 0.0159780979156494 0.0200000000000102 0.0200000000000102 0.0 518 -519 0.0159690380096436 0.00999999999999091 0.00999999999999091 0.0 519 -520 0.015887975692749 0.0200000000000102 0.0200000000000102 0.0 520 -521 0.0156509876251221 0.0199999999999818 0.0199999999999818 0.0 521 -522 0.0156340599060059 0.0100000000000193 0.0100000000000193 0.0 522 -523 0.0451259613037109 0.0499999999999829 0.0499999999999829 0.0 523 -524 0.0159039497375488 0.0100000000000193 0.0100000000000193 0.0 524 -525 0.0158360004425049 0.0199999999999818 0.0199999999999818 0.0 525 -526 0.0157630443572998 0.0100000000000193 0.0100000000000193 0.0 526 -527 0.0156168937683105 0.0199999999999818 0.0199999999999818 0.0 527 -528 0.0156149864196777 0.0200000000000102 0.0200000000000102 0.0 528 -529 0.015984058380127 0.00999999999999091 0.00999999999999091 0.0 529 -530 0.040830135345459 0.039999999999992 0.039999999999992 0.0 530 -531 0.0160219669342041 0.0200000000000102 0.0200000000000102 0.0 531 -532 0.015923023223877 0.0200000000000102 0.0200000000000102 0.0 532 -533 0.0159180164337158 0.00999999999999091 0.00999999999999091 0.0 533 -534 0.0157890319824219 0.0200000000000102 0.0200000000000102 0.0 534 -535 0.0156989097595215 0.00999999999999091 0.00999999999999091 0.0 535 -536 0.043813943862915 0.0500000000000114 0.0500000000000114 0.0 536 -537 0.0161550045013428 0.00999999999999091 0.00999999999999091 0.0 537 -538 0.0161418914794922 0.0200000000000102 0.0200000000000102 0.0 538 -539 0.016010046005249 0.00999999999999091 0.00999999999999091 0.0 539 -540 0.015833854675293 0.0100000000000193 0.0100000000000193 0.0 540 -541 0.0156919956207275 0.0199999999999818 0.0199999999999818 0.0 541 -542 0.0156600475311279 0.0100000000000193 0.0100000000000193 0.0 542 -543 0.0471100807189941 0.0499999999999829 0.0499999999999829 0.0 543 -544 0.0160348415374756 0.0200000000000102 0.0200000000000102 0.0 544 -545 0.0160539150238037 0.00999999999999091 0.00999999999999091 0.0 545 -546 0.0158519744873047 0.0200000000000102 0.0200000000000102 0.0 546 -547 0.0158119201660156 0.00999999999999091 0.00999999999999091 0.0 547 -548 0.0178709030151367 0.0200000000000102 0.0200000000000102 0.0 548 -549 0.0169069766998291 0.0199999999999818 0.0199999999999818 0.0 549 -550 0.0407388210296631 0.0400000000000205 0.0400000000000205 0.0 550 -551 0.0159931182861328 0.0199999999999818 0.0199999999999818 0.0 551 -552 0.0167689323425293 0.0100000000000193 0.0100000000000193 0.0 552 -553 0.015841007232666 0.0199999999999818 0.0199999999999818 0.0 553 -554 0.0158300399780273 0.0100000000000193 0.0100000000000193 0.0 554 -555 0.0156581401824951 0.0199999999999818 0.0199999999999818 0.0 555 -556 0.0406780242919922 0.039999999999992 0.039999999999992 0.0 556 -557 0.0162060260772705 0.0200000000000102 0.0200000000000102 0.0 557 -558 0.0160999298095703 0.00999999999999091 0.00999999999999091 0.0 558 -559 0.0159580707550049 0.0200000000000102 0.0200000000000102 0.0 559 -560 0.0159261226654053 0.00999999999999091 0.00999999999999091 0.0 560 -561 0.0199720859527588 0.0200000000000102 0.0200000000000102 0.0 561 -562 0.0157170295715332 0.0200000000000102 0.0200000000000102 0.0 562 -563 0.041780948638916 0.039999999999992 0.039999999999992 0.0 563 -564 0.0160281658172607 0.0200000000000102 0.0200000000000102 0.0 564 -565 0.0160350799560547 0.00999999999999091 0.00999999999999091 0.0 565 -566 0.0158600807189941 0.0200000000000102 0.0200000000000102 0.0 566 -567 0.0157890319824219 0.0199999999999818 0.0199999999999818 0.0 567 -568 0.01568603515625 0.00999999999999091 0.00999999999999091 0.0 568 -569 0.0157349109649658 0.0200000000000102 0.0200000000000102 0.0 569 -570 0.0407240390777588 0.039999999999992 0.039999999999992 0.0 570 -571 0.0159690380096436 0.0100000000000193 0.0100000000000193 0.0 571 -572 0.0166740417480469 0.0199999999999818 0.0199999999999818 0.0 572 -573 0.0183789730072021 0.0200000000000102 0.0200000000000102 0.0 573 -574 0.0158569812774658 0.0200000000000102 0.0200000000000102 0.0 574 -575 0.0156340599060059 0.00999999999999091 0.00999999999999091 0.0 575 -576 0.0408451557159424 0.039999999999992 0.039999999999992 0.0 576 -577 0.0160448551177979 0.0200000000000102 0.0200000000000102 0.0 577 -578 0.0162789821624756 0.00999999999999091 0.00999999999999091 0.0 578 -579 0.0159311294555664 0.0200000000000102 0.0200000000000102 0.0 579 -580 0.0158848762512207 0.0199999999999818 0.0199999999999818 0.0 580 -581 0.0157999992370605 0.0100000000000193 0.0100000000000193 0.0 581 -582 0.0156741142272949 0.0199999999999818 0.0199999999999818 0.0 582 -583 0.0409140586853027 0.0400000000000205 0.0400000000000205 0.0 583 -584 0.0159211158752441 0.0199999999999818 0.0199999999999818 0.0 584 -585 0.0184950828552246 0.0100000000000193 0.0100000000000193 0.0 585 -586 0.0168490409851074 0.0199999999999818 0.0199999999999818 0.0 586 -587 0.0156459808349609 0.0200000000000102 0.0200000000000102 0.0 587 -588 0.0156338214874268 0.00999999999999091 0.00999999999999091 0.0 588 -589 0.0159139633178711 0.0200000000000102 0.0200000000000102 0.0 589 -590 0.0407509803771973 0.039999999999992 0.039999999999992 0.0 590 -591 0.0159850120544434 0.0100000000000193 0.0100000000000193 0.0 591 -592 0.0159389972686768 0.0199999999999818 0.0199999999999818 0.0 592 -593 0.0213720798492432 0.0200000000000102 0.0200000000000102 0.0 593 -594 0.0177850723266602 0.0199999999999818 0.0199999999999818 0.0 594 -595 0.0157310962677002 0.0200000000000102 0.0200000000000102 0.0 595 -596 0.0403420925140381 0.039999999999992 0.039999999999992 0.0 596 -597 0.0190529823303223 0.0200000000000102 0.0200000000000102 0.0 597 -598 0.0169448852539062 0.00999999999999091 0.00999999999999091 0.0 598 -599 0.0159680843353271 0.0200000000000102 0.0200000000000102 0.0 599 -600 0.0158801078796387 0.00999999999999091 0.00999999999999091 0.0 600 -601 0.0156979560852051 0.0200000000000102 0.0200000000000102 0.0 601 -602 0.0156271457672119 0.0200000000000102 0.0200000000000102 0.0 602 -603 0.0415568351745605 0.039999999999992 0.039999999999992 0.0 603 -604 0.0159718990325928 0.00999999999999091 0.00999999999999091 0.0 604 -605 0.0159180164337158 0.0200000000000102 0.0200000000000102 0.0 605 -606 0.0158648490905762 0.0199999999999818 0.0199999999999818 0.0 606 -607 0.0156810283660889 0.0100000000000193 0.0100000000000193 0.0 607 -608 0.0156228542327881 0.0199999999999818 0.0199999999999818 0.0 608 -609 0.0157201290130615 0.0100000000000193 0.0100000000000193 0.0 609 -610 0.0439960956573486 0.0499999999999829 0.0499999999999829 0.0 610 -611 0.0160610675811768 0.0100000000000193 0.0100000000000193 0.0 611 -612 0.0161979198455811 0.0199999999999818 0.0199999999999818 0.0 612 -613 0.0165619850158691 0.0200000000000102 0.0200000000000102 0.0 613 -614 0.0157890319824219 0.00999999999999091 0.00999999999999091 0.0 614 -615 0.0156469345092773 0.0200000000000102 0.0200000000000102 0.0 615 -616 0.0402541160583496 0.039999999999992 0.039999999999992 0.0 616 -617 0.0161638259887695 0.00999999999999091 0.00999999999999091 0.0 617 -618 0.0160119533538818 0.0200000000000102 0.0200000000000102 0.0 618 -619 0.0159289836883545 0.0200000000000102 0.0200000000000102 0.0 619 -620 0.0159239768981934 0.00999999999999091 0.00999999999999091 0.0 620 -621 0.0156819820404053 0.0200000000000102 0.0200000000000102 0.0 621 -622 0.0163209438323975 0.00999999999999091 0.00999999999999091 0.0 622 -623 0.0430841445922852 0.0500000000000114 0.0500000000000114 0.0 623 -624 0.0160331726074219 0.00999999999999091 0.00999999999999091 0.0 624 -625 0.0159151554107666 0.0200000000000102 0.0200000000000102 0.0 625 -626 0.0158572196960449 0.00999999999999091 0.00999999999999091 0.0 626 -627 0.0157380104064941 0.0100000000000193 0.0100000000000193 0.0 627 -628 0.015657901763916 0.0199999999999818 0.0199999999999818 0.0 628 -629 0.016016960144043 0.0100000000000193 0.0100000000000193 0.0 629 -630 0.0407459735870361 0.039999999999992 0.039999999999992 0.0 630 -631 0.0159480571746826 0.0199999999999818 0.0199999999999818 0.0 631 -632 0.0159869194030762 0.0200000000000102 0.0200000000000102 0.0 632 -633 0.0159099102020264 0.00999999999999091 0.00999999999999091 0.0 633 -634 0.0157899856567383 0.0200000000000102 0.0200000000000102 0.0 634 -635 0.0156879425048828 0.00999999999999091 0.00999999999999091 0.0 635 -636 0.0428619384765625 0.0500000000000114 0.0500000000000114 0.0 636 -637 0.0161869525909424 0.00999999999999091 0.00999999999999091 0.0 637 -638 0.0162138938903809 0.0200000000000102 0.0200000000000102 0.0 638 -639 0.0158801078796387 0.00999999999999091 0.00999999999999091 0.0 639 -640 0.0158560276031494 0.0200000000000102 0.0200000000000102 0.0 640 -641 0.0156440734863281 0.00999999999999091 0.00999999999999091 0.0 641 -642 0.0156350135803223 0.0200000000000102 0.0200000000000102 0.0 642 -643 0.047083854675293 0.0499999999999829 0.0499999999999829 0.0 643 -644 0.0159060955047607 0.0100000000000193 0.0100000000000193 0.0 644 -645 0.0158288478851318 0.0199999999999818 0.0199999999999818 0.0 645 -646 0.0157370567321777 0.0200000000000102 0.0200000000000102 0.0 646 -647 0.0155889987945557 0.00999999999999091 0.00999999999999091 0.0 647 -648 0.0187828540802002 0.0200000000000102 0.0200000000000102 0.0 648 -649 0.0158119201660156 0.0200000000000102 0.0200000000000102 0.0 649 -650 0.0408198833465576 0.039999999999992 0.039999999999992 0.0 650 -651 0.0160138607025146 0.00999999999999091 0.00999999999999091 0.0 651 -652 0.0169661045074463 0.0200000000000102 0.0200000000000102 0.0 652 -653 0.0158448219299316 0.0200000000000102 0.0200000000000102 0.0 653 -654 0.0157639980316162 0.00999999999999091 0.00999999999999091 0.0 654 -655 0.0156838893890381 0.0199999999999818 0.0199999999999818 0.0 655 -656 0.0403389930725098 0.0400000000000205 0.0400000000000205 0.0 656 -657 0.0161681175231934 0.00999999999999091 0.00999999999999091 0.0 657 -658 0.015963077545166 0.0200000000000102 0.0200000000000102 0.0 658 -659 0.0159058570861816 0.0199999999999818 0.0199999999999818 0.0 659 -660 0.0177428722381592 0.0100000000000193 0.0100000000000193 0.0 660 -661 0.0171470642089844 0.0199999999999818 0.0199999999999818 0.0 661 -662 0.015761137008667 0.0200000000000102 0.0200000000000102 0.0 662 -663 0.0421710014343262 0.039999999999992 0.039999999999992 0.0 663 -664 0.0159869194030762 0.0100000000000193 0.0100000000000193 0.0 664 -665 0.0158960819244385 0.0199999999999818 0.0199999999999818 0.0 665 -666 0.0158309936523438 0.0200000000000102 0.0200000000000102 0.0 666 -667 0.0156588554382324 0.00999999999999091 0.00999999999999091 0.0 667 -668 0.0155930519104004 0.0200000000000102 0.0200000000000102 0.0 668 -669 0.0157339572906494 0.00999999999999091 0.00999999999999091 0.0 669 -670 0.0408949851989746 0.039999999999992 0.039999999999992 0.0 670 -671 0.0166690349578857 0.0200000000000102 0.0200000000000102 0.0 671 -672 0.015967845916748 0.0200000000000102 0.0200000000000102 0.0 672 -673 0.0183408260345459 0.0199999999999818 0.0199999999999818 0.0 673 -674 0.0157818794250488 0.0100000000000193 0.0100000000000193 0.0 674 -675 0.0156641006469727 0.0199999999999818 0.0199999999999818 0.0 675 -676 0.0403289794921875 0.0400000000000205 0.0400000000000205 0.0 676 -677 0.0160641670227051 0.00999999999999091 0.00999999999999091 0.0 677 -678 0.0162630081176758 0.0200000000000102 0.0200000000000102 0.0 678 -679 0.0158939361572266 0.0199999999999818 0.0199999999999818 0.0 679 -680 0.0158121585845947 0.00999999999999091 0.00999999999999091 0.0 680 -681 0.0155899524688721 0.0200000000000102 0.0200000000000102 0.0 681 -682 0.0156369209289551 0.00999999999999091 0.00999999999999091 0.0 682 -683 0.0411529541015625 0.0400000000000205 0.0400000000000205 0.0 683 -684 0.0160119533538818 0.0199999999999818 0.0199999999999818 0.0 684 -685 0.0188088417053223 0.0200000000000102 0.0200000000000102 0.0 685 -686 0.0159080028533936 0.0200000000000102 0.0200000000000102 0.0 686 -687 0.0157148838043213 0.00999999999999091 0.00999999999999091 0.0 687 -688 0.0155959129333496 0.0200000000000102 0.0200000000000102 0.0 688 -689 0.0412189960479736 0.039999999999992 0.039999999999992 0.0 689 -690 0.015995979309082 0.00999999999999091 0.00999999999999091 0.0 690 -691 0.0159540176391602 0.0200000000000102 0.0200000000000102 0.0 691 -692 0.015949010848999 0.0199999999999818 0.0199999999999818 0.0 692 -693 0.0234458446502686 0.0200000000000102 0.0200000000000102 0.0 693 -694 0.0157320499420166 0.0200000000000102 0.0200000000000102 0.0 694 -695 0.0157339572906494 0.00999999999999091 0.00999999999999091 0.0 695 -696 0.0404260158538818 0.039999999999992 0.039999999999992 0.0 696 -697 0.0190789699554443 0.0200000000000102 0.0200000000000102 0.0 697 -698 0.0159289836883545 0.0200000000000102 0.0200000000000102 0.0 698 -699 0.0157830715179443 0.00999999999999091 0.00999999999999091 0.0 699 -700 0.0156319141387939 0.0200000000000102 0.0200000000000102 0.0 700 -701 0.01556396484375 0.00999999999999091 0.00999999999999091 0.0 701 -702 0.0156660079956055 0.0200000000000102 0.0200000000000102 0.0 702 -703 0.0413651466369629 0.039999999999992 0.039999999999992 0.0 703 -704 0.0159580707550049 0.0199999999999818 0.0199999999999818 0.0 704 -705 0.0158989429473877 0.0100000000000193 0.0100000000000193 0.0 705 -706 0.0158150196075439 0.0199999999999818 0.0199999999999818 0.0 706 -707 0.0156781673431396 0.0100000000000193 0.0100000000000193 0.0 707 -708 0.0156269073486328 0.0199999999999818 0.0199999999999818 0.0 708 -709 0.041424036026001 0.0400000000000205 0.0400000000000205 0.0 709 -710 0.0184199810028076 0.0199999999999818 0.0199999999999818 0.0 710 -711 0.0159978866577148 0.0200000000000102 0.0200000000000102 0.0 711 -712 0.0160419940948486 0.00999999999999091 0.00999999999999091 0.0 712 -713 0.016589879989624 0.0200000000000102 0.0200000000000102 0.0 713 -714 0.0156559944152832 0.0200000000000102 0.0200000000000102 0.0 714 -715 0.0157039165496826 0.00999999999999091 0.00999999999999091 0.0 715 -716 0.0408508777618408 0.039999999999992 0.039999999999992 0.0 716 -717 0.0159609317779541 0.0200000000000102 0.0200000000000102 0.0 717 -718 0.0159869194030762 0.00999999999999091 0.00999999999999091 0.0 718 -719 0.0159101486206055 0.0200000000000102 0.0200000000000102 0.0 719 -720 0.0156970024108887 0.0199999999999818 0.0199999999999818 0.0 720 -721 0.0155429840087891 0.0100000000000193 0.0100000000000193 0.0 721 -722 0.0163400173187256 0.0199999999999818 0.0199999999999818 0.0 722 -723 0.0429699420928955 0.0400000000000205 0.0400000000000205 0.0 723 -724 0.0160400867462158 0.0199999999999818 0.0199999999999818 0.0 724 -725 0.0159778594970703 0.0100000000000193 0.0100000000000193 0.0 725 -726 0.015826940536499 0.0199999999999818 0.0199999999999818 0.0 726 -727 0.0156888961791992 0.0100000000000193 0.0100000000000193 0.0 727 -728 0.0159649848937988 0.0199999999999818 0.0199999999999818 0.0 728 -729 0.0405631065368652 0.039999999999992 0.039999999999992 0.0 729 -730 0.0161111354827881 0.0200000000000102 0.0200000000000102 0.0 730 -731 0.0158760547637939 0.00999999999999091 0.00999999999999091 0.0 731 -732 0.0159549713134766 0.0200000000000102 0.0200000000000102 0.0 732 -733 0.0157599449157715 0.00999999999999091 0.00999999999999091 0.0 733 -734 0.0157549381256104 0.0200000000000102 0.0200000000000102 0.0 734 -735 0.0156841278076172 0.0200000000000102 0.0200000000000102 0.0 735 -736 0.0429198741912842 0.039999999999992 0.039999999999992 0.0 736 -737 0.0159552097320557 0.0200000000000102 0.0200000000000102 0.0 737 -738 0.016150951385498 0.00999999999999091 0.00999999999999091 0.0 738 -739 0.0157721042633057 0.0200000000000102 0.0200000000000102 0.0 739 -740 0.0156459808349609 0.00999999999999091 0.00999999999999091 0.0 740 -741 0.0156309604644775 0.0200000000000102 0.0200000000000102 0.0 741 -742 0.0458109378814697 0.039999999999992 0.039999999999992 0.0 742 -743 0.0170071125030518 0.0199999999999818 0.0199999999999818 0.0 743 -744 0.0160090923309326 0.0200000000000102 0.0200000000000102 0.0 744 -745 0.0158901214599609 0.00999999999999091 0.00999999999999091 0.0 745 -746 0.0158569812774658 0.0200000000000102 0.0200000000000102 0.0 746 -747 0.0156040191650391 0.0200000000000102 0.0200000000000102 0.0 747 -748 0.0188460350036621 0.00999999999999091 0.00999999999999091 0.0 748 -749 0.0407531261444092 0.0500000000000114 0.0500000000000114 0.0 749 -750 0.0160620212554932 0.00999999999999091 0.00999999999999091 0.0 750 -751 0.0160109996795654 0.0200000000000102 0.0200000000000102 0.0 751 -752 0.0167930126190186 0.00999999999999091 0.00999999999999091 0.0 752 -753 0.0158519744873047 0.0200000000000102 0.0200000000000102 0.0 753 -754 0.0157589912414551 0.0199999999999818 0.0199999999999818 0.0 754 -755 0.0156669616699219 0.00999999999999091 0.00999999999999091 0.0 755 -756 0.0408079624176025 0.0400000000000205 0.0400000000000205 0.0 756 -757 0.0160200595855713 0.0199999999999818 0.0199999999999818 0.0 757 -758 0.015981912612915 0.0100000000000193 0.0100000000000193 0.0 758 -759 0.0158510208129883 0.0199999999999818 0.0199999999999818 0.0 759 -760 0.0184319019317627 0.0200000000000102 0.0200000000000102 0.0 760 -761 0.0160219669342041 0.0200000000000102 0.0200000000000102 0.0 761 -762 0.0413029193878174 0.039999999999992 0.039999999999992 0.0 762 -763 0.0162460803985596 0.00999999999999091 0.00999999999999091 0.0 763 -764 0.0159189701080322 0.0200000000000102 0.0200000000000102 0.0 764 -765 0.0158321857452393 0.00999999999999091 0.00999999999999091 0.0 765 -766 0.0157649517059326 0.0200000000000102 0.0200000000000102 0.0 766 -767 0.0156459808349609 0.0199999999999818 0.0199999999999818 0.0 767 -768 0.0156371593475342 0.0100000000000193 0.0100000000000193 0.0 768 -769 0.042356014251709 0.039999999999992 0.039999999999992 0.0 769 -770 0.0159518718719482 0.0200000000000102 0.0200000000000102 0.0 770 -771 0.0165510177612305 0.0199999999999818 0.0199999999999818 0.0 771 -772 0.0166161060333252 0.0100000000000193 0.0100000000000193 0.0 772 -773 0.0192360877990723 0.0199999999999818 0.0199999999999818 0.0 773 -774 0.0156729221343994 0.0200000000000102 0.0200000000000102 0.0 774 -775 0.0404140949249268 0.039999999999992 0.039999999999992 0.0 775 -776 0.0159680843353271 0.0100000000000193 0.0100000000000193 0.0 776 -777 0.0160880088806152 0.0199999999999818 0.0199999999999818 0.0 777 -778 0.0158729553222656 0.0200000000000102 0.0200000000000102 0.0 778 -779 0.0157761573791504 0.00999999999999091 0.00999999999999091 0.0 779 -780 0.0156121253967285 0.0200000000000102 0.0200000000000102 0.0 780 -781 0.0156919956207275 0.00999999999999091 0.00999999999999091 0.0 781 -782 0.0405950546264648 0.039999999999992 0.039999999999992 0.0 782 -783 0.0157918930053711 0.0200000000000102 0.0200000000000102 0.0 783 -784 0.0157120227813721 0.0200000000000102 0.0200000000000102 0.0 784 -785 0.018751859664917 0.00999999999999091 0.00999999999999091 0.0 785 -786 0.0155041217803955 0.0200000000000102 0.0200000000000102 0.0 786 -787 0.0158028602600098 0.0199999999999818 0.0199999999999818 0.0 787 -788 0.0158569812774658 0.0100000000000193 0.0100000000000193 0.0 788 -789 0.0412540435791016 0.039999999999992 0.039999999999992 0.0 789 -790 0.0160260200500488 0.0200000000000102 0.0200000000000102 0.0 790 -791 0.0159499645233154 0.0199999999999818 0.0199999999999818 0.0 791 -792 0.019320011138916 0.00999999999999091 0.00999999999999091 0.0 792 -793 0.0201430320739746 0.0200000000000102 0.0200000000000102 0.0 793 -794 0.0157289505004883 0.0200000000000102 0.0200000000000102 0.0 794 -795 0.0402889251708984 0.039999999999992 0.039999999999992 0.0 795 -796 0.0161571502685547 0.0200000000000102 0.0200000000000102 0.0 796 -797 0.0203540325164795 0.0199999999999818 0.0199999999999818 0.0 797 -798 0.0160300731658936 0.0100000000000193 0.0100000000000193 0.0 798 -799 0.0157592296600342 0.0199999999999818 0.0199999999999818 0.0 799 -800 0.0156340599060059 0.0200000000000102 0.0200000000000102 0.0 800 -801 0.0156660079956055 0.00999999999999091 0.00999999999999091 0.0 801 -802 0.0413990020751953 0.0400000000000205 0.0400000000000205 0.0 802 -803 0.0160489082336426 0.0199999999999818 0.0199999999999818 0.0 803 -804 0.0158998966217041 0.00999999999999091 0.00999999999999091 0.0 804 -805 0.0157411098480225 0.0200000000000102 0.0200000000000102 0.0 805 -806 0.01564621925354 0.0200000000000102 0.0200000000000102 0.0 806 -807 0.0156128406524658 0.00999999999999091 0.00999999999999091 0.0 807 -808 0.0405199527740479 0.039999999999992 0.039999999999992 0.0 808 -809 0.0189261436462402 0.0200000000000102 0.0200000000000102 0.0 809 -810 0.0164599418640137 0.0200000000000102 0.0200000000000102 0.0 810 -811 0.0159981250762939 0.00999999999999091 0.00999999999999091 0.0 811 -812 0.0159931182861328 0.0200000000000102 0.0200000000000102 0.0 812 -813 0.0164968967437744 0.0199999999999818 0.0199999999999818 0.0 813 -814 0.0156979560852051 0.0100000000000193 0.0100000000000193 0.0 814 -815 0.0407021045684814 0.039999999999992 0.039999999999992 0.0 815 -816 0.0162220001220703 0.0199999999999818 0.0199999999999818 0.0 816 -817 0.0161950588226318 0.0200000000000102 0.0200000000000102 0.0 817 -818 0.016150951385498 0.00999999999999091 0.00999999999999091 0.0 818 -819 0.0162560939788818 0.0200000000000102 0.0200000000000102 0.0 819 -820 0.0156610012054443 0.00999999999999091 0.00999999999999091 0.0 820 -821 0.0164270401000977 0.0200000000000102 0.0200000000000102 0.0 821 -822 0.0451018810272217 0.0500000000000114 0.0500000000000114 0.0 822 -823 0.0159950256347656 0.00999999999999091 0.00999999999999091 0.0 823 -824 0.015963077545166 0.0200000000000102 0.0200000000000102 0.0 824 -825 0.0158100128173828 0.00999999999999091 0.00999999999999091 0.0 825 -826 0.0157589912414551 0.0200000000000102 0.0200000000000102 0.0 826 -827 0.0156979560852051 0.00999999999999091 0.00999999999999091 0.0 827 -828 0.0408341884613037 0.0499999999999829 0.0499999999999829 0.0 828 -829 0.0160629749298096 0.0100000000000193 0.0100000000000193 0.0 829 -830 0.015963077545166 0.0199999999999818 0.0199999999999818 0.0 830 -831 0.0164670944213867 0.0100000000000193 0.0100000000000193 0.0 831 -832 0.0157999992370605 0.0199999999999818 0.0199999999999818 0.0 832 -833 0.0158040523529053 0.0200000000000102 0.0200000000000102 0.0 833 -834 0.0157339572906494 0.00999999999999091 0.00999999999999091 0.0 834 -835 0.0431559085845947 0.0400000000000205 0.0400000000000205 0.0 835 -836 0.0160439014434814 0.00999999999999091 0.00999999999999091 0.0 836 -837 0.0160748958587646 0.0200000000000102 0.0200000000000102 0.0 837 -838 0.015887975692749 0.00999999999999091 0.00999999999999091 0.0 838 -839 0.0156698226928711 0.0200000000000102 0.0200000000000102 0.0 839 -840 0.01568603515625 0.00999999999999091 0.00999999999999091 0.0 840 -841 0.044741153717041 0.0500000000000114 0.0500000000000114 0.0 841 -842 0.018258810043335 0.0199999999999818 0.0199999999999818 0.0 842 -843 0.0159640312194824 0.0100000000000193 0.0100000000000193 0.0 843 -844 0.0158689022064209 0.0199999999999818 0.0199999999999818 0.0 844 -845 0.0158030986785889 0.0200000000000102 0.0200000000000102 0.0 845 -846 0.0156970024108887 0.00999999999999091 0.00999999999999091 0.0 846 -847 0.0167360305786133 0.0200000000000102 0.0200000000000102 0.0 847 -848 0.0449869632720947 0.039999999999992 0.039999999999992 0.0 848 -849 0.0159621238708496 0.0200000000000102 0.0200000000000102 0.0 849 -850 0.0158789157867432 0.0200000000000102 0.0200000000000102 0.0 850 -851 0.0166089534759521 0.00999999999999091 0.00999999999999091 0.0 851 -852 0.0156459808349609 0.0200000000000102 0.0200000000000102 0.0 852 -853 0.0158588886260986 0.00999999999999091 0.00999999999999091 0.0 853 -854 0.0406129360198975 0.039999999999992 0.039999999999992 0.0 854 -855 0.0159440040588379 0.0200000000000102 0.0200000000000102 0.0 855 -856 0.0158100128173828 0.0199999999999818 0.0199999999999818 0.0 856 -857 0.0157890319824219 0.0100000000000193 0.0100000000000193 0.0 857 -858 0.015923023223877 0.0199999999999818 0.0199999999999818 0.0 858 -859 0.0155861377716064 0.0100000000000193 0.0100000000000193 0.0 859 -860 0.0188548564910889 0.0199999999999818 0.0199999999999818 0.0 860 -861 0.0412931442260742 0.0400000000000205 0.0400000000000205 0.0 861 -862 0.0165369510650635 0.0199999999999818 0.0199999999999818 0.0 862 -863 0.0160419940948486 0.0200000000000102 0.0200000000000102 0.0 863 -864 0.0164439678192139 0.00999999999999091 0.00999999999999091 0.0 864 -865 0.0157101154327393 0.0200000000000102 0.0200000000000102 0.0 865 -866 0.0156807899475098 0.00999999999999091 0.00999999999999091 0.0 866 -867 0.0156638622283936 0.0200000000000102 0.0200000000000102 0.0 867 -868 0.040902853012085 0.039999999999992 0.039999999999992 0.0 868 -869 0.0159800052642822 0.0200000000000102 0.0200000000000102 0.0 869 -870 0.0166110992431641 0.00999999999999091 0.00999999999999091 0.0 870 -871 0.017413854598999 0.0200000000000102 0.0200000000000102 0.0 871 -872 0.0192930698394775 0.0199999999999818 0.0199999999999818 0.0 872 -873 0.0160510540008545 0.0100000000000193 0.0100000000000193 0.0 873 -874 0.0406858921051025 0.0499999999999829 0.0499999999999829 0.0 874 -875 0.0160770416259766 0.0100000000000193 0.0100000000000193 0.0 875 -876 0.0161919593811035 0.0199999999999818 0.0199999999999818 0.0 876 -877 0.015955924987793 0.0100000000000193 0.0100000000000193 0.0 877 -878 0.0158419609069824 0.0199999999999818 0.0199999999999818 0.0 878 -879 0.0157468318939209 0.0200000000000102 0.0200000000000102 0.0 879 -880 0.0157167911529541 0.00999999999999091 0.00999999999999091 0.0 880 -881 0.040755033493042 0.039999999999992 0.039999999999992 0.0 881 -882 0.0160150527954102 0.0200000000000102 0.0200000000000102 0.0 882 -883 0.0159170627593994 0.00999999999999091 0.00999999999999091 0.0 883 -884 0.0180459022521973 0.0200000000000102 0.0200000000000102 0.0 884 -885 0.01603102684021 0.0200000000000102 0.0200000000000102 0.0 885 -886 0.0156559944152832 0.00999999999999091 0.00999999999999091 0.0 886 -887 0.040722131729126 0.039999999999992 0.039999999999992 0.0 887 -888 0.0161468982696533 0.0200000000000102 0.0200000000000102 0.0 888 -889 0.0159561634063721 0.0200000000000102 0.0200000000000102 0.0 889 -890 0.0158951282501221 0.00999999999999091 0.00999999999999091 0.0 890 -891 0.0195560455322266 0.0199999999999818 0.0199999999999818 0.0 891 -892 0.0194118022918701 0.0200000000000102 0.0200000000000102 0.0 892 -893 0.0158801078796387 0.0200000000000102 0.0200000000000102 0.0 893 -894 0.0406708717346191 0.039999999999992 0.039999999999992 0.0 894 -895 0.0159239768981934 0.00999999999999091 0.00999999999999091 0.0 895 -896 0.0185558795928955 0.0200000000000102 0.0200000000000102 0.0 896 -897 0.0165250301361084 0.0200000000000102 0.0200000000000102 0.0 897 -898 0.0156872272491455 0.00999999999999091 0.00999999999999091 0.0 898 -899 0.0156629085540771 0.0200000000000102 0.0200000000000102 0.0 899 -900 0.0411269664764404 0.039999999999992 0.039999999999992 0.0 900 -901 0.0161049365997314 0.0200000000000102 0.0200000000000102 0.0 901 -902 0.0159130096435547 0.00999999999999091 0.00999999999999091 0.0 902 -903 0.0158100128173828 0.0199999999999818 0.0199999999999818 0.0 903 -904 0.0157549381256104 0.0200000000000102 0.0200000000000102 0.0 904 -905 0.0155808925628662 0.00999999999999091 0.00999999999999091 0.0 905 -906 0.0157089233398438 0.0200000000000102 0.0200000000000102 0.0 906 -907 0.040733814239502 0.039999999999992 0.039999999999992 0.0 907 -908 0.0157508850097656 0.0100000000000193 0.0100000000000193 0.0 908 -909 0.0190198421478271 0.0199999999999818 0.0199999999999818 0.0 909 -910 0.0157220363616943 0.0200000000000102 0.0200000000000102 0.0 910 -911 0.0156431198120117 0.00999999999999091 0.00999999999999091 0.0 911 -912 0.0163240432739258 0.0200000000000102 0.0200000000000102 0.0 912 -913 0.0405840873718262 0.039999999999992 0.039999999999992 0.0 913 -914 0.0158839225769043 0.0200000000000102 0.0200000000000102 0.0 914 -915 0.0158710479736328 0.00999999999999091 0.00999999999999091 0.0 915 -916 0.0157589912414551 0.0200000000000102 0.0200000000000102 0.0 916 -917 0.0157959461212158 0.00999999999999091 0.00999999999999091 0.0 917 -918 0.0156550407409668 0.0200000000000102 0.0200000000000102 0.0 918 -919 0.0157132148742676 0.0199999999999818 0.0199999999999818 0.0 919 -920 0.0412201881408691 0.0400000000000205 0.0400000000000205 0.0 920 -921 0.0189180374145508 0.0199999999999818 0.0199999999999818 0.0 921 -922 0.0160009860992432 0.0100000000000193 0.0100000000000193 0.0 922 -923 0.0156481266021729 0.0199999999999818 0.0199999999999818 0.0 923 -924 0.0155301094055176 0.0100000000000193 0.0100000000000193 0.0 924 -925 0.015531063079834 0.0199999999999818 0.0199999999999818 0.0 925 -926 0.0156428813934326 0.0200000000000102 0.0200000000000102 0.0 926 -927 0.0410211086273193 0.039999999999992 0.039999999999992 0.0 927 -928 0.0159690380096436 0.00999999999999091 0.00999999999999091 0.0 928 -929 0.0158920288085938 0.0200000000000102 0.0200000000000102 0.0 929 -930 0.0157539844512939 0.00999999999999091 0.00999999999999091 0.0 930 -931 0.0157601833343506 0.0200000000000102 0.0200000000000102 0.0 931 -932 0.0157170295715332 0.0200000000000102 0.0200000000000102 0.0 932 -933 0.041064977645874 0.039999999999992 0.039999999999992 0.0 933 -934 0.0186421871185303 0.0200000000000102 0.0200000000000102 0.0 934 -935 0.0160388946533203 0.00999999999999091 0.00999999999999091 0.0 935 -936 0.0158660411834717 0.0200000000000102 0.0200000000000102 0.0 936 -937 0.0163609981536865 0.00999999999999091 0.00999999999999091 0.0 937 -938 0.0156807899475098 0.0200000000000102 0.0200000000000102 0.0 938 -939 0.0157260894775391 0.0199999999999818 0.0199999999999818 0.0 939 -940 0.0416240692138672 0.039999999999992 0.039999999999992 0.0 940 -941 0.0218920707702637 0.0200000000000102 0.0200000000000102 0.0 941 -942 0.015984058380127 0.0200000000000102 0.0200000000000102 0.0 942 -943 0.0157361030578613 0.00999999999999091 0.00999999999999091 0.0 943 -944 0.015678882598877 0.0200000000000102 0.0200000000000102 0.0 944 -945 0.0157279968261719 0.00999999999999091 0.00999999999999091 0.0 945 -946 0.0436809062957764 0.0500000000000114 0.0500000000000114 0.0 946 -947 0.016185998916626 0.00999999999999091 0.00999999999999091 0.0 947 -948 0.0159549713134766 0.0200000000000102 0.0200000000000102 0.0 948 -949 0.015841007232666 0.00999999999999091 0.00999999999999091 0.0 949 -950 0.0157299041748047 0.0200000000000102 0.0200000000000102 0.0 950 -951 0.0167520046234131 0.0199999999999818 0.0199999999999818 0.0 951 -952 0.0157999992370605 0.0100000000000193 0.0100000000000193 0.0 952 -953 0.0407941341400146 0.039999999999992 0.039999999999992 0.0 953 -954 0.0159251689910889 0.0199999999999818 0.0199999999999818 0.0 954 -955 0.0158488750457764 0.0100000000000193 0.0100000000000193 0.0 955 -956 0.0157351493835449 0.0199999999999818 0.0199999999999818 0.0 956 -957 0.0157461166381836 0.0100000000000193 0.0100000000000193 0.0 957 -958 0.0157830715179443 0.00999999999999091 0.00999999999999091 0.0 958 -959 0.0440328121185303 0.0400000000000205 0.0400000000000205 0.0 959 -960 0.0163891315460205 0.0199999999999818 0.0199999999999818 0.0 960 -961 0.0172231197357178 0.0200000000000102 0.0200000000000102 0.0 961 -962 0.0159628391265869 0.00999999999999091 0.00999999999999091 0.0 962 -963 0.0158162117004395 0.0200000000000102 0.0200000000000102 0.0 963 -964 0.0156660079956055 0.0200000000000102 0.0200000000000102 0.0 964 -965 0.0156989097595215 0.00999999999999091 0.00999999999999091 0.0 965 -966 0.0409789085388184 0.039999999999992 0.039999999999992 0.0 966 -967 0.0159859657287598 0.0200000000000102 0.0200000000000102 0.0 967 -968 0.0158331394195557 0.00999999999999091 0.00999999999999091 0.0 968 -969 0.0157871246337891 0.0200000000000102 0.0200000000000102 0.0 969 -970 0.0163278579711914 0.0199999999999818 0.0199999999999818 0.0 970 -971 0.0156929492950439 0.0100000000000193 0.0100000000000193 0.0 971 -972 0.0429351329803467 0.039999999999992 0.039999999999992 0.0 972 -973 0.0161349773406982 0.0100000000000193 0.0100000000000193 0.0 973 -974 0.0159289836883545 0.0199999999999818 0.0199999999999818 0.0 974 -975 0.0159060955047607 0.0100000000000193 0.0100000000000193 0.0 975 -976 0.0160870552062988 0.0199999999999818 0.0199999999999818 0.0 976 -977 0.0157091617584229 0.0100000000000193 0.0100000000000193 0.0 977 -978 0.0156669616699219 0.00999999999999091 0.00999999999999091 0.0 978 -979 0.0407209396362305 0.039999999999992 0.039999999999992 0.0 979 -980 0.0159940719604492 0.0200000000000102 0.0200000000000102 0.0 980 -981 0.0158989429473877 0.00999999999999091 0.00999999999999091 0.0 981 -982 0.0158960819244385 0.0200000000000102 0.0200000000000102 0.0 982 -983 0.0157449245452881 0.0200000000000102 0.0200000000000102 0.0 983 -984 0.0183939933776855 0.00999999999999091 0.00999999999999091 0.0 984 -985 0.0408549308776855 0.039999999999992 0.039999999999992 0.0 985 -986 0.016895055770874 0.0200000000000102 0.0200000000000102 0.0 986 -987 0.0159039497375488 0.0200000000000102 0.0200000000000102 0.0 987 -988 0.0158200263977051 0.00999999999999091 0.00999999999999091 0.0 988 -989 0.0157120227813721 0.0200000000000102 0.0200000000000102 0.0 989 -990 0.0156378746032715 0.00999999999999091 0.00999999999999091 0.0 990 -991 0.0228080749511719 0.0300000000000011 0.0300000000000011 0.0 991 -992 0.0409870147705078 0.039999999999992 0.039999999999992 0.0 992 -993 0.0157871246337891 0.00999999999999091 0.00999999999999091 0.0 993 -994 0.0158090591430664 0.0200000000000102 0.0200000000000102 0.0 994 -995 0.0157351493835449 0.0200000000000102 0.0200000000000102 0.0 995 -996 0.0185980796813965 0.00999999999999091 0.00999999999999091 0.0 996 -997 0.0160398483276367 0.0100000000000193 0.0100000000000193 0.0 997 -998 0.0404281616210938 0.039999999999992 0.039999999999992 0.0 998 -999 0.0159862041473389 0.0200000000000102 0.0200000000000102 0.0 999 -1000 0.0166270732879639 0.00999999999999091 0.00999999999999091 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat deleted file mode 100644 index 465df200..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.157087197207005 -3 -0.179374358706398 -4 -0.172816500237501 -5 -0.172100634304929 -6 -0.18168246758723 -7 0.131584075287582 -8 0.679752237368679 -9 -0.163860297278845 -10 -0.170882707294366 -11 -0.166375603226363 -12 -0.174254444639597 -13 -0.173888868337232 -14 0.433940412821542 -15 0.373069309028039 -16 -0.171649802572127 -17 -0.169200630892492 -18 -0.166138159457362 -19 -0.1739364332791 -20 -0.127425006116119 -21 0.638263694934923 -22 0.12818251876092 -23 -0.175688598458062 -24 -0.170582005696374 -25 -0.165295475640757 -26 -0.177492415685482 -27 0.0465831397893705 -28 0.599451138773896 -29 -0.00135765066794861 -30 -0.177033357980592 -31 -0.16635596602023 -32 -0.166602977483835 -33 -0.178673562542768 -34 0.266392442433904 -35 0.432387768599705 -36 -0.0637700252002599 -37 -0.158118264958072 -38 -0.154561138423435 -39 -0.168429948675986 -40 -0.0994325786160257 -41 0.367997918823535 -42 0.290384046265292 -43 -0.11116281208171 -44 -0.175373024280893 -45 -0.160272110090895 -46 -0.164805593524448 -47 0.0550278238782237 -48 0.351023276202299 -49 0.189193346917991 -50 -0.138321616409331 -51 -0.174504050225761 -52 -0.161113173550488 -53 -0.152964238493074 -54 0.191038921821061 -55 0.288997249517505 -56 0.112554121399719 -57 -0.149706886466374 -58 -0.170685450581499 -59 -0.160759706621769 -60 -0.0696049681599959 -61 0.233811635314305 -62 0.22571473291272 -63 0.0469231721057327 -64 -0.157850957680934 -65 -0.16305911351091 -66 -0.156231122634058 -67 0.0491468744009525 -68 0.211267819802324 -69 0.187107177066929 -70 -0.0139870239184726 -71 -0.170483645145253 -72 -0.155686290284564 -73 -0.103000811390189 -74 0.138570030181668 -75 0.173843340323656 -76 0.143423232074103 -77 -0.0485241530965123 -78 -0.17395256767516 -79 -0.152395667614926 -80 -0.0364997518056447 -81 0.131378028895852 -82 0.157204475464315 -83 0.107865380703487 -84 -0.0772032951733248 -85 -0.168140171271818 -86 -0.144858575319744 -87 0.0510940822285813 -88 0.124231830951662 -89 0.116480579259527 -90 0.0733005231661278 -91 -0.103673077903456 -92 -0.163789078187485 -93 -0.0843697533408863 -94 0.0927359518979788 -95 0.0900559027837676 -96 0.104664222340361 -97 0.0382789156324802 -98 -0.128374408331222 -99 -0.15642261126302 -100 -0.00667308165088894 -101 0.0851277709144437 -102 0.0836018530451663 -103 0.0884188000954497 -104 0.00709279611310642 -105 -0.144660181300486 -106 -0.138143070220052 -107 0.0562816525685598 -108 0.0595077406929604 -109 0.0867173037785974 -110 0.0826832811453164 -111 -0.0160964251569884 -112 -0.155747087099804 -113 -0.0673832956811193 -114 0.0555412723389198 -115 0.0535188804439087 -116 0.0598230946420233 -117 0.0535276678974355 -118 -0.0458652924354906 -119 -0.153114302912901 -120 0.00982696548054891 -121 0.046672474075762 -122 0.0376959986943637 -123 0.0573772097995026 -124 0.0291609863119664 -125 -0.0720491385088587 -126 -0.119574247127328 -127 0.0398229760968292 -128 0.0368708833970769 -129 0.0378810523621832 -130 0.0440552599869543 -131 0.0168785446700554 -132 -0.100876176445281 -133 -0.0522667691021854 -134 0.036471105657028 -135 0.0215593152266718 -136 0.0332088835541183 -137 0.0406116641053865 -138 -0.000575792803151212 -139 -0.110182879489659 -140 0.0119148280486452 -141 0.0103606549224577 -142 0.0174203821210768 -143 0.0264660206850527 -144 0.0279556175958258 -145 -0.0101677743859891 -146 -0.0714378616054869 -147 0.0268904165103586 -148 0.0197546838971675 -149 0.0020125342918206 -150 0.0208048892753844 -151 0.0177433252225432 -152 -0.0412629401386729 -153 -0.0331295172833144 -154 0.0185158552578208 -155 0.0109488606569471 -156 0.00829546562841099 -157 0.0193950108790453 -158 0.00363009909349868 -159 -0.0424508741873948 -160 0.00483444603011959 -161 0.00251257763944739 -162 -0.0027291007330315 -163 0.00583978101322954 -164 0.0119526210929789 -165 0.00202945630944433 -166 -0.0133120914217794 -167 -0.0012297645717332 -168 0.00270288118433543 -169 -0.00541306317192281 -170 0.00344801669308451 -171 -7.06221686644991e-05 -172 -0.0128411948649165 -173 0.0258140753965777 -174 -0.00838152285590955 -175 0.00457554209144489 -176 -0.0212504244136124 -177 0.00405744330785776 -178 0.00109889713027893 -179 -0.00653340121943499 -180 0.0251074943438506 -181 0.00390303260107667 -182 -0.00701005779107689 -183 -0.0065141088117886 -184 -0.00279230972823837 -185 -0.00416383972424965 -186 0.0262707341683331 -187 0.00819057184579269 -188 -0.00340288166837825 -189 -0.0143930625406389 -190 -0.0253314001312743 -191 -0.00185836549539233 -192 0.00104764466063349 -193 0.0539677516048275 -194 -0.0100541189143094 -195 -0.00921746463253617 -196 -0.0149462313841975 -197 -0.0188238663657463 -198 -0.0175064441267539 -199 0.020760922122737 -200 0.0554307275152524 -201 -0.0148112905353319 -202 -0.0127466158713358 -203 -0.0243021923478065 -204 -0.0209159713475539 -205 -0.0114124320328544 -206 0.0397229436097326 -207 0.0456075315085741 -208 -0.0215007018820454 -209 -0.0144624346486559 -210 -0.0322330130568126 -211 -0.00825272885493334 -212 -0.0149224222346792 -213 0.0682032593962929 -214 0.0121011513942831 -215 -0.0169882789240117 -216 -0.0149704075424761 -217 -0.0387466974669077 -218 -0.00399663244288092 -219 0.017199112436661 -220 0.0760951670626158 -221 0.000771488467078772 -222 -0.0299297731350407 -223 -0.00961973831748005 -224 -0.0472117112712389 -225 -0.0172398450528946 -226 0.0399982487996819 -227 0.0668906972411487 -228 -0.0195152172068293 -229 -0.0118748121155119 -230 -0.0328125031882784 -231 -0.0308080129381723 -232 -0.0122390206650683 -233 0.0689451191829333 -234 0.029994234380722 -235 -0.0160522469025481 -236 -0.0138652708623251 -237 -0.0507286056559315 -238 -0.0108444844897431 -239 -0.000749122945858211 -240 0.0707991870940562 -241 0.0267001298657314 -242 -0.0303467049269583 -243 -0.0132703522046187 -244 -0.0519324123908225 -245 -0.020827887860283 -246 0.035011894574258 -247 0.071041404155295 -248 0.00264333590518284 -249 -0.0324109538103439 -250 -0.0173917664974712 -251 -0.0488496793294092 -252 -0.0141041170429656 -253 0.0508320887854303 -254 0.0750173132102245 -255 -0.0141435331710239 -256 -0.0149919228080718 -257 -0.0363809443035875 -258 -0.044180318575384 -259 0.0137303280992071 -260 0.0453890157170559 -261 0.0499450703384104 -262 -0.0214405609870375 -263 -0.0171265875233509 -264 -0.0483467081512779 -265 -0.0238039375745267 -266 0.0297704275693148 -267 0.0477795017107822 -268 0.0306806785398672 -269 -0.0241732516868213 -270 -0.0232177034439842 -271 -0.0561919945895127 -272 -0.0121383708530614 -273 0.0383380316167486 -274 0.0692068597048456 -275 -0.0037308740073283 -276 -0.0238823990824962 -277 -0.0233175869444128 -278 -0.0466628437090312 -279 0.00124369697752989 -280 0.033635887914297 -281 0.0595585462605596 -282 -0.00471883892563787 -283 -0.022010928895564 -284 -0.0396393069529268 -285 -0.047610976414541 -286 0.0330006232948636 -287 0.0280762592215935 -288 0.0546372734557523 -289 -0.0127989574716365 -290 -0.0191221337324256 -291 -0.0441318227203198 -292 -0.0234180780296535 -293 0.0323850514195515 -294 0.0485470915014664 -295 0.0233514564784711 -296 -0.014986868171212 -297 -0.0303748609767652 -298 -0.0492165541971281 -299 -0.000385604501460381 -300 0.0269531666988284 -301 0.0565609923395246 -302 0.00593180901393307 -303 -0.0139487837507826 -304 -0.0382587858091347 -305 -0.0491851369445174 -306 0.0160807177510981 -307 0.0361087651605283 -308 0.0389978157300904 -309 0.00502802264445259 -310 -0.0214508646037847 -311 -0.0382274859105765 -312 -0.0406626513624875 -313 0.0280699039368022 -314 0.0389617980418346 -315 0.0271371634582089 -316 0.00383396360577986 -317 -0.0368406522772554 -318 -0.0386138394670918 -319 -0.0144256141856596 -320 0.0269236337036347 -321 0.0378611438537414 -322 0.0209886410948846 -323 -0.000452113297036075 -324 -0.0449001716863398 -325 -0.0362164044779451 -326 -0.00595679435360415 -327 0.0506843309155259 -328 0.0326573572134026 -329 0.0107949518760053 -330 -0.00524263889747431 -331 -0.045061910257765 -332 -0.0336081125622954 -333 0.0142902742395516 -334 0.0327621408145429 -335 0.0232224714127171 -336 0.0111851134672308 -337 -0.0168616046652318 -338 -0.0421660588992697 -339 -0.0304729350756775 -340 0.0315110873281277 -341 0.0393883283265487 -342 0.00688623370858959 -343 0.0155748729948725 -344 -0.0396114220680361 -345 -0.036903793556725 -346 -0.0106964102495091 -347 0.0321472442987069 -348 0.0291161569873515 -349 0.0127286036167739 -350 0.0131191581487462 -351 -0.0510684340547118 -352 -0.037342914226626 -353 0.00800616948303765 -354 0.0353286314592821 -355 0.0224843093277485 -356 0.00483640438097458 -357 0.00270936967225743 -358 -0.050958398888098 -359 -0.03181357197987 -360 0.0263165400282428 -361 0.0337466198913848 -362 0.0138214636037434 -363 0.0161643781357266 -364 -0.0166975714811741 -365 -0.0379548808112395 -366 -0.0107191330666086 -367 0.0151768728627536 -368 0.0330707869037677 -369 0.00862332944835417 -370 0.0126881690782585 -371 -0.035143571537685 -372 -0.0379591383040581 -373 0.0034903385393575 -374 0.0262443107228041 -375 0.0239169076988401 -376 0.0117645257098411 -377 0.00667620811923268 -378 -0.0487466537790665 -379 -0.0248323076320059 -380 0.00853369884513661 -381 0.0254571493249656 -382 0.0158332997765884 -383 0.0152150967683835 -384 -0.00560022391839541 -385 -0.0468960628871472 -386 -0.0122137430122784 -387 0.0195354222281915 -388 0.0205785620197055 -389 0.00640951181213936 -390 0.0192254336021024 -391 -0.0213684050918215 -392 -0.0390677938838948 -393 -0.00851270390379209 -394 0.0198814929031009 -395 0.0221284736508306 -396 0.0144170779179485 -397 0.00761346746337475 -398 -0.0341642702201187 -399 -0.0182072192904153 -400 -0.000917427430821407 -401 0.0240923988301287 -402 0.0149702208233445 -403 0.0254338021686953 -404 -0.0114315718167618 -405 -0.0367784109383449 -406 -0.0203107293220967 -407 0.0207711450646343 -408 0.00769317821995912 -409 0.0155113277213562 -410 0.0188010420230405 -411 -0.00588271186449876 -412 -0.0453215571077292 -413 -0.0023477078738424 -414 0.0045635114773767 -415 0.0193832767222524 -416 0.0126157524584856 -417 0.0125919924992071 -418 -0.022128831828596 -419 -0.0316624813090816 -420 0.00848651912597777 -421 0.00365846968970242 -422 0.0167934861719605 -423 0.0258369213405359 -424 -0.0110386479254365 -425 -0.0221266194130739 -426 -0.0342359305340173 -427 0.0198173965590731 -428 0.0113340288154053 -429 0.0117321942610559 -430 0.0199069545235314 -431 -0.00972019619126481 -432 -0.0334368587948193 -433 -0.00818672582858474 -434 0.00847403279906724 -435 0.0151410616338098 -436 0.0210571960796968 -437 0.0106767873737501 -438 -0.013923260538601 -439 -0.0295951598444345 -440 -0.00213381404969862 -441 0.00202904020725609 -442 0.0229482306295094 -443 0.0184877779142267 -444 -0.00967213617656215 -445 -0.00921421284518073 -446 -0.0235983767065866 -447 -0.00275565709687977 -448 0.00850528936282641 -449 0.021653187958436 -450 0.0175868623090648 -451 -0.0158567287280081 -452 -0.0197244183098808 -453 -0.0181122740176874 -454 0.0114885559203587 -455 0.00821969307220109 -456 0.0172333504264287 -457 0.0166219780995992 -458 -0.0218887409079099 -459 -0.0166096810167506 -460 -0.0175255182955902 -461 0.0155549717347949 -462 0.0109524688624427 -463 0.0108083192821273 -464 0.0109544410525194 -465 -0.012075150479233 -466 -0.0316229939529222 -467 -0.00616925120907086 -468 0.0132996349281117 -469 0.0194985827103642 -470 0.0118786255995167 -471 -0.00394060339988717 -472 -0.0074504553199804 -473 -0.0216171208389261 -474 0.00601096062326295 -475 0.00225300714016349 -476 0.0328870249803732 -477 -0.00143854393918084 -478 -0.0125765646700796 -479 -0.00518610856295871 -480 -0.0286671364514193 -481 0.0114893086586308 -482 0.0101767599569462 -483 0.0215358355330199 -484 0.0100013983093797 -485 -0.0189420875106819 -486 -0.0170156842542937 -487 -0.0181219245592761 -488 0.0134350210494302 -489 0.0157200832610872 -490 0.00820671869127948 -491 0.00609605427848417 -492 -0.00964792789764855 -493 -0.0280629491471991 -494 -0.00119096663786943 -495 0.0059816978766158 -496 0.0319195128927636 -497 -0.00616844922211785 -498 -0.00300183927697173 -499 -0.00255830020653143 -500 -0.0326795727885289 -501 0.00737460740372866 -502 0.0101738406924715 -503 0.0166480802410528 -504 0.0101781028011199 -505 -0.0148697505539931 -506 -0.00932908806811421 -507 -0.0228291650465262 -508 0.016317603272819 -509 0.0251213315783841 -510 0.00429219423365217 -511 0.00509519846591672 -512 -0.0118288041004493 -513 -0.0182276341829169 -514 -0.0136524793951616 -515 0.0125652837072878 -516 0.0237831170063298 -517 0.000525824158270796 -518 0.000861207866418543 -519 -0.000309524320918211 -520 -0.0319611866775823 -521 0.00377002226899237 -522 0.00366677706502651 -523 0.0238709877277231 -524 -0.00194721509431841 -525 -0.00532831903040821 -526 -0.0035954903575234 -527 -0.0265125935766282 -528 0.00819935557807736 -529 0.0187116031801041 -530 0.00335323640794092 -531 0.0093979106751416 -532 -0.00717619909651022 -533 -0.0222889570534225 -534 -0.0159873555724934 -535 0.0155232558898349 -536 0.0188575547550394 -537 0.00257632001432395 -538 0.0109600141670179 -539 -0.0136168353942696 -540 -0.0286265327239912 -541 -0.00493532024944744 -542 0.0131483720919412 -543 0.0207593713409036 -544 0.00752548764010655 -545 0.0101794683902496 -546 -0.00944756530014968 -547 -0.0361193792524987 -548 0.00900784799603882 -549 0.00814620931366632 -550 0.0118963349468229 -551 0.00869181440821501 -552 0.00553664631914035 -553 -0.0235896662674149 -554 -0.0213031930671748 -555 0.0144191547013866 -556 0.00985740627307818 -557 0.0146461357237841 -558 -0.00329509825327045 -559 0.00861808586430692 -560 -0.0382908781734418 -561 -0.00810416928099721 -562 0.0152325822988648 -563 0.0108896546286742 -564 0.0197283233093635 -565 -0.00597279642964848 -566 0.00549346286324277 -567 -0.0441402987586487 -568 0.00442694223265451 -569 0.00895528979634627 -570 0.00314478664849838 -571 0.0275939863464633 -572 -0.000211275077900297 -573 -0.0157780481890476 -574 -0.0348847108726074 -575 0.0178433894654182 -576 0.00358880348184893 -577 0.00325401416563326 -578 0.0168304732698679 -579 0.00759458115231633 -580 -0.0249153562132231 -581 -0.0148180695954744 -582 0.0108144203245513 -583 0.0147457973792171 -584 0.00442055500088463 -585 0.0113147505801929 -586 0.00208502530934012 -587 -0.0369024921021571 -588 -0.00738632772951817 -589 0.00992698216785421 -590 0.00762460161308267 -591 0.0264602045744605 -592 0.00179884430710083 -593 -0.0065858667702633 -594 -0.0400946265552496 -595 0.00586629198250832 -596 0.00638016879591378 -597 -0.00334997345122169 -598 0.0378696957160481 -599 -0.00291662872883922 -600 -0.0150181756899771 -601 -0.0308267314085245 -602 0.00545487745877096 -603 0.0145056871276495 -604 -0.00111862002362357 -605 0.0274345659047568 -606 -0.00545886365985009 -607 -0.02134718500889 -608 -0.0168792261598091 -609 0.00235047714564286 -610 0.0115358557818356 -611 0.00892944549777402 -612 0.0175837325671957 -613 -0.00241533013968592 -614 -0.0397066859486968 -615 -0.000775410212127817 -616 0.010404414311518 -617 0.00622818135682105 -618 0.0256159561966313 -619 0.0100572818761881 -620 -0.00997184439752021 -621 -0.0370357127908402 -622 -0.009493683122773 -623 0.019991811173322 -624 0.00616915844764652 -625 0.0226334480172136 -626 -0.00170152998435823 -627 -0.00527269037631295 -628 -0.0310245966733844 -629 -0.00334664758487885 -630 0.0108099133488301 -631 0.0162472542900972 -632 0.0107638392138735 -633 -9.28636881484359e-05 -634 -0.0251735775995027 -635 -0.0175915903660944 -636 0.0064154965729608 -637 0.00918775959735482 -638 0.025607471670139 -639 0.00415316421623987 -640 -0.00555481869685676 -641 -0.0243730502242372 -642 -0.0236765581404991 -643 0.0132551374194837 -644 0.0159204978713982 -645 0.0182545204715289 -646 -0.00177344669143713 -647 -0.00410362457456551 -648 -0.0217821833150809 -649 -0.0187567646143839 -650 0.0108473001511633 -651 0.024234409213132 -652 0.0103373343092404 -653 0.0053494854974728 -654 -0.0116971189957597 -655 -0.025622749432742 -656 -0.00703489184924496 -657 0.0127306317732122 -658 0.0264660231555335 -659 0.00441275817266093 -660 -0.000498144331723384 -661 -0.0170193444138239 -662 -0.035755915518656 -663 0.0153452894744309 -664 0.0184392623502257 -665 0.0179210598556496 -666 0.00323237671435628 -667 -0.0143732162504404 -668 -0.0059072260888979 -669 -0.0424395347705013 -670 0.0182802454123028 -671 0.028027312899014 -672 0.0105955795585643 -673 0.00873541917286547 -674 -0.0180699323851307 -675 -0.0157035416270782 -676 -0.0243544633968205 -677 0.0122599065615016 -678 0.0293159679608981 -679 -0.0023542771968947 -680 0.0173160434772516 -681 -0.0192740489190438 -682 -0.0267558924656808 -683 -0.00512931356799544 -684 0.0160575949541419 -685 0.0188852073807438 -686 0.00138912191794047 -687 -0.00115067732885235 -688 -0.0058938945939148 -689 -0.0270293884074899 -690 0.000894104439656761 -691 0.0254384890333336 -692 0.0135759887351247 -693 0.00706307551413458 -694 -0.00983098745115802 -695 -0.0182029532724777 -696 -0.0188844337318011 -697 -0.000620495183408782 -698 0.031569666060583 -699 0.00247939842897875 -700 0.0175967326065924 -701 -0.0140127620939771 -702 -0.0204023919721389 -703 -0.0265270099155168 -704 0.0189279709581055 -705 0.0230696877886033 -706 0.00221980643869467 -707 0.00877474738492577 -708 -0.0162154001263846 -709 -0.0131109560281679 -710 -0.0175675796745332 -711 0.0223801164921319 -712 0.00577037578768595 -713 0.015016209026733 -714 0.000700464791035295 -715 -0.0265570398797467 -716 -0.00328487594267362 -717 -0.0125180962593854 -718 0.0282899511684865 -719 0.00190078369585563 -720 0.00988422939784888 -721 -0.00206231662877586 -722 -0.0260676646786268 -723 -0.00911966903113347 -724 -0.00349690376176947 -725 0.0311131205663657 -726 0.00982115201693743 -727 0.00380892869332063 -728 -0.0110636013291228 -729 -0.0147589149221332 -730 -0.0142665446241887 -731 0.0082820839740987 -732 0.0115944492459724 -733 0.0193205726321855 -734 -0.00599937049345255 -735 -0.0124413644991841 -736 -0.00567111710885452 -737 -0.0172490266022523 -738 0.0208711936714456 -739 0.0049112245490164 -740 0.0119338001717033 -741 -0.00382254745169823 -742 -0.0168037126507566 -743 -0.0106727427496242 -744 -0.0015896316832005 -745 0.00986670286392471 -746 0.0187708614601626 -747 0.00280713985351326 -748 -0.0103005824233574 -749 -0.00698856527705199 -750 -0.0148829004327279 -751 0.00737864042801781 -752 0.00378825958027056 -753 0.0169762573619787 -754 0.0022171253424174 -755 -0.00880275220702398 -756 -0.0113861610535219 -757 -0.00866954185078337 -758 -0.00102625777568937 -759 0.0153621406801242 -760 0.0175483371870747 -761 -0.0117316284519376 -762 0.00201727719536751 -763 -0.0135695524051989 -764 -0.00236628739393315 -765 -0.00558540481434592 -766 0.0269770620065138 -767 0.00572732432254425 -768 -0.0206632040359575 -769 0.00669734976955735 -770 -0.0177594319318436 -771 0.00610794003109065 -772 0.000941524893761258 -773 0.0184249836070844 -774 0.00603564044659765 -775 -0.0194800088175 -776 0.00211956864190904 -777 -0.010814553078384 -778 -0.00345880879440837 -779 0.00784989092108616 -780 0.0219931715670487 -781 -0.00850728907326284 -782 -0.00818020013943201 -783 -0.000161877820177968 -784 -0.00713626483576915 -785 -0.00189547729017052 -786 0.00606277375629014 -787 0.0175714822376805 -788 -0.0163318892122437 -789 0.00355096379727685 -790 -0.00561323769976105 -791 -0.00173115162828963 -792 0.00285124323851199 -793 0.00626988628820364 -794 0.00217746014515121 -795 -0.00760875508840939 -796 -0.000158305774946426 -797 0.000505966683014493 -798 -0.00693871262526605 -799 0.00898933345030533 -800 0.014710588776899 -801 -0.0127611881730304 -802 0.00195021147362958 -803 -0.00619101895130629 -804 0.0026189336260538 -805 -0.0119751993107655 -806 0.00863989985124942 -807 0.0162582664631878 -808 -0.00961705217558156 -809 -0.00291393696249613 -810 0.00183243185138599 -811 -0.00460631909363343 -812 -0.0119632672766042 -813 0.0208966630422238 -814 -0.00308347876710094 -815 -0.000388668719911606 -816 -0.00886871268574757 -817 0.0104410151238245 -818 -0.00971881568327177 -819 -0.00556079139249464 -820 0.0192762976108135 -821 -0.0107849691388102 -822 0.00749648811680043 -823 -0.0133743112470617 -824 0.0148954204098446 -825 -0.012870734248631 -826 0.00297854342027238 -827 0.00400991287076845 -828 -0.000776475806225986 -829 0.000157063854584776 -830 -0.00648190853333762 -831 0.00841895039070195 -832 -0.0106394491215173 -833 0.0131617346674597 -834 -0.0110557177073731 -835 0.0104656591658511 -836 -0.00271631743019652 -837 0.00120199415841236 -838 0.003706954798763 -839 -0.00947603640270401 -840 0.00137362489293886 -841 -0.00412100522419038 -842 0.00440555479849327 -843 -0.00101257629784826 -844 0.011630938869848 -845 -0.00348460872671806 -846 -0.00490788919767545 -847 -0.00767305606978742 -848 0.00641850027996645 -849 -0.0047270157313243 -850 0.006561877154592 -851 0.00346504126665878 -852 0.000325934762370315 -853 -0.00691243590442494 -854 -0.0122397831712401 -855 0.0155142896041314 -856 -0.00649940375329406 -857 0.0115764362511307 -858 -0.00166218348252304 -859 0.00329024056556213 -860 -0.0168163842675434 -861 -0.0018300046237477 -862 0.00782622924665259 -863 0.00184144237820109 -864 0.00564522536281571 -865 0.00166897889337862 -866 0.000762761808421144 -867 -0.0247108710871775 -868 0.0102945871423903 -869 0.00176524231160526 -870 0.0100435696701272 -871 -0.000881447853453438 -872 0.0077251769247763 -873 -0.00856838315554851 -874 -0.0147878775532851 -875 0.0032203221928359 -876 0.00271820057534821 -877 0.0150200342356852 -878 -0.00679910502968767 -879 0.00803734684491422 -880 -0.0129685352671973 -881 -0.00468207467932367 -882 -0.0040001560959317 -883 0.0127784032727213 -884 0.00689584536184243 -885 -0.00348378029753978 -886 0.00583835064957876 -887 -0.018431993579404 -888 -0.00543151914104362 -889 0.000930192838208099 -890 0.0189669669181415 -891 0.00197455166108111 -892 0.000291983829886991 -893 -0.00151890218051029 -894 -0.018758927675871 -895 -0.00427007831617855 -896 0.00873163971817387 -897 0.0116921446719301 -898 0.00493448763764004 -899 0.000812558628478896 -900 -0.00829685479660704 -901 -0.016774476024156 -902 -0.00284574091222063 -903 0.0166712115089998 -904 0.00393567866715527 -905 0.00970634578920477 -906 -0.0013135499413494 -907 -0.0151419078767085 -908 -0.014262642806324 -909 0.000679710286692927 -910 0.023632237447571 -911 -0.000293075867552849 -912 0.00963897961846078 -913 -0.00892745437111743 -914 -0.0141610280914154 -915 -0.0143929747783252 -916 0.0126331813801288 -917 0.0140072140155889 -918 0.0038464358463258 -919 0.00872792856356974 -920 -0.0142893223780218 -921 -0.0144626608008151 -922 -0.0106633311842541 -923 0.0182487172273735 -924 0.00789811928832441 -925 0.00674770411457765 -926 0.00151185223543001 -927 -0.0131662643971208 -928 -0.0130299725001482 -929 -0.000421100875615765 -930 0.0101012876932665 -931 0.0109771581904619 -932 0.00600630873622808 -933 -0.00610768057521272 -934 -0.0113069105169847 -935 -0.0108646539420972 -936 0.00681782689120027 -937 0.00453863835411057 -938 0.0128033807887734 -939 0.00558460964303299 -940 -0.0111413786231144 -941 -0.010741707945974 -942 -0.0073905294023225 -943 0.00509539616333849 -944 0.00789664081858827 -945 0.0156023411643847 -946 -0.00196863307695851 -947 -0.00929990689658537 -948 -0.0100501558671196 -949 -0.00713963769082725 -950 0.00529444925980778 -951 0.00907288818013118 -952 0.0159396165239691 -953 -0.0070169105795629 -954 -0.00871200515303164 -955 -0.00623272113762449 -956 -0.00859043676592199 -957 0.00750758667776515 -958 0.0114715494246097 -959 0.00783845600054901 -960 -0.00640762499905148 -961 -0.00791318713998704 -962 -0.00388200155080539 -963 -0.00821887932833072 -964 0.00969710527680486 -965 0.0132324446252105 -966 0.000588150241816455 -967 -0.00459312775024423 -968 -0.00661504524014442 -969 -0.00488536336284523 -970 -0.00665739535025808 -971 0.0119120087088002 -972 0.0129080825261635 -973 -0.00502738233144332 -974 -0.00424651006131981 -975 -0.00529584314204073 -976 -0.00401797749822628 -977 -0.00398629771407627 -978 0.0145696891837213 -979 0.00312400996929776 -980 -0.0024620797714283 -981 -0.0029972609662243 -982 -0.00374070711004024 -983 -0.00324300553128461 -984 -0.00266784725010517 -985 0.0142342444009173 -986 -0.00291146863667702 -987 -0.00123170535641386 -988 -0.00195500360676893 -989 -0.0018623417265137 -990 -0.0010940028343966 -991 -0.00012714389035354 -992 0.00601935720393536 -993 -0.00153575128302119 -994 -0.000790525971546018 -995 -0.000953092463346404 -996 -0.000631437937788914 -997 -5.86631399396442e-05 -998 0.000839644378016313 -999 -0.000137648586440022 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat deleted file mode 100644 index 12909169..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_pretty.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.0308499336242676 0.0300000000000011 0.0300000000000011 0.0 1 -2 0.027501106262207 0.0299999999999976 0.0299999999999976 0.0 2 -3 0.0248689651489258 0.0200000000000031 0.0200000000000031 0.0 3 -4 0.0230190753936768 0.0199999999999996 0.0199999999999996 0.0 4 -5 0.0231549739837646 0.0299999999999976 0.0299999999999976 0.0 5 -6 0.0229060649871826 0.0200000000000031 0.0200000000000031 0.0 6 -7 0.0479171276092529 0.0499999999999972 0.0499999999999972 0.0 7 -8 0.0237171649932861 0.0199999999999996 0.0199999999999996 0.0 8 -9 0.0234429836273193 0.0200000000000031 0.0200000000000031 0.0 9 -10 0.0232129096984863 0.0299999999999976 0.0299999999999976 0.0 10 -11 0.0243880748748779 0.0199999999999996 0.0199999999999996 0.0 11 -12 0.0262730121612549 0.0300000000000011 0.0300000000000011 0.0 12 -13 0.022907018661499 0.0199999999999996 0.0199999999999996 0.0 13 -14 0.0502560138702393 0.0500000000000007 0.0500000000000007 0.0 14 -15 0.0239529609680176 0.0199999999999996 0.0199999999999996 0.0 15 -16 0.0233089923858643 0.0300000000000011 0.0300000000000011 0.0 16 -17 0.0230889320373535 0.0199999999999996 0.0199999999999996 0.0 17 -18 0.0229461193084717 0.0199999999999996 0.0199999999999996 0.0 18 -19 0.0228281021118164 0.0300000000000011 0.0300000000000011 0.0 19 -20 0.0227499008178711 0.0199999999999996 0.0199999999999996 0.0 20 -21 0.0519850254058838 0.0500000000000007 0.0500000000000007 0.0 21 -22 0.0238831043243408 0.0299999999999976 0.0299999999999976 0.0 22 -23 0.0233030319213867 0.0199999999999996 0.0199999999999996 0.0 23 -24 0.0230920314788818 0.0200000000000031 0.0200000000000031 0.0 24 -25 0.0230100154876709 0.0199999999999996 0.0199999999999996 0.0 25 -26 0.0230438709259033 0.0199999999999996 0.0199999999999996 0.0 26 -27 0.0233631134033203 0.0199999999999996 0.0199999999999996 0.0 27 -28 0.0499250888824463 0.0500000000000007 0.0500000000000007 0.0 28 -29 0.0236561298370361 0.0300000000000011 0.0300000000000011 0.0 29 -30 0.0273551940917969 0.0199999999999996 0.0199999999999996 0.0 30 -31 0.0231010913848877 0.0300000000000011 0.0300000000000011 0.0 31 -32 0.0228641033172607 0.0199999999999996 0.0199999999999996 0.0 32 -33 0.0227639675140381 0.0199999999999996 0.0199999999999996 0.0 33 -34 0.0227780342102051 0.0199999999999996 0.0199999999999996 0.0 34 -35 0.0491790771484375 0.0500000000000007 0.0500000000000007 0.0 35 -36 0.0235280990600586 0.0300000000000011 0.0300000000000011 0.0 36 -37 0.0303738117218018 0.0299999999999976 0.0299999999999976 0.0 37 -38 0.0235600471496582 0.0199999999999996 0.0199999999999996 0.0 38 -39 0.0272340774536133 0.0300000000000011 0.0300000000000011 0.0 39 -40 0.0229921340942383 0.0199999999999996 0.0199999999999996 0.0 40 -41 0.0230140686035156 0.0199999999999996 0.0199999999999996 0.0 41 -42 0.0487380027770996 0.0500000000000007 0.0500000000000007 0.0 42 -43 0.0233781337738037 0.0300000000000011 0.0300000000000011 0.0 43 -44 0.0232539176940918 0.0199999999999996 0.0199999999999996 0.0 44 -45 0.0231471061706543 0.0199999999999996 0.0199999999999996 0.0 45 -46 0.0229659080505371 0.0300000000000011 0.0300000000000011 0.0 46 -47 0.0236260890960693 0.0199999999999996 0.0199999999999996 0.0 47 -48 0.0249731540679932 0.0299999999999976 0.0299999999999976 0.0 48 -49 0.0491600036621094 0.0400000000000027 0.0400000000000027 0.0 49 -50 0.0233979225158691 0.0299999999999976 0.0299999999999976 0.0 50 -51 0.0233068466186523 0.0200000000000031 0.0200000000000031 0.0 51 -52 0.0230197906494141 0.0199999999999996 0.0199999999999996 0.0 52 -53 0.023003101348877 0.0299999999999976 0.0299999999999976 0.0 53 -54 0.0229551792144775 0.0199999999999996 0.0199999999999996 0.0 54 -55 0.0227420330047607 0.0200000000000031 0.0200000000000031 0.0 55 -56 0.0490391254425049 0.0499999999999972 0.0499999999999972 0.0 56 -57 0.0280921459197998 0.0300000000000011 0.0300000000000011 0.0 57 -58 0.0237009525299072 0.0199999999999996 0.0199999999999996 0.0 58 -59 0.0233352184295654 0.0300000000000011 0.0300000000000011 0.0 59 -60 0.0229549407958984 0.0199999999999996 0.0199999999999996 0.0 60 -61 0.0229389667510986 0.0199999999999996 0.0199999999999996 0.0 61 -62 0.022536039352417 0.0300000000000011 0.0300000000000011 0.0 62 -63 0.0481998920440674 0.0399999999999991 0.0399999999999991 0.0 63 -64 0.0232841968536377 0.0300000000000011 0.0300000000000011 0.0 64 -65 0.0232529640197754 0.0199999999999996 0.0199999999999996 0.0 65 -66 0.026047945022583 0.0299999999999976 0.0299999999999976 0.0 66 -67 0.0240390300750732 0.0200000000000031 0.0200000000000031 0.0 67 -68 0.0229721069335938 0.0199999999999996 0.0199999999999996 0.0 68 -69 0.0479068756103516 0.0500000000000007 0.0500000000000007 0.0 69 -70 0.023643970489502 0.0199999999999996 0.0199999999999996 0.0 70 -71 0.0241210460662842 0.0199999999999996 0.0199999999999996 0.0 71 -72 0.0232229232788086 0.0199999999999996 0.0199999999999996 0.0 72 -73 0.0230081081390381 0.0300000000000011 0.0300000000000011 0.0 73 -74 0.0300300121307373 0.0300000000000011 0.0300000000000011 0.0 74 -75 0.0227279663085938 0.0199999999999996 0.0199999999999996 0.0 75 -76 0.0513601303100586 0.0500000000000007 0.0500000000000007 0.0 76 -77 0.0237360000610352 0.0199999999999996 0.0199999999999996 0.0 77 -78 0.0233068466186523 0.0300000000000011 0.0300000000000011 0.0 78 -79 0.0231139659881592 0.0199999999999996 0.0199999999999996 0.0 79 -80 0.0230059623718262 0.0199999999999996 0.0199999999999996 0.0 80 -81 0.022935152053833 0.0299999999999976 0.0299999999999976 0.0 81 -82 0.0229039192199707 0.0200000000000031 0.0200000000000031 0.0 82 -83 0.0487849712371826 0.0499999999999972 0.0499999999999972 0.0 83 -84 0.0268459320068359 0.0199999999999996 0.0199999999999996 0.0 84 -85 0.0233829021453857 0.0300000000000011 0.0300000000000011 0.0 85 -86 0.0231680870056152 0.0199999999999996 0.0199999999999996 0.0 86 -87 0.0230309963226318 0.0199999999999996 0.0199999999999996 0.0 87 -88 0.0234689712524414 0.0300000000000011 0.0300000000000011 0.0 88 -89 0.0231020450592041 0.0199999999999996 0.0199999999999996 0.0 89 -90 0.0486099720001221 0.0500000000000007 0.0500000000000007 0.0 90 -91 0.0234777927398682 0.0200000000000031 0.0200000000000031 0.0 91 -92 0.0232808589935303 0.029999999999994 0.029999999999994 0.0 92 -93 0.0230159759521484 0.0200000000000031 0.0200000000000031 0.0 93 -94 0.0258738994598389 0.0300000000000011 0.0300000000000011 0.0 94 -95 0.0232770442962646 0.019999999999996 0.019999999999996 0.0 95 -96 0.022737979888916 0.0200000000000031 0.0200000000000031 0.0 96 -97 0.0484600067138672 0.0499999999999972 0.0499999999999972 0.0 97 -98 0.023435115814209 0.0200000000000031 0.0200000000000031 0.0 98 -99 0.0234768390655518 0.0300000000000011 0.0300000000000011 0.0 99 -100 0.0230209827423096 0.019999999999996 0.019999999999996 0.0 100 -101 0.0230460166931152 0.0200000000000031 0.0200000000000031 0.0 101 -102 0.0232481956481934 0.0300000000000011 0.0300000000000011 0.0 102 -103 0.0264010429382324 0.019999999999996 0.019999999999996 0.0 103 -104 0.0486769676208496 0.0500000000000043 0.0500000000000043 0.0 104 -105 0.0233399868011475 0.019999999999996 0.019999999999996 0.0 105 -106 0.0231819152832031 0.0300000000000011 0.0300000000000011 0.0 106 -107 0.0230488777160645 0.0200000000000031 0.0200000000000031 0.0 107 -108 0.0238149166107178 0.019999999999996 0.019999999999996 0.0 108 -109 0.0230348110198975 0.0300000000000011 0.0300000000000011 0.0 109 -110 0.0254418849945068 0.0200000000000031 0.0200000000000031 0.0 110 -111 0.0559201240539551 0.0599999999999952 0.0599999999999952 0.0 111 -112 0.0237429141998291 0.0200000000000031 0.0200000000000031 0.0 112 -113 0.0230910778045654 0.0300000000000011 0.0300000000000011 0.0 113 -114 0.0230679512023926 0.019999999999996 0.019999999999996 0.0 114 -115 0.022960901260376 0.0200000000000031 0.0200000000000031 0.0 115 -116 0.0229921340942383 0.019999999999996 0.019999999999996 0.0 116 -117 0.0226120948791504 0.0300000000000011 0.0300000000000011 0.0 117 -118 0.0491540431976318 0.0500000000000043 0.0500000000000043 0.0 118 -119 0.0233540534973145 0.019999999999996 0.019999999999996 0.0 119 -120 0.023921012878418 0.0200000000000031 0.0200000000000031 0.0 120 -121 0.02628493309021 0.0300000000000011 0.0300000000000011 0.0 121 -122 0.0231039524078369 0.019999999999996 0.019999999999996 0.0 122 -123 0.0229899883270264 0.0300000000000011 0.0300000000000011 0.0 123 -124 0.0484068393707275 0.0399999999999991 0.0399999999999991 0.0 124 -125 0.0236389636993408 0.0300000000000011 0.0300000000000011 0.0 125 -126 0.0232870578765869 0.019999999999996 0.019999999999996 0.0 126 -127 0.0232260227203369 0.0200000000000031 0.0200000000000031 0.0 127 -128 0.0229640007019043 0.0300000000000011 0.0300000000000011 0.0 128 -129 0.02298903465271 0.019999999999996 0.019999999999996 0.0 129 -130 0.0251820087432861 0.0300000000000011 0.0300000000000011 0.0 130 -131 0.0493929386138916 0.0399999999999991 0.0399999999999991 0.0 131 -132 0.0237491130828857 0.019999999999996 0.019999999999996 0.0 132 -133 0.0233249664306641 0.0200000000000031 0.0200000000000031 0.0 133 -134 0.0232069492340088 0.0300000000000011 0.0300000000000011 0.0 134 -135 0.0229921340942383 0.019999999999996 0.019999999999996 0.0 135 -136 0.0232110023498535 0.0200000000000031 0.0200000000000031 0.0 136 -137 0.0227601528167725 0.019999999999996 0.019999999999996 0.0 137 -138 0.0484609603881836 0.0500000000000043 0.0500000000000043 0.0 138 -139 0.0269899368286133 0.0300000000000011 0.0300000000000011 0.0 139 -140 0.0233750343322754 0.019999999999996 0.019999999999996 0.0 140 -141 0.023090124130249 0.0300000000000011 0.0300000000000011 0.0 141 -142 0.0229980945587158 0.019999999999996 0.019999999999996 0.0 142 -143 0.0231709480285645 0.0200000000000031 0.0200000000000031 0.0 143 -144 0.0230460166931152 0.0300000000000011 0.0300000000000011 0.0 144 -145 0.0494990348815918 0.0499999999999972 0.0499999999999972 0.0 145 -146 0.0304419994354248 0.0300000000000011 0.0300000000000011 0.0 146 -147 0.0233581066131592 0.0200000000000031 0.0200000000000031 0.0 147 -148 0.0262119770050049 0.0300000000000011 0.0300000000000011 0.0 148 -149 0.0228428840637207 0.019999999999996 0.019999999999996 0.0 149 -150 0.0228331089019775 0.0200000000000031 0.0200000000000031 0.0 150 -151 0.0226950645446777 0.019999999999996 0.019999999999996 0.0 151 -152 0.0486769676208496 0.0500000000000043 0.0500000000000043 0.0 152 -153 0.0234050750732422 0.029999999999994 0.029999999999994 0.0 153 -154 0.0234100818634033 0.0200000000000031 0.0200000000000031 0.0 154 -155 0.023036003112793 0.0200000000000031 0.0200000000000031 0.0 155 -156 0.0237429141998291 0.029999999999994 0.029999999999994 0.0 156 -157 0.0230100154876709 0.0200000000000031 0.0200000000000031 0.0 157 -158 0.0260419845581055 0.0300000000000011 0.0300000000000011 0.0 158 -159 0.0487880706787109 0.0399999999999991 0.0399999999999991 0.0 159 -160 0.0236630439758301 0.0200000000000031 0.0200000000000031 0.0 160 -161 0.0232570171356201 0.019999999999996 0.019999999999996 0.0 161 -162 0.0230000019073486 0.0300000000000011 0.0300000000000011 0.0 162 -163 0.0229759216308594 0.0200000000000031 0.0200000000000031 0.0 163 -164 0.0229389667510986 0.019999999999996 0.019999999999996 0.0 164 -165 0.0226230621337891 0.0200000000000031 0.0200000000000031 0.0 165 -166 0.052177906036377 0.0600000000000023 0.0600000000000023 0.0 166 -167 0.0238969326019287 0.019999999999996 0.019999999999996 0.0 167 -168 0.0231490135192871 0.0200000000000031 0.0200000000000031 0.0 168 -169 0.0229499340057373 0.029999999999994 0.029999999999994 0.0 169 -170 0.0229768753051758 0.0200000000000031 0.0200000000000031 0.0 170 -171 0.0229849815368652 0.0200000000000031 0.0200000000000031 0.0 171 -172 0.0481510162353516 0.0499999999999972 0.0499999999999972 0.0 172 -173 0.0235779285430908 0.0200000000000031 0.0200000000000031 0.0 173 -174 0.0235681533813477 0.029999999999994 0.029999999999994 0.0 174 -175 0.0232248306274414 0.0200000000000031 0.0200000000000031 0.0 175 -176 0.0256550312042236 0.0300000000000011 0.0300000000000011 0.0 176 -177 0.023108959197998 0.019999999999996 0.019999999999996 0.0 177 -178 0.0228090286254883 0.0200000000000031 0.0200000000000031 0.0 178 -179 0.0490450859069824 0.0499999999999972 0.0499999999999972 0.0 179 -180 0.0244641304016113 0.0300000000000011 0.0300000000000011 0.0 180 -181 0.0233809947967529 0.0200000000000031 0.0200000000000031 0.0 181 -182 0.0231349468231201 0.019999999999996 0.019999999999996 0.0 182 -183 0.0308740139007568 0.0300000000000011 0.0300000000000011 0.0 183 -184 0.0236179828643799 0.0300000000000011 0.0300000000000011 0.0 184 -185 0.0272319316864014 0.0200000000000031 0.0200000000000031 0.0 185 -186 0.0488860607147217 0.0399999999999991 0.0399999999999991 0.0 186 -187 0.0235450267791748 0.0300000000000011 0.0300000000000011 0.0 187 -188 0.0232491493225098 0.019999999999996 0.019999999999996 0.0 188 -189 0.0231590270996094 0.0200000000000031 0.0200000000000031 0.0 189 -190 0.0231139659881592 0.0300000000000011 0.0300000000000011 0.0 190 -191 0.0231552124023438 0.019999999999996 0.019999999999996 0.0 191 -192 0.022982120513916 0.0200000000000031 0.0200000000000031 0.0 192 -193 0.0529110431671143 0.0600000000000023 0.0600000000000023 0.0 193 -194 0.0235891342163086 0.019999999999996 0.019999999999996 0.0 194 -195 0.0234260559082031 0.0200000000000031 0.0200000000000031 0.0 195 -196 0.0230891704559326 0.029999999999994 0.029999999999994 0.0 196 -197 0.0230920314788818 0.0200000000000031 0.0200000000000031 0.0 197 -198 0.0229229927062988 0.0200000000000031 0.0200000000000031 0.0 198 -199 0.0226840972900391 0.029999999999994 0.029999999999994 0.0 199 -200 0.048753023147583 0.0400000000000063 0.0400000000000063 0.0 200 -201 0.0234558582305908 0.029999999999994 0.029999999999994 0.0 201 -202 0.0232200622558594 0.0200000000000031 0.0200000000000031 0.0 202 -203 0.0268151760101318 0.0300000000000011 0.0300000000000011 0.0 203 -204 0.0231211185455322 0.019999999999996 0.019999999999996 0.0 204 -205 0.0231039524078369 0.0200000000000031 0.0200000000000031 0.0 205 -206 0.0227501392364502 0.0300000000000011 0.0300000000000011 0.0 206 -207 0.0488438606262207 0.0499999999999972 0.0499999999999972 0.0 207 -208 0.023730993270874 0.0200000000000031 0.0200000000000031 0.0 208 -209 0.0231349468231201 0.019999999999996 0.019999999999996 0.0 209 -210 0.0231950283050537 0.0300000000000011 0.0300000000000011 0.0 210 -211 0.0232861042022705 0.0200000000000031 0.0200000000000031 0.0 211 -212 0.0260870456695557 0.0300000000000011 0.0300000000000011 0.0 212 -213 0.0480821132659912 0.0399999999999991 0.0399999999999991 0.0 213 -214 0.0236039161682129 0.029999999999994 0.029999999999994 0.0 214 -215 0.0233402252197266 0.0200000000000031 0.0200000000000031 0.0 215 -216 0.0233190059661865 0.0200000000000031 0.0200000000000031 0.0 216 -217 0.0242919921875 0.029999999999994 0.029999999999994 0.0 217 -218 0.0228087902069092 0.0200000000000031 0.0200000000000031 0.0 218 -219 0.0274980068206787 0.0300000000000011 0.0300000000000011 0.0 219 -220 0.0521900653839111 0.0499999999999972 0.0499999999999972 0.0 220 -221 0.0259828567504883 0.0300000000000011 0.0300000000000011 0.0 221 -222 0.0233159065246582 0.0200000000000031 0.0200000000000031 0.0 222 -223 0.0232350826263428 0.019999999999996 0.019999999999996 0.0 223 -224 0.023000955581665 0.0300000000000011 0.0300000000000011 0.0 224 -225 0.0230231285095215 0.0200000000000031 0.0200000000000031 0.0 225 -226 0.022864818572998 0.019999999999996 0.019999999999996 0.0 226 -227 0.0486090183258057 0.0500000000000043 0.0500000000000043 0.0 227 -228 0.0247719287872314 0.029999999999994 0.029999999999994 0.0 228 -229 0.0233240127563477 0.0200000000000031 0.0200000000000031 0.0 229 -230 0.0263748168945312 0.0300000000000011 0.0300000000000011 0.0 230 -231 0.0231301784515381 0.019999999999996 0.019999999999996 0.0 231 -232 0.0229740142822266 0.0200000000000031 0.0200000000000031 0.0 232 -233 0.0233769416809082 0.0300000000000011 0.0300000000000011 0.0 233 -234 0.0495500564575195 0.0499999999999972 0.0499999999999972 0.0 234 -235 0.0234000682830811 0.0200000000000031 0.0200000000000031 0.0 235 -236 0.0231790542602539 0.019999999999996 0.019999999999996 0.0 236 -237 0.0230810642242432 0.0300000000000011 0.0300000000000011 0.0 237 -238 0.0229249000549316 0.0200000000000031 0.0200000000000031 0.0 238 -239 0.0257270336151123 0.019999999999996 0.019999999999996 0.0 239 -240 0.0246570110321045 0.0300000000000011 0.0300000000000011 0.0 240 -241 0.049109935760498 0.0499999999999972 0.0499999999999972 0.0 241 -242 0.0233631134033203 0.0200000000000031 0.0200000000000031 0.0 242 -243 0.0232560634613037 0.0300000000000011 0.0300000000000011 0.0 243 -244 0.0232639312744141 0.019999999999996 0.019999999999996 0.0 244 -245 0.0231678485870361 0.0200000000000031 0.0200000000000031 0.0 245 -246 0.0229339599609375 0.0200000000000031 0.0200000000000031 0.0 246 -247 0.0234620571136475 0.029999999999994 0.029999999999994 0.0 247 -248 0.0517890453338623 0.0500000000000043 0.0500000000000043 0.0 248 -249 0.0233941078186035 0.019999999999996 0.019999999999996 0.0 249 -250 0.0230710506439209 0.0300000000000011 0.0300000000000011 0.0 250 -251 0.0229940414428711 0.0200000000000031 0.0200000000000031 0.0 251 -252 0.0231740474700928 0.019999999999996 0.019999999999996 0.0 252 -253 0.0238161087036133 0.0300000000000011 0.0300000000000011 0.0 253 -254 0.0480771064758301 0.0399999999999991 0.0399999999999991 0.0 254 -255 0.0314779281616211 0.0399999999999991 0.0399999999999991 0.0 255 -256 0.0233800411224365 0.0200000000000031 0.0200000000000031 0.0 256 -257 0.0274808406829834 0.0300000000000011 0.0300000000000011 0.0 257 -258 0.0230331420898438 0.019999999999996 0.019999999999996 0.0 258 -259 0.0229949951171875 0.0200000000000031 0.0200000000000031 0.0 259 -260 0.0227811336517334 0.0300000000000011 0.0300000000000011 0.0 260 -261 0.048346996307373 0.0399999999999991 0.0399999999999991 0.0 261 -262 0.0237669944763184 0.0300000000000011 0.0300000000000011 0.0 262 -263 0.0234119892120361 0.019999999999996 0.019999999999996 0.0 263 -264 0.0230929851531982 0.0300000000000011 0.0300000000000011 0.0 264 -265 0.0237300395965576 0.0200000000000031 0.0200000000000031 0.0 265 -266 0.0250859260559082 0.019999999999996 0.019999999999996 0.0 266 -267 0.0239300727844238 0.0300000000000011 0.0300000000000011 0.0 267 -268 0.048508882522583 0.0499999999999972 0.0499999999999972 0.0 268 -269 0.0236718654632568 0.0200000000000031 0.0200000000000031 0.0 269 -270 0.0233798027038574 0.0200000000000031 0.0200000000000031 0.0 270 -271 0.0230140686035156 0.029999999999994 0.029999999999994 0.0 271 -272 0.023123025894165 0.0200000000000031 0.0200000000000031 0.0 272 -273 0.0230128765106201 0.0200000000000031 0.0200000000000031 0.0 273 -274 0.0230889320373535 0.029999999999994 0.029999999999994 0.0 274 -275 0.0541810989379883 0.0500000000000043 0.0500000000000043 0.0 275 -276 0.0234689712524414 0.019999999999996 0.019999999999996 0.0 276 -277 0.0232949256896973 0.0300000000000011 0.0300000000000011 0.0 277 -278 0.0229971408843994 0.0200000000000031 0.0200000000000031 0.0 278 -279 0.023047924041748 0.019999999999996 0.019999999999996 0.0 279 -280 0.0229649543762207 0.0300000000000011 0.0300000000000011 0.0 280 -281 0.0231289863586426 0.0200000000000031 0.0200000000000031 0.0 281 -282 0.0487880706787109 0.0499999999999972 0.0499999999999972 0.0 282 -283 0.0234870910644531 0.0200000000000031 0.0200000000000031 0.0 283 -284 0.0263619422912598 0.0300000000000011 0.0300000000000011 0.0 284 -285 0.0238580703735352 0.019999999999996 0.019999999999996 0.0 285 -286 0.0231029987335205 0.0300000000000011 0.0300000000000011 0.0 286 -287 0.0230438709259033 0.019999999999996 0.019999999999996 0.0 287 -288 0.0477249622344971 0.0500000000000043 0.0500000000000043 0.0 288 -289 0.024465799331665 0.019999999999996 0.019999999999996 0.0 289 -290 0.023345947265625 0.0200000000000031 0.0200000000000031 0.0 290 -291 0.0297031402587891 0.0300000000000011 0.0300000000000011 0.0 291 -292 0.0236890316009521 0.0300000000000011 0.0300000000000011 0.0 292 -293 0.0227231979370117 0.019999999999996 0.019999999999996 0.0 293 -294 0.0271649360656738 0.0300000000000011 0.0300000000000011 0.0 294 -295 0.0483009815216064 0.0499999999999972 0.0499999999999972 0.0 295 -296 0.0236551761627197 0.0200000000000031 0.0200000000000031 0.0 296 -297 0.0233678817749023 0.0200000000000031 0.0200000000000031 0.0 297 -298 0.0230870246887207 0.029999999999994 0.029999999999994 0.0 298 -299 0.0232620239257812 0.0200000000000031 0.0200000000000031 0.0 299 -300 0.0231177806854248 0.0200000000000031 0.0200000000000031 0.0 300 -301 0.0231750011444092 0.029999999999994 0.029999999999994 0.0 301 -302 0.0530638694763184 0.0500000000000043 0.0500000000000043 0.0 302 -303 0.0237231254577637 0.019999999999996 0.019999999999996 0.0 303 -304 0.0232911109924316 0.0300000000000011 0.0300000000000011 0.0 304 -305 0.0233948230743408 0.0200000000000031 0.0200000000000031 0.0 305 -306 0.0232441425323486 0.019999999999996 0.019999999999996 0.0 306 -307 0.0230438709259033 0.0300000000000011 0.0300000000000011 0.0 307 -308 0.0230541229248047 0.0200000000000031 0.0200000000000031 0.0 308 -309 0.0487320423126221 0.0499999999999972 0.0499999999999972 0.0 309 -310 0.0232770442962646 0.0200000000000031 0.0200000000000031 0.0 310 -311 0.0253291130065918 0.0300000000000011 0.0300000000000011 0.0 311 -312 0.0244429111480713 0.019999999999996 0.019999999999996 0.0 312 -313 0.0229580402374268 0.0200000000000031 0.0200000000000031 0.0 313 -314 0.0229830741882324 0.029999999999994 0.029999999999994 0.0 314 -315 0.022658109664917 0.0200000000000031 0.0200000000000031 0.0 315 -316 0.0462629795074463 0.0499999999999972 0.0499999999999972 0.0 316 -317 0.023582935333252 0.0200000000000031 0.0200000000000031 0.0 317 -318 0.0232110023498535 0.0200000000000031 0.0200000000000031 0.0 318 -319 0.0232689380645752 0.029999999999994 0.029999999999994 0.0 319 -320 0.0231220722198486 0.0200000000000031 0.0200000000000031 0.0 320 -321 0.0256280899047852 0.0300000000000011 0.0300000000000011 0.0 321 -322 0.0481250286102295 0.0399999999999991 0.0399999999999991 0.0 322 -323 0.0235259532928467 0.0300000000000011 0.0300000000000011 0.0 323 -324 0.0235180854797363 0.019999999999996 0.019999999999996 0.0 324 -325 0.0231471061706543 0.0200000000000031 0.0200000000000031 0.0 325 -326 0.0238540172576904 0.0300000000000011 0.0300000000000011 0.0 326 -327 0.02276611328125 0.019999999999996 0.019999999999996 0.0 327 -328 0.0304388999938965 0.0399999999999991 0.0300000000000011 0.01 328 -329 0.0523970127105713 0.0500000000000043 0.0500000000000043 0.0 329 -330 0.023996114730835 0.029999999999994 0.029999999999994 0.0 330 -331 0.0234379768371582 0.0200000000000031 0.0200000000000031 0.0 331 -332 0.0230920314788818 0.019999999999996 0.019999999999996 0.0 332 -333 0.02305006980896 0.0300000000000011 0.0300000000000011 0.0 333 -334 0.0229852199554443 0.0200000000000031 0.0200000000000031 0.0 334 -335 0.0228848457336426 0.019999999999996 0.019999999999996 0.0 335 -336 0.0461750030517578 0.0500000000000043 0.0500000000000043 0.0 336 -337 0.0242049694061279 0.019999999999996 0.019999999999996 0.0 337 -338 0.0232689380645752 0.0300000000000011 0.0300000000000011 0.0 338 -339 0.027277946472168 0.0200000000000031 0.0200000000000031 0.0 339 -340 0.0230321884155273 0.0300000000000011 0.0300000000000011 0.0 340 -341 0.0230269432067871 0.019999999999996 0.019999999999996 0.0 341 -342 0.0231468677520752 0.0200000000000031 0.0200000000000031 0.0 342 -343 0.0488090515136719 0.0499999999999972 0.0499999999999972 0.0 343 -344 0.0232529640197754 0.0300000000000011 0.0300000000000011 0.0 344 -345 0.0230770111083984 0.0200000000000031 0.0200000000000031 0.0 345 -346 0.0230259895324707 0.019999999999996 0.019999999999996 0.0 346 -347 0.0230309963226318 0.0200000000000031 0.0200000000000031 0.0 347 -348 0.026080846786499 0.0300000000000011 0.0300000000000011 0.0 348 -349 0.023392915725708 0.019999999999996 0.019999999999996 0.0 349 -350 0.0461099147796631 0.0499999999999972 0.0499999999999972 0.0 350 -351 0.0233287811279297 0.0200000000000031 0.0200000000000031 0.0 351 -352 0.023190975189209 0.0300000000000011 0.0300000000000011 0.0 352 -353 0.0231750011444092 0.019999999999996 0.019999999999996 0.0 353 -354 0.0230758190155029 0.0200000000000031 0.0200000000000031 0.0 354 -355 0.0229721069335938 0.0300000000000011 0.0300000000000011 0.0 355 -356 0.0483551025390625 0.0499999999999972 0.0499999999999972 0.0 356 -357 0.0269951820373535 0.0200000000000031 0.0200000000000031 0.0 357 -358 0.0235021114349365 0.0300000000000011 0.0300000000000011 0.0 358 -359 0.0231399536132812 0.019999999999996 0.019999999999996 0.0 359 -360 0.0230071544647217 0.0200000000000031 0.0200000000000031 0.0 360 -361 0.0228490829467773 0.019999999999996 0.019999999999996 0.0 361 -362 0.0229380130767822 0.0300000000000011 0.0300000000000011 0.0 362 -363 0.0501840114593506 0.0500000000000043 0.0500000000000043 0.0 363 -364 0.029426097869873 0.029999999999994 0.029999999999994 0.0 364 -365 0.023777961730957 0.0200000000000031 0.0200000000000031 0.0 365 -366 0.0276000499725342 0.0300000000000011 0.0300000000000011 0.0 366 -367 0.0230789184570312 0.019999999999996 0.019999999999996 0.0 367 -368 0.0233089923858643 0.0200000000000031 0.0200000000000031 0.0 368 -369 0.0229260921478271 0.0300000000000011 0.0300000000000011 0.0 369 -370 0.0456759929656982 0.0399999999999991 0.0399999999999991 0.0 370 -371 0.0234260559082031 0.0300000000000011 0.0300000000000011 0.0 371 -372 0.0235531330108643 0.019999999999996 0.019999999999996 0.0 372 -373 0.0229899883270264 0.0200000000000031 0.0200000000000031 0.0 373 -374 0.0239078998565674 0.0300000000000011 0.0300000000000011 0.0 374 -375 0.0229928493499756 0.019999999999996 0.019999999999996 0.0 375 -376 0.0269260406494141 0.0300000000000011 0.0300000000000011 0.0 376 -377 0.0490090847015381 0.0499999999999972 0.0499999999999972 0.0 377 -378 0.0235331058502197 0.0200000000000031 0.0200000000000031 0.0 378 -379 0.0232670307159424 0.0200000000000031 0.0200000000000031 0.0 379 -380 0.0229969024658203 0.029999999999994 0.029999999999994 0.0 380 -381 0.0230321884155273 0.0200000000000031 0.0200000000000031 0.0 381 -382 0.0229909420013428 0.0200000000000031 0.0200000000000031 0.0 382 -383 0.022780179977417 0.029999999999994 0.029999999999994 0.0 383 -384 0.0519418716430664 0.0500000000000043 0.0500000000000043 0.0 384 -385 0.0233969688415527 0.019999999999996 0.019999999999996 0.0 385 -386 0.0231471061706543 0.0200000000000031 0.0200000000000031 0.0 386 -387 0.0230250358581543 0.0300000000000011 0.0300000000000011 0.0 387 -388 0.0229988098144531 0.019999999999996 0.019999999999996 0.0 388 -389 0.0229358673095703 0.0200000000000031 0.0200000000000031 0.0 389 -390 0.0482490062713623 0.0499999999999972 0.0499999999999972 0.0 390 -391 0.0239629745483398 0.0200000000000031 0.0200000000000031 0.0 391 -392 0.0235099792480469 0.0300000000000011 0.0300000000000011 0.0 392 -393 0.0232250690460205 0.019999999999996 0.019999999999996 0.0 393 -394 0.0269668102264404 0.0300000000000011 0.0300000000000011 0.0 394 -395 0.0230469703674316 0.0200000000000031 0.0200000000000031 0.0 395 -396 0.0230209827423096 0.019999999999996 0.019999999999996 0.0 396 -397 0.0488598346710205 0.0500000000000043 0.0500000000000043 0.0 397 -398 0.0243711471557617 0.029999999999994 0.029999999999994 0.0 398 -399 0.023435115814209 0.0200000000000031 0.0200000000000031 0.0 399 -400 0.0307729244232178 0.0300000000000011 0.0300000000000011 0.0 400 -401 0.0231430530548096 0.0300000000000011 0.0300000000000011 0.0 401 -402 0.0228579044342041 0.019999999999996 0.019999999999996 0.0 402 -403 0.0268239974975586 0.0300000000000011 0.0300000000000011 0.0 403 -404 0.0487518310546875 0.0399999999999991 0.0399999999999991 0.0 404 -405 0.0233860015869141 0.0300000000000011 0.0300000000000011 0.0 405 -406 0.0233309268951416 0.0200000000000031 0.0200000000000031 0.0 406 -407 0.0230538845062256 0.019999999999996 0.019999999999996 0.0 407 -408 0.0232100486755371 0.0300000000000011 0.0300000000000011 0.0 408 -409 0.0231878757476807 0.0200000000000031 0.0200000000000031 0.0 409 -410 0.0229208469390869 0.019999999999996 0.019999999999996 0.0 410 -411 0.0527458190917969 0.0600000000000023 0.0600000000000023 0.0 411 -412 0.0235259532928467 0.019999999999996 0.019999999999996 0.0 412 -413 0.0231070518493652 0.0200000000000031 0.0200000000000031 0.0 413 -414 0.0231637954711914 0.0300000000000011 0.0300000000000011 0.0 414 -415 0.0231881141662598 0.019999999999996 0.019999999999996 0.0 415 -416 0.0229959487915039 0.0200000000000031 0.0200000000000031 0.0 416 -417 0.0480611324310303 0.0499999999999972 0.0499999999999972 0.0 417 -418 0.0235860347747803 0.0200000000000031 0.0200000000000031 0.0 418 -419 0.0235400199890137 0.0300000000000011 0.0300000000000011 0.0 419 -420 0.0231409072875977 0.019999999999996 0.019999999999996 0.0 420 -421 0.0267078876495361 0.0300000000000011 0.0300000000000011 0.0 421 -422 0.0230278968811035 0.0200000000000031 0.0200000000000031 0.0 422 -423 0.0228691101074219 0.019999999999996 0.019999999999996 0.0 423 -424 0.0483551025390625 0.0500000000000043 0.0500000000000043 0.0 424 -425 0.0237739086151123 0.029999999999994 0.029999999999994 0.0 425 -426 0.0233981609344482 0.0200000000000031 0.0200000000000031 0.0 426 -427 0.0230469703674316 0.0200000000000031 0.0200000000000031 0.0 427 -428 0.0233399868011475 0.029999999999994 0.029999999999994 0.0 428 -429 0.0231611728668213 0.0200000000000031 0.0200000000000031 0.0 429 -430 0.0267009735107422 0.0300000000000011 0.0300000000000011 0.0 430 -431 0.0472571849822998 0.0399999999999991 0.0399999999999991 0.0 431 -432 0.0234270095825195 0.0300000000000011 0.0300000000000011 0.0 432 -433 0.0233609676361084 0.019999999999996 0.019999999999996 0.0 433 -434 0.0230159759521484 0.0200000000000031 0.0200000000000031 0.0 434 -435 0.0242648124694824 0.0300000000000011 0.0300000000000011 0.0 435 -436 0.0230550765991211 0.019999999999996 0.019999999999996 0.0 436 -437 0.0298559665679932 0.0300000000000011 0.0300000000000011 0.0 437 -438 0.0506420135498047 0.0500000000000043 0.0500000000000043 0.0 438 -439 0.0245800018310547 0.029999999999994 0.029999999999994 0.0 439 -440 0.0232729911804199 0.0200000000000031 0.0200000000000031 0.0 440 -441 0.023047924041748 0.019999999999996 0.019999999999996 0.0 441 -442 0.0230588912963867 0.0300000000000011 0.0300000000000011 0.0 442 -443 0.0230181217193604 0.0200000000000031 0.0200000000000031 0.0 443 -444 0.0474259853363037 0.0499999999999972 0.0499999999999972 0.0 444 -445 0.0234999656677246 0.0200000000000031 0.0200000000000031 0.0 445 -446 0.0245218276977539 0.019999999999996 0.019999999999996 0.0 446 -447 0.0232257843017578 0.0300000000000011 0.0300000000000011 0.0 447 -448 0.0262331962585449 0.0200000000000031 0.0200000000000031 0.0 448 -449 0.0228760242462158 0.0300000000000011 0.0300000000000011 0.0 449 -450 0.0228469371795654 0.019999999999996 0.019999999999996 0.0 450 -451 0.0489568710327148 0.0500000000000043 0.0500000000000043 0.0 451 -452 0.0236458778381348 0.019999999999996 0.019999999999996 0.0 452 -453 0.0232670307159424 0.0300000000000011 0.0300000000000011 0.0 453 -454 0.0231130123138428 0.0200000000000031 0.0200000000000031 0.0 454 -455 0.0231020450592041 0.019999999999996 0.019999999999996 0.0 455 -456 0.0229918956756592 0.0300000000000011 0.0300000000000011 0.0 456 -457 0.0239298343658447 0.0200000000000031 0.0200000000000031 0.0 457 -458 0.0493390560150146 0.0499999999999972 0.0499999999999972 0.0 458 -459 0.0235741138458252 0.019999999999996 0.019999999999996 0.0 459 -460 0.0232348442077637 0.0300000000000011 0.0300000000000011 0.0 460 -461 0.023144006729126 0.0200000000000031 0.0200000000000031 0.0 461 -462 0.0232930183410645 0.019999999999996 0.019999999999996 0.0 462 -463 0.0231001377105713 0.0300000000000011 0.0300000000000011 0.0 463 -464 0.022939920425415 0.0200000000000031 0.0200000000000031 0.0 464 -465 0.0494201183319092 0.0499999999999972 0.0499999999999972 0.0 465 -466 0.0259408950805664 0.0200000000000031 0.0200000000000031 0.0 466 -467 0.0232219696044922 0.0300000000000011 0.0300000000000011 0.0 467 -468 0.0229430198669434 0.019999999999996 0.019999999999996 0.0 468 -469 0.0229699611663818 0.0200000000000031 0.0200000000000031 0.0 469 -470 0.023082971572876 0.0300000000000011 0.0300000000000011 0.0 470 -471 0.0460779666900635 0.0399999999999991 0.0399999999999991 0.0 471 -472 0.0259521007537842 0.0300000000000011 0.0300000000000011 0.0 472 -473 0.0284790992736816 0.029999999999994 0.029999999999994 0.0 473 -474 0.0231249332427979 0.0200000000000031 0.0200000000000031 0.0 474 -475 0.0256848335266113 0.0300000000000011 0.0300000000000011 0.0 475 -476 0.0245170593261719 0.019999999999996 0.019999999999996 0.0 476 -477 0.0228760242462158 0.0200000000000031 0.0200000000000031 0.0 477 -478 0.0482878684997559 0.0499999999999972 0.0499999999999972 0.0 478 -479 0.0235881805419922 0.0300000000000011 0.0300000000000011 0.0 479 -480 0.0232489109039307 0.0200000000000031 0.0200000000000031 0.0 480 -481 0.0233352184295654 0.019999999999996 0.019999999999996 0.0 481 -482 0.0229990482330322 0.0300000000000011 0.0300000000000011 0.0 482 -483 0.0238139629364014 0.0200000000000031 0.0200000000000031 0.0 483 -484 0.0229029655456543 0.019999999999996 0.019999999999996 0.0 484 -485 0.0516219139099121 0.0500000000000043 0.0500000000000043 0.0 485 -486 0.023360013961792 0.029999999999994 0.029999999999994 0.0 486 -487 0.0233120918273926 0.0200000000000031 0.0200000000000031 0.0 487 -488 0.0231151580810547 0.0200000000000031 0.0200000000000031 0.0 488 -489 0.0229690074920654 0.029999999999994 0.029999999999994 0.0 489 -490 0.0230300426483154 0.0200000000000031 0.0200000000000031 0.0 490 -491 0.0228698253631592 0.0200000000000031 0.0200000000000031 0.0 491 -492 0.0457451343536377 0.0499999999999972 0.0499999999999972 0.0 492 -493 0.0249300003051758 0.0200000000000031 0.0200000000000031 0.0 493 -494 0.0259578227996826 0.029999999999994 0.029999999999994 0.0 494 -495 0.0231161117553711 0.0200000000000031 0.0200000000000031 0.0 495 -496 0.0229859352111816 0.0300000000000011 0.0300000000000011 0.0 496 -497 0.0230338573455811 0.019999999999996 0.019999999999996 0.0 497 -498 0.0484039783477783 0.0500000000000043 0.0500000000000043 0.0 498 -499 0.0237560272216797 0.019999999999996 0.019999999999996 0.0 499 -500 0.0233612060546875 0.0200000000000031 0.0200000000000031 0.0 500 -501 0.0233550071716309 0.0300000000000011 0.0300000000000011 0.0 501 -502 0.0231049060821533 0.019999999999996 0.019999999999996 0.0 502 -503 0.026008129119873 0.0300000000000011 0.0300000000000011 0.0 503 -504 0.0228710174560547 0.0200000000000031 0.0200000000000031 0.0 504 -505 0.0483829975128174 0.0499999999999972 0.0499999999999972 0.0 505 -506 0.0237247943878174 0.0200000000000031 0.0200000000000031 0.0 506 -507 0.02410888671875 0.029999999999994 0.029999999999994 0.0 507 -508 0.0231809616088867 0.0200000000000031 0.0200000000000031 0.0 508 -509 0.0286002159118652 0.0300000000000011 0.0300000000000011 0.0 509 -510 0.0245559215545654 0.019999999999996 0.019999999999996 0.0 510 -511 0.0228598117828369 0.0300000000000011 0.0300000000000011 0.0 511 -512 0.0508739948272705 0.0500000000000043 0.0500000000000043 0.0 512 -513 0.0235428810119629 0.019999999999996 0.019999999999996 0.0 513 -514 0.0231621265411377 0.0200000000000031 0.0200000000000031 0.0 514 -515 0.0231170654296875 0.0300000000000011 0.0300000000000011 0.0 515 -516 0.023061990737915 0.019999999999996 0.019999999999996 0.0 516 -517 0.0231702327728271 0.0200000000000031 0.0200000000000031 0.0 517 -518 0.0230000019073486 0.0300000000000011 0.0300000000000011 0.0 518 -519 0.0464069843292236 0.0399999999999991 0.0399999999999991 0.0 519 -520 0.0233228206634521 0.0300000000000011 0.0300000000000011 0.0 520 -521 0.0263099670410156 0.019999999999996 0.019999999999996 0.0 521 -522 0.0230581760406494 0.0300000000000011 0.0300000000000011 0.0 522 -523 0.0230810642242432 0.019999999999996 0.019999999999996 0.0 523 -524 0.0231571197509766 0.0200000000000031 0.0200000000000031 0.0 524 -525 0.0479769706726074 0.0499999999999972 0.0499999999999972 0.0 525 -526 0.0237100124359131 0.0200000000000031 0.0200000000000031 0.0 526 -527 0.0232999324798584 0.0300000000000011 0.0300000000000011 0.0 527 -528 0.0232400894165039 0.019999999999996 0.019999999999996 0.0 528 -529 0.0229151248931885 0.0200000000000031 0.0200000000000031 0.0 529 -530 0.0261499881744385 0.0300000000000011 0.0300000000000011 0.0 530 -531 0.0231139659881592 0.019999999999996 0.019999999999996 0.0 531 -532 0.0486347675323486 0.0500000000000043 0.0500000000000043 0.0 532 -533 0.023561954498291 0.0300000000000011 0.0300000000000011 0.0 533 -534 0.0232679843902588 0.019999999999996 0.019999999999996 0.0 534 -535 0.023292064666748 0.0200000000000031 0.0200000000000031 0.0 535 -536 0.0231978893280029 0.0300000000000011 0.0300000000000011 0.0 536 -537 0.0229289531707764 0.019999999999996 0.019999999999996 0.0 537 -538 0.0231430530548096 0.0200000000000031 0.0200000000000031 0.0 538 -539 0.0520761013031006 0.0499999999999972 0.0499999999999972 0.0 539 -540 0.0233478546142578 0.0300000000000011 0.0300000000000011 0.0 540 -541 0.0231640338897705 0.019999999999996 0.019999999999996 0.0 541 -542 0.0230228900909424 0.0200000000000031 0.0200000000000031 0.0 542 -543 0.0231611728668213 0.0300000000000011 0.0300000000000011 0.0 543 -544 0.0238080024719238 0.019999999999996 0.019999999999996 0.0 544 -545 0.0228090286254883 0.0200000000000031 0.0200000000000031 0.0 545 -546 0.0527040958404541 0.0600000000000023 0.0600000000000023 0.0 546 -547 0.0233268737792969 0.019999999999996 0.019999999999996 0.0 547 -548 0.0268959999084473 0.0300000000000011 0.0300000000000011 0.0 548 -549 0.02323317527771 0.0200000000000031 0.0200000000000031 0.0 549 -550 0.0231490135192871 0.019999999999996 0.019999999999996 0.0 550 -551 0.0229969024658203 0.0300000000000011 0.0300000000000011 0.0 551 -552 0.0478971004486084 0.0399999999999991 0.0399999999999991 0.0 552 -553 0.0237979888916016 0.0300000000000011 0.0300000000000011 0.0 553 -554 0.0234241485595703 0.0200000000000031 0.0200000000000031 0.0 554 -555 0.023115873336792 0.019999999999996 0.019999999999996 0.0 555 -556 0.0237019062042236 0.0300000000000011 0.0300000000000011 0.0 556 -557 0.0229599475860596 0.0200000000000031 0.0200000000000031 0.0 557 -558 0.0263819694519043 0.029999999999994 0.029999999999994 0.0 558 -559 0.0488171577453613 0.0500000000000043 0.0500000000000043 0.0 559 -560 0.023486852645874 0.019999999999996 0.019999999999996 0.0 560 -561 0.0233681201934814 0.0200000000000031 0.0200000000000031 0.0 561 -562 0.0230288505554199 0.0300000000000011 0.0300000000000011 0.0 562 -563 0.022907018661499 0.019999999999996 0.019999999999996 0.0 563 -564 0.0227639675140381 0.0200000000000031 0.0200000000000031 0.0 564 -565 0.0228629112243652 0.019999999999996 0.019999999999996 0.0 565 -566 0.0502970218658447 0.0499999999999972 0.0499999999999972 0.0 566 -567 0.0234780311584473 0.0200000000000031 0.0200000000000031 0.0 567 -568 0.0246810913085938 0.019999999999996 0.019999999999996 0.0 568 -569 0.0233399868011475 0.0300000000000011 0.0300000000000011 0.0 569 -570 0.0233209133148193 0.0200000000000031 0.0200000000000031 0.0 570 -571 0.0233681201934814 0.019999999999996 0.019999999999996 0.0 571 -572 0.0485889911651611 0.0500000000000043 0.0500000000000043 0.0 572 -573 0.0244321823120117 0.029999999999994 0.029999999999994 0.0 573 -574 0.0241711139678955 0.0200000000000031 0.0200000000000031 0.0 574 -575 0.0249710083007812 0.0300000000000011 0.0300000000000011 0.0 575 -576 0.0267090797424316 0.019999999999996 0.019999999999996 0.0 576 -577 0.0232799053192139 0.0300000000000011 0.0300000000000011 0.0 577 -578 0.0231969356536865 0.0200000000000031 0.0200000000000031 0.0 578 -579 0.0491700172424316 0.0499999999999972 0.0499999999999972 0.0 579 -580 0.025277853012085 0.0200000000000031 0.0200000000000031 0.0 580 -581 0.0265741348266602 0.0300000000000011 0.0300000000000011 0.0 581 -582 0.0273458957672119 0.029999999999994 0.029999999999994 0.0 582 -583 0.0252799987792969 0.0200000000000031 0.0200000000000031 0.0 583 -584 0.0245480537414551 0.0300000000000011 0.0300000000000011 0.0 584 -585 0.0260021686553955 0.019999999999996 0.019999999999996 0.0 585 -586 0.0474262237548828 0.0500000000000043 0.0500000000000043 0.0 586 -587 0.0234909057617188 0.0300000000000011 0.0300000000000011 0.0 587 -588 0.023231029510498 0.019999999999996 0.019999999999996 0.0 588 -589 0.0231058597564697 0.0200000000000031 0.0200000000000031 0.0 589 -590 0.0234060287475586 0.0300000000000011 0.0300000000000011 0.0 590 -591 0.0230560302734375 0.019999999999996 0.019999999999996 0.0 591 -592 0.0236189365386963 0.0200000000000031 0.0200000000000031 0.0 592 -593 0.0531678199768066 0.0599999999999952 0.0599999999999952 0.0 593 -594 0.0234320163726807 0.0200000000000031 0.0200000000000031 0.0 594 -595 0.0234501361846924 0.019999999999996 0.019999999999996 0.0 595 -596 0.023097038269043 0.0300000000000011 0.0300000000000011 0.0 596 -597 0.0239620208740234 0.0200000000000031 0.0200000000000031 0.0 597 -598 0.023064136505127 0.019999999999996 0.019999999999996 0.0 598 -599 0.0469310283660889 0.0500000000000043 0.0500000000000043 0.0 599 -600 0.0238142013549805 0.019999999999996 0.019999999999996 0.0 600 -601 0.0232729911804199 0.0200000000000031 0.0200000000000031 0.0 601 -602 0.0264449119567871 0.0300000000000011 0.0300000000000011 0.0 602 -603 0.0250101089477539 0.0300000000000011 0.0300000000000011 0.0 603 -604 0.022953987121582 0.019999999999996 0.019999999999996 0.0 604 -605 0.0227360725402832 0.0200000000000031 0.0200000000000031 0.0 605 -606 0.0484528541564941 0.0499999999999972 0.0499999999999972 0.0 606 -607 0.0238401889801025 0.0200000000000031 0.0200000000000031 0.0 607 -608 0.023205041885376 0.0300000000000011 0.0300000000000011 0.0 608 -609 0.0230309963226318 0.019999999999996 0.019999999999996 0.0 609 -610 0.0233237743377686 0.0200000000000031 0.0200000000000031 0.0 610 -611 0.0229151248931885 0.0300000000000011 0.0300000000000011 0.0 611 -612 0.0266458988189697 0.019999999999996 0.019999999999996 0.0 612 -613 0.0459887981414795 0.0499999999999972 0.0499999999999972 0.0 613 -614 0.0233139991760254 0.0200000000000031 0.0200000000000031 0.0 614 -615 0.0232000350952148 0.0300000000000011 0.0300000000000011 0.0 615 -616 0.0238010883331299 0.019999999999996 0.019999999999996 0.0 616 -617 0.0231029987335205 0.0200000000000031 0.0200000000000031 0.0 617 -618 0.031013011932373 0.0300000000000011 0.0300000000000011 0.0 618 -619 0.0480711460113525 0.0499999999999972 0.0499999999999972 0.0 619 -620 0.0269320011138916 0.0300000000000011 0.0300000000000011 0.0 620 -621 0.0233550071716309 0.0200000000000031 0.0200000000000031 0.0 621 -622 0.0232939720153809 0.029999999999994 0.029999999999994 0.0 622 -623 0.0229189395904541 0.0200000000000031 0.0200000000000031 0.0 623 -624 0.022881031036377 0.0200000000000031 0.0200000000000031 0.0 624 -625 0.0228018760681152 0.029999999999994 0.029999999999994 0.0 625 -626 0.0487551689147949 0.0400000000000063 0.0400000000000063 0.0 626 -627 0.0234999656677246 0.029999999999994 0.029999999999994 0.0 627 -628 0.023996114730835 0.0200000000000031 0.0200000000000031 0.0 628 -629 0.0232369899749756 0.0300000000000011 0.0300000000000011 0.0 629 -630 0.0269510746002197 0.019999999999996 0.019999999999996 0.0 630 -631 0.024583101272583 0.0300000000000011 0.0300000000000011 0.0 631 -632 0.0230491161346436 0.0200000000000031 0.0200000000000031 0.0 632 -633 0.0473129749298096 0.0499999999999972 0.0499999999999972 0.0 633 -634 0.0233309268951416 0.0200000000000031 0.0200000000000031 0.0 634 -635 0.0232229232788086 0.019999999999996 0.019999999999996 0.0 635 -636 0.0229809284210205 0.0300000000000011 0.0300000000000011 0.0 636 -637 0.0231940746307373 0.0200000000000031 0.0200000000000031 0.0 637 -638 0.0231130123138428 0.019999999999996 0.019999999999996 0.0 638 -639 0.0522749423980713 0.0500000000000043 0.0500000000000043 0.0 639 -640 0.0235979557037354 0.029999999999994 0.029999999999994 0.0 640 -641 0.0233168601989746 0.0200000000000031 0.0200000000000031 0.0 641 -642 0.0231528282165527 0.0300000000000011 0.0300000000000011 0.0 642 -643 0.0232172012329102 0.019999999999996 0.019999999999996 0.0 643 -644 0.0227980613708496 0.0200000000000031 0.0200000000000031 0.0 644 -645 0.0227620601654053 0.0200000000000031 0.0200000000000031 0.0 645 -646 0.0490891933441162 0.0499999999999972 0.0499999999999972 0.0 646 -647 0.0240461826324463 0.0300000000000011 0.0300000000000011 0.0 647 -648 0.0267610549926758 0.019999999999996 0.019999999999996 0.0 648 -649 0.0232100486755371 0.0300000000000011 0.0300000000000011 0.0 649 -650 0.0230560302734375 0.0200000000000031 0.0200000000000031 0.0 650 -651 0.023500919342041 0.019999999999996 0.019999999999996 0.0 651 -652 0.0230460166931152 0.0300000000000011 0.0300000000000011 0.0 652 -653 0.0512759685516357 0.0500000000000043 0.0500000000000043 0.0 653 -654 0.0272390842437744 0.019999999999996 0.019999999999996 0.0 654 -655 0.0247349739074707 0.0300000000000011 0.0300000000000011 0.0 655 -656 0.0230178833007812 0.0200000000000031 0.0200000000000031 0.0 656 -657 0.0271899700164795 0.029999999999994 0.029999999999994 0.0 657 -658 0.0229711532592773 0.0200000000000031 0.0200000000000031 0.0 658 -659 0.0228548049926758 0.019999999999996 0.019999999999996 0.0 659 -660 0.0488860607147217 0.0500000000000043 0.0500000000000043 0.0 660 -661 0.0232799053192139 0.0300000000000011 0.0300000000000011 0.0 661 -662 0.0232510566711426 0.019999999999996 0.019999999999996 0.0 662 -663 0.0229790210723877 0.0200000000000031 0.0200000000000031 0.0 663 -664 0.0242810249328613 0.0300000000000011 0.0300000000000011 0.0 664 -665 0.0230100154876709 0.019999999999996 0.019999999999996 0.0 665 -666 0.0498199462890625 0.0500000000000043 0.0500000000000043 0.0 666 -667 0.0237331390380859 0.019999999999996 0.019999999999996 0.0 667 -668 0.0234551429748535 0.0300000000000011 0.0300000000000011 0.0 668 -669 0.0231800079345703 0.0200000000000031 0.0200000000000031 0.0 669 -670 0.0229709148406982 0.019999999999996 0.019999999999996 0.0 670 -671 0.023015022277832 0.0300000000000011 0.0300000000000011 0.0 671 -672 0.0230131149291992 0.0200000000000031 0.0200000000000031 0.0 672 -673 0.0487980842590332 0.0499999999999972 0.0499999999999972 0.0 673 -674 0.0240719318389893 0.0200000000000031 0.0200000000000031 0.0 674 -675 0.0269160270690918 0.029999999999994 0.029999999999994 0.0 675 -676 0.0230348110198975 0.0200000000000031 0.0200000000000031 0.0 676 -677 0.0227870941162109 0.0300000000000011 0.0300000000000011 0.0 677 -678 0.0228049755096436 0.019999999999996 0.019999999999996 0.0 678 -679 0.0226888656616211 0.0200000000000031 0.0200000000000031 0.0 679 -680 0.0477821826934814 0.0499999999999972 0.0499999999999972 0.0 680 -681 0.0232739448547363 0.0200000000000031 0.0200000000000031 0.0 681 -682 0.023953914642334 0.0300000000000011 0.0300000000000011 0.0 682 -683 0.0229859352111816 0.019999999999996 0.019999999999996 0.0 683 -684 0.0254220962524414 0.0200000000000031 0.0200000000000031 0.0 684 -685 0.0239348411560059 0.0300000000000011 0.0300000000000011 0.0 685 -686 0.0478279590606689 0.0499999999999972 0.0499999999999972 0.0 686 -687 0.023798942565918 0.0200000000000031 0.0200000000000031 0.0 687 -688 0.0233008861541748 0.019999999999996 0.019999999999996 0.0 688 -689 0.0240800380706787 0.0300000000000011 0.0300000000000011 0.0 689 -690 0.0304360389709473 0.0300000000000011 0.0300000000000011 0.0 690 -691 0.022982120513916 0.019999999999996 0.019999999999996 0.0 691 -692 0.0228438377380371 0.0200000000000031 0.0200000000000031 0.0 692 -693 0.0521981716156006 0.0600000000000023 0.0600000000000023 0.0 693 -694 0.0234532356262207 0.019999999999996 0.019999999999996 0.0 694 -695 0.0232119560241699 0.0200000000000031 0.0200000000000031 0.0 695 -696 0.0229840278625488 0.0300000000000011 0.0300000000000011 0.0 696 -697 0.0229799747467041 0.019999999999996 0.019999999999996 0.0 697 -698 0.0229427814483643 0.0200000000000031 0.0200000000000031 0.0 698 -699 0.0228908061981201 0.0300000000000011 0.0300000000000011 0.0 699 -700 0.0482070446014404 0.0399999999999991 0.0399999999999991 0.0 700 -701 0.023360013961792 0.0300000000000011 0.0300000000000011 0.0 701 -702 0.027055025100708 0.019999999999996 0.019999999999996 0.0 702 -703 0.0230090618133545 0.0300000000000011 0.0300000000000011 0.0 703 -704 0.02317214012146 0.019999999999996 0.019999999999996 0.0 704 -705 0.022986888885498 0.0200000000000031 0.0200000000000031 0.0 705 -706 0.0481140613555908 0.0499999999999972 0.0499999999999972 0.0 706 -707 0.0237739086151123 0.0300000000000011 0.0300000000000011 0.0 707 -708 0.0233809947967529 0.0200000000000031 0.0200000000000031 0.0 708 -709 0.0233211517333984 0.019999999999996 0.019999999999996 0.0 709 -710 0.0229690074920654 0.0300000000000011 0.0300000000000011 0.0 710 -711 0.0244121551513672 0.0200000000000031 0.0200000000000031 0.0 711 -712 0.0250389575958252 0.019999999999996 0.019999999999996 0.0 712 -713 0.0485482215881348 0.0399999999999991 0.0399999999999991 0.0 713 -714 0.0234758853912354 0.0300000000000011 0.0300000000000011 0.0 714 -715 0.023453950881958 0.019999999999996 0.019999999999996 0.0 715 -716 0.0230729579925537 0.0200000000000031 0.0200000000000031 0.0 716 -717 0.0230581760406494 0.0300000000000011 0.0300000000000011 0.0 717 -718 0.0230929851531982 0.019999999999996 0.019999999999996 0.0 718 -719 0.0229818820953369 0.0200000000000031 0.0200000000000031 0.0 719 -720 0.0512728691101074 0.0499999999999972 0.0499999999999972 0.0 720 -721 0.0234599113464355 0.0300000000000011 0.0300000000000011 0.0 721 -722 0.023129940032959 0.019999999999996 0.019999999999996 0.0 722 -723 0.0229649543762207 0.0200000000000031 0.0200000000000031 0.0 723 -724 0.0230588912963867 0.0300000000000011 0.0300000000000011 0.0 724 -725 0.0236339569091797 0.019999999999996 0.019999999999996 0.0 725 -726 0.0562300682067871 0.0600000000000023 0.0600000000000023 0.0 726 -727 0.0310180187225342 0.0300000000000011 0.0300000000000011 0.0 727 -728 0.0244710445404053 0.0200000000000031 0.0200000000000031 0.0 728 -729 0.0285270214080811 0.029999999999994 0.029999999999994 0.0 729 -730 0.0235979557037354 0.0300000000000011 0.0300000000000011 0.0 730 -731 0.0233108997344971 0.0200000000000031 0.0200000000000031 0.0 731 -732 0.0233650207519531 0.019999999999996 0.019999999999996 0.0 732 -733 0.0499210357666016 0.0500000000000043 0.0500000000000043 0.0 733 -734 0.0240199565887451 0.0300000000000011 0.0300000000000011 0.0 734 -735 0.0234189033508301 0.019999999999996 0.019999999999996 0.0 735 -736 0.0239479541778564 0.0200000000000031 0.0200000000000031 0.0 736 -737 0.0234498977661133 0.0300000000000011 0.0300000000000011 0.0 737 -738 0.027393102645874 0.019999999999996 0.019999999999996 0.0 738 -739 0.0233581066131592 0.0300000000000011 0.0300000000000011 0.0 739 -740 0.0494859218597412 0.0499999999999972 0.0499999999999972 0.0 740 -741 0.023939847946167 0.0200000000000031 0.0200000000000031 0.0 741 -742 0.0237078666687012 0.0300000000000011 0.0300000000000011 0.0 742 -743 0.023622989654541 0.019999999999996 0.019999999999996 0.0 743 -744 0.0235440731048584 0.0200000000000031 0.0200000000000031 0.0 744 -745 0.0236668586730957 0.0300000000000011 0.0300000000000011 0.0 745 -746 0.0538251399993896 0.0499999999999972 0.0499999999999972 0.0 746 -747 0.0246829986572266 0.0300000000000011 0.0300000000000011 0.0 747 -748 0.0239181518554688 0.019999999999996 0.019999999999996 0.0 748 -749 0.02370285987854 0.0200000000000031 0.0200000000000031 0.0 749 -750 0.0234520435333252 0.0300000000000011 0.0300000000000011 0.0 750 -751 0.0234749317169189 0.019999999999996 0.019999999999996 0.0 751 -752 0.0232760906219482 0.0200000000000031 0.0200000000000031 0.0 752 -753 0.050915002822876 0.0499999999999972 0.0499999999999972 0.0 753 -754 0.0237371921539307 0.0300000000000011 0.0300000000000011 0.0 754 -755 0.0239219665527344 0.0200000000000031 0.0200000000000031 0.0 755 -756 0.0273880958557129 0.0300000000000011 0.0300000000000011 0.0 756 -757 0.0232698917388916 0.019999999999996 0.019999999999996 0.0 757 -758 0.0235319137573242 0.0300000000000011 0.0300000000000011 0.0 758 -759 0.0232620239257812 0.0200000000000031 0.0200000000000031 0.0 759 -760 0.0498092174530029 0.0499999999999972 0.0499999999999972 0.0 760 -761 0.0315971374511719 0.0300000000000011 0.0300000000000011 0.0 761 -762 0.0236649513244629 0.019999999999996 0.019999999999996 0.0 762 -763 0.0233211517333984 0.0300000000000011 0.0300000000000011 0.0 763 -764 0.0230920314788818 0.0200000000000031 0.0200000000000031 0.0 764 -765 0.0270240306854248 0.0300000000000011 0.0300000000000011 0.0 765 -766 0.0479528903961182 0.0499999999999972 0.0499999999999972 0.0 766 -767 0.025413990020752 0.0200000000000031 0.0200000000000031 0.0 767 -768 0.0233969688415527 0.019999999999996 0.019999999999996 0.0 768 -769 0.0232100486755371 0.0300000000000011 0.0300000000000011 0.0 769 -770 0.0230209827423096 0.0200000000000031 0.0200000000000031 0.0 770 -771 0.0228300094604492 0.019999999999996 0.019999999999996 0.0 771 -772 0.0236411094665527 0.0300000000000011 0.0300000000000011 0.0 772 -773 0.0529980659484863 0.0499999999999972 0.0499999999999972 0.0 773 -774 0.0234870910644531 0.0200000000000031 0.0200000000000031 0.0 774 -775 0.0233190059661865 0.0300000000000011 0.0300000000000011 0.0 775 -776 0.0230171680450439 0.019999999999996 0.019999999999996 0.0 776 -777 0.0230998992919922 0.0200000000000031 0.0200000000000031 0.0 777 -778 0.0230000019073486 0.0300000000000011 0.0300000000000011 0.0 778 -779 0.0227389335632324 0.019999999999996 0.019999999999996 0.0 779 -780 0.0475330352783203 0.0500000000000043 0.0500000000000043 0.0 780 -781 0.0235450267791748 0.019999999999996 0.019999999999996 0.0 781 -782 0.024838924407959 0.0200000000000031 0.0200000000000031 0.0 782 -783 0.0251529216766357 0.0300000000000011 0.0300000000000011 0.0 783 -784 0.0230610370635986 0.019999999999996 0.019999999999996 0.0 784 -785 0.0230369567871094 0.0300000000000011 0.0300000000000011 0.0 785 -786 0.0483219623565674 0.0399999999999991 0.0399999999999991 0.0 786 -787 0.023716926574707 0.0300000000000011 0.0300000000000011 0.0 787 -788 0.0233070850372314 0.0200000000000031 0.0200000000000031 0.0 788 -789 0.0230929851531982 0.019999999999996 0.019999999999996 0.0 789 -790 0.0231740474700928 0.0300000000000011 0.0300000000000011 0.0 790 -791 0.0228431224822998 0.0200000000000031 0.0200000000000031 0.0 791 -792 0.0254631042480469 0.029999999999994 0.029999999999994 0.0 792 -793 0.0485448837280273 0.0399999999999991 0.0399999999999991 0.0 793 -794 0.0234110355377197 0.0300000000000011 0.0300000000000011 0.0 794 -795 0.023223876953125 0.0200000000000031 0.0200000000000031 0.0 795 -796 0.0238728523254395 0.0300000000000011 0.0300000000000011 0.0 796 -797 0.0251760482788086 0.019999999999996 0.019999999999996 0.0 797 -798 0.0276870727539062 0.0300000000000011 0.0300000000000011 0.0 798 -799 0.0227670669555664 0.0200000000000031 0.0200000000000031 0.0 799 -800 0.0514481067657471 0.0499999999999972 0.0499999999999972 0.0 800 -801 0.023374080657959 0.0300000000000011 0.0300000000000011 0.0 801 -802 0.0230941772460938 0.019999999999996 0.019999999999996 0.0 802 -803 0.0230350494384766 0.0200000000000031 0.0200000000000031 0.0 803 -804 0.0229940414428711 0.0300000000000011 0.0300000000000011 0.0 804 -805 0.0229909420013428 0.019999999999996 0.019999999999996 0.0 805 -806 0.0481908321380615 0.0500000000000043 0.0500000000000043 0.0 806 -807 0.0239169597625732 0.019999999999996 0.019999999999996 0.0 807 -808 0.0238561630249023 0.0200000000000031 0.0200000000000031 0.0 808 -809 0.0231790542602539 0.0300000000000011 0.0300000000000011 0.0 809 -810 0.0275747776031494 0.0300000000000011 0.0300000000000011 0.0 810 -811 0.0230591297149658 0.019999999999996 0.019999999999996 0.0 811 -812 0.0231878757476807 0.0200000000000031 0.0200000000000031 0.0 812 -813 0.048914909362793 0.0499999999999972 0.0499999999999972 0.0 813 -814 0.0234620571136475 0.0200000000000031 0.0200000000000031 0.0 814 -815 0.0232930183410645 0.0300000000000011 0.0300000000000011 0.0 815 -816 0.022986888885498 0.019999999999996 0.019999999999996 0.0 816 -817 0.0229377746582031 0.0200000000000031 0.0200000000000031 0.0 817 -818 0.0235490798950195 0.0300000000000011 0.0300000000000011 0.0 818 -819 0.0506079196929932 0.0499999999999972 0.0499999999999972 0.0 819 -820 0.023629903793335 0.019999999999996 0.019999999999996 0.0 820 -821 0.0234060287475586 0.0300000000000011 0.0300000000000011 0.0 821 -822 0.0231649875640869 0.0200000000000031 0.0200000000000031 0.0 822 -823 0.0232610702514648 0.019999999999996 0.019999999999996 0.0 823 -824 0.0246009826660156 0.0300000000000011 0.0300000000000011 0.0 824 -825 0.0229051113128662 0.0200000000000031 0.0200000000000031 0.0 825 -826 0.0487561225891113 0.0499999999999972 0.0499999999999972 0.0 826 -827 0.0235860347747803 0.0200000000000031 0.0200000000000031 0.0 827 -828 0.0275599956512451 0.0300000000000011 0.0300000000000011 0.0 828 -829 0.0231928825378418 0.019999999999996 0.019999999999996 0.0 829 -830 0.0227789878845215 0.0200000000000031 0.0200000000000031 0.0 830 -831 0.022838830947876 0.0300000000000011 0.0300000000000011 0.0 831 -832 0.0226640701293945 0.019999999999996 0.019999999999996 0.0 832 -833 0.0558691024780273 0.0600000000000023 0.0600000000000023 0.0 833 -834 0.0235500335693359 0.019999999999996 0.019999999999996 0.0 834 -835 0.0233221054077148 0.0200000000000031 0.0200000000000031 0.0 835 -836 0.0230560302734375 0.0300000000000011 0.0300000000000011 0.0 836 -837 0.026296854019165 0.019999999999996 0.019999999999996 0.0 837 -838 0.0231189727783203 0.0200000000000031 0.0200000000000031 0.0 838 -839 0.0479569435119629 0.0399999999999991 0.0399999999999991 0.0 839 -840 0.0236861705780029 0.0300000000000011 0.0300000000000011 0.0 840 -841 0.0233621597290039 0.0200000000000031 0.0200000000000031 0.0 841 -842 0.0233719348907471 0.019999999999996 0.019999999999996 0.0 842 -843 0.022942066192627 0.0300000000000011 0.0300000000000011 0.0 843 -844 0.0234341621398926 0.0200000000000031 0.0200000000000031 0.0 844 -845 0.0227351188659668 0.019999999999996 0.019999999999996 0.0 845 -846 0.0519671440124512 0.0500000000000043 0.0500000000000043 0.0 846 -847 0.0236749649047852 0.029999999999994 0.029999999999994 0.0 847 -848 0.0233500003814697 0.0200000000000031 0.0200000000000031 0.0 848 -849 0.0230710506439209 0.0300000000000011 0.0300000000000011 0.0 849 -850 0.0229990482330322 0.019999999999996 0.019999999999996 0.0 850 -851 0.0230109691619873 0.0200000000000031 0.0200000000000031 0.0 851 -852 0.0227420330047607 0.0200000000000031 0.0200000000000031 0.0 852 -853 0.0477049350738525 0.0499999999999972 0.0499999999999972 0.0 853 -854 0.0240600109100342 0.0300000000000011 0.0300000000000011 0.0 854 -855 0.026954174041748 0.019999999999996 0.019999999999996 0.0 855 -856 0.0229690074920654 0.0300000000000011 0.0300000000000011 0.0 856 -857 0.0230190753936768 0.0200000000000031 0.0200000000000031 0.0 857 -858 0.0229530334472656 0.019999999999996 0.019999999999996 0.0 858 -859 0.0483298301696777 0.0500000000000043 0.0500000000000043 0.0 859 -860 0.0237421989440918 0.019999999999996 0.019999999999996 0.0 860 -861 0.0233712196350098 0.0300000000000011 0.0300000000000011 0.0 861 -862 0.0233938694000244 0.0200000000000031 0.0200000000000031 0.0 862 -863 0.0228838920593262 0.019999999999996 0.019999999999996 0.0 863 -864 0.0237820148468018 0.0300000000000011 0.0300000000000011 0.0 864 -865 0.0258240699768066 0.0200000000000031 0.0200000000000031 0.0 865 -866 0.0487151145935059 0.0499999999999972 0.0499999999999972 0.0 866 -867 0.023514986038208 0.0300000000000011 0.0300000000000011 0.0 867 -868 0.023252010345459 0.019999999999996 0.019999999999996 0.0 868 -869 0.0243101119995117 0.0200000000000031 0.0200000000000031 0.0 869 -870 0.0295658111572266 0.0300000000000011 0.0300000000000011 0.0 870 -871 0.0230669975280762 0.0300000000000011 0.0300000000000011 0.0 871 -872 0.0470709800720215 0.0399999999999991 0.0399999999999991 0.0 872 -873 0.0276908874511719 0.0300000000000011 0.0300000000000011 0.0 873 -874 0.0235562324523926 0.029999999999994 0.029999999999994 0.0 874 -875 0.0232779979705811 0.0200000000000031 0.0200000000000031 0.0 875 -876 0.0230128765106201 0.0200000000000031 0.0200000000000031 0.0 876 -877 0.0227088928222656 0.019999999999996 0.019999999999996 0.0 877 -878 0.0227501392364502 0.0300000000000011 0.0300000000000011 0.0 878 -879 0.048612117767334 0.0499999999999972 0.0499999999999972 0.0 879 -880 0.0247840881347656 0.0200000000000031 0.0200000000000031 0.0 880 -881 0.0233609676361084 0.0200000000000031 0.0200000000000031 0.0 881 -882 0.0263519287109375 0.029999999999994 0.029999999999994 0.0 882 -883 0.0231118202209473 0.0200000000000031 0.0200000000000031 0.0 883 -884 0.0230841636657715 0.0300000000000011 0.0300000000000011 0.0 884 -885 0.022723913192749 0.019999999999996 0.019999999999996 0.0 885 -886 0.0473191738128662 0.0500000000000043 0.0500000000000043 0.0 886 -887 0.0233719348907471 0.019999999999996 0.019999999999996 0.0 887 -888 0.0231339931488037 0.0200000000000031 0.0200000000000031 0.0 888 -889 0.0230438709259033 0.0300000000000011 0.0300000000000011 0.0 889 -890 0.0230700969696045 0.019999999999996 0.019999999999996 0.0 890 -891 0.0235311985015869 0.0200000000000031 0.0200000000000031 0.0 891 -892 0.0513098239898682 0.0499999999999972 0.0499999999999972 0.0 892 -893 0.0237538814544678 0.0300000000000011 0.0300000000000011 0.0 893 -894 0.0234150886535645 0.0200000000000031 0.0200000000000031 0.0 894 -895 0.0234220027923584 0.029999999999994 0.029999999999994 0.0 895 -896 0.0229578018188477 0.0200000000000031 0.0200000000000031 0.0 896 -897 0.0227642059326172 0.0200000000000031 0.0200000000000031 0.0 897 -898 0.0227861404418945 0.019999999999996 0.019999999999996 0.0 898 -899 0.0495121479034424 0.0500000000000043 0.0500000000000043 0.0 899 -900 0.0261099338531494 0.029999999999994 0.029999999999994 0.0 900 -901 0.0232861042022705 0.0200000000000031 0.0200000000000031 0.0 901 -902 0.0230598449707031 0.0300000000000011 0.0300000000000011 0.0 902 -903 0.0229661464691162 0.019999999999996 0.019999999999996 0.0 903 -904 0.0229828357696533 0.0200000000000031 0.0200000000000031 0.0 904 -905 0.0227420330047607 0.0300000000000011 0.0300000000000011 0.0 905 -906 0.0554108619689941 0.0499999999999972 0.0499999999999972 0.0 906 -907 0.0234618186950684 0.0200000000000031 0.0200000000000031 0.0 907 -908 0.023097038269043 0.0300000000000011 0.0300000000000011 0.0 908 -909 0.0240907669067383 0.019999999999996 0.019999999999996 0.0 909 -910 0.0250539779663086 0.0300000000000011 0.0300000000000011 0.0 910 -911 0.0229489803314209 0.019999999999996 0.019999999999996 0.0 911 -912 0.0479700565338135 0.0500000000000043 0.0500000000000043 0.0 912 -913 0.023643970489502 0.019999999999996 0.019999999999996 0.0 913 -914 0.0235710144042969 0.0200000000000031 0.0200000000000031 0.0 914 -915 0.0231690406799316 0.0300000000000011 0.0300000000000011 0.0 915 -916 0.0229480266571045 0.019999999999996 0.019999999999996 0.0 916 -917 0.0235409736633301 0.0200000000000031 0.0200000000000031 0.0 917 -918 0.0229229927062988 0.0300000000000011 0.0300000000000011 0.0 918 -919 0.0514621734619141 0.0499999999999972 0.0499999999999972 0.0 919 -920 0.023529052734375 0.0200000000000031 0.0200000000000031 0.0 920 -921 0.0231509208679199 0.0300000000000011 0.0300000000000011 0.0 921 -922 0.0229501724243164 0.019999999999996 0.019999999999996 0.0 922 -923 0.0228419303894043 0.0200000000000031 0.0200000000000031 0.0 923 -924 0.0227689743041992 0.019999999999996 0.019999999999996 0.0 924 -925 0.047015905380249 0.0500000000000043 0.0500000000000043 0.0 925 -926 0.0242269039154053 0.0300000000000011 0.0300000000000011 0.0 926 -927 0.0240240097045898 0.019999999999996 0.019999999999996 0.0 927 -928 0.0257468223571777 0.0300000000000011 0.0300000000000011 0.0 928 -929 0.0229909420013428 0.019999999999996 0.019999999999996 0.0 929 -930 0.0228919982910156 0.0200000000000031 0.0200000000000031 0.0 930 -931 0.0228021144866943 0.0200000000000031 0.0200000000000031 0.0 931 -932 0.0487589836120605 0.0499999999999972 0.0499999999999972 0.0 932 -933 0.023705005645752 0.0300000000000011 0.0300000000000011 0.0 933 -934 0.0232529640197754 0.019999999999996 0.019999999999996 0.0 934 -935 0.0233039855957031 0.0200000000000031 0.0200000000000031 0.0 935 -936 0.0228619575500488 0.0300000000000011 0.0300000000000011 0.0 936 -937 0.0260879993438721 0.019999999999996 0.019999999999996 0.0 937 -938 0.022723913192749 0.0300000000000011 0.0300000000000011 0.0 938 -939 0.0474221706390381 0.0399999999999991 0.0399999999999991 0.0 939 -940 0.0233960151672363 0.0300000000000011 0.0300000000000011 0.0 940 -941 0.0239980220794678 0.0200000000000031 0.0200000000000031 0.0 941 -942 0.0292730331420898 0.0300000000000011 0.0300000000000011 0.0 942 -943 0.0237081050872803 0.019999999999996 0.019999999999996 0.0 943 -944 0.0230300426483154 0.0300000000000011 0.0300000000000011 0.0 944 -945 0.050105094909668 0.0499999999999972 0.0499999999999972 0.0 945 -946 0.0247271060943604 0.0200000000000031 0.0200000000000031 0.0 946 -947 0.0233941078186035 0.019999999999996 0.019999999999996 0.0 947 -948 0.0232498645782471 0.0300000000000011 0.0300000000000011 0.0 948 -949 0.0229218006134033 0.0200000000000031 0.0200000000000031 0.0 949 -950 0.0228300094604492 0.019999999999996 0.019999999999996 0.0 950 -951 0.023029088973999 0.0300000000000011 0.0300000000000011 0.0 951 -952 0.0492429733276367 0.0500000000000043 0.0500000000000043 0.0 952 -953 0.0234079360961914 0.019999999999996 0.019999999999996 0.0 953 -954 0.0232601165771484 0.0200000000000031 0.0200000000000031 0.0 954 -955 0.026918888092041 0.0300000000000011 0.0300000000000011 0.0 955 -956 0.0231409072875977 0.019999999999996 0.019999999999996 0.0 956 -957 0.0228209495544434 0.0300000000000011 0.0300000000000011 0.0 957 -958 0.0463271141052246 0.0399999999999991 0.0399999999999991 0.0 958 -959 0.0237219333648682 0.0300000000000011 0.0300000000000011 0.0 959 -960 0.0233180522918701 0.0200000000000031 0.0200000000000031 0.0 960 -961 0.0231690406799316 0.019999999999996 0.019999999999996 0.0 961 -962 0.0229840278625488 0.0300000000000011 0.0300000000000011 0.0 962 -963 0.0235729217529297 0.0200000000000031 0.0200000000000031 0.0 963 -964 0.0238869190216064 0.019999999999996 0.019999999999996 0.0 964 -965 0.0521998405456543 0.0600000000000023 0.0600000000000023 0.0 965 -966 0.0235168933868408 0.019999999999996 0.019999999999996 0.0 966 -967 0.0235238075256348 0.0200000000000031 0.0200000000000031 0.0 967 -968 0.0230309963226318 0.0300000000000011 0.0300000000000011 0.0 968 -969 0.0229330062866211 0.019999999999996 0.019999999999996 0.0 969 -970 0.0227758884429932 0.0200000000000031 0.0200000000000031 0.0 970 -971 0.0229518413543701 0.019999999999996 0.019999999999996 0.0 971 -972 0.0476210117340088 0.0500000000000043 0.0500000000000043 0.0 972 -973 0.0264060497283936 0.0300000000000011 0.0300000000000011 0.0 973 -974 0.023115873336792 0.019999999999996 0.019999999999996 0.0 974 -975 0.0229768753051758 0.0300000000000011 0.0300000000000011 0.0 975 -976 0.0229260921478271 0.0200000000000031 0.0200000000000031 0.0 976 -977 0.0229401588439941 0.019999999999996 0.019999999999996 0.0 977 -978 0.0558409690856934 0.0600000000000023 0.0600000000000023 0.0 978 -979 0.0236589908599854 0.019999999999996 0.019999999999996 0.0 979 -980 0.0233588218688965 0.0200000000000031 0.0200000000000031 0.0 980 -981 0.0231630802154541 0.0300000000000011 0.0300000000000011 0.0 981 -982 0.0260651111602783 0.019999999999996 0.019999999999996 0.0 982 -983 0.0229349136352539 0.0300000000000011 0.0300000000000011 0.0 983 -984 0.0229189395904541 0.0200000000000031 0.0200000000000031 0.0 984 -985 0.0485391616821289 0.0499999999999972 0.0499999999999972 0.0 985 -986 0.0233860015869141 0.0200000000000031 0.0200000000000031 0.0 986 -987 0.0233519077301025 0.0300000000000011 0.0300000000000011 0.0 987 -988 0.0228800773620605 0.019999999999996 0.019999999999996 0.0 988 -989 0.0234830379486084 0.0200000000000031 0.0200000000000031 0.0 989 -990 0.022752046585083 0.019999999999996 0.019999999999996 0.0 990 -991 0.0511069297790527 0.0600000000000023 0.0600000000000023 0.0 991 -992 0.0240139961242676 0.019999999999996 0.019999999999996 0.0 992 -993 0.0233669281005859 0.0200000000000031 0.0200000000000031 0.0 993 -994 0.0232489109039307 0.0300000000000011 0.0300000000000011 0.0 994 -995 0.0230247974395752 0.019999999999996 0.019999999999996 0.0 995 -996 0.023061990737915 0.0200000000000031 0.0200000000000031 0.0 996 -997 0.0229039192199707 0.0300000000000011 0.0300000000000011 0.0 997 -998 0.0489161014556885 0.0399999999999991 0.0399999999999991 0.0 998 -999 0.0239861011505127 0.0300000000000011 0.0300000000000011 0.0 999 -1000 0.0271100997924805 0.0300000000000011 0.0300000000000011 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat deleted file mode 100644 index 28b79301..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.168711551610797 -3 -0.185075424775395 -4 -0.186405168470362 -5 -0.192236450287278 -6 -0.173995040669983 -7 0.497673430722803 -8 0.29654339644635 -9 -0.172542664486347 -10 -0.185316639646188 -11 -0.182116040823686 -12 -0.185415710620437 -13 0.0523528472158225 -14 0.71970177208368 -15 -0.151810164721185 -16 -0.187290279760093 -17 -0.182362754850871 -18 -0.182718737242755 -19 -0.129108594864474 -20 0.622082118720718 -21 0.130782387755957 -22 -0.170447345640965 -23 -0.196652105821247 -24 -0.173569338036787 -25 -0.182188355492763 -26 0.265071206382968 -27 0.484886522656777 -28 -0.140444543213911 -29 -0.174312335218403 -30 -0.183335022511814 -31 -0.179674296765045 -32 0.0232199842046602 -33 0.496114733715927 -34 0.0822638752997461 -35 -0.171572446908724 -36 -0.192551986206074 -37 -0.162051421499677 -38 -0.0895919384941433 -39 0.335786620502553 -40 0.327644243263212 -41 -0.129948612855453 -42 -0.184370502365683 -43 -0.177204007654948 -44 -0.162157037082618 -45 0.17271845923701 -46 0.351796103861273 -47 0.0642274162111852 -48 -0.170959443773073 -49 -0.190856323754992 -50 -0.163714827336534 -51 0.0228314931445091 -52 0.26381977073053 -53 0.247803374234943 -54 -0.117037193906021 -55 -0.183830227189461 -56 -0.164640226854526 -57 -0.079276117022691 -58 0.20723348437059 -59 0.239706931399691 -60 0.0489172113214087 -61 -0.172021951272623 -62 -0.182860808512729 -63 -0.127358224108573 -64 0.107845579472678 -65 0.188933656016848 -66 0.194757142044723 -67 -0.112205833758773 -68 -0.179001063269936 -69 -0.16311828493705 -70 0.0324344108778214 -71 0.15051955620332 -72 0.163810160363991 -73 0.0519448596312306 -74 -0.163602345245488 -75 -0.158418891887294 -76 -0.0560272711908581 -77 0.13272666880305 -78 0.128776651967307 -79 0.137508369826638 -80 -0.106468759380143 -81 -0.175112389279141 -82 -0.110600151424024 -83 0.0829713181187441 -84 0.116400027198787 -85 0.108590070864495 -86 0.0380032448395754 -87 -0.15928371193835 -88 -0.16128905172696 -89 0.0331094309593576 -90 0.0781776964153065 -91 0.102945304233414 -92 0.10106965637548 -93 -0.0872290949923226 -94 -0.169705593008044 -95 -0.0419012011984929 -96 0.0915477326766184 -97 0.0704199456915236 -98 0.0728740009744583 -99 0.0218543030675779 -100 -0.151415427637779 -101 -0.0978287647318857 -102 0.0561931235819149 -103 0.0505423398983019 -104 0.0727678785780604 -105 0.0722492445655898 -106 -0.0862525883888437 -107 -0.137087142443964 -108 0.00615618677612293 -109 0.05394162080397 -110 0.0553896795215559 -111 0.055562843944084 -112 0.0276994577739776 -113 -0.137189947176271 -114 -0.0377239416628224 -115 0.0514504295405741 -116 0.0313293831130493 -117 0.0301709278444951 -118 0.0568085567458709 -119 -0.0804133515562644 -120 -0.0795840579043476 -121 0.0330117984081293 -122 0.0164579873951377 -123 0.0433446545769141 -124 0.0255953757755855 -125 0.00173682042832781 -126 -0.103165860768009 -127 0.00232696284173702 -128 0.0312423522135313 -129 0.0149616490484137 -130 0.0184417493516088 -131 0.0447441958949695 -132 -0.0641393958061555 -133 -0.0383352332350825 -134 0.0245347192219029 -135 0.00652236926605711 -136 0.0171622535457413 -137 0.009279213035149 -138 0.00278884493235273 -139 -0.0536703342115355 -140 0.0241669190880944 -141 -0.00326726756980508 -142 0.0162345932059117 -143 -0.0128230828071517 -144 0.0286239253928854 -145 -0.0327123591597955 -146 -0.00540598964166124 -147 -0.000332512936572612 -148 0.0148948411721159 -149 0.0166966907990605 -150 -0.00567074642628022 -151 0.0228823388615856 -152 -0.0308965208330592 -153 0.0180444981742879 -154 -0.0206921039064052 -155 0.00595894351847688 -156 -0.0208220594875718 -157 0.0310092938713835 -158 0.00078836634941453 -159 0.0106191475130608 -160 -0.0238938431356785 -161 -0.00188312143245682 -162 -0.0172204115325742 -163 -0.0112282005708165 -164 0.045034914010554 -165 0.00699215558040877 -166 -0.00331533192179088 -167 -0.0190245860603562 -168 -0.00800260302384398 -169 -0.0268417229599795 -170 0.0337926174874967 -171 0.0299901254990817 -172 0.00546001840883143 -173 -0.0331114785270307 -174 -0.0100509196512551 -175 -0.0360797776791535 -176 0.00148731167321117 -177 0.0706998590798648 -178 0.0165067725132839 -179 -0.0253495351545265 -180 -0.0357212534091994 -181 -0.0113101599791917 -182 -0.0363761390533369 -183 0.0469745163800697 -184 0.0610771540099002 -185 0.00552862518083574 -186 -0.0369332414763318 -187 -0.0111795223609534 -188 -0.0432626099842255 -189 0.00749428956560664 -190 0.087771964947633 -191 0.00185581109295404 -192 -0.0313699827844243 -193 -0.0255394152605449 -194 -0.0313242476969615 -195 -0.0215433414073359 -196 0.0618252922061284 -197 0.0646027183854095 -198 -0.0273965032147501 -199 -0.0496517862033294 -200 -0.018433346375674 -201 -0.0411702579107107 -202 0.0253673387035334 -203 0.104691703014017 -204 -0.00185448989075414 -205 -0.0446682471573042 -206 -0.0238238321649752 -207 -0.0467619043304021 -208 -0.00360887459827125 -209 0.0793757654561071 -210 0.0429129421022387 -211 -0.0276583402343142 -212 -0.0541678923378372 -213 -0.0179592917752469 -214 -0.0355547481831798 -215 0.0461320988573292 -216 0.0913448308641226 -217 -0.01834847095298 -218 -0.0468350861575364 -219 -0.0339767892231334 -220 -0.0440298850183693 -221 0.0223578500867496 -222 0.0933434497060592 -223 0.0463337814726783 -224 -0.0425574347432942 -225 -0.0466890286886253 -226 -0.0399961538339586 -227 -0.0182587945265267 -228 0.0632222098042003 -229 0.0694906023247877 -230 -0.0142049617016301 -231 -0.0455291466080565 -232 -0.0361070791379545 -233 -0.0452564134883136 -234 0.0510580833723044 -235 0.0480780453494914 -236 0.0446139327527731 -237 -0.0522801405363582 -238 -0.0378004800445766 -239 -0.0470589177024096 -240 0.0108569075440268 -241 0.066938577476477 -242 0.0581800021039197 -243 -0.0194507150560373 -244 -0.0543671997964238 -245 -0.0401308556434312 -246 -0.0256000479147573 -247 0.0620205622045612 -248 0.030523271212025 -249 0.038296942239191 -250 -0.0449036287763184 -251 -0.0420966487827338 -252 -0.0465461175034265 -253 0.0377597573585246 -254 0.0350560493012657 -255 0.056093186329707 -256 -0.0275815952046349 -257 -0.04750423935097 -258 -0.0432832585148503 -259 0.0125157284398116 -260 0.064931228957816 -261 0.019604040715554 -262 0.0373596111888757 -263 -0.0636676558497218 -264 -0.0375272240403982 -265 -0.0361149121701811 -266 0.0465388746567212 -267 0.036241311622391 -268 0.0487539350868976 -269 -0.0287234748216925 -270 -0.0539239644524711 -271 -0.0436583063696183 -272 0.0205146377795573 -273 0.040230997344665 -274 0.0315213860739265 -275 0.0228897348670507 -276 -0.0572183200160057 -277 -0.0431270221897599 -278 -0.00833297422506617 -279 0.0473219005528863 -280 0.0251629586411652 -281 0.038915273454895 -282 -0.0354353137808485 -283 -0.0508161370460544 -284 -0.036047127999377 -285 0.0337334539194076 -286 0.0275614274110637 -287 0.0440004318004696 -288 0.00961414206729694 -289 -0.0613316463073689 -290 -0.0452152575735171 -291 0.00249641925695087 -292 0.0493185930315809 -293 0.011444255885649 -294 0.0316360674883416 -295 -0.0319106139816597 -296 -0.0295989018040149 -297 -0.0190441524352952 -298 0.0282870892585827 -299 0.0265353254552707 -300 0.032273319444618 -301 -0.000468750771499013 -302 -0.0611876583947586 -303 -0.0309474581592694 -304 0.0186631754625234 -305 0.0371821091242854 -306 0.0145022818476083 -307 0.0232617470286048 -308 -0.0395688677229205 -309 -0.0476060515379838 -310 -0.00769044117333217 -311 0.0353693458390462 -312 0.0240002604802843 -313 0.0245536637430618 -314 -0.004415413915098 -315 -0.0528044137604404 -316 -0.0234265814208568 -317 0.022470064568286 -318 0.028915521370024 -319 0.0211638004156281 -320 0.0054168896988135 -321 -0.042590350753945 -322 -0.0284283118181943 -323 -0.00664062749496557 -324 0.0411480242046925 -325 0.0128417754264411 -326 0.0305223344547661 -327 -0.0236579754952802 -328 -0.0540845927671526 -329 -0.015455893522093 -330 0.025833520023463 -331 0.0278005598102001 -332 0.023042186646012 -333 0.0188728568852482 -334 -0.0493662121878053 -335 -0.0261050936436941 -336 0.0147707465979224 -337 0.0180860444200187 -338 0.0126826785496685 -339 0.0298891954148176 -340 -0.0284892193567594 -341 -0.0442930583208295 -342 -0.00465824613683129 -343 0.0264974198001827 -344 0.0160287131470608 -345 0.0245897525651692 -346 -0.00575496663872669 -347 -0.0478041333821144 -348 -0.0171938958596392 -349 0.0121633028274292 -350 0.0339339464445481 -351 -0.00053023814088501 -352 0.0326742285343647 -353 -0.0341060707006212 -354 -0.039748874098284 -355 -8.49024655445998e-06 -356 0.0279658431303204 -357 0.00720050291043204 -358 0.0259853074034904 -359 -0.00689945021869653 -360 -0.0564417535195406 -361 0.00615675252612387 -362 0.012211786338546 -363 0.0210382695674554 -364 0.00854911585033297 -365 0.00730196086776967 -366 -0.0376558839307909 -367 -0.0205399505507927 -368 0.00730027899569551 -369 0.032246213402309 -370 0.0091169179182096 -371 0.0250196684542896 -372 -0.0111591997251681 -373 -0.0422136335522998 -374 -0.0128579601772781 -375 0.028053399466731 -376 0.00354103697855516 -377 0.0279174938103032 -378 -0.00904722473650234 -379 -0.028946301515676 -380 -0.0139786293136349 -381 0.00545851365358498 -382 0.0190227282430585 -383 -0.000179476269715586 -384 0.0207231566698558 -385 -0.0170447136957343 -386 -0.0310486179199879 -387 0.00187196784210256 -388 0.0224041083616037 -389 9.55672559842024e-06 -390 0.028063228403911 -391 -0.00629505686670561 -392 -0.0353987330853413 -393 -0.0136692381584725 -394 0.0175671180486305 -395 0.0138013069088845 -396 -0.00620615793014542 -397 0.0246579116616293 -398 -0.0183401258366494 -399 -0.032731274379925 -400 0.0140881514888206 -401 0.00766293328904026 -402 -0.00602692518274087 -403 0.0260538721783923 -404 -0.00584187577452444 -405 -0.0272022140360092 -406 -0.00245620949388524 -407 0.0238765788649767 -408 0.00803221790371331 -409 0.00486019379696553 -410 0.0128952371994524 -411 -0.0296483100976332 -412 -0.0169390703239796 -413 0.0100660026536031 -414 0.0116526840405598 -415 -0.00552490658166841 -416 0.0277013713253159 -417 -0.01262493213524 -418 -0.0279080581956591 -419 -0.00184485071740047 -420 0.0083680688534008 -421 0.00626000399151215 -422 0.0179881429190266 -423 -0.00447721272724791 -424 -0.0184829817994694 -425 -0.0111404841683833 -426 0.0129221736981228 -427 0.0117611123486844 -428 -0.00973900750863823 -429 0.0225145858300765 -430 -0.0109220115294983 -431 -0.0295910058303649 -432 0.00368789876917004 -433 0.00930110386233805 -434 0.00564395086046309 -435 0.0212026111611703 -436 -0.0130378739710715 -437 -0.0151643278007831 -438 -0.0180440351274524 -439 0.0151595776800046 -440 0.00929213226473587 -441 0.0003415659091603 -442 0.0139565319476247 -443 -0.00910162712841926 -444 -0.0047413122985865 -445 -0.00499428051231756 -446 0.0128999469215125 -447 -0.00928272901740709 -448 0.0272064223470049 -449 -0.0183788344655416 -450 -0.0118496040154817 -451 -0.0107494202754318 -452 0.0182399903606553 -453 0.00622660737187097 -454 0.00745915020514592 -455 -0.00127190501056035 -456 -0.0166547143603286 -457 -0.0103667163700212 -458 0.00400520855528189 -459 0.0147115427131264 -460 -0.0160615357972689 -461 0.0246609774312651 -462 -0.0029333920472466 -463 -0.0181346871754782 -464 -0.00953567256874797 -465 0.021178583971421 -466 -0.012606366153552 -467 0.0272533088449177 -468 -0.0210280900703455 -469 -0.00280319780800235 -470 -0.0170463672712959 -471 0.0183373667562639 -472 0.0107583671313877 -473 -0.0078936794893897 -474 0.00778649649424241 -475 -0.0155345265869157 -476 -0.00613257574212038 -477 -0.00504286887531768 -478 0.0210772277332088 -479 -0.0128524940267954 -480 0.0341276652831629 -481 -0.0170650621790446 -482 -0.00345617548803839 -483 -0.0129517082898899 -484 0.0173373606064477 -485 -0.00523973359223807 -486 0.00844247199289556 -487 -0.000388501685715539 -488 -0.00941832803307521 -489 -0.00657732323629541 -490 0.00367271132008509 -491 0.0104986289066865 -492 -0.012121254212176 -493 0.0144869605589711 -494 -0.00864941651177608 -495 -0.01112718777137 -496 -0.00334819620816524 -497 0.0185220421918073 -498 -0.00800250333583432 -499 0.0161430412671399 -500 -0.00811904696073173 -501 -0.0131958246871404 -502 0.00283288244567032 -503 0.00400534218369864 -504 0.00517285959530552 -505 -0.0113016945649371 -506 0.0133257896160407 -507 -0.0100249708015443 -508 -0.00256099015771646 -509 0.000136766223360138 -510 0.00855194730142931 -511 -0.00531138706017324 -512 0.00204161899934194 -513 -0.00420598958751402 -514 -0.00547421378316814 -515 -0.00769199850530263 -516 0.0216892032285094 -517 0.00908736119849349 -518 -0.00700354150287694 -519 0.00385030902693081 -520 -0.0123494297246387 -521 0.000934704276073887 -522 0.00705709592844499 -523 -0.00114787001008378 -524 -0.00210811799844287 -525 0.00379518996660863 -526 -0.00476039992301502 -527 0.00251331815987456 -528 -0.00826728020183847 -529 0.00902402695322199 -530 0.000870562551920878 -531 -0.00348481579363119 -532 -0.00125547085943994 -533 -0.00457730270844353 -534 0.000670589363068931 -535 0.00203788465196431 -536 0.00608567369144255 -537 2.19715778381094e-05 -538 -0.0039030628395208 -539 0.00512758275114747 -540 -0.0144646664397469 -541 0.0094686570477374 -542 0.00274671581906305 -543 -0.00678173613063177 -544 -0.00229002671014199 -545 0.00592727900087354 -546 -0.00816015486873931 -547 0.00907388451433627 -548 0.0018377578149579 -549 -0.0127399753897002 -550 0.0103068975915084 -551 -0.0106787121790095 -552 0.00570246495524106 -553 -0.00038055365375568 -554 0.0105773030205816 -555 0.00595131841957403 -556 -0.00509875005695669 -557 -0.00822359585740647 -558 0.00452689845139232 -559 -0.00293270803490497 -560 0.00105079194795726 -561 0.0109353635798441 -562 -0.0197506449586046 -563 0.0218239959802497 -564 -0.0146510772378776 -565 -0.0031545366575823 -566 0.00360976923040136 -567 0.00133537648121434 -568 -0.00289782413008785 -569 0.00758892970442103 -570 -0.0141005351769624 -571 0.00987824122870196 -572 -0.00255558849302304 -573 0.000744149940492195 -574 0.0106602498970704 -575 -0.0142431009887286 -576 0.00996314897224239 -577 -0.0104990007985002 -578 0.00109353754269881 -579 -0.00275371958433224 -580 0.0113885636424959 -581 -0.0150512253599863 -582 0.022337619882076 -583 -0.0216778389670573 -584 0.00863828810448533 -585 -0.00918952923772199 -586 0.00354541072669278 -587 0.00186796377320277 -588 -0.00419542916327283 -589 0.00975603734830963 -590 -0.00452668353073013 -591 0.00310061328497863 -592 0.00522892318692988 -593 0.000452603861773268 -594 -0.00392697607921247 -595 0.00863249154941176 -596 -0.00832078201242865 -597 -0.00394497658086084 -598 -0.00605451952414724 -599 0.0162191796757364 -600 -0.0110909733185336 -601 0.00720572232121751 -602 0.00218507796543462 -603 -0.00965401693454912 -604 -0.0108892449738329 -605 0.0182573291106095 -606 -0.0101848710757151 -607 0.00753912620319138 -608 0.00552590397878413 -609 -0.00699240285933447 -610 -0.00592445874426432 -611 0.00181675318258215 -612 0.00596213285085161 -613 -0.00175858286015883 -614 0.00407450191848153 -615 -0.00135060667016455 -616 -0.0132703466359575 -617 0.00119500154487564 -618 0.0104207042421722 -619 -0.0101546955527216 -620 0.0151923635732439 -621 -0.00273197735893913 -622 -0.00716289238336821 -623 -0.0171181101464724 -624 0.0167209884450157 -625 -0.00638456270553197 -626 0.0115244846746483 -627 0.00412387285497462 -628 0.00522037750437085 -629 -0.0207335154052575 -630 0.0107397344182975 -631 0.000446658250956307 -632 -0.00502788594559083 -633 0.0186557262987464 -634 -0.00802823332161929 -635 -0.0113496131760766 -636 -0.00301246620601798 -637 0.00960017707242071 -638 -0.0101983443096708 -639 0.0185874661412788 -640 -0.00796700063418294 -641 0.000800373366255129 -642 -0.0142259171933031 -643 0.00675256815377976 -644 -0.00261054615159158 -645 0.00391449782418117 -646 0.0139874531474154 -647 0.00530840019489214 -648 -0.0271260591182079 -649 0.00229999324419244 -650 0.0012589433396212 -651 0.000592814947107167 -652 0.0201903818074188 -653 -0.0109069610093694 -654 0.000612907033154517 -655 -0.0168429348765485 -656 0.00867757131382127 -657 -0.00734945498589961 -658 0.0116794460570149 -659 0.00508627131689495 -660 0.00338584069635359 -661 -0.0248824043490218 -662 0.00165251679722703 -663 0.00150493225276704 -664 0.0136218056659362 -665 0.0185790451050334 -666 -0.00254472668221909 -667 -0.012289308557362 -668 -0.0144954370766794 -669 0.00122172858017179 -670 0.0025962904924925 -671 0.0163382999614507 -672 0.00111261978891954 -673 0.0032877612305335 -674 -0.0260369810192395 -675 0.00159666131197362 -676 -0.00532940173394529 -677 0.0172320321775677 -678 0.00869668235164475 -679 0.00291575973127735 -680 -0.015462218778181 -681 -0.0118608792720508 -682 -0.00220903962177873 -683 0.0120179152403506 -684 0.0136302482537954 -685 0.00904529400779457 -686 -0.00689602667015569 -687 -0.0285633522016709 -688 -0.00218285494634568 -689 0.00546702558234338 -690 0.0209141673516685 -691 0.00370465573465944 -692 0.00302297586155796 -693 -0.016485314433266 -694 -0.0140010121985048 -695 -0.00666402217308437 -696 0.0185309777178555 -697 0.00524546360988583 -698 0.0136885255750835 -699 -0.0104440356403008 -700 -0.0241256457948681 -701 -0.000785820295910417 -702 0.0158790422192167 -703 0.0148074455993449 -704 0.0148524900638902 -705 -0.0115456319714617 -706 -0.0170567215815039 -707 -0.0158838823574548 -708 0.00366739139639638 -709 0.0229702948653725 -710 0.00020925945941642 -711 0.016393506286626 -712 -0.0146752015343459 -713 -0.0266439752231523 -714 -0.0106049447476659 -715 0.0200857710496951 -716 0.0159019417251445 -717 0.014477526739592 -718 -0.0114112270538866 -719 -0.0170568864212781 -720 -0.0198060133943224 -721 0.0141195633193631 -722 0.0169697876976791 -723 0.0111601506150928 -724 0.000736029778776562 -725 -0.0138823704910304 -726 -0.0297759947577568 -727 0.000877318422704956 -728 0.0245870344818203 -729 0.00991534185785315 -730 0.0167371008710776 -731 -0.01846756355292 -732 -0.0143120279886695 -733 -0.0275565546549941 -734 0.0192359115781678 -735 0.0161720734394042 -736 0.0126768844333159 -737 0.00181190220867761 -738 -0.0108467971335452 -739 -0.0304794501225128 -740 0.00782220949913542 -741 0.0209517859747924 -742 0.0159210578956611 -743 0.00507627421897103 -744 -0.0185977878326676 -745 -0.0172160801840428 -746 -0.0154503291175863 -747 0.0240468087097962 -748 0.00881259580601295 -749 0.0159692498562702 -750 -0.00910054705411617 -751 -0.0182022490122094 -752 -0.0240881360450285 -753 0.0120777690684819 -754 0.018009925362029 -755 0.0180902063329173 -756 0.000256136047852365 -757 -0.013362593701584 -758 -0.0228122214255098 -759 -0.00694060235600491 -760 0.0215395702278941 -761 0.0146271311142691 -762 0.0042224855013385 -763 -0.00912079764567066 -764 -0.0192977028904618 -765 -0.0141955473974918 -766 0.0183439845354601 -767 0.00930105732395573 -768 0.0184551584403917 -769 -0.00463309866829429 -770 -0.0226061978674481 -771 -0.0126560635461022 -772 -0.00415731908001533 -773 0.0187754008269273 -774 0.0180023436241415 -775 0.00200677790387502 -776 -0.00390091363657905 -777 -0.0259097935663753 -778 -0.00352849460582893 -779 0.0114869717500844 -780 0.0181590467496427 -781 0.00541354714803118 -782 -0.00341446349188591 -783 -0.0224873784300854 -784 -0.00419373295829652 -785 0.00151844686046239 -786 0.0113650109976602 -787 0.0158002722634896 -788 -0.00669123138348563 -789 -0.00944030297158121 -790 -0.0128471454926811 -791 -0.00195425126313221 -792 0.0074970279200069 -793 0.0181288263041054 -794 0.00373580246921938 -795 -0.00738898492727174 -796 -0.0131007631291169 -797 -0.000982016348095141 -798 -0.0077218774351863 -799 0.0213289345403391 -800 0.00354948225668615 -801 -0.00464603451943496 -802 -0.0112940265794087 -803 -0.00402400060757488 -804 0.00328202388625696 -805 -0.00289756468799923 -806 0.0217143167615233 -807 -0.00723480130387542 -808 -0.0106385305584251 -809 -0.000880622168562012 -810 0.00236278291649433 -811 -0.0102116844250211 -812 0.0231430095296313 -813 0.000498636796683443 -814 -0.00822238911567211 -815 -0.000690473274202945 -816 -0.0041688749017029 -817 -0.00252158403219581 -818 0.00607821741975229 -819 0.00777977338604755 -820 -0.00207050788971321 -821 -0.0140240864712808 -822 0.00947155215423528 -823 -0.00138467437610252 -824 -0.00770142306481203 -825 0.0154602942265093 -826 -0.00445857492028323 -827 -0.0101772151931684 -828 0.0100179562755017 -829 -0.00101796933766295 -830 -0.0119434679802116 -831 0.0102774737624907 -832 0.00478068349303803 -833 -0.00664556216054719 -834 -0.00197743246531773 -835 0.00543784524388563 -836 -0.0052886241893568 -837 0.0026439850351734 -838 0.0030919842085538 -839 -0.00804500518577692 -840 -0.0010416922039517 -841 0.0108884645351451 -842 -0.00566073610826143 -843 -0.00188898403884589 -844 -0.000623624431978478 -845 0.00428626298895372 -846 -0.0114117004140406 -847 0.0070058534073635 -848 0.01316321553763 -849 -0.0134743452627623 -850 0.00646873802741608 -851 -0.000711439355883821 -852 -0.0120290310079327 -853 0.00776340536975608 -854 0.0121426740397341 -855 -0.0112997696592519 -856 0.00101867582065373 -857 -0.00437667036049063 -858 0.000320275817054275 -859 -0.000142126707409615 -860 0.00721775365468403 -861 0.00498981583349973 -862 -0.00501663994971829 -863 -0.00749187478362105 -864 -0.00349429603220739 -865 0.00096737598977786 -866 0.00699694065608912 -867 0.00691803448626803 -868 -0.000449901074230268 -869 -0.00445988048738086 -870 -0.00905628623058306 -871 -0.00235661129997502 -872 0.00676090763319871 -873 0.00895030192113989 -874 4.49454384220283e-05 -875 -0.00263532947240222 -876 -0.010297542142376 -877 -0.010415543599356 -878 0.0128496698052284 -879 0.00696638356949457 -880 0.00214959987087146 -881 0.00604766744508239 -882 -0.0149547634792813 -883 -0.0133886474253249 -884 0.00661648124666426 -885 0.010135062194657 -886 0.0058559958108212 -887 0.00957431092209329 -888 -0.0090398903790597 -889 -0.0199467380548428 -890 -0.000587629934548291 -891 0.0110510611921795 -892 0.0128725674330994 -893 -0.00402188300253153 -894 0.00737831485228642 -895 -0.0184423803339027 -896 -0.0110288361296573 -897 0.00890220929064295 -898 0.0094403783725091 -899 -0.000809138837552774 -900 0.0116542051582576 -901 -0.0107875510009573 -902 -0.0180296809250011 -903 0.00306299530457164 -904 0.0106046718313357 -905 0.0100756629359416 -906 0.00402229149764495 -907 -0.00423755437734391 -908 -0.0147679502849595 -909 -0.00876645613183849 -910 0.00937383395424556 -911 0.00762135328148195 -912 0.00589312291049009 -913 0.00527632712012485 -914 -0.0150771941451772 -915 -0.0126209222242841 -916 0.00209594315460717 -917 0.0150533771997464 -918 -0.000323609234544641 -919 0.00910288654678051 -920 -0.00768699605697063 -921 -0.0131267840299683 -922 -0.00394519352651183 -923 0.0112577773951416 -924 0.00193303552341244 -925 0.0155473373100893 -926 -0.0059851304642569 -927 -0.0127129091731764 -928 -0.010012705310311 -929 0.00314209573634191 -930 0.0111473003309339 -931 0.00788913702307995 -932 0.00305911972139761 -933 -0.00846335727494071 -934 -0.0122811720479955 -935 -0.0061049349645249 -936 0.00712178796175147 -937 0.0109366030876719 -938 0.010847685977904 -939 -0.00884829082408408 -940 -0.00833721747749976 -941 -0.0119098033912994 -942 0.00740468154428091 -943 0.0055679748392607 -944 0.0108164694058525 -945 0.000125955287551805 -946 -0.00747241615545713 -947 -0.00869573388304389 -948 -0.00354302687064023 -949 0.00160999946217594 -950 0.0205396965281884 -951 -0.00211607394891862 -952 -0.00622739874288181 -953 -0.00653488891371642 -954 -0.00979554730684349 -955 0.000613100471788197 -956 0.0166711334404957 -957 0.00616769987888474 -958 -0.00491976982344559 -959 -0.00424317633763101 -960 -0.00827918671212606 -961 -0.00604128020653073 -962 0.00958577837280408 -963 0.0149354906693512 -964 -0.00421686394063702 -965 -0.00316215046844813 -966 -0.0064530371820805 -967 -0.00662231958613653 -968 0.00112156121486116 -969 0.0109421973075187 -970 0.00437305640139855 -971 -0.00455774256532607 -972 -0.00437412532272711 -973 -0.00518337545866395 -974 -0.00400100467146524 -975 0.0127573808612559 -976 0.00366553037525621 -977 -0.00238554249362654 -978 -0.00329057674587693 -979 -0.00396527990664183 -980 -0.00266571430247101 -981 0.00338581958247141 -982 0.00669480510272971 -983 -0.000520566185644882 -984 -0.00202730064400516 -985 -0.00225103555436894 -986 -0.00175391520986938 -987 -0.0030237079249996 -988 0.00556348089902938 -989 0.00016537124990895 -990 0.000366191847904269 -991 -0.000403568297995977 -992 -0.000980716337890804 -993 -0.00107150539540352 -994 -0.00116888364602599 -995 0.00111545140635789 -996 0.000974863549210892 -997 0.000888586420263992 -998 0.0007092258397136 -999 0.000470368356747198 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat deleted file mode 100644 index feedffb9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure#generator_safe.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.023082971572876 0.019999999999996 0.019999999999996 0.0 1 -2 0.0226471424102783 0.0300000000000011 0.0300000000000011 0.0 2 -3 0.0225150585174561 0.0200000000000102 0.0200000000000102 0.0 3 -4 0.0226900577545166 0.019999999999996 0.019999999999996 0.0 4 -5 0.0225200653076172 0.019999999999996 0.019999999999996 0.0 5 -6 0.0237810611724854 0.0300000000000011 0.0300000000000011 0.0 6 -7 0.0472888946533203 0.0400000000000063 0.0400000000000063 0.0 7 -8 0.022852897644043 0.0300000000000011 0.0300000000000011 0.0 8 -9 0.0266950130462646 0.019999999999996 0.019999999999996 0.0 9 -10 0.0224850177764893 0.0300000000000011 0.0300000000000011 0.0 10 -11 0.0223457813262939 0.019999999999996 0.019999999999996 0.0 11 -12 0.0224599838256836 0.019999999999996 0.019999999999996 0.0 12 -13 0.0224049091339111 0.0200000000000102 0.0200000000000102 0.0 13 -14 0.0482068061828613 0.0499999999999972 0.0499999999999972 0.0 14 -15 0.0226612091064453 0.019999999999996 0.019999999999996 0.0 15 -16 0.0224330425262451 0.019999999999996 0.019999999999996 0.0 16 -17 0.0224549770355225 0.019999999999996 0.019999999999996 0.0 17 -18 0.0225000381469727 0.0200000000000102 0.0200000000000102 0.0 18 -19 0.0258901119232178 0.0300000000000011 0.0300000000000011 0.0 19 -20 0.0469810962677002 0.0499999999999972 0.0499999999999972 0.0 20 -21 0.0228328704833984 0.019999999999996 0.019999999999996 0.0 21 -22 0.0226919651031494 0.019999999999996 0.019999999999996 0.0 22 -23 0.022468090057373 0.0200000000000102 0.0200000000000102 0.0 23 -24 0.0230059623718262 0.0299999999999869 0.0299999999999869 0.0 24 -25 0.0221710205078125 0.0200000000000102 0.0200000000000102 0.0 25 -26 0.0221641063690186 0.019999999999996 0.019999999999996 0.0 26 -27 0.0475480556488037 0.0499999999999972 0.0499999999999972 0.0 27 -28 0.025291919708252 0.0200000000000102 0.0200000000000102 0.0 28 -29 0.0225188732147217 0.0299999999999869 0.0299999999999869 0.0 29 -30 0.0293300151824951 0.0300000000000011 0.0300000000000011 0.0 30 -31 0.0234100818634033 0.0200000000000102 0.0200000000000102 0.0 31 -32 0.0224781036376953 0.019999999999996 0.019999999999996 0.0 32 -33 0.0478579998016357 0.0499999999999972 0.0499999999999972 0.0 33 -34 0.0229699611663818 0.019999999999996 0.019999999999996 0.0 34 -35 0.0227549076080322 0.0300000000000011 0.0300000000000011 0.0 35 -36 0.0226318836212158 0.0200000000000102 0.0200000000000102 0.0 36 -37 0.0262620449066162 0.019999999999996 0.019999999999996 0.0 37 -38 0.0223979949951172 0.0300000000000011 0.0300000000000011 0.0 38 -39 0.0222330093383789 0.019999999999996 0.019999999999996 0.0 39 -40 0.0477039813995361 0.0499999999999972 0.0499999999999972 0.0 40 -41 0.0228910446166992 0.0200000000000102 0.0200000000000102 0.0 41 -42 0.0233700275421143 0.019999999999996 0.019999999999996 0.0 42 -43 0.0224530696868896 0.0300000000000011 0.0300000000000011 0.0 43 -44 0.0225670337677002 0.019999999999996 0.019999999999996 0.0 44 -45 0.0227048397064209 0.019999999999996 0.019999999999996 0.0 45 -46 0.0222969055175781 0.0200000000000102 0.0200000000000102 0.0 46 -47 0.050562858581543 0.0499999999999972 0.0499999999999972 0.0 47 -48 0.0228369235992432 0.0300000000000011 0.0300000000000011 0.0 48 -49 0.0225470066070557 0.019999999999996 0.019999999999996 0.0 49 -50 0.02256178855896 0.019999999999996 0.019999999999996 0.0 50 -51 0.0225701332092285 0.0300000000000011 0.0300000000000011 0.0 51 -52 0.0230269432067871 0.019999999999996 0.019999999999996 0.0 52 -53 0.0470359325408936 0.0500000000000114 0.0500000000000114 0.0 53 -54 0.0227799415588379 0.019999999999996 0.019999999999996 0.0 54 -55 0.0225660800933838 0.019999999999996 0.019999999999996 0.0 55 -56 0.025252103805542 0.0300000000000011 0.0300000000000011 0.0 56 -57 0.0222170352935791 0.019999999999996 0.019999999999996 0.0 57 -58 0.0221600532531738 0.0200000000000102 0.0200000000000102 0.0 58 -59 0.0222020149230957 0.019999999999996 0.019999999999996 0.0 59 -60 0.0476398468017578 0.0499999999999972 0.0499999999999972 0.0 60 -61 0.022913932800293 0.019999999999996 0.019999999999996 0.0 61 -62 0.0225539207458496 0.0300000000000011 0.0300000000000011 0.0 62 -63 0.0225050449371338 0.0200000000000102 0.0200000000000102 0.0 63 -64 0.022601842880249 0.019999999999996 0.019999999999996 0.0 64 -65 0.0236048698425293 0.0300000000000011 0.0300000000000011 0.0 65 -66 0.0489590167999268 0.039999999999992 0.039999999999992 0.0 66 -67 0.0297541618347168 0.0300000000000011 0.0300000000000011 0.0 67 -68 0.0229940414428711 0.0300000000000011 0.0300000000000011 0.0 68 -69 0.0228681564331055 0.0200000000000102 0.0200000000000102 0.0 69 -70 0.0228149890899658 0.019999999999996 0.019999999999996 0.0 70 -71 0.0225210189819336 0.0300000000000011 0.0300000000000011 0.0 71 -72 0.022305965423584 0.019999999999996 0.019999999999996 0.0 72 -73 0.0474321842193604 0.0499999999999972 0.0499999999999972 0.0 73 -74 0.0265100002288818 0.0200000000000102 0.0200000000000102 0.0 74 -75 0.0226712226867676 0.019999999999996 0.019999999999996 0.0 75 -76 0.022493839263916 0.0300000000000011 0.0300000000000011 0.0 76 -77 0.0225288867950439 0.019999999999996 0.019999999999996 0.0 77 -78 0.0226340293884277 0.019999999999996 0.019999999999996 0.0 78 -79 0.0476889610290527 0.0499999999999972 0.0499999999999972 0.0 79 -80 0.0229480266571045 0.0200000000000102 0.0200000000000102 0.0 80 -81 0.0228819847106934 0.0300000000000011 0.0300000000000011 0.0 81 -82 0.0227799415588379 0.019999999999996 0.019999999999996 0.0 82 -83 0.0224130153656006 0.019999999999996 0.019999999999996 0.0 83 -84 0.0260109901428223 0.0300000000000011 0.0300000000000011 0.0 84 -85 0.0223500728607178 0.019999999999996 0.019999999999996 0.0 85 -86 0.0476620197296143 0.0500000000000114 0.0500000000000114 0.0 86 -87 0.022737979888916 0.019999999999996 0.019999999999996 0.0 87 -88 0.0233170986175537 0.019999999999996 0.019999999999996 0.0 88 -89 0.0224459171295166 0.0300000000000011 0.0300000000000011 0.0 89 -90 0.0226268768310547 0.019999999999996 0.019999999999996 0.0 90 -91 0.0225470066070557 0.0200000000000102 0.0200000000000102 0.0 91 -92 0.0492300987243652 0.0499999999999972 0.0499999999999972 0.0 92 -93 0.0236849784851074 0.019999999999996 0.019999999999996 0.0 93 -94 0.0227689743041992 0.0300000000000011 0.0300000000000011 0.0 94 -95 0.022672176361084 0.019999999999996 0.019999999999996 0.0 95 -96 0.022651195526123 0.0200000000000102 0.0200000000000102 0.0 96 -97 0.0225498676300049 0.0300000000000011 0.0300000000000011 0.0 97 -98 0.0222620964050293 0.019999999999996 0.019999999999996 0.0 98 -99 0.0475699901580811 0.0499999999999972 0.0499999999999972 0.0 99 -100 0.0227551460266113 0.019999999999996 0.019999999999996 0.0 100 -101 0.0227038860321045 0.0200000000000102 0.0200000000000102 0.0 101 -102 0.0256071090698242 0.0300000000000011 0.0300000000000011 0.0 102 -103 0.0226211547851562 0.019999999999996 0.019999999999996 0.0 103 -104 0.0256171226501465 0.0300000000000011 0.0300000000000011 0.0 104 -105 0.051800012588501 0.0499999999999972 0.0499999999999972 0.0 105 -106 0.023643970489502 0.019999999999996 0.019999999999996 0.0 106 -107 0.0227420330047607 0.019999999999996 0.019999999999996 0.0 107 -108 0.0226438045501709 0.0300000000000011 0.0300000000000011 0.0 108 -109 0.022442102432251 0.0200000000000102 0.0200000000000102 0.0 109 -110 0.0223290920257568 0.019999999999996 0.019999999999996 0.0 110 -111 0.0222249031066895 0.019999999999996 0.019999999999996 0.0 111 -112 0.0505638122558594 0.0499999999999972 0.0499999999999972 0.0 112 -113 0.0227949619293213 0.0300000000000011 0.0300000000000011 0.0 113 -114 0.0227949619293213 0.0200000000000102 0.0200000000000102 0.0 114 -115 0.0225298404693604 0.019999999999996 0.019999999999996 0.0 115 -116 0.0225038528442383 0.019999999999996 0.019999999999996 0.0 116 -117 0.0231928825378418 0.0300000000000011 0.0300000000000011 0.0 117 -118 0.0223879814147949 0.019999999999996 0.019999999999996 0.0 118 -119 0.0476298332214355 0.0500000000000114 0.0500000000000114 0.0 119 -120 0.0247969627380371 0.019999999999996 0.019999999999996 0.0 120 -121 0.0240130424499512 0.0300000000000011 0.0300000000000011 0.0 121 -122 0.0225648880004883 0.019999999999996 0.019999999999996 0.0 122 -123 0.0225870609283447 0.019999999999996 0.019999999999996 0.0 123 -124 0.0225720405578613 0.0300000000000011 0.0300000000000011 0.0 124 -125 0.0477638244628906 0.0400000000000063 0.0400000000000063 0.0 125 -126 0.0232040882110596 0.0300000000000011 0.0300000000000011 0.0 126 -127 0.0227577686309814 0.019999999999996 0.019999999999996 0.0 127 -128 0.0225858688354492 0.019999999999996 0.019999999999996 0.0 128 -129 0.0224049091339111 0.0200000000000102 0.0200000000000102 0.0 129 -130 0.0251419544219971 0.0300000000000011 0.0300000000000011 0.0 130 -131 0.0224969387054443 0.019999999999996 0.019999999999996 0.0 131 -132 0.0474879741668701 0.0499999999999972 0.0499999999999972 0.0 132 -133 0.0228550434112549 0.019999999999996 0.019999999999996 0.0 133 -134 0.0226738452911377 0.0300000000000011 0.0300000000000011 0.0 134 -135 0.0226309299468994 0.019999999999996 0.019999999999996 0.0 135 -136 0.0224778652191162 0.0200000000000102 0.0200000000000102 0.0 136 -137 0.0225551128387451 0.019999999999996 0.019999999999996 0.0 137 -138 0.0470321178436279 0.0499999999999972 0.0499999999999972 0.0 138 -139 0.0260279178619385 0.0300000000000011 0.0300000000000011 0.0 139 -140 0.0227389335632324 0.019999999999996 0.019999999999996 0.0 140 -141 0.029339075088501 0.0300000000000011 0.0300000000000011 0.0 141 -142 0.0226800441741943 0.0200000000000102 0.0200000000000102 0.0 142 -143 0.0223538875579834 0.019999999999996 0.019999999999996 0.0 143 -144 0.0231339931488037 0.0300000000000011 0.0300000000000011 0.0 144 -145 0.0474388599395752 0.039999999999992 0.039999999999992 0.0 145 -146 0.0227169990539551 0.0300000000000011 0.0300000000000011 0.0 146 -147 0.0225269794464111 0.0200000000000102 0.0200000000000102 0.0 147 -148 0.0240280628204346 0.019999999999996 0.019999999999996 0.0 148 -149 0.0242280960083008 0.0300000000000011 0.0300000000000011 0.0 149 -150 0.0225520133972168 0.019999999999996 0.019999999999996 0.0 150 -151 0.0471599102020264 0.0499999999999972 0.0499999999999972 0.0 151 -152 0.0230400562286377 0.0200000000000102 0.0200000000000102 0.0 152 -153 0.0234670639038086 0.019999999999996 0.019999999999996 0.0 153 -154 0.0225429534912109 0.0300000000000011 0.0300000000000011 0.0 154 -155 0.0225739479064941 0.019999999999996 0.019999999999996 0.0 155 -156 0.0225040912628174 0.019999999999996 0.019999999999996 0.0 156 -157 0.0224270820617676 0.0200000000000102 0.0200000000000102 0.0 157 -158 0.050184965133667 0.0499999999999972 0.0499999999999972 0.0 158 -159 0.0228159427642822 0.0300000000000011 0.0300000000000011 0.0 159 -160 0.0225830078125 0.019999999999996 0.019999999999996 0.0 160 -161 0.0224440097808838 0.019999999999996 0.019999999999996 0.0 161 -162 0.0228800773620605 0.0200000000000102 0.0200000000000102 0.0 162 -163 0.0230019092559814 0.0299999999999869 0.0299999999999869 0.0 163 -164 0.0468800067901611 0.0400000000000063 0.0400000000000063 0.0 164 -165 0.0230178833007812 0.019999999999996 0.019999999999996 0.0 165 -166 0.0227179527282715 0.0300000000000011 0.0300000000000011 0.0 166 -167 0.0280098915100098 0.0200000000000102 0.0200000000000102 0.0 167 -168 0.0224480628967285 0.0299999999999869 0.0299999999999869 0.0 168 -169 0.0222821235656738 0.0200000000000102 0.0200000000000102 0.0 169 -170 0.0222339630126953 0.019999999999996 0.019999999999996 0.0 170 -171 0.0482370853424072 0.0499999999999972 0.0499999999999972 0.0 171 -172 0.0229589939117432 0.019999999999996 0.019999999999996 0.0 172 -173 0.0225811004638672 0.0200000000000102 0.0200000000000102 0.0 173 -174 0.0225679874420166 0.0300000000000011 0.0300000000000011 0.0 174 -175 0.0226399898529053 0.019999999999996 0.019999999999996 0.0 175 -176 0.0225110054016113 0.019999999999996 0.019999999999996 0.0 176 -177 0.0512759685516357 0.0599999999999881 0.0499999999999972 0.01 177 -178 0.0293910503387451 0.0300000000000011 0.0300000000000011 0.0 178 -179 0.0228638648986816 0.0200000000000102 0.0200000000000102 0.0 179 -180 0.0226418972015381 0.0300000000000011 0.0300000000000011 0.0 180 -181 0.0233349800109863 0.019999999999996 0.019999999999996 0.0 181 -182 0.0224719047546387 0.019999999999996 0.019999999999996 0.0 182 -183 0.0222139358520508 0.019999999999996 0.019999999999996 0.0 183 -184 0.0475149154663086 0.0500000000000114 0.0500000000000114 0.0 184 -185 0.0268290042877197 0.0300000000000011 0.0300000000000011 0.0 185 -186 0.0225980281829834 0.019999999999996 0.019999999999996 0.0 186 -187 0.0224361419677734 0.019999999999996 0.019999999999996 0.0 187 -188 0.0225210189819336 0.0300000000000011 0.0300000000000011 0.0 188 -189 0.022615909576416 0.019999999999996 0.019999999999996 0.0 189 -190 0.0477218627929688 0.0499999999999972 0.0499999999999972 0.0 190 -191 0.0229659080505371 0.0200000000000102 0.0200000000000102 0.0 191 -192 0.0230429172515869 0.019999999999996 0.019999999999996 0.0 192 -193 0.0226750373840332 0.0300000000000011 0.0300000000000011 0.0 193 -194 0.0224380493164062 0.019999999999996 0.019999999999996 0.0 194 -195 0.0255289077758789 0.0200000000000102 0.0200000000000102 0.0 195 -196 0.0223410129547119 0.0299999999999869 0.0299999999999869 0.0 196 -197 0.0477759838104248 0.0400000000000063 0.0400000000000063 0.0 197 -198 0.0227560997009277 0.0300000000000011 0.0300000000000011 0.0 198 -199 0.0232150554656982 0.019999999999996 0.019999999999996 0.0 199 -200 0.0224218368530273 0.019999999999996 0.019999999999996 0.0 200 -201 0.0226380825042725 0.0300000000000011 0.0300000000000011 0.0 201 -202 0.0225119590759277 0.0200000000000102 0.0200000000000102 0.0 202 -203 0.0471208095550537 0.0499999999999972 0.0499999999999972 0.0 203 -204 0.0271830558776855 0.019999999999996 0.019999999999996 0.0 204 -205 0.0227551460266113 0.0300000000000011 0.0300000000000011 0.0 205 -206 0.0225760936737061 0.019999999999996 0.019999999999996 0.0 206 -207 0.0225489139556885 0.0200000000000102 0.0200000000000102 0.0 207 -208 0.0224738121032715 0.019999999999996 0.019999999999996 0.0 208 -209 0.0224080085754395 0.019999999999996 0.019999999999996 0.0 209 -210 0.0474929809570312 0.0499999999999972 0.0499999999999972 0.0 210 -211 0.0227348804473877 0.0200000000000102 0.0200000000000102 0.0 211 -212 0.0227007865905762 0.0300000000000011 0.0300000000000011 0.0 212 -213 0.0257821083068848 0.019999999999996 0.019999999999996 0.0 213 -214 0.0230338573455811 0.0300000000000011 0.0300000000000011 0.0 214 -215 0.0283098220825195 0.019999999999996 0.019999999999996 0.0 215 -216 0.048043966293335 0.0499999999999972 0.0499999999999972 0.0 216 -217 0.0241200923919678 0.0300000000000011 0.0300000000000011 0.0 217 -218 0.0226061344146729 0.019999999999996 0.019999999999996 0.0 218 -219 0.0226290225982666 0.0200000000000102 0.0200000000000102 0.0 219 -220 0.0223400592803955 0.019999999999996 0.019999999999996 0.0 220 -221 0.0222020149230957 0.019999999999996 0.019999999999996 0.0 221 -222 0.0221819877624512 0.019999999999996 0.019999999999996 0.0 222 -223 0.0513238906860352 0.0499999999999972 0.0499999999999972 0.0 223 -224 0.0227959156036377 0.0200000000000102 0.0200000000000102 0.0 224 -225 0.02286696434021 0.0300000000000011 0.0300000000000011 0.0 225 -226 0.0226180553436279 0.019999999999996 0.019999999999996 0.0 226 -227 0.0225269794464111 0.019999999999996 0.019999999999996 0.0 227 -228 0.0236740112304688 0.0300000000000011 0.0300000000000011 0.0 228 -229 0.0473580360412598 0.0400000000000063 0.0400000000000063 0.0 229 -230 0.0230889320373535 0.0300000000000011 0.0300000000000011 0.0 230 -231 0.0243098735809326 0.019999999999996 0.019999999999996 0.0 231 -232 0.0242350101470947 0.019999999999996 0.019999999999996 0.0 232 -233 0.0224809646606445 0.0300000000000011 0.0300000000000011 0.0 233 -234 0.0225131511688232 0.019999999999996 0.019999999999996 0.0 234 -235 0.0222058296203613 0.0200000000000102 0.0200000000000102 0.0 235 -236 0.0484139919281006 0.0499999999999972 0.0499999999999972 0.0 236 -237 0.0229649543762207 0.019999999999996 0.019999999999996 0.0 237 -238 0.0226538181304932 0.0300000000000011 0.0300000000000011 0.0 238 -239 0.0224990844726562 0.019999999999996 0.019999999999996 0.0 239 -240 0.0224988460540771 0.0200000000000102 0.0200000000000102 0.0 240 -241 0.0252270698547363 0.0300000000000011 0.0300000000000011 0.0 241 -242 0.0471029281616211 0.039999999999992 0.039999999999992 0.0 242 -243 0.0229470729827881 0.0300000000000011 0.0300000000000011 0.0 243 -244 0.0228309631347656 0.019999999999996 0.019999999999996 0.0 244 -245 0.0227391719818115 0.0200000000000102 0.0200000000000102 0.0 245 -246 0.0233259201049805 0.0299999999999869 0.0299999999999869 0.0 246 -247 0.0224099159240723 0.0200000000000102 0.0200000000000102 0.0 247 -248 0.0227949619293213 0.019999999999996 0.019999999999996 0.0 248 -249 0.0480821132659912 0.0499999999999972 0.0499999999999972 0.0 249 -250 0.026867151260376 0.0300000000000011 0.0300000000000011 0.0 250 -251 0.0245769023895264 0.019999999999996 0.019999999999996 0.0 251 -252 0.0283010005950928 0.0300000000000011 0.0300000000000011 0.0 252 -253 0.0227351188659668 0.0200000000000102 0.0200000000000102 0.0 253 -254 0.0224411487579346 0.019999999999996 0.019999999999996 0.0 254 -255 0.0479519367218018 0.0499999999999972 0.0499999999999972 0.0 255 -256 0.0230560302734375 0.019999999999996 0.019999999999996 0.0 256 -257 0.0227730274200439 0.0300000000000011 0.0300000000000011 0.0 257 -258 0.022550106048584 0.0200000000000102 0.0200000000000102 0.0 258 -259 0.0257129669189453 0.0300000000000011 0.0300000000000011 0.0 259 -260 0.0255739688873291 0.019999999999996 0.019999999999996 0.0 260 -261 0.0222690105438232 0.019999999999996 0.019999999999996 0.0 261 -262 0.0475499629974365 0.0499999999999972 0.0499999999999972 0.0 262 -263 0.0229249000549316 0.0200000000000102 0.0200000000000102 0.0 263 -264 0.0233249664306641 0.0299999999999869 0.0299999999999869 0.0 264 -265 0.0224719047546387 0.0200000000000102 0.0200000000000102 0.0 265 -266 0.0227599143981934 0.019999999999996 0.019999999999996 0.0 266 -267 0.0225708484649658 0.019999999999996 0.019999999999996 0.0 267 -268 0.0508639812469482 0.0500000000000114 0.0500000000000114 0.0 268 -269 0.0232470035552979 0.0299999999999869 0.0299999999999869 0.0 269 -270 0.0228660106658936 0.0200000000000102 0.0200000000000102 0.0 270 -271 0.0226750373840332 0.019999999999996 0.019999999999996 0.0 271 -272 0.0224699974060059 0.0300000000000011 0.0300000000000011 0.0 272 -273 0.023015022277832 0.019999999999996 0.019999999999996 0.0 273 -274 0.0223150253295898 0.019999999999996 0.019999999999996 0.0 274 -275 0.0476338863372803 0.0500000000000114 0.0500000000000114 0.0 275 -276 0.0227279663085938 0.019999999999996 0.019999999999996 0.0 276 -277 0.022507905960083 0.019999999999996 0.019999999999996 0.0 277 -278 0.0251290798187256 0.0300000000000011 0.0300000000000011 0.0 278 -279 0.0224900245666504 0.019999999999996 0.019999999999996 0.0 279 -280 0.0226230621337891 0.0200000000000102 0.0200000000000102 0.0 280 -281 0.0479300022125244 0.0499999999999972 0.0499999999999972 0.0 281 -282 0.0231950283050537 0.019999999999996 0.019999999999996 0.0 282 -283 0.0243661403656006 0.0300000000000011 0.0300000000000011 0.0 283 -284 0.0225939750671387 0.019999999999996 0.019999999999996 0.0 284 -285 0.0224170684814453 0.0200000000000102 0.0200000000000102 0.0 285 -286 0.0223720073699951 0.019999999999996 0.019999999999996 0.0 286 -287 0.0249221324920654 0.0300000000000011 0.0300000000000011 0.0 287 -288 0.0556089878082275 0.0600000000000023 0.0600000000000023 0.0 288 -289 0.0228722095489502 0.019999999999996 0.019999999999996 0.0 289 -290 0.0225820541381836 0.019999999999996 0.019999999999996 0.0 290 -291 0.0232369899749756 0.0200000000000102 0.0200000000000102 0.0 291 -292 0.0225460529327393 0.0299999999999869 0.0299999999999869 0.0 292 -293 0.0225048065185547 0.0200000000000102 0.0200000000000102 0.0 293 -294 0.0471150875091553 0.0499999999999972 0.0499999999999972 0.0 294 -295 0.0229630470275879 0.019999999999996 0.019999999999996 0.0 295 -296 0.026698112487793 0.0300000000000011 0.0300000000000011 0.0 296 -297 0.0225720405578613 0.019999999999996 0.019999999999996 0.0 297 -298 0.0224101543426514 0.0200000000000102 0.0200000000000102 0.0 298 -299 0.0224401950836182 0.019999999999996 0.019999999999996 0.0 299 -300 0.0223391056060791 0.0300000000000011 0.0300000000000011 0.0 300 -301 0.0480380058288574 0.039999999999992 0.039999999999992 0.0 301 -302 0.0228781700134277 0.0300000000000011 0.0300000000000011 0.0 302 -303 0.0226998329162598 0.0200000000000102 0.0200000000000102 0.0 303 -304 0.0224788188934326 0.019999999999996 0.019999999999996 0.0 304 -305 0.0245270729064941 0.0300000000000011 0.0300000000000011 0.0 305 -306 0.0251939296722412 0.019999999999996 0.019999999999996 0.0 306 -307 0.0470340251922607 0.0499999999999972 0.0499999999999972 0.0 307 -308 0.0229289531707764 0.0200000000000102 0.0200000000000102 0.0 308 -309 0.0233960151672363 0.0300000000000011 0.0300000000000011 0.0 309 -310 0.0224819183349609 0.019999999999996 0.019999999999996 0.0 310 -311 0.0227260589599609 0.019999999999996 0.019999999999996 0.0 311 -312 0.0223228931427002 0.019999999999996 0.019999999999996 0.0 312 -313 0.0223159790039062 0.0300000000000011 0.0300000000000011 0.0 313 -314 0.0510008335113525 0.0500000000000114 0.0500000000000114 0.0 314 -315 0.022799015045166 0.019999999999996 0.019999999999996 0.0 315 -316 0.0225009918212891 0.019999999999996 0.019999999999996 0.0 316 -317 0.0224380493164062 0.0300000000000011 0.0300000000000011 0.0 317 -318 0.0225141048431396 0.019999999999996 0.019999999999996 0.0 318 -319 0.0224788188934326 0.0200000000000102 0.0200000000000102 0.0 319 -320 0.0472540855407715 0.0499999999999972 0.0499999999999972 0.0 320 -321 0.0229048728942871 0.019999999999996 0.019999999999996 0.0 321 -322 0.022752046585083 0.019999999999996 0.019999999999996 0.0 322 -323 0.0224988460540771 0.0300000000000011 0.0300000000000011 0.0 323 -324 0.026637077331543 0.0200000000000102 0.0200000000000102 0.0 324 -325 0.0254490375518799 0.0299999999999869 0.0299999999999869 0.0 325 -326 0.0267879962921143 0.0300000000000011 0.0300000000000011 0.0 326 -327 0.0475130081176758 0.0400000000000063 0.0400000000000063 0.0 327 -328 0.0235271453857422 0.0300000000000011 0.0300000000000011 0.0 328 -329 0.0225729942321777 0.019999999999996 0.019999999999996 0.0 329 -330 0.0224888324737549 0.019999999999996 0.019999999999996 0.0 330 -331 0.0224771499633789 0.0200000000000102 0.0200000000000102 0.0 331 -332 0.0225000381469727 0.0300000000000011 0.0300000000000011 0.0 332 -333 0.0503771305084229 0.0499999999999972 0.0499999999999972 0.0 333 -334 0.02280592918396 0.019999999999996 0.019999999999996 0.0 334 -335 0.0226900577545166 0.019999999999996 0.019999999999996 0.0 335 -336 0.0226840972900391 0.0300000000000011 0.0300000000000011 0.0 336 -337 0.0223648548126221 0.0200000000000102 0.0200000000000102 0.0 337 -338 0.0229740142822266 0.019999999999996 0.019999999999996 0.0 338 -339 0.0223648548126221 0.019999999999996 0.019999999999996 0.0 339 -340 0.047623872756958 0.0499999999999972 0.0499999999999972 0.0 340 -341 0.0227048397064209 0.0200000000000102 0.0200000000000102 0.0 341 -342 0.0267980098724365 0.0300000000000011 0.0300000000000011 0.0 342 -343 0.0225899219512939 0.019999999999996 0.019999999999996 0.0 343 -344 0.022446870803833 0.0300000000000011 0.0300000000000011 0.0 344 -345 0.0226569175720215 0.019999999999996 0.019999999999996 0.0 345 -346 0.0477259159088135 0.0499999999999972 0.0499999999999972 0.0 346 -347 0.0228300094604492 0.019999999999996 0.019999999999996 0.0 347 -348 0.0228700637817383 0.0200000000000102 0.0200000000000102 0.0 348 -349 0.0224990844726562 0.019999999999996 0.019999999999996 0.0 349 -350 0.0223531723022461 0.0300000000000011 0.0300000000000011 0.0 350 -351 0.0225429534912109 0.019999999999996 0.019999999999996 0.0 351 -352 0.0264379978179932 0.0300000000000011 0.0300000000000011 0.0 352 -353 0.04734206199646 0.0400000000000063 0.0400000000000063 0.0 353 -354 0.0228159427642822 0.0300000000000011 0.0300000000000011 0.0 354 -355 0.0224540233612061 0.019999999999996 0.019999999999996 0.0 355 -356 0.0227231979370117 0.019999999999996 0.019999999999996 0.0 356 -357 0.0225269794464111 0.019999999999996 0.019999999999996 0.0 357 -358 0.0225820541381836 0.0300000000000011 0.0300000000000011 0.0 358 -359 0.0475459098815918 0.0400000000000063 0.0400000000000063 0.0 359 -360 0.0234520435333252 0.0300000000000011 0.0300000000000011 0.0 360 -361 0.0246992111206055 0.019999999999996 0.019999999999996 0.0 361 -362 0.0294170379638672 0.0300000000000011 0.0300000000000011 0.0 362 -363 0.0224790573120117 0.019999999999996 0.019999999999996 0.0 363 -364 0.0222852230072021 0.0300000000000011 0.0300000000000011 0.0 364 -365 0.0477530956268311 0.0400000000000063 0.0400000000000063 0.0 365 -366 0.0229170322418213 0.0300000000000011 0.0300000000000011 0.0 366 -367 0.0227410793304443 0.019999999999996 0.019999999999996 0.0 367 -368 0.0225741863250732 0.019999999999996 0.019999999999996 0.0 368 -369 0.0224859714508057 0.0300000000000011 0.0300000000000011 0.0 369 -370 0.0270230770111084 0.0200000000000102 0.0200000000000102 0.0 370 -371 0.0225620269775391 0.0299999999999869 0.0299999999999869 0.0 371 -372 0.047544002532959 0.0400000000000063 0.0400000000000063 0.0 372 -373 0.0227890014648438 0.0300000000000011 0.0300000000000011 0.0 373 -374 0.0226559638977051 0.019999999999996 0.019999999999996 0.0 374 -375 0.0231430530548096 0.019999999999996 0.019999999999996 0.0 375 -376 0.0225589275360107 0.0200000000000102 0.0200000000000102 0.0 376 -377 0.0225508213043213 0.0300000000000011 0.0300000000000011 0.0 377 -378 0.0470719337463379 0.039999999999992 0.039999999999992 0.0 378 -379 0.0261499881744385 0.0300000000000011 0.0300000000000011 0.0 379 -380 0.0227980613708496 0.019999999999996 0.019999999999996 0.0 380 -381 0.0226030349731445 0.0300000000000011 0.0300000000000011 0.0 381 -382 0.022442102432251 0.0200000000000102 0.0200000000000102 0.0 382 -383 0.0225498676300049 0.019999999999996 0.019999999999996 0.0 383 -384 0.0228650569915771 0.019999999999996 0.019999999999996 0.0 384 -385 0.0473499298095703 0.0499999999999972 0.0499999999999972 0.0 385 -386 0.0227880477905273 0.0200000000000102 0.0200000000000102 0.0 386 -387 0.0225081443786621 0.0300000000000011 0.0300000000000011 0.0 387 -388 0.0234310626983643 0.019999999999996 0.019999999999996 0.0 388 -389 0.0260570049285889 0.0300000000000011 0.0300000000000011 0.0 389 -390 0.0224580764770508 0.019999999999996 0.019999999999996 0.0 390 -391 0.0471310615539551 0.0499999999999972 0.0499999999999972 0.0 391 -392 0.02298903465271 0.0200000000000102 0.0200000000000102 0.0 392 -393 0.022860050201416 0.019999999999996 0.019999999999996 0.0 393 -394 0.0225329399108887 0.019999999999996 0.019999999999996 0.0 394 -395 0.0224058628082275 0.0300000000000011 0.0300000000000011 0.0 395 -396 0.0223350524902344 0.019999999999996 0.019999999999996 0.0 396 -397 0.022367000579834 0.0200000000000102 0.0200000000000102 0.0 397 -398 0.055199146270752 0.0599999999999881 0.0599999999999881 0.0 398 -399 0.0272421836853027 0.0200000000000102 0.0200000000000102 0.0 399 -400 0.0226209163665771 0.0300000000000011 0.0300000000000011 0.0 400 -401 0.0224409103393555 0.019999999999996 0.019999999999996 0.0 401 -402 0.0233349800109863 0.019999999999996 0.019999999999996 0.0 402 -403 0.0224699974060059 0.0300000000000011 0.0300000000000011 0.0 403 -404 0.0471019744873047 0.0400000000000063 0.0400000000000063 0.0 404 -405 0.0228829383850098 0.0300000000000011 0.0300000000000011 0.0 405 -406 0.0244019031524658 0.019999999999996 0.019999999999996 0.0 406 -407 0.0267729759216309 0.0300000000000011 0.0300000000000011 0.0 407 -408 0.0224130153656006 0.019999999999996 0.019999999999996 0.0 408 -409 0.022313117980957 0.019999999999996 0.019999999999996 0.0 409 -410 0.0224151611328125 0.0200000000000102 0.0200000000000102 0.0 410 -411 0.0483131408691406 0.0499999999999972 0.0499999999999972 0.0 411 -412 0.0227799415588379 0.019999999999996 0.019999999999996 0.0 412 -413 0.0228002071380615 0.0300000000000011 0.0300000000000011 0.0 413 -414 0.0224690437316895 0.019999999999996 0.019999999999996 0.0 414 -415 0.0225539207458496 0.0200000000000102 0.0200000000000102 0.0 415 -416 0.0254161357879639 0.0300000000000011 0.0300000000000011 0.0 416 -417 0.0482659339904785 0.0499999999999972 0.0499999999999972 0.0 417 -418 0.0229690074920654 0.019999999999996 0.019999999999996 0.0 418 -419 0.0226681232452393 0.019999999999996 0.019999999999996 0.0 419 -420 0.0230739116668701 0.0200000000000102 0.0200000000000102 0.0 420 -421 0.0223119258880615 0.0299999999999869 0.0299999999999869 0.0 421 -422 0.0240011215209961 0.0200000000000102 0.0200000000000102 0.0 422 -423 0.0470819473266602 0.0499999999999972 0.0499999999999972 0.0 423 -424 0.0231809616088867 0.019999999999996 0.019999999999996 0.0 424 -425 0.027169942855835 0.0300000000000011 0.0300000000000011 0.0 425 -426 0.0226540565490723 0.019999999999996 0.019999999999996 0.0 426 -427 0.0227150917053223 0.0200000000000102 0.0200000000000102 0.0 427 -428 0.0225992202758789 0.0300000000000011 0.0300000000000011 0.0 428 -429 0.0225179195404053 0.019999999999996 0.019999999999996 0.0 429 -430 0.0476188659667969 0.0499999999999972 0.0499999999999972 0.0 430 -431 0.0228111743927002 0.019999999999996 0.019999999999996 0.0 431 -432 0.0226650238037109 0.0200000000000102 0.0200000000000102 0.0 432 -433 0.0224969387054443 0.019999999999996 0.019999999999996 0.0 433 -434 0.0223591327667236 0.0300000000000011 0.0300000000000011 0.0 434 -435 0.0267119407653809 0.019999999999996 0.019999999999996 0.0 435 -436 0.0539910793304443 0.0600000000000023 0.0600000000000023 0.0 436 -437 0.0230631828308105 0.019999999999996 0.019999999999996 0.0 437 -438 0.0237729549407959 0.0200000000000102 0.0200000000000102 0.0 438 -439 0.0227470397949219 0.0299999999999869 0.0299999999999869 0.0 439 -440 0.0226438045501709 0.0200000000000102 0.0200000000000102 0.0 440 -441 0.0225329399108887 0.019999999999996 0.019999999999996 0.0 441 -442 0.0225589275360107 0.019999999999996 0.019999999999996 0.0 442 -443 0.0517570972442627 0.0600000000000023 0.0600000000000023 0.0 443 -444 0.0228259563446045 0.019999999999996 0.019999999999996 0.0 444 -445 0.0225679874420166 0.0200000000000102 0.0200000000000102 0.0 445 -446 0.0226199626922607 0.019999999999996 0.019999999999996 0.0 446 -447 0.0224108695983887 0.0300000000000011 0.0300000000000011 0.0 447 -448 0.022813081741333 0.019999999999996 0.019999999999996 0.0 448 -449 0.048245906829834 0.0499999999999972 0.0499999999999972 0.0 449 -450 0.0229110717773438 0.0200000000000102 0.0200000000000102 0.0 450 -451 0.0228190422058105 0.019999999999996 0.019999999999996 0.0 451 -452 0.022475004196167 0.0300000000000011 0.0300000000000011 0.0 452 -453 0.0269429683685303 0.019999999999996 0.019999999999996 0.0 453 -454 0.0225560665130615 0.0300000000000011 0.0300000000000011 0.0 454 -455 0.0226960182189941 0.019999999999996 0.019999999999996 0.0 455 -456 0.0481019020080566 0.0500000000000114 0.0500000000000114 0.0 456 -457 0.0228400230407715 0.019999999999996 0.019999999999996 0.0 457 -458 0.0225000381469727 0.019999999999996 0.019999999999996 0.0 458 -459 0.0225820541381836 0.0300000000000011 0.0300000000000011 0.0 459 -460 0.022550106048584 0.019999999999996 0.019999999999996 0.0 460 -461 0.0224931240081787 0.0200000000000102 0.0200000000000102 0.0 461 -462 0.0505130290985107 0.0499999999999972 0.0499999999999972 0.0 462 -463 0.0229830741882324 0.019999999999996 0.019999999999996 0.0 463 -464 0.0227599143981934 0.0300000000000011 0.0300000000000011 0.0 464 -465 0.0224440097808838 0.019999999999996 0.019999999999996 0.0 465 -466 0.0224459171295166 0.0200000000000102 0.0200000000000102 0.0 466 -467 0.0230529308319092 0.0299999999999869 0.0299999999999869 0.0 467 -468 0.0472948551177979 0.0400000000000063 0.0400000000000063 0.0 468 -469 0.0229778289794922 0.0300000000000011 0.0300000000000011 0.0 469 -470 0.0227181911468506 0.019999999999996 0.019999999999996 0.0 470 -471 0.0253911018371582 0.0200000000000102 0.0200000000000102 0.0 471 -472 0.0295701026916504 0.0299999999999869 0.0299999999999869 0.0 472 -473 0.0240099430084229 0.0300000000000011 0.0300000000000011 0.0 473 -474 0.0225830078125 0.0200000000000102 0.0200000000000102 0.0 474 -475 0.0483601093292236 0.0499999999999972 0.0499999999999972 0.0 475 -476 0.0228290557861328 0.019999999999996 0.019999999999996 0.0 476 -477 0.0227599143981934 0.019999999999996 0.019999999999996 0.0 477 -478 0.0223991870880127 0.0300000000000011 0.0300000000000011 0.0 478 -479 0.0224149227142334 0.0200000000000102 0.0200000000000102 0.0 479 -480 0.0231549739837646 0.019999999999996 0.019999999999996 0.0 480 -481 0.0494570732116699 0.0499999999999972 0.0499999999999972 0.0 481 -482 0.0229361057281494 0.0300000000000011 0.0300000000000011 0.0 482 -483 0.0228068828582764 0.019999999999996 0.019999999999996 0.0 483 -484 0.0226590633392334 0.0200000000000102 0.0200000000000102 0.0 484 -485 0.0231790542602539 0.019999999999996 0.019999999999996 0.0 485 -486 0.0226171016693115 0.0300000000000011 0.0300000000000011 0.0 486 -487 0.0226919651031494 0.019999999999996 0.019999999999996 0.0 487 -488 0.0492510795593262 0.0499999999999972 0.0499999999999972 0.0 488 -489 0.0257031917572021 0.0200000000000102 0.0200000000000102 0.0 489 -490 0.0239601135253906 0.0299999999999869 0.0299999999999869 0.0 490 -491 0.0223851203918457 0.0200000000000102 0.0200000000000102 0.0 491 -492 0.0224499702453613 0.019999999999996 0.019999999999996 0.0 492 -493 0.0224368572235107 0.019999999999996 0.019999999999996 0.0 493 -494 0.0476479530334473 0.0499999999999972 0.0499999999999972 0.0 494 -495 0.022913932800293 0.0300000000000011 0.0300000000000011 0.0 495 -496 0.022791862487793 0.0200000000000102 0.0200000000000102 0.0 496 -497 0.0225038528442383 0.019999999999996 0.019999999999996 0.0 497 -498 0.0226709842681885 0.019999999999996 0.019999999999996 0.0 498 -499 0.0256888866424561 0.0300000000000011 0.0300000000000011 0.0 499 -500 0.0224859714508057 0.019999999999996 0.019999999999996 0.0 500 -501 0.0475161075592041 0.0500000000000114 0.0500000000000114 0.0 501 -502 0.0226891040802002 0.019999999999996 0.019999999999996 0.0 502 -503 0.0227141380310059 0.019999999999996 0.019999999999996 0.0 503 -504 0.0224587917327881 0.0300000000000011 0.0300000000000011 0.0 504 -505 0.0225260257720947 0.019999999999996 0.019999999999996 0.0 505 -506 0.0225589275360107 0.0200000000000102 0.0200000000000102 0.0 506 -507 0.0470049381256104 0.0499999999999972 0.0499999999999972 0.0 507 -508 0.0271100997924805 0.0300000000000011 0.0300000000000011 0.0 508 -509 0.0292420387268066 0.0300000000000011 0.0300000000000011 0.0 509 -510 0.0224711894989014 0.019999999999996 0.019999999999996 0.0 510 -511 0.0221920013427734 0.019999999999996 0.019999999999996 0.0 511 -512 0.0228841304779053 0.0200000000000102 0.0200000000000102 0.0 512 -513 0.0471491813659668 0.0499999999999972 0.0499999999999972 0.0 513 -514 0.0229198932647705 0.019999999999996 0.019999999999996 0.0 514 -515 0.0227129459381104 0.0300000000000011 0.0300000000000011 0.0 515 -516 0.0225949287414551 0.019999999999996 0.019999999999996 0.0 516 -517 0.0255181789398193 0.0200000000000102 0.0200000000000102 0.0 517 -518 0.0228209495544434 0.0299999999999869 0.0299999999999869 0.0 518 -519 0.0225160121917725 0.0200000000000102 0.0200000000000102 0.0 519 -520 0.0473577976226807 0.0499999999999972 0.0499999999999972 0.0 520 -521 0.0227980613708496 0.019999999999996 0.019999999999996 0.0 521 -522 0.0231969356536865 0.019999999999996 0.019999999999996 0.0 522 -523 0.0227179527282715 0.0300000000000011 0.0300000000000011 0.0 523 -524 0.0223970413208008 0.0200000000000102 0.0200000000000102 0.0 524 -525 0.0223920345306396 0.019999999999996 0.019999999999996 0.0 525 -526 0.0507230758666992 0.0499999999999972 0.0499999999999972 0.0 526 -527 0.0229480266571045 0.019999999999996 0.019999999999996 0.0 527 -528 0.0227980613708496 0.0300000000000011 0.0300000000000011 0.0 528 -529 0.0225141048431396 0.0200000000000102 0.0200000000000102 0.0 529 -530 0.0231029987335205 0.019999999999996 0.019999999999996 0.0 530 -531 0.0224690437316895 0.0300000000000011 0.0300000000000011 0.0 531 -532 0.0224161148071289 0.019999999999996 0.019999999999996 0.0 532 -533 0.0474939346313477 0.0499999999999972 0.0499999999999972 0.0 533 -534 0.0227530002593994 0.0200000000000102 0.0200000000000102 0.0 534 -535 0.02276611328125 0.019999999999996 0.019999999999996 0.0 535 -536 0.025050163269043 0.0300000000000011 0.0300000000000011 0.0 536 -537 0.0224800109863281 0.019999999999996 0.019999999999996 0.0 537 -538 0.0225398540496826 0.019999999999996 0.019999999999996 0.0 538 -539 0.047184944152832 0.0500000000000114 0.0500000000000114 0.0 539 -540 0.0230119228363037 0.019999999999996 0.019999999999996 0.0 540 -541 0.022691011428833 0.019999999999996 0.019999999999996 0.0 541 -542 0.0224730968475342 0.0300000000000011 0.0300000000000011 0.0 542 -543 0.0223429203033447 0.019999999999996 0.019999999999996 0.0 543 -544 0.0224099159240723 0.0200000000000102 0.0200000000000102 0.0 544 -545 0.0533881187438965 0.0499999999999972 0.0499999999999972 0.0 545 -546 0.0262870788574219 0.0300000000000011 0.0300000000000011 0.0 546 -547 0.0228250026702881 0.019999999999996 0.019999999999996 0.0 547 -548 0.0226221084594727 0.0300000000000011 0.0300000000000011 0.0 548 -549 0.0232529640197754 0.019999999999996 0.019999999999996 0.0 549 -550 0.0225918292999268 0.019999999999996 0.019999999999996 0.0 550 -551 0.0225841999053955 0.0300000000000011 0.0300000000000011 0.0 551 -552 0.047435998916626 0.0400000000000063 0.0400000000000063 0.0 552 -553 0.0227999687194824 0.0300000000000011 0.0300000000000011 0.0 553 -554 0.0258529186248779 0.019999999999996 0.019999999999996 0.0 554 -555 0.022432804107666 0.019999999999996 0.019999999999996 0.0 555 -556 0.0223519802093506 0.0300000000000011 0.0300000000000011 0.0 556 -557 0.0224819183349609 0.0200000000000102 0.0200000000000102 0.0 557 -558 0.0474679470062256 0.0499999999999972 0.0499999999999972 0.0 558 -559 0.0229389667510986 0.019999999999996 0.019999999999996 0.0 559 -560 0.0228800773620605 0.019999999999996 0.019999999999996 0.0 560 -561 0.0224850177764893 0.0200000000000102 0.0200000000000102 0.0 561 -562 0.0225398540496826 0.0300000000000011 0.0300000000000011 0.0 562 -563 0.0224540233612061 0.019999999999996 0.019999999999996 0.0 563 -564 0.025576114654541 0.0300000000000011 0.0300000000000011 0.0 564 -565 0.0475959777832031 0.039999999999992 0.039999999999992 0.0 565 -566 0.0227079391479492 0.0300000000000011 0.0300000000000011 0.0 566 -567 0.0230989456176758 0.0200000000000102 0.0200000000000102 0.0 567 -568 0.0224859714508057 0.019999999999996 0.019999999999996 0.0 568 -569 0.0224618911743164 0.019999999999996 0.019999999999996 0.0 569 -570 0.0225780010223389 0.0300000000000011 0.0300000000000011 0.0 570 -571 0.0471539497375488 0.0400000000000063 0.0400000000000063 0.0 571 -572 0.0252819061279297 0.0300000000000011 0.0300000000000011 0.0 572 -573 0.0236349105834961 0.019999999999996 0.019999999999996 0.0 573 -574 0.0224208831787109 0.0300000000000011 0.0300000000000011 0.0 574 -575 0.0223720073699951 0.019999999999996 0.019999999999996 0.0 575 -576 0.0222949981689453 0.019999999999996 0.019999999999996 0.0 576 -577 0.0470468997955322 0.0499999999999972 0.0499999999999972 0.0 577 -578 0.0229780673980713 0.0200000000000102 0.0200000000000102 0.0 578 -579 0.0227508544921875 0.019999999999996 0.019999999999996 0.0 579 -580 0.022536039352417 0.0300000000000011 0.0300000000000011 0.0 580 -581 0.0225150585174561 0.019999999999996 0.019999999999996 0.0 581 -582 0.0254819393157959 0.0200000000000102 0.0200000000000102 0.0 582 -583 0.0310370922088623 0.0299999999999869 0.0299999999999869 0.0 583 -584 0.0474588871002197 0.0500000000000114 0.0500000000000114 0.0 584 -585 0.022752046585083 0.019999999999996 0.019999999999996 0.0 585 -586 0.0233280658721924 0.0300000000000011 0.0300000000000011 0.0 586 -587 0.0223760604858398 0.019999999999996 0.019999999999996 0.0 587 -588 0.0223050117492676 0.019999999999996 0.019999999999996 0.0 588 -589 0.0223169326782227 0.0200000000000102 0.0200000000000102 0.0 589 -590 0.047105073928833 0.0499999999999972 0.0499999999999972 0.0 590 -591 0.0272059440612793 0.0300000000000011 0.0300000000000011 0.0 591 -592 0.0227630138397217 0.019999999999996 0.019999999999996 0.0 592 -593 0.0226268768310547 0.019999999999996 0.019999999999996 0.0 593 -594 0.0225090980529785 0.0300000000000011 0.0300000000000011 0.0 594 -595 0.0225892066955566 0.0200000000000102 0.0200000000000102 0.0 595 -596 0.0231549739837646 0.019999999999996 0.019999999999996 0.0 596 -597 0.0475459098815918 0.0499999999999972 0.0499999999999972 0.0 597 -598 0.0226891040802002 0.019999999999996 0.019999999999996 0.0 598 -599 0.0224978923797607 0.0300000000000011 0.0300000000000011 0.0 599 -600 0.0245161056518555 0.0200000000000102 0.0200000000000102 0.0 600 -601 0.0242869853973389 0.019999999999996 0.019999999999996 0.0 601 -602 0.0225369930267334 0.0300000000000011 0.0300000000000011 0.0 602 -603 0.0477139949798584 0.039999999999992 0.039999999999992 0.0 603 -604 0.0228500366210938 0.0300000000000011 0.0300000000000011 0.0 604 -605 0.0225930213928223 0.019999999999996 0.019999999999996 0.0 605 -606 0.0224370956420898 0.0200000000000102 0.0200000000000102 0.0 606 -607 0.0223829746246338 0.019999999999996 0.019999999999996 0.0 607 -608 0.0222539901733398 0.0300000000000011 0.0300000000000011 0.0 608 -609 0.0497751235961914 0.0499999999999972 0.0499999999999972 0.0 609 -610 0.0235979557037354 0.019999999999996 0.019999999999996 0.0 610 -611 0.0227591991424561 0.0200000000000102 0.0200000000000102 0.0 611 -612 0.0226850509643555 0.0300000000000011 0.0300000000000011 0.0 612 -613 0.0225200653076172 0.019999999999996 0.019999999999996 0.0 613 -614 0.0227999687194824 0.019999999999996 0.019999999999996 0.0 614 -615 0.0224919319152832 0.019999999999996 0.019999999999996 0.0 615 -616 0.0472068786621094 0.0500000000000114 0.0500000000000114 0.0 616 -617 0.0227549076080322 0.019999999999996 0.019999999999996 0.0 617 -618 0.0224969387054443 0.0300000000000011 0.0300000000000011 0.0 618 -619 0.0257840156555176 0.019999999999996 0.019999999999996 0.0 619 -620 0.0295670032501221 0.0300000000000011 0.0300000000000011 0.0 620 -621 0.0229511260986328 0.019999999999996 0.019999999999996 0.0 621 -622 0.0471799373626709 0.0500000000000114 0.0500000000000114 0.0 622 -623 0.0238358974456787 0.0299999999999869 0.0299999999999869 0.0 623 -624 0.0228331089019775 0.0200000000000102 0.0200000000000102 0.0 624 -625 0.0225739479064941 0.019999999999996 0.019999999999996 0.0 625 -626 0.0223119258880615 0.019999999999996 0.019999999999996 0.0 626 -627 0.0223081111907959 0.0300000000000011 0.0300000000000011 0.0 627 -628 0.0510420799255371 0.0499999999999972 0.0499999999999972 0.0 628 -629 0.0229439735412598 0.0200000000000102 0.0200000000000102 0.0 629 -630 0.0228598117828369 0.019999999999996 0.019999999999996 0.0 630 -631 0.0226309299468994 0.0300000000000011 0.0300000000000011 0.0 631 -632 0.0225811004638672 0.019999999999996 0.019999999999996 0.0 632 -633 0.0231959819793701 0.019999999999996 0.019999999999996 0.0 633 -634 0.022752046585083 0.0200000000000102 0.0200000000000102 0.0 634 -635 0.0472497940063477 0.0499999999999972 0.0499999999999972 0.0 635 -636 0.0227398872375488 0.019999999999996 0.019999999999996 0.0 636 -637 0.0257761478424072 0.0300000000000011 0.0300000000000011 0.0 637 -638 0.0224080085754395 0.019999999999996 0.019999999999996 0.0 638 -639 0.0224230289459229 0.0300000000000011 0.0300000000000011 0.0 639 -640 0.0224108695983887 0.0200000000000102 0.0200000000000102 0.0 640 -641 0.0475258827209473 0.0499999999999972 0.0499999999999972 0.0 641 -642 0.0228271484375 0.019999999999996 0.019999999999996 0.0 642 -643 0.0227019786834717 0.019999999999996 0.019999999999996 0.0 643 -644 0.0224940776824951 0.0200000000000102 0.0200000000000102 0.0 644 -645 0.0224850177764893 0.0300000000000011 0.0300000000000011 0.0 645 -646 0.0227019786834717 0.019999999999996 0.019999999999996 0.0 646 -647 0.0250790119171143 0.019999999999996 0.019999999999996 0.0 647 -648 0.0480010509490967 0.0499999999999972 0.0499999999999972 0.0 648 -649 0.0226480960845947 0.0200000000000102 0.0200000000000102 0.0 649 -650 0.0224239826202393 0.0300000000000011 0.0300000000000011 0.0 650 -651 0.0233159065246582 0.019999999999996 0.019999999999996 0.0 651 -652 0.022554874420166 0.019999999999996 0.019999999999996 0.0 652 -653 0.0225050449371338 0.019999999999996 0.019999999999996 0.0 653 -654 0.04734206199646 0.0500000000000114 0.0500000000000114 0.0 654 -655 0.0227370262145996 0.019999999999996 0.019999999999996 0.0 655 -656 0.0317370891571045 0.0299999999999869 0.0299999999999869 0.0 656 -657 0.0237619876861572 0.0200000000000102 0.0200000000000102 0.0 657 -658 0.0224289894104004 0.019999999999996 0.019999999999996 0.0 658 -659 0.0223090648651123 0.0300000000000011 0.0300000000000011 0.0 659 -660 0.0475950241088867 0.039999999999992 0.039999999999992 0.0 660 -661 0.0230028629302979 0.0300000000000011 0.0300000000000011 0.0 661 -662 0.0226609706878662 0.0200000000000102 0.0200000000000102 0.0 662 -663 0.0227439403533936 0.019999999999996 0.019999999999996 0.0 663 -664 0.0224378108978271 0.019999999999996 0.019999999999996 0.0 664 -665 0.0267817974090576 0.0300000000000011 0.0300000000000011 0.0 665 -666 0.0225181579589844 0.019999999999996 0.019999999999996 0.0 666 -667 0.0476372241973877 0.0500000000000114 0.0500000000000114 0.0 667 -668 0.0227279663085938 0.019999999999996 0.019999999999996 0.0 668 -669 0.0238058567047119 0.0300000000000011 0.0300000000000011 0.0 669 -670 0.0225961208343506 0.019999999999996 0.019999999999996 0.0 670 -671 0.0226478576660156 0.019999999999996 0.019999999999996 0.0 671 -672 0.0224800109863281 0.0300000000000011 0.0300000000000011 0.0 672 -673 0.0478980541229248 0.0400000000000063 0.0400000000000063 0.0 673 -674 0.0272519588470459 0.0300000000000011 0.0300000000000011 0.0 674 -675 0.0226519107818604 0.019999999999996 0.019999999999996 0.0 675 -676 0.0225238800048828 0.0300000000000011 0.0300000000000011 0.0 676 -677 0.0224411487579346 0.019999999999996 0.019999999999996 0.0 677 -678 0.0228710174560547 0.0200000000000102 0.0200000000000102 0.0 678 -679 0.0471720695495605 0.0499999999999972 0.0499999999999972 0.0 679 -680 0.0229899883270264 0.019999999999996 0.019999999999996 0.0 680 -681 0.0226860046386719 0.019999999999996 0.019999999999996 0.0 681 -682 0.0227768421173096 0.0300000000000011 0.0300000000000011 0.0 682 -683 0.0246498584747314 0.0200000000000102 0.0200000000000102 0.0 683 -684 0.024179220199585 0.0299999999999869 0.0299999999999869 0.0 684 -685 0.0224809646606445 0.0200000000000102 0.0200000000000102 0.0 685 -686 0.0472848415374756 0.0499999999999972 0.0499999999999972 0.0 686 -687 0.0227711200714111 0.019999999999996 0.019999999999996 0.0 687 -688 0.0226719379425049 0.019999999999996 0.019999999999996 0.0 688 -689 0.0224339962005615 0.0200000000000102 0.0200000000000102 0.0 689 -690 0.022291898727417 0.0300000000000011 0.0300000000000011 0.0 690 -691 0.02239990234375 0.019999999999996 0.019999999999996 0.0 691 -692 0.0513718128204346 0.0499999999999972 0.0499999999999972 0.0 692 -693 0.0307130813598633 0.0300000000000011 0.0300000000000011 0.0 693 -694 0.0228471755981445 0.019999999999996 0.019999999999996 0.0 694 -695 0.0224709510803223 0.0300000000000011 0.0300000000000011 0.0 695 -696 0.0225100517272949 0.0200000000000102 0.0200000000000102 0.0 696 -697 0.0233030319213867 0.019999999999996 0.019999999999996 0.0 697 -698 0.0470919609069824 0.0499999999999972 0.0499999999999972 0.0 698 -699 0.0229198932647705 0.019999999999996 0.019999999999996 0.0 699 -700 0.0227630138397217 0.0200000000000102 0.0200000000000102 0.0 700 -701 0.0225980281829834 0.0200000000000102 0.0200000000000102 0.0 701 -702 0.0258259773254395 0.019999999999996 0.019999999999996 0.0 702 -703 0.0223879814147949 0.0300000000000011 0.0300000000000011 0.0 703 -704 0.0224990844726562 0.019999999999996 0.019999999999996 0.0 704 -705 0.0473251342773438 0.0499999999999972 0.0499999999999972 0.0 705 -706 0.0234189033508301 0.019999999999996 0.019999999999996 0.0 706 -707 0.0227119922637939 0.0200000000000102 0.0200000000000102 0.0 707 -708 0.0224349498748779 0.019999999999996 0.019999999999996 0.0 708 -709 0.0224518775939941 0.0300000000000011 0.0300000000000011 0.0 709 -710 0.0225179195404053 0.019999999999996 0.019999999999996 0.0 710 -711 0.0502331256866455 0.0499999999999972 0.0499999999999972 0.0 711 -712 0.0228428840637207 0.0200000000000102 0.0200000000000102 0.0 712 -713 0.0227060317993164 0.0300000000000011 0.0300000000000011 0.0 713 -714 0.023097038269043 0.019999999999996 0.019999999999996 0.0 714 -715 0.0223181247711182 0.019999999999996 0.019999999999996 0.0 715 -716 0.0222809314727783 0.019999999999996 0.019999999999996 0.0 716 -717 0.0471060276031494 0.0500000000000114 0.0500000000000114 0.0 717 -718 0.0228781700134277 0.019999999999996 0.019999999999996 0.0 718 -719 0.0229380130767822 0.0300000000000011 0.0300000000000011 0.0 719 -720 0.0258369445800781 0.019999999999996 0.019999999999996 0.0 720 -721 0.0224931240081787 0.0300000000000011 0.0300000000000011 0.0 721 -722 0.0230259895324707 0.019999999999996 0.019999999999996 0.0 722 -723 0.02252197265625 0.0200000000000102 0.0200000000000102 0.0 723 -724 0.0475549697875977 0.0499999999999972 0.0499999999999972 0.0 724 -725 0.0227770805358887 0.019999999999996 0.019999999999996 0.0 725 -726 0.0225141048431396 0.019999999999996 0.019999999999996 0.0 726 -727 0.0227451324462891 0.0300000000000011 0.0300000000000011 0.0 727 -728 0.0223758220672607 0.0200000000000102 0.0200000000000102 0.0 728 -729 0.023906946182251 0.019999999999996 0.019999999999996 0.0 729 -730 0.0556581020355225 0.0600000000000023 0.0600000000000023 0.0 730 -731 0.0229699611663818 0.019999999999996 0.019999999999996 0.0 731 -732 0.0226690769195557 0.019999999999996 0.019999999999996 0.0 732 -733 0.0225589275360107 0.0300000000000011 0.0300000000000011 0.0 733 -734 0.0232241153717041 0.019999999999996 0.019999999999996 0.0 734 -735 0.0225598812103271 0.0200000000000102 0.0200000000000102 0.0 735 -736 0.0470528602600098 0.0499999999999972 0.0499999999999972 0.0 736 -737 0.0228769779205322 0.019999999999996 0.019999999999996 0.0 737 -738 0.0257880687713623 0.0300000000000011 0.0300000000000011 0.0 738 -739 0.0235300064086914 0.019999999999996 0.019999999999996 0.0 739 -740 0.0224180221557617 0.0200000000000102 0.0200000000000102 0.0 740 -741 0.0224599838256836 0.0300000000000011 0.0300000000000011 0.0 741 -742 0.022385835647583 0.019999999999996 0.019999999999996 0.0 742 -743 0.0479929447174072 0.0499999999999972 0.0499999999999972 0.0 743 -744 0.0231039524078369 0.019999999999996 0.019999999999996 0.0 744 -745 0.0225660800933838 0.0200000000000102 0.0200000000000102 0.0 745 -746 0.0224900245666504 0.019999999999996 0.019999999999996 0.0 746 -747 0.0224640369415283 0.0300000000000011 0.0300000000000011 0.0 747 -748 0.0256268978118896 0.019999999999996 0.019999999999996 0.0 748 -749 0.0473120212554932 0.0499999999999972 0.0499999999999972 0.0 749 -750 0.0228018760681152 0.0200000000000102 0.0200000000000102 0.0 750 -751 0.0232498645782471 0.0300000000000011 0.0300000000000011 0.0 751 -752 0.0224390029907227 0.019999999999996 0.019999999999996 0.0 752 -753 0.022291898727417 0.019999999999996 0.019999999999996 0.0 753 -754 0.0223748683929443 0.019999999999996 0.019999999999996 0.0 754 -755 0.0472152233123779 0.0500000000000114 0.0500000000000114 0.0 755 -756 0.0228731632232666 0.019999999999996 0.019999999999996 0.0 756 -757 0.0252671241760254 0.0300000000000011 0.0300000000000011 0.0 757 -758 0.0226409435272217 0.019999999999996 0.019999999999996 0.0 758 -759 0.0225830078125 0.019999999999996 0.019999999999996 0.0 759 -760 0.0225331783294678 0.0300000000000011 0.0300000000000011 0.0 760 -761 0.0225949287414551 0.0200000000000102 0.0200000000000102 0.0 761 -762 0.0475749969482422 0.0499999999999972 0.0499999999999972 0.0 762 -763 0.0227329730987549 0.019999999999996 0.019999999999996 0.0 763 -764 0.0225529670715332 0.019999999999996 0.019999999999996 0.0 764 -765 0.0224440097808838 0.0200000000000102 0.0200000000000102 0.0 765 -766 0.0223290920257568 0.0300000000000011 0.0300000000000011 0.0 766 -767 0.033358097076416 0.0299999999999869 0.0299999999999869 0.0 767 -768 0.0471920967102051 0.0500000000000114 0.0500000000000114 0.0 768 -769 0.0227799415588379 0.019999999999996 0.019999999999996 0.0 769 -770 0.0234429836273193 0.019999999999996 0.019999999999996 0.0 770 -771 0.0224521160125732 0.0300000000000011 0.0300000000000011 0.0 771 -772 0.0226120948791504 0.019999999999996 0.019999999999996 0.0 772 -773 0.0225300788879395 0.0200000000000102 0.0200000000000102 0.0 773 -774 0.0472240447998047 0.0499999999999972 0.0499999999999972 0.0 774 -775 0.0266668796539307 0.0300000000000011 0.0300000000000011 0.0 775 -776 0.023015022277832 0.019999999999996 0.019999999999996 0.0 776 -777 0.0226809978485107 0.019999999999996 0.019999999999996 0.0 777 -778 0.0225629806518555 0.0200000000000102 0.0200000000000102 0.0 778 -779 0.0223550796508789 0.0300000000000011 0.0300000000000011 0.0 779 -780 0.0230989456176758 0.019999999999996 0.019999999999996 0.0 780 -781 0.0475809574127197 0.0499999999999972 0.0499999999999972 0.0 781 -782 0.0226840972900391 0.019999999999996 0.019999999999996 0.0 782 -783 0.0225729942321777 0.0200000000000102 0.0200000000000102 0.0 783 -784 0.0224289894104004 0.0300000000000011 0.0300000000000011 0.0 784 -785 0.0256469249725342 0.019999999999996 0.019999999999996 0.0 785 -786 0.0225028991699219 0.019999999999996 0.019999999999996 0.0 786 -787 0.0480420589447021 0.0499999999999972 0.0499999999999972 0.0 787 -788 0.0228919982910156 0.0200000000000102 0.0200000000000102 0.0 788 -789 0.0226309299468994 0.0299999999999869 0.0299999999999869 0.0 789 -790 0.0224378108978271 0.0200000000000102 0.0200000000000102 0.0 790 -791 0.0224709510803223 0.019999999999996 0.019999999999996 0.0 791 -792 0.0223159790039062 0.019999999999996 0.019999999999996 0.0 792 -793 0.0482239723205566 0.0400000000000063 0.0400000000000063 0.0 793 -794 0.0246069431304932 0.0299999999999869 0.0299999999999869 0.0 794 -795 0.0227251052856445 0.0200000000000102 0.0200000000000102 0.0 795 -796 0.0226359367370605 0.019999999999996 0.019999999999996 0.0 796 -797 0.0224781036376953 0.0300000000000011 0.0300000000000011 0.0 797 -798 0.0225961208343506 0.019999999999996 0.019999999999996 0.0 798 -799 0.0226588249206543 0.019999999999996 0.019999999999996 0.0 799 -800 0.0475590229034424 0.0500000000000114 0.0500000000000114 0.0 800 -801 0.0227870941162109 0.019999999999996 0.019999999999996 0.0 801 -802 0.0225069522857666 0.019999999999996 0.019999999999996 0.0 802 -803 0.0258538722991943 0.0300000000000011 0.0300000000000011 0.0 803 -804 0.0293428897857666 0.0300000000000011 0.0300000000000011 0.0 804 -805 0.022611141204834 0.019999999999996 0.019999999999996 0.0 805 -806 0.0470418930053711 0.0500000000000114 0.0500000000000114 0.0 806 -807 0.0237758159637451 0.019999999999996 0.019999999999996 0.0 807 -808 0.0227320194244385 0.0300000000000011 0.0300000000000011 0.0 808 -809 0.0224711894989014 0.019999999999996 0.019999999999996 0.0 809 -810 0.0225059986114502 0.019999999999996 0.019999999999996 0.0 810 -811 0.0224649906158447 0.0200000000000102 0.0200000000000102 0.0 811 -812 0.0506050586700439 0.0499999999999972 0.0499999999999972 0.0 812 -813 0.0230269432067871 0.0300000000000011 0.0300000000000011 0.0 813 -814 0.0228140354156494 0.019999999999996 0.019999999999996 0.0 814 -815 0.0225369930267334 0.019999999999996 0.019999999999996 0.0 815 -816 0.0224819183349609 0.0300000000000011 0.0300000000000011 0.0 816 -817 0.0230681896209717 0.019999999999996 0.019999999999996 0.0 817 -818 0.0226531028747559 0.0200000000000102 0.0200000000000102 0.0 818 -819 0.0471920967102051 0.0499999999999972 0.0499999999999972 0.0 819 -820 0.022752046585083 0.019999999999996 0.019999999999996 0.0 820 -821 0.0240130424499512 0.0300000000000011 0.0300000000000011 0.0 821 -822 0.024043083190918 0.019999999999996 0.019999999999996 0.0 822 -823 0.022367000579834 0.0200000000000102 0.0200000000000102 0.0 823 -824 0.0223929882049561 0.019999999999996 0.019999999999996 0.0 824 -825 0.0477418899536133 0.0499999999999972 0.0499999999999972 0.0 825 -826 0.0227749347686768 0.0300000000000011 0.0300000000000011 0.0 826 -827 0.0227129459381104 0.019999999999996 0.019999999999996 0.0 827 -828 0.0225088596343994 0.0200000000000102 0.0200000000000102 0.0 828 -829 0.0223178863525391 0.019999999999996 0.019999999999996 0.0 829 -830 0.02256178855896 0.0300000000000011 0.0300000000000011 0.0 830 -831 0.0491888523101807 0.039999999999992 0.039999999999992 0.0 831 -832 0.0238690376281738 0.0300000000000011 0.0300000000000011 0.0 832 -833 0.0228731632232666 0.0200000000000102 0.0200000000000102 0.0 833 -834 0.0226390361785889 0.019999999999996 0.019999999999996 0.0 834 -835 0.0226919651031494 0.0300000000000011 0.0300000000000011 0.0 835 -836 0.0225028991699219 0.019999999999996 0.019999999999996 0.0 836 -837 0.0224220752716064 0.019999999999996 0.019999999999996 0.0 837 -838 0.0475718975067139 0.0500000000000114 0.0500000000000114 0.0 838 -839 0.0228641033172607 0.019999999999996 0.019999999999996 0.0 839 -840 0.0308690071105957 0.0300000000000011 0.0300000000000011 0.0 840 -841 0.0251350402832031 0.0300000000000011 0.0300000000000011 0.0 841 -842 0.022784948348999 0.019999999999996 0.019999999999996 0.0 842 -843 0.022475004196167 0.019999999999996 0.019999999999996 0.0 843 -844 0.0481071472167969 0.0499999999999972 0.0499999999999972 0.0 844 -845 0.022777795791626 0.0200000000000102 0.0200000000000102 0.0 845 -846 0.0225391387939453 0.0300000000000011 0.0300000000000011 0.0 846 -847 0.0223829746246338 0.019999999999996 0.019999999999996 0.0 847 -848 0.0222880840301514 0.019999999999996 0.019999999999996 0.0 848 -849 0.0231649875640869 0.0200000000000102 0.0200000000000102 0.0 849 -850 0.0498239994049072 0.0499999999999972 0.0499999999999972 0.0 850 -851 0.0229728221893311 0.0300000000000011 0.0300000000000011 0.0 851 -852 0.0226678848266602 0.019999999999996 0.019999999999996 0.0 852 -853 0.0235629081726074 0.019999999999996 0.019999999999996 0.0 853 -854 0.0226778984069824 0.0300000000000011 0.0300000000000011 0.0 854 -855 0.0225760936737061 0.019999999999996 0.019999999999996 0.0 855 -856 0.0472428798675537 0.0500000000000114 0.0500000000000114 0.0 856 -857 0.0228590965270996 0.019999999999996 0.019999999999996 0.0 857 -858 0.0256388187408447 0.0300000000000011 0.0300000000000011 0.0 858 -859 0.0229208469390869 0.019999999999996 0.019999999999996 0.0 859 -860 0.0224840641021729 0.019999999999996 0.019999999999996 0.0 860 -861 0.0223701000213623 0.0200000000000102 0.0200000000000102 0.0 861 -862 0.0229117870330811 0.0300000000000011 0.0300000000000011 0.0 862 -863 0.0475149154663086 0.039999999999992 0.039999999999992 0.0 863 -864 0.022799015045166 0.0300000000000011 0.0300000000000011 0.0 864 -865 0.0225379467010498 0.019999999999996 0.019999999999996 0.0 865 -866 0.0226678848266602 0.0200000000000102 0.0200000000000102 0.0 866 -867 0.0223591327667236 0.019999999999996 0.019999999999996 0.0 867 -868 0.0251359939575195 0.0300000000000011 0.0300000000000011 0.0 868 -869 0.0475220680236816 0.0499999999999972 0.0499999999999972 0.0 869 -870 0.0227980613708496 0.019999999999996 0.019999999999996 0.0 870 -871 0.0227110385894775 0.0200000000000102 0.0200000000000102 0.0 871 -872 0.0231759548187256 0.0299999999999869 0.0299999999999869 0.0 872 -873 0.0223469734191895 0.0200000000000102 0.0200000000000102 0.0 873 -874 0.0222749710083008 0.019999999999996 0.019999999999996 0.0 874 -875 0.046968936920166 0.0499999999999972 0.0499999999999972 0.0 875 -876 0.0229840278625488 0.0200000000000102 0.0200000000000102 0.0 876 -877 0.0336899757385254 0.0299999999999869 0.0299999999999869 0.0 877 -878 0.0226821899414062 0.0300000000000011 0.0300000000000011 0.0 878 -879 0.0225288867950439 0.0200000000000102 0.0200000000000102 0.0 879 -880 0.0224189758300781 0.019999999999996 0.019999999999996 0.0 880 -881 0.023205041885376 0.0300000000000011 0.0300000000000011 0.0 881 -882 0.0473780632019043 0.039999999999992 0.039999999999992 0.0 882 -883 0.0226800441741943 0.0300000000000011 0.0300000000000011 0.0 883 -884 0.0224399566650391 0.0200000000000102 0.0200000000000102 0.0 884 -885 0.0223681926727295 0.019999999999996 0.019999999999996 0.0 885 -886 0.0252659320831299 0.0300000000000011 0.0300000000000011 0.0 886 -887 0.0249259471893311 0.019999999999996 0.019999999999996 0.0 887 -888 0.047400951385498 0.0499999999999972 0.0499999999999972 0.0 888 -889 0.0227570533752441 0.0200000000000102 0.0200000000000102 0.0 889 -890 0.0234551429748535 0.019999999999996 0.019999999999996 0.0 890 -891 0.0227649211883545 0.0300000000000011 0.0300000000000011 0.0 891 -892 0.0223729610443115 0.019999999999996 0.019999999999996 0.0 892 -893 0.0223479270935059 0.019999999999996 0.019999999999996 0.0 893 -894 0.047307014465332 0.0500000000000114 0.0500000000000114 0.0 894 -895 0.0258030891418457 0.019999999999996 0.019999999999996 0.0 895 -896 0.0229730606079102 0.0300000000000011 0.0300000000000011 0.0 896 -897 0.0226550102233887 0.019999999999996 0.019999999999996 0.0 897 -898 0.0230071544647217 0.019999999999996 0.019999999999996 0.0 898 -899 0.0224480628967285 0.0300000000000011 0.0300000000000011 0.0 899 -900 0.047260046005249 0.0400000000000063 0.0400000000000063 0.0 900 -901 0.0229511260986328 0.0300000000000011 0.0300000000000011 0.0 901 -902 0.0227549076080322 0.019999999999996 0.019999999999996 0.0 902 -903 0.0227870941162109 0.019999999999996 0.019999999999996 0.0 903 -904 0.023169994354248 0.0200000000000102 0.0200000000000102 0.0 904 -905 0.0247299671173096 0.0299999999999869 0.0299999999999869 0.0 905 -906 0.0232272148132324 0.0200000000000102 0.0200000000000102 0.0 906 -907 0.0473639965057373 0.0499999999999972 0.0499999999999972 0.0 907 -908 0.0231180191040039 0.019999999999996 0.019999999999996 0.0 908 -909 0.0226378440856934 0.0300000000000011 0.0300000000000011 0.0 909 -910 0.0224730968475342 0.019999999999996 0.019999999999996 0.0 910 -911 0.0223720073699951 0.0200000000000102 0.0200000000000102 0.0 911 -912 0.0224881172180176 0.019999999999996 0.019999999999996 0.0 912 -913 0.0518181324005127 0.0600000000000023 0.0600000000000023 0.0 913 -914 0.0285370349884033 0.019999999999996 0.019999999999996 0.0 914 -915 0.0229339599609375 0.0300000000000011 0.0300000000000011 0.0 915 -916 0.0224258899688721 0.019999999999996 0.019999999999996 0.0 916 -917 0.0223419666290283 0.0200000000000102 0.0200000000000102 0.0 917 -918 0.0231149196624756 0.019999999999996 0.019999999999996 0.0 918 -919 0.0469498634338379 0.0499999999999972 0.0499999999999972 0.0 919 -920 0.0229380130767822 0.019999999999996 0.019999999999996 0.0 920 -921 0.022784948348999 0.0300000000000011 0.0300000000000011 0.0 921 -922 0.0224778652191162 0.0200000000000102 0.0200000000000102 0.0 922 -923 0.025670051574707 0.0299999999999869 0.0299999999999869 0.0 923 -924 0.0241270065307617 0.0200000000000102 0.0200000000000102 0.0 924 -925 0.0224959850311279 0.019999999999996 0.019999999999996 0.0 925 -926 0.0475151538848877 0.0499999999999972 0.0499999999999972 0.0 926 -927 0.0233569145202637 0.019999999999996 0.019999999999996 0.0 927 -928 0.022697925567627 0.0300000000000011 0.0300000000000011 0.0 928 -929 0.0224049091339111 0.0200000000000102 0.0200000000000102 0.0 929 -930 0.0223929882049561 0.019999999999996 0.019999999999996 0.0 930 -931 0.0224430561065674 0.019999999999996 0.019999999999996 0.0 931 -932 0.0508589744567871 0.0499999999999972 0.0499999999999972 0.0 932 -933 0.0229549407958984 0.0300000000000011 0.0300000000000011 0.0 933 -934 0.0227360725402832 0.0200000000000102 0.0200000000000102 0.0 934 -935 0.0230159759521484 0.019999999999996 0.019999999999996 0.0 935 -936 0.0223309993743896 0.019999999999996 0.019999999999996 0.0 936 -937 0.0222959518432617 0.019999999999996 0.019999999999996 0.0 937 -938 0.0472970008850098 0.0400000000000063 0.0400000000000063 0.0 938 -939 0.0230600833892822 0.0300000000000011 0.0300000000000011 0.0 939 -940 0.0226349830627441 0.019999999999996 0.019999999999996 0.0 940 -941 0.025303840637207 0.0300000000000011 0.0300000000000011 0.0 941 -942 0.0234689712524414 0.019999999999996 0.019999999999996 0.0 942 -943 0.022615909576416 0.019999999999996 0.019999999999996 0.0 943 -944 0.0470030307769775 0.0500000000000114 0.0500000000000114 0.0 944 -945 0.0232269763946533 0.019999999999996 0.019999999999996 0.0 945 -946 0.0227811336517334 0.0300000000000011 0.0300000000000011 0.0 946 -947 0.0225110054016113 0.019999999999996 0.019999999999996 0.0 947 -948 0.0224099159240723 0.019999999999996 0.019999999999996 0.0 948 -949 0.0224759578704834 0.0200000000000102 0.0200000000000102 0.0 949 -950 0.0223360061645508 0.0300000000000011 0.0300000000000011 0.0 950 -951 0.0556850433349609 0.0499999999999972 0.0499999999999972 0.0 951 -952 0.0229251384735107 0.019999999999996 0.019999999999996 0.0 952 -953 0.0225358009338379 0.0300000000000011 0.0300000000000011 0.0 953 -954 0.0226168632507324 0.019999999999996 0.019999999999996 0.0 954 -955 0.023292064666748 0.019999999999996 0.019999999999996 0.0 955 -956 0.0225601196289062 0.0300000000000011 0.0300000000000011 0.0 956 -957 0.0472140312194824 0.0400000000000063 0.0400000000000063 0.0 957 -958 0.0228290557861328 0.0300000000000011 0.0300000000000011 0.0 958 -959 0.0247390270233154 0.019999999999996 0.019999999999996 0.0 959 -960 0.0244059562683105 0.019999999999996 0.019999999999996 0.0 960 -961 0.0223748683929443 0.0300000000000011 0.0300000000000011 0.0 961 -962 0.0224399566650391 0.0200000000000102 0.0200000000000102 0.0 962 -963 0.0478479862213135 0.0499999999999972 0.0499999999999972 0.0 963 -964 0.0231130123138428 0.019999999999996 0.019999999999996 0.0 964 -965 0.0229220390319824 0.019999999999996 0.019999999999996 0.0 965 -966 0.0224699974060059 0.0300000000000011 0.0300000000000011 0.0 966 -967 0.0225620269775391 0.0200000000000102 0.0200000000000102 0.0 967 -968 0.0224020481109619 0.019999999999996 0.019999999999996 0.0 968 -969 0.0508251190185547 0.0499999999999972 0.0499999999999972 0.0 969 -970 0.0230629444122314 0.0300000000000011 0.0300000000000011 0.0 970 -971 0.0234439373016357 0.019999999999996 0.019999999999996 0.0 971 -972 0.0241410732269287 0.0200000000000102 0.0200000000000102 0.0 972 -973 0.0225048065185547 0.019999999999996 0.019999999999996 0.0 973 -974 0.0223360061645508 0.0300000000000011 0.0300000000000011 0.0 974 -975 0.0224909782409668 0.019999999999996 0.019999999999996 0.0 975 -976 0.0475950241088867 0.0499999999999972 0.0499999999999972 0.0 976 -977 0.0227401256561279 0.0200000000000102 0.0200000000000102 0.0 977 -978 0.0255289077758789 0.019999999999996 0.019999999999996 0.0 978 -979 0.0238900184631348 0.0300000000000011 0.0300000000000011 0.0 979 -980 0.0224909782409668 0.019999999999996 0.019999999999996 0.0 980 -981 0.0223910808563232 0.019999999999996 0.019999999999996 0.0 981 -982 0.0473268032073975 0.0499999999999972 0.0499999999999972 0.0 982 -983 0.0227880477905273 0.0200000000000102 0.0200000000000102 0.0 983 -984 0.0226118564605713 0.0300000000000011 0.0300000000000011 0.0 984 -985 0.0223948955535889 0.019999999999996 0.019999999999996 0.0 985 -986 0.0223472118377686 0.019999999999996 0.019999999999996 0.0 986 -987 0.0237748622894287 0.0200000000000102 0.0200000000000102 0.0 987 -988 0.0564570426940918 0.0499999999999972 0.0499999999999972 0.0 988 -989 0.0229530334472656 0.0200000000000102 0.0200000000000102 0.0 989 -990 0.0226871967315674 0.0300000000000011 0.0300000000000011 0.0 990 -991 0.0234870910644531 0.019999999999996 0.019999999999996 0.0 991 -992 0.0224900245666504 0.019999999999996 0.019999999999996 0.0 992 -993 0.0224850177764893 0.0300000000000011 0.0300000000000011 0.0 993 -994 0.0470020771026611 0.0400000000000063 0.0400000000000063 0.0 994 -995 0.022852897644043 0.0300000000000011 0.0300000000000011 0.0 995 -996 0.0257470607757568 0.019999999999996 0.019999999999996 0.0 996 -997 0.0236849784851074 0.0300000000000011 0.0300000000000011 0.0 997 -998 0.0226609706878662 0.019999999999996 0.019999999999996 0.0 998 -999 0.0222959518432617 0.019999999999996 0.019999999999996 0.0 999 -1000 0.0223429203033447 0.0200000000000102 0.0200000000000102 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log deleted file mode 100644 index 1d42e63d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkPure.log +++ /dev/null @@ -1,262 +0,0 @@ -========================== 2009-04-01T16:50:52 CEST =========================== -Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux]. -Running 'GeneratorBenchmarkPure' for 1000 iterations/method (compare_time=real) -=============================================================================== - -This first run is only for warmup. -GeneratorBenchmarkPure#generator_pretty: - real total user system -sum 27.356301069 27.380000000 27.370000000 0.010000000 -min 0.022372007 0.020000000 0.020000000 0.000000000 -std- 0.018178834 0.017248947 0.017256376 -0.000306228 -mean 0.027356301 0.027380000 0.027370000 0.000010000 -std+ 0.036533768 0.037511053 0.037483624 0.000326228 -max 0.059602976 0.060000000 0.060000000 0.010000000 -std 0.009177467 0.010131053 0.010113624 0.000316228 -std% 33.547909026 37.001655096 36.951493429 3162.277660168 -harm 0.025499974 0.024719842 0.024716787 nan -geo 0.026258699 0.025883656 0.025877881 0.000000000 -q1 0.023006916 0.020000000 0.020000000 0.000000000 -med 0.023234129 0.020000000 0.020000000 0.000000000 -q3 0.024879038 0.030000000 0.030000000 0.000000000 - 1000 36.55465 0.027356301 - calls calls/sec secs/call - - 0.05774 -| - 0.05402 -|* - 0.05030 -|**** - 0.04657 -|*** - 0.04285 -| - 0.03913 -| - 0.03540 -| - 0.03168 -|* - 0.02796 -|*** - 0.02423 -|************************************************** - -Outliers detected with box plot algo (median=0.02323, iqr=0.00187, factor=3.00): -high=72 very_high=150 - -Ljung-Box statistics: q=3705.61130 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -GeneratorBenchmarkPure#generator_pretty: - real total user system -sum 27.569372892 27.540000000 27.530000000 0.010000000 -min 0.022536039 0.020000000 0.020000000 0.000000000 -std- 0.018335894 0.017329581 0.017326902 -0.000306228 -mean 0.027569373 0.027540000 0.027530000 0.000010000 -std+ 0.036802852 0.037750419 0.037733098 0.000326228 -max 0.056230068 0.060000000 0.060000000 0.010000000 -std 0.009233479 0.010210419 0.010203098 0.000316228 -std% 33.491797772 37.074868658 37.061742557 3162.277660168 -harm 0.025675439 0.024841635 0.024836493 nan -geo 0.026453993 0.026024721 0.026017235 0.000000000 -q1 0.023056030 0.020000000 0.020000000 0.000000000 -med 0.023363113 0.020000000 0.020000000 0.000000000 -q3 0.025253892 0.030000000 0.030000000 0.000000000 - 1000 36.27213 0.027569373 - calls calls/sec secs/call - - 0.05455 -|* - 0.05118 -|** - 0.04781 -|****** - 0.04444 -| - 0.04107 -| - 0.03770 -| - 0.03433 -| - 0.03096 -|* - 0.02759 -|***** - 0.02422 -|************************************************** - -Outliers detected with box plot algo (median=0.02336, iqr=0.00220, factor=3.00): -high=67 very_high=148 - -Ljung-Box statistics: q=3212.48820 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -------------------------------------------------------------------------------- - -This first run is only for warmup. -GeneratorBenchmarkPure#generator_safe: - real total user system -sum 26.869803667 26.870000000 26.870000000 0.000000000 -min 0.022134781 0.020000000 0.020000000 0.000000000 -std- 0.017763505 0.016750439 0.016750439 0.000000000 -mean 0.026869804 0.026870000 0.026870000 0.000000000 -std+ 0.035976103 0.036989561 0.036989561 0.000000000 -max 0.054952860 0.060000000 0.060000000 0.000000000 -std 0.009106299 0.010119561 0.010119561 0.000000000 -std% 33.890455748 37.661185483 37.661185483 nan -harm 0.024986876 0.024236549 0.024236549 nan -geo 0.025759291 0.025373850 0.025373850 0.000000000 -q1 0.022480011 0.020000000 0.020000000 0.000000000 -med 0.022669554 0.020000000 0.020000000 0.000000000 -q3 0.024562180 0.030000000 0.030000000 0.000000000 - 1000 37.21650 0.026869804 - calls calls/sec secs/call - - 0.05331 -|* - 0.05003 -|** - 0.04675 -|******* - 0.04347 -| - 0.04018 -| - 0.03690 -| - 0.03362 -| - 0.03034 -|* - 0.02706 -|**** - 0.02378 -|************************************************** - -Outliers detected with box plot algo (median=0.02267, iqr=0.00208, factor=3.00): -high=77 very_high=149 - -Ljung-Box statistics: q=3100.69443 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -GeneratorBenchmarkPure#generator_safe: - real total user system -sum 27.079979420 27.040000000 27.030000000 0.010000000 -min 0.022160053 0.020000000 0.020000000 0.000000000 -std- 0.017839790 0.016756803 0.016774061 -0.000306228 -mean 0.027079979 0.027040000 0.027030000 0.000010000 -std+ 0.036320169 0.037323197 0.037285939 0.000326228 -max 0.056457043 0.060000000 0.060000000 0.010000000 -std 0.009240189 0.010283197 0.010255939 0.000316228 -std% 34.121847738 38.029575352 37.942800504 3162.277660168 -harm 0.025134510 0.024331887 0.024329914 nan -geo 0.025935574 0.025501913 0.025497264 0.000000000 -q1 0.022511005 0.020000000 0.020000000 0.000000000 -med 0.022763968 0.020000000 0.020000000 0.000000000 -q3 0.024686873 0.030000000 0.030000000 0.000000000 - 1000 36.92765 0.027079979 - calls calls/sec secs/call - - 0.05474 -| - 0.05131 -|* - 0.04788 -|******** - 0.04445 -| - 0.04102 -| - 0.03759 -| - 0.03416 -| - 0.03073 -|* - 0.02730 -|*** - 0.02387 -|************************************************** - -Outliers detected with box plot algo (median=0.02276, iqr=0.00218, factor=3.00): -high=53 very_high=158 - -Ljung-Box statistics: q=3263.81737 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -------------------------------------------------------------------------------- - -This first run is only for warmup. -GeneratorBenchmarkPure#generator_fast: - real total user system -sum 19.930217266 19.900000000 19.900000000 0.000000000 -min 0.015556812 0.010000000 0.010000000 0.000000000 -std- 0.010984683 0.009865525 0.009865525 0.000000000 -mean 0.019930217 0.019900000 0.019900000 0.000000000 -std+ 0.028875752 0.029934475 0.029934475 0.000000000 -max 0.048508883 0.050000000 0.050000000 0.000000000 -std 0.008945535 0.010034475 0.010034475 0.000000000 -std% 44.884280314 50.424498030 50.424498030 nan -harm 0.017806422 0.016056519 0.016056519 nan -geo 0.018618502 0.017792091 0.017792091 0.000000000 -q1 0.015833676 0.010000000 0.010000000 0.000000000 -med 0.016059995 0.020000000 0.020000000 0.000000000 -q3 0.016686678 0.020000000 0.020000000 0.000000000 - 1000 50.17507 0.019930217 - calls calls/sec secs/call - - 0.04686 -| - 0.04357 -|** - 0.04027 -|****** - 0.03698 -| - 0.03368 -| - 0.03039 -| - 0.02709 -| - 0.02379 -|* - 0.02050 -|** - 0.01720 -|************************************************** - -Outliers detected with box plot algo (median=0.01606, iqr=0.00085, factor=3.00): -high=46 very_high=180 - -Ljung-Box statistics: q=3486.59836 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -GeneratorBenchmarkPure#generator_fast: - real total user system -sum 20.008520842 19.960000000 19.950000000 0.010000000 -min 0.015434027 0.010000000 0.010000000 0.000000000 -std- 0.010882230 0.009581845 0.009596030 -0.000306228 -mean 0.020008521 0.019960000 0.019950000 0.000010000 -std+ 0.029134812 0.030338155 0.030303970 0.000326228 -max 0.047976971 0.050000000 0.050000000 0.010000000 -std 0.009126291 0.010378155 0.010353970 0.000316228 -std% 45.612021047 51.994765712 51.899601404 3162.277660168 -harm 0.017787111 0.015944725 0.015943454 nan -geo 0.018637889 0.017737808 0.017733851 0.000000000 -q1 0.015746295 0.010000000 0.010000000 0.000000000 -med 0.015944481 0.020000000 0.020000000 0.000000000 -q3 0.016811609 0.020000000 0.020000000 0.000000000 - 1000 49.97871 0.020008521 - calls calls/sec secs/call - - 0.04635 -|* - 0.04310 -|** - 0.03984 -|******* - 0.03659 -| - 0.03333 -| - 0.03008 -| - 0.02682 -| - 0.02357 -| - 0.02032 -|*** - 0.01706 -|************************************************** - -Outliers detected with box plot algo (median=0.01594, iqr=0.00107, factor=3.00): -high=64 very_high=166 - -Ljung-Box statistics: q=2965.93220 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -========================== 2009-04-01T16:53:33 CEST =========================== - -Comparing times (call_time_mean): - 1 GeneratorBenchmarkPure#generator_fast 1000 repeats: - 49.978706968 ( real) -> 1.378x - 0.020008521 - 2 GeneratorBenchmarkPure#generator_safe 1000 repeats: - 36.927649925 ( real) -> 1.018x 3 (>=3859) - 0.027079979 - 3 GeneratorBenchmarkPure#generator_pretty 1000 repeats: - 36.272134441 ( real) -> 1.000x 2 (>=3859) - 0.027569373 - calls/sec ( time) -> speed covers - secs/call - -Comparing times (call_time_median): - 1 GeneratorBenchmarkPure#generator_fast 1000 repeats: - 62.717626652 ( real) -> 1.465x - 0.015944481 - 2 GeneratorBenchmarkPure#generator_safe 1000 repeats: - 43.929073409 ( real) -> 1.026x 3 (>=3859) - 0.022763968 - 3 GeneratorBenchmarkPure#generator_pretty 1000 repeats: - 42.802514491 ( real) -> 1.000x 2 (>=3859) - 0.023363113 - calls/sec ( time) -> speed covers - secs/call -=============================================================================== -Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_pretty.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_pretty-autocorrelation.dat'. -Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_safe.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_safe-autocorrelation.dat'. -Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_fast.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkPure#generator_fast-autocorrelation.dat'. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat deleted file mode 100644 index 8817d651..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.0465724627546347 -3 -0.0538491011993629 -4 -0.0538837516678858 -5 -0.0581087152880847 -6 -0.0572986418232159 -7 -0.0599999756465123 -8 -0.068646253651936 -9 -0.0748373181827194 -10 -0.0762302382502274 -11 -0.0698190157504385 -12 -0.0638026172211339 -13 -0.056269249634719 -14 -0.0567327382445349 -15 -0.0596771394790282 -16 -0.054002423139168 -17 -0.0490317335722634 -18 0.461538736857567 -19 0.45915885478734 -20 -0.0465031134094806 -21 -0.0522729893812941 -22 -0.0556508820670087 -23 -0.0550082280116714 -24 -0.0545719306525113 -25 -0.0657168876641937 -26 -0.0693857874047984 -27 -0.0792986072802413 -28 -0.0733338236920328 -29 -0.0654333815670565 -30 -0.0571917436864775 -31 -0.0526717459233624 -32 -0.0557521787108153 -33 -0.0549975758505058 -34 -0.0517415749303995 -35 0.0235297603781655 -36 0.804189593789118 -37 0.0278204967070628 -38 -0.050024141489799 -39 -0.0518095926145569 -40 -0.0452419084747306 -41 -0.0508505065460828 -42 -0.0630761219578647 -43 -0.062815338541251 -44 -0.0772705590073707 -45 -0.0729125138410514 -46 -0.0718320579999123 -47 -0.0607354760752678 -48 -0.0537362276786008 -49 -0.0486777895346357 -50 -0.0554247873222313 -51 -0.0511645855928409 -52 -0.0466004298363093 -53 0.459873350367521 -54 0.424472275070108 -55 -0.0487047547824375 -56 -0.0545283173980978 -57 -0.0480870048405532 -58 -0.0558758950923908 -59 -0.0508952051704444 -60 -0.0620003778190341 -61 -0.0676424010473159 -62 -0.0753766989500048 -63 -0.0695341618321725 -64 -0.0663751431467297 -65 -0.0563170232338965 -66 -0.053655761264179 -67 -0.0530055660822738 -68 -0.0517420323264873 -69 -0.0456703115975304 -70 0.103335608865948 -71 0.639961232446673 -72 0.0835611643585718 -73 -0.0505874487567197 -74 -0.0544864827038179 -75 -0.05268470170316 -76 -0.0471381749128569 -77 -0.0587367141040808 -78 -0.0594188669128526 -79 -0.0650917021991912 -80 -0.068525580194848 -81 -0.0720464392408628 -82 -0.0530371585210882 -83 -0.0594974405056426 -84 -0.0468462249568105 -85 -0.0556729861678099 -86 -0.0486685569511801 -87 -0.0231831809211586 -88 0.412151261252192 -89 0.427286596751845 -90 -0.0468484487476343 -91 -0.0513065750413643 -92 -0.0506460103589642 -93 -0.0523040710285122 -94 -0.0553864194240335 -95 -0.0624298273708398 -96 -0.0629408163122051 -97 -0.0704192947779158 -98 -0.0661863417422444 -99 -0.0616198727092325 -100 -0.0549440862832691 -101 -0.0493100463446785 -102 -0.0513058903561152 -103 -0.0546567629566328 -104 -0.0447767089062448 -105 0.155994950171604 -106 0.499983838989633 -107 0.146752854694195 -108 -0.0499527760238258 -109 -0.0481994338837686 -110 -0.0507971256336303 -111 -0.053242725247733 -112 -0.0556340421399292 -113 -0.0659043126583437 -114 -0.0664898553672703 -115 -0.0623446272778118 -116 -0.0661076782182718 -117 -0.0496402401287781 -118 -0.0494603231236963 -119 -0.04785210230028 -120 -0.0549514395062738 -121 -0.0457893865901791 -122 0.0107718727916323 -123 0.354591871972286 -124 0.378214524188427 -125 -0.00576473785992366 -126 -0.0475263414095933 -127 -0.0467032507959455 -128 -0.0492439340398371 -129 -0.0553725291795042 -130 -0.0588373348224932 -131 -0.0653802923166691 -132 -0.065420878560692 -133 -0.0664825458346486 -134 -0.0585794787867471 -135 -0.0526654847715212 -136 -0.0458834268571694 -137 -0.0488834733479998 -138 -0.0484626462105708 -139 -0.0459832096817391 -140 0.217115969208045 -141 0.366645152379531 -142 0.180037374351014 -143 -0.0470069302868867 -144 -0.0448016085636167 -145 -0.0480964372087658 -146 -0.047581587974722 -147 -0.0542737921731714 -148 -0.0616712591015281 -149 -0.0645264998964167 -150 -0.0660893063296893 -151 -0.0626040533901412 -152 -0.0563401748225009 -153 -0.0489872324179382 -154 -0.0416660137613489 -155 -0.0474153625982119 -156 -0.0429322203344692 -157 0.0758981518142605 -158 0.280022168317631 -159 0.322388389335567 -160 0.029741268314489 -161 -0.0477650431020993 -162 -0.0450492975581489 -163 -0.0437136320420844 -164 -0.0525847472537078 -165 -0.0545773291954165 -166 -0.0605617971026816 -167 -0.0604174493574271 -168 -0.0668887082049361 -169 -0.0569988719330788 -170 -0.0531317736158737 -171 -0.0453847330038626 -172 -0.0478811645968217 -173 -0.0490973206952072 -174 -0.0208865958962374 -175 0.219799921570466 -176 0.281455499801039 -177 0.217413022569843 -178 -0.0472411753883375 -179 -0.0420519413404592 -180 -0.0503599257085886 -181 -0.0460149167014056 -182 -0.0525935089624673 -183 -0.058565014679309 -184 -0.0597480380605469 -185 -0.0594067588886417 -186 -0.0596129671442577 -187 -0.0532084985745771 -188 -0.0488672523172161 -189 -0.0467425993035773 -190 -0.047469398929737 -191 -0.0478812995202321 -192 0.113496325641223 -193 0.235261527843186 -194 0.274288512637064 -195 0.0686558749507578 -196 -0.0421890074761181 -197 -0.0462774420288975 -198 -0.0436343780463106 -199 -0.0526745158526506 -200 -0.0530085997416379 -201 -0.0595766365030657 -202 -0.0527520859095327 -203 -0.0617844575573737 -204 -0.0533732516707478 -205 -0.0475406344908671 -206 -0.0448557657939025 -207 -0.0491813452587493 -208 -0.0465215540303466 -209 0.0129885978681198 -210 0.18048531357979 -211 0.232613590605931 -212 0.216739579303611 -213 -0.0198642765598399 -214 -0.0414628173858397 -215 -0.0446070145491157 -216 -0.0466847454519845 -217 -0.0516226742873491 -218 -0.0545361970917439 -219 -0.0613148091516843 -220 -0.055072960413915 -221 -0.0570761596774525 -222 -0.0495753919838192 -223 -0.044640513821499 -224 -0.0405018327822807 -225 -0.0466702636420172 -226 -0.0430523088898141 -227 0.125260003795363 -228 0.191674753632075 -229 0.237532651857125 -230 0.0874635279713366 -231 -0.0384027504022232 -232 -0.0385130011851906 -233 -0.0369193020542282 -234 -0.0515458512947041 -235 -0.050306447453753 -236 -0.0581741159838659 -237 -0.052999201910556 -238 -0.0589658237786291 -239 -0.0514526377102802 -240 -0.0466869399159385 -241 -0.0380841759966984 -242 -0.0453267873931886 -243 -0.0425000608264673 -244 0.0366267109959152 -245 0.160369979130273 -246 0.196676462412679 -247 0.196963399648668 -248 -0.00269284361330376 -249 -0.0432567847711532 -250 -0.038260742578146 -251 -0.0448624744088596 -252 -0.0455503391926038 -253 -0.0532191861758754 -254 -0.0548508398385335 -255 -0.0555442566058335 -256 -0.0526918597919155 -257 -0.0496453707825256 -258 -0.0463836479193388 -259 -0.0379199031664589 -260 -0.043979755952542 -261 -0.0385836044654481 -262 0.148383243382033 -263 0.160888203514488 -264 0.201083269668142 -265 0.101463931607865 -266 -0.0389240581250844 -267 -0.043318710806698 -268 -0.0360099743646708 -269 -0.0479594556724686 -270 -0.0461272027080179 -271 -0.0510551768794275 -272 -0.0463026057033333 -273 -0.0586300566668458 -274 -0.0481537987530518 -275 -0.0467240944281063 -276 -0.0388278648519038 -277 -0.0438740084909164 -278 -0.0404201849366918 -279 0.0573087818198142 -280 0.149625568374594 -281 0.165251996461555 -282 0.180497909191808 -283 0.0141274252706337 -284 -0.0433910523077124 -285 -0.0353327138881179 -286 -0.04407012419326 -287 -0.0472875341495554 -288 -0.0500154039913527 -289 -0.0489059070454218 -290 -0.0523175481803876 -291 -0.0483438070974799 -292 -0.0465391341735897 -293 -0.0443706893358358 -294 -0.0383212232736209 -295 -0.0439923509231612 -296 -0.0179530530333497 -297 0.126953953852207 -298 0.148073497780274 -299 0.169463284775491 -300 0.12460981401008 -301 -0.0384433337210392 -302 -0.037574676038055 -303 -0.0373312294892246 -304 -0.0476939816787347 -305 -0.0485476034606885 -306 -0.053203479537681 -307 -0.0432695529453645 -308 -0.0531581165281506 -309 -0.0433332891054256 -310 -0.0406621361812071 -311 -0.0336785273069936 -312 -0.0450892345419585 -313 -0.0372803722726718 -314 0.0747413637301572 -315 0.12838403521187 -316 0.131273451158583 -317 0.165634916670676 -318 0.0393574762093495 -319 -0.0400219462092557 -320 -0.0321130988518114 -321 -0.0426329631110547 -322 -0.0472021330054887 -323 -0.0510884361963381 -324 -0.0451526836510229 -325 -0.0497432174259365 -326 -0.0494924567626408 -327 -0.0426445357005891 -328 -0.0399977780929692 -329 -0.035075954620801 -330 -0.0398937379838232 -331 0.00141601747607724 -332 0.111237045799794 -333 0.129781753698161 -334 0.148823429538605 -335 0.111428704849097 -336 -0.0189114212837953 -337 -0.0358144500870447 -338 -0.0338893528609611 -339 -0.04156202524001 -340 -0.0476279047622513 -341 -0.0479240001912479 -342 -0.0448192129885784 -343 -0.0520619488376005 -344 -0.045398294011681 -345 -0.0425448160252897 -346 -0.0301879715513119 -347 -0.039119844953792 -348 -0.0318445060292795 -349 0.0775128927560733 -350 0.133696030929458 -351 0.0934040962894178 -352 0.165037006342042 -353 0.0370713206399436 -354 -0.0370489719027206 -355 -0.0298304751416159 -356 -0.0387994185030151 -357 -0.0425739727567155 -358 -0.0469026409069165 -359 -0.0418293150822566 -360 -0.0473273219131854 -361 -0.049308019642061 -362 -0.0433284886806794 -363 -0.0369972157525989 -364 -0.0345525347288445 -365 -0.0400585889725531 -366 0.006656467274749 -367 0.11319538432443 -368 0.114967420474613 -369 0.133840368292221 -370 0.11280046677219 -371 -0.0184103961539414 -372 -0.0339399206362434 -373 -0.0341590200213704 -374 -0.0389400741910205 -375 -0.0448588461724111 -376 -0.0447120964840124 -377 -0.0401284599190171 -378 -0.0470280445927007 -379 -0.0439972690249817 -380 -0.0392994644400358 -381 -0.0331443114964012 -382 -0.0396320099995872 -383 -0.0357237280973228 -384 0.0769794799672965 -385 0.121101405134608 -386 0.100303300798787 -387 0.149213747230628 -388 0.0412712734968881 -389 -0.034428474543572 -390 -0.0309853686271892 -391 -0.037127802798713 -392 -0.0410862385400477 -393 -0.0446683655260938 -394 -0.0377779019366912 -395 -0.0432145550363202 -396 -0.0438865867392626 -397 -0.0397741719725851 -398 -0.0337532454079572 -399 -0.0345799482263535 -400 -0.0387855235790556 -401 0.0042952586621399 -402 0.114260797874283 -403 0.0962185400570627 -404 0.116302086694965 -405 0.116848660126361 -406 -0.0132599069767382 -407 -0.0326838372412273 -408 -0.031676894325753 -409 -0.0359544345578842 -410 -0.0430939231188687 -411 -0.0427909313399572 -412 -0.0392589148284163 -413 -0.0430139521930403 -414 -0.0405058980200932 -415 -0.0359005384516355 -416 -0.0297289315488662 -417 -0.0346787823837342 -418 -0.0332184590996983 -419 0.0771309823574169 -420 0.0954831808563938 -421 0.0986580814637101 -422 0.132204221810988 -423 0.0432995539287995 -424 -0.0282150289086581 -425 -0.0254088298731916 -426 -0.035952142901876 -427 -0.037552626088304 -428 -0.0405520090843967 -429 -0.0395737434856001 -430 -0.0415264891793749 -431 -0.0396875191674724 -432 -0.0384740880698292 -433 -0.0302213018176337 -434 -0.0302192627628463 -435 -0.0348307323662469 -436 0.00857082219058242 -437 0.113991981123305 -438 0.0810743348982558 -439 0.0970584251304922 -440 0.115026168034471 -441 -0.0130244881629081 -442 -0.0292031219799078 -443 -0.0308836212065116 -444 -0.0320575360367349 -445 -0.0393235092139189 -446 -0.0404817406521166 -447 -0.0375499698943704 -448 -0.0391450519157927 -449 -0.0397015347530508 -450 -0.0341587808934071 -451 -0.0310633384201306 -452 -0.0298881734250907 -453 -0.0295664081324632 -454 0.0805186281243404 -455 0.0833481690834954 -456 0.100864427083124 -457 0.111048128125141 -458 0.0464738054146592 -459 -0.0349995254836163 -460 -0.0255159736923953 -461 -0.0328764364137298 -462 -0.0338236112511505 -463 -0.0346782988250705 -464 -0.0340726935148046 -465 -0.0404234701095829 -466 -0.0356824878052483 -467 -0.0365578629303766 -468 -0.0324733709193554 -469 -0.0289648187856306 -470 -0.0320583632447268 -471 0.0109080362038411 -472 0.11757782076319 -473 0.0695324086716044 -474 0.079135520981604 -475 0.117166513712611 -476 -0.0107597842046391 -477 -0.0317910056255559 -478 -0.027713154753877 -479 -0.0328896799629515 -480 -0.0351148398263727 -481 -0.0367274328131775 -482 -0.0364350706943765 -483 -0.0352358798451258 -484 -0.0349817805140066 -485 -0.0341765926002117 -486 -0.0295770684618762 -487 -0.0265724708520466 -488 -0.0307810244464994 -489 0.0809894603579388 -490 0.0657550565427912 -491 0.106121880875152 -492 0.0974533505603275 -493 0.048238583810636 -494 -0.0288751879183889 -495 -0.0278787597095273 -496 -0.0337889205336922 -497 -0.0310688626579132 -498 -0.0384449649057626 -499 -0.0323682085966455 -500 -0.0361594385992874 -501 -0.0307937097313911 -502 -0.0313341566221988 -503 -0.0279856067641256 -504 -0.0289346840813807 -505 -0.0274872799690336 -506 0.00966555565940951 -507 0.0987720472362742 -508 0.0693890261403234 -509 0.0836756922797179 -510 0.10281770126579 -511 -0.00727787007831376 -512 -0.0258225019587932 -513 -0.0298502698700326 -514 -0.0306103473329238 -515 -0.0340826155989302 -516 -0.0355383371718098 -517 -0.0332157070791453 -518 -0.0354738192624273 -519 -0.0294010470848171 -520 -0.0310021513905682 -521 -0.0278235052216282 -522 -0.0239204460552095 -523 -0.0270969544256545 -524 0.0813764246127106 -525 0.0493102023473518 -526 0.104517332044244 -527 0.0811860139474904 -528 0.0510442031887192 -529 -0.0263637770970907 -530 -0.024755257304 -531 -0.0293388219300537 -532 -0.030007512828798 -533 -0.0323871465584352 -534 -0.0326780116025662 -535 -0.0374203204825225 -536 -0.0287231615177231 -537 -0.0332054768516264 -538 -0.0263051872864467 -539 -0.0243639277620771 -540 -0.023684344033898 -541 0.0142647324079813 -542 0.08574245660666 -543 0.0666795058595027 -544 0.0869761334698767 -545 0.0822018389405922 -546 -0.00295335814304317 -547 -0.0235452895911804 -548 -0.0281420988182953 -549 -0.0274120947938358 -550 -0.030158448744077 -551 -0.0295591560556766 -552 -0.0349368577359752 -553 -0.0326892340430509 -554 -0.0288806796544796 -555 -0.0295906146661126 -556 -0.0255785772166513 -557 -0.0247509384838002 -558 -0.0232231373627232 -559 0.0658724153140723 -560 0.0712698072158692 -561 0.0881661970571259 -562 0.0663434329796159 -563 0.0504442196817487 -564 -0.0220475381031792 -565 -0.0264520763210997 -566 -0.0262681630778278 -567 -0.0288120090469048 -568 -0.0292045667237407 -569 -0.0288062681932496 -570 -0.0330307486178301 -571 -0.0276514157813042 -572 -0.0268575483268837 -573 -0.0286764091398958 -574 -0.0281163961143271 -575 -0.0228693014048811 -576 0.0137045823052654 -577 0.0708633033596918 -578 0.0727744765379734 -579 0.0901470435080371 -580 0.0668755655920324 -581 -0.000653685262202251 -582 -0.0226994101946291 -583 -0.0270858316982201 -584 -0.0262718617327352 -585 -0.0265543856920115 -586 -0.0263771846461291 -587 -0.0319210552186977 -588 -0.029228183377507 -589 -0.0253777881177648 -590 -0.023809668956424 -591 -0.0280707574473553 -592 -0.0236140212549248 -593 -0.0228812657345804 -594 0.0486286781379677 -595 0.0898094414635747 -596 0.0508172134123107 -597 0.0901627351364118 -598 0.035844991775818 -599 -0.0203954379453198 -600 -0.0236862766959248 -601 -0.0247764225976876 -602 -0.0268581954253402 -603 -0.024001323229557 -604 -0.0303209729182735 -605 -0.0282931887611187 -606 -0.0292448557436288 -607 -0.0204578421032432 -608 -0.0248481591188926 -609 -0.0243082585401647 -610 -0.0203058655309834 -611 0.0139804741022989 -612 0.0505962449646704 -613 0.0690065939226321 -614 0.0907008020619833 -615 0.0519895469381193 -616 0.00206395484186643 -617 -0.0179281261622168 -618 -0.0227541776038619 -619 -0.0257149623750039 -620 -0.0221474812173537 -621 -0.0258958495203968 -622 -0.0291821476071184 -623 -0.0275173183668531 -624 -0.0219475947671766 -625 -0.0205864860149524 -626 -0.025198699283959 -627 -0.0196801475213126 -628 -0.0202813022751003 -629 0.0348753757737052 -630 0.0886744284826022 -631 0.0510351034421101 -632 0.0895415054055807 -633 0.0164865165554748 -634 -0.015820890351599 -635 -0.0235475303149806 -636 -0.0213487610196947 -637 -0.0223199871320358 -638 -0.0232883343131998 -639 -0.0272670686256873 -640 -0.0272994728260666 -641 -0.0251308147365066 -642 -0.0178939045831991 -643 -0.0228455395566411 -644 -0.0221674583093893 -645 -0.0181323711670327 -646 -0.000452057490636536 -647 0.0730003371658734 -648 0.0526039790662623 -649 0.0893120555725861 -650 0.0370376391850216 -651 -0.00089235639136826 -652 -0.0187548356986865 -653 -0.0202476722666913 -654 -0.0234402686094643 -655 -0.0176944079943485 -656 -0.0217419932421246 -657 -0.0252856528727102 -658 -0.0266563306764344 -659 -0.0179448089254929 -660 -0.0195530157887301 -661 -0.0242694989687706 -662 -0.0190898174037584 -663 -0.0162971087662526 -664 0.0190291931578508 -665 0.0920040569420149 -666 0.0547776230200262 -667 0.092519718174194 -668 -0.00323187468810452 -669 -0.0159810677640527 -670 -0.0185314129082898 -671 -0.0214996968543122 -672 -0.0209394743431591 -673 -0.0193460621057047 -674 -0.0257496298508357 -675 -0.0234878155623851 -676 -0.0215154679548733 -677 -0.0168154166505892 -678 -0.019623012738795 -679 -0.0222731795719489 -680 -0.0150548901993986 -681 -0.0172527061580013 -682 0.0747183966470148 -683 0.0721393781132992 -684 0.0565213941535672 -685 0.0565389116679803 -686 -0.0148388383909541 -687 -0.0189549593111703 -688 -0.0194161863407717 -689 -0.0197915076545455 -690 -0.0204244077381793 -691 -0.0218016316407433 -692 -0.0214645015602913 -693 -0.0238079641007921 -694 -0.0139629684168808 -695 -0.0156538895936235 -696 -0.021079456852115 -697 -0.0181418459552329 -698 -0.0145711876585601 -699 0.021215272535226 -700 0.0739558887973388 -701 0.0544658986157784 -702 0.0807341348823958 -703 -0.000188368345643536 -704 -0.0129199941327641 -705 -0.0180368997395347 -706 -0.0177692127800531 -707 -0.0204829544190261 -708 -0.0186632967600099 -709 -0.0204496056760325 -710 -0.023317274857146 -711 -0.0203774310283799 -712 -0.0136747501938559 -713 -0.0178116490297146 -714 -0.0189587954269383 -715 -0.0118858609089409 -716 -0.0172514569604997 -717 0.060802565704854 -718 0.0729937005677284 -719 0.0561951789698019 -720 0.042100568116198 -721 -0.0145015528092692 -722 -0.015700955312727 -723 -0.0167874521751816 -724 -0.0157176826421741 -725 -0.01783312467466 -726 -0.0220309477451877 -727 -0.0206302592507727 -728 -0.0200916933627863 -729 -0.0188778418069578 -730 -0.0113708982542668 -731 -0.0176778219523296 -732 -0.014843868366855 -733 -0.0112296460883651 -734 0.0256322345958098 -735 0.0560052205819785 -736 0.0568640232132456 -737 0.0611881586473825 -738 0.00379039852134298 -739 -0.0104730174558681 -740 -0.0164262606347393 -741 -0.0144022889870097 -742 -0.0168139620706729 -743 -0.0162615811333726 -744 -0.0196477371337629 -745 -0.0198824745918442 -746 -0.0192330305226495 -747 -0.012843462564526 -748 -0.0132891104080353 -749 -0.0181808023489715 -750 -0.0130545167379928 -751 -0.0113910229689613 -752 0.041990539641635 -753 0.0763855238906953 -754 0.0594251709620633 -755 0.0243609283015674 -756 -0.011509575108219 -757 -0.0130005756539877 -758 -0.0150890385548497 -759 -0.0139673203815592 -760 -0.0157156335728081 -761 -0.0186682466883542 -762 -0.0185554927618856 -763 -0.0162755018147282 -764 -0.0154200664197001 -765 -0.0134500863696249 -766 -0.014171081512106 -767 -0.0144636296247257 -768 -0.0126931065239486 -769 0.00886491087382969 -770 0.0582642578199214 -771 0.0786546867228701 -772 0.0272306482046141 -773 0.00822579495183492 -774 -0.011517390916366 -775 -0.0139592957633573 -776 -0.0129421565517047 -777 -0.0134986559471086 -778 -0.0136304589585504 -779 -0.0173438393070116 -780 -0.016064531677406 -781 -0.0152510664062614 -782 -0.0101822066131621 -783 -0.0130099394643087 -784 -0.0150897101751983 -785 -0.0121547232260943 -786 -0.0117824571975702 -787 0.0242515574526126 -788 0.0773173900249155 -789 0.061635146281499 -790 0.00959030625397352 -791 -0.0090693872805306 -792 -0.0112081729509553 -793 -0.0138649594742307 -794 -0.010084978733244 -795 -0.0132143360704552 -796 -0.01496302977637 -797 -0.0164140720480332 -798 -0.0137826264017484 -799 -0.0128738607141167 -800 -0.0108179181287105 -801 -0.0114389768189071 -802 -0.0115710434341599 -803 -0.00965025893918617 -804 -0.0135132422793313 -805 0.0617365766920115 -806 0.0779699523399871 -807 0.0247967756220761 -808 -0.0065090662747984 -809 -0.00857892822230665 -810 -0.0101662607994292 -811 -0.0108507653686812 -812 -0.00958246558520002 -813 -0.0144516907622999 -814 -0.0150147299589262 -815 -0.0135220759135818 -816 -0.0115211008118439 -817 -0.0104021106108387 -818 -0.00780776429502702 -819 -0.011404849912357 -820 -0.00951333011434902 -821 -0.00938572506372878 -822 0.0266216133025957 -823 0.0610181017554806 -824 0.0438869371591075 -825 0.00859504869317741 -826 -0.00699743519150731 -827 -0.00929600314682341 -828 -0.0111911531783819 -829 -0.00823625897932562 -830 -0.0100913686286367 -831 -0.0125756643002852 -832 -0.0152602353555104 -833 -0.00953260529007071 -834 -0.0100594605441607 -835 -0.00871459443751229 -836 -0.00938155933764076 -837 -0.00918618283897082 -838 -0.00755980106901216 -839 -0.0107245855066125 -840 0.0458486876264972 -841 0.0824090055093124 -842 0.00574421553061521 -843 -0.00725667517287379 -844 -0.00867494223043522 -845 -0.00829285117321785 -846 -0.00957414187855957 -847 -0.00659032223177494 -848 -0.0106624401215929 -849 -0.0122427759092887 -850 -0.0104622099267244 -851 -0.00799623147718296 -852 -0.0104382420530796 -853 -0.0075668223790859 -854 -0.00621892353946098 -855 -0.00836920759535837 -856 -0.00630014552985234 -857 0.0113479974095218 -858 0.0628686123242055 -859 0.0463260384468626 -860 -0.00865830449867469 -861 -0.00632533057369849 -862 -0.00620405394762857 -863 -0.00876475527943431 -864 -0.00910265771371557 -865 -0.00714690863853632 -866 -0.0103958026182488 -867 -0.0121633888743942 -868 -0.00676196610841381 -869 -0.00714452896204837 -870 -0.00679873891573572 -871 -0.00845680011347619 -872 -0.00625057507944579 -873 -0.00606839813409962 -874 -0.00725859558269772 -875 0.0281965759233777 -876 0.0670260741629087 -877 0.00963490036467712 -878 -0.00456245837151462 -879 -0.00755131292428571 -880 -0.00586747799683473 -881 -0.00783299131040265 -882 -0.00744370954110726 -883 -0.00915087240687255 -884 -0.00957213417268418 -885 -0.00832361596391925 -886 -0.0050340090260566 -887 -0.00755295159414475 -888 -0.00495117481094215 -889 -0.00424086001593403 -890 -0.00515343444584415 -891 -0.00744099299381077 -892 -0.00696188041633924 -893 0.0670358828192865 -894 0.0306555670430617 -895 -0.00700188318283173 -896 -0.00439483158228684 -897 -0.00440309654475794 -898 -0.00580106920715627 -899 -0.00743386431878525 -900 -0.00615300126683845 -901 -0.00852083652339179 -902 -0.00801483743475307 -903 -0.0074130347068713 -904 -0.00363565987760851 -905 -0.007955033309064 -906 -0.00193305784421065 -907 -0.0041800577189778 -908 -0.00353565656672481 -909 -0.0058551774732522 -910 0.0302595657677451 -911 0.0314102314562899 -912 0.013212750015713 -913 -0.00316630844923298 -914 -0.00520479906156008 -915 -0.00420739410816969 -916 -0.00564901350096342 -917 -0.00531128324885506 -918 -0.00606089198821065 -919 -0.00772996050306375 -920 -0.00676594704104744 -921 -0.00533751850001158 -922 -0.0058222391965106 -923 -0.00590469211682123 -924 -0.00139624368550244 -925 -0.00225770557975624 -926 -0.00430278519099915 -927 -0.00497994091066768 -928 0.0521745063047641 -929 0.0125007611461825 -930 -0.00335983528594071 -931 -0.00200633784627574 -932 -0.00192061226814783 -933 -0.00414996522579167 -934 -0.00453925170940819 -935 -0.00441610859184833 -936 -0.00487531850001996 -937 -0.00511365916811154 -938 -0.00549890284279737 -939 -0.00379682253936933 -940 -0.00404757676266654 -941 -0.00349312951783624 -942 -0.00159942004178191 -943 -0.00176952812644145 -944 -0.00366444935410891 -945 0.0162283566898874 -946 0.0320898583297591 -947 -0.00388380045409207 -948 -0.0018243911045478 -949 -0.00115125308892718 -950 -0.00149365801922153 -951 -0.00294988667592288 -952 -0.00329687293305934 -953 -0.00371267430404071 -954 -0.00407396263409427 -955 -0.00384065535263086 -956 -0.00283959971098493 -957 -0.00342824033321658 -958 -0.00321142688896053 -959 -0.00222112060678468 -960 -0.0020328615528584 -961 -0.00145605698519582 -962 -0.00287857829852364 -963 0.0183610738417914 -964 0.0154027556420478 -965 -0.00179489314871512 -966 -0.00129790436843852 -967 -0.000853980926230406 -968 -0.000666619047494671 -969 -0.00118456473308688 -970 -0.00182173221293997 -971 -0.00223763548036304 -972 -0.00250045159359336 -973 -0.00244783545512189 -974 -0.00233355012767793 -975 -0.00148662334882801 -976 -0.00109910993153004 -977 -0.00197535475727005 -978 -0.00150005492632689 -979 -0.000669782105543667 -980 -0.00133477373003284 -981 0.0173273972011934 -982 -0.00112526521664063 -983 -0.000841739351965462 -984 0.000565203827743629 -985 -0.000459312244397425 -986 -0.000418262528083788 -987 -0.000498463341452234 -988 -0.000616296957122406 -989 -0.000679296268851578 -990 -0.00084778145306077 -991 -0.000978798423497668 -992 -0.000894990113732281 -993 -0.000701461719327138 -994 -0.000511781130867642 -995 -0.000286708792038961 -996 -0.000395118651726646 -997 -0.000921290818811666 -998 -0.000781372909192289 -999 9.80848043031114e-05 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat deleted file mode 100644 index 7ed81ad3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails#generator.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.0234072208404541 0.0299999999999976 0.0299999999999976 0.0 1 -2 0.0229461193084717 0.0199999999999996 0.0199999999999996 0.0 2 -3 0.0243709087371826 0.0200000000000031 0.0200000000000031 0.0 3 -4 0.0244681835174561 0.0299999999999976 0.0299999999999976 0.0 4 -5 0.0235309600830078 0.0199999999999996 0.0199999999999996 0.0 5 -6 0.0227420330047607 0.0199999999999996 0.0199999999999996 0.0 6 -7 0.022014856338501 0.0300000000000011 0.0300000000000011 0.0 7 -8 0.0215449333190918 0.0199999999999996 0.0199999999999996 0.0 8 -9 0.0216219425201416 0.0199999999999996 0.0199999999999996 0.0 9 -10 0.0218148231506348 0.0199999999999996 0.0199999999999996 0.0 10 -11 0.0217390060424805 0.0200000000000031 0.0200000000000031 0.0 11 -12 0.0218250751495361 0.0299999999999976 0.0299999999999976 0.0 12 -13 0.0219888687133789 0.0199999999999996 0.0199999999999996 0.0 13 -14 0.021812915802002 0.0200000000000031 0.0200000000000031 0.0 14 -15 0.0244221687316895 0.0199999999999996 0.0199999999999996 0.0 15 -16 0.022874116897583 0.0299999999999976 0.0299999999999976 0.0 16 -17 0.0218498706817627 0.0199999999999996 0.0199999999999996 0.0 17 -18 0.0760290622711182 0.0700000000000003 0.0700000000000003 0.0 18 -19 0.0238790512084961 0.0300000000000011 0.0300000000000011 0.0 19 -20 0.0229480266571045 0.0199999999999996 0.0199999999999996 0.0 20 -21 0.0231330394744873 0.0199999999999996 0.0199999999999996 0.0 21 -22 0.0228769779205322 0.0300000000000011 0.0300000000000011 0.0 22 -23 0.0258219242095947 0.0199999999999996 0.0199999999999996 0.0 23 -24 0.0243449211120605 0.0300000000000011 0.0300000000000011 0.0 24 -25 0.0228381156921387 0.0199999999999996 0.0199999999999996 0.0 25 -26 0.022367000579834 0.0199999999999996 0.0199999999999996 0.0 26 -27 0.0216410160064697 0.0199999999999996 0.0199999999999996 0.0 27 -28 0.0216100215911865 0.0300000000000011 0.0300000000000011 0.0 28 -29 0.0220630168914795 0.0199999999999996 0.0199999999999996 0.0 29 -30 0.0222890377044678 0.0199999999999996 0.0199999999999996 0.0 30 -31 0.0216050148010254 0.0199999999999996 0.0199999999999996 0.0 31 -32 0.0216009616851807 0.0199999999999996 0.0199999999999996 0.0 32 -33 0.021636962890625 0.0199999999999996 0.0199999999999996 0.0 33 -34 0.0239388942718506 0.0300000000000011 0.0300000000000011 0.0 34 -35 0.021759033203125 0.0199999999999996 0.0199999999999996 0.0 35 -36 0.0811088085174561 0.0800000000000018 0.0800000000000018 0.0 36 -37 0.0229001045227051 0.0199999999999996 0.0199999999999996 0.0 37 -38 0.0228509902954102 0.0299999999999976 0.0299999999999976 0.0 38 -39 0.0228641033172607 0.0200000000000031 0.0200000000000031 0.0 39 -40 0.0229160785675049 0.0199999999999996 0.0199999999999996 0.0 40 -41 0.0227169990539551 0.0299999999999976 0.0299999999999976 0.0 41 -42 0.0228250026702881 0.0200000000000031 0.0200000000000031 0.0 42 -43 0.0261838436126709 0.0199999999999996 0.0199999999999996 0.0 43 -44 0.0234429836273193 0.0299999999999976 0.0299999999999976 0.0 44 -45 0.0215818881988525 0.0199999999999996 0.0199999999999996 0.0 45 -46 0.0215709209442139 0.0200000000000031 0.0200000000000031 0.0 46 -47 0.0215950012207031 0.0199999999999996 0.0199999999999996 0.0 47 -48 0.0215859413146973 0.0199999999999996 0.0199999999999996 0.0 48 -49 0.0217461585998535 0.0299999999999976 0.0299999999999976 0.0 49 -50 0.021589994430542 0.0200000000000031 0.0200000000000031 0.0 50 -51 0.0216829776763916 0.0199999999999996 0.0199999999999996 0.0 51 -52 0.0217359066009521 0.0199999999999996 0.0199999999999996 0.0 52 -53 0.0219109058380127 0.0199999999999996 0.0199999999999996 0.0 53 -54 0.0795738697052002 0.0799999999999983 0.0799999999999983 0.0 54 -55 0.023021936416626 0.0300000000000011 0.0300000000000011 0.0 55 -56 0.0230770111083984 0.0199999999999996 0.0199999999999996 0.0 56 -57 0.0229918956756592 0.0199999999999996 0.0199999999999996 0.0 57 -58 0.0233080387115479 0.0300000000000011 0.0300000000000011 0.0 58 -59 0.0226249694824219 0.0199999999999996 0.0199999999999996 0.0 59 -60 0.022819995880127 0.0199999999999996 0.0199999999999996 0.0 60 -61 0.0220620632171631 0.0199999999999996 0.0199999999999996 0.0 61 -62 0.0242538452148438 0.0300000000000011 0.0300000000000011 0.0 62 -63 0.0224769115447998 0.0199999999999996 0.0199999999999996 0.0 63 -64 0.0229120254516602 0.0199999999999996 0.0199999999999996 0.0 64 -65 0.0216310024261475 0.0199999999999996 0.0199999999999996 0.0 65 -66 0.0215990543365479 0.0300000000000011 0.0300000000000011 0.0 66 -67 0.0216221809387207 0.0199999999999996 0.0199999999999996 0.0 67 -68 0.0220649242401123 0.0199999999999996 0.0199999999999996 0.0 68 -69 0.0225241184234619 0.0199999999999996 0.0199999999999996 0.0 69 -70 0.0217139720916748 0.0200000000000031 0.0200000000000031 0.0 70 -71 0.0781118869781494 0.0799999999999983 0.0799999999999983 0.0 71 -72 0.0234410762786865 0.0300000000000011 0.0300000000000011 0.0 72 -73 0.0229668617248535 0.0199999999999996 0.0199999999999996 0.0 73 -74 0.0291080474853516 0.0300000000000011 0.0300000000000011 0.0 74 -75 0.0240139961242676 0.0199999999999996 0.0199999999999996 0.0 75 -76 0.0226550102233887 0.0199999999999996 0.0199999999999996 0.0 76 -77 0.0226681232452393 0.0299999999999976 0.0299999999999976 0.0 77 -78 0.0226988792419434 0.0200000000000031 0.0200000000000031 0.0 78 -79 0.0223758220672607 0.0199999999999996 0.0199999999999996 0.0 79 -80 0.0216100215911865 0.0199999999999996 0.0199999999999996 0.0 80 -81 0.0216431617736816 0.0300000000000011 0.0300000000000011 0.0 81 -82 0.0247490406036377 0.0199999999999996 0.0199999999999996 0.0 82 -83 0.023237943649292 0.0199999999999996 0.0199999999999996 0.0 83 -84 0.0217869281768799 0.0299999999999976 0.0299999999999976 0.0 84 -85 0.0216598510742188 0.0200000000000031 0.0200000000000031 0.0 85 -86 0.0217628479003906 0.0199999999999996 0.0199999999999996 0.0 86 -87 0.0218119621276855 0.0199999999999996 0.0199999999999996 0.0 87 -88 0.0217659473419189 0.0199999999999996 0.0199999999999996 0.0 88 -89 0.0768370628356934 0.0799999999999983 0.0799999999999983 0.0 89 -90 0.025317907333374 0.0200000000000031 0.0200000000000031 0.0 90 -91 0.0233399868011475 0.0299999999999976 0.0299999999999976 0.0 91 -92 0.0232961177825928 0.0199999999999996 0.0199999999999996 0.0 92 -93 0.0227580070495605 0.0199999999999996 0.0199999999999996 0.0 93 -94 0.0227789878845215 0.0300000000000011 0.0300000000000011 0.0 94 -95 0.0228569507598877 0.0199999999999996 0.0199999999999996 0.0 95 -96 0.0226337909698486 0.0199999999999996 0.0199999999999996 0.0 96 -97 0.0222299098968506 0.0300000000000011 0.0300000000000011 0.0 97 -98 0.0214722156524658 0.0199999999999996 0.0199999999999996 0.0 98 -99 0.0216591358184814 0.0199999999999996 0.0199999999999996 0.0 99 -100 0.0215888023376465 0.0199999999999996 0.0199999999999996 0.0 100 -101 0.0234711170196533 0.0200000000000031 0.0200000000000031 0.0 101 -102 0.0229098796844482 0.0299999999999976 0.0299999999999976 0.0 102 -103 0.0220291614532471 0.0199999999999996 0.0199999999999996 0.0 103 -104 0.0216660499572754 0.0199999999999996 0.0199999999999996 0.0 104 -105 0.0216059684753418 0.0200000000000031 0.0200000000000031 0.0 105 -106 0.0761630535125732 0.0799999999999983 0.0799999999999983 0.0 106 -107 0.0231220722198486 0.0199999999999996 0.0199999999999996 0.0 107 -108 0.0229330062866211 0.0199999999999996 0.0199999999999996 0.0 108 -109 0.0230400562286377 0.0300000000000011 0.0300000000000011 0.0 109 -110 0.0250980854034424 0.0199999999999996 0.0199999999999996 0.0 110 -111 0.0231518745422363 0.0300000000000011 0.0300000000000011 0.0 111 -112 0.0227048397064209 0.0199999999999996 0.0199999999999996 0.0 112 -113 0.0284969806671143 0.0300000000000011 0.0300000000000011 0.0 113 -114 0.0239260196685791 0.0199999999999996 0.0199999999999996 0.0 114 -115 0.0219199657440186 0.0199999999999996 0.0199999999999996 0.0 115 -116 0.0215260982513428 0.0199999999999996 0.0199999999999996 0.0 116 -117 0.0215198993682861 0.0300000000000011 0.0300000000000011 0.0 117 -118 0.0216398239135742 0.0199999999999996 0.0199999999999996 0.0 118 -119 0.0215740203857422 0.0199999999999996 0.0199999999999996 0.0 119 -120 0.0216050148010254 0.0199999999999996 0.0199999999999996 0.0 120 -121 0.0247631072998047 0.0300000000000011 0.0300000000000011 0.0 121 -122 0.0225539207458496 0.0199999999999996 0.0199999999999996 0.0 122 -123 0.0218660831451416 0.0199999999999996 0.0199999999999996 0.0 123 -124 0.0765988826751709 0.0799999999999983 0.0799999999999983 0.0 124 -125 0.0230319499969482 0.0199999999999996 0.0199999999999996 0.0 125 -126 0.0229179859161377 0.0200000000000031 0.0200000000000031 0.0 126 -127 0.0229899883270264 0.0299999999999976 0.0299999999999976 0.0 127 -128 0.0230929851531982 0.0199999999999996 0.0199999999999996 0.0 128 -129 0.024507999420166 0.0200000000000031 0.0200000000000031 0.0 129 -130 0.0237898826599121 0.0299999999999976 0.0299999999999976 0.0 130 -131 0.0237009525299072 0.0199999999999996 0.0199999999999996 0.0 131 -132 0.0220949649810791 0.0199999999999996 0.0199999999999996 0.0 132 -133 0.0216069221496582 0.0300000000000011 0.0300000000000011 0.0 133 -134 0.0217080116271973 0.0199999999999996 0.0199999999999996 0.0 134 -135 0.0218410491943359 0.0199999999999996 0.0199999999999996 0.0 135 -136 0.0222909450531006 0.0199999999999996 0.0199999999999996 0.0 136 -137 0.0216519832611084 0.0200000000000031 0.0200000000000031 0.0 137 -138 0.0217440128326416 0.0299999999999976 0.0299999999999976 0.0 138 -139 0.0217659473419189 0.0199999999999996 0.0199999999999996 0.0 139 -140 0.0218610763549805 0.0200000000000031 0.0200000000000031 0.0 140 -141 0.0243120193481445 0.0199999999999996 0.0199999999999996 0.0 141 -142 0.0773770809173584 0.0799999999999983 0.0799999999999983 0.0 142 -143 0.0230779647827148 0.0199999999999996 0.0199999999999996 0.0 143 -144 0.022913932800293 0.0300000000000011 0.0300000000000011 0.0 144 -145 0.0239241123199463 0.0199999999999996 0.0199999999999996 0.0 145 -146 0.0227971076965332 0.0199999999999996 0.0199999999999996 0.0 146 -147 0.0230598449707031 0.0300000000000011 0.0300000000000011 0.0 147 -148 0.0227980613708496 0.0200000000000031 0.0199999999999996 0.0 148 -149 0.0250101089477539 0.019999999999996 0.0199999999999996 0.0 149 -150 0.0231060981750488 0.0300000000000011 0.0300000000000011 0.0 150 -151 0.021589994430542 0.0200000000000031 0.0199999999999996 0.0 151 -152 0.0279331207275391 0.029999999999994 0.0299999999999976 0.0 152 -153 0.0230989456176758 0.0200000000000031 0.0200000000000031 0.0 153 -154 0.0220518112182617 0.019999999999996 0.019999999999996 0.0 154 -155 0.02158522605896 0.0200000000000031 0.0200000000000031 0.0 155 -156 0.0215890407562256 0.0300000000000011 0.0300000000000011 0.0 156 -157 0.021787166595459 0.019999999999996 0.019999999999996 0.0 157 -158 0.0218689441680908 0.0200000000000031 0.0200000000000031 0.0 158 -159 0.0797779560089111 0.0799999999999983 0.0799999999999983 0.0 159 -160 0.0232160091400146 0.0200000000000031 0.0200000000000031 0.0 160 -161 0.0228378772735596 0.019999999999996 0.019999999999996 0.0 161 -162 0.02286696434021 0.0300000000000011 0.0300000000000011 0.0 162 -163 0.0227479934692383 0.0200000000000031 0.0200000000000031 0.0 163 -164 0.0228869915008545 0.019999999999996 0.019999999999996 0.0 164 -165 0.0226659774780273 0.0300000000000011 0.0300000000000011 0.0 165 -166 0.022770881652832 0.0200000000000031 0.0200000000000031 0.0 166 -167 0.0226860046386719 0.019999999999996 0.019999999999996 0.0 167 -168 0.0242869853973389 0.0300000000000011 0.0300000000000011 0.0 168 -169 0.0219647884368896 0.0200000000000031 0.0200000000000031 0.0 169 -170 0.0227658748626709 0.019999999999996 0.019999999999996 0.0 170 -171 0.0217809677124023 0.0200000000000031 0.0200000000000031 0.0 171 -172 0.0216867923736572 0.019999999999996 0.019999999999996 0.0 172 -173 0.0220091342926025 0.0300000000000011 0.0300000000000011 0.0 173 -174 0.0218439102172852 0.0200000000000031 0.0200000000000031 0.0 174 -175 0.0223178863525391 0.019999999999996 0.019999999999996 0.0 175 -176 0.0216579437255859 0.0200000000000031 0.0200000000000031 0.0 176 -177 0.0791630744934082 0.0799999999999983 0.0799999999999983 0.0 177 -178 0.0234289169311523 0.0300000000000011 0.0300000000000011 0.0 178 -179 0.0239951610565186 0.019999999999996 0.019999999999996 0.0 179 -180 0.0231759548187256 0.0200000000000031 0.0200000000000031 0.0 180 -181 0.0228521823883057 0.0300000000000011 0.0300000000000011 0.0 181 -182 0.0234448909759521 0.019999999999996 0.019999999999996 0.0 182 -183 0.0231420993804932 0.0200000000000031 0.0200000000000031 0.0 183 -184 0.0229649543762207 0.0300000000000011 0.0300000000000011 0.0 184 -185 0.0216999053955078 0.019999999999996 0.019999999999996 0.0 185 -186 0.0214908123016357 0.0200000000000031 0.0200000000000031 0.0 186 -187 0.0216050148010254 0.019999999999996 0.019999999999996 0.0 187 -188 0.0253100395202637 0.0200000000000031 0.0200000000000031 0.0 188 -189 0.0231828689575195 0.0300000000000011 0.0300000000000011 0.0 189 -190 0.021651029586792 0.019999999999996 0.019999999999996 0.0 190 -191 0.0281798839569092 0.0300000000000011 0.0300000000000011 0.0 191 -192 0.0221288204193115 0.0200000000000031 0.0200000000000031 0.0 192 -193 0.0217571258544922 0.019999999999996 0.019999999999996 0.0 193 -194 0.0757858753204346 0.0800000000000054 0.0800000000000054 0.0 194 -195 0.0231471061706543 0.019999999999996 0.019999999999996 0.0 195 -196 0.0251290798187256 0.0300000000000011 0.0300000000000011 0.0 196 -197 0.0239238739013672 0.0200000000000031 0.0200000000000031 0.0 197 -198 0.0237748622894287 0.019999999999996 0.019999999999996 0.0 198 -199 0.0228419303894043 0.0300000000000011 0.0300000000000011 0.0 199 -200 0.0227909088134766 0.0200000000000031 0.0200000000000031 0.0 200 -201 0.0227510929107666 0.019999999999996 0.019999999999996 0.0 201 -202 0.0226459503173828 0.0200000000000031 0.0200000000000031 0.0 202 -203 0.0219879150390625 0.0300000000000011 0.0300000000000011 0.0 203 -204 0.0215039253234863 0.019999999999996 0.019999999999996 0.0 204 -205 0.021712064743042 0.0200000000000031 0.0200000000000031 0.0 205 -206 0.0217649936676025 0.019999999999996 0.019999999999996 0.0 206 -207 0.0244510173797607 0.0300000000000011 0.0300000000000011 0.0 207 -208 0.0221529006958008 0.0200000000000031 0.0200000000000031 0.0 208 -209 0.0231170654296875 0.019999999999996 0.019999999999996 0.0 209 -210 0.0216870307922363 0.0200000000000031 0.0200000000000031 0.0 210 -211 0.0216608047485352 0.019999999999996 0.019999999999996 0.0 211 -212 0.0771470069885254 0.0800000000000054 0.0800000000000054 0.0 212 -213 0.0229711532592773 0.019999999999996 0.019999999999996 0.0 213 -214 0.0230278968811035 0.0300000000000011 0.0300000000000011 0.0 214 -215 0.0230338573455811 0.019999999999996 0.019999999999996 0.0 215 -216 0.0260100364685059 0.0300000000000011 0.0300000000000011 0.0 216 -217 0.0238170623779297 0.0200000000000031 0.0200000000000031 0.0 217 -218 0.0228071212768555 0.019999999999996 0.019999999999996 0.0 218 -219 0.0227000713348389 0.0300000000000011 0.0300000000000011 0.0 219 -220 0.0220599174499512 0.0200000000000031 0.0200000000000031 0.0 220 -221 0.0216770172119141 0.019999999999996 0.019999999999996 0.0 221 -222 0.0224151611328125 0.0200000000000031 0.0200000000000031 0.0 222 -223 0.0217008590698242 0.0200000000000031 0.0200000000000031 0.0 223 -224 0.0216941833496094 0.029999999999994 0.029999999999994 0.0 224 -225 0.0216820240020752 0.0200000000000031 0.0200000000000031 0.0 225 -226 0.0217270851135254 0.019999999999996 0.019999999999996 0.0 226 -227 0.0246779918670654 0.0200000000000031 0.0200000000000031 0.0 227 -228 0.0233469009399414 0.0300000000000011 0.0300000000000011 0.0 228 -229 0.0217921733856201 0.019999999999996 0.019999999999996 0.0 229 -230 0.0832829475402832 0.0800000000000054 0.0800000000000054 0.0 230 -231 0.02298903465271 0.019999999999996 0.019999999999996 0.0 231 -232 0.0229618549346924 0.0300000000000011 0.0300000000000011 0.0 232 -233 0.0230050086975098 0.0200000000000031 0.0200000000000031 0.0 233 -234 0.022770881652832 0.019999999999996 0.019999999999996 0.0 234 -235 0.0257570743560791 0.0300000000000011 0.0300000000000011 0.0 235 -236 0.0234668254852295 0.0200000000000031 0.0200000000000031 0.0 236 -237 0.0224740505218506 0.029999999999994 0.029999999999994 0.0 237 -238 0.0215451717376709 0.0200000000000031 0.0200000000000031 0.0 238 -239 0.0215630531311035 0.0200000000000031 0.0200000000000031 0.0 239 -240 0.0216259956359863 0.019999999999996 0.019999999999996 0.0 240 -241 0.0215809345245361 0.0200000000000031 0.0200000000000031 0.0 241 -242 0.0216450691223145 0.019999999999996 0.019999999999996 0.0 242 -243 0.0215449333190918 0.0300000000000011 0.0300000000000011 0.0 243 -244 0.0216479301452637 0.0200000000000031 0.0200000000000031 0.0 244 -245 0.0218291282653809 0.019999999999996 0.019999999999996 0.0 245 -246 0.0227890014648438 0.0200000000000031 0.0200000000000031 0.0 246 -247 0.0793211460113525 0.0799999999999983 0.0799999999999983 0.0 247 -248 0.0230979919433594 0.0200000000000031 0.0200000000000031 0.0 248 -249 0.0230920314788818 0.029999999999994 0.029999999999994 0.0 249 -250 0.0235588550567627 0.0200000000000031 0.0200000000000031 0.0 250 -251 0.0228121280670166 0.0200000000000031 0.0200000000000031 0.0 251 -252 0.0227479934692383 0.029999999999994 0.029999999999994 0.0 252 -253 0.0227429866790771 0.0200000000000031 0.0200000000000031 0.0 253 -254 0.0227539539337158 0.019999999999996 0.019999999999996 0.0 254 -255 0.0255939960479736 0.0300000000000011 0.0300000000000011 0.0 255 -256 0.0225818157196045 0.0200000000000031 0.0200000000000031 0.0 256 -257 0.0216748714447021 0.019999999999996 0.019999999999996 0.0 257 -258 0.0216860771179199 0.0200000000000031 0.0200000000000031 0.0 258 -259 0.0217640399932861 0.0300000000000011 0.0300000000000011 0.0 259 -260 0.0218229293823242 0.019999999999996 0.019999999999996 0.0 260 -261 0.0217108726501465 0.0200000000000031 0.0200000000000031 0.0 261 -262 0.0230560302734375 0.0200000000000031 0.0200000000000031 0.0 262 -263 0.0218439102172852 0.019999999999996 0.019999999999996 0.0 263 -264 0.0216600894927979 0.0200000000000031 0.0200000000000031 0.0 264 -265 0.0821051597595215 0.0899999999999963 0.0899999999999963 0.0 265 -266 0.0255589485168457 0.0200000000000031 0.0200000000000031 0.0 266 -267 0.0274901390075684 0.0300000000000011 0.0300000000000011 0.0 267 -268 0.0230200290679932 0.019999999999996 0.019999999999996 0.0 268 -269 0.0227861404418945 0.0200000000000031 0.0200000000000031 0.0 269 -270 0.0227971076965332 0.0300000000000011 0.0300000000000011 0.0 270 -271 0.0227358341217041 0.019999999999996 0.019999999999996 0.0 271 -272 0.0242559909820557 0.0200000000000031 0.0200000000000031 0.0 272 -273 0.0217318534851074 0.029999999999994 0.029999999999994 0.0 273 -274 0.0250978469848633 0.0200000000000031 0.0200000000000031 0.0 274 -275 0.0236959457397461 0.0200000000000031 0.0200000000000031 0.0 275 -276 0.0217390060424805 0.029999999999994 0.029999999999994 0.0 276 -277 0.0216028690338135 0.0200000000000031 0.0200000000000031 0.0 277 -278 0.0216250419616699 0.0200000000000031 0.0200000000000031 0.0 278 -279 0.0216012001037598 0.019999999999996 0.019999999999996 0.0 279 -280 0.0216450691223145 0.0200000000000031 0.0200000000000031 0.0 280 -281 0.0217640399932861 0.019999999999996 0.019999999999996 0.0 281 -282 0.076016902923584 0.0799999999999983 0.0799999999999983 0.0 282 -283 0.0259561538696289 0.0300000000000011 0.0300000000000011 0.0 283 -284 0.024043083190918 0.0200000000000031 0.0200000000000031 0.0 284 -285 0.0230240821838379 0.019999999999996 0.019999999999996 0.0 285 -286 0.0229220390319824 0.0300000000000011 0.0300000000000011 0.0 286 -287 0.0229079723358154 0.0200000000000031 0.0200000000000031 0.0 287 -288 0.0228331089019775 0.019999999999996 0.019999999999996 0.0 288 -289 0.0232009887695312 0.0300000000000011 0.0300000000000011 0.0 289 -290 0.0225679874420166 0.0200000000000031 0.0200000000000031 0.0 290 -291 0.021859884262085 0.019999999999996 0.019999999999996 0.0 291 -292 0.0215480327606201 0.0200000000000031 0.0200000000000031 0.0 292 -293 0.0216219425201416 0.019999999999996 0.019999999999996 0.0 293 -294 0.0247988700866699 0.0300000000000011 0.0300000000000011 0.0 294 -295 0.0220661163330078 0.0200000000000031 0.0200000000000031 0.0 295 -296 0.0218551158905029 0.019999999999996 0.019999999999996 0.0 296 -297 0.0216910839080811 0.0200000000000031 0.0200000000000031 0.0 297 -298 0.0218009948730469 0.0300000000000011 0.0300000000000011 0.0 298 -299 0.0217809677124023 0.019999999999996 0.019999999999996 0.0 299 -300 0.0773510932922363 0.0800000000000054 0.0800000000000054 0.0 300 -301 0.0230739116668701 0.019999999999996 0.019999999999996 0.0 301 -302 0.0251951217651367 0.0200000000000031 0.0200000000000031 0.0 302 -303 0.0236630439758301 0.0300000000000011 0.0300000000000011 0.0 303 -304 0.0231490135192871 0.019999999999996 0.019999999999996 0.0 304 -305 0.029649019241333 0.0300000000000011 0.0300000000000011 0.0 305 -306 0.0232720375061035 0.0200000000000031 0.0200000000000031 0.0 306 -307 0.0227010250091553 0.029999999999994 0.029999999999994 0.0 307 -308 0.0219080448150635 0.0200000000000031 0.0200000000000031 0.0 308 -309 0.0215001106262207 0.0200000000000031 0.0200000000000031 0.0 309 -310 0.0215349197387695 0.019999999999996 0.019999999999996 0.0 310 -311 0.0216870307922363 0.0200000000000031 0.0200000000000031 0.0 311 -312 0.0215351581573486 0.019999999999996 0.019999999999996 0.0 312 -313 0.0247399806976318 0.0300000000000011 0.0300000000000011 0.0 313 -314 0.0232751369476318 0.0200000000000031 0.0200000000000031 0.0 314 -315 0.0219449996948242 0.019999999999996 0.019999999999996 0.0 315 -316 0.0216867923736572 0.0300000000000011 0.0300000000000011 0.0 316 -317 0.0756809711456299 0.0700000000000003 0.0700000000000003 0.0 317 -318 0.0230629444122314 0.0300000000000011 0.0300000000000011 0.0 318 -319 0.0229449272155762 0.019999999999996 0.019999999999996 0.0 319 -320 0.0231809616088867 0.0200000000000031 0.0200000000000031 0.0 320 -321 0.0229148864746094 0.019999999999996 0.019999999999996 0.0 321 -322 0.0256710052490234 0.0300000000000011 0.0300000000000011 0.0 322 -323 0.0237009525299072 0.0200000000000031 0.0200000000000031 0.0 323 -324 0.0227048397064209 0.0300000000000011 0.0300000000000011 0.0 324 -325 0.0226731300354004 0.019999999999996 0.019999999999996 0.0 325 -326 0.0221679210662842 0.0200000000000031 0.0200000000000031 0.0 326 -327 0.0216591358184814 0.019999999999996 0.019999999999996 0.0 327 -328 0.0220868587493896 0.0300000000000011 0.0300000000000011 0.0 328 -329 0.0215578079223633 0.0200000000000031 0.0200000000000031 0.0 329 -330 0.0216000080108643 0.019999999999996 0.019999999999996 0.0 330 -331 0.0216810703277588 0.0200000000000031 0.0200000000000031 0.0 331 -332 0.0217440128326416 0.019999999999996 0.019999999999996 0.0 332 -333 0.024817943572998 0.0300000000000011 0.0300000000000011 0.0 333 -334 0.0228419303894043 0.0200000000000031 0.0200000000000031 0.0 334 -335 0.0767669677734375 0.0799999999999983 0.0799999999999983 0.0 335 -336 0.0229949951171875 0.0200000000000031 0.0200000000000031 0.0 336 -337 0.0237720012664795 0.019999999999996 0.019999999999996 0.0 337 -338 0.0229918956756592 0.0300000000000011 0.0300000000000011 0.0 338 -339 0.0228021144866943 0.0200000000000031 0.0200000000000031 0.0 339 -340 0.0227911472320557 0.019999999999996 0.019999999999996 0.0 340 -341 0.0249691009521484 0.0300000000000011 0.0300000000000011 0.0 341 -342 0.0228381156921387 0.0200000000000031 0.0200000000000031 0.0 342 -343 0.0229289531707764 0.019999999999996 0.019999999999996 0.0 343 -344 0.028364896774292 0.0300000000000011 0.0300000000000011 0.0 344 -345 0.0216519832611084 0.0200000000000031 0.0200000000000031 0.0 345 -346 0.0216679573059082 0.029999999999994 0.029999999999994 0.0 346 -347 0.0215489864349365 0.0200000000000031 0.0200000000000031 0.0 347 -348 0.0216460227966309 0.0200000000000031 0.0200000000000031 0.0 348 -349 0.0217490196228027 0.019999999999996 0.019999999999996 0.0 349 -350 0.0217440128326416 0.0200000000000031 0.0200000000000031 0.0 350 -351 0.0216310024261475 0.019999999999996 0.019999999999996 0.0 351 -352 0.0248680114746094 0.0300000000000011 0.0300000000000011 0.0 352 -353 0.0779280662536621 0.0799999999999983 0.0799999999999983 0.0 353 -354 0.0229990482330322 0.0200000000000031 0.0200000000000031 0.0 354 -355 0.02298903465271 0.019999999999996 0.019999999999996 0.0 355 -356 0.0229768753051758 0.0300000000000011 0.0300000000000011 0.0 356 -357 0.0228021144866943 0.0200000000000031 0.0200000000000031 0.0 357 -358 0.0227739810943604 0.019999999999996 0.019999999999996 0.0 358 -359 0.0229020118713379 0.0200000000000031 0.0200000000000031 0.0 359 -360 0.0220818519592285 0.0300000000000011 0.0300000000000011 0.0 360 -361 0.024421215057373 0.019999999999996 0.019999999999996 0.0 361 -362 0.0219769477844238 0.0200000000000031 0.0200000000000031 0.0 362 -363 0.0216801166534424 0.0300000000000011 0.0300000000000011 0.0 363 -364 0.0218110084533691 0.019999999999996 0.019999999999996 0.0 364 -365 0.0219409465789795 0.0200000000000031 0.0200000000000031 0.0 365 -366 0.0218820571899414 0.019999999999996 0.019999999999996 0.0 366 -367 0.0223009586334229 0.0200000000000031 0.0200000000000031 0.0 367 -368 0.0218269824981689 0.0300000000000011 0.0300000000000011 0.0 368 -369 0.0217530727386475 0.019999999999996 0.019999999999996 0.0 369 -370 0.0778021812438965 0.0700000000000003 0.0700000000000003 0.0 370 -371 0.0233700275421143 0.0300000000000011 0.0300000000000011 0.0 371 -372 0.0233359336853027 0.0200000000000031 0.0200000000000031 0.0 372 -373 0.0229201316833496 0.019999999999996 0.019999999999996 0.0 373 -374 0.0229110717773438 0.0300000000000011 0.0300000000000011 0.0 374 -375 0.0227591991424561 0.0200000000000031 0.0200000000000031 0.0 375 -376 0.023568868637085 0.019999999999996 0.019999999999996 0.0 376 -377 0.022733211517334 0.0300000000000011 0.0300000000000011 0.0 377 -378 0.0221920013427734 0.0200000000000031 0.0200000000000031 0.0 378 -379 0.0215809345245361 0.019999999999996 0.019999999999996 0.0 379 -380 0.0231049060821533 0.0200000000000031 0.0200000000000031 0.0 380 -381 0.0227119922637939 0.0300000000000011 0.0300000000000011 0.0 381 -382 0.0230410099029541 0.019999999999996 0.019999999999996 0.0 382 -383 0.0276191234588623 0.0300000000000011 0.0300000000000011 0.0 383 -384 0.0234389305114746 0.0200000000000031 0.0200000000000031 0.0 384 -385 0.0217380523681641 0.019999999999996 0.019999999999996 0.0 385 -386 0.0216379165649414 0.0200000000000031 0.0200000000000031 0.0 386 -387 0.0217010974884033 0.0300000000000011 0.0300000000000011 0.0 387 -388 0.0771059989929199 0.0699999999999932 0.0699999999999932 0.0 388 -389 0.0259981155395508 0.0300000000000011 0.0300000000000011 0.0 389 -390 0.0245940685272217 0.0200000000000031 0.0200000000000031 0.0 390 -391 0.0229830741882324 0.0300000000000011 0.0300000000000011 0.0 391 -392 0.0227859020233154 0.019999999999996 0.019999999999996 0.0 392 -393 0.0226709842681885 0.0200000000000031 0.0200000000000031 0.0 393 -394 0.0227479934692383 0.0300000000000011 0.0300000000000011 0.0 394 -395 0.0223689079284668 0.019999999999996 0.019999999999996 0.0 395 -396 0.0215182304382324 0.0200000000000031 0.0200000000000031 0.0 396 -397 0.0214920043945312 0.019999999999996 0.019999999999996 0.0 397 -398 0.0217499732971191 0.0200000000000031 0.0200000000000031 0.0 398 -399 0.021583080291748 0.019999999999996 0.019999999999996 0.0 399 -400 0.0245871543884277 0.0300000000000011 0.0300000000000011 0.0 400 -401 0.0234861373901367 0.0200000000000031 0.0200000000000031 0.0 401 -402 0.0216600894927979 0.019999999999996 0.019999999999996 0.0 402 -403 0.0216600894927979 0.0300000000000011 0.0300000000000011 0.0 403 -404 0.021885871887207 0.0200000000000031 0.0200000000000031 0.0 404 -405 0.0772140026092529 0.0799999999999983 0.0799999999999983 0.0 405 -406 0.0230650901794434 0.0200000000000031 0.0200000000000031 0.0 406 -407 0.0229761600494385 0.019999999999996 0.019999999999996 0.0 407 -408 0.0251660346984863 0.0300000000000011 0.0300000000000011 0.0 408 -409 0.0232548713684082 0.0200000000000031 0.0200000000000031 0.0 409 -410 0.0238220691680908 0.019999999999996 0.019999999999996 0.0 410 -411 0.0227861404418945 0.0300000000000011 0.0300000000000011 0.0 411 -412 0.0226359367370605 0.0200000000000031 0.0200000000000031 0.0 412 -413 0.0224370956420898 0.019999999999996 0.019999999999996 0.0 413 -414 0.0216140747070312 0.0200000000000031 0.0200000000000031 0.0 414 -415 0.0223848819732666 0.0300000000000011 0.0300000000000011 0.0 415 -416 0.0215442180633545 0.019999999999996 0.019999999999996 0.0 416 -417 0.0215690135955811 0.0200000000000031 0.0200000000000031 0.0 417 -418 0.0216190814971924 0.019999999999996 0.019999999999996 0.0 418 -419 0.0228719711303711 0.0200000000000031 0.0200000000000031 0.0 419 -420 0.0226399898529053 0.0300000000000011 0.0300000000000011 0.0 420 -421 0.0236082077026367 0.019999999999996 0.019999999999996 0.0 421 -422 0.0264570713043213 0.0300000000000011 0.0300000000000011 0.0 422 -423 0.0789790153503418 0.0799999999999983 0.0799999999999983 0.0 423 -424 0.0229339599609375 0.0200000000000031 0.0200000000000031 0.0 424 -425 0.0229668617248535 0.019999999999996 0.019999999999996 0.0 425 -426 0.02298903465271 0.0200000000000031 0.0200000000000031 0.0 426 -427 0.0229198932647705 0.0300000000000011 0.0300000000000011 0.0 427 -428 0.0257198810577393 0.019999999999996 0.019999999999996 0.0 428 -429 0.0243279933929443 0.0300000000000011 0.0300000000000011 0.0 429 -430 0.022507905960083 0.0200000000000031 0.0200000000000031 0.0 430 -431 0.0216341018676758 0.019999999999996 0.019999999999996 0.0 431 -432 0.0214908123016357 0.0200000000000031 0.0200000000000031 0.0 432 -433 0.0215690135955811 0.0300000000000011 0.0300000000000011 0.0 433 -434 0.0216338634490967 0.019999999999996 0.019999999999996 0.0 434 -435 0.0216329097747803 0.0200000000000031 0.0200000000000031 0.0 435 -436 0.0217580795288086 0.019999999999996 0.019999999999996 0.0 436 -437 0.0218169689178467 0.0200000000000031 0.0200000000000031 0.0 437 -438 0.0216329097747803 0.019999999999996 0.019999999999996 0.0 438 -439 0.0245261192321777 0.0300000000000011 0.0300000000000011 0.0 439 -440 0.0769329071044922 0.0700000000000003 0.0700000000000003 0.0 440 -441 0.0231759548187256 0.0300000000000011 0.0300000000000011 0.0 441 -442 0.0230391025543213 0.0200000000000031 0.0200000000000031 0.0 442 -443 0.0233399868011475 0.019999999999996 0.019999999999996 0.0 443 -444 0.0227611064910889 0.0300000000000011 0.0300000000000011 0.0 444 -445 0.0228729248046875 0.0200000000000031 0.0200000000000031 0.0 445 -446 0.0227501392364502 0.019999999999996 0.019999999999996 0.0 446 -447 0.0253760814666748 0.0300000000000011 0.0300000000000011 0.0 447 -448 0.0228900909423828 0.0200000000000031 0.0200000000000031 0.0 448 -449 0.0227060317993164 0.019999999999996 0.019999999999996 0.0 449 -450 0.0215671062469482 0.0300000000000011 0.0300000000000011 0.0 450 -451 0.0215458869934082 0.0200000000000031 0.0200000000000031 0.0 451 -452 0.0216641426086426 0.019999999999996 0.019999999999996 0.0 452 -453 0.0215919017791748 0.0200000000000031 0.0200000000000031 0.0 453 -454 0.022503137588501 0.019999999999996 0.019999999999996 0.0 454 -455 0.0216779708862305 0.0300000000000011 0.0300000000000011 0.0 455 -456 0.0216538906097412 0.0200000000000031 0.0200000000000031 0.0 456 -457 0.0217761993408203 0.019999999999996 0.019999999999996 0.0 457 -458 0.0798358917236328 0.0799999999999983 0.0799999999999983 0.0 458 -459 0.0303719043731689 0.0300000000000011 0.0300000000000011 0.0 459 -460 0.0229458808898926 0.0200000000000031 0.0200000000000031 0.0 460 -461 0.0229299068450928 0.019999999999996 0.019999999999996 0.0 461 -462 0.0227961540222168 0.019999999999996 0.019999999999996 0.0 462 -463 0.0226409435272217 0.0200000000000031 0.0200000000000031 0.0 463 -464 0.0226771831512451 0.019999999999996 0.019999999999996 0.0 464 -465 0.0224730968475342 0.0300000000000011 0.0300000000000011 0.0 465 -466 0.0218050479888916 0.0200000000000031 0.0200000000000031 0.0 466 -467 0.025601863861084 0.019999999999996 0.019999999999996 0.0 467 -468 0.0238199234008789 0.0300000000000011 0.0300000000000011 0.0 468 -469 0.0232160091400146 0.0200000000000031 0.0200000000000031 0.0 469 -470 0.0216109752655029 0.019999999999996 0.019999999999996 0.0 470 -471 0.0216319561004639 0.0200000000000031 0.0200000000000031 0.0 471 -472 0.0216560363769531 0.019999999999996 0.019999999999996 0.0 472 -473 0.021658182144165 0.0300000000000011 0.0300000000000011 0.0 473 -474 0.0217010974884033 0.0200000000000031 0.0200000000000031 0.0 474 -475 0.0779910087585449 0.0799999999999983 0.0799999999999983 0.0 475 -476 0.0244100093841553 0.0200000000000031 0.0200000000000031 0.0 476 -477 0.026054859161377 0.029999999999994 0.029999999999994 0.0 477 -478 0.022968053817749 0.0200000000000031 0.0200000000000031 0.0 478 -479 0.0229709148406982 0.0200000000000031 0.0200000000000031 0.0 479 -480 0.0229671001434326 0.019999999999996 0.019999999999996 0.0 480 -481 0.0232329368591309 0.0300000000000011 0.0300000000000011 0.0 481 -482 0.0227680206298828 0.0200000000000031 0.0200000000000031 0.0 482 -483 0.0224251747131348 0.019999999999996 0.019999999999996 0.0 483 -484 0.021751880645752 0.0300000000000011 0.0300000000000011 0.0 484 -485 0.0215151309967041 0.019999999999996 0.019999999999996 0.0 485 -486 0.0246729850769043 0.0200000000000031 0.0200000000000031 0.0 486 -487 0.0227639675140381 0.0200000000000031 0.0200000000000031 0.0 487 -488 0.0219759941101074 0.029999999999994 0.029999999999994 0.0 488 -489 0.0217058658599854 0.0200000000000031 0.0200000000000031 0.0 489 -490 0.0216960906982422 0.0200000000000031 0.0200000000000031 0.0 490 -491 0.0218369960784912 0.019999999999996 0.019999999999996 0.0 491 -492 0.0217111110687256 0.0200000000000031 0.0200000000000031 0.0 492 -493 0.078171968460083 0.0799999999999983 0.0799999999999983 0.0 493 -494 0.0229799747467041 0.019999999999996 0.019999999999996 0.0 494 -495 0.0272798538208008 0.0300000000000011 0.0300000000000011 0.0 495 -496 0.0244588851928711 0.0200000000000031 0.0200000000000031 0.0 496 -497 0.028217077255249 0.0300000000000011 0.0300000000000011 0.0 497 -498 0.0241749286651611 0.0300000000000011 0.0300000000000011 0.0 498 -499 0.0227570533752441 0.019999999999996 0.019999999999996 0.0 499 -500 0.022475004196167 0.0200000000000031 0.0200000000000031 0.0 500 -501 0.021665096282959 0.019999999999996 0.019999999999996 0.0 501 -502 0.021481990814209 0.0300000000000011 0.0300000000000011 0.0 502 -503 0.0216250419616699 0.0200000000000031 0.0200000000000031 0.0 503 -504 0.0215671062469482 0.019999999999996 0.019999999999996 0.0 504 -505 0.0225341320037842 0.0200000000000031 0.0200000000000031 0.0 505 -506 0.0243070125579834 0.0300000000000011 0.0300000000000011 0.0 506 -507 0.0236639976501465 0.019999999999996 0.019999999999996 0.0 507 -508 0.021744966506958 0.0200000000000031 0.0200000000000031 0.0 508 -509 0.0216488838195801 0.019999999999996 0.019999999999996 0.0 509 -510 0.0759198665618896 0.0800000000000054 0.0800000000000054 0.0 510 -511 0.0230319499969482 0.019999999999996 0.019999999999996 0.0 511 -512 0.0232639312744141 0.0300000000000011 0.0300000000000011 0.0 512 -513 0.022974967956543 0.019999999999996 0.019999999999996 0.0 513 -514 0.0257279872894287 0.0200000000000031 0.0200000000000031 0.0 514 -515 0.0243010520935059 0.0300000000000011 0.0300000000000011 0.0 515 -516 0.0226881504058838 0.019999999999996 0.019999999999996 0.0 516 -517 0.0226349830627441 0.0200000000000031 0.0200000000000031 0.0 517 -518 0.0224928855895996 0.0300000000000011 0.0300000000000011 0.0 518 -519 0.0218918323516846 0.019999999999996 0.019999999999996 0.0 519 -520 0.0220029354095459 0.0200000000000031 0.0200000000000031 0.0 520 -521 0.0215179920196533 0.0200000000000031 0.0200000000000031 0.0 521 -522 0.0215981006622314 0.019999999999996 0.019999999999996 0.0 522 -523 0.0216679573059082 0.0300000000000011 0.0300000000000011 0.0 523 -524 0.0216460227966309 0.019999999999996 0.019999999999996 0.0 524 -525 0.0247371196746826 0.0200000000000031 0.0200000000000031 0.0 525 -526 0.0231599807739258 0.0300000000000011 0.0300000000000011 0.0 526 -527 0.021859884262085 0.019999999999996 0.019999999999996 0.0 527 -528 0.0768899917602539 0.0700000000000003 0.0700000000000003 0.0 528 -529 0.0238020420074463 0.0300000000000011 0.0300000000000011 0.0 529 -530 0.0229949951171875 0.0200000000000031 0.0200000000000031 0.0 530 -531 0.0229158401489258 0.019999999999996 0.019999999999996 0.0 531 -532 0.0228259563446045 0.0300000000000011 0.0300000000000011 0.0 532 -533 0.0230560302734375 0.0200000000000031 0.0200000000000031 0.0 533 -534 0.0252690315246582 0.0300000000000011 0.0300000000000011 0.0 534 -535 0.0236430168151855 0.019999999999996 0.019999999999996 0.0 535 -536 0.029339075088501 0.0300000000000011 0.0300000000000011 0.0 536 -537 0.0215559005737305 0.0200000000000031 0.0200000000000031 0.0 537 -538 0.0222070217132568 0.019999999999996 0.019999999999996 0.0 538 -539 0.0215811729431152 0.0200000000000031 0.0200000000000031 0.0 539 -540 0.0215599536895752 0.0300000000000011 0.0300000000000011 0.0 540 -541 0.0217399597167969 0.019999999999996 0.019999999999996 0.0 541 -542 0.0217771530151367 0.0200000000000031 0.0200000000000031 0.0 542 -543 0.0216219425201416 0.019999999999996 0.019999999999996 0.0 543 -544 0.0232682228088379 0.0200000000000031 0.0200000000000031 0.0 544 -545 0.0793290138244629 0.0799999999999983 0.0799999999999983 0.0 545 -546 0.0229940414428711 0.0300000000000011 0.0300000000000011 0.0 546 -547 0.022838830947876 0.019999999999996 0.019999999999996 0.0 547 -548 0.0229969024658203 0.0200000000000031 0.0200000000000031 0.0 548 -549 0.0229189395904541 0.0300000000000011 0.0300000000000011 0.0 549 -550 0.0227901935577393 0.019999999999996 0.019999999999996 0.0 550 -551 0.0229239463806152 0.0200000000000031 0.0200000000000031 0.0 551 -552 0.022730827331543 0.019999999999996 0.019999999999996 0.0 552 -553 0.0253369808197021 0.0300000000000011 0.0300000000000011 0.0 553 -554 0.0220980644226074 0.0200000000000031 0.0200000000000031 0.0 554 -555 0.0214731693267822 0.019999999999996 0.019999999999996 0.0 555 -556 0.0215020179748535 0.0300000000000011 0.0300000000000011 0.0 556 -557 0.0217249393463135 0.0200000000000031 0.0200000000000031 0.0 557 -558 0.0217740535736084 0.019999999999996 0.019999999999996 0.0 558 -559 0.022136926651001 0.0200000000000031 0.0200000000000031 0.0 559 -560 0.021636962890625 0.0200000000000031 0.0200000000000031 0.0 560 -561 0.0216689109802246 0.019999999999996 0.019999999999996 0.0 561 -562 0.0218231678009033 0.0300000000000011 0.0300000000000011 0.0 562 -563 0.0795009136199951 0.0799999999999983 0.0799999999999983 0.0 563 -564 0.0232501029968262 0.0200000000000031 0.0200000000000031 0.0 564 -565 0.0230040550231934 0.019999999999996 0.019999999999996 0.0 565 -566 0.0230789184570312 0.0300000000000011 0.0300000000000011 0.0 566 -567 0.0227739810943604 0.0200000000000031 0.0200000000000031 0.0 567 -568 0.0235750675201416 0.019999999999996 0.019999999999996 0.0 568 -569 0.0226988792419434 0.0200000000000031 0.0200000000000031 0.0 569 -570 0.0223028659820557 0.0300000000000011 0.0300000000000011 0.0 570 -571 0.0216829776763916 0.019999999999996 0.019999999999996 0.0 571 -572 0.0214540958404541 0.0200000000000031 0.0200000000000031 0.0 572 -573 0.0238778591156006 0.019999999999996 0.019999999999996 0.0 573 -574 0.0230958461761475 0.0300000000000011 0.0300000000000011 0.0 574 -575 0.0280261039733887 0.0300000000000011 0.0300000000000011 0.0 575 -576 0.0220839977264404 0.0200000000000031 0.0200000000000031 0.0 576 -577 0.0217299461364746 0.019999999999996 0.019999999999996 0.0 577 -578 0.0215981006622314 0.0200000000000031 0.0200000000000031 0.0 578 -579 0.0216739177703857 0.019999999999996 0.019999999999996 0.0 579 -580 0.0760340690612793 0.0799999999999983 0.0799999999999983 0.0 580 -581 0.0261681079864502 0.0200000000000031 0.0200000000000031 0.0 581 -582 0.0245881080627441 0.0300000000000011 0.0300000000000011 0.0 582 -583 0.0231649875640869 0.019999999999996 0.019999999999996 0.0 583 -584 0.0228891372680664 0.0300000000000011 0.0300000000000011 0.0 584 -585 0.0227940082550049 0.0200000000000031 0.0200000000000031 0.0 585 -586 0.0227079391479492 0.019999999999996 0.019999999999996 0.0 586 -587 0.0227351188659668 0.0200000000000031 0.0200000000000031 0.0 587 -588 0.0223979949951172 0.0300000000000011 0.0300000000000011 0.0 588 -589 0.0217239856719971 0.019999999999996 0.019999999999996 0.0 589 -590 0.0216400623321533 0.0200000000000031 0.0200000000000031 0.0 590 -591 0.0222110748291016 0.019999999999996 0.019999999999996 0.0 591 -592 0.0244839191436768 0.0300000000000011 0.0300000000000011 0.0 592 -593 0.0231800079345703 0.0200000000000031 0.0200000000000031 0.0 593 -594 0.0216829776763916 0.019999999999996 0.019999999999996 0.0 594 -595 0.0216670036315918 0.0200000000000031 0.0200000000000031 0.0 595 -596 0.0216989517211914 0.0200000000000031 0.0200000000000031 0.0 596 -597 0.0218870639801025 0.039999999999992 0.029999999999994 0.01 597 -598 0.077578067779541 0.0700000000000003 0.0700000000000003 0.0 598 -599 0.0230538845062256 0.0300000000000011 0.0300000000000011 0.0 599 -600 0.0230109691619873 0.0200000000000031 0.0200000000000031 0.0 600 -601 0.0260770320892334 0.0300000000000011 0.0300000000000011 0.0 601 -602 0.0238099098205566 0.019999999999996 0.019999999999996 0.0 602 -603 0.0228049755096436 0.0200000000000031 0.0200000000000031 0.0 603 -604 0.0226948261260986 0.019999999999996 0.019999999999996 0.0 604 -605 0.0223379135131836 0.0300000000000011 0.0300000000000011 0.0 605 -606 0.0216000080108643 0.0200000000000031 0.0200000000000031 0.0 606 -607 0.0224909782409668 0.019999999999996 0.019999999999996 0.0 607 -608 0.0216529369354248 0.0200000000000031 0.0200000000000031 0.0 608 -609 0.0217139720916748 0.019999999999996 0.019999999999996 0.0 609 -610 0.0218150615692139 0.0300000000000011 0.0300000000000011 0.0 610 -611 0.0217039585113525 0.0200000000000031 0.0200000000000031 0.0 611 -612 0.0246798992156982 0.019999999999996 0.019999999999996 0.0 612 -613 0.0233089923858643 0.0300000000000011 0.0300000000000011 0.0 613 -614 0.0297579765319824 0.0300000000000011 0.0300000000000011 0.0 614 -615 0.0762190818786621 0.0700000000000003 0.0700000000000003 0.0 615 -616 0.0230169296264648 0.0200000000000031 0.0200000000000031 0.0 616 -617 0.0229558944702148 0.029999999999994 0.029999999999994 0.0 617 -618 0.0230798721313477 0.0200000000000031 0.0200000000000031 0.0 618 -619 0.0230178833007812 0.019999999999996 0.019999999999996 0.0 619 -620 0.0257527828216553 0.0300000000000011 0.0300000000000011 0.0 620 -621 0.0235459804534912 0.0200000000000031 0.0200000000000031 0.0 621 -622 0.0228161811828613 0.0300000000000011 0.0300000000000011 0.0 622 -623 0.022197961807251 0.019999999999996 0.019999999999996 0.0 623 -624 0.021589994430542 0.0200000000000031 0.0200000000000031 0.0 624 -625 0.0214920043945312 0.019999999999996 0.019999999999996 0.0 625 -626 0.0215818881988525 0.0200000000000031 0.0200000000000031 0.0 626 -627 0.021651029586792 0.0300000000000011 0.0300000000000011 0.0 627 -628 0.0215868949890137 0.019999999999996 0.019999999999996 0.0 628 -629 0.0218029022216797 0.0200000000000031 0.0200000000000031 0.0 629 -630 0.0216500759124756 0.019999999999996 0.019999999999996 0.0 630 -631 0.0244319438934326 0.0200000000000031 0.0200000000000031 0.0 631 -632 0.0230758190155029 0.0300000000000011 0.0300000000000011 0.0 632 -633 0.077272891998291 0.0799999999999983 0.0799999999999983 0.0 633 -634 0.0236070156097412 0.0200000000000031 0.0200000000000031 0.0 634 -635 0.0229601860046387 0.019999999999996 0.019999999999996 0.0 635 -636 0.0228729248046875 0.0200000000000031 0.0200000000000031 0.0 636 -637 0.0228011608123779 0.0300000000000011 0.0300000000000011 0.0 637 -638 0.0227499008178711 0.019999999999996 0.019999999999996 0.0 638 -639 0.0244989395141602 0.0200000000000031 0.0200000000000031 0.0 639 -640 0.0235378742218018 0.0200000000000031 0.0200000000000031 0.0 640 -641 0.0223779678344727 0.019999999999996 0.019999999999996 0.0 641 -642 0.0215990543365479 0.0200000000000031 0.0200000000000031 0.0 642 -643 0.0215990543365479 0.019999999999996 0.019999999999996 0.0 643 -644 0.0219650268554688 0.0300000000000011 0.0300000000000011 0.0 644 -645 0.0215990543365479 0.0200000000000031 0.0200000000000031 0.0 645 -646 0.0224740505218506 0.019999999999996 0.019999999999996 0.0 646 -647 0.0216758251190186 0.0200000000000031 0.0200000000000031 0.0 647 -648 0.0216619968414307 0.019999999999996 0.019999999999996 0.0 648 -649 0.0221309661865234 0.0300000000000011 0.0300000000000011 0.0 649 -650 0.0787041187286377 0.0700000000000003 0.0700000000000003 0.0 650 -651 0.0299739837646484 0.0300000000000011 0.0300000000000011 0.0 651 -652 0.0230100154876709 0.0200000000000031 0.0200000000000031 0.0 652 -653 0.0230507850646973 0.019999999999996 0.019999999999996 0.0 653 -654 0.0228569507598877 0.0200000000000031 0.0200000000000031 0.0 654 -655 0.0227470397949219 0.0300000000000011 0.0300000000000011 0.0 655 -656 0.0226500034332275 0.019999999999996 0.019999999999996 0.0 656 -657 0.0228099822998047 0.0200000000000031 0.0200000000000031 0.0 657 -658 0.0222539901733398 0.019999999999996 0.019999999999996 0.0 658 -659 0.0245277881622314 0.0300000000000011 0.0300000000000011 0.0 659 -660 0.0224230289459229 0.0200000000000031 0.0200000000000031 0.0 660 -661 0.0216460227966309 0.019999999999996 0.019999999999996 0.0 661 -662 0.0215950012207031 0.0300000000000011 0.0300000000000011 0.0 662 -663 0.0216000080108643 0.0200000000000031 0.0200000000000031 0.0 663 -664 0.0216140747070312 0.019999999999996 0.019999999999996 0.0 664 -665 0.021726131439209 0.0200000000000031 0.0200000000000031 0.0 665 -666 0.0217559337615967 0.0200000000000031 0.0200000000000031 0.0 666 -667 0.0218238830566406 0.019999999999996 0.019999999999996 0.0 667 -668 0.0802149772644043 0.0799999999999983 0.0799999999999983 0.0 668 -669 0.0245440006256104 0.0300000000000011 0.0300000000000011 0.0 669 -670 0.0230040550231934 0.0200000000000031 0.0200000000000031 0.0 670 -671 0.02288818359375 0.019999999999996 0.019999999999996 0.0 671 -672 0.0228390693664551 0.0300000000000011 0.0300000000000011 0.0 672 -673 0.023313045501709 0.0200000000000031 0.0200000000000031 0.0 673 -674 0.0226609706878662 0.019999999999996 0.019999999999996 0.0 674 -675 0.0220029354095459 0.0300000000000011 0.0300000000000011 0.0 675 -676 0.0215702056884766 0.0200000000000031 0.0200000000000031 0.0 676 -677 0.0216479301452637 0.019999999999996 0.019999999999996 0.0 677 -678 0.0215539932250977 0.0200000000000031 0.0200000000000031 0.0 678 -679 0.0247859954833984 0.0300000000000011 0.0300000000000011 0.0 679 -680 0.0219168663024902 0.019999999999996 0.019999999999996 0.0 680 -681 0.0216579437255859 0.0200000000000031 0.0200000000000031 0.0 681 -682 0.0216360092163086 0.019999999999996 0.019999999999996 0.0 682 -683 0.0217740535736084 0.0200000000000031 0.0200000000000031 0.0 683 -684 0.0216720104217529 0.019999999999996 0.019999999999996 0.0 684 -685 0.076854944229126 0.0800000000000054 0.0800000000000054 0.0 685 -686 0.0229959487915039 0.019999999999996 0.019999999999996 0.0 686 -687 0.0258049964904785 0.0300000000000011 0.0300000000000011 0.0 687 -688 0.0232279300689697 0.0200000000000031 0.0200000000000031 0.0 688 -689 0.0251309871673584 0.029999999999994 0.029999999999994 0.0 689 -690 0.0279409885406494 0.0300000000000011 0.0300000000000011 0.0 690 -691 0.0227260589599609 0.0200000000000031 0.0200000000000031 0.0 691 -692 0.0227479934692383 0.019999999999996 0.019999999999996 0.0 692 -693 0.0219731330871582 0.0200000000000031 0.0200000000000031 0.0 693 -694 0.0215420722961426 0.0300000000000011 0.0300000000000011 0.0 694 -695 0.0214939117431641 0.019999999999996 0.019999999999996 0.0 695 -696 0.0216901302337646 0.0200000000000031 0.0200000000000031 0.0 696 -697 0.0216901302337646 0.019999999999996 0.019999999999996 0.0 697 -698 0.0246269702911377 0.0200000000000031 0.0200000000000031 0.0 698 -699 0.0231730937957764 0.0300000000000011 0.0300000000000011 0.0 699 -700 0.021737813949585 0.019999999999996 0.019999999999996 0.0 700 -701 0.0217559337615967 0.0200000000000031 0.0200000000000031 0.0 701 -702 0.0756359100341797 0.0799999999999983 0.0799999999999983 0.0 702 -703 0.0232179164886475 0.0200000000000031 0.0200000000000031 0.0 703 -704 0.0229458808898926 0.019999999999996 0.019999999999996 0.0 704 -705 0.0230169296264648 0.0300000000000011 0.0300000000000011 0.0 705 -706 0.0228660106658936 0.0200000000000031 0.0200000000000031 0.0 706 -707 0.0257608890533447 0.0300000000000011 0.0300000000000011 0.0 707 -708 0.0230529308319092 0.019999999999996 0.019999999999996 0.0 708 -709 0.0226249694824219 0.0200000000000031 0.0200000000000031 0.0 709 -710 0.0225780010223389 0.019999999999996 0.019999999999996 0.0 710 -711 0.0220761299133301 0.0300000000000011 0.0300000000000011 0.0 711 -712 0.0221598148345947 0.0200000000000031 0.0200000000000031 0.0 712 -713 0.0215129852294922 0.019999999999996 0.019999999999996 0.0 713 -714 0.0216219425201416 0.0200000000000031 0.0200000000000031 0.0 714 -715 0.0215890407562256 0.019999999999996 0.019999999999996 0.0 715 -716 0.0216820240020752 0.0200000000000031 0.0200000000000031 0.0 716 -717 0.0216300487518311 0.0300000000000011 0.0300000000000011 0.0 717 -718 0.0247721672058105 0.019999999999996 0.019999999999996 0.0 718 -719 0.0220820903778076 0.0200000000000031 0.0200000000000031 0.0 719 -720 0.0769851207733154 0.0799999999999983 0.0799999999999983 0.0 720 -721 0.0229990482330322 0.0200000000000031 0.0200000000000031 0.0 721 -722 0.024212121963501 0.0300000000000011 0.0300000000000011 0.0 722 -723 0.0229740142822266 0.019999999999996 0.019999999999996 0.0 723 -724 0.0227351188659668 0.0200000000000031 0.0200000000000031 0.0 724 -725 0.0226562023162842 0.029999999999994 0.029999999999994 0.0 725 -726 0.0255320072174072 0.0200000000000031 0.0200000000000031 0.0 726 -727 0.0227208137512207 0.0200000000000031 0.0200000000000031 0.0 727 -728 0.0237081050872803 0.029999999999994 0.029999999999994 0.0 728 -729 0.0268452167510986 0.0200000000000031 0.0200000000000031 0.0 729 -730 0.0218770503997803 0.0300000000000011 0.0300000000000011 0.0 730 -731 0.0217039585113525 0.019999999999996 0.019999999999996 0.0 731 -732 0.0215818881988525 0.0200000000000031 0.0200000000000031 0.0 732 -733 0.0217380523681641 0.0200000000000031 0.0200000000000031 0.0 733 -734 0.0216901302337646 0.019999999999996 0.019999999999996 0.0 734 -735 0.0217649936676025 0.0300000000000011 0.0300000000000011 0.0 735 -736 0.0216591358184814 0.019999999999996 0.019999999999996 0.0 736 -737 0.0809669494628906 0.0800000000000054 0.0800000000000054 0.0 737 -738 0.0230050086975098 0.019999999999996 0.019999999999996 0.0 738 -739 0.0229599475860596 0.0200000000000031 0.0200000000000031 0.0 739 -740 0.0229651927947998 0.0300000000000011 0.0300000000000011 0.0 740 -741 0.0228550434112549 0.019999999999996 0.019999999999996 0.0 741 -742 0.0228068828582764 0.0200000000000031 0.0200000000000031 0.0 742 -743 0.022993803024292 0.0300000000000011 0.0300000000000011 0.0 743 -744 0.0227200984954834 0.019999999999996 0.019999999999996 0.0 744 -745 0.02242112159729 0.0200000000000031 0.0200000000000031 0.0 745 -746 0.0246379375457764 0.0300000000000011 0.0300000000000011 0.0 746 -747 0.0218410491943359 0.019999999999996 0.019999999999996 0.0 747 -748 0.0215339660644531 0.0200000000000031 0.0200000000000031 0.0 748 -749 0.0215659141540527 0.019999999999996 0.019999999999996 0.0 749 -750 0.0216779708862305 0.0200000000000031 0.0200000000000031 0.0 750 -751 0.0216810703277588 0.019999999999996 0.019999999999996 0.0 751 -752 0.0221710205078125 0.0300000000000011 0.0300000000000011 0.0 752 -753 0.0216331481933594 0.0200000000000031 0.0200000000000031 0.0 753 -754 0.0217230319976807 0.019999999999996 0.019999999999996 0.0 754 -755 0.0797798633575439 0.0800000000000054 0.0800000000000054 0.0 755 -756 0.0233240127563477 0.019999999999996 0.019999999999996 0.0 756 -757 0.0232129096984863 0.0300000000000011 0.0300000000000011 0.0 757 -758 0.0233068466186523 0.0200000000000031 0.0200000000000031 0.0 758 -759 0.0228340625762939 0.019999999999996 0.019999999999996 0.0 759 -760 0.0226619243621826 0.0300000000000011 0.0300000000000011 0.0 760 -761 0.0235550403594971 0.0200000000000031 0.0200000000000031 0.0 761 -762 0.0222749710083008 0.019999999999996 0.019999999999996 0.0 762 -763 0.0216190814971924 0.0200000000000031 0.0200000000000031 0.0 763 -764 0.0215640068054199 0.019999999999996 0.019999999999996 0.0 764 -765 0.0237760543823242 0.0300000000000011 0.0300000000000011 0.0 765 -766 0.0217039585113525 0.0200000000000031 0.0200000000000031 0.0 766 -767 0.0219049453735352 0.019999999999996 0.019999999999996 0.0 767 -768 0.0291330814361572 0.0300000000000011 0.0300000000000011 0.0 768 -769 0.0216200351715088 0.0200000000000031 0.0200000000000031 0.0 769 -770 0.0217278003692627 0.019999999999996 0.019999999999996 0.0 770 -771 0.0217189788818359 0.0300000000000011 0.0300000000000011 0.0 771 -772 0.0760140419006348 0.0700000000000003 0.0700000000000003 0.0 772 -773 0.0230591297149658 0.0300000000000011 0.0300000000000011 0.0 773 -774 0.0260210037231445 0.019999999999996 0.019999999999996 0.0 774 -775 0.0247459411621094 0.0300000000000011 0.0300000000000011 0.0 775 -776 0.0229299068450928 0.0200000000000031 0.0200000000000031 0.0 776 -777 0.0227248668670654 0.019999999999996 0.019999999999996 0.0 777 -778 0.022636890411377 0.0300000000000011 0.0300000000000011 0.0 778 -779 0.0227160453796387 0.0200000000000031 0.0200000000000031 0.0 779 -780 0.0222170352935791 0.019999999999996 0.019999999999996 0.0 780 -781 0.0216178894042969 0.0200000000000031 0.0200000000000031 0.0 781 -782 0.0216701030731201 0.019999999999996 0.019999999999996 0.0 782 -783 0.0215609073638916 0.0300000000000011 0.0300000000000011 0.0 783 -784 0.0215671062469482 0.0200000000000031 0.0200000000000031 0.0 784 -785 0.0244979858398438 0.019999999999996 0.019999999999996 0.0 785 -786 0.02254319190979 0.0200000000000031 0.0200000000000031 0.0 786 -787 0.0216531753540039 0.0300000000000011 0.0300000000000011 0.0 787 -788 0.0216619968414307 0.019999999999996 0.019999999999996 0.0 788 -789 0.0218989849090576 0.0200000000000031 0.0200000000000031 0.0 789 -790 0.0775949954986572 0.0799999999999983 0.0799999999999983 0.0 790 -791 0.0229768753051758 0.0200000000000031 0.0200000000000031 0.0 791 -792 0.0230350494384766 0.019999999999996 0.019999999999996 0.0 792 -793 0.0247578620910645 0.0300000000000011 0.0300000000000011 0.0 793 -794 0.0241599082946777 0.0200000000000031 0.0200000000000031 0.0 794 -795 0.0229189395904541 0.029999999999994 0.029999999999994 0.0 795 -796 0.0227510929107666 0.0200000000000031 0.0200000000000031 0.0 796 -797 0.0223112106323242 0.0200000000000031 0.0200000000000031 0.0 797 -798 0.0216238498687744 0.019999999999996 0.019999999999996 0.0 798 -799 0.0216000080108643 0.0200000000000031 0.0200000000000031 0.0 799 -800 0.0226099491119385 0.0300000000000011 0.0300000000000011 0.0 800 -801 0.0218279361724854 0.019999999999996 0.019999999999996 0.0 801 -802 0.0216817855834961 0.0200000000000031 0.0200000000000031 0.0 802 -803 0.0218219757080078 0.019999999999996 0.019999999999996 0.0 803 -804 0.0220489501953125 0.0200000000000031 0.0200000000000031 0.0 804 -805 0.0245721340179443 0.0300000000000011 0.0300000000000011 0.0 805 -806 0.0237100124359131 0.019999999999996 0.019999999999996 0.0 806 -807 0.0831229686737061 0.0900000000000034 0.0900000000000034 0.0 807 -808 0.0229980945587158 0.019999999999996 0.019999999999996 0.0 808 -809 0.0230069160461426 0.0200000000000031 0.0200000000000031 0.0 809 -810 0.0229578018188477 0.019999999999996 0.019999999999996 0.0 810 -811 0.0229570865631104 0.0300000000000011 0.0300000000000011 0.0 811 -812 0.0228419303894043 0.0200000000000031 0.0200000000000031 0.0 812 -813 0.0257079601287842 0.0300000000000011 0.0300000000000011 0.0 813 -814 0.0235209465026855 0.019999999999996 0.019999999999996 0.0 814 -815 0.0221221446990967 0.0200000000000031 0.0200000000000031 0.0 815 -816 0.0214879512786865 0.019999999999996 0.019999999999996 0.0 816 -817 0.0215079784393311 0.0300000000000011 0.0300000000000011 0.0 817 -818 0.0216140747070312 0.0200000000000031 0.0200000000000031 0.0 818 -819 0.0216760635375977 0.019999999999996 0.019999999999996 0.0 819 -820 0.021683931350708 0.0200000000000031 0.0200000000000031 0.0 820 -821 0.0217459201812744 0.019999999999996 0.019999999999996 0.0 821 -822 0.0217831134796143 0.0200000000000031 0.0200000000000031 0.0 822 -823 0.0216968059539795 0.0300000000000011 0.0300000000000011 0.0 823 -824 0.0794470310211182 0.0799999999999983 0.0799999999999983 0.0 824 -825 0.0230400562286377 0.0200000000000031 0.0200000000000031 0.0 825 -826 0.0233430862426758 0.019999999999996 0.019999999999996 0.0 826 -827 0.023482084274292 0.0300000000000011 0.0300000000000011 0.0 827 -828 0.0228879451751709 0.0200000000000031 0.0200000000000031 0.0 828 -829 0.0232207775115967 0.019999999999996 0.019999999999996 0.0 829 -830 0.0228579044342041 0.0200000000000031 0.0200000000000031 0.0 830 -831 0.022691011428833 0.029999999999994 0.029999999999994 0.0 831 -832 0.024960994720459 0.0200000000000031 0.0200000000000031 0.0 832 -833 0.0226261615753174 0.0200000000000031 0.0200000000000031 0.0 833 -834 0.0222339630126953 0.029999999999994 0.029999999999994 0.0 834 -835 0.0216858386993408 0.0200000000000031 0.0200000000000031 0.0 835 -836 0.0216341018676758 0.0200000000000031 0.0200000000000031 0.0 836 -837 0.0216710567474365 0.019999999999996 0.019999999999996 0.0 837 -838 0.0217170715332031 0.0200000000000031 0.0200000000000031 0.0 838 -839 0.0223820209503174 0.0300000000000011 0.0300000000000011 0.0 839 -840 0.0218658447265625 0.019999999999996 0.019999999999996 0.0 840 -841 0.0216851234436035 0.0200000000000031 0.0200000000000031 0.0 841 -842 0.0797119140625 0.0799999999999983 0.0799999999999983 0.0 842 -843 0.0296900272369385 0.0300000000000011 0.0300000000000011 0.0 843 -844 0.023921012878418 0.019999999999996 0.019999999999996 0.0 844 -845 0.0230309963226318 0.0300000000000011 0.0300000000000011 0.0 845 -846 0.0227670669555664 0.0200000000000031 0.0200000000000031 0.0 846 -847 0.0226919651031494 0.019999999999996 0.019999999999996 0.0 847 -848 0.0227150917053223 0.0200000000000031 0.0200000000000031 0.0 848 -849 0.0224990844726562 0.0300000000000011 0.0300000000000011 0.0 849 -850 0.0217578411102295 0.019999999999996 0.019999999999996 0.0 850 -851 0.0215840339660645 0.0200000000000031 0.0200000000000031 0.0 851 -852 0.0246429443359375 0.0300000000000011 0.0300000000000011 0.0 852 -853 0.0232079029083252 0.019999999999996 0.019999999999996 0.0 853 -854 0.0217320919036865 0.0200000000000031 0.0200000000000031 0.0 854 -855 0.0215840339660645 0.019999999999996 0.019999999999996 0.0 855 -856 0.0217161178588867 0.0200000000000031 0.0200000000000031 0.0 856 -857 0.0216400623321533 0.0300000000000011 0.0300000000000011 0.0 857 -858 0.0217981338500977 0.019999999999996 0.019999999999996 0.0 858 -859 0.0765349864959717 0.0700000000000003 0.0700000000000003 0.0 859 -860 0.0244770050048828 0.0300000000000011 0.0300000000000011 0.0 860 -861 0.0246331691741943 0.0200000000000031 0.0200000000000031 0.0 861 -862 0.0232968330383301 0.029999999999994 0.029999999999994 0.0 862 -863 0.0228350162506104 0.0200000000000031 0.0200000000000031 0.0 863 -864 0.0228140354156494 0.0200000000000031 0.0200000000000031 0.0 864 -865 0.0230000019073486 0.029999999999994 0.029999999999994 0.0 865 -866 0.0231919288635254 0.0200000000000031 0.0200000000000031 0.0 866 -867 0.0222370624542236 0.0200000000000031 0.0200000000000031 0.0 867 -868 0.0216059684753418 0.019999999999996 0.019999999999996 0.0 868 -869 0.0215280055999756 0.0200000000000031 0.0200000000000031 0.0 869 -870 0.0218400955200195 0.029999999999994 0.029999999999994 0.0 870 -871 0.0238420963287354 0.0200000000000031 0.0200000000000031 0.0 871 -872 0.0222158432006836 0.0200000000000031 0.0200000000000031 0.0 872 -873 0.0229439735412598 0.029999999999994 0.029999999999994 0.0 873 -874 0.022014856338501 0.0200000000000031 0.0200000000000031 0.0 874 -875 0.0218870639801025 0.0200000000000031 0.0200000000000031 0.0 875 -876 0.0765628814697266 0.0799999999999983 0.0799999999999983 0.0 876 -877 0.0229649543762207 0.019999999999996 0.019999999999996 0.0 877 -878 0.0228400230407715 0.0200000000000031 0.0200000000000031 0.0 878 -879 0.0230231285095215 0.019999999999996 0.019999999999996 0.0 879 -880 0.0252189636230469 0.0300000000000011 0.0300000000000011 0.0 880 -881 0.0232028961181641 0.0200000000000031 0.0200000000000031 0.0 881 -882 0.0295140743255615 0.0300000000000011 0.0300000000000011 0.0 882 -883 0.0227620601654053 0.0300000000000011 0.0300000000000011 0.0 883 -884 0.0229089260101318 0.019999999999996 0.019999999999996 0.0 884 -885 0.0219950675964355 0.0200000000000031 0.0200000000000031 0.0 885 -886 0.021589994430542 0.019999999999996 0.019999999999996 0.0 886 -887 0.0214979648590088 0.0200000000000031 0.0200000000000031 0.0 887 -888 0.0215859413146973 0.0300000000000011 0.0300000000000011 0.0 888 -889 0.0217750072479248 0.019999999999996 0.019999999999996 0.0 889 -890 0.021744966506958 0.0200000000000031 0.0200000000000031 0.0 890 -891 0.025892972946167 0.019999999999996 0.019999999999996 0.0 891 -892 0.0236170291900635 0.0300000000000011 0.0300000000000011 0.0 892 -893 0.0218141078948975 0.0200000000000031 0.0200000000000031 0.0 893 -894 0.0771820545196533 0.0799999999999983 0.0799999999999983 0.0 894 -895 0.0230357646942139 0.0200000000000031 0.0200000000000031 0.0 895 -896 0.0231060981750488 0.019999999999996 0.019999999999996 0.0 896 -897 0.023137092590332 0.0300000000000011 0.0300000000000011 0.0 897 -898 0.022799015045166 0.019999999999996 0.019999999999996 0.0 898 -899 0.0256779193878174 0.0200000000000031 0.0200000000000031 0.0 899 -900 0.0231838226318359 0.0300000000000011 0.0300000000000011 0.0 900 -901 0.0232141017913818 0.019999999999996 0.019999999999996 0.0 901 -902 0.0217940807342529 0.0200000000000031 0.0200000000000031 0.0 902 -903 0.0214989185333252 0.0200000000000031 0.0200000000000031 0.0 903 -904 0.0218000411987305 0.029999999999994 0.029999999999994 0.0 904 -905 0.0220961570739746 0.0200000000000031 0.0200000000000031 0.0 905 -906 0.0215680599212646 0.0200000000000031 0.0200000000000031 0.0 906 -907 0.0216329097747803 0.019999999999996 0.019999999999996 0.0 907 -908 0.0217070579528809 0.0200000000000031 0.0200000000000031 0.0 908 -909 0.0216760635375977 0.019999999999996 0.019999999999996 0.0 909 -910 0.0236759185791016 0.0300000000000011 0.0300000000000011 0.0 910 -911 0.0770270824432373 0.0799999999999983 0.0799999999999983 0.0 911 -912 0.0231328010559082 0.0200000000000031 0.0200000000000031 0.0 912 -913 0.0229079723358154 0.019999999999996 0.019999999999996 0.0 913 -914 0.0230019092559814 0.0200000000000031 0.0200000000000031 0.0 914 -915 0.0252349376678467 0.0300000000000011 0.0300000000000011 0.0 915 -916 0.0227150917053223 0.019999999999996 0.019999999999996 0.0 916 -917 0.0228018760681152 0.0200000000000031 0.0200000000000031 0.0 917 -918 0.0226809978485107 0.0300000000000011 0.0300000000000011 0.0 918 -919 0.0252270698547363 0.019999999999996 0.019999999999996 0.0 919 -920 0.0231540203094482 0.0300000000000011 0.0300000000000011 0.0 920 -921 0.0289709568023682 0.0200000000000031 0.0200000000000031 0.0 921 -922 0.0215799808502197 0.0300000000000011 0.0300000000000011 0.0 922 -923 0.0319468975067139 0.0300000000000011 0.019999999999996 0.01 923 -924 0.0216109752655029 0.0200000000000031 0.0200000000000031 0.0 924 -925 0.0217740535736084 0.019999999999996 0.019999999999996 0.0 925 -926 0.0216958522796631 0.0200000000000031 0.0200000000000031 0.0 926 -927 0.0216629505157471 0.019999999999996 0.019999999999996 0.0 927 -928 0.0217578411102295 0.0300000000000011 0.0300000000000011 0.0 928 -929 0.0820608139038086 0.0799999999999983 0.0799999999999983 0.0 929 -930 0.0229201316833496 0.0200000000000031 0.0200000000000031 0.0 930 -931 0.0229270458221436 0.0200000000000031 0.0200000000000031 0.0 931 -932 0.0229320526123047 0.029999999999994 0.029999999999994 0.0 932 -933 0.0227558612823486 0.0200000000000031 0.0200000000000031 0.0 933 -934 0.0226609706878662 0.0200000000000031 0.0200000000000031 0.0 934 -935 0.0229549407958984 0.019999999999996 0.019999999999996 0.0 935 -936 0.0221340656280518 0.0300000000000011 0.0300000000000011 0.0 936 -937 0.0215301513671875 0.019999999999996 0.019999999999996 0.0 937 -938 0.0243568420410156 0.0200000000000031 0.0200000000000031 0.0 938 -939 0.021946907043457 0.0300000000000011 0.0300000000000011 0.0 939 -940 0.021575927734375 0.019999999999996 0.019999999999996 0.0 940 -941 0.0216639041900635 0.0200000000000031 0.0200000000000031 0.0 941 -942 0.0217418670654297 0.0200000000000031 0.0200000000000031 0.0 942 -943 0.0222411155700684 0.019999999999996 0.019999999999996 0.0 943 -944 0.0216610431671143 0.0200000000000031 0.0200000000000031 0.0 944 -945 0.0216820240020752 0.019999999999996 0.019999999999996 0.0 945 -946 0.0792751312255859 0.0699999999999932 0.0699999999999932 0.0 946 -947 0.0251059532165527 0.0300000000000011 0.0300000000000011 0.0 947 -948 0.0247578620910645 0.0200000000000031 0.0200000000000031 0.0 948 -949 0.0229980945587158 0.0300000000000011 0.0300000000000011 0.0 949 -950 0.0229229927062988 0.019999999999996 0.019999999999996 0.0 950 -951 0.0227029323577881 0.0200000000000031 0.0200000000000031 0.0 951 -952 0.0226871967315674 0.019999999999996 0.019999999999996 0.0 952 -953 0.0235540866851807 0.0300000000000011 0.0300000000000011 0.0 953 -954 0.0219640731811523 0.0200000000000031 0.0200000000000031 0.0 954 -955 0.0214629173278809 0.019999999999996 0.019999999999996 0.0 955 -956 0.021557092666626 0.0200000000000031 0.0200000000000031 0.0 956 -957 0.02388596534729 0.0300000000000011 0.0300000000000011 0.0 957 -958 0.0222799777984619 0.019999999999996 0.019999999999996 0.0 958 -959 0.0276319980621338 0.0300000000000011 0.0300000000000011 0.0 959 -960 0.0242338180541992 0.0200000000000031 0.0200000000000031 0.0 960 -961 0.0216600894927979 0.019999999999996 0.019999999999996 0.0 961 -962 0.0217490196228027 0.0200000000000031 0.0200000000000031 0.0 962 -963 0.0757958889007568 0.0799999999999983 0.0799999999999983 0.0 963 -964 0.0231211185455322 0.0200000000000031 0.0200000000000031 0.0 964 -965 0.023090124130249 0.029999999999994 0.029999999999994 0.0 965 -966 0.02652907371521 0.0200000000000031 0.0200000000000031 0.0 966 -967 0.024601936340332 0.0300000000000011 0.0300000000000011 0.0 967 -968 0.0228731632232666 0.019999999999996 0.019999999999996 0.0 968 -969 0.0227208137512207 0.0200000000000031 0.0200000000000031 0.0 969 -970 0.0226399898529053 0.0300000000000011 0.0300000000000011 0.0 970 -971 0.0225419998168945 0.019999999999996 0.019999999999996 0.0 971 -972 0.0218651294708252 0.0200000000000031 0.0200000000000031 0.0 972 -973 0.0215599536895752 0.0200000000000031 0.0200000000000031 0.0 973 -974 0.0218329429626465 0.019999999999996 0.019999999999996 0.0 974 -975 0.0215480327606201 0.0300000000000011 0.0300000000000011 0.0 975 -976 0.0220801830291748 0.019999999999996 0.019999999999996 0.0 976 -977 0.0245459079742432 0.0200000000000031 0.0200000000000031 0.0 977 -978 0.0230350494384766 0.0300000000000011 0.0300000000000011 0.0 978 -979 0.0217211246490479 0.019999999999996 0.019999999999996 0.0 979 -980 0.0217759609222412 0.0200000000000031 0.0200000000000031 0.0 980 -981 0.0778119564056396 0.0799999999999983 0.0799999999999983 0.0 981 -982 0.0229709148406982 0.0200000000000031 0.0200000000000031 0.0 982 -983 0.023047924041748 0.019999999999996 0.019999999999996 0.0 983 -984 0.0228879451751709 0.0300000000000011 0.0300000000000011 0.0 984 -985 0.0263099670410156 0.0200000000000031 0.0200000000000031 0.0 985 -986 0.0241529941558838 0.0300000000000011 0.0300000000000011 0.0 986 -987 0.0228710174560547 0.019999999999996 0.019999999999996 0.0 987 -988 0.0223538875579834 0.0200000000000031 0.0200000000000031 0.0 988 -989 0.0217280387878418 0.019999999999996 0.019999999999996 0.0 989 -990 0.0214800834655762 0.0300000000000011 0.0300000000000011 0.0 990 -991 0.0215470790863037 0.0200000000000031 0.0200000000000031 0.0 991 -992 0.0224719047546387 0.019999999999996 0.019999999999996 0.0 992 -993 0.0216379165649414 0.0200000000000031 0.0200000000000031 0.0 993 -994 0.0215561389923096 0.019999999999996 0.019999999999996 0.0 994 -995 0.021676778793335 0.0200000000000031 0.0200000000000031 0.0 995 -996 0.024587869644165 0.0300000000000011 0.0300000000000011 0.0 996 -997 0.0231449604034424 0.019999999999996 0.019999999999996 0.0 997 -998 0.0824549198150635 0.0900000000000034 0.0900000000000034 0.0 998 -999 0.0230429172515869 0.019999999999996 0.019999999999996 0.0 999 -1000 0.0229730606079102 0.0200000000000031 0.0200000000000031 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log deleted file mode 100644 index 72726793..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/GeneratorBenchmarkRails.log +++ /dev/null @@ -1,82 +0,0 @@ -========================== 2009-04-01T16:49:55 CEST =========================== -Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux]. -Running 'GeneratorBenchmarkRails' for 1000 iterations/method (compare_time=real) -=============================================================================== - -This first run is only for warmup. -GeneratorBenchmarkRails#generator: - real total user system -sum 25.871086597 25.820000000 25.780000000 0.040000000 -min 0.021485090 0.020000000 0.020000000 0.000000000 -std- 0.013123732 0.012534515 0.012507179 -0.000591505 -mean 0.025871087 0.025820000 0.025780000 0.000040000 -std+ 0.038618441 0.039105485 0.039052821 0.000671505 -max 0.084933996 0.090000000 0.090000000 0.010000000 -std 0.012747354 0.013285485 0.013272821 0.000631505 -std% 49.272590131 51.454239794 51.484952060 1578.762962731 -harm 0.023654431 0.022959497 0.022933171 nan -geo 0.024373445 0.023988580 0.023955348 0.000000000 -q1 0.021737874 0.020000000 0.020000000 0.000000000 -med 0.022677064 0.020000000 0.020000000 0.000000000 -q3 0.023290575 0.030000000 0.030000000 0.000000000 - 1000 38.65319 0.025871087 - calls calls/sec secs/call - - 0.08176 -|* - 0.07542 -|** - 0.06907 -| - 0.06273 -| - 0.05638 -| - 0.05004 -| - 0.04369 -| - 0.03735 -| - 0.03100 -|* - 0.02466 -|************************************************** - -Outliers detected with box plot algo (median=0.02268, iqr=0.00155, factor=3.00): -high=115 very_high=69 - -Ljung-Box statistics: q=1246.12050 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -GeneratorBenchmarkRails#generator: - real total user system -sum 25.952543497 25.950000000 25.930000000 0.020000000 -min 0.021454096 0.020000000 0.020000000 0.000000000 -std- 0.013029796 0.012272113 0.012258057 -0.000426990 -mean 0.025952543 0.025950000 0.025930000 0.000020000 -std+ 0.038875291 0.039627887 0.039601943 0.000466990 -max 0.083282948 0.090000000 0.090000000 0.010000000 -std 0.012922747 0.013677887 0.013671943 0.000446990 -std% 49.793760083 52.708619269 52.726351240 2234.948544149 -harm 0.023675798 0.022977187 0.022963996 nan -geo 0.024414095 0.024037524 0.024020868 0.000000000 -q1 0.021728516 0.020000000 0.020000000 0.000000000 -med 0.022745013 0.020000000 0.020000000 0.000000000 -q3 0.023253679 0.030000000 0.030000000 0.000000000 - 1000 38.53187 0.025952543 - calls calls/sec secs/call - - 0.08019 -|** - 0.07401 -|* - 0.06783 -| - 0.06164 -| - 0.05546 -| - 0.04928 -| - 0.04309 -| - 0.03691 -| - 0.03073 -|* - 0.02455 -|************************************************** - -Outliers detected with box plot algo (median=0.02275, iqr=0.00153, factor=3.00): -high=106 very_high=75 - -Ljung-Box statistics: q=1270.99317 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -========================== 2009-04-01T16:50:50 CEST =========================== - -Writing measurement data file '/data/scm/json/benchmarks/data/GeneratorBenchmarkRails#generator.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/GeneratorBenchmarkRails#generator-autocorrelation.dat'. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log deleted file mode 100644 index 7df44451..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkComparison.log +++ /dev/null @@ -1,34 +0,0 @@ -========================== 2009-04-01T16:49:51 CEST =========================== - -Comparing times (call_time_mean): - 1 ParserBenchmarkExt#parser 900 repeats: - 553.922304770 ( real) -> 21.500x - 0.001805307 - 2 ParserBenchmarkYAML#parser 1000 repeats: - 224.513358139 ( real) -> 8.714x - 0.004454078 - 3 ParserBenchmarkPure#parser 1000 repeats: - 26.755020642 ( real) -> 1.038x - 0.037376163 - 4 ParserBenchmarkRails#parser 1000 repeats: - 25.763381731 ( real) -> 1.000x - 0.038814780 - calls/sec ( time) -> speed covers - secs/call - -Comparing times (call_time_median): - 1 ParserBenchmarkExt#parser 900 repeats: - 800.592479481 ( real) -> 26.936x - 0.001249075 - 2 ParserBenchmarkYAML#parser 1000 repeats: - 271.002390644 ( real) -> 9.118x - 0.003690004 - 3 ParserBenchmarkRails#parser 1000 repeats: - 30.227910865 ( real) -> 1.017x - 0.033082008 - 4 ParserBenchmarkPure#parser 1000 repeats: - 29.722384421 ( real) -> 1.000x - 0.033644676 - calls/sec ( time) -> speed covers - secs/call -=============================================================================== diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat deleted file mode 100644 index 40efc57c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser-autocorrelation.dat +++ /dev/null @@ -1,900 +0,0 @@ -#lag autocorrelation -101 1.0 -102 0.00985212418163005 -103 -0.00105742571489969 -104 -0.0200019393620297 -105 -0.00933105977449441 -106 -0.0198053539236752 -107 -0.0179767811553642 -108 -0.0176611423990743 -109 -0.0185222417953087 -110 -0.0205843694390457 -111 -0.01715959553508 -112 -0.0198505157325194 -113 -0.0185062490072185 -114 -0.0196897065923063 -115 -0.021656479097572 -116 -0.0204821887654524 -117 -0.0184415185088398 -118 -0.0211615011085338 -119 -0.0216761971444828 -120 -0.0198233495768411 -121 -0.0203604715880323 -122 -0.0198005010000642 -123 -0.0186848341524697 -124 -0.0180302780242917 -125 -0.0183844885059821 -126 -0.0193889269967917 -127 -0.0192676046194778 -128 -0.017137594880939 -129 -0.0170409124066728 -130 -0.0150595759310503 -131 -0.018497243864985 -132 -0.0191312662452333 -133 -0.0194917405622472 -134 -0.0182724916370003 -135 -0.0171018288530395 -136 -0.017693203383731 -137 -0.019233808628409 -138 -0.0204803489133546 -139 -0.0206519814870514 -140 -0.0209197600090546 -141 -0.0201426439148014 -142 -0.0181979335068176 -143 -0.0198192645275531 -144 -0.0202773409268149 -145 -0.0197509641765462 -146 -0.0174542791271672 -147 -0.0185131963029398 -148 -0.0142911622141816 -149 -0.018189949446747 -150 -0.0172775321644038 -151 -0.0172514996638929 -152 -0.0149711216258677 -153 -0.0180209406771167 -154 -0.0187829326095732 -155 -0.0179420788237305 -156 0.00424372785454928 -157 0.00821554188465932 -158 0.35293400731859 -159 0.366837592246794 -160 0.213298783047283 -161 -0.0157394761915721 -162 -0.00774376349114834 -163 -0.0172186119438013 -164 -0.0162348306988972 -165 -0.0179811217375531 -166 -0.0168325248721867 -167 -0.0177863454159124 -168 -0.0162717222175639 -169 -0.0191117204105146 -170 -0.0177356811020167 -171 -0.0186975490077008 -172 -0.0172583072789483 -173 -0.0189210264178748 -174 -0.0171826733538386 -175 -0.0197467598837419 -176 -0.0197612311894552 -177 -0.0200029809913758 -178 -0.0197615059774931 -179 -0.017571989727297 -180 -0.0173400082784329 -181 -0.0176396221137864 -182 -0.0178007321096628 -183 -0.0171581059408866 -184 -0.0175715243687287 -185 -0.0144018049890081 -186 -0.0137323861679082 -187 -0.0160141550759938 -188 -0.017722831700802 -189 -0.015351426662838 -190 -0.0185698089210776 -191 -0.0175157776409104 -192 -0.0155631516338833 -193 -0.0169248557096909 -194 -0.0172361325951485 -195 -0.0181452103029826 -196 -0.0188512630759419 -197 -0.019287412783149 -198 -0.0189502964327969 -199 -0.0175238114666983 -200 -0.0183952774301715 -201 -0.0186218598819691 -202 -0.018542074990071 -203 -0.0182545379514657 -204 -0.017840994815964 -205 -0.0165268111705284 -206 -0.0170697996989772 -207 -0.0164709961667795 -208 -0.016643508111465 -209 -0.0157568996501781 -210 -0.0168374783887807 -211 -0.0177159477110073 -212 -0.0185524368774668 -213 0.0053422952230943 -214 0.00276128222155045 -215 0.286489934471652 -216 0.0658269400928081 -217 0.262561253228902 -218 0.169103819531699 -219 0.0650049870287007 -220 -0.0133346213868773 -221 -0.0142126752180425 -222 -0.0160968078458446 -223 -0.0167528062012806 -224 -0.0164817511097463 -225 -0.0142119297070018 -226 -0.0184810797176798 -227 -0.0172569541054024 -228 -0.0172066024264211 -229 -0.0169726297147995 -230 -0.0150887497973008 -231 -0.0156277947184747 -232 -0.0180738339464492 -233 -0.0190883324101496 -234 -0.0183422711026111 -235 -0.018362277398652 -236 -0.0181804365041856 -237 -0.0173970084740036 -238 -0.0160781720728349 -239 -0.0175236902049324 -240 -0.0174042718759811 -241 -0.0173938793276598 -242 -0.0147551028769872 -243 -0.0122857581039405 -244 -0.010867924198452 -245 -0.0147424216205904 -246 -0.0161622617779801 -247 -0.0172022551420587 -248 -0.0150808969605776 -249 -0.0151917742587137 -250 -0.0152127703813932 -251 -0.0164007891388044 -252 -0.0158495946074772 -253 -0.0165231819746255 -254 -0.0179743821309601 -255 -0.0168790954979486 -256 -0.0162120097817564 -257 -0.0178739491417351 -258 -0.0173473040628906 -259 -0.017333660413587 -260 -0.0169091470123355 -261 -0.0173480396586057 -262 -0.0162244782824425 -263 -0.0161131334675745 -264 -0.015440149830728 -265 -0.0158807862437797 -266 -0.0152294521155507 -267 -0.0158352218642096 -268 -0.0155828944335708 -269 -0.0154836062421944 -270 0.00558208708467659 -271 0.0114870902959279 -272 0.231287473612096 -273 0.0339554100844083 -274 0.0575163566469858 -275 0.200319219612533 -276 0.130545113965154 -277 0.103208025156172 -278 -0.00828951271991966 -279 -0.011478192463039 -280 -0.0144428867470379 -281 -0.0166239539451988 -282 -0.0140920994032186 -283 -0.0158723288388108 -284 -0.0165069706040961 -285 -0.0161430629749153 -286 -0.0156730553051534 -287 -0.0140404598916659 -288 -0.0133504108974733 -289 -0.0157085445845684 -290 -0.0176124651386038 -291 -0.0171680503827001 -292 -0.0170039830572799 -293 -0.0168887759061973 -294 -0.0169101987732867 -295 -0.0163174932481928 -296 -0.0167303236582728 -297 -0.0164240715366653 -298 -0.0174052740404305 -299 -0.0154895527247017 -300 -0.0136444220312839 -301 -0.0116830781987026 -302 -0.0115068177333964 -303 -0.0122234935117673 -304 -0.0161080245808241 -305 -0.0156513921624129 -306 -0.015465759720129 -307 -0.0155883071657887 -308 -0.014915569597449 -309 -0.0154401977831601 -310 -0.0152328705988631 -311 -0.0150660231818582 -312 -0.0162849647550971 -313 -0.0156909486406831 -314 -0.0157314619149535 -315 -0.0171049069711299 -316 -0.0163207392432989 -317 -0.0162187518728422 -318 -0.0159225278740695 -319 -0.0158753160806369 -320 -0.0175020706698857 -321 -0.0162498852657993 -322 -0.0142911340574672 -323 -0.0134726499133121 -324 -0.0139601338890013 -325 -0.0135761876345162 -326 -0.0137860102565959 -327 0.00758105123652143 -328 0.0138556686845422 -329 0.160536954774616 -330 0.0580898398456171 -331 0.0362943231984366 -332 0.0582894097570709 -333 0.140607199465268 -334 0.122618966464092 -335 0.0544884026670781 -336 0.0574883295508244 -337 -0.0128811621108332 -338 -0.0142051495442353 -339 -0.012596825344306 -340 -0.0144711739317383 -341 -0.0143424560269512 -342 -0.0151482554143398 -343 -0.0152335381293791 -344 -0.0145008541639242 -345 -0.0128863677349906 -346 -0.0135998919997521 -347 -0.0137187354568586 -348 -0.016562150133356 -349 -0.0159327586951356 -350 -0.0157278421724429 -351 -0.0156917921778683 -352 -0.0162525169522264 -353 -0.0151087680645235 -354 -0.0163683946557918 -355 -0.0158321090068333 -356 -0.014187820897252 -357 -0.0135506277381031 -358 -0.0129291218507853 -359 -0.011476061331394 -360 -0.0106220863859184 -361 -0.0136381523747695 -362 -0.0144198007144617 -363 -0.0140646467360062 -364 -0.0146311562003427 -365 -0.0138043111265009 -366 -0.0132336502438289 -367 -0.0137447378009751 -368 -0.0134055994936963 -369 -0.0138096044909662 -370 -0.0148709544542698 -371 -0.0141560548846661 -372 -0.0143189068321436 -373 -0.0154246653827396 -374 -0.0143998490618263 -375 -0.0151239610115372 -376 -0.0145837141470442 -377 -0.0149820141088871 -378 -0.0152660994133885 -379 -0.0150896640677698 -380 -0.0143925874319689 -381 -0.012857919840862 -382 -0.012469852706461 -383 -0.0114191455070416 -384 -0.0117369627541799 -385 0.00901231127194259 -386 0.112581309251641 -387 0.0630586366341156 -388 0.0560506964150278 -389 0.034078031969884 -390 0.0673456104691437 -391 0.0675823686435704 -392 0.125111752483497 -393 0.0574208869213907 -394 0.0547195112212531 -395 -0.0126520762992662 -396 -0.0108416098060863 -397 -0.0130469248384881 -398 -0.0127546014788274 -399 -0.0132792357499854 -400 -0.0146832842515137 -401 -0.0126612510959431 -402 -0.0115800372136954 -403 -0.0113903072278453 -404 -0.0140846407853927 -405 -0.0131520362471166 -406 -0.0151139726926659 -407 -0.014338285447184 -408 -0.0139604129340576 -409 -0.0146086760584088 -410 -0.0147068805852203 -411 -0.0133990381740181 -412 -0.0146858710730989 -413 -0.0130742254367083 -414 -0.0131112804223081 -415 -0.0137104304702131 -416 -0.0127181490916882 -417 -0.0101122805581215 -418 -0.0116311057808783 -419 -0.0116685677717087 -420 -0.0125364818049418 -421 -0.0131681573750755 -422 -0.0136051276108772 -423 -0.0120078720987834 -424 -0.0120742461009416 -425 -0.0122528176238668 -426 -0.0117254366398627 -427 -0.0121713901545344 -428 -0.0134473192309673 -429 -0.0125993249687127 -430 -0.0127679522459455 -431 -0.0139092549620457 -432 -0.012803641341176 -433 -0.0136774030500624 -434 -0.0141830514589281 -435 -0.0128995570395618 -436 -0.0138061906269556 -437 -0.0138485903191603 -438 -0.0134705594226274 -439 -0.0135710367850959 -440 -0.0134802406736088 -441 -0.0114240523633417 -442 0.00941052876968686 -443 0.0430904882987511 -444 0.0610654134717703 -445 0.062319445242902 -446 0.0601232622212667 -447 0.0405754724552619 -448 0.0620931832458557 -449 0.0116088523973264 -450 0.0982633823768887 -451 0.0714603689521745 -452 0.0559398394361076 -453 -0.0101201070889078 -454 -0.00879771513149454 -455 -0.0115272354759577 -456 -0.0116269116840352 -457 -0.0122869101923228 -458 -0.0120188445899197 -459 -0.0118598309936189 -460 -0.0101004693907269 -461 -0.0114030122417514 -462 -0.0122734729370316 -463 -0.0115720712151182 -464 -0.0138183196216235 -465 -0.0127878610331042 -466 -0.0125076360625095 -467 -0.012954528306254 -468 -0.0134636454445403 -469 -0.0119988447482744 -470 -0.0129555835189171 -471 -0.0118492958760378 -472 -0.0118594416726488 -473 -0.0122062699596644 -474 -0.010080021699572 -475 -0.0096177810356361 -476 -0.0103925438270026 -477 -0.00956922010832709 -478 -0.0112412626452718 -479 -0.0121001052660535 -480 -0.011378640220319 -481 -0.0092484956113967 -482 -0.0106941808432033 -483 -0.0110034314038638 -484 -0.0110076000819364 -485 -0.0120066628455925 -486 -0.0120644325940679 -487 -0.0113002732292104 -488 -0.0115088408547228 -489 -0.0124620522688203 -490 -0.011436641831689 -491 -0.0122177151639931 -492 -0.011889848089267 -493 -0.0112514741258071 -494 -0.0123396196285994 -495 -0.0125441398199035 -496 -0.0120423852622065 -497 -0.0117710714915686 -498 -0.0120685728943707 -499 -0.0102415762932917 -500 -0.00952560982747511 -501 0.057365018480452 -502 0.0589533698587152 -503 0.0631840298934377 -504 0.0575949246719766 -505 0.0495075237359153 -506 -0.00276987533523964 -507 0.0566980942764334 -508 0.0446716609032234 -509 0.0800168272027955 -510 0.0590566885918559 -511 -0.00867575003512787 -512 -0.00762446391218853 -513 -0.0110530315739159 -514 -0.0112154987644773 -515 -0.0115595346792594 -516 -0.00980277940001169 -517 -0.00973051262117572 -518 -0.0103794047555936 -519 -0.0112379712859069 -520 -0.0115804163149423 -521 -0.0101848401928812 -522 -0.0124971838157264 -523 -0.0116095875762639 -524 -0.0110264315185272 -525 -0.0117091264505558 -526 -0.0123732885927322 -527 -0.010594137537324 -528 -0.0118959477121367 -529 -0.0104863548938662 -530 -0.0105605260979509 -531 -0.0106933635291854 -532 -0.0108043363381157 -533 -0.00921313629560141 -534 -0.00991616820012903 -535 -0.00958582052168739 -536 -0.00704544580624994 -537 -0.0106691661025772 -538 -0.010420801758334 -539 -0.00875433609811375 -540 -0.00883595894162315 -541 -0.00997102984238341 -542 -0.0102647231793572 -543 -0.0102814553860974 -544 -0.0108603826750419 -545 -0.00986739232072193 -546 -0.0101569632812344 -547 -0.011268829829185 -548 -0.0103314326239715 -549 -0.0108025538636602 -550 -0.0110885402975588 -551 -0.00994108726738058 -552 -0.0109717247548978 -553 -0.0111952027153027 -554 -0.0106777314688714 -555 -0.0105192670440749 -556 -0.0103965890169893 -557 -0.00921877528177769 -558 -0.0105438348503076 -559 0.0565407931203086 -560 0.0607631038776418 -561 0.0631456281304688 -562 0.0643969806813753 -563 0.00250124004424947 -564 0.0238807604805019 -565 0.0611062977177439 -566 0.00597775022828004 -567 0.0460556379694793 -568 0.0815090939407766 -569 -0.00626805713052914 -570 -0.00661349141206074 -571 -0.0103106916231778 -572 -0.00997759927119779 -573 -0.00925417552568336 -574 -0.00793232399214336 -575 -0.00984859802468641 -576 -0.00970943291247622 -577 -0.0102555983171129 -578 -0.0105112448841139 -579 -0.00934462727175849 -580 -0.0109724429920345 -581 -0.0105475816212072 -582 -0.00987869004825123 -583 -0.0108012349540747 -584 -0.0110285881583596 -585 -0.00936923199699531 -586 -0.010677032137483 -587 -0.00926759654250112 -588 -0.00927806685390026 -589 -0.00953198453346766 -590 -0.00985316922914821 -591 -0.00816343304426746 -592 -0.00804247528052676 -593 -0.00716187036218296 -594 -0.00719169352938419 -595 -0.00640320531281439 -596 -0.00933925279879329 -597 -0.00742884578783592 -598 -0.00884147481763569 -599 -0.00946231770499787 -600 -0.00920569741458586 -601 -0.00945237056796019 -602 -0.00981398771732927 -603 -0.00871297697902305 -604 -0.0100303276706874 -605 -0.00898480302286613 -606 -0.00924314281708078 -607 -0.00967182311916309 -608 -0.00990373367569264 -609 -0.00867546650016389 -610 -0.00974271626786161 -611 -0.00993605711012294 -612 -0.00942263108268127 -613 -0.00900896482065972 -614 -0.0091002536867116 -615 -0.0087141619357278 -616 -0.00892632720545352 -617 0.0589814861280723 -618 0.0605513762593439 -619 0.0714950418331747 -620 -0.00270802819557134 -621 0.0492471524740303 -622 0.038730090749927 -623 -0.00470286001171746 -624 0.0805291384934167 -625 -0.0061135815816416 -626 0.0469241708061885 -627 0.0129057834766504 -628 -0.00613654384956245 -629 -0.00879823441679327 -630 -0.00781138453907383 -631 -0.00742325743221473 -632 -0.00823530705565565 -633 -0.0084784951984544 -634 -0.00809365168883783 -635 -0.00953458560320773 -636 -0.00802484455858134 -637 -0.00916422962874895 -638 -0.00901522658367207 -639 -0.00980509257172476 -640 -0.00879042365734647 -641 -0.00895901541679582 -642 -0.00967011172668992 -643 -0.00909032972552398 -644 -0.00839888383893324 -645 -0.00811198094900032 -646 -0.00768107918073061 -647 -0.00816456224653991 -648 -0.0082275430634122 -649 -0.0081977088645516 -650 -0.00539347813540888 -651 -0.00654335448921841 -652 -0.00443308105716727 -653 -0.00570487900007702 -654 -0.0066893756968109 -655 -0.00818867754248517 -656 -0.00757689453770065 -657 -0.00809806707024929 -658 -0.00781954604985851 -659 -0.00817710586907003 -660 -0.00815598808085207 -661 -0.00838471453215144 -662 -0.00761655712958744 -663 -0.00754256056280177 -664 -0.00784016975796052 -665 -0.00809877261256007 -666 -0.00845387142411403 -667 -0.00839255166002082 -668 -0.00750643389123885 -669 -0.00842839786359518 -670 -0.00793771252048078 -671 -0.00821559065464683 -672 -0.00836801649799504 -673 -0.00801406294900344 -674 -0.0068829238602205 -675 0.0587431729672395 -676 0.0679066498016378 -677 0.00138627052356425 -678 0.045430011210707 -679 0.0703642058717147 -680 -0.00785311036081027 -681 0.0393771166371859 -682 -0.0012573720198598 -683 0.0787866974453597 -684 -0.00622669473512034 -685 -0.00636435714406588 -686 -0.00498738462505791 -687 -0.00682069596495773 -688 -0.00626878401038485 -689 -0.00829494420297491 -690 -0.00672112910303483 -691 -0.00742349355313316 -692 -0.00663050740514031 -693 -0.00668402104568857 -694 -0.00765554385447826 -695 -0.00750480426076586 -696 -0.00755677083867405 -697 -0.00878562401331522 -698 -0.00750067365297707 -699 -0.00777302023891454 -700 -0.00817258866736239 -701 -0.00782461564356417 -702 -0.00524788018311442 -703 -0.00639934484202989 -704 -0.00643323873066334 -705 -0.00675310931225713 -706 -0.00662734325519555 -707 -0.00521831889291382 -708 -0.00564541170834083 -709 -0.00456417269308792 -710 -0.00400766521918149 -711 -0.00371044720499201 -712 -0.00477769884156836 -713 -0.00650815478194108 -714 -0.00648004714637358 -715 -0.00676089500421721 -716 -0.00680941068103167 -717 -0.00642611423395982 -718 -0.00702188737616296 -719 -0.00653395389621014 -720 -0.00584494763207698 -721 -0.00698560115812894 -722 -0.00617395252882351 -723 -0.00649589045366301 -724 -0.00697571124768394 -725 -0.00710622766255317 -726 -0.00619879747257016 -727 -0.00665952366507082 -728 -0.00697267381777301 -729 -0.00656067343167249 -730 -0.00686476942480864 -731 -0.00642237619826439 -732 -0.00571464839985842 -733 0.0667446844690344 -734 -0.000602956363836805 -735 0.0435578419252502 -736 0.0671949304076346 -737 0.00272911716837698 -738 0.0617459164425819 -739 -0.00803573888395584 -740 0.0408644996908555 -741 -0.00188635612841879 -742 0.012816656873346 -743 -0.00568767407759494 -744 -0.00636171895252407 -745 -0.00542006518701238 -746 -0.00762131167004239 -747 -0.00660561178711003 -748 -0.00606759153689151 -749 -0.0058887906931096 -750 -0.00489479103900307 -751 -0.00560951874516548 -752 -0.00616879095509287 -753 -0.00635688929093473 -754 -0.00647498478390112 -755 -0.00602500915318228 -756 -0.00733096951475789 -757 -0.00594264381799701 -758 -0.00639292931982792 -759 -0.00572524668506834 -760 -0.00539599866786123 -761 -0.00379529224483641 -762 -0.00508628266806213 -763 -0.00482859601859399 -764 -0.00384270276169917 -765 -0.0048947554317503 -766 -0.0036868713314995 -767 -0.00296664588261117 -768 -0.00394853350358643 -769 -0.00370978621561119 -770 -0.00496135959443785 -771 -0.00483764544982328 -772 -0.00514032926285884 -773 -0.00429422735197048 -774 -0.00533057103732123 -775 -0.00536211175807313 -776 -0.00507354991704586 -777 -0.00523842710609345 -778 -0.00538601193828756 -779 -0.00457245530033061 -780 -0.00555196995586425 -781 -0.00431853553236008 -782 -0.00528202292794999 -783 -0.00548332867892791 -784 -0.0054668106220194 -785 -0.00467211264805423 -786 -0.0056172070705691 -787 -0.0050524268347218 -788 -0.00490507861057278 -789 -0.00533817709181219 -790 -0.00320459126822799 -791 0.000899360051725526 -792 0.0415445575505902 -793 0.0636610531703114 -794 -0.0016809425357539 -795 0.0687212087083107 -796 0.000196803163775908 -797 0.0629583673226595 -798 -0.00692549309097212 -799 -0.00464547193258324 -800 -0.00554999704707722 -801 -0.00548776067864322 -802 -0.00542976281097604 -803 -0.0035044437646846 -804 -0.0055525582475137 -805 -0.00571646473007065 -806 -0.00559650400651719 -807 -0.0038274405540596 -808 -0.0049295061654944 -809 -0.00431367615172496 -810 -0.00488424593891825 -811 -0.00508803026004008 -812 -0.00516376184293035 -813 -0.00533514975859532 -814 -0.00495590288647863 -815 -0.00582914296339316 -816 -0.00363638197988919 -817 -0.00435167714877856 -818 -0.00395852323776287 -819 -0.0040209798766184 -820 -0.00259964040539382 -821 -0.00252589454921766 -822 -0.00402931674090356 -823 -0.00437393888079731 -824 -0.00424357159059594 -825 -0.00410943374121717 -826 -0.00317027800134567 -827 -0.00401422305864503 -828 -0.00362959396117676 -829 -0.00435662189051477 -830 -0.00429725981497675 -831 -0.00437374795310113 -832 -0.00378466430841879 -833 -0.00411294642315096 -834 -0.00378707889918487 -835 -0.00453957661876227 -836 -0.00428380826395531 -837 -0.00440314525366383 -838 -0.0035999051330324 -839 -0.00448715088820831 -840 -0.00394825961839359 -841 -0.00424255651229298 -842 -0.00457239362923998 -843 -0.00454960510129971 -844 -0.00359729823872128 -845 -0.00427987549442926 -846 -0.00383749859614317 -847 -0.00440264075958008 -848 -0.00443053281886172 -849 -0.00462479790588209 -850 0.0635581089210887 -851 -0.00436894515178304 -852 0.0644673368682151 -853 -0.000871046243511147 -854 0.0774867967247699 -855 -0.00520058993039265 -856 -0.00455758197376518 -857 -0.0045515125818426 -858 -0.00326760124250017 -859 -0.00391042035486497 -860 -0.00365931176845998 -861 -0.00406590514483785 -862 -0.0025402582470179 -863 -0.00536731784656349 -864 -0.00383767883865199 -865 -0.00355617763954968 -866 -0.00378000247138692 -867 -0.00392301919821498 -868 -0.00311017256485425 -869 -0.00362676859689902 -870 -0.00388528530404416 -871 -0.00403811507092716 -872 -0.00389341264783238 -873 -0.00250872494912967 -874 -0.00227481761327797 -875 -0.00232996833366221 -876 -0.00304083453398083 -877 -0.00268074555016819 -878 -0.00265096778109124 -879 -0.00262000280831905 -880 -0.00263328713175465 -881 -0.0025831537476473 -882 -0.00285396803049453 -883 -0.00275081518908208 -884 -0.00275786365878849 -885 -0.00270692981149454 -886 -0.00279346701415621 -887 -0.00243358618146588 -888 -0.00292581648863345 -889 -0.00324682684580069 -890 -0.00268405340278505 -891 -0.00298098008752344 -892 -0.0030275487992921 -893 -0.00253465692577619 -894 -0.0030528198225934 -895 -0.00306163668899383 -896 -0.00302971568628192 -897 -0.00312372318456645 -898 -0.00302532654866883 -899 -0.00260699554256586 -900 -0.00314997872940616 -901 -0.00310092374684808 -902 -0.00285287807280204 -903 -0.00322514674479286 -904 -0.00324555248275787 -905 -0.00266343884682981 -906 -0.0033292088604627 -907 -0.00311942534161818 -908 -0.003188028948592 -909 0.063849474353312 -910 -0.00314766360320187 -911 0.0654720703776586 -912 -0.00104922659034679 -913 0.00682464273763961 -914 -0.00303985655616328 -915 -0.00305320941524036 -916 -0.00235000269848827 -917 -0.00159322372169743 -918 -0.00266570495618958 -919 -0.00262099570862898 -920 -0.00331666377238153 -921 -0.000308570913141365 -922 -0.0043164022171378 -923 -0.00371227484203275 -924 -0.00247827724873875 -925 -0.00234032536054011 -926 -0.00253743141649567 -927 -0.00196547166307156 -928 -0.00258072736023124 -929 -0.00262490193099622 -930 -0.00130204665127498 -931 -0.00126358935693649 -932 -0.00125324190600646 -933 -0.00103101472775934 -934 -0.00130963767061068 -935 -0.00170600528719406 -936 -0.00131231544424995 -937 -0.00130240649250473 -938 -0.0011496494054081 -939 -0.00120338315610114 -940 -0.00107955390929202 -941 -0.00136336765253578 -942 -0.00138525137115296 -943 -0.00142000506928781 -944 -0.00137347169208518 -945 -0.00130072987756282 -946 -0.00149282878067872 -947 -0.00147328073275425 -948 -0.00148996134571696 -949 -0.0015346094598941 -950 -0.00155787525175409 -951 -0.0015758298667031 -952 -0.00144258818629267 -953 -0.0016057038498501 -954 -0.00161313789189179 -955 -0.0014926163928444 -956 -0.00167630619540263 -957 -0.00171225333920666 -958 -0.00158417048330168 -959 -0.00172363849918105 -960 -0.00178681745393769 -961 -0.00177326985666539 -962 -0.00177274859905472 -963 -0.00180813461186522 -964 -0.00164734316246358 -965 -0.00179758469878046 -966 -0.00170533834289266 -967 -0.0018391064291266 -968 0.0648568044321966 -969 -0.00181391508277247 -970 -0.00187271774497418 -971 -0.00171843154333231 -972 0.00690748933974905 -973 -0.0020046618702145 -974 -0.00209930430368119 -975 -0.00151158386207428 -976 -0.00215827618636864 -977 -0.00219374577659291 -978 -0.00221636226760568 -979 -0.00228093075519445 -980 -0.00204652728069895 -981 -0.00229765429774947 -982 -0.00230704101453769 -983 -0.00107403973652915 -984 -0.00110441180969535 -985 -0.00113692360921596 -986 -0.00114267728647558 -987 0.000141381944635982 -988 0.00011755670125973 -989 9.44527623139297e-05 -990 7.92340829889737e-05 -991 0.000230018756762113 -992 0.000207110838703588 -993 0.000182764350871147 -994 0.000169272314028801 -995 0.000144905246673696 -996 0.000120096836237343 -997 9.53172448027285e-05 -998 7.0792968638772e-05 -999 4.98796983407663e-05 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat deleted file mode 100644 index 797a3d09..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt#parser.dat +++ /dev/null @@ -1,901 +0,0 @@ -#scatter real total user system repeat -101 0.00124120712280273 0.0 0.0 0.0 101 -102 0.00123310089111328 0.0 0.0 0.0 102 -103 0.0012359619140625 0.0 0.0 0.0 103 -104 0.00124216079711914 0.0 0.0 0.0 104 -105 0.00124096870422363 0.0 0.0 0.0 105 -106 0.00124096870422363 0.00999999999999979 0.00999999999999979 0.0 106 -107 0.00124692916870117 0.0 0.0 0.0 107 -108 0.00122189521789551 0.0 0.0 0.0 108 -109 0.00124287605285645 0.0 0.0 0.0 109 -110 0.00124287605285645 0.0 0.0 0.0 110 -111 0.00124597549438477 0.0 0.0 0.0 111 -112 0.0012519359588623 0.0 0.0 0.0 112 -113 0.00124788284301758 0.0 0.0 0.0 113 -114 0.00124502182006836 0.0100000000000007 0.0100000000000007 0.0 114 -115 0.00124692916870117 0.0 0.0 0.0 115 -116 0.00123810768127441 0.0 0.0 0.0 116 -117 0.00125002861022949 0.0 0.0 0.0 117 -118 0.00125789642333984 0.0 0.0 0.0 118 -119 0.0300710201263428 0.0299999999999994 0.0299999999999994 0.0 119 -120 0.00127291679382324 0.0 0.0 0.0 120 -121 0.00133109092712402 0.0 0.0 0.0 121 -122 0.0012810230255127 0.0100000000000007 0.0100000000000007 0.0 122 -123 0.00127792358398438 0.0 0.0 0.0 123 -124 0.0012671947479248 0.0 0.0 0.0 124 -125 0.00126814842224121 0.0 0.0 0.0 125 -126 0.00125694274902344 0.0 0.0 0.0 126 -127 0.00124883651733398 0.0 0.0 0.0 127 -128 0.00124907493591309 0.0 0.0 0.0 128 -129 0.0012509822845459 0.0 0.0 0.0 129 -130 0.0012509822845459 0.00999999999999979 0.00999999999999979 0.0 130 -131 0.00125312805175781 0.0 0.0 0.0 131 -132 0.00131797790527344 0.0 0.0 0.0 132 -133 0.00125694274902344 0.0 0.0 0.0 133 -134 0.00125288963317871 0.0 0.0 0.0 134 -135 0.0012519359588623 0.0 0.0 0.0 135 -136 0.00124692916870117 0.0 0.0 0.0 136 -137 0.00124692916870117 0.0 0.0 0.0 137 -138 0.00124907493591309 0.00999999999999979 0.00999999999999979 0.0 138 -139 0.0012509822845459 0.0 0.0 0.0 139 -140 0.00125598907470703 0.0 0.0 0.0 140 -141 0.00124287605285645 0.0 0.0 0.0 141 -142 0.00124812126159668 0.0 0.0 0.0 142 -143 0.00124883651733398 0.0 0.0 0.0 143 -144 0.00123500823974609 0.0 0.0 0.0 144 -145 0.00124382972717285 0.00999999999999979 0.00999999999999979 0.0 145 -146 0.00123715400695801 0.0 0.0 0.0 146 -147 0.00134897232055664 0.0 0.0 0.0 147 -148 0.00123906135559082 0.0 0.0 0.0 148 -149 0.00124788284301758 0.0 0.0 0.0 149 -150 0.0012359619140625 0.0 0.0 0.0 150 -151 0.00123476982116699 0.0 0.0 0.0 151 -152 0.00124597549438477 0.0 0.0 0.0 152 -153 0.00124597549438477 0.0100000000000007 0.0100000000000007 0.0 153 -154 0.00123190879821777 0.0 0.0 0.0 154 -155 0.0012509822845459 0.0 0.0 0.0 155 -156 0.00124096870422363 0.0 0.0 0.0 156 -157 0.0012359619140625 0.0 0.0 0.0 157 -158 0.00123906135559082 0.0 0.0 0.0 158 -159 0.00123906135559082 0.0 0.0 0.0 159 -160 0.00123691558837891 0.0 0.0 0.0 160 -161 0.00124001502990723 0.00999999999999979 0.00999999999999979 0.0 161 -162 0.00124597549438477 0.0 0.0 0.0 162 -163 0.00124096870422363 0.0 0.0 0.0 163 -164 0.0012359619140625 0.0 0.0 0.0 164 -165 0.00123500823974609 0.0 0.0 0.0 165 -166 0.00173211097717285 0.0 0.0 0.0 166 -167 0.00125217437744141 0.0 0.0 0.0 167 -168 0.00124406814575195 0.00999999999999979 0.00999999999999979 0.0 168 -169 0.00124096870422363 0.0 0.0 0.0 169 -170 0.00123381614685059 0.0 0.0 0.0 170 -171 0.00124001502990723 0.0 0.0 0.0 171 -172 0.00124001502990723 0.0 0.0 0.0 172 -173 0.00123715400695801 0.0 0.0 0.0 173 -174 0.00123691558837891 0.0 0.0 0.0 174 -175 0.00124692916870117 0.0 0.0 0.0 175 -176 0.00130796432495117 0.00999999999999979 0.00999999999999979 0.0 176 -177 0.00127100944519043 0.0 0.0 0.0 177 -178 0.0301418304443359 0.0300000000000002 0.0300000000000002 0.0 178 -179 0.00127196311950684 0.0 0.0 0.0 179 -180 0.00131416320800781 0.0 0.0 0.0 180 -181 0.00119805335998535 0.0 0.0 0.0 181 -182 0.00128316879272461 0.0 0.0 0.0 182 -183 0.0013129711151123 0.0 0.0 0.0 183 -184 0.00127100944519043 0.0 0.0 0.0 184 -185 0.00141692161560059 0.0 0.0 0.0 185 -186 0.00130701065063477 0.0 0.0 0.0 186 -187 0.00126099586486816 0.0 0.0 0.0 187 -188 0.00125694274902344 0.0 0.0 0.0 188 -189 0.00124502182006836 0.0 0.0 0.0 189 -190 0.00125217437744141 0.0 0.0 0.0 190 -191 0.00124216079711914 0.0 0.0 0.0 191 -192 0.00125408172607422 0.0100000000000007 0.0100000000000007 0.0 192 -193 0.00124502182006836 0.0 0.0 0.0 193 -194 0.00125718116760254 0.0 0.0 0.0 194 -195 0.00125503540039062 0.0 0.0 0.0 195 -196 0.00125598907470703 0.0 0.0 0.0 196 -197 0.00137186050415039 0.0 0.0 0.0 197 -198 0.0011131763458252 0.0 0.0 0.0 198 -199 0.00124788284301758 0.0 0.0 0.0 199 -200 0.00124597549438477 0.00999999999999979 0.00999999999999979 0.0 200 -201 0.00124597549438477 0.0 0.0 0.0 201 -202 0.00132608413696289 0.0 0.0 0.0 202 -203 0.00129795074462891 0.0 0.0 0.0 203 -204 0.00120997428894043 0.0 0.0 0.0 204 -205 0.00124192237854004 0.0 0.0 0.0 205 -206 0.00126290321350098 0.0 0.0 0.0 206 -207 0.00125002861022949 0.00999999999999979 0.00999999999999979 0.0 207 -208 0.00125503540039062 0.0 0.0 0.0 208 -209 0.00124883651733398 0.0 0.0 0.0 209 -210 0.00124192237854004 0.0 0.0 0.0 210 -211 0.00124812126159668 0.0 0.0 0.0 211 -212 0.00125002861022949 0.0 0.0 0.0 212 -213 0.00124287605285645 0.0 0.0 0.0 213 -214 0.00125288963317871 0.0 0.0 0.0 214 -215 0.00125002861022949 0.00999999999999979 0.00999999999999979 0.0 215 -216 0.00124287605285645 0.0 0.0 0.0 216 -217 0.00124001502990723 0.0 0.0 0.0 217 -218 0.00124883651733398 0.0 0.0 0.0 218 -219 0.00124192237854004 0.0 0.0 0.0 219 -220 0.00123405456542969 0.0 0.0 0.0 220 -221 0.00124883651733398 0.0 0.0 0.0 221 -222 0.00123810768127441 0.0 0.0 0.0 222 -223 0.0012359619140625 0.00999999999999979 0.00999999999999979 0.0 223 -224 0.00123405456542969 0.0 0.0 0.0 224 -225 0.00124788284301758 0.0 0.0 0.0 225 -226 0.00148200988769531 0.0 0.0 0.0 226 -227 0.00123882293701172 0.0 0.0 0.0 227 -228 0.00124907493591309 0.0 0.0 0.0 228 -229 0.00124120712280273 0.0 0.0 0.0 229 -230 0.00124096870422363 0.0 0.0 0.0 230 -231 0.00124812126159668 0.0100000000000007 0.0100000000000007 0.0 231 -232 0.00124001502990723 0.0 0.0 0.0 232 -233 0.001251220703125 0.0 0.0 0.0 233 -234 0.00123810768127441 0.0 0.0 0.0 234 -235 0.00125885009765625 0.0 0.0 0.0 235 -236 0.00126409530639648 0.0 0.0 0.0 236 -237 0.0301649570465088 0.0299999999999994 0.0299999999999994 0.0 237 -238 0.00130605697631836 0.0 0.0 0.0 238 -239 0.00129795074462891 0.0100000000000007 0.0100000000000007 0.0 239 -240 0.00127410888671875 0.0 0.0 0.0 240 -241 0.00134420394897461 0.0 0.0 0.0 241 -242 0.00127720832824707 0.0 0.0 0.0 242 -243 0.00126409530639648 0.0 0.0 0.0 243 -244 0.00125288963317871 0.0 0.0 0.0 244 -245 0.00125384330749512 0.0 0.0 0.0 245 -246 0.00124788284301758 0.0 0.0 0.0 246 -247 0.00124287605285645 0.00999999999999979 0.00999999999999979 0.0 247 -248 0.00125813484191895 0.0 0.0 0.0 248 -249 0.00125002861022949 0.0 0.0 0.0 249 -250 0.00124502182006836 0.0 0.0 0.0 250 -251 0.00125694274902344 0.0 0.0 0.0 251 -252 0.00124192237854004 0.0 0.0 0.0 252 -253 0.00128889083862305 0.0 0.0 0.0 253 -254 0.00124883651733398 0.00999999999999979 0.00999999999999979 0.0 254 -255 0.00124907493591309 0.0 0.0 0.0 255 -256 0.00124812126159668 0.0 0.0 0.0 256 -257 0.00125503540039062 0.0 0.0 0.0 257 -258 0.00125789642333984 0.0 0.0 0.0 258 -259 0.00124692916870117 0.0 0.0 0.0 259 -260 0.00124812126159668 0.0 0.0 0.0 260 -261 0.00124192237854004 0.0 0.0 0.0 261 -262 0.00124287605285645 0.00999999999999979 0.00999999999999979 0.0 262 -263 0.00124192237854004 0.0 0.0 0.0 263 -264 0.00123500823974609 0.0 0.0 0.0 264 -265 0.00123715400695801 0.0 0.0 0.0 265 -266 0.0018610954284668 0.0 0.0 0.0 266 -267 0.00128507614135742 0.0 0.0 0.0 267 -268 0.00123906135559082 0.0 0.0 0.0 268 -269 0.00124001502990723 0.0 0.0 0.0 269 -270 0.00124907493591309 0.0 0.0 0.0 270 -271 0.00124716758728027 0.0 0.0 0.0 271 -272 0.00124001502990723 0.0 0.0 0.0 272 -273 0.00125288963317871 0.0 0.0 0.0 273 -274 0.00118589401245117 0.0 0.0 0.0 274 -275 0.00124192237854004 0.0 0.0 0.0 275 -276 0.00123906135559082 0.0 0.0 0.0 276 -277 0.00125002861022949 0.00999999999999979 0.00999999999999979 0.0 277 -278 0.00124597549438477 0.0 0.0 0.0 278 -279 0.00124096870422363 0.0 0.0 0.0 279 -280 0.00124382972717285 0.0 0.0 0.0 280 -281 0.00125694274902344 0.0 0.0 0.0 281 -282 0.00124812126159668 0.0 0.0 0.0 282 -283 0.00124192237854004 0.0 0.0 0.0 283 -284 0.001251220703125 0.0 0.0 0.0 284 -285 0.00128316879272461 0.00999999999999979 0.00999999999999979 0.0 285 -286 0.00124287605285645 0.0 0.0 0.0 286 -287 0.00133800506591797 0.0 0.0 0.0 287 -288 0.00124788284301758 0.0 0.0 0.0 288 -289 0.0012509822845459 0.0 0.0 0.0 289 -290 0.00124883651733398 0.0 0.0 0.0 290 -291 0.00124502182006836 0.0 0.0 0.0 291 -292 0.00124382972717285 0.0 0.0 0.0 292 -293 0.00125908851623535 0.00999999999999979 0.00999999999999979 0.0 293 -294 0.00126791000366211 0.0 0.0 0.0 294 -295 0.0215630531311035 0.0200000000000005 0.0200000000000005 0.0 295 -296 0.00352096557617188 0.0 0.0 0.0 296 -297 0.00220417976379395 0.0 0.0 0.0 297 -298 0.00125384330749512 0.00999999999999979 0.00999999999999979 0.0 298 -299 0.00129985809326172 0.0 0.0 0.0 299 -300 0.00123715400695801 0.0 0.0 0.0 300 -301 0.00124096870422363 0.0 0.0 0.0 301 -302 0.00124001502990723 0.0 0.0 0.0 302 -303 0.00123405456542969 0.0 0.0 0.0 303 -304 0.0012509822845459 0.0 0.0 0.0 304 -305 0.0012509822845459 0.00999999999999979 0.00999999999999979 0.0 305 -306 0.00125288963317871 0.0 0.0 0.0 306 -307 0.00126099586486816 0.0 0.0 0.0 307 -308 0.00124788284301758 0.0 0.0 0.0 308 -309 0.00124907493591309 0.0 0.0 0.0 309 -310 0.00124096870422363 0.0 0.0 0.0 310 -311 0.00125002861022949 0.0 0.0 0.0 311 -312 0.0012519359588623 0.0 0.0 0.0 312 -313 0.00126314163208008 0.0100000000000007 0.0100000000000007 0.0 313 -314 0.00124406814575195 0.0 0.0 0.0 314 -315 0.00125789642333984 0.0 0.0 0.0 315 -316 0.00128793716430664 0.0 0.0 0.0 316 -317 0.0012509822845459 0.0 0.0 0.0 317 -318 0.00156903266906738 0.0 0.0 0.0 318 -319 0.00181221961975098 0.0 0.0 0.0 319 -320 0.0018010139465332 0.00999999999999979 0.00999999999999979 0.0 320 -321 0.00193095207214355 0.0 0.0 0.0 321 -322 0.0014030933380127 0.0 0.0 0.0 322 -323 0.0012519359588623 0.0 0.0 0.0 323 -324 0.00121903419494629 0.0 0.0 0.0 324 -325 0.00120687484741211 0.0 0.0 0.0 325 -326 0.00123000144958496 0.0 0.0 0.0 326 -327 0.00123095512390137 0.00999999999999979 0.00999999999999979 0.0 327 -328 0.00124692916870117 0.0 0.0 0.0 328 -329 0.00127005577087402 0.0 0.0 0.0 329 -330 0.00124716758728027 0.0 0.0 0.0 330 -331 0.00126481056213379 0.0 0.0 0.0 331 -332 0.00125694274902344 0.0 0.0 0.0 332 -333 0.00118613243103027 0.0 0.0 0.0 333 -334 0.00124001502990723 0.0 0.0 0.0 334 -335 0.00124812126159668 0.00999999999999979 0.00999999999999979 0.0 335 -336 0.00126791000366211 0.0 0.0 0.0 336 -337 0.00124692916870117 0.0 0.0 0.0 337 -338 0.00124907493591309 0.0 0.0 0.0 338 -339 0.00126218795776367 0.0 0.0 0.0 339 -340 0.00124406814575195 0.0 0.0 0.0 340 -341 0.0012359619140625 0.0 0.0 0.0 341 -342 0.00125885009765625 0.0100000000000007 0.0100000000000007 0.0 342 -343 0.00131320953369141 0.0 0.0 0.0 343 -344 0.0012519359588623 0.0 0.0 0.0 344 -345 0.00123691558837891 0.0 0.0 0.0 345 -346 0.00125694274902344 0.0 0.0 0.0 346 -347 0.00139403343200684 0.0 0.0 0.0 347 -348 0.00127506256103516 0.0 0.0 0.0 348 -349 0.00130009651184082 0.0 0.0 0.0 349 -350 0.00128412246704102 0.00999999999999979 0.00999999999999979 0.0 350 -351 0.00133395195007324 0.0 0.0 0.0 351 -352 0.00152087211608887 0.0 0.0 0.0 352 -353 0.0015110969543457 0.0 0.0 0.0 353 -354 0.0320370197296143 0.0299999999999994 0.0299999999999994 0.0 354 -355 0.00130319595336914 0.0 0.0 0.0 355 -356 0.0012969970703125 0.0100000000000007 0.0100000000000007 0.0 356 -357 0.00127792358398438 0.0 0.0 0.0 357 -358 0.00127506256103516 0.0 0.0 0.0 358 -359 0.00126791000366211 0.0 0.0 0.0 359 -360 0.00126385688781738 0.0 0.0 0.0 360 -361 0.00125694274902344 0.0 0.0 0.0 361 -362 0.00125002861022949 0.0 0.0 0.0 362 -363 0.00125598907470703 0.0 0.0 0.0 363 -364 0.00125002861022949 0.00999999999999979 0.00999999999999979 0.0 364 -365 0.00124692916870117 0.0 0.0 0.0 365 -366 0.00125503540039062 0.0 0.0 0.0 366 -367 0.00125217437744141 0.0 0.0 0.0 367 -368 0.00124406814575195 0.0 0.0 0.0 368 -369 0.00125789642333984 0.0 0.0 0.0 369 -370 0.0012509822845459 0.0 0.0 0.0 370 -371 0.00124287605285645 0.0 0.0 0.0 371 -372 0.00124812126159668 0.00999999999999979 0.00999999999999979 0.0 372 -373 0.00124692916870117 0.0 0.0 0.0 373 -374 0.0012519359588623 0.0 0.0 0.0 374 -375 0.0012519359588623 0.0 0.0 0.0 375 -376 0.00125503540039062 0.0 0.0 0.0 376 -377 0.00123691558837891 0.0 0.0 0.0 377 -378 0.00123310089111328 0.0 0.0 0.0 378 -379 0.00123190879821777 0.0 0.0 0.0 379 -380 0.00124382972717285 0.00999999999999979 0.00999999999999979 0.0 380 -381 0.00123906135559082 0.0 0.0 0.0 381 -382 0.00124883651733398 0.0 0.0 0.0 382 -383 0.00124192237854004 0.0 0.0 0.0 383 -384 0.0012509822845459 0.0 0.0 0.0 384 -385 0.00124406814575195 0.0 0.0 0.0 385 -386 0.00123405456542969 0.0 0.0 0.0 386 -387 0.00124788284301758 0.0100000000000007 0.0100000000000007 0.0 387 -388 0.00125002861022949 0.0 0.0 0.0 388 -389 0.00123214721679688 0.0 0.0 0.0 389 -390 0.00123810768127441 0.0 0.0 0.0 390 -391 0.00124287605285645 0.0 0.0 0.0 391 -392 0.0012359619140625 0.0 0.0 0.0 392 -393 0.00123405456542969 0.0 0.0 0.0 393 -394 0.00124621391296387 0.0 0.0 0.0 394 -395 0.00124907493591309 0.00999999999999979 0.00999999999999979 0.0 395 -396 0.00124216079711914 0.0 0.0 0.0 396 -397 0.00123190879821777 0.0 0.0 0.0 397 -398 0.00139594078063965 0.0 0.0 0.0 398 -399 0.0022280216217041 0.0 0.0 0.0 399 -400 0.00197100639343262 0.0 0.0 0.0 400 -401 0.00163888931274414 0.00999999999999979 0.00999999999999979 0.0 401 -402 0.00142812728881836 0.0 0.0 0.0 402 -403 0.00138711929321289 0.0 0.0 0.0 403 -404 0.00148701667785645 0.0 0.0 0.0 404 -405 0.00162696838378906 0.0 0.0 0.0 405 -406 0.00157594680786133 0.0 0.0 0.0 406 -407 0.00158596038818359 0.00999999999999979 0.00999999999999979 0.0 407 -408 0.00186491012573242 0.0 0.0 0.0 408 -409 0.0016481876373291 0.0 0.0 0.0 409 -410 0.00135707855224609 0.0 0.0 0.0 410 -411 0.00129485130310059 0.0 0.0 0.0 411 -412 0.0299890041351318 0.0300000000000002 0.0300000000000002 0.0 412 -413 0.00138497352600098 0.0 0.0 0.0 413 -414 0.0013120174407959 0.0 0.0 0.0 414 -415 0.00127696990966797 0.00999999999999979 0.00999999999999979 0.0 415 -416 0.00128507614135742 0.0 0.0 0.0 416 -417 0.00126981735229492 0.0 0.0 0.0 417 -418 0.00126814842224121 0.0 0.0 0.0 418 -419 0.00125718116760254 0.0 0.0 0.0 419 -420 0.00125408172607422 0.0 0.0 0.0 420 -421 0.0012509822845459 0.0 0.0 0.0 421 -422 0.00124716758728027 0.0 0.0 0.0 422 -423 0.00125408172607422 0.0100000000000007 0.0100000000000007 0.0 423 -424 0.001251220703125 0.0 0.0 0.0 424 -425 0.00124812126159668 0.0 0.0 0.0 425 -426 0.00124692916870117 0.0 0.0 0.0 426 -427 0.00124597549438477 0.0 0.0 0.0 427 -428 0.001251220703125 0.0 0.0 0.0 428 -429 0.00124311447143555 0.0 0.0 0.0 429 -430 0.00124812126159668 0.00999999999999979 0.00999999999999979 0.0 430 -431 0.00124311447143555 0.0 0.0 0.0 431 -432 0.00125002861022949 0.0 0.0 0.0 432 -433 0.00125002861022949 0.0 0.0 0.0 433 -434 0.00125002861022949 0.0 0.0 0.0 434 -435 0.00124502182006836 0.0 0.0 0.0 435 -436 0.00124382972717285 0.0 0.0 0.0 436 -437 0.00124812126159668 0.0 0.0 0.0 437 -438 0.00124406814575195 0.00999999999999979 0.00999999999999979 0.0 438 -439 0.00122785568237305 0.0 0.0 0.0 439 -440 0.00123214721679688 0.0 0.0 0.0 440 -441 0.00123691558837891 0.0 0.0 0.0 441 -442 0.00124502182006836 0.0 0.0 0.0 442 -443 0.00123405456542969 0.0 0.0 0.0 443 -444 0.00124311447143555 0.0 0.0 0.0 444 -445 0.00124382972717285 0.0 0.0 0.0 445 -446 0.00123906135559082 0.00999999999999979 0.00999999999999979 0.0 446 -447 0.00124096870422363 0.0 0.0 0.0 447 -448 0.00124311447143555 0.0 0.0 0.0 448 -449 0.00124788284301758 0.0 0.0 0.0 449 -450 0.00123500823974609 0.0 0.0 0.0 450 -451 0.00124096870422363 0.0 0.0 0.0 451 -452 0.00123906135559082 0.0 0.0 0.0 452 -453 0.00123500823974609 0.0 0.0 0.0 453 -454 0.0012359619140625 0.0100000000000007 0.0100000000000007 0.0 454 -455 0.00124192237854004 0.0 0.0 0.0 455 -456 0.00124096870422363 0.0 0.0 0.0 456 -457 0.00123405456542969 0.0 0.0 0.0 457 -458 0.00124311447143555 0.0 0.0 0.0 458 -459 0.00158381462097168 0.0 0.0 0.0 459 -460 0.00182890892028809 0.0 0.0 0.0 460 -461 0.00183510780334473 0.00999999999999979 0.00999999999999979 0.0 461 -462 0.00188088417053223 0.0 0.0 0.0 462 -463 0.00174307823181152 0.0 0.0 0.0 463 -464 0.00124692916870117 0.0 0.0 0.0 464 -465 0.00123906135559082 0.0 0.0 0.0 465 -466 0.00124096870422363 0.0 0.0 0.0 466 -467 0.00124311447143555 0.00999999999999979 0.00999999999999979 0.0 467 -468 0.00125503540039062 0.0 0.0 0.0 468 -469 0.00125908851623535 0.0 0.0 0.0 469 -470 0.0304310321807861 0.0300000000000002 0.0300000000000002 0.0 470 -471 0.00145387649536133 0.0 0.0 0.0 471 -472 0.00129985809326172 0.0 0.0 0.0 472 -473 0.00149822235107422 0.0 0.0 0.0 473 -474 0.0015261173248291 0.0 0.0 0.0 474 -475 0.00127696990966797 0.00999999999999979 0.00999999999999979 0.0 475 -476 0.0012669563293457 0.0 0.0 0.0 476 -477 0.00122594833374023 0.0 0.0 0.0 477 -478 0.00125002861022949 0.0 0.0 0.0 478 -479 0.00124478340148926 0.0 0.0 0.0 479 -480 0.00125694274902344 0.0 0.0 0.0 480 -481 0.001251220703125 0.0 0.0 0.0 481 -482 0.0012509822845459 0.0 0.0 0.0 482 -483 0.0012509822845459 0.00999999999999979 0.00999999999999979 0.0 483 -484 0.00125288963317871 0.0 0.0 0.0 484 -485 0.00125408172607422 0.0 0.0 0.0 485 -486 0.00125718116760254 0.0 0.0 0.0 486 -487 0.00124716758728027 0.0 0.0 0.0 487 -488 0.00117087364196777 0.0 0.0 0.0 488 -489 0.00124812126159668 0.0 0.0 0.0 489 -490 0.00122618675231934 0.00999999999999979 0.00999999999999979 0.0 490 -491 0.00125598907470703 0.0 0.0 0.0 491 -492 0.00124311447143555 0.0 0.0 0.0 492 -493 0.00124192237854004 0.0 0.0 0.0 493 -494 0.00124692916870117 0.0 0.0 0.0 494 -495 0.00123381614685059 0.0 0.0 0.0 495 -496 0.00123691558837891 0.0 0.0 0.0 496 -497 0.00123906135559082 0.0 0.0 0.0 497 -498 0.00125718116760254 0.0100000000000007 0.0100000000000007 0.0 498 -499 0.00124502182006836 0.0 0.0 0.0 499 -500 0.00124788284301758 0.0 0.0 0.0 500 -501 0.00124812126159668 0.0 0.0 0.0 501 -502 0.00124096870422363 0.0 0.0 0.0 502 -503 0.00124287605285645 0.0 0.0 0.0 503 -504 0.00122690200805664 0.0 0.0 0.0 504 -505 0.00124406814575195 0.0 0.0 0.0 505 -506 0.00123786926269531 0.00999999999999979 0.00999999999999979 0.0 506 -507 0.00124001502990723 0.0 0.0 0.0 507 -508 0.0012519359588623 0.0 0.0 0.0 508 -509 0.00124597549438477 0.0 0.0 0.0 509 -510 0.00124311447143555 0.0 0.0 0.0 510 -511 0.00124979019165039 0.0 0.0 0.0 511 -512 0.00124502182006836 0.0 0.0 0.0 512 -513 0.00124001502990723 0.0 0.0 0.0 513 -514 0.00123810768127441 0.00999999999999979 0.00999999999999979 0.0 514 -515 0.00125002861022949 0.0 0.0 0.0 515 -516 0.00124812126159668 0.0 0.0 0.0 516 -517 0.00124311447143555 0.0 0.0 0.0 517 -518 0.00125288963317871 0.0 0.0 0.0 518 -519 0.00124979019165039 0.0 0.0 0.0 519 -520 0.00124192237854004 0.0 0.0 0.0 520 -521 0.00124406814575195 0.0 0.0 0.0 521 -522 0.00125622749328613 0.00999999999999979 0.00999999999999979 0.0 522 -523 0.00124907493591309 0.0 0.0 0.0 523 -524 0.00124692916870117 0.0 0.0 0.0 524 -525 0.00125002861022949 0.0 0.0 0.0 525 -526 0.0012671947479248 0.0 0.0 0.0 526 -527 0.00126910209655762 0.0 0.0 0.0 527 -528 0.0301029682159424 0.0300000000000002 0.0300000000000002 0.0 528 -529 0.00129103660583496 0.0 0.0 0.0 529 -530 0.00132203102111816 0.00999999999999979 0.00999999999999979 0.0 530 -531 0.00127696990966797 0.0 0.0 0.0 531 -532 0.00128507614135742 0.0 0.0 0.0 532 -533 0.00127196311950684 0.0 0.0 0.0 533 -534 0.00127100944519043 0.0 0.0 0.0 534 -535 0.00126886367797852 0.0 0.0 0.0 535 -536 0.00125789642333984 0.0 0.0 0.0 536 -537 0.00124311447143555 0.0 0.0 0.0 537 -538 0.0012509822845459 0.0100000000000007 0.0100000000000007 0.0 538 -539 0.00125908851623535 0.0 0.0 0.0 539 -540 0.00124788284301758 0.0 0.0 0.0 540 -541 0.00125002861022949 0.0 0.0 0.0 541 -542 0.0012671947479248 0.0 0.0 0.0 542 -543 0.00125312805175781 0.0 0.0 0.0 543 -544 0.00125885009765625 0.0 0.0 0.0 544 -545 0.00125503540039062 0.00999999999999979 0.00999999999999979 0.0 545 -546 0.00126099586486816 0.0 0.0 0.0 546 -547 0.00126218795776367 0.0 0.0 0.0 547 -548 0.00124883651733398 0.0 0.0 0.0 548 -549 0.00126099586486816 0.0 0.0 0.0 549 -550 0.00126194953918457 0.0 0.0 0.0 550 -551 0.00119996070861816 0.0 0.0 0.0 551 -552 0.00124883651733398 0.0 0.0 0.0 552 -553 0.00124192237854004 0.00999999999999979 0.00999999999999979 0.0 553 -554 0.00124382972717285 0.0 0.0 0.0 554 -555 0.00124311447143555 0.0 0.0 0.0 555 -556 0.00123500823974609 0.0 0.0 0.0 556 -557 0.0012359619140625 0.0 0.0 0.0 557 -558 0.00123882293701172 0.0 0.0 0.0 558 -559 0.0012519359588623 0.0 0.0 0.0 559 -560 0.00124716758728027 0.0 0.0 0.0 560 -561 0.00124406814575195 0.0 0.0 0.0 561 -562 0.00124812126159668 0.00999999999999979 0.00999999999999979 0.0 562 -563 0.00129103660583496 0.0 0.0 0.0 563 -564 0.00124001502990723 0.0 0.0 0.0 564 -565 0.00124406814575195 0.0 0.0 0.0 565 -566 0.00125789642333984 0.0 0.0 0.0 566 -567 0.00124406814575195 0.0 0.0 0.0 567 -568 0.00123500823974609 0.0 0.0 0.0 568 -569 0.00124311447143555 0.0 0.0 0.0 569 -570 0.00124096870422363 0.0 0.0 0.0 570 -571 0.00124001502990723 0.0 0.0 0.0 571 -572 0.00123786926269531 0.0 0.0 0.0 572 -573 0.00125288963317871 0.0 0.0 0.0 573 -574 0.00124502182006836 0.0 0.0 0.0 574 -575 0.00124192237854004 0.0 0.0 0.0 575 -576 0.00124502182006836 0.0 0.0 0.0 576 -577 0.00125479698181152 0.00999999999999979 0.00999999999999979 0.0 577 -578 0.00124502182006836 0.0 0.0 0.0 578 -579 0.00124502182006836 0.0 0.0 0.0 579 -580 0.00124692916870117 0.0 0.0 0.0 580 -581 0.00123095512390137 0.0 0.0 0.0 581 -582 0.00124287605285645 0.0 0.0 0.0 582 -583 0.00125288963317871 0.0 0.0 0.0 583 -584 0.0012669563293457 0.0 0.0 0.0 584 -585 0.00127005577087402 0.00999999999999979 0.00999999999999979 0.0 585 -586 0.0311369895935059 0.0300000000000002 0.0300000000000002 0.0 586 -587 0.00198984146118164 0.0 0.0 0.0 587 -588 0.00141692161560059 0.0 0.0 0.0 588 -589 0.00131011009216309 0.0 0.0 0.0 589 -590 0.0012810230255127 0.0 0.0 0.0 590 -591 0.00123500823974609 0.0 0.0 0.0 591 -592 0.00117397308349609 0.00999999999999979 0.00999999999999979 0.0 592 -593 0.00125908851623535 0.0 0.0 0.0 593 -594 0.00126194953918457 0.0 0.0 0.0 594 -595 0.00124597549438477 0.0 0.0 0.0 595 -596 0.00124692916870117 0.0 0.0 0.0 596 -597 0.00125479698181152 0.0 0.0 0.0 597 -598 0.00127911567687988 0.0 0.0 0.0 598 -599 0.00125789642333984 0.0 0.0 0.0 599 -600 0.00124406814575195 0.00999999999999979 0.00999999999999979 0.0 600 -601 0.00124907493591309 0.0 0.0 0.0 601 -602 0.00124216079711914 0.0 0.0 0.0 602 -603 0.00124907493591309 0.0 0.0 0.0 603 -604 0.00125384330749512 0.0 0.0 0.0 604 -605 0.00125694274902344 0.0 0.0 0.0 605 -606 0.00124192237854004 0.0 0.0 0.0 606 -607 0.00124502182006836 0.0 0.0 0.0 607 -608 0.0012509822845459 0.0100000000000007 0.0100000000000007 0.0 608 -609 0.00123906135559082 0.0 0.0 0.0 609 -610 0.0014030933380127 0.0 0.0 0.0 610 -611 0.00124883651733398 0.0 0.0 0.0 611 -612 0.00135397911071777 0.0 0.0 0.0 612 -613 0.00174593925476074 0.0 0.0 0.0 613 -614 0.00124716758728027 0.0 0.0 0.0 614 -615 0.00124812126159668 0.00999999999999979 0.00999999999999979 0.0 615 -616 0.00125503540039062 0.0 0.0 0.0 616 -617 0.00140786170959473 0.0 0.0 0.0 617 -618 0.00125312805175781 0.0 0.0 0.0 618 -619 0.0012509822845459 0.0 0.0 0.0 619 -620 0.00124096870422363 0.0 0.0 0.0 620 -621 0.0012359619140625 0.0 0.0 0.0 621 -622 0.00124382972717285 0.00999999999999979 0.00999999999999979 0.0 622 -623 0.00124406814575195 0.0 0.0 0.0 623 -624 0.00123000144958496 0.0 0.0 0.0 624 -625 0.00124001502990723 0.0 0.0 0.0 625 -626 0.00124001502990723 0.0 0.0 0.0 626 -627 0.00124001502990723 0.0 0.0 0.0 627 -628 0.00125885009765625 0.0 0.0 0.0 628 -629 0.00124907493591309 0.0 0.0 0.0 629 -630 0.00124192237854004 0.00999999999999979 0.00999999999999979 0.0 630 -631 0.00124406814575195 0.0 0.0 0.0 631 -632 0.0012519359588623 0.0 0.0 0.0 632 -633 0.00124502182006836 0.0 0.0 0.0 633 -634 0.00124287605285645 0.0 0.0 0.0 634 -635 0.00123906135559082 0.0 0.0 0.0 635 -636 0.00124621391296387 0.0 0.0 0.0 636 -637 0.00124502182006836 0.0 0.0 0.0 637 -638 0.00124692916870117 0.00999999999999979 0.00999999999999979 0.0 638 -639 0.0012509822845459 0.0 0.0 0.0 639 -640 0.00132584571838379 0.0 0.0 0.0 640 -641 0.00126409530639648 0.0 0.0 0.0 641 -642 0.00126504898071289 0.0 0.0 0.0 642 -643 0.00127911567687988 0.0 0.0 0.0 643 -644 0.0240340232849121 0.0300000000000002 0.0300000000000002 0.0 644 -645 0.0101561546325684 0.00999999999999979 0.00999999999999979 0.0 645 -646 0.00133299827575684 0.0 0.0 0.0 646 -647 0.00129604339599609 0.0 0.0 0.0 647 -648 0.00124382972717285 0.0 0.0 0.0 648 -649 0.00127410888671875 0.0 0.0 0.0 649 -650 0.00126409530639648 0.0 0.0 0.0 650 -651 0.0012519359588623 0.0 0.0 0.0 651 -652 0.00124597549438477 0.0100000000000007 0.0100000000000007 0.0 652 -653 0.000922918319702148 0.0 0.0 0.0 653 -654 0.00125503540039062 0.0 0.0 0.0 654 -655 0.00124287605285645 0.0 0.0 0.0 655 -656 0.00124692916870117 0.0 0.0 0.0 656 -657 0.00126004219055176 0.0 0.0 0.0 657 -658 0.00125384330749512 0.0 0.0 0.0 658 -659 0.0013279914855957 0.0 0.0 0.0 659 -660 0.00124502182006836 0.00999999999999979 0.00999999999999979 0.0 660 -661 0.00125598907470703 0.0 0.0 0.0 661 -662 0.00124192237854004 0.0 0.0 0.0 662 -663 0.00124096870422363 0.0 0.0 0.0 663 -664 0.00125312805175781 0.0 0.0 0.0 664 -665 0.00124692916870117 0.0 0.0 0.0 665 -666 0.00124597549438477 0.0 0.0 0.0 666 -667 0.00123977661132812 0.0 0.0 0.0 667 -668 0.00124406814575195 0.0 0.0 0.0 668 -669 0.00123500823974609 0.0 0.0 0.0 669 -670 0.00124502182006836 0.0 0.0 0.0 670 -671 0.00124502182006836 0.0 0.0 0.0 671 -672 0.00124382972717285 0.0 0.0 0.0 672 -673 0.00123190879821777 0.0 0.0 0.0 673 -674 0.00123500823974609 0.0 0.0 0.0 674 -675 0.00124692916870117 0.00999999999999979 0.00999999999999979 0.0 675 -676 0.00123310089111328 0.0 0.0 0.0 676 -677 0.00123095512390137 0.0 0.0 0.0 677 -678 0.00124192237854004 0.0 0.0 0.0 678 -679 0.00122690200805664 0.0 0.0 0.0 679 -680 0.00123286247253418 0.0 0.0 0.0 680 -681 0.00124096870422363 0.0 0.0 0.0 681 -682 0.00124192237854004 0.0 0.0 0.0 682 -683 0.00124692916870117 0.0100000000000007 0.0100000000000007 0.0 683 -684 0.0012359619140625 0.0 0.0 0.0 684 -685 0.00123286247253418 0.0 0.0 0.0 685 -686 0.00124001502990723 0.0 0.0 0.0 686 -687 0.00124001502990723 0.0 0.0 0.0 687 -688 0.00123786926269531 0.0 0.0 0.0 688 -689 0.00125002861022949 0.0 0.0 0.0 689 -690 0.00124907493591309 0.0 0.0 0.0 690 -691 0.00129103660583496 0.00999999999999979 0.00999999999999979 0.0 691 -692 0.00124311447143555 0.0 0.0 0.0 692 -693 0.00129890441894531 0.0 0.0 0.0 693 -694 0.00130796432495117 0.0 0.0 0.0 694 -695 0.00123500823974609 0.0 0.0 0.0 695 -696 0.00124716758728027 0.0 0.0 0.0 696 -697 0.00123906135559082 0.0 0.0 0.0 697 -698 0.00124287605285645 0.0 0.0 0.0 698 -699 0.00127696990966797 0.00999999999999979 0.00999999999999979 0.0 699 -700 0.00124907493591309 0.0 0.0 0.0 700 -701 0.0300769805908203 0.0300000000000002 0.0300000000000002 0.0 701 -702 0.0012669563293457 0.0 0.0 0.0 702 -703 0.00174999237060547 0.0 0.0 0.0 703 -704 0.00131797790527344 0.0 0.0 0.0 704 -705 0.00130391120910645 0.0 0.0 0.0 705 -706 0.00126886367797852 0.0 0.0 0.0 706 -707 0.00127601623535156 0.00999999999999979 0.00999999999999979 0.0 707 -708 0.00125503540039062 0.0 0.0 0.0 708 -709 0.00125312805175781 0.0 0.0 0.0 709 -710 0.00124597549438477 0.0 0.0 0.0 710 -711 0.00125217437744141 0.0 0.0 0.0 711 -712 0.00124311447143555 0.0 0.0 0.0 712 -713 0.00124287605285645 0.0 0.0 0.0 713 -714 0.00125503540039062 0.00999999999999979 0.00999999999999979 0.0 714 -715 0.0012519359588623 0.0 0.0 0.0 715 -716 0.00124502182006836 0.0 0.0 0.0 716 -717 0.00124502182006836 0.0 0.0 0.0 717 -718 0.00126814842224121 0.0 0.0 0.0 718 -719 0.00124883651733398 0.0 0.0 0.0 719 -720 0.00124812126159668 0.0 0.0 0.0 720 -721 0.00125408172607422 0.0 0.0 0.0 721 -722 0.00125694274902344 0.0100000000000007 0.0100000000000007 0.0 722 -723 0.00125002861022949 0.0 0.0 0.0 723 -724 0.0012509822845459 0.0 0.0 0.0 724 -725 0.00124502182006836 0.0 0.0 0.0 725 -726 0.00115799903869629 0.0 0.0 0.0 726 -727 0.00148391723632812 0.0 0.0 0.0 727 -728 0.00177001953125 0.0 0.0 0.0 728 -729 0.00183606147766113 0.00999999999999979 0.00999999999999979 0.0 729 -730 0.00171613693237305 0.0 0.0 0.0 730 -731 0.00128793716430664 0.0 0.0 0.0 731 -732 0.000819921493530273 0.0 0.0 0.0 732 -733 0.00124001502990723 0.0 0.0 0.0 733 -734 0.00124692916870117 0.0 0.0 0.0 734 -735 0.00124001502990723 0.0 0.0 0.0 735 -736 0.00123882293701172 0.0 0.0 0.0 736 -737 0.00124597549438477 0.00999999999999979 0.00999999999999979 0.0 737 -738 0.00124502182006836 0.0 0.0 0.0 738 -739 0.00124096870422363 0.0 0.0 0.0 739 -740 0.00124502182006836 0.0 0.0 0.0 740 -741 0.00124096870422363 0.0 0.0 0.0 741 -742 0.00124287605285645 0.0 0.0 0.0 742 -743 0.00124096870422363 0.0 0.0 0.0 743 -744 0.00124692916870117 0.00999999999999979 0.00999999999999979 0.0 744 -745 0.00138497352600098 0.0 0.0 0.0 745 -746 0.00129485130310059 0.0 0.0 0.0 746 -747 0.0012509822845459 0.0 0.0 0.0 747 -748 0.00124907493591309 0.0 0.0 0.0 748 -749 0.00123500823974609 0.0 0.0 0.0 749 -750 0.00124621391296387 0.0 0.0 0.0 750 -751 0.00124096870422363 0.0 0.0 0.0 751 -752 0.00123810768127441 0.0100000000000007 0.0100000000000007 0.0 752 -753 0.00124287605285645 0.0 0.0 0.0 753 -754 0.00124716758728027 0.0 0.0 0.0 754 -755 0.00124311447143555 0.0 0.0 0.0 755 -756 0.00124883651733398 0.0 0.0 0.0 756 -757 0.0014030933380127 0.0 0.0 0.0 757 -758 0.0220100879669189 0.0199999999999996 0.0199999999999996 0.0 758 -759 0.00328278541564941 0.00999999999999979 0.00999999999999979 0.0 759 -760 0.00999212265014648 0.00999999999999979 0.00999999999999979 0.0 760 -761 0.00151991844177246 0.0 0.0 0.0 761 -762 0.00131011009216309 0.0 0.0 0.0 762 -763 0.00128889083862305 0.0 0.0 0.0 763 -764 0.0012819766998291 0.0 0.0 0.0 764 -765 0.0012819766998291 0.0 0.0 0.0 765 -766 0.00126886367797852 0.0100000000000007 0.0100000000000007 0.0 766 -767 0.00125288963317871 0.0 0.0 0.0 767 -768 0.00125408172607422 0.0 0.0 0.0 768 -769 0.00125718116760254 0.0 0.0 0.0 769 -770 0.00125384330749512 0.0 0.0 0.0 770 -771 0.00125002861022949 0.0 0.0 0.0 771 -772 0.00124406814575195 0.0 0.0 0.0 772 -773 0.00125002861022949 0.00999999999999979 0.00999999999999979 0.0 773 -774 0.0012509822845459 0.0 0.0 0.0 774 -775 0.00124502182006836 0.0 0.0 0.0 775 -776 0.00124788284301758 0.0 0.0 0.0 776 -777 0.00125408172607422 0.0 0.0 0.0 777 -778 0.00125288963317871 0.0 0.0 0.0 778 -779 0.00124788284301758 0.0 0.0 0.0 779 -780 0.00124287605285645 0.0 0.0 0.0 780 -781 0.00125694274902344 0.00999999999999979 0.00999999999999979 0.0 781 -782 0.00124096870422363 0.0 0.0 0.0 782 -783 0.00123691558837891 0.0 0.0 0.0 783 -784 0.00124287605285645 0.0 0.0 0.0 784 -785 0.00124597549438477 0.0 0.0 0.0 785 -786 0.00123786926269531 0.0 0.0 0.0 786 -787 0.00124502182006836 0.0 0.0 0.0 787 -788 0.00124096870422363 0.0 0.0 0.0 788 -789 0.00124096870422363 0.00999999999999979 0.00999999999999979 0.0 789 -790 0.00123500823974609 0.0 0.0 0.0 790 -791 0.00124001502990723 0.0 0.0 0.0 791 -792 0.00124001502990723 0.0 0.0 0.0 792 -793 0.00123000144958496 0.0 0.0 0.0 793 -794 0.00124406814575195 0.0 0.0 0.0 794 -795 0.00123691558837891 0.0 0.0 0.0 795 -796 0.00123286247253418 0.0 0.0 0.0 796 -797 0.00123906135559082 0.0100000000000007 0.0100000000000007 0.0 797 -798 0.00120997428894043 0.0 0.0 0.0 798 -799 0.00156807899475098 0.0 0.0 0.0 799 -800 0.00123286247253418 0.0 0.0 0.0 800 -801 0.00125002861022949 0.0 0.0 0.0 801 -802 0.0012199878692627 0.0 0.0 0.0 802 -803 0.00123405456542969 0.0 0.0 0.0 803 -804 0.0012519359588623 0.00999999999999979 0.00999999999999979 0.0 804 -805 0.00124192237854004 0.0 0.0 0.0 805 -806 0.00124406814575195 0.0 0.0 0.0 806 -807 0.00124001502990723 0.0 0.0 0.0 807 -808 0.00124692916870117 0.0 0.0 0.0 808 -809 0.00125002861022949 0.0 0.0 0.0 809 -810 0.00125312805175781 0.0 0.0 0.0 810 -811 0.00126981735229492 0.0 0.0 0.0 811 -812 0.00124001502990723 0.00999999999999979 0.00999999999999979 0.0 812 -813 0.00124597549438477 0.0 0.0 0.0 813 -814 0.00126290321350098 0.0 0.0 0.0 814 -815 0.0310249328613281 0.0300000000000002 0.0300000000000002 0.0 815 -816 0.000841140747070312 0.0 0.0 0.0 816 -817 0.000878095626831055 0.0 0.0 0.0 817 -818 0.000874042510986328 0.0 0.0 0.0 818 -819 0.000869035720825195 0.0 0.0 0.0 819 -820 0.0012819766998291 0.0 0.0 0.0 820 -821 0.00133609771728516 0.00999999999999979 0.00999999999999979 0.0 821 -822 0.0012660026550293 0.0 0.0 0.0 822 -823 0.0013270378112793 0.0 0.0 0.0 823 -824 0.00125718116760254 0.0 0.0 0.0 824 -825 0.00124907493591309 0.0 0.0 0.0 825 -826 0.00137901306152344 0.0 0.0 0.0 826 -827 0.00125503540039062 0.0 0.0 0.0 827 -828 0.0012509822845459 0.0 0.0 0.0 828 -829 0.00126791000366211 0.00999999999999979 0.00999999999999979 0.0 829 -830 0.00128698348999023 0.0 0.0 0.0 830 -831 0.00125598907470703 0.0 0.0 0.0 831 -832 0.00135207176208496 0.0 0.0 0.0 832 -833 0.000869035720825195 0.0 0.0 0.0 833 -834 0.00125503540039062 0.0 0.0 0.0 834 -835 0.0012519359588623 0.0 0.0 0.0 835 -836 0.00126004219055176 0.0 0.0 0.0 836 -837 0.00126099586486816 0.0100000000000007 0.0100000000000007 0.0 837 -838 0.00181698799133301 0.0 0.0 0.0 838 -839 0.00126290321350098 0.0 0.0 0.0 839 -840 0.00124096870422363 0.0 0.0 0.0 840 -841 0.00118899345397949 0.0 0.0 0.0 841 -842 0.00124096870422363 0.0 0.0 0.0 842 -843 0.00123286247253418 0.0 0.0 0.0 843 -844 0.00165700912475586 0.00999999999999979 0.00999999999999979 0.0 844 -845 0.00125789642333984 0.0 0.0 0.0 845 -846 0.00123405456542969 0.0 0.0 0.0 846 -847 0.00123095512390137 0.0 0.0 0.0 847 -848 0.0012509822845459 0.0 0.0 0.0 848 -849 0.00123906135559082 0.0 0.0 0.0 849 -850 0.00165104866027832 0.0 0.0 0.0 850 -851 0.00123906135559082 0.00999999999999979 0.00999999999999979 0.0 851 -852 0.00123786926269531 0.0 0.0 0.0 852 -853 0.00120902061462402 0.0 0.0 0.0 853 -854 0.00130009651184082 0.0 0.0 0.0 854 -855 0.00124502182006836 0.0 0.0 0.0 855 -856 0.0016329288482666 0.0 0.0 0.0 856 -857 0.0012509822845459 0.0 0.0 0.0 857 -858 0.00124692916870117 0.0 0.0 0.0 858 -859 0.00129890441894531 0.00999999999999979 0.00999999999999979 0.0 859 -860 0.00123786926269531 0.0 0.0 0.0 860 -861 0.00123786926269531 0.0 0.0 0.0 861 -862 0.0016181468963623 0.0 0.0 0.0 862 -863 0.00124192237854004 0.0 0.0 0.0 863 -864 0.00124692916870117 0.0 0.0 0.0 864 -865 0.00124597549438477 0.0 0.0 0.0 865 -866 0.00124478340148926 0.0100000000000007 0.0100000000000007 0.0 866 -867 0.00123500823974609 0.0 0.0 0.0 867 -868 0.00165414810180664 0.0 0.0 0.0 868 -869 0.00124502182006836 0.0 0.0 0.0 869 -870 0.0012669563293457 0.0 0.0 0.0 870 -871 0.0018620491027832 0.0 0.0 0.0 871 -872 0.0325958728790283 0.04 0.04 0.0 872 -873 0.000857114791870117 0.0 0.0 0.0 873 -874 0.00117611885070801 0.0 0.0 0.0 874 -875 0.000876903533935547 0.0 0.0 0.0 875 -876 0.00108814239501953 0.0 0.0 0.0 876 -877 0.00129008293151855 0.0 0.0 0.0 877 -878 0.00138592720031738 0.0 0.0 0.0 878 -879 0.00126004219055176 0.0 0.0 0.0 879 -880 0.00133490562438965 0.00999999999999979 0.00999999999999979 0.0 880 -881 0.00133109092712402 0.0 0.0 0.0 881 -882 0.00126004219055176 0.0 0.0 0.0 882 -883 0.00134086608886719 0.0 0.0 0.0 883 -884 0.00124907493591309 0.0 0.0 0.0 884 -885 0.00122594833374023 0.0 0.0 0.0 885 -886 0.00130510330200195 0.0 0.0 0.0 886 -887 0.00134396553039551 0.0 0.0 0.0 887 -888 0.00126194953918457 0.00999999999999979 0.00999999999999979 0.0 888 -889 0.00120782852172852 0.0 0.0 0.0 889 -890 0.00124692916870117 0.0 0.0 0.0 890 -891 0.00125813484191895 0.0 0.0 0.0 891 -892 0.0012509822845459 0.0 0.0 0.0 892 -893 0.00136804580688477 0.0 0.0 0.0 893 -894 0.00125718116760254 0.0 0.0 0.0 894 -895 0.00125312805175781 0.00999999999999979 0.00999999999999979 0.0 895 -896 0.00126218795776367 0.0 0.0 0.0 896 -897 0.00123286247253418 0.0 0.0 0.0 897 -898 0.00124406814575195 0.0 0.0 0.0 898 -899 0.00131702423095703 0.0 0.0 0.0 899 -900 0.00123405456542969 0.0 0.0 0.0 900 -901 0.00121402740478516 0.0 0.0 0.0 901 -902 0.00123882293701172 0.0 0.0 0.0 902 -903 0.00123310089111328 0.00999999999999979 0.00999999999999979 0.0 903 -904 0.00124096870422363 0.0 0.0 0.0 904 -905 0.00147390365600586 0.0 0.0 0.0 905 -906 0.0012509822845459 0.0 0.0 0.0 906 -907 0.00124692916870117 0.0 0.0 0.0 907 -908 0.00124907493591309 0.0 0.0 0.0 908 -909 0.00124597549438477 0.0 0.0 0.0 909 -910 0.00124001502990723 0.0 0.0 0.0 910 -911 0.00142002105712891 0.0100000000000007 0.0100000000000007 0.0 911 -912 0.00124502182006836 0.0 0.0 0.0 912 -913 0.00124502182006836 0.0 0.0 0.0 913 -914 0.0012819766998291 0.0 0.0 0.0 914 -915 0.00123786926269531 0.0 0.0 0.0 915 -916 0.00124287605285645 0.0 0.0 0.0 916 -917 0.00142312049865723 0.0 0.0 0.0 917 -918 0.0012509822845459 0.00999999999999979 0.00999999999999979 0.0 918 -919 0.00124502182006836 0.0 0.0 0.0 919 -920 0.00124692916870117 0.0 0.0 0.0 920 -921 0.00124192237854004 0.0 0.0 0.0 921 -922 0.00119709968566895 0.0 0.0 0.0 922 -923 0.00140190124511719 0.0 0.0 0.0 923 -924 0.00125002861022949 0.0 0.0 0.0 924 -925 0.00124502182006836 0.0 0.0 0.0 925 -926 0.00124597549438477 0.00999999999999979 0.00999999999999979 0.0 926 -927 0.00127720832824707 0.0 0.0 0.0 927 -928 0.00126409530639648 0.0 0.0 0.0 928 -929 0.0312209129333496 0.0300000000000002 0.0300000000000002 0.0 929 -930 0.00214791297912598 0.0 0.0 0.0 930 -931 0.00183796882629395 0.0 0.0 0.0 931 -932 0.00143814086914062 0.00999999999999979 0.00999999999999979 0.0 932 -933 0.00145792961120605 0.0 0.0 0.0 933 -934 0.00152087211608887 0.0 0.0 0.0 934 -935 0.00213003158569336 0.0 0.0 0.0 935 -936 0.00166201591491699 0.0 0.0 0.0 936 -937 0.0016930103302002 0.0 0.0 0.0 937 -938 0.00139403343200684 0.00999999999999979 0.00999999999999979 0.0 938 -939 0.00214695930480957 0.0 0.0 0.0 939 -940 0.00102400779724121 0.0 0.0 0.0 940 -941 0.0012660026550293 0.0 0.0 0.0 941 -942 0.00126004219055176 0.0 0.0 0.0 942 -943 0.00126194953918457 0.0 0.0 0.0 943 -944 0.00125813484191895 0.0 0.0 0.0 944 -945 0.00152897834777832 0.0100000000000007 0.0100000000000007 0.0 945 -946 0.0012669563293457 0.0 0.0 0.0 946 -947 0.00125408172607422 0.0 0.0 0.0 947 -948 0.00125980377197266 0.0 0.0 0.0 948 -949 0.00126481056213379 0.0 0.0 0.0 949 -950 0.00125908851623535 0.0 0.0 0.0 950 -951 0.00138092041015625 0.0 0.0 0.0 951 -952 0.00125384330749512 0.00999999999999979 0.00999999999999979 0.0 952 -953 0.00108504295349121 0.0 0.0 0.0 953 -954 0.0012509822845459 0.0 0.0 0.0 954 -955 0.00125980377197266 0.0 0.0 0.0 955 -956 0.00131511688232422 0.0 0.0 0.0 956 -957 0.00130796432495117 0.0 0.0 0.0 957 -958 0.00124597549438477 0.0 0.0 0.0 958 -959 0.00125002861022949 0.0 0.0 0.0 959 -960 0.00124287605285645 0.00999999999999979 0.00999999999999979 0.0 960 -961 0.00124812126159668 0.0 0.0 0.0 961 -962 0.0012509822845459 0.0 0.0 0.0 962 -963 0.00130891799926758 0.0 0.0 0.0 963 -964 0.00123500823974609 0.0 0.0 0.0 964 -965 0.00124096870422363 0.0 0.0 0.0 965 -966 0.00124883651733398 0.0 0.0 0.0 966 -967 0.00124192237854004 0.0 0.0 0.0 967 -968 0.00124502182006836 0.00999999999999979 0.00999999999999979 0.0 968 -969 0.00124597549438477 0.0 0.0 0.0 969 -970 0.00130796432495117 0.0 0.0 0.0 970 -971 0.00124716758728027 0.0 0.0 0.0 971 -972 0.00125408172607422 0.0 0.0 0.0 972 -973 0.00125384330749512 0.0 0.0 0.0 973 -974 0.00124907493591309 0.0 0.0 0.0 974 -975 0.00124502182006836 0.0 0.0 0.0 975 -976 0.00131011009216309 0.0100000000000007 0.0100000000000007 0.0 976 -977 0.00125384330749512 0.0 0.0 0.0 977 -978 0.00124597549438477 0.0 0.0 0.0 978 -979 0.00125503540039062 0.0 0.0 0.0 979 -980 0.00125384330749512 0.0 0.0 0.0 980 -981 0.0012509822845459 0.0 0.0 0.0 981 -982 0.00131988525390625 0.0 0.0 0.0 982 -983 0.00126099586486816 0.00999999999999979 0.00999999999999979 0.0 983 -984 0.00126004219055176 0.0 0.0 0.0 984 -985 0.00127100944519043 0.0 0.0 0.0 985 -986 0.0304250717163086 0.0300000000000002 0.0300000000000002 0.0 986 -987 0.00131678581237793 0.0 0.0 0.0 987 -988 0.00130200386047363 0.0 0.0 0.0 988 -989 0.00139880180358887 0.0 0.0 0.0 989 -990 0.00517010688781738 0.0 0.0 0.0 990 -991 0.00128984451293945 0.00999999999999979 0.00999999999999979 0.0 991 -992 0.00125789642333984 0.0 0.0 0.0 992 -993 0.00152301788330078 0.0 0.0 0.0 993 -994 0.00125598907470703 0.0 0.0 0.0 994 -995 0.00125312805175781 0.0 0.0 0.0 995 -996 0.00125312805175781 0.0 0.0 0.0 996 -997 0.00125598907470703 0.0 0.0 0.0 997 -998 0.00134396553039551 0.0 0.0 0.0 998 -999 0.00124979019165039 0.00999999999999979 0.00999999999999979 0.0 999 -1000 0.00125598907470703 0.0 0.0 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log deleted file mode 100644 index ca6c64e4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkExt.log +++ /dev/null @@ -1,81 +0,0 @@ -========================== 2009-04-01T16:49:42 CEST =========================== -Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux]. -Running 'ParserBenchmarkExt' for 1000 iterations/method (compare_time=real) -=============================================================================== - -This first run is only for warmup. -ParserBenchmarkExt#parser: - real total user system -sum 1.733042240 1.770000000 1.760000000 0.010000000 -min 0.000833988 0.000000000 0.000000000 0.000000000 -std- -0.001838092 -0.003229209 -0.003232727 -0.000306228 -mean 0.001733042 0.001770000 0.001760000 0.000010000 -std+ 0.005304177 0.006769209 0.006752727 0.000326228 -max 0.032314062 0.040000000 0.040000000 0.010000000 -std 0.003571134 0.004999209 0.004992727 0.000316228 -std% 206.061583704 282.441194727 283.677695666 3162.277660168 -harm 0.001283614 nan nan nan -geo 0.001337350 0.000000000 0.000000000 0.000000000 -q1 0.001236916 0.000000000 0.000000000 0.000000000 -med 0.001246929 0.000000000 0.000000000 0.000000000 -q3 0.001260996 0.000000000 0.000000000 0.000000000 - 1000 577.01998 0.001733042 - calls calls/sec secs/call - - 0.03074 -|* - 0.02759 -| - 0.02444 -| - 0.02130 -| - 0.01815 -| - 0.01500 -| - 0.01185 -| - 0.00870 -| - 0.00556 -| - 0.00241 -|************************************************** - -Outliers detected with box plot algo (median=0.00125, iqr=0.00002, factor=3.00): -very_low=32 low=15 high=77 very_high=135 - -Ljung-Box statistics: q=13.14182 (alpha=0.05, df=50). -0.00000 < 0.95000 => No autocorrelation was detected. - -ParserBenchmarkExt#parser: - real total user system -sum 1.624776602 1.620000000 1.620000000 0.000000000 -min 0.000819921 0.000000000 0.000000000 0.000000000 -std- -0.001936067 -0.003223194 -0.003223194 0.000000000 -mean 0.001805307 0.001800000 0.001800000 0.000000000 -std+ 0.005546681 0.006823194 0.006823194 0.000000000 -max 0.032595873 0.040000000 0.040000000 0.000000000 -std 0.003741374 0.005023194 0.005023194 0.000000000 -std% 207.243050150 279.066347558 279.066347558 nan -harm 0.001297084 nan nan nan -geo 0.001358799 0.000000000 0.000000000 0.000000000 -q1 0.001241922 0.000000000 0.000000000 0.000000000 -med 0.001249075 0.000000000 0.000000000 0.000000000 -q3 0.001264811 0.000000000 0.000000000 0.000000000 - 900 553.92230 0.001805307 - calls calls/sec secs/call - - 0.03101 -|* - 0.02783 -| - 0.02465 -| - 0.02147 -| - 0.01830 -| - 0.01512 -| - 0.01194 -| - 0.00876 -| - 0.00559 -| - 0.00241 -|************************************************** - -Outliers detected with box plot algo (median=0.00125, iqr=0.00002, factor=3.00): -very_low=15 low=9 high=76 very_high=110 - -Ljung-Box statistics: q=15.89429 (alpha=0.05, df=50). -0.00000 < 0.95000 => No autocorrelation was detected. - -Truncated initial 100 measurements: 1000 -> 900 (-10.00%). -========================== 2009-04-01T16:49:49 CEST =========================== - -Writing measurement data file '/data/scm/json/benchmarks/data/ParserBenchmarkExt#parser.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/ParserBenchmarkExt#parser-autocorrelation.dat'. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat deleted file mode 100644 index 40a0668a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.126526065077488 -3 -0.144961526627029 -4 -0.139357177406834 -5 -0.143974826894912 -6 -0.142298816838391 -7 -0.139337332621068 -8 -0.0804933565996591 -9 0.863154337738992 -10 -0.0856698326462466 -11 -0.139044499260128 -12 -0.144409577021306 -13 -0.139952610271037 -14 -0.137830644370195 -15 -0.138237560134025 -16 -0.0318228583907447 -17 0.762295174674438 -18 -0.0451085401986914 -19 -0.139574314980337 -20 -0.137706022735926 -21 -0.135000055250474 -22 -0.140944565680693 -23 -0.136209503772352 -24 0.0116248943043287 -25 0.668814012806624 -26 0.00194941922845652 -27 -0.132610614145838 -28 -0.110905629572418 -29 -0.142849770878147 -30 -0.143488824970324 -31 -0.134330197021416 -32 0.0538835449451642 -33 0.575132011890069 -34 0.0505429010331842 -35 -0.137467592425517 -36 -0.125877861208834 -37 -0.148631268110284 -38 -0.136115193781866 -39 -0.137935999911469 -40 0.0988849495063306 -41 0.486986888878156 -42 0.0878752779386658 -43 -0.132160917693119 -44 -0.129643145971886 -45 -0.149607998788336 -46 -0.13478438037923 -47 -0.133019295702461 -48 0.14888456218326 -49 0.393046641526692 -50 0.120499739018384 -51 -0.12075319894839 -52 -0.132962236637115 -53 -0.144429618272262 -54 -0.119605702139121 -55 -0.101682767008184 -56 0.152609045047458 -57 0.329588666724346 -58 0.139652155383137 -59 -0.114941895372878 -60 -0.126489834985415 -61 -0.139130898077927 -62 -0.137842155865592 -63 -0.0861253194251446 -64 0.150629648832854 -65 0.281018765279001 -66 0.13915358689329 -67 -0.0896859084267328 -68 -0.123313711110523 -69 -0.142874643960391 -70 -0.135495171639773 -71 -0.0711514410690874 -72 0.147596411956897 -73 0.251872397592371 -74 0.121839586873541 -75 -0.0575973326704366 -76 -0.126799299154496 -77 -0.144543550470945 -78 -0.124111534889387 -79 -0.0466899945416701 -80 0.131315152952299 -81 0.252160996580415 -82 0.10666721386194 -83 -0.0339037628702252 -84 -0.127183439268724 -85 -0.143132479164138 -86 -0.125851156910328 -87 -0.0147264358973224 -88 0.118449575410306 -89 0.201728736307241 -90 0.0886049712661605 -91 -0.00382129887238343 -92 -0.131751835679824 -93 -0.140792586519908 -94 -0.118637713578907 -95 0.02095681301022 -96 0.0813261521961686 -97 0.180482658314394 -98 0.0795745616300617 -99 0.0126200590172042 -100 -0.127051186194544 -101 -0.137444352404263 -102 -0.109978539446263 -103 0.0380230003474469 -104 0.0605417360053513 -105 0.171590136906878 -106 0.0604018417747588 -107 0.0402566049413917 -108 -0.100533719460918 -109 -0.140161784412186 -110 -0.10312957661735 -111 0.0485735840442751 -112 0.0373718997374129 -113 0.167648566872301 -114 0.0459260028708854 -115 0.046121183499996 -116 -0.110430068243273 -117 -0.140278458993756 -118 -0.0875776667752535 -119 0.0510626017064324 -120 0.0238451049454621 -121 0.16085061505561 -122 0.030276460935626 -123 0.0561232990819215 -124 -0.105464808595229 -125 -0.135546173373586 -126 -0.079801944025769 -127 0.0599654914699078 -128 0.0136534141192567 -129 0.15182365517752 -130 0.0197096306752212 -131 0.0534620866010349 -132 -0.0917414096626928 -133 -0.127172172660217 -134 -0.0514782042484449 -135 0.0685986797971808 -136 -0.00353858174559342 -137 0.142196102713977 -138 0.0134469000302172 -139 0.0396095015311617 -140 -0.0655242334449433 -141 -0.122832275916882 -142 -0.0479444786698279 -143 0.050751999392634 -144 -0.011019423438215 -145 0.132113807423818 -146 0.00290229828051553 -147 0.0324895304839574 -148 -0.0424435359166719 -149 -0.122337133535285 -150 -0.0293859066983028 -151 0.0383678650842516 -152 -0.0194742885265415 -153 0.126609912325987 -154 -0.00608808492180084 -155 0.0395330884838485 -156 -0.0368665742861527 -157 -0.121320946026168 -158 -0.0130016640468885 -159 0.0309861525800574 -160 -0.018558052599205 -161 0.137300590031426 -162 -0.00746032318164814 -163 0.0344072362770583 -164 -0.0323265667023796 -165 -0.108099357804514 -166 -0.00728009854612887 -167 0.0166450780849257 -168 -0.0143279526502486 -169 0.109076299549607 -170 -0.0115962562225386 -171 0.0177205211496241 -172 -0.0165802545828673 -173 -0.0995936967878659 -174 0.011605779237427 -175 0.00523220776952252 -176 -0.0161523464956781 -177 0.0989734877266892 -178 -0.0129792250545895 -179 0.00898322395475531 -180 -0.0153158199749067 -181 -0.0800824097692582 -182 0.0178200034942401 -183 -0.00474786676294106 -184 -0.0157551972778546 -185 0.0942532461909266 -186 -0.00969269130384397 -187 0.00652836785416871 -188 0.000910018587766529 -189 -0.0619232375104542 -190 0.0179928377991651 -191 -0.0159711302098274 -192 -0.018744717694339 -193 0.0877619939638119 -194 -0.00502556289883764 -195 -0.00667460786160017 -196 -0.0121723963071187 -197 -0.0449032831155359 -198 0.0212125953730812 -199 -0.0262860792829433 -200 -0.016162057795481 -201 0.0811913575034835 -202 -0.00330089426590078 -203 -0.0151519759511698 -204 -0.017960262928082 -205 -0.0215037814284608 -206 0.0182943543046035 -207 -0.0341747401956763 -208 -0.0146866352915169 -209 0.0792718771176078 -210 -0.00321919646839206 -211 -0.023611826169962 -212 -0.0126184079823646 -213 -0.000954698682123794 -214 0.0297339638938581 -215 -0.0312735654036501 -216 -0.0161173400247215 -217 0.0692180762363309 -218 -0.00283288277832248 -219 -0.0388702841271483 -220 0.00457538848515518 -221 0.017702534023738 -222 0.00544552208632338 -223 -0.0446102056961128 -224 -0.0135729757433799 -225 0.061318425794026 -226 -0.00494947349286398 -227 -0.0321768515141099 -228 0.00497720552190702 -229 0.0267952089554404 -230 -0.000738697332716776 -231 -0.0492659393491728 -232 -0.0148071186922711 -233 0.0545872347505704 -234 -0.00382673762292252 -235 -0.0282826124126036 -236 0.00794227173858329 -237 0.0378731489090914 -238 -0.00835973314997662 -239 -0.0447739268124712 -240 -0.0127983223158383 -241 0.0636581757214183 -242 -0.000854926428120144 -243 -0.0310943152069584 -244 -0.00259888627525403 -245 0.0558953643657078 -246 -0.0171154785163806 -247 -0.0391969466693341 -248 -0.0117324565371219 -249 0.0429666350675198 -250 -0.00749755396653516 -251 -0.0292116650124283 -252 -0.00980920002999956 -253 0.0728023253137216 -254 -0.0242433063094984 -255 -0.0319002210401708 -256 -0.0116887755426019 -257 0.0318202643673836 -258 -0.00934603617096265 -259 -0.0320628549574969 -260 -0.0138223876265734 -261 0.0891055411435177 -262 -0.0247651373213855 -263 -0.0309052036748624 -264 -0.0100532798596721 -265 0.0243378856936498 -266 -0.0045778331986359 -267 -0.026821752316485 -268 0.000989105341668746 -269 0.0888402056176568 -270 -0.0231248959628869 -271 -0.0335116780227126 -272 -0.0117587705487187 -273 0.0167906040316404 -274 -0.00329835726197584 -275 -0.0310756973538631 -276 -0.00167909352527941 -277 0.0731070181742769 -278 -0.0163827003248124 -279 -0.0314028257468305 -280 -0.00966921026548781 -281 0.0102706941067124 -282 0.00203072073029314 -283 -0.0308313739794282 -284 0.00547048142856235 -285 0.0539371640185639 -286 -0.00773101119983001 -287 -0.0303450446180751 -288 -0.00733600257056593 -289 0.00772935578415776 -290 0.00197958032226745 -291 -0.0273846524631412 -292 0.0112672702862109 -293 0.045049409831887 -294 0.00799728833473099 -295 -0.0200723316807648 -296 -0.00733856327080615 -297 -0.001791898850227 -298 0.00388503548910184 -299 -0.0339646317125627 -300 0.0269401380987506 -301 0.0295897394272477 -302 0.00882971838376906 -303 -0.0255032485942965 -304 -0.00586660773988975 -305 -0.0143116332821527 -306 0.00534299944397864 -307 -0.0288912695776605 -308 0.0357675762276391 -309 0.0162077381233435 -310 0.0175736980127429 -311 -0.0300119235674159 -312 -0.00563685913557697 -313 -0.0218208266576808 -314 0.00532212484976867 -315 -0.0165702155219983 -316 0.03160258037738 -317 0.0156089288371773 -318 0.0179977820150998 -319 -0.0255657663584924 -320 -0.00314013163781615 -321 -0.0174257276545932 -322 0.00856637995358983 -323 -0.00719462491658861 -324 0.0248064952084498 -325 0.0118797380566877 -326 0.0164280770611372 -327 -0.0202684072278218 -328 -0.000968003222461791 -329 -0.0392377749025386 -330 0.00616137008243444 -331 -0.00395889897053221 -332 0.0209975704367836 -333 0.0165669731399994 -334 0.0167876667126637 -335 -0.0162800034591445 -336 0.00157612684339945 -337 -0.0497601369515435 -338 0.00168009969601492 -339 -0.00390601780649794 -340 0.023648567413202 -341 0.0158640545767057 -342 0.0244736064929526 -343 -0.014150912333521 -344 0.00356083314932668 -345 -0.0588422955021098 -346 0.0064856866009032 -347 0.000344551175540443 -348 0.0364591845510023 -349 0.0166346451576227 -350 0.0251881929581815 -351 -0.01627179367963 -352 0.00180146013521436 -353 -0.0649333243287488 -354 0.00866862821696223 -355 -0.00279970209152114 -356 0.0263646717293285 -357 0.0211193247836195 -358 0.0214320318152118 -359 -0.0151817766787754 -360 0.00485821947887842 -361 -0.0715992844478512 -362 0.0108378220586832 -363 -0.00133094811006224 -364 0.0247532282729131 -365 0.016495069638089 -366 0.0229500626359929 -367 -0.0147226502159456 -368 0.00647045064867083 -369 -0.073385789691225 -370 0.0114312149907294 -371 0.00249982568991776 -372 0.0225934619182297 -373 0.0238409420604106 -374 0.0300604984923422 -375 -0.00852632300506627 -376 -0.000476408670694637 -377 -0.0669893069127702 -378 0.00708510482024032 -379 -0.00633855524099727 -380 0.0316293143381378 -381 0.0224467328328507 -382 0.024131620910292 -383 -0.0144420099990433 -384 -0.00656804302886437 -385 -0.0605047793511062 -386 -0.00244909720127004 -387 -0.00228283234187514 -388 0.0347630666059254 -389 0.0255372783174439 -390 0.0249118471215147 -391 -0.0156811043640799 -392 -0.0186780895478396 -393 -0.0500470638854078 -394 -0.0106681828115876 -395 0.00299348108637595 -396 0.0375478351991823 -397 0.0272676652644904 -398 0.0249262372804901 -399 -0.0128139590091909 -400 -0.0244260954570344 -401 -0.0296360177448727 -402 -0.0156522051426314 -403 0.00371335698467524 -404 0.0375532256529043 -405 0.025029221367199 -406 0.0252473835020561 -407 -0.00821195172190185 -408 -0.0340470970501328 -409 -0.0312374914683474 -410 -0.0253324219431086 -411 0.00556439075799471 -412 0.0343851616998114 -413 0.0296108649664041 -414 0.0244865536821279 -415 -0.00642396788124207 -416 -0.0381703614534087 -417 -0.0250381539188707 -418 -0.0339628157444566 -419 0.00243992182082179 -420 0.0377363310935231 -421 0.0279269519560789 -422 0.0330045526455719 -423 -0.00511644400658994 -424 -0.0450141067262116 -425 -0.0158485572785398 -426 -0.03936429400437 -427 0.00750953654479071 -428 0.0477707926390831 -429 0.0288151654666373 -430 0.0361802804944373 -431 -0.00712917753126239 -432 -0.0583334638414398 -433 -0.00267010949721538 -434 -0.0470917242637041 -435 0.00517042251078623 -436 0.037455528907572 -437 0.0343942996609878 -438 0.0332028694901519 -439 -0.00589078251875288 -440 -0.0637043911707992 -441 0.00666183788238349 -442 -0.0525517266899241 -443 0.00895232543554424 -444 0.0382697031000271 -445 0.0284021587291105 -446 0.0334942204660841 -447 -0.00596107650540415 -448 -0.0720966795946044 -449 0.0232447585917915 -450 -0.0608153052711438 -451 0.0116399374656849 -452 0.0381251008359883 -453 0.0346830496503291 -454 0.0398065018725046 -455 -0.000362012301347499 -456 -0.0785173577161933 -457 0.0300252474048187 -458 -0.0646382374089607 -459 0.00182900934772608 -460 0.0454064481406782 -461 0.0329664080833594 -462 0.0362011391795208 -463 -0.015347551228469 -464 -0.0671509681824761 -465 0.0296481877260799 -466 -0.0746946268126137 -467 0.00641586390856246 -468 0.0470505050556008 -469 0.0366327721242302 -470 0.0377150582080205 -471 -0.0257508722774105 -472 -0.0637151879640854 -473 0.0236744558402174 -474 -0.0680975388310196 -475 0.00255042565832294 -476 0.0512681657479446 -477 0.0403605713503443 -478 0.0359001859859639 -479 -0.029132074768914 -480 -0.0508034717438863 -481 0.0239527602817767 -482 -0.0575129877889322 -483 -0.00369721861473263 -484 0.0505988973989383 -485 0.0361467620291191 -486 0.0368416078787121 -487 -0.032834716815589 -488 -0.0434932898244011 -489 0.00911801422218572 -490 -0.0523537970034941 -491 -0.00821280045148764 -492 0.0487328578561805 -493 0.0392756061114285 -494 0.0353235938763974 -495 -0.0362172978867714 -496 -0.0301630804400009 -497 -0.00312318019738603 -498 -0.0442427016803628 -499 -0.0193549364510511 -500 0.0511246815814022 -501 0.0375525162491352 -502 0.0415223485757893 -503 -0.0434162929277164 -504 -0.0174703151437594 -505 -0.0123368071049746 -506 -0.030092552759096 -507 -0.0259859780907219 -508 0.0606752480087361 -509 0.0379827626715177 -510 0.0429850681863943 -511 -0.0519282882356438 -512 -0.0109290187868267 -513 -0.0198911294093943 -514 -0.0179805613817386 -515 -0.0373506310511416 -516 0.051718263130701 -517 0.0437679408364481 -518 0.0396991923289056 -519 -0.0598738380924832 -520 0.00227956370589332 -521 -0.0315948919060393 -522 -0.00689298816517704 -523 -0.0400683003822942 -524 0.0504116144670193 -525 0.0384452328799252 -526 0.0422779082777363 -527 -0.0628378541858099 -528 0.00648345925565532 -529 -0.0339074110875153 -530 0.00392215913901875 -531 -0.0447371320235012 -532 0.0499683975261213 -533 0.0445342493453758 -534 0.0358507522616787 -535 -0.0462975420467472 -536 0.0065134510940885 -537 -0.0446950607193122 -538 0.0078695055551158 -539 -0.0435564432715238 -540 0.0490054802985018 -541 0.0429751997079501 -542 0.0249996087628272 -543 -0.0442291516924361 -544 0.00869843705070359 -545 -0.0527698107871565 -546 0.00799130494240491 -547 -0.0323718744761137 -548 0.0410065929835765 -549 0.0475759092955819 -550 0.0175755467103812 -551 -0.0376302948184889 -552 0.00700412709467122 -553 -0.0608320774535298 -554 0.0048130064138099 -555 -0.0173352616909856 -556 0.0346973915783743 -557 0.0493903178904071 -558 0.0101108717892249 -559 -0.0265084973202414 -560 0.00358635362684098 -561 -0.0470576145955835 -562 9.30616028058754e-05 -563 -0.009328796983189 -564 0.0265128180743515 -565 0.047184891847067 -566 0.00219163772528874 -567 -0.0121413168884318 -568 -0.00749414671957915 -569 -0.0440813124278593 -570 -0.00813710471833781 -571 0.00114675437656366 -572 0.0162393335738264 -573 0.0504911799834256 -574 -0.00853374126083636 -575 0.000754234959055234 -576 -0.0117204282603961 -577 -0.0354583766676116 -578 -0.0192100536607529 -579 0.00839406418544501 -580 0.00960845163504427 -581 0.0469051048472684 -582 -0.00888902900418868 -583 0.0100099116353234 -584 -0.0179909146856837 -585 -0.0244293914853853 -586 -0.0256760479816353 -587 0.0212220748711766 -588 0.00632084475559719 -589 0.0387313178071368 -590 -0.000554587934313714 -591 0.0124601538908314 -592 -0.0295249733381573 -593 -0.0144520545351094 -594 -0.0331889907164869 -595 0.0212877712137735 -596 0.00590139546386316 -597 0.0273355576179403 -598 0.00735416770830889 -599 0.0128873818372069 -600 -0.0346175922714857 -601 -0.00857703845819032 -602 -0.0362631596335238 -603 0.0242701471795148 -604 0.0131286156780055 -605 0.00696270942062036 -606 0.0188195193146635 -607 0.0103462402033716 -608 -0.0417481445059436 -609 0.00414843805232896 -610 -0.041616927291058 -611 0.0282618294134973 -612 0.02337979916365 -613 -0.00673110780182958 -614 0.0290971868544386 -615 0.017105062059816 -616 -0.0516331546555055 -617 0.0142062007627548 -618 -0.046594757738246 -619 0.0214354322279795 -620 0.0395098993458107 -621 -0.0267793069789269 -622 0.0381323026116677 -623 0.0119813141067502 -624 -0.0521722164918075 -625 0.00907497826142658 -626 -0.0377414784171271 -627 0.0150907402651132 -628 0.0450797547657188 -629 -0.0367261749783528 -630 0.0474940016463238 -631 0.000764223750645765 -632 -0.0464350834773778 -633 0.00292816454844645 -634 -0.0345472431115147 -635 0.0140802099582887 -636 0.046733825449202 -637 -0.0331976317138726 -638 0.0505769917402539 -639 -0.00507624644834293 -640 -0.0344212973139547 -641 -0.00226163410076298 -642 -0.0197922791475835 -643 0.00383630490838536 -644 0.0363444998831405 -645 -0.0152447367341023 -646 0.0410735723819794 -647 -0.00866551034416046 -648 -0.0282028390344346 -649 -0.0138273162520216 -650 -0.013988974897117 -651 -0.00356215450658962 -652 0.0315292998347554 -653 0.00265684065928491 -654 0.0297462860635905 -655 -0.0132763024515043 -656 -0.0151844375022346 -657 -0.0222624267154824 -658 -0.00808783339763846 -659 -0.0118309039774407 -660 0.0257051832194354 -661 0.0139672196593361 -662 0.0297614515417377 -663 -0.021331361380431 -664 -0.00340733006761883 -665 -0.0283789637687968 -666 0.00461054911911345 -667 -0.018250569181885 -668 0.0226081124897128 -669 0.0323347720900023 -670 0.0223372263530966 -671 -0.0329163380381145 -672 0.00653265472132318 -673 -0.0348871958579168 -674 0.0141751097268468 -675 -0.0288075244305473 -676 0.00890270626763702 -677 0.0520479385647175 -678 0.0145072446621148 -679 -0.0415204263536339 -680 0.0171547215622114 -681 -0.0470557518960979 -682 0.0193254756646944 -683 -0.0255419271372531 -684 0.00688287993008186 -685 0.0526562424346814 -686 0.00589567882152875 -687 -0.0339847831638287 -688 0.02068125784698 -689 -0.0420544887083924 -690 0.013314784448658 -691 -0.0245768886587792 -692 0.00903037071195691 -693 0.0563846260400661 -694 -0.00286801368241955 -695 -0.0213844040017938 -696 0.0126629235111523 -697 -0.0309372292635961 -698 0.00276336704503089 -699 -0.015616452692981 -700 0.00419778210216804 -701 0.0536380666776548 -702 -0.012596502198999 -703 -0.0174715146408299 -704 0.00871952059420196 -705 -0.0227565257963439 -706 -0.00318256697092859 -707 -0.0038667173143475 -708 -0.00772968118848665 -709 0.0587207873901504 -710 -0.0193357475432715 -711 -0.0115269673972748 -712 -1.7421858581782e-05 -713 -0.012115015884252 -714 -0.0149797201478353 -715 0.00756590604451175 -716 -0.0126297132883264 -717 0.0594933008421939 -718 -0.0267304156748315 -719 0.00405070013394311 -720 -0.00821048967450404 -721 -0.000558386344514712 -722 -0.0178272992410061 -723 0.0152599286078378 -724 -0.0188510979465177 -725 0.056849489519984 -726 -0.0348880232368348 -727 0.0167352525344068 -728 -0.020642086446652 -729 0.00744701455708182 -730 -0.027702827538011 -731 0.0163569136090967 -732 -0.00705447320310994 -733 0.0411987341306314 -734 -0.0263596539233783 -735 0.0159406402225642 -736 -0.0248727169666328 -737 0.0157261169316672 -738 -0.039588636677443 -739 0.019694261902396 -740 0.00199064144206026 -741 0.0194114269206411 -742 -0.0122293779441828 -743 0.0185339904720133 -744 -0.0293392689309816 -745 0.0259396934186521 -746 -0.0358486717626121 -747 0.0137081983383313 -748 0.0135827148405382 -749 0.00581560048523093 -750 -0.00646581428956839 -751 0.0110071423563427 -752 -0.0246658880723862 -753 0.0234599435571564 -754 -0.0251762927530073 -755 0.00161483936854108 -756 0.0187635618473274 -757 -0.00741664776560292 -758 0.000689537114138283 -759 0.00538728043193201 -760 -0.0121682428833197 -761 0.0107275222262937 -762 -0.0128031079890448 -763 -0.0063592461488716 -764 0.0251504687162441 -765 -0.0239334767266835 -766 0.0114670525225061 -767 -0.00487523656435794 -768 -0.00763249778942318 -769 0.0104557895326864 -770 -0.00080890423935272 -771 -0.011995729852147 -772 0.0283817192968894 -773 -0.0287562177182345 -774 0.0217718323275436 -775 -0.0101305067053654 -776 0.0014155810398293 -777 0.00324589569032011 -778 0.00708416810583891 -779 -0.022169020480487 -780 0.0234205617460705 -781 -0.0208062585550248 -782 0.0203380109609699 -783 -0.020741474408173 -784 0.0135803686158102 -785 -0.00501416160524954 -786 0.0164731425495951 -787 -0.0268911165061168 -788 0.0106549298554577 -789 -0.00845501832015795 -790 0.023385887150049 -791 -0.0315824919189702 -792 0.0225937647734562 -793 -0.0122625199927789 -794 0.0237235394650212 -795 -0.027848735297458 -796 0.0102148026540408 -797 -0.00743306965465811 -798 0.0163964193052597 -799 -0.0205275094803387 -800 0.0268449934848731 -801 -0.0196194639874214 -802 0.0245047543387088 -803 -0.018846409722053 -804 0.00241958726037752 -805 -0.00956161998696891 -806 0.00999709244485242 -807 -0.010418326586979 -808 0.0168983481695472 -809 -0.0127566274792617 -810 0.0217393096303905 -811 -0.0103549544989814 -812 -0.00649684841130904 -813 -0.00620619985783303 -814 0.000695206197500287 -815 -0.00340809372595454 -816 0.0136404808756853 -817 -0.00453202592092646 -818 0.0101641460331084 -819 0.00219305363441266 -820 -0.01561469271582 -821 -0.00960597345375202 -822 -0.00481911400465912 -823 0.00944779427817189 -824 0.00716593193427114 -825 0.00794506991287553 -826 0.00465812347978461 -827 0.010359878693985 -828 -0.020236818592972 -829 -0.0111741972267443 -830 -0.0115950977160356 -831 0.020041269074572 -832 -0.00202251725285479 -833 0.015145433881013 -834 -0.00118772326275258 -835 0.0172802408084672 -836 -0.023141151004978 -837 -0.00684287010020396 -838 -0.0222362324134472 -839 0.0290833389346101 -840 -0.00863450139262045 -841 0.0198832975538718 -842 -0.0104466516619161 -843 0.0216180798136572 -844 -0.0224573860747524 -845 -0.0159317111021684 -846 -0.0124256114118245 -847 0.0319156051078274 -848 -0.020989683927269 -849 0.0331677982754718 -850 -0.0160779048828163 -851 0.0221942143966997 -852 -0.0207114091551809 -853 -0.0193864563297597 -854 -0.00631341525970981 -855 0.0256287918067823 -856 -0.0127670576748428 -857 0.0268901900517397 -858 -0.00929763294799435 -859 0.0179202360715882 -860 -0.0205297531444686 -861 -0.0205828726597419 -862 -0.00590540758107269 -863 0.0155451399031948 -864 -0.000875709073962753 -865 0.0168572022602374 -866 0.0028001228220118 -867 0.0104479294454913 -868 -0.0213679514358647 -869 -0.0190762037709474 -870 -0.00370777717818964 -871 0.00842042601552804 -872 0.010436753298379 -873 0.00801824546756709 -874 0.00905450943087241 -875 0.00193033358362754 -876 -0.0169120672468857 -877 -0.0180536990655791 -878 -0.00178520558336185 -879 0.00342242219620668 -880 0.0209308868044849 -881 0.00123969777653587 -882 0.0189079333389431 -883 -0.00681131675201787 -884 -0.0163080121259332 -885 -0.0199735256447265 -886 0.00366535906601146 -887 -0.00556880592163452 -888 0.0273660773092557 -889 -0.0056009291081872 -890 0.0258105464894864 -891 -0.0110454740226059 -892 -0.0163301324647326 -893 -0.0182941746735561 -894 0.00615903992467205 -895 -0.0162282546172766 -896 0.0386373258470084 -897 -0.0125315671068463 -898 0.0272787535301086 -899 -0.0123831641946371 -900 -0.0133878892299601 -901 -0.0190951688075489 -902 -0.00155326284649879 -903 -0.00410581328198279 -904 0.0316127784251008 -905 -0.00291818177314328 -906 0.0227531671125918 -907 -0.0109655434893085 -908 -0.012799308403064 -909 -0.0160017423860052 -910 -0.0119329107305064 -911 0.00364258505980213 -912 0.0217756860858317 -913 0.010678734327474 -914 0.0134293321905379 -915 -0.0116912782885493 -916 -0.0117630350181795 -917 -0.0135312586647217 -918 -0.0108968297221034 -919 0.00680452587364608 -920 0.0148747844715078 -921 0.0162949694832807 -922 0.00539910868322474 -923 -0.00933468939253505 -924 -0.0106686683836374 -925 -0.0124085659528643 -926 -0.0105711782287246 -927 0.00804235477237977 -928 0.00723801263775247 -929 0.0258061476363918 -930 -0.000684398388361734 -931 -0.00762103435599326 -932 -0.00904303753421588 -933 -0.00745301596275639 -934 -0.0103044124193686 -935 0.00595191617101465 -936 2.14978806537769e-05 -937 0.0352834100860169 -938 -0.00718396988767262 -939 -0.00837792361666858 -940 -0.00720830894781464 -941 -0.00721256609199517 -942 -0.0103563055654315 -943 0.0067689029813515 -944 -0.00615969185391731 -945 0.0366438822751357 -946 -0.00555322732762464 -947 -0.00559909850816345 -948 -0.00807226171468928 -949 -0.0072437466206792 -950 -0.00880657440286336 -951 -0.000406817302546885 -952 0.00334053871073266 -953 0.0282996182562531 -954 -0.00548530337183551 -955 -0.00508266404610792 -956 -0.00475991829082716 -957 -0.00556541448888507 -958 -0.00693102605261411 -959 -0.0068914951848352 -960 0.0124551723792496 -961 0.0205485192799428 -962 -0.0051215464298893 -963 -0.00544517946765895 -964 -0.00360902370385679 -965 -0.00389124817008502 -966 -0.00568418258247609 -967 -0.00451409289805204 -968 0.0126296974425642 -969 0.0119357974221847 -970 -0.00453960421739095 -971 -0.00389602063108262 -972 -0.00253945519375536 -973 -0.00246645747512712 -974 -0.00331176412956721 -975 -0.0045686818998509 -976 0.0119005284725565 -977 0.00477869960024375 -978 -0.00316972429661236 -979 -0.00294762637219811 -980 -0.00197263485163538 -981 -0.00240027919608702 -982 -0.00221728547295443 -983 -0.00268664184058333 -984 0.013078013292045 -985 -0.00054100792945422 -986 -0.000917736517605598 -987 -0.001567052283492 -988 -0.000836676486280892 -989 -0.00221208695388904 -990 -0.00248903162837629 -991 -0.0021625005351972 -992 0.0072477698974949 -993 0.00063353338379511 -994 0.000469110586525005 -995 -0.000441976909684745 -996 -0.000609378899765559 -997 -0.000809499361526555 -998 -0.0010684119522621 -999 -0.00124157520451844 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat deleted file mode 100644 index 0d92cc37..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure#parser.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.0375239849090576 0.029999999999994 0.029999999999994 0.0 1 -2 0.0333089828491211 0.0300000000000011 0.0300000000000011 0.0 2 -3 0.0330851078033447 0.0399999999999991 0.0399999999999991 0.0 3 -4 0.0331559181213379 0.0300000000000011 0.0300000000000011 0.0 4 -5 0.0330770015716553 0.0300000000000011 0.0300000000000011 0.0 5 -6 0.0331110954284668 0.0399999999999991 0.0399999999999991 0.0 6 -7 0.0357470512390137 0.0300000000000011 0.0300000000000011 0.0 7 -8 0.0360550880432129 0.0399999999999991 0.0399999999999991 0.0 8 -9 0.0575530529022217 0.0600000000000023 0.0600000000000023 0.0 9 -10 0.0352299213409424 0.0300000000000011 0.0300000000000011 0.0 10 -11 0.0335679054260254 0.029999999999994 0.029999999999994 0.0 11 -12 0.0332560539245605 0.0400000000000063 0.0400000000000063 0.0 12 -13 0.0364248752593994 0.029999999999994 0.029999999999994 0.0 13 -14 0.033275842666626 0.0400000000000063 0.0400000000000063 0.0 14 -15 0.0336852073669434 0.029999999999994 0.029999999999994 0.0 15 -16 0.0334939956665039 0.0300000000000011 0.0300000000000011 0.0 16 -17 0.0582540035247803 0.0600000000000023 0.0600000000000023 0.0 17 -18 0.0354878902435303 0.0399999999999991 0.0399999999999991 0.0 18 -19 0.0385029315948486 0.0399999999999991 0.0399999999999991 0.0 19 -20 0.0362861156463623 0.0300000000000011 0.0300000000000011 0.0 20 -21 0.035506010055542 0.0399999999999991 0.0399999999999991 0.0 21 -22 0.0334300994873047 0.0300000000000011 0.0300000000000011 0.0 22 -23 0.0329139232635498 0.0399999999999991 0.0399999999999991 0.0 23 -24 0.0332398414611816 0.0300000000000011 0.0300000000000011 0.0 24 -25 0.0579190254211426 0.0600000000000023 0.0600000000000023 0.0 25 -26 0.0361781120300293 0.029999999999994 0.029999999999994 0.0 26 -27 0.0338189601898193 0.0400000000000063 0.0400000000000063 0.0 27 -28 0.0347120761871338 0.029999999999994 0.029999999999994 0.0 28 -29 0.0333528518676758 0.0399999999999991 0.0399999999999991 0.0 29 -30 0.0332620143890381 0.0300000000000011 0.0300000000000011 0.0 30 -31 0.0329258441925049 0.0300000000000011 0.0300000000000011 0.0 31 -32 0.033383846282959 0.0300000000000011 0.0300000000000011 0.0 32 -33 0.0601050853729248 0.0700000000000003 0.0700000000000003 0.0 33 -34 0.0353600978851318 0.0300000000000011 0.0300000000000011 0.0 34 -35 0.0334739685058594 0.0300000000000011 0.0300000000000011 0.0 35 -36 0.0333919525146484 0.0399999999999991 0.0399999999999991 0.0 36 -37 0.034959077835083 0.0300000000000011 0.0300000000000011 0.0 37 -38 0.0332329273223877 0.029999999999994 0.029999999999994 0.0 38 -39 0.0333740711212158 0.0400000000000063 0.0400000000000063 0.0 39 -40 0.0358071327209473 0.029999999999994 0.029999999999994 0.0 40 -41 0.0592548847198486 0.0600000000000023 0.0600000000000023 0.0 41 -42 0.0328431129455566 0.0399999999999991 0.0399999999999991 0.0 42 -43 0.0325570106506348 0.0300000000000011 0.0300000000000011 0.0 43 -44 0.0326550006866455 0.0300000000000011 0.0300000000000011 0.0 44 -45 0.0341711044311523 0.0300000000000011 0.0300000000000011 0.0 45 -46 0.0385479927062988 0.0300000000000011 0.0300000000000011 0.0 46 -47 0.0355618000030518 0.0399999999999991 0.0399999999999991 0.0 47 -48 0.0336899757385254 0.0300000000000011 0.0300000000000011 0.0 48 -49 0.0340290069580078 0.0399999999999991 0.0399999999999991 0.0 49 -50 0.057744026184082 0.0499999999999972 0.0499999999999972 0.0 50 -51 0.0332441329956055 0.0399999999999991 0.0399999999999991 0.0 51 -52 0.0334060192108154 0.0300000000000011 0.0300000000000011 0.0 52 -53 0.0331339836120605 0.0300000000000011 0.0300000000000011 0.0 53 -54 0.0364229679107666 0.0399999999999991 0.0399999999999991 0.0 54 -55 0.0333731174468994 0.0300000000000011 0.0300000000000011 0.0 55 -56 0.0333929061889648 0.0399999999999991 0.0399999999999991 0.0 56 -57 0.0332939624786377 0.0300000000000011 0.0300000000000011 0.0 57 -58 0.0580708980560303 0.0600000000000023 0.0600000000000023 0.0 58 -59 0.0334999561309814 0.0300000000000011 0.0300000000000011 0.0 59 -60 0.0361111164093018 0.0399999999999991 0.0399999999999991 0.0 60 -61 0.0338809490203857 0.0300000000000011 0.0300000000000011 0.0 61 -62 0.0334880352020264 0.0399999999999991 0.0399999999999991 0.0 62 -63 0.0335280895233154 0.029999999999994 0.029999999999994 0.0 63 -64 0.0350849628448486 0.0300000000000011 0.0300000000000011 0.0 64 -65 0.033484935760498 0.0399999999999991 0.0399999999999991 0.0 65 -66 0.0578420162200928 0.0500000000000043 0.0500000000000043 0.0 66 -67 0.0367329120635986 0.0399999999999991 0.0399999999999991 0.0 67 -68 0.0351338386535645 0.0399999999999991 0.0399999999999991 0.0 68 -69 0.0334072113037109 0.0300000000000011 0.0300000000000011 0.0 69 -70 0.0339431762695312 0.0300000000000011 0.0300000000000011 0.0 70 -71 0.0332098007202148 0.0399999999999991 0.0399999999999991 0.0 71 -72 0.034019947052002 0.0300000000000011 0.0300000000000011 0.0 72 -73 0.0393249988555908 0.0399999999999991 0.0399999999999991 0.0 73 -74 0.0685920715332031 0.0600000000000023 0.0600000000000023 0.0 74 -75 0.034276008605957 0.0399999999999991 0.0399999999999991 0.0 75 -76 0.0334501266479492 0.029999999999994 0.029999999999994 0.0 76 -77 0.0332150459289551 0.0300000000000011 0.0300000000000011 0.0 77 -78 0.0333437919616699 0.0399999999999991 0.0399999999999991 0.0 78 -79 0.0332369804382324 0.0300000000000011 0.0300000000000011 0.0 79 -80 0.0360598564147949 0.0399999999999991 0.0399999999999991 0.0 80 -81 0.0335109233856201 0.0300000000000011 0.0300000000000011 0.0 81 -82 0.058535099029541 0.0600000000000023 0.0600000000000023 0.0 82 -83 0.0335390567779541 0.0300000000000011 0.0300000000000011 0.0 83 -84 0.0335979461669922 0.0399999999999991 0.0399999999999991 0.0 84 -85 0.0331900119781494 0.0300000000000011 0.0300000000000011 0.0 85 -86 0.03330397605896 0.0300000000000011 0.0300000000000011 0.0 86 -87 0.0366411209106445 0.0399999999999991 0.0399999999999991 0.0 87 -88 0.0347549915313721 0.0300000000000011 0.0300000000000011 0.0 88 -89 0.0331470966339111 0.0399999999999991 0.0399999999999991 0.0 89 -90 0.0598249435424805 0.0599999999999952 0.0599999999999952 0.0 90 -91 0.0330801010131836 0.0300000000000011 0.0300000000000011 0.0 91 -92 0.0329310894012451 0.0300000000000011 0.0300000000000011 0.0 92 -93 0.032721996307373 0.0300000000000011 0.0300000000000011 0.0 93 -94 0.0355160236358643 0.0399999999999991 0.0399999999999991 0.0 94 -95 0.0339648723602295 0.0300000000000011 0.0300000000000011 0.0 95 -96 0.032512903213501 0.0399999999999991 0.0399999999999991 0.0 96 -97 0.0330419540405273 0.0300000000000011 0.0300000000000011 0.0 97 -98 0.0334761142730713 0.0300000000000011 0.0300000000000011 0.0 98 -99 0.0660569667816162 0.0700000000000003 0.0700000000000003 0.0 99 -100 0.0368058681488037 0.0399999999999991 0.0399999999999991 0.0 100 -101 0.0347878932952881 0.0300000000000011 0.0300000000000011 0.0 101 -102 0.0338079929351807 0.029999999999994 0.029999999999994 0.0 102 -103 0.0334770679473877 0.029999999999994 0.029999999999994 0.0 103 -104 0.0329740047454834 0.0300000000000011 0.0300000000000011 0.0 104 -105 0.0333049297332764 0.0300000000000011 0.0300000000000011 0.0 105 -106 0.033519983291626 0.0399999999999991 0.0399999999999991 0.0 106 -107 0.0611979961395264 0.0600000000000023 0.0600000000000023 0.0 107 -108 0.0340859889984131 0.0300000000000011 0.0300000000000011 0.0 108 -109 0.0335040092468262 0.0399999999999991 0.0399999999999991 0.0 109 -110 0.0334708690643311 0.0300000000000011 0.0300000000000011 0.0 110 -111 0.0335888862609863 0.0300000000000011 0.0300000000000011 0.0 111 -112 0.033301830291748 0.0399999999999991 0.0399999999999991 0.0 112 -113 0.0332660675048828 0.0300000000000011 0.0300000000000011 0.0 113 -114 0.0370340347290039 0.0399999999999991 0.0399999999999991 0.0 114 -115 0.0586259365081787 0.0599999999999952 0.0599999999999952 0.0 115 -116 0.0336349010467529 0.0300000000000011 0.0300000000000011 0.0 116 -117 0.0350830554962158 0.0300000000000011 0.0300000000000011 0.0 117 -118 0.033397912979126 0.0399999999999991 0.0399999999999991 0.0 118 -119 0.0334382057189941 0.0300000000000011 0.0300000000000011 0.0 119 -120 0.0333988666534424 0.0399999999999991 0.0399999999999991 0.0 120 -121 0.0362389087677002 0.0300000000000011 0.0300000000000011 0.0 121 -122 0.033973217010498 0.0399999999999991 0.0399999999999991 0.0 122 -123 0.0578141212463379 0.0499999999999972 0.0499999999999972 0.0 123 -124 0.033689022064209 0.0400000000000063 0.0400000000000063 0.0 124 -125 0.0340471267700195 0.029999999999994 0.029999999999994 0.0 125 -126 0.0395550727844238 0.0400000000000063 0.0400000000000063 0.0 126 -127 0.0365371704101562 0.0399999999999991 0.0399999999999991 0.0 127 -128 0.034188985824585 0.0300000000000011 0.0300000000000011 0.0 128 -129 0.0336990356445312 0.0399999999999991 0.0399999999999991 0.0 129 -130 0.033534049987793 0.029999999999994 0.029999999999994 0.0 130 -131 0.0577750205993652 0.0600000000000023 0.0600000000000023 0.0 131 -132 0.0339059829711914 0.0300000000000011 0.0300000000000011 0.0 132 -133 0.0334141254425049 0.0300000000000011 0.0300000000000011 0.0 133 -134 0.0364940166473389 0.0399999999999991 0.0399999999999991 0.0 134 -135 0.0346250534057617 0.0399999999999991 0.0399999999999991 0.0 135 -136 0.03348708152771 0.0300000000000011 0.0300000000000011 0.0 136 -137 0.0330390930175781 0.0300000000000011 0.0300000000000011 0.0 137 -138 0.0333828926086426 0.0399999999999991 0.0399999999999991 0.0 138 -139 0.0577211380004883 0.0499999999999972 0.0499999999999972 0.0 139 -140 0.0367538928985596 0.0399999999999991 0.0399999999999991 0.0 140 -141 0.0339748859405518 0.0300000000000011 0.0300000000000011 0.0 141 -142 0.0334391593933105 0.0399999999999991 0.0399999999999991 0.0 142 -143 0.0334470272064209 0.0300000000000011 0.0300000000000011 0.0 143 -144 0.0356760025024414 0.0399999999999991 0.0399999999999991 0.0 144 -145 0.0332551002502441 0.0300000000000011 0.0300000000000011 0.0 145 -146 0.0335030555725098 0.0300000000000011 0.0300000000000011 0.0 146 -147 0.0603840351104736 0.0600000000000023 0.0600000000000023 0.0 147 -148 0.033195972442627 0.0399999999999991 0.0399999999999991 0.0 148 -149 0.0326118469238281 0.0300000000000011 0.0300000000000011 0.0 149 -150 0.0324470996856689 0.029999999999994 0.029999999999994 0.0 150 -151 0.0330009460449219 0.0400000000000063 0.0400000000000063 0.0 151 -152 0.0324180126190186 0.029999999999994 0.029999999999994 0.0 152 -153 0.0400440692901611 0.0400000000000063 0.0400000000000063 0.0 153 -154 0.0362899303436279 0.029999999999994 0.029999999999994 0.0 154 -155 0.0349278450012207 0.0400000000000063 0.0400000000000063 0.0 155 -156 0.0600240230560303 0.0599999999999952 0.0599999999999952 0.0 156 -157 0.0334708690643311 0.0300000000000011 0.0300000000000011 0.0 157 -158 0.0335209369659424 0.0399999999999991 0.0399999999999991 0.0 158 -159 0.0335359573364258 0.0300000000000011 0.0300000000000011 0.0 159 -160 0.0334579944610596 0.0300000000000011 0.0300000000000011 0.0 160 -161 0.0362169742584229 0.0399999999999991 0.0399999999999991 0.0 161 -162 0.0338380336761475 0.0300000000000011 0.0300000000000011 0.0 162 -163 0.0335981845855713 0.0399999999999991 0.0399999999999991 0.0 163 -164 0.0578079223632812 0.0499999999999972 0.0499999999999972 0.0 164 -165 0.0334019660949707 0.0399999999999991 0.0399999999999991 0.0 165 -166 0.0331990718841553 0.0300000000000011 0.0300000000000011 0.0 166 -167 0.0360620021820068 0.0399999999999991 0.0399999999999991 0.0 167 -168 0.0344648361206055 0.0300000000000011 0.0300000000000011 0.0 168 -169 0.0341999530792236 0.0399999999999991 0.0399999999999991 0.0 169 -170 0.0331728458404541 0.0300000000000011 0.0300000000000011 0.0 170 -171 0.0350158214569092 0.0300000000000011 0.0300000000000011 0.0 171 -172 0.0580298900604248 0.0600000000000023 0.0600000000000023 0.0 172 -173 0.0335690975189209 0.0300000000000011 0.0300000000000011 0.0 173 -174 0.036384105682373 0.0399999999999991 0.0399999999999991 0.0 174 -175 0.034492015838623 0.0300000000000011 0.0300000000000011 0.0 175 -176 0.03336501121521 0.0399999999999991 0.0399999999999991 0.0 176 -177 0.0331079959869385 0.029999999999994 0.029999999999994 0.0 177 -178 0.0331339836120605 0.0300000000000011 0.0300000000000011 0.0 178 -179 0.0350081920623779 0.0399999999999991 0.0399999999999991 0.0 179 -180 0.0666470527648926 0.0700000000000003 0.0700000000000003 0.0 180 -181 0.0338301658630371 0.0300000000000011 0.0300000000000011 0.0 181 -182 0.0340950489044189 0.0300000000000011 0.0300000000000011 0.0 182 -183 0.0334529876708984 0.0399999999999991 0.0399999999999991 0.0 183 -184 0.0331630706787109 0.0300000000000011 0.0300000000000011 0.0 184 -185 0.0333731174468994 0.0300000000000011 0.0300000000000011 0.0 185 -186 0.0330700874328613 0.0399999999999991 0.0399999999999991 0.0 186 -187 0.0334250926971436 0.0300000000000011 0.0300000000000011 0.0 187 -188 0.0619869232177734 0.0600000000000023 0.0600000000000023 0.0 188 -189 0.0336270332336426 0.0399999999999991 0.0399999999999991 0.0 189 -190 0.0331699848175049 0.029999999999994 0.029999999999994 0.0 190 -191 0.033411979675293 0.0300000000000011 0.0300000000000011 0.0 191 -192 0.0346980094909668 0.0399999999999991 0.0399999999999991 0.0 192 -193 0.0330710411071777 0.0300000000000011 0.0300000000000011 0.0 193 -194 0.0360589027404785 0.0399999999999991 0.0399999999999991 0.0 194 -195 0.0341928005218506 0.0300000000000011 0.0300000000000011 0.0 195 -196 0.0596940517425537 0.0600000000000023 0.0600000000000023 0.0 196 -197 0.0352950096130371 0.0300000000000011 0.0300000000000011 0.0 197 -198 0.0335190296173096 0.0399999999999991 0.0399999999999991 0.0 198 -199 0.0334808826446533 0.0300000000000011 0.0300000000000011 0.0 199 -200 0.0335469245910645 0.0399999999999991 0.0399999999999991 0.0 200 -201 0.035862922668457 0.0300000000000011 0.0300000000000011 0.0 201 -202 0.034390926361084 0.0399999999999991 0.0399999999999991 0.0 202 -203 0.0333080291748047 0.0300000000000011 0.0300000000000011 0.0 203 -204 0.0580418109893799 0.0599999999999952 0.0599999999999952 0.0 204 -205 0.0345079898834229 0.0300000000000011 0.0300000000000011 0.0 205 -206 0.041719913482666 0.0499999999999972 0.0399999999999991 0.01 206 -207 0.0368390083312988 0.0399999999999991 0.0399999999999991 0.0 207 -208 0.0351078510284424 0.0300000000000011 0.0300000000000011 0.0 208 -209 0.0345809459686279 0.0399999999999991 0.0399999999999991 0.0 209 -210 0.0339300632476807 0.0300000000000011 0.0300000000000011 0.0 210 -211 0.0333361625671387 0.0399999999999991 0.0399999999999991 0.0 211 -212 0.0581560134887695 0.0600000000000023 0.0600000000000023 0.0 212 -213 0.0329880714416504 0.0300000000000011 0.0300000000000011 0.0 213 -214 0.0360338687896729 0.0300000000000011 0.0300000000000011 0.0 214 -215 0.0338609218597412 0.0399999999999991 0.0399999999999991 0.0 215 -216 0.0329849720001221 0.0300000000000011 0.0300000000000011 0.0 216 -217 0.0327110290527344 0.029999999999994 0.029999999999994 0.0 217 -218 0.0328159332275391 0.0400000000000063 0.0400000000000063 0.0 218 -219 0.0330610275268555 0.029999999999994 0.029999999999994 0.0 219 -220 0.03336501121521 0.0300000000000011 0.0300000000000011 0.0 220 -221 0.0611529350280762 0.0600000000000023 0.0600000000000023 0.0 221 -222 0.0351941585540771 0.0399999999999991 0.0399999999999991 0.0 222 -223 0.0333490371704102 0.0300000000000011 0.0300000000000011 0.0 223 -224 0.0350041389465332 0.0399999999999991 0.0399999999999991 0.0 224 -225 0.0333740711212158 0.0300000000000011 0.0300000000000011 0.0 225 -226 0.0332489013671875 0.0300000000000011 0.0300000000000011 0.0 226 -227 0.0336949825286865 0.0399999999999991 0.0399999999999991 0.0 227 -228 0.035956859588623 0.0300000000000011 0.0300000000000011 0.0 228 -229 0.0582809448242188 0.0599999999999952 0.0599999999999952 0.0 229 -230 0.0335919857025146 0.0300000000000011 0.0300000000000011 0.0 230 -231 0.0334489345550537 0.0399999999999991 0.0399999999999991 0.0 231 -232 0.0346810817718506 0.0300000000000011 0.0300000000000011 0.0 232 -233 0.0393500328063965 0.0399999999999991 0.0399999999999991 0.0 233 -234 0.0365040302276611 0.0399999999999991 0.0399999999999991 0.0 234 -235 0.0341880321502686 0.0300000000000011 0.0300000000000011 0.0 235 -236 0.0340659618377686 0.0399999999999991 0.0399999999999991 0.0 236 -237 0.0579462051391602 0.0500000000000043 0.0500000000000043 0.0 237 -238 0.0337111949920654 0.0399999999999991 0.0399999999999991 0.0 238 -239 0.0335190296173096 0.0300000000000011 0.0300000000000011 0.0 239 -240 0.0335848331451416 0.0399999999999991 0.0399999999999991 0.0 240 -241 0.0367398262023926 0.0300000000000011 0.0300000000000011 0.0 241 -242 0.0346360206604004 0.0399999999999991 0.0399999999999991 0.0 242 -243 0.0332989692687988 0.0300000000000011 0.0300000000000011 0.0 243 -244 0.0345680713653564 0.029999999999994 0.029999999999994 0.0 244 -245 0.0580320358276367 0.0600000000000023 0.0600000000000023 0.0 245 -246 0.0333890914916992 0.0399999999999991 0.0399999999999991 0.0 246 -247 0.0363030433654785 0.0300000000000011 0.0300000000000011 0.0 247 -248 0.0343329906463623 0.0399999999999991 0.0399999999999991 0.0 248 -249 0.0347940921783447 0.0300000000000011 0.0300000000000011 0.0 249 -250 0.0332629680633545 0.0300000000000011 0.0300000000000011 0.0 250 -251 0.0347621440887451 0.0399999999999991 0.0399999999999991 0.0 251 -252 0.0334999561309814 0.0300000000000011 0.0300000000000011 0.0 252 -253 0.0580670833587646 0.0600000000000023 0.0600000000000023 0.0 253 -254 0.0367870330810547 0.0399999999999991 0.0399999999999991 0.0 254 -255 0.0336589813232422 0.0300000000000011 0.0300000000000011 0.0 255 -256 0.0331900119781494 0.029999999999994 0.029999999999994 0.0 256 -257 0.0331740379333496 0.0399999999999991 0.0399999999999991 0.0 257 -258 0.0331830978393555 0.0300000000000011 0.0300000000000011 0.0 258 -259 0.037837028503418 0.0399999999999991 0.0399999999999991 0.0 259 -260 0.0366449356079102 0.0300000000000011 0.0300000000000011 0.0 260 -261 0.0612552165985107 0.0599999999999952 0.0599999999999952 0.0 261 -262 0.0344550609588623 0.0300000000000011 0.0300000000000011 0.0 262 -263 0.0333309173583984 0.0300000000000011 0.0300000000000011 0.0 263 -264 0.0331869125366211 0.0399999999999991 0.0399999999999991 0.0 264 -265 0.0332980155944824 0.0300000000000011 0.0300000000000011 0.0 265 -266 0.0332081317901611 0.0300000000000011 0.0300000000000011 0.0 266 -267 0.0328857898712158 0.0399999999999991 0.0399999999999991 0.0 267 -268 0.036323070526123 0.0300000000000011 0.0300000000000011 0.0 268 -269 0.0584030151367188 0.0599999999999952 0.0599999999999952 0.0 269 -270 0.0336670875549316 0.0399999999999991 0.0399999999999991 0.0 270 -271 0.0333220958709717 0.0300000000000011 0.0300000000000011 0.0 271 -272 0.0331919193267822 0.0300000000000011 0.0300000000000011 0.0 272 -273 0.0332930088043213 0.0399999999999991 0.0399999999999991 0.0 273 -274 0.0363700389862061 0.0300000000000011 0.0300000000000011 0.0 274 -275 0.0336799621582031 0.0399999999999991 0.0399999999999991 0.0 275 -276 0.0346400737762451 0.0300000000000011 0.0300000000000011 0.0 276 -277 0.0583391189575195 0.0600000000000023 0.0600000000000023 0.0 277 -278 0.0353269577026367 0.0300000000000011 0.0300000000000011 0.0 278 -279 0.0334451198577881 0.0399999999999991 0.0399999999999991 0.0 279 -280 0.0338170528411865 0.0300000000000011 0.0300000000000011 0.0 280 -281 0.0358221530914307 0.0399999999999991 0.0399999999999991 0.0 281 -282 0.033682107925415 0.0300000000000011 0.0300000000000011 0.0 282 -283 0.0331659317016602 0.029999999999994 0.029999999999994 0.0 283 -284 0.0337538719177246 0.0399999999999991 0.0399999999999991 0.0 284 -285 0.0577969551086426 0.0600000000000023 0.0600000000000023 0.0 285 -286 0.0399131774902344 0.0399999999999991 0.0399999999999991 0.0 286 -287 0.0358040332794189 0.0300000000000011 0.0300000000000011 0.0 287 -288 0.0327050685882568 0.0300000000000011 0.0300000000000011 0.0 288 -289 0.0338749885559082 0.0399999999999991 0.0399999999999991 0.0 289 -290 0.0324099063873291 0.0300000000000011 0.0300000000000011 0.0 290 -291 0.032336950302124 0.0300000000000011 0.0300000000000011 0.0 291 -292 0.0333211421966553 0.0399999999999991 0.0399999999999991 0.0 292 -293 0.0579719543457031 0.0499999999999972 0.0499999999999972 0.0 293 -294 0.0362699031829834 0.0399999999999991 0.0399999999999991 0.0 294 -295 0.0343790054321289 0.0300000000000011 0.0300000000000011 0.0 295 -296 0.0331552028656006 0.0399999999999991 0.0399999999999991 0.0 296 -297 0.0328569412231445 0.0300000000000011 0.0300000000000011 0.0 297 -298 0.0329990386962891 0.0300000000000011 0.0300000000000011 0.0 298 -299 0.0327639579772949 0.0399999999999991 0.0399999999999991 0.0 299 -300 0.0331850051879883 0.0300000000000011 0.0300000000000011 0.0 300 -301 0.0610020160675049 0.0600000000000023 0.0600000000000023 0.0 301 -302 0.0331580638885498 0.0300000000000011 0.0300000000000011 0.0 302 -303 0.0325980186462402 0.0399999999999991 0.0399999999999991 0.0 303 -304 0.0325989723205566 0.029999999999994 0.029999999999994 0.0 304 -305 0.0341310501098633 0.0300000000000011 0.0300000000000011 0.0 305 -306 0.0326070785522461 0.0399999999999991 0.0399999999999991 0.0 306 -307 0.032383918762207 0.0300000000000011 0.0300000000000011 0.0 307 -308 0.0361649990081787 0.0300000000000011 0.0300000000000011 0.0 308 -309 0.0585198402404785 0.0600000000000023 0.0600000000000023 0.0 309 -310 0.0331130027770996 0.0399999999999991 0.0399999999999991 0.0 310 -311 0.0329859256744385 0.0300000000000011 0.0300000000000011 0.0 311 -312 0.0329129695892334 0.0300000000000011 0.0300000000000011 0.0 312 -313 0.0405938625335693 0.0399999999999991 0.0399999999999991 0.0 313 -314 0.0329680442810059 0.0300000000000011 0.0300000000000011 0.0 314 -315 0.0359671115875244 0.0399999999999991 0.0399999999999991 0.0 315 -316 0.0347959995269775 0.0399999999999991 0.0399999999999991 0.0 316 -317 0.0335128307342529 0.0300000000000011 0.0300000000000011 0.0 317 -318 0.0581021308898926 0.0599999999999952 0.0599999999999952 0.0 318 -319 0.033390998840332 0.0300000000000011 0.0300000000000011 0.0 319 -320 0.0332300662994385 0.0300000000000011 0.0300000000000011 0.0 320 -321 0.0363011360168457 0.0399999999999991 0.0399999999999991 0.0 321 -322 0.0331549644470215 0.0300000000000011 0.0300000000000011 0.0 322 -323 0.0341241359710693 0.0399999999999991 0.0399999999999991 0.0 323 -324 0.0336441993713379 0.0300000000000011 0.0300000000000011 0.0 324 -325 0.0336179733276367 0.0300000000000011 0.0300000000000011 0.0 325 -326 0.0578069686889648 0.0599999999999952 0.0599999999999952 0.0 326 -327 0.0333080291748047 0.0400000000000063 0.0400000000000063 0.0 327 -328 0.0363671779632568 0.029999999999994 0.029999999999994 0.0 328 -329 0.0343098640441895 0.0400000000000063 0.0400000000000063 0.0 329 -330 0.033099889755249 0.029999999999994 0.029999999999994 0.0 330 -331 0.0332112312316895 0.0300000000000011 0.0300000000000011 0.0 331 -332 0.0349369049072266 0.0399999999999991 0.0399999999999991 0.0 332 -333 0.033397912979126 0.0300000000000011 0.0300000000000011 0.0 333 -334 0.0581459999084473 0.0600000000000023 0.0600000000000023 0.0 334 -335 0.0366590023040771 0.0300000000000011 0.0300000000000011 0.0 335 -336 0.0336220264434814 0.0399999999999991 0.0399999999999991 0.0 336 -337 0.0332498550415039 0.0300000000000011 0.0300000000000011 0.0 337 -338 0.0331971645355225 0.0399999999999991 0.0399999999999991 0.0 338 -339 0.0332369804382324 0.0300000000000011 0.0300000000000011 0.0 339 -340 0.0404288768768311 0.0399999999999991 0.0399999999999991 0.0 340 -341 0.0335631370544434 0.0300000000000011 0.0300000000000011 0.0 341 -342 0.0613040924072266 0.0599999999999952 0.0599999999999952 0.0 342 -343 0.0339159965515137 0.0399999999999991 0.0399999999999991 0.0 343 -344 0.0333619117736816 0.0300000000000011 0.0300000000000011 0.0 344 -345 0.0331740379333496 0.0300000000000011 0.0300000000000011 0.0 345 -346 0.0331220626831055 0.0399999999999991 0.0399999999999991 0.0 346 -347 0.0331380367279053 0.0300000000000011 0.0300000000000011 0.0 347 -348 0.0358641147613525 0.0399999999999991 0.0399999999999991 0.0 348 -349 0.0335299968719482 0.0300000000000011 0.0300000000000011 0.0 349 -350 0.0584430694580078 0.0600000000000023 0.0600000000000023 0.0 350 -351 0.0353488922119141 0.029999999999994 0.029999999999994 0.0 351 -352 0.03336501121521 0.0400000000000063 0.0400000000000063 0.0 352 -353 0.0332889556884766 0.029999999999994 0.029999999999994 0.0 353 -354 0.0334041118621826 0.0300000000000011 0.0300000000000011 0.0 354 -355 0.0363349914550781 0.0399999999999991 0.0399999999999991 0.0 355 -356 0.0346698760986328 0.0300000000000011 0.0300000000000011 0.0 356 -357 0.0335850715637207 0.0399999999999991 0.0399999999999991 0.0 357 -358 0.0599031448364258 0.0600000000000023 0.0600000000000023 0.0 358 -359 0.0340287685394287 0.0300000000000011 0.0300000000000011 0.0 359 -360 0.0335278511047363 0.0300000000000011 0.0300000000000011 0.0 360 -361 0.0349221229553223 0.0399999999999991 0.0399999999999991 0.0 361 -362 0.0355300903320312 0.0300000000000011 0.0300000000000011 0.0 362 -363 0.0349609851837158 0.0399999999999991 0.0399999999999991 0.0 363 -364 0.0329630374908447 0.0300000000000011 0.0300000000000011 0.0 364 -365 0.0333020687103271 0.0399999999999991 0.0399999999999991 0.0 365 -366 0.065701961517334 0.0599999999999952 0.0599999999999952 0.0 366 -367 0.0337100028991699 0.0400000000000063 0.0400000000000063 0.0 367 -368 0.0366199016571045 0.029999999999994 0.029999999999994 0.0 368 -369 0.0340349674224854 0.0400000000000063 0.0400000000000063 0.0 369 -370 0.0338621139526367 0.029999999999994 0.029999999999994 0.0 370 -371 0.0332958698272705 0.0300000000000011 0.0300000000000011 0.0 371 -372 0.0330479145050049 0.0399999999999991 0.0399999999999991 0.0 372 -373 0.033778190612793 0.0300000000000011 0.0300000000000011 0.0 373 -374 0.0588729381561279 0.0600000000000023 0.0600000000000023 0.0 374 -375 0.036099910736084 0.0399999999999991 0.0399999999999991 0.0 375 -376 0.0358579158782959 0.0300000000000011 0.0300000000000011 0.0 376 -377 0.03354811668396 0.0399999999999991 0.0399999999999991 0.0 377 -378 0.0334241390228271 0.0300000000000011 0.0300000000000011 0.0 378 -379 0.0335249900817871 0.0300000000000011 0.0300000000000011 0.0 379 -380 0.0329539775848389 0.0399999999999991 0.0399999999999991 0.0 380 -381 0.0334098339080811 0.0300000000000011 0.0300000000000011 0.0 381 -382 0.0632669925689697 0.0599999999999952 0.0599999999999952 0.0 382 -383 0.033499002456665 0.0399999999999991 0.0399999999999991 0.0 383 -384 0.0333430767059326 0.0300000000000011 0.0300000000000011 0.0 384 -385 0.03495192527771 0.0300000000000011 0.0300000000000011 0.0 385 -386 0.0333530902862549 0.0399999999999991 0.0399999999999991 0.0 386 -387 0.0335168838500977 0.0300000000000011 0.0300000000000011 0.0 387 -388 0.0355610847473145 0.0399999999999991 0.0399999999999991 0.0 388 -389 0.0336718559265137 0.0300000000000011 0.0300000000000011 0.0 389 -390 0.0594749450683594 0.0600000000000023 0.0600000000000023 0.0 390 -391 0.03342604637146 0.029999999999994 0.029999999999994 0.0 391 -392 0.0333490371704102 0.0400000000000063 0.0400000000000063 0.0 392 -393 0.0401210784912109 0.0399999999999991 0.0399999999999991 0.0 393 -394 0.0331671237945557 0.0300000000000011 0.0300000000000011 0.0 394 -395 0.0364630222320557 0.0399999999999991 0.0399999999999991 0.0 395 -396 0.0339119434356689 0.0300000000000011 0.0300000000000011 0.0 396 -397 0.0332529544830322 0.029999999999994 0.029999999999994 0.0 397 -398 0.0581979751586914 0.0600000000000023 0.0600000000000023 0.0 398 -399 0.0337510108947754 0.0300000000000011 0.0300000000000011 0.0 399 -400 0.0334861278533936 0.0300000000000011 0.0300000000000011 0.0 400 -401 0.0362730026245117 0.0300000000000011 0.0300000000000011 0.0 401 -402 0.03330397605896 0.0399999999999991 0.0399999999999991 0.0 402 -403 0.0347201824188232 0.0300000000000011 0.0300000000000011 0.0 403 -404 0.0331459045410156 0.0399999999999991 0.0399999999999991 0.0 404 -405 0.0333847999572754 0.0300000000000011 0.0300000000000011 0.0 405 -406 0.0580871105194092 0.0599999999999952 0.0599999999999952 0.0 406 -407 0.0334339141845703 0.0300000000000011 0.0300000000000011 0.0 407 -408 0.0370500087738037 0.0399999999999991 0.0399999999999991 0.0 408 -409 0.0344600677490234 0.0300000000000011 0.0300000000000011 0.0 409 -410 0.0331830978393555 0.0399999999999991 0.0399999999999991 0.0 410 -411 0.0335149765014648 0.0300000000000011 0.0300000000000011 0.0 411 -412 0.0346379280090332 0.0300000000000011 0.0300000000000011 0.0 412 -413 0.0334169864654541 0.0399999999999991 0.0399999999999991 0.0 413 -414 0.0582180023193359 0.0600000000000023 0.0600000000000023 0.0 414 -415 0.0361251831054688 0.0300000000000011 0.0300000000000011 0.0 415 -416 0.0350911617279053 0.0399999999999991 0.0399999999999991 0.0 416 -417 0.0334968566894531 0.0300000000000011 0.0300000000000011 0.0 417 -418 0.0332348346710205 0.029999999999994 0.029999999999994 0.0 418 -419 0.0332620143890381 0.0400000000000063 0.0400000000000063 0.0 419 -420 0.0409719944000244 0.0399999999999991 0.0399999999999991 0.0 420 -421 0.0333600044250488 0.0300000000000011 0.0300000000000011 0.0 421 -422 0.0630040168762207 0.0599999999999952 0.0599999999999952 0.0 422 -423 0.0343139171600342 0.0399999999999991 0.0399999999999991 0.0 423 -424 0.0333878993988037 0.0300000000000011 0.0300000000000011 0.0 424 -425 0.0333099365234375 0.0300000000000011 0.0300000000000011 0.0 425 -426 0.0331859588623047 0.0399999999999991 0.0399999999999991 0.0 426 -427 0.0331718921661377 0.0300000000000011 0.0300000000000011 0.0 427 -428 0.0377118587493896 0.0399999999999991 0.0399999999999991 0.0 428 -429 0.0332839488983154 0.0300000000000011 0.0300000000000011 0.0 429 -430 0.0597720146179199 0.0600000000000023 0.0600000000000023 0.0 430 -431 0.0336380004882812 0.029999999999994 0.029999999999994 0.0 431 -432 0.0333139896392822 0.0400000000000063 0.0400000000000063 0.0 432 -433 0.0331470966339111 0.029999999999994 0.029999999999994 0.0 433 -434 0.0334060192108154 0.0300000000000011 0.0300000000000011 0.0 434 -435 0.0361709594726562 0.0399999999999991 0.0399999999999991 0.0 435 -436 0.0336370468139648 0.0300000000000011 0.0300000000000011 0.0 436 -437 0.0333271026611328 0.0399999999999991 0.0399999999999991 0.0 437 -438 0.0596990585327148 0.0500000000000043 0.0500000000000043 0.0 438 -439 0.0337719917297363 0.0399999999999991 0.0399999999999991 0.0 439 -440 0.0335121154785156 0.0300000000000011 0.0300000000000011 0.0 440 -441 0.0355470180511475 0.0399999999999991 0.0399999999999991 0.0 441 -442 0.0341551303863525 0.0300000000000011 0.0300000000000011 0.0 442 -443 0.033562183380127 0.0399999999999991 0.0399999999999991 0.0 443 -444 0.033012866973877 0.0300000000000011 0.0300000000000011 0.0 444 -445 0.0334839820861816 0.029999999999994 0.029999999999994 0.0 445 -446 0.064687967300415 0.0700000000000003 0.0700000000000003 0.0 446 -447 0.0336949825286865 0.0300000000000011 0.0300000000000011 0.0 447 -448 0.0361959934234619 0.0399999999999991 0.0399999999999991 0.0 448 -449 0.0349109172821045 0.0300000000000011 0.0300000000000011 0.0 449 -450 0.0339109897613525 0.0399999999999991 0.0399999999999991 0.0 450 -451 0.0331861972808838 0.0300000000000011 0.0300000000000011 0.0 451 -452 0.0328741073608398 0.0300000000000011 0.0300000000000011 0.0 452 -453 0.0332541465759277 0.0399999999999991 0.0399999999999991 0.0 453 -454 0.0579590797424316 0.0500000000000043 0.0500000000000043 0.0 454 -455 0.0366909503936768 0.0399999999999991 0.0399999999999991 0.0 455 -456 0.0345089435577393 0.0300000000000011 0.0300000000000011 0.0 456 -457 0.0332140922546387 0.0399999999999991 0.0399999999999991 0.0 457 -458 0.0330581665039062 0.029999999999994 0.029999999999994 0.0 458 -459 0.0331969261169434 0.0300000000000011 0.0300000000000011 0.0 459 -460 0.0328719615936279 0.0399999999999991 0.0399999999999991 0.0 460 -461 0.033440113067627 0.0300000000000011 0.0300000000000011 0.0 461 -462 0.0617790222167969 0.0600000000000023 0.0600000000000023 0.0 462 -463 0.033750057220459 0.0300000000000011 0.0300000000000011 0.0 463 -464 0.0332808494567871 0.0399999999999991 0.0399999999999991 0.0 464 -465 0.0350358486175537 0.0300000000000011 0.0300000000000011 0.0 465 -466 0.0332400798797607 0.0399999999999991 0.0399999999999991 0.0 466 -467 0.0332620143890381 0.0300000000000011 0.0300000000000011 0.0 467 -468 0.0343048572540283 0.0300000000000011 0.0300000000000011 0.0 468 -469 0.0357210636138916 0.0399999999999991 0.0399999999999991 0.0 469 -470 0.0584299564361572 0.0599999999999952 0.0599999999999952 0.0 470 -471 0.0334739685058594 0.0300000000000011 0.0300000000000011 0.0 471 -472 0.0334410667419434 0.0300000000000011 0.0300000000000011 0.0 472 -473 0.0423488616943359 0.0499999999999972 0.0499999999999972 0.0 473 -474 0.033174991607666 0.0300000000000011 0.0300000000000011 0.0 474 -475 0.0360331535339355 0.0300000000000011 0.0300000000000011 0.0 475 -476 0.036052942276001 0.0399999999999991 0.0399999999999991 0.0 476 -477 0.0333659648895264 0.0300000000000011 0.0300000000000011 0.0 477 -478 0.0577530860900879 0.0600000000000023 0.0600000000000023 0.0 478 -479 0.0335140228271484 0.0399999999999991 0.0399999999999991 0.0 479 -480 0.0333487987518311 0.0300000000000011 0.0300000000000011 0.0 480 -481 0.0346870422363281 0.0300000000000011 0.0300000000000011 0.0 481 -482 0.0349428653717041 0.0399999999999991 0.0399999999999991 0.0 482 -483 0.0336499214172363 0.0300000000000011 0.0300000000000011 0.0 483 -484 0.0331089496612549 0.0399999999999991 0.0399999999999991 0.0 484 -485 0.0334107875823975 0.029999999999994 0.029999999999994 0.0 485 -486 0.0580129623413086 0.0600000000000023 0.0600000000000023 0.0 486 -487 0.0336880683898926 0.0300000000000011 0.0300000000000011 0.0 487 -488 0.0364341735839844 0.0399999999999991 0.0399999999999991 0.0 488 -489 0.0356800556182861 0.0300000000000011 0.0300000000000011 0.0 489 -490 0.033689022064209 0.0399999999999991 0.0399999999999991 0.0 490 -491 0.0335180759429932 0.0300000000000011 0.0300000000000011 0.0 491 -492 0.0345418453216553 0.0300000000000011 0.0300000000000011 0.0 492 -493 0.0336930751800537 0.0399999999999991 0.0399999999999991 0.0 493 -494 0.0580000877380371 0.0600000000000023 0.0600000000000023 0.0 494 -495 0.0361080169677734 0.029999999999994 0.029999999999994 0.0 495 -496 0.0336720943450928 0.0400000000000063 0.0400000000000063 0.0 496 -497 0.0333058834075928 0.029999999999994 0.029999999999994 0.0 497 -498 0.0333189964294434 0.0300000000000011 0.0300000000000011 0.0 498 -499 0.0332541465759277 0.0399999999999991 0.0399999999999991 0.0 499 -500 0.0402250289916992 0.0399999999999991 0.0399999999999991 0.0 500 -501 0.0334169864654541 0.0300000000000011 0.0300000000000011 0.0 501 -502 0.0628290176391602 0.0600000000000023 0.0600000000000023 0.0 502 -503 0.0341489315032959 0.0399999999999991 0.0399999999999991 0.0 503 -504 0.0333640575408936 0.0300000000000011 0.0300000000000011 0.0 504 -505 0.03312087059021 0.0300000000000011 0.0300000000000011 0.0 505 -506 0.0330550670623779 0.0399999999999991 0.0399999999999991 0.0 506 -507 0.0333640575408936 0.0300000000000011 0.0300000000000011 0.0 507 -508 0.0347590446472168 0.0300000000000011 0.0300000000000011 0.0 508 -509 0.0346050262451172 0.0399999999999991 0.0399999999999991 0.0 509 -510 0.0589158535003662 0.0599999999999952 0.0599999999999952 0.0 510 -511 0.0335807800292969 0.0300000000000011 0.0300000000000011 0.0 511 -512 0.0333380699157715 0.0399999999999991 0.0399999999999991 0.0 512 -513 0.0332279205322266 0.0300000000000011 0.0300000000000011 0.0 513 -514 0.0332310199737549 0.0300000000000011 0.0300000000000011 0.0 514 -515 0.0361509323120117 0.0399999999999991 0.0399999999999991 0.0 515 -516 0.0350699424743652 0.0300000000000011 0.0300000000000011 0.0 516 -517 0.0337638854980469 0.0399999999999991 0.0399999999999991 0.0 517 -518 0.0580861568450928 0.0600000000000023 0.0600000000000023 0.0 518 -519 0.035269021987915 0.0300000000000011 0.0300000000000011 0.0 519 -520 0.0334429740905762 0.029999999999994 0.029999999999994 0.0 520 -521 0.0334320068359375 0.0400000000000063 0.0400000000000063 0.0 521 -522 0.0365338325500488 0.029999999999994 0.029999999999994 0.0 522 -523 0.0335922241210938 0.0400000000000063 0.0400000000000063 0.0 523 -524 0.0331869125366211 0.029999999999994 0.029999999999994 0.0 524 -525 0.0333640575408936 0.0300000000000011 0.0300000000000011 0.0 525 -526 0.0657279491424561 0.0700000000000003 0.0700000000000003 0.0 526 -527 0.0335869789123535 0.0300000000000011 0.0300000000000011 0.0 527 -528 0.0365140438079834 0.0399999999999991 0.0399999999999991 0.0 528 -529 0.033782958984375 0.0300000000000011 0.0300000000000011 0.0 529 -530 0.0337071418762207 0.0399999999999991 0.0399999999999991 0.0 530 -531 0.0332880020141602 0.0300000000000011 0.0300000000000011 0.0 531 -532 0.0329639911651611 0.0300000000000011 0.0300000000000011 0.0 532 -533 0.033315896987915 0.0399999999999991 0.0399999999999991 0.0 533 -534 0.0582611560821533 0.0499999999999972 0.0499999999999972 0.0 534 -535 0.0367379188537598 0.0399999999999991 0.0399999999999991 0.0 535 -536 0.033797025680542 0.0400000000000063 0.0400000000000063 0.0 536 -537 0.0335040092468262 0.029999999999994 0.029999999999994 0.0 537 -538 0.0333931446075439 0.0300000000000011 0.0300000000000011 0.0 538 -539 0.033318042755127 0.0399999999999991 0.0399999999999991 0.0 539 -540 0.0329570770263672 0.0300000000000011 0.0300000000000011 0.0 540 -541 0.0334439277648926 0.0300000000000011 0.0300000000000011 0.0 541 -542 0.0605781078338623 0.0600000000000023 0.0600000000000023 0.0 542 -543 0.0348639488220215 0.0399999999999991 0.0399999999999991 0.0 543 -544 0.0333831310272217 0.0300000000000011 0.0300000000000011 0.0 544 -545 0.0333919525146484 0.029999999999994 0.029999999999994 0.0 545 -546 0.0348379611968994 0.0400000000000063 0.0400000000000063 0.0 546 -547 0.0334489345550537 0.029999999999994 0.029999999999994 0.0 547 -548 0.0333089828491211 0.0400000000000063 0.0400000000000063 0.0 548 -549 0.0365209579467773 0.029999999999994 0.029999999999994 0.0 549 -550 0.0601961612701416 0.0600000000000023 0.0600000000000023 0.0 550 -551 0.0337119102478027 0.0300000000000011 0.0300000000000011 0.0 551 -552 0.0332701206207275 0.0399999999999991 0.0399999999999991 0.0 552 -553 0.0401608943939209 0.0399999999999991 0.0399999999999991 0.0 553 -554 0.0333070755004883 0.0300000000000011 0.0300000000000011 0.0 554 -555 0.0364260673522949 0.0399999999999991 0.0399999999999991 0.0 555 -556 0.0348329544067383 0.0300000000000011 0.0300000000000011 0.0 556 -557 0.0339481830596924 0.0399999999999991 0.0399999999999991 0.0 557 -558 0.0576767921447754 0.0499999999999972 0.0499999999999972 0.0 558 -559 0.0335049629211426 0.0300000000000011 0.0300000000000011 0.0 559 -560 0.0332691669464111 0.029999999999994 0.029999999999994 0.0 560 -561 0.0332450866699219 0.0400000000000063 0.0400000000000063 0.0 561 -562 0.037883996963501 0.029999999999994 0.029999999999994 0.0 562 -563 0.0370709896087646 0.0400000000000063 0.0400000000000063 0.0 563 -564 0.0331628322601318 0.029999999999994 0.029999999999994 0.0 564 -565 0.0335371494293213 0.0399999999999991 0.0399999999999991 0.0 565 -566 0.0579180717468262 0.0500000000000043 0.0500000000000043 0.0 566 -567 0.0335509777069092 0.0399999999999991 0.0399999999999991 0.0 567 -568 0.0369341373443604 0.0300000000000011 0.0300000000000011 0.0 568 -569 0.0334761142730713 0.0399999999999991 0.0399999999999991 0.0 569 -570 0.0333311557769775 0.0300000000000011 0.0300000000000011 0.0 570 -571 0.0333850383758545 0.0300000000000011 0.0300000000000011 0.0 571 -572 0.0344130992889404 0.0399999999999991 0.0399999999999991 0.0 572 -573 0.0333690643310547 0.0300000000000011 0.0300000000000011 0.0 573 -574 0.0581290721893311 0.0599999999999952 0.0599999999999952 0.0 574 -575 0.0367560386657715 0.0399999999999991 0.0399999999999991 0.0 575 -576 0.0336780548095703 0.0300000000000011 0.0300000000000011 0.0 576 -577 0.0331878662109375 0.0300000000000011 0.0300000000000011 0.0 577 -578 0.0332210063934326 0.0399999999999991 0.0399999999999991 0.0 578 -579 0.0332109928131104 0.0300000000000011 0.0300000000000011 0.0 579 -580 0.0409071445465088 0.0399999999999991 0.0399999999999991 0.0 580 -581 0.033595085144043 0.0300000000000011 0.0300000000000011 0.0 581 -582 0.0607550144195557 0.0600000000000023 0.0600000000000023 0.0 582 -583 0.0355041027069092 0.0399999999999991 0.0399999999999991 0.0 583 -584 0.0334818363189697 0.0300000000000011 0.0300000000000011 0.0 584 -585 0.0333139896392822 0.0399999999999991 0.0399999999999991 0.0 585 -586 0.0332391262054443 0.0300000000000011 0.0300000000000011 0.0 586 -587 0.0332348346710205 0.029999999999994 0.029999999999994 0.0 587 -588 0.0332849025726318 0.0400000000000063 0.0400000000000063 0.0 588 -589 0.0360300540924072 0.029999999999994 0.029999999999994 0.0 589 -590 0.0599799156188965 0.0600000000000023 0.0600000000000023 0.0 590 -591 0.0335240364074707 0.0399999999999991 0.0399999999999991 0.0 591 -592 0.0333631038665771 0.0300000000000011 0.0300000000000011 0.0 592 -593 0.0332529544830322 0.0300000000000011 0.0300000000000011 0.0 593 -594 0.0335328578948975 0.0399999999999991 0.0399999999999991 0.0 594 -595 0.0370910167694092 0.0300000000000011 0.0300000000000011 0.0 595 -596 0.0335230827331543 0.0399999999999991 0.0399999999999991 0.0 596 -597 0.0337550640106201 0.0300000000000011 0.0300000000000011 0.0 597 -598 0.0580778121948242 0.0599999999999952 0.0599999999999952 0.0 598 -599 0.0352489948272705 0.0300000000000011 0.0300000000000011 0.0 599 -600 0.0334210395812988 0.0399999999999991 0.0399999999999991 0.0 600 -601 0.0336451530456543 0.0300000000000011 0.0300000000000011 0.0 601 -602 0.0362639427185059 0.0399999999999991 0.0399999999999991 0.0 602 -603 0.0335409641265869 0.0300000000000011 0.0300000000000011 0.0 603 -604 0.0330269336700439 0.0300000000000011 0.0300000000000011 0.0 604 -605 0.033350944519043 0.0399999999999991 0.0399999999999991 0.0 605 -606 0.0649051666259766 0.0600000000000023 0.0600000000000023 0.0 606 -607 0.0337560176849365 0.0399999999999991 0.0399999999999991 0.0 607 -608 0.0365309715270996 0.0300000000000011 0.0300000000000011 0.0 608 -609 0.0352151393890381 0.0399999999999991 0.0399999999999991 0.0 609 -610 0.0339179039001465 0.0300000000000011 0.0300000000000011 0.0 610 -611 0.0331799983978271 0.0300000000000011 0.0300000000000011 0.0 611 -612 0.0330498218536377 0.0399999999999991 0.0399999999999991 0.0 612 -613 0.0336270332336426 0.0300000000000011 0.0300000000000011 0.0 613 -614 0.0577888488769531 0.0599999999999952 0.0599999999999952 0.0 614 -615 0.0366761684417725 0.0399999999999991 0.0399999999999991 0.0 615 -616 0.0336871147155762 0.0300000000000011 0.0300000000000011 0.0 616 -617 0.0334889888763428 0.0300000000000011 0.0300000000000011 0.0 617 -618 0.033146858215332 0.0399999999999991 0.0399999999999991 0.0 618 -619 0.0333569049835205 0.0300000000000011 0.0300000000000011 0.0 619 -620 0.0330309867858887 0.0300000000000011 0.0300000000000011 0.0 620 -621 0.0333929061889648 0.0399999999999991 0.0399999999999991 0.0 621 -622 0.0609011650085449 0.0600000000000023 0.0600000000000023 0.0 622 -623 0.0338809490203857 0.0300000000000011 0.0300000000000011 0.0 623 -624 0.0332272052764893 0.029999999999994 0.029999999999994 0.0 624 -625 0.0336441993713379 0.0399999999999991 0.0399999999999991 0.0 625 -626 0.035059928894043 0.0300000000000011 0.0300000000000011 0.0 626 -627 0.0334160327911377 0.0399999999999991 0.0399999999999991 0.0 627 -628 0.0334069728851318 0.0300000000000011 0.0300000000000011 0.0 628 -629 0.0366249084472656 0.0399999999999991 0.0399999999999991 0.0 629 -630 0.0583260059356689 0.0500000000000043 0.0500000000000043 0.0 630 -631 0.0333540439605713 0.0399999999999991 0.0399999999999991 0.0 631 -632 0.0333960056304932 0.0300000000000011 0.0300000000000011 0.0 632 -633 0.0413072109222412 0.0399999999999991 0.0399999999999991 0.0 633 -634 0.0332448482513428 0.0399999999999991 0.0399999999999991 0.0 634 -635 0.0363118648529053 0.0300000000000011 0.0300000000000011 0.0 635 -636 0.035132884979248 0.0399999999999991 0.0399999999999991 0.0 636 -637 0.0339901447296143 0.0300000000000011 0.0300000000000011 0.0 637 -638 0.0578219890594482 0.0599999999999952 0.0599999999999952 0.0 638 -639 0.0334219932556152 0.0300000000000011 0.0300000000000011 0.0 639 -640 0.0333530902862549 0.0399999999999991 0.0399999999999991 0.0 640 -641 0.033282995223999 0.0300000000000011 0.0300000000000011 0.0 641 -642 0.0364758968353271 0.0399999999999991 0.0399999999999991 0.0 642 -643 0.0333881378173828 0.0300000000000011 0.0300000000000011 0.0 643 -644 0.0334060192108154 0.0300000000000011 0.0300000000000011 0.0 644 -645 0.0334770679473877 0.0399999999999991 0.0399999999999991 0.0 645 -646 0.0579509735107422 0.0500000000000043 0.0500000000000043 0.0 646 -647 0.0336329936981201 0.0399999999999991 0.0399999999999991 0.0 647 -648 0.0373489856719971 0.0399999999999991 0.0399999999999991 0.0 648 -649 0.0342509746551514 0.0300000000000011 0.0300000000000011 0.0 649 -650 0.0337338447570801 0.0300000000000011 0.0300000000000011 0.0 650 -651 0.0333359241485596 0.0399999999999991 0.0399999999999991 0.0 651 -652 0.0332560539245605 0.029999999999994 0.029999999999994 0.0 652 -653 0.034912109375 0.029999999999994 0.0300000000000011 0.0 653 -654 0.0582709312438965 0.0600000000000023 0.0600000000000023 0.0 654 -655 0.0366790294647217 0.0400000000000063 0.0400000000000063 0.0 655 -656 0.0336661338806152 0.0299999999999869 0.0299999999999869 0.0 656 -657 0.0334138870239258 0.0400000000000063 0.0400000000000063 0.0 657 -658 0.033390998840332 0.0300000000000011 0.0300000000000011 0.0 658 -659 0.0330209732055664 0.0300000000000011 0.0300000000000011 0.0 659 -660 0.0407001972198486 0.039999999999992 0.039999999999992 0.0 660 -661 0.0335381031036377 0.0400000000000063 0.0400000000000063 0.0 661 -662 0.0610449314117432 0.0600000000000023 0.0600000000000023 0.0 662 -663 0.0341410636901855 0.0300000000000011 0.0300000000000011 0.0 663 -664 0.0333421230316162 0.039999999999992 0.039999999999992 0.0 664 -665 0.0331799983978271 0.0300000000000011 0.0300000000000011 0.0 665 -666 0.0331680774688721 0.0300000000000011 0.0300000000000011 0.0 666 -667 0.0328528881072998 0.0400000000000063 0.0400000000000063 0.0 667 -668 0.0334010124206543 0.0300000000000011 0.0300000000000011 0.0 668 -669 0.0363960266113281 0.0300000000000011 0.0300000000000011 0.0 669 -670 0.058311939239502 0.0599999999999881 0.0599999999999881 0.0 670 -671 0.03330397605896 0.0400000000000063 0.0400000000000063 0.0 671 -672 0.0332088470458984 0.0300000000000011 0.0300000000000011 0.0 672 -673 0.0331571102142334 0.0300000000000011 0.0300000000000011 0.0 673 -674 0.0347979068756104 0.039999999999992 0.039999999999992 0.0 674 -675 0.0361380577087402 0.0300000000000011 0.0300000000000011 0.0 675 -676 0.0341131687164307 0.0400000000000063 0.0400000000000063 0.0 676 -677 0.03476881980896 0.0300000000000011 0.0300000000000011 0.0 677 -678 0.058121919631958 0.0600000000000023 0.0600000000000023 0.0 678 -679 0.0350527763366699 0.0300000000000011 0.0300000000000011 0.0 679 -680 0.0333900451660156 0.039999999999992 0.039999999999992 0.0 680 -681 0.033829927444458 0.0300000000000011 0.0300000000000011 0.0 681 -682 0.0363891124725342 0.0400000000000063 0.0400000000000063 0.0 682 -683 0.0345211029052734 0.0299999999999869 0.0299999999999869 0.0 683 -684 0.0335590839385986 0.0400000000000063 0.0400000000000063 0.0 684 -685 0.0574600696563721 0.0499999999999972 0.0499999999999972 0.0 685 -686 0.041471004486084 0.0499999999999972 0.0499999999999972 0.0 686 -687 0.0334889888763428 0.0300000000000011 0.0300000000000011 0.0 687 -688 0.0362579822540283 0.0400000000000063 0.0400000000000063 0.0 688 -689 0.033682107925415 0.0300000000000011 0.0300000000000011 0.0 689 -690 0.0352790355682373 0.0300000000000011 0.0300000000000011 0.0 690 -691 0.033221960067749 0.039999999999992 0.039999999999992 0.0 691 -692 0.0330390930175781 0.0300000000000011 0.0300000000000011 0.0 692 -693 0.0577991008758545 0.0600000000000023 0.0600000000000023 0.0 693 -694 0.0340001583099365 0.0300000000000011 0.0300000000000011 0.0 694 -695 0.0366599559783936 0.0400000000000063 0.0400000000000063 0.0 695 -696 0.0336761474609375 0.0299999999999869 0.0299999999999869 0.0 696 -697 0.0338170528411865 0.0400000000000063 0.0400000000000063 0.0 697 -698 0.0334699153900146 0.0300000000000011 0.0300000000000011 0.0 698 -699 0.0334680080413818 0.0300000000000011 0.0300000000000011 0.0 699 -700 0.0334641933441162 0.039999999999992 0.039999999999992 0.0 700 -701 0.0584831237792969 0.0700000000000074 0.0600000000000023 0.01 701 -702 0.0371170043945312 0.0300000000000011 0.0300000000000011 0.0 702 -703 0.0348899364471436 0.0400000000000063 0.0400000000000063 0.0 703 -704 0.0332977771759033 0.0300000000000011 0.0300000000000011 0.0 704 -705 0.0337090492248535 0.0300000000000011 0.0300000000000011 0.0 705 -706 0.0363600254058838 0.039999999999992 0.039999999999992 0.0 706 -707 0.0332589149475098 0.0300000000000011 0.0300000000000011 0.0 707 -708 0.0335700511932373 0.0300000000000011 0.0300000000000011 0.0 708 -709 0.0618710517883301 0.0699999999999932 0.0699999999999932 0.0 709 -710 0.0338459014892578 0.0300000000000011 0.0300000000000011 0.0 710 -711 0.0334110260009766 0.0300000000000011 0.0300000000000011 0.0 711 -712 0.0332870483398438 0.0400000000000063 0.0400000000000063 0.0 712 -713 0.0403330326080322 0.039999999999992 0.039999999999992 0.0 713 -714 0.0332109928131104 0.0300000000000011 0.0300000000000011 0.0 714 -715 0.0362699031829834 0.0400000000000063 0.0400000000000063 0.0 715 -716 0.0349149703979492 0.0300000000000011 0.0300000000000011 0.0 716 -717 0.0590531826019287 0.0600000000000023 0.0600000000000023 0.0 717 -718 0.0336310863494873 0.039999999999992 0.039999999999992 0.0 718 -719 0.0333178043365479 0.0300000000000011 0.0300000000000011 0.0 719 -720 0.0332901477813721 0.0300000000000011 0.0300000000000011 0.0 720 -721 0.0332920551300049 0.0400000000000063 0.0400000000000063 0.0 721 -722 0.0363869667053223 0.0300000000000011 0.0300000000000011 0.0 722 -723 0.0335569381713867 0.039999999999992 0.039999999999992 0.0 723 -724 0.0336151123046875 0.0300000000000011 0.0300000000000011 0.0 724 -725 0.0579018592834473 0.0600000000000023 0.0600000000000023 0.0 725 -726 0.0334959030151367 0.0300000000000011 0.0300000000000011 0.0 726 -727 0.0332579612731934 0.0300000000000011 0.0300000000000011 0.0 727 -728 0.0363228321075439 0.039999999999992 0.039999999999992 0.0 728 -729 0.034060001373291 0.0300000000000011 0.0300000000000011 0.0 729 -730 0.0342481136322021 0.0400000000000063 0.0400000000000063 0.0 730 -731 0.033174991607666 0.0300000000000011 0.0300000000000011 0.0 731 -732 0.0333402156829834 0.039999999999992 0.039999999999992 0.0 732 -733 0.0594391822814941 0.0499999999999972 0.0499999999999972 0.0 733 -734 0.0340390205383301 0.0400000000000063 0.0400000000000063 0.0 734 -735 0.0368988513946533 0.0300000000000011 0.0300000000000011 0.0 735 -736 0.036196231842041 0.039999999999992 0.039999999999992 0.0 736 -737 0.0333859920501709 0.0300000000000011 0.0300000000000011 0.0 737 -738 0.0332441329956055 0.0400000000000063 0.0400000000000063 0.0 738 -739 0.0330839157104492 0.0300000000000011 0.0300000000000011 0.0 739 -740 0.0413918495178223 0.039999999999992 0.039999999999992 0.0 740 -741 0.0612490177154541 0.0600000000000023 0.0600000000000023 0.0 741 -742 0.0341551303863525 0.0300000000000011 0.0300000000000011 0.0 742 -743 0.035499095916748 0.0400000000000063 0.0400000000000063 0.0 743 -744 0.0333080291748047 0.0300000000000011 0.0300000000000011 0.0 744 -745 0.0331649780273438 0.039999999999992 0.039999999999992 0.0 745 -746 0.0332601070404053 0.0300000000000011 0.0300000000000011 0.0 746 -747 0.0330040454864502 0.0300000000000011 0.0300000000000011 0.0 747 -748 0.0333499908447266 0.0400000000000063 0.0400000000000063 0.0 748 -749 0.0617849826812744 0.0599999999999881 0.0599999999999881 0.0 749 -750 0.0337250232696533 0.0300000000000011 0.0300000000000011 0.0 750 -751 0.0336470603942871 0.0400000000000063 0.0400000000000063 0.0 751 -752 0.0334620475769043 0.0300000000000011 0.0300000000000011 0.0 752 -753 0.0332620143890381 0.0300000000000011 0.0300000000000011 0.0 753 -754 0.0332539081573486 0.039999999999992 0.039999999999992 0.0 754 -755 0.036297082901001 0.0300000000000011 0.0300000000000011 0.0 755 -756 0.0344269275665283 0.0400000000000063 0.0400000000000063 0.0 756 -757 0.0584709644317627 0.0499999999999972 0.0499999999999972 0.0 757 -758 0.0336380004882812 0.0300000000000011 0.0300000000000011 0.0 758 -759 0.0352699756622314 0.0300000000000011 0.0300000000000011 0.0 759 -760 0.0333750247955322 0.039999999999992 0.039999999999992 0.0 760 -761 0.0338349342346191 0.0300000000000011 0.0300000000000011 0.0 761 -762 0.0356252193450928 0.0400000000000063 0.0400000000000063 0.0 762 -763 0.0349218845367432 0.0299999999999869 0.0299999999999869 0.0 763 -764 0.0333728790283203 0.0300000000000011 0.0300000000000011 0.0 764 -765 0.057542085647583 0.0600000000000023 0.0600000000000023 0.0 765 -766 0.040518045425415 0.0400000000000063 0.0400000000000063 0.0 766 -767 0.0333969593048096 0.039999999999992 0.039999999999992 0.0 767 -768 0.036506175994873 0.0300000000000011 0.0300000000000011 0.0 768 -769 0.034682035446167 0.0400000000000063 0.0400000000000063 0.0 769 -770 0.0337419509887695 0.0300000000000011 0.0300000000000011 0.0 770 -771 0.0334620475769043 0.0300000000000011 0.0300000000000011 0.0 771 -772 0.0577020645141602 0.0600000000000023 0.0600000000000023 0.0 772 -773 0.0334780216217041 0.039999999999992 0.039999999999992 0.0 773 -774 0.0334508419036865 0.0300000000000011 0.0300000000000011 0.0 774 -775 0.036329984664917 0.0300000000000011 0.0300000000000011 0.0 775 -776 0.0336270332336426 0.039999999999992 0.039999999999992 0.0 776 -777 0.0338649749755859 0.0300000000000011 0.0300000000000011 0.0 777 -778 0.0331289768218994 0.0400000000000063 0.0400000000000063 0.0 778 -779 0.0331418514251709 0.0300000000000011 0.0300000000000011 0.0 779 -780 0.0577938556671143 0.0600000000000023 0.0600000000000023 0.0 780 -781 0.0363731384277344 0.0300000000000011 0.0300000000000011 0.0 781 -782 0.0350909233093262 0.039999999999992 0.039999999999992 0.0 782 -783 0.0350501537322998 0.0300000000000011 0.0300000000000011 0.0 783 -784 0.0335679054260254 0.0400000000000063 0.0400000000000063 0.0 784 -785 0.0334410667419434 0.0300000000000011 0.0300000000000011 0.0 785 -786 0.0349650382995605 0.0300000000000011 0.0300000000000011 0.0 786 -787 0.0338919162750244 0.039999999999992 0.039999999999992 0.0 787 -788 0.060966968536377 0.0600000000000023 0.0600000000000023 0.0 788 -789 0.0341048240661621 0.0300000000000011 0.0300000000000011 0.0 789 -790 0.0336289405822754 0.039999999999992 0.039999999999992 0.0 790 -791 0.0333750247955322 0.0300000000000011 0.0300000000000011 0.0 791 -792 0.0333640575408936 0.0300000000000011 0.0300000000000011 0.0 792 -793 0.0411760807037354 0.0499999999999972 0.0499999999999972 0.0 793 -794 0.0330638885498047 0.0300000000000011 0.0300000000000011 0.0 794 -795 0.0362119674682617 0.0300000000000011 0.0300000000000011 0.0 795 -796 0.0589008331298828 0.0499999999999972 0.0499999999999972 0.0 796 -797 0.0335359573364258 0.0400000000000063 0.0400000000000063 0.0 797 -798 0.0333008766174316 0.0300000000000011 0.0300000000000011 0.0 798 -799 0.0347950458526611 0.0300000000000011 0.0300000000000011 0.0 799 -800 0.0332999229431152 0.039999999999992 0.039999999999992 0.0 800 -801 0.033350944519043 0.0300000000000011 0.0300000000000011 0.0 801 -802 0.0362880229949951 0.0400000000000063 0.0400000000000063 0.0 802 -803 0.0351760387420654 0.0299999999999869 0.0299999999999869 0.0 803 -804 0.0578329563140869 0.0600000000000023 0.0600000000000023 0.0 804 -805 0.0334799289703369 0.0300000000000011 0.0300000000000011 0.0 805 -806 0.0332357883453369 0.0400000000000063 0.0400000000000063 0.0 806 -807 0.0333900451660156 0.0300000000000011 0.0300000000000011 0.0 807 -808 0.0362451076507568 0.039999999999992 0.039999999999992 0.0 808 -809 0.0333170890808105 0.0300000000000011 0.0300000000000011 0.0 809 -810 0.0343527793884277 0.0400000000000063 0.0400000000000063 0.0 810 -811 0.0335409641265869 0.0300000000000011 0.0300000000000011 0.0 811 -812 0.0592930316925049 0.0600000000000023 0.0600000000000023 0.0 812 -813 0.0335829257965088 0.0299999999999869 0.0299999999999869 0.0 813 -814 0.033574104309082 0.0300000000000011 0.0300000000000011 0.0 814 -815 0.0360231399536133 0.0400000000000063 0.0400000000000063 0.0 815 -816 0.033574104309082 0.0300000000000011 0.0300000000000011 0.0 816 -817 0.0337851047515869 0.039999999999992 0.039999999999992 0.0 817 -818 0.0332200527191162 0.0300000000000011 0.0300000000000011 0.0 818 -819 0.0334579944610596 0.0300000000000011 0.0300000000000011 0.0 819 -820 0.063668966293335 0.0600000000000023 0.0600000000000023 0.0 820 -821 0.0360410213470459 0.0300000000000011 0.0300000000000011 0.0 821 -822 0.0340430736541748 0.039999999999992 0.039999999999992 0.0 822 -823 0.0340561866760254 0.0300000000000011 0.0300000000000011 0.0 823 -824 0.0331687927246094 0.0400000000000063 0.0400000000000063 0.0 824 -825 0.0331730842590332 0.0300000000000011 0.0300000000000011 0.0 825 -826 0.0330498218536377 0.0300000000000011 0.0300000000000011 0.0 826 -827 0.0333058834075928 0.039999999999992 0.039999999999992 0.0 827 -828 0.0610239505767822 0.0600000000000023 0.0600000000000023 0.0 828 -829 0.0348649024963379 0.0300000000000011 0.0300000000000011 0.0 829 -830 0.0334899425506592 0.039999999999992 0.039999999999992 0.0 830 -831 0.0332210063934326 0.0300000000000011 0.0300000000000011 0.0 831 -832 0.0332589149475098 0.0300000000000011 0.0300000000000011 0.0 832 -833 0.0330421924591064 0.0400000000000063 0.0400000000000063 0.0 833 -834 0.033440113067627 0.0300000000000011 0.0300000000000011 0.0 834 -835 0.0366320610046387 0.039999999999992 0.039999999999992 0.0 835 -836 0.0392351150512695 0.039999999999992 0.039999999999992 0.0 836 -837 0.0332860946655273 0.0400000000000063 0.0400000000000063 0.0 837 -838 0.0337049961090088 0.0300000000000011 0.0300000000000011 0.0 838 -839 0.0346989631652832 0.0300000000000011 0.0300000000000011 0.0 839 -840 0.0334670543670654 0.039999999999992 0.039999999999992 0.0 840 -841 0.0332751274108887 0.0300000000000011 0.0300000000000011 0.0 841 -842 0.0364458560943604 0.0400000000000063 0.0400000000000063 0.0 842 -843 0.0590341091156006 0.0600000000000023 0.0600000000000023 0.0 843 -844 0.0335009098052979 0.0300000000000011 0.0300000000000011 0.0 844 -845 0.0332801342010498 0.0300000000000011 0.0300000000000011 0.0 845 -846 0.0411808490753174 0.0499999999999972 0.0499999999999972 0.0 846 -847 0.0332710742950439 0.0300000000000011 0.0300000000000011 0.0 847 -848 0.0353641510009766 0.0300000000000011 0.0300000000000011 0.0 848 -849 0.0346250534057617 0.039999999999992 0.039999999999992 0.0 849 -850 0.0339748859405518 0.0300000000000011 0.0300000000000011 0.0 850 -851 0.0577869415283203 0.0600000000000023 0.0600000000000023 0.0 851 -852 0.0328571796417236 0.0300000000000011 0.0300000000000011 0.0 852 -853 0.0324909687042236 0.039999999999992 0.039999999999992 0.0 853 -854 0.0326740741729736 0.0300000000000011 0.0300000000000011 0.0 854 -855 0.035412073135376 0.0300000000000011 0.0300000000000011 0.0 855 -856 0.0338008403778076 0.0400000000000063 0.0400000000000063 0.0 856 -857 0.0328540802001953 0.0300000000000011 0.0300000000000011 0.0 857 -858 0.0333800315856934 0.0300000000000011 0.0300000000000011 0.0 858 -859 0.057999849319458 0.0600000000000023 0.0600000000000023 0.0 859 -860 0.0334048271179199 0.039999999999992 0.039999999999992 0.0 860 -861 0.0332610607147217 0.0300000000000011 0.0300000000000011 0.0 861 -862 0.0369820594787598 0.0400000000000063 0.0400000000000063 0.0 862 -863 0.0350849628448486 0.0299999999999869 0.0299999999999869 0.0 863 -864 0.0332708358764648 0.0300000000000011 0.0300000000000011 0.0 864 -865 0.0333819389343262 0.0400000000000063 0.0400000000000063 0.0 865 -866 0.0360109806060791 0.0300000000000011 0.0300000000000011 0.0 866 -867 0.058070182800293 0.0600000000000023 0.0600000000000023 0.0 867 -868 0.0367460250854492 0.039999999999992 0.039999999999992 0.0 868 -869 0.0335311889648438 0.0300000000000011 0.0300000000000011 0.0 869 -870 0.034480094909668 0.0400000000000063 0.0400000000000063 0.0 870 -871 0.0331480503082275 0.0300000000000011 0.0300000000000011 0.0 871 -872 0.0331017971038818 0.0300000000000011 0.0300000000000011 0.0 872 -873 0.0400230884552002 0.039999999999992 0.039999999999992 0.0 873 -874 0.0334382057189941 0.0400000000000063 0.0400000000000063 0.0 874 -875 0.0614311695098877 0.0600000000000023 0.0600000000000023 0.0 875 -876 0.0357120037078857 0.0299999999999869 0.0299999999999869 0.0 876 -877 0.0331881046295166 0.0400000000000063 0.0400000000000063 0.0 877 -878 0.0333230495452881 0.0300000000000011 0.0300000000000011 0.0 878 -879 0.033128023147583 0.0300000000000011 0.0300000000000011 0.0 879 -880 0.0331029891967773 0.039999999999992 0.039999999999992 0.0 880 -881 0.0331718921661377 0.0300000000000011 0.0300000000000011 0.0 881 -882 0.0365970134735107 0.0400000000000063 0.0400000000000063 0.0 882 -883 0.0594449043273926 0.0499999999999972 0.0499999999999972 0.0 883 -884 0.0333600044250488 0.0400000000000063 0.0400000000000063 0.0 884 -885 0.0332062244415283 0.0300000000000011 0.0300000000000011 0.0 885 -886 0.0332579612731934 0.0300000000000011 0.0300000000000011 0.0 886 -887 0.033174991607666 0.039999999999992 0.039999999999992 0.0 887 -888 0.033627986907959 0.0300000000000011 0.0300000000000011 0.0 888 -889 0.0363061428070068 0.0400000000000063 0.0400000000000063 0.0 889 -890 0.0346910953521729 0.0299999999999869 0.0299999999999869 0.0 890 -891 0.0577399730682373 0.0600000000000023 0.0600000000000023 0.0 891 -892 0.0351190567016602 0.0300000000000011 0.0300000000000011 0.0 892 -893 0.0334410667419434 0.0300000000000011 0.0300000000000011 0.0 893 -894 0.0332920551300049 0.0300000000000011 0.0300000000000011 0.0 894 -895 0.0356509685516357 0.039999999999992 0.039999999999992 0.0 895 -896 0.0329999923706055 0.0300000000000011 0.0300000000000011 0.0 896 -897 0.0350220203399658 0.0400000000000063 0.0400000000000063 0.0 897 -898 0.0576491355895996 0.0499999999999972 0.0499999999999972 0.0 898 -899 0.0413708686828613 0.0400000000000063 0.0400000000000063 0.0 899 -900 0.0334579944610596 0.039999999999992 0.039999999999992 0.0 900 -901 0.0331728458404541 0.0300000000000011 0.0300000000000011 0.0 901 -902 0.0366899967193604 0.0400000000000063 0.0400000000000063 0.0 902 -903 0.0341849327087402 0.0299999999999869 0.0299999999999869 0.0 903 -904 0.0330212116241455 0.0300000000000011 0.0300000000000011 0.0 904 -905 0.0330519676208496 0.0400000000000063 0.0400000000000063 0.0 905 -906 0.0578551292419434 0.0600000000000023 0.0600000000000023 0.0 906 -907 0.0339560508728027 0.0300000000000011 0.0300000000000011 0.0 907 -908 0.0368251800537109 0.039999999999992 0.039999999999992 0.0 908 -909 0.0336120128631592 0.0300000000000011 0.0300000000000011 0.0 909 -910 0.0353670120239258 0.0400000000000063 0.0400000000000063 0.0 910 -911 0.0335800647735596 0.0300000000000011 0.0300000000000011 0.0 911 -912 0.0334420204162598 0.0300000000000011 0.0300000000000011 0.0 912 -913 0.0334601402282715 0.039999999999992 0.039999999999992 0.0 913 -914 0.058056116104126 0.0499999999999972 0.0499999999999972 0.0 914 -915 0.0368549823760986 0.0400000000000063 0.0400000000000063 0.0 915 -916 0.0347049236297607 0.039999999999992 0.039999999999992 0.0 916 -917 0.0332660675048828 0.0300000000000011 0.0300000000000011 0.0 917 -918 0.03336501121521 0.0300000000000011 0.0300000000000011 0.0 918 -919 0.0346500873565674 0.0400000000000063 0.0400000000000063 0.0 919 -920 0.0330588817596436 0.0300000000000011 0.0300000000000011 0.0 920 -921 0.0336630344390869 0.0300000000000011 0.0300000000000011 0.0 921 -922 0.0604748725891113 0.0600000000000023 0.0600000000000023 0.0 922 -923 0.0347628593444824 0.039999999999992 0.039999999999992 0.0 923 -924 0.0331780910491943 0.0300000000000011 0.0300000000000011 0.0 924 -925 0.0331499576568604 0.0300000000000011 0.0300000000000011 0.0 925 -926 0.0402188301086426 0.0400000000000063 0.0400000000000063 0.0 926 -927 0.0330500602722168 0.039999999999992 0.039999999999992 0.0 927 -928 0.0330708026885986 0.0300000000000011 0.0300000000000011 0.0 928 -929 0.036876916885376 0.0400000000000063 0.0400000000000063 0.0 929 -930 0.0586659908294678 0.0599999999999881 0.0599999999999881 0.0 930 -931 0.0333189964294434 0.0300000000000011 0.0300000000000011 0.0 931 -932 0.0332140922546387 0.0300000000000011 0.0300000000000011 0.0 932 -933 0.0332601070404053 0.0400000000000063 0.0400000000000063 0.0 933 -934 0.033146858215332 0.0300000000000011 0.0300000000000011 0.0 934 -935 0.0361688137054443 0.039999999999992 0.039999999999992 0.0 935 -936 0.0331850051879883 0.0300000000000011 0.0300000000000011 0.0 936 -937 0.0338339805603027 0.0300000000000011 0.0300000000000011 0.0 937 -938 0.0579109191894531 0.0600000000000023 0.0600000000000023 0.0 938 -939 0.0335099697113037 0.0300000000000011 0.0300000000000011 0.0 939 -940 0.0332717895507812 0.039999999999992 0.039999999999992 0.0 940 -941 0.0332541465759277 0.0300000000000011 0.0300000000000011 0.0 941 -942 0.0368809700012207 0.0400000000000063 0.0400000000000063 0.0 942 -943 0.0335171222686768 0.0300000000000011 0.0300000000000011 0.0 943 -944 0.0335350036621094 0.0300000000000011 0.0300000000000011 0.0 944 -945 0.0578980445861816 0.0600000000000023 0.0600000000000023 0.0 945 -946 0.0351078510284424 0.039999999999992 0.039999999999992 0.0 946 -947 0.0334479808807373 0.0300000000000011 0.0300000000000011 0.0 947 -948 0.033311128616333 0.0300000000000011 0.0300000000000011 0.0 948 -949 0.0363750457763672 0.0400000000000063 0.0400000000000063 0.0 949 -950 0.033627986907959 0.0299999999999869 0.0299999999999869 0.0 950 -951 0.033160924911499 0.0400000000000063 0.0400000000000063 0.0 951 -952 0.033203125 0.0300000000000011 0.0300000000000011 0.0 952 -953 0.0647599697113037 0.0600000000000023 0.0600000000000023 0.0 953 -954 0.0328559875488281 0.039999999999992 0.039999999999992 0.0 954 -955 0.0357460975646973 0.0300000000000011 0.0300000000000011 0.0 955 -956 0.033236026763916 0.0400000000000063 0.0400000000000063 0.0 956 -957 0.0331499576568604 0.0300000000000011 0.0300000000000011 0.0 957 -958 0.0325798988342285 0.0300000000000011 0.0300000000000011 0.0 958 -959 0.0328090190887451 0.0300000000000011 0.0300000000000011 0.0 959 -960 0.033491849899292 0.039999999999992 0.039999999999992 0.0 960 -961 0.0579450130462646 0.0600000000000023 0.0600000000000023 0.0 961 -962 0.0369048118591309 0.0300000000000011 0.0300000000000011 0.0 962 -963 0.0337331295013428 0.039999999999992 0.039999999999992 0.0 963 -964 0.0333647727966309 0.0300000000000011 0.0300000000000011 0.0 964 -965 0.0332319736480713 0.0300000000000011 0.0300000000000011 0.0 965 -966 0.033174991607666 0.0400000000000063 0.0400000000000063 0.0 966 -967 0.0331299304962158 0.0300000000000011 0.0300000000000011 0.0 967 -968 0.0334961414337158 0.0300000000000011 0.0300000000000011 0.0 968 -969 0.0604250431060791 0.0600000000000023 0.0600000000000023 0.0 969 -970 0.0347049236297607 0.039999999999992 0.039999999999992 0.0 970 -971 0.0334169864654541 0.0300000000000011 0.0300000000000011 0.0 971 -972 0.0332670211791992 0.0400000000000063 0.0400000000000063 0.0 972 -973 0.0347368717193604 0.0300000000000011 0.0300000000000011 0.0 973 -974 0.0333490371704102 0.0299999999999869 0.0299999999999869 0.0 974 -975 0.033484935760498 0.0400000000000063 0.0400000000000063 0.0 975 -976 0.0361530780792236 0.0300000000000011 0.0300000000000011 0.0 976 -977 0.0591049194335938 0.0600000000000023 0.0600000000000023 0.0 977 -978 0.0333170890808105 0.039999999999992 0.039999999999992 0.0 978 -979 0.0332751274108887 0.0300000000000011 0.0300000000000011 0.0 979 -980 0.0404400825500488 0.0400000000000063 0.0400000000000063 0.0 980 -981 0.0332608222961426 0.0300000000000011 0.0300000000000011 0.0 981 -982 0.0361859798431396 0.039999999999992 0.039999999999992 0.0 982 -983 0.0338070392608643 0.0300000000000011 0.0300000000000011 0.0 983 -984 0.0339329242706299 0.0400000000000063 0.0400000000000063 0.0 984 -985 0.0576000213623047 0.0499999999999972 0.0499999999999972 0.0 985 -986 0.0332310199737549 0.0400000000000063 0.0400000000000063 0.0 986 -987 0.0331230163574219 0.0299999999999869 0.0299999999999869 0.0 987 -988 0.0332698822021484 0.0300000000000011 0.0300000000000011 0.0 988 -989 0.0362260341644287 0.0400000000000063 0.0400000000000063 0.0 989 -990 0.0335850715637207 0.0300000000000011 0.0300000000000011 0.0 990 -991 0.0335838794708252 0.039999999999992 0.039999999999992 0.0 991 -992 0.0581378936767578 0.0600000000000023 0.0600000000000023 0.0 992 -993 0.0338449478149414 0.0300000000000011 0.0300000000000011 0.0 993 -994 0.0334839820861816 0.0300000000000011 0.0300000000000011 0.0 994 -995 0.0354399681091309 0.0400000000000063 0.0400000000000063 0.0 995 -996 0.0348441600799561 0.0300000000000011 0.0300000000000011 0.0 996 -997 0.033607006072998 0.039999999999992 0.039999999999992 0.0 997 -998 0.0334219932556152 0.0300000000000011 0.0300000000000011 0.0 998 -999 0.0331289768218994 0.0300000000000011 0.0300000000000011 0.0 999 -1000 0.0591549873352051 0.0600000000000023 0.0600000000000023 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log deleted file mode 100644 index abfc0d4e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkPure.log +++ /dev/null @@ -1,82 +0,0 @@ -========================== 2009-04-01T16:48:20 CEST =========================== -Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux]. -Running 'ParserBenchmarkPure' for 1000 iterations/method (compare_time=real) -=============================================================================== - -This first run is only for warmup. -ParserBenchmarkPure#parser: - real total user system -sum 37.410897017 37.380000000 37.360000000 0.020000000 -min 0.032916069 0.030000000 0.030000000 0.000000000 -std- 0.029058517 0.027934111 0.027951551 -0.000426990 -mean 0.037410897 0.037380000 0.037360000 0.000020000 -std+ 0.045763277 0.046825889 0.046768449 0.000466990 -max 0.068524122 0.070000000 0.070000000 0.010000000 -std 0.008352380 0.009445889 0.009408449 0.000446990 -std% 22.326062222 25.269901841 25.183215569 2234.948544149 -harm 0.036161242 0.035525181 0.035515868 nan -geo 0.036699193 0.036372385 0.036358664 0.000000000 -q1 0.033462286 0.030000000 0.030000000 0.000000000 -med 0.033834100 0.040000000 0.040000000 0.000000000 -q3 0.036020756 0.040000000 0.040000000 0.000000000 - 1000 26.73018 0.037410897 - calls calls/sec secs/call - - 0.06674 -| - 0.06318 -|* - 0.05962 -|****** - 0.05606 -|* - 0.05250 -| - 0.04894 -| - 0.04538 -| - 0.04182 -|* - 0.03826 -|**** - 0.03470 -|************************************************** - -Outliers detected with box plot algo (median=0.03383, iqr=0.00256, factor=3.00): -high=35 very_high=121 - -Ljung-Box statistics: q=2505.23586 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -ParserBenchmarkPure#parser: - real total user system -sum 37.376162529 37.280000000 37.260000000 0.020000000 -min 0.032336950 0.030000000 0.030000000 0.000000000 -std- 0.028895529 0.027756750 0.027774096 -0.000426990 -mean 0.037376163 0.037280000 0.037260000 0.000020000 -std+ 0.045856796 0.046803250 0.046745904 0.000466990 -max 0.068592072 0.070000000 0.070000000 0.010000000 -std 0.008480634 0.009523250 0.009485904 0.000446990 -std% 22.689953522 25.545198741 25.458680636 2234.948544149 -harm 0.036080414 0.035400319 0.035391071 nan -geo 0.036638902 0.036256656 0.036242979 0.000000000 -q1 0.033310235 0.030000000 0.030000000 0.000000000 -med 0.033644676 0.030000000 0.030000000 0.000000000 -q3 0.036110342 0.040000000 0.040000000 0.000000000 - 1000 26.75502 0.037376163 - calls calls/sec secs/call - - 0.06678 -| - 0.06315 -|* - 0.05953 -|******* - 0.05590 -| - 0.05228 -| - 0.04865 -| - 0.04503 -| - 0.04140 -|** - 0.03778 -|******** - 0.03415 -|************************************************** - -Outliers detected with box plot algo (median=0.03364, iqr=0.00280, factor=3.00): -high=33 very_high=124 - -Ljung-Box statistics: q=3251.86614 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -========================== 2009-04-01T16:49:38 CEST =========================== - -Writing measurement data file '/data/scm/json/benchmarks/data/ParserBenchmarkPure#parser.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/ParserBenchmarkPure#parser-autocorrelation.dat'. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat deleted file mode 100644 index 17c5d6f4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.155070059967971 -3 -0.138640912344721 -4 -0.139479328635323 -5 -0.143780851624976 -6 -0.131974028031826 -7 -0.131846874465781 -8 -0.0297449586146407 -9 0.845922970552183 -10 -0.159296984935386 -11 -0.138285991843348 -12 -0.134537533789242 -13 -0.131577093324224 -14 -0.125691308156566 -15 -0.132970073437043 -16 0.0701610897537414 -17 0.726509328882366 -18 -0.155563464936531 -19 -0.130583532910968 -20 -0.130321215707134 -21 -0.128053370668094 -22 -0.131414104117502 -23 -0.143370315509163 -24 0.167753265713558 -25 0.62702138447293 -26 -0.141554127399372 -27 -0.115269798845456 -28 -0.136445627883801 -29 -0.132820637414474 -30 -0.135080622216643 -31 -0.144602952408704 -32 0.276623173612157 -33 0.525501850891615 -34 -0.139450017650941 -35 -0.134162769453426 -36 -0.140949499976629 -37 -0.132215037534107 -38 -0.128279804339387 -39 -0.136810773207112 -40 0.379134129717981 -41 0.416977891767592 -42 -0.140192442908231 -43 -0.13892710741734 -44 -0.137436044286789 -45 -0.12612058061194 -46 -0.123633038155193 -47 -0.137070098406579 -48 0.472544339120691 -49 0.301863391448336 -50 -0.137675443743332 -51 -0.132184661720946 -52 -0.121519101402595 -53 -0.115776688296262 -54 -0.131478499025051 -55 -0.116275192910739 -56 0.513473974254625 -57 0.227814467008427 -58 -0.129625218043982 -59 -0.125216745459882 -60 -0.125935112946914 -61 -0.130109252240931 -62 -0.135733419564075 -63 -0.0889814647212915 -64 0.559816239969457 -65 0.163620887268623 -66 -0.126594899689712 -67 -0.127716578736114 -68 -0.128558799740727 -69 -0.132714253074456 -70 -0.132981927789806 -71 -0.0463125531444366 -72 0.581465412089299 -73 0.0982819048234013 -74 -0.129982480706599 -75 -0.133771142860062 -76 -0.126274218030991 -77 -0.123223469867868 -78 -0.11895869982128 -79 0.0160445617942978 -80 0.549313085089554 -81 0.0523653189850826 -82 -0.129204586675343 -83 -0.127677297248879 -84 -0.11959366617596 -85 -0.118162084235907 -86 -0.129587964492176 -87 0.0651465727581341 -88 0.512663258282342 -89 0.0223897667771226 -90 -0.118248096115527 -91 -0.123885682842303 -92 -0.117535431833331 -93 -0.121345328959052 -94 -0.133999463136408 -95 0.135326455911309 -96 0.463805777555027 -97 0.00311864739783577 -98 -0.114421979094575 -99 -0.128164506124927 -100 -0.122080031865248 -101 -0.127022342388225 -102 -0.12151335276331 -103 0.208878191673693 -104 0.419309330326886 -105 -0.0174799014199824 -106 -0.12009985269644 -107 -0.131417368471035 -108 -0.121134843634553 -109 -0.120666756344282 -110 -0.105725377626208 -111 0.262489561386311 -112 0.354541905467325 -113 -0.0429415817022358 -114 -0.118506332455011 -115 -0.127753774809165 -116 -0.109476116043001 -117 -0.119418083275649 -118 -0.0854522404041955 -119 0.302906589860581 -120 0.286896207128895 -121 -0.0493387013179091 -122 -0.111479392930294 -123 -0.123008951924811 -124 -0.106573141028928 -125 -0.126135643791708 -126 -0.0577076665067928 -127 0.311292557510419 -128 0.249513559300441 -129 -0.0437015056466829 -130 -0.10140472809797 -131 -0.125545283680022 -132 -0.113851927275127 -133 -0.129070941594458 -134 -0.0206722811383723 -135 0.33013248984195 -136 0.20961947786441 -137 -0.0505286003858023 -138 -0.118483870649077 -139 -0.129232461148704 -140 -0.110922591820262 -141 -0.126965629548802 -142 0.0286192948484217 -143 0.337096243794888 -144 0.169248086740963 -145 -0.0654190423907559 -146 -0.120486323653649 -147 -0.127288129860007 -148 -0.103891665783828 -149 -0.124659309493563 -150 0.0654747872813297 -151 0.339088871793489 -152 0.117694381111953 -153 -0.069800715562458 -154 -0.113826839844647 -155 -0.112055163352168 -156 -0.0970154053292618 -157 -0.12192255176261 -158 0.0946677686276986 -159 0.319767630968006 -160 0.0962983917333902 -161 -0.0684068034695184 -162 -0.112118295167087 -163 -0.114032731963194 -164 -0.110895191829693 -165 -0.12490942207346 -166 0.150898199785889 -167 0.291628773924692 -168 0.0856114574594624 -169 -0.0734234204063937 -170 -0.114367902362174 -171 -0.118059154641348 -172 -0.112572722725924 -173 -0.103481698557819 -174 0.173284813389025 -175 0.278003056900596 -176 0.0650604673280916 -177 -0.0868193733027222 -178 -0.11924430409928 -179 -0.113850555498896 -180 -0.104056053166332 -181 -0.0706195733056155 -182 0.195014655464426 -183 0.251621304231625 -184 0.0441497783679571 -185 -0.0959128518254443 -186 -0.114114295397473 -187 -0.10361116463172 -188 -0.107664797628733 -189 -0.0474401968360638 -190 0.192034834911418 -191 0.224134275351347 -192 0.0395907319098148 -193 -0.0949220934593083 -194 -0.110602484889644 -195 -0.100717728255861 -196 -0.112049320791611 -197 -0.0238825067986291 -198 0.201018888376214 -199 0.200211719960315 -200 0.0376449870339866 -201 -0.0991903665462876 -202 -0.116672120770685 -203 -0.104917842447271 -204 -0.116982682663512 -205 0.0162721560678791 -206 0.204021816160558 -207 0.207342785121829 -208 0.00663694227997103 -209 -0.106521500277643 -210 -0.116317595851116 -211 -0.104116328257713 -212 -0.112167749776831 -213 0.0615103449414028 -214 0.199609635845337 -215 0.172676627738091 -216 -0.0173787071397098 -217 -0.104939889867195 -218 -0.112425821733991 -219 -0.0953637703798143 -220 -0.093052367494033 -221 0.0644616034737725 -222 0.21086820069092 -223 0.135486543334319 -224 -0.0210787666638188 -225 -0.0993320996511885 -226 -0.109562190043721 -227 -0.0908673948537397 -228 -0.0914456089142807 -229 0.077581460778825 -230 0.208551872164277 -231 0.116140101018818 -232 -0.0163102277997069 -233 -0.0916236078939407 -234 -0.111987175847954 -235 -0.0967383768271821 -236 -0.0826408025523878 -237 0.0966321189661173 -238 0.217509001187049 -239 0.0915108637148122 -240 -0.0253671941695331 -241 -0.104462116651977 -242 -0.11348746907754 -243 -0.0959006192794962 -244 -0.0612059863164585 -245 0.113695227895139 -246 0.208511810998661 -247 0.0766780695718476 -248 -0.0378625564901882 -249 -0.10618641671093 -250 -0.109982771242569 -251 -0.0926244918680679 -252 -0.0406078163763886 -253 0.124817056851144 -254 0.194848461762426 -255 0.053597534522723 -256 -0.0438252920201072 -257 -0.0998946597604676 -258 -0.0959760154259235 -259 -0.090197307047542 -260 -0.0257502198933741 -261 0.136762854179184 -262 0.168912763917697 -263 0.048323842970136 -264 -0.0436786423512219 -265 -0.100740525834715 -266 -0.0977845042725835 -267 -0.0927358458760765 -268 -0.0166810260413945 -269 0.146292226604344 -270 0.158004011117704 -271 0.0463090919867654 -272 -0.0508649026224276 -273 -0.100538901603337 -274 -0.0991902746655388 -275 -0.0968540899423071 -276 0.0148153955144431 -277 0.142136683921793 -278 0.150608238602075 -279 0.0366986042958235 -280 -0.0623139712087233 -281 -0.104975317080266 -282 -0.0956029621068854 -283 -0.0890770998720019 -284 0.0548354482192922 -285 0.133209397126082 -286 0.135583138300418 -287 0.0272435880371227 -288 -0.0714230928286135 -289 -0.0994192940032151 -290 -0.088773103919012 -291 -0.0841613176265042 -292 0.0592558849502553 -293 0.125376924612805 -294 0.129920277737479 -295 0.0195010407479747 -296 -0.0711393383891102 -297 -0.0966110162658782 -298 -0.0881783407707736 -299 -0.0770822025982766 -300 0.066971190635949 -301 0.132833571859132 -302 0.106070818363025 -303 0.0264050368313431 -304 -0.0786120187871163 -305 -0.099744480101871 -306 -0.0903116034438872 -307 -0.0727258814461179 -308 0.0805880901984141 -309 0.152764049007061 -310 0.0897693593924932 -311 0.0244183980184888 -312 -0.0913585727715549 -313 -0.101610527844229 -314 -0.0890784444186723 -315 -0.0580505722105439 -316 0.10438372554223 -317 0.13749147221931 -318 0.0759708703685098 -319 0.0047310993987612 -320 -0.0918433949431894 -321 -0.0973283709859868 -322 -0.0830381658731675 -323 -0.0375501533905209 -324 0.104260628790112 -325 0.136767805598137 -326 0.0649623096294137 -327 -0.0111381353615883 -328 -0.0902174271151667 -329 -0.0900084947503609 -330 -0.0845603027974476 -331 -0.0222484905680352 -332 0.10044110265699 -333 0.137209031622297 -334 0.0512317724372533 -335 -0.00469813974344492 -336 -0.0852660869649502 -337 -0.0936856764672113 -338 -0.0810781749410849 -339 -0.0111001728500522 -340 0.103897631604526 -341 0.131709630700509 -342 0.0454986930271181 -343 -0.0154461854075281 -344 -0.0950428147360073 -345 -0.0917481808403137 -346 -0.0819073492712917 -347 0.0124487690676487 -348 0.108988172807393 -349 0.12289144923052 -350 0.0405329244459299 -351 -0.0278261263679556 -352 -0.0969672128436255 -353 -0.0868716693424195 -354 -0.0819407369083838 -355 0.035944491369377 -356 0.107744673984401 -357 0.112575623631055 -358 0.0263346758872926 -359 -0.0328420504056899 -360 -0.0908205706813633 -361 -0.0750870093565662 -362 -0.0805597459059112 -363 0.0581570376747647 -364 0.0865463018735628 -365 0.116540878273595 -366 0.0199948600453009 -367 -0.03533657508366 -368 -0.0918593012174403 -369 -0.0794617415964357 -370 -0.0787014627401186 -371 0.0674476303755033 -372 0.087942973565642 -373 0.104930936427726 -374 0.0273053506001638 -375 -0.0464030903226921 -376 -0.0892541387964512 -377 -0.0826842259404731 -378 -0.071374986057042 -379 0.0807180550904197 -380 0.0929177969009142 -381 0.0862437690352589 -382 0.0286028161793366 -383 -0.0593261076213299 -384 -0.0910657756760768 -385 -0.0789683507405574 -386 -0.0550314183063351 -387 0.100805664939276 -388 0.0897320960012182 -389 0.067010863731299 -390 0.0261048090556462 -391 -0.0659316696174206 -392 -0.086786864764739 -393 -0.0733845242014095 -394 -0.0405465879929758 -395 0.0859517679001778 -396 0.0936250494518407 -397 0.0524562962824195 -398 0.0270919515769923 -399 -0.0676718513969418 -400 -0.0824139549961516 -401 -0.0758274382046422 -402 -0.021973546868283 -403 0.075410664358751 -404 0.104172119247351 -405 0.0343795991613305 -406 0.0358573471696254 -407 -0.0790257754948948 -408 -0.0826103755113398 -409 -0.0802175095763564 -410 -0.00408772816730303 -411 0.0797817450643218 -412 0.10269754375399 -413 0.0435425040893042 -414 0.0151375915059022 -415 -0.082224988149043 -416 -0.0825565105203654 -417 -0.0696184362192416 -418 0.00170781584040336 -419 0.0936874402227218 -420 0.0877595224369305 -421 0.0362572112929432 -422 -0.000752383773564971 -423 -0.0819270792159826 -424 -0.0773158381537405 -425 -0.0651464418900243 -426 0.0233879760162931 -427 0.0833911120244448 -428 0.0867605850712271 -429 0.0258451549993298 -430 -0.00489040153892436 -431 -0.0813233842666857 -432 -0.0691569813607638 -433 -0.0684545819114933 -434 0.0396563587473597 -435 0.0716165433337824 -436 0.0861256506553954 -437 0.0246435046549525 -438 -0.00567840565516219 -439 -0.0766446108871898 -440 -0.0734501086613091 -441 -0.0625863247444175 -442 0.0405008658019374 -443 0.0751250312042876 -444 0.0937777476669092 -445 0.0157135360029692 -446 -0.0185119034061188 -447 -0.0834731849818629 -448 -0.0721596446426834 -449 -0.0539848776994025 -450 0.0482803239352817 -451 0.0865159532050759 -452 0.0758518110612569 -453 0.0183167125626064 -454 -0.0302067075389182 -455 -0.0836849146728332 -456 -0.0680915900681338 -457 -0.0453151677467697 -458 0.0635811903828984 -459 0.0735228836096314 -460 0.0668774855582583 -461 0.0155517569389754 -462 -0.0361902584803522 -463 -0.0772526293731969 -464 -0.0599993945121568 -465 -0.0350025604255705 -466 0.0675409442225932 -467 0.0626588958411958 -468 0.0628618478913283 -469 0.0182100018474144 -470 -0.0393572049932932 -471 -0.0769465863807705 -472 -0.0669019696984521 -473 -0.0307690547029792 -474 0.0787650857298563 -475 0.0555937053005102 -476 0.0591286536064479 -477 0.0236864710611653 -478 -0.0510348446259402 -479 -0.0750230625326582 -480 -0.0692429698123807 -481 -0.0136046303961235 -482 0.074650527480705 -483 0.0576038372995368 -484 0.0514169146679383 -485 0.0235780875676953 -486 -0.0619450461800331 -487 -0.0775574009249976 -488 -0.0561458830522187 -489 -0.00509801117317696 -490 0.0804313785186439 -491 0.0577719157969876 -492 0.03898688881339 -493 0.0241595263048843 -494 -0.0685591657894399 -495 -0.0723076795891697 -496 -0.0523226231903489 -497 0.00373957683716917 -498 0.0717069979485176 -499 0.0550717482683905 -500 0.0403995445989468 -501 0.0113079953085825 -502 -0.0649276537000009 -503 -0.06649843954063 -504 -0.0560505708705572 -505 0.0137761579457734 -506 0.0702863631617265 -507 0.0541404684830862 -508 0.0443433883094673 -509 -0.00133780696150024 -510 -0.0665134068108655 -511 -0.0657601321121601 -512 -0.0607034011107588 -513 0.0213546383342833 -514 0.0775077767181889 -515 0.063458353376667 -516 0.0389609528439854 -517 -0.0108770067728056 -518 -0.0688616436130423 -519 -0.065807838377633 -520 -0.0591899626361279 -521 0.0477995260084885 -522 0.069819996106301 -523 0.0493499046172744 -524 0.0332730594271413 -525 -0.0200687475895302 -526 -0.0673172583961927 -527 -0.0608118592717286 -528 -0.046481250749937 -529 0.0514180414158432 -530 0.0671097463271896 -531 0.0400867520372663 -532 0.0333984982834754 -533 -0.0264838317178022 -534 -0.0659983240048536 -535 -0.0542885590490045 -536 -0.0401453467006326 -537 0.0485625723714385 -538 0.0635239092110429 -539 0.0345979294218286 -540 0.0399929330334083 -541 -0.028147715594677 -542 -0.0619139995393741 -543 -0.0586913999576994 -544 -0.0334649755872845 -545 0.0516737635834675 -546 0.0645253644882226 -547 0.0345307867743962 -548 0.0400603616259159 -549 -0.0423531962375596 -550 -0.0672300807914405 -551 -0.0587843856721668 -552 -0.0232646807886831 -553 0.058345982518284 -554 0.0665917961516256 -555 0.0274860012958233 -556 0.0415598244265968 -557 -0.0545146822234879 -558 -0.0677685109591305 -559 -0.0552725887508413 -560 -0.0125012238487659 -561 0.0625075581718202 -562 0.066971444471093 -563 0.0129232540938186 -564 0.0392980506706601 -565 -0.05908734296345 -566 -0.0607304242571567 -567 -0.0493112113842046 -568 0.00071062117125135 -569 0.0653734421725974 -570 0.0469205167937502 -571 0.0252022285127285 -572 0.0269428623042389 -573 -0.0554040258813037 -574 -0.0594329262955446 -575 -0.0472055457536386 -576 -0.00273760356981996 -577 0.0642743964669037 -578 0.0419312704866381 -579 0.0399122296513867 -580 0.0132186725236814 -581 -0.0547466706460982 -582 -0.0579756221767372 -583 -0.0511476715833451 -584 0.00601423910448657 -585 0.0689373246423459 -586 0.0353940033868963 -587 0.0425778157862413 -588 0.00424129603039375 -589 -0.0586697203651189 -590 -0.059002595522944 -591 -0.0470191336291943 -592 0.0244211578887408 -593 0.0714176288385068 -594 0.0293208317804955 -595 0.0369996210742842 -596 -0.00457553552424864 -597 -0.0559531047561718 -598 -0.0523918096467366 -599 -0.0446664312862491 -600 0.0316320734850762 -601 0.0644602080811167 -602 0.0199863627247641 -603 0.0369746309809726 -604 -0.00948602618598588 -605 -0.0504144894458729 -606 -0.0498443845352435 -607 -0.0444638507903543 -608 0.0391189013974007 -609 0.0628424781970596 -610 0.0112347649830505 -611 0.041452654212153 -612 -0.0137347497952992 -613 -0.0506892746398375 -614 -0.0511072669077967 -615 -0.0477234466444133 -616 0.048705448350975 -617 0.0667627851388053 -618 0.0115120265386804 -619 0.0461383553267045 -620 -0.0255620287525987 -621 -0.0530260247588348 -622 -0.0518381410417808 -623 -0.034700796376516 -624 0.0438063518562166 -625 0.0798836058195734 -626 -0.00243894245318495 -627 0.0406243460796687 -628 -0.0332199890358811 -629 -0.0523350080049007 -630 -0.0477070167478482 -631 -0.0215305402264588 -632 0.0472394359550523 -633 0.0694737083559497 -634 -0.00372172457388709 -635 0.0391809172600764 -636 -0.0382719971378076 -637 -0.0501961995371232 -638 -0.042738214015656 -639 -0.0140839477377811 -640 0.0442885931768186 -641 0.0581346694204897 -642 -0.000477976111666972 -643 0.044566527743489 -644 -0.0396856402477227 -645 -0.0466626145007252 -646 -0.0480864305333951 -647 -0.00726442405889962 -648 0.0459497867910762 -649 0.0529082222445075 -650 0.0147432426130685 -651 0.0267433571795441 -652 -0.0446692520126606 -653 -0.0497203066081803 -654 -0.0480919421757669 -655 0.00345954210366673 -656 0.0509913399433936 -657 0.0467433070314585 -658 0.0252001648134732 -659 0.0106946846977517 -660 -0.0484551606819746 -661 -0.0500758070505588 -662 -0.0440163401232168 -663 0.0148218474037118 -664 0.0526365008291643 -665 0.0397902946591361 -666 0.0206689888910779 -667 0.00207265111858896 -668 -0.0440452489670014 -669 -0.0447792337914997 -670 -0.0286381554427784 -671 0.00640869437792482 -672 0.057153163903739 -673 0.0304890998129141 -674 0.0230136624918959 -675 -0.00281506118608654 -676 -0.0387242678971035 -677 -0.044929991903093 -678 -0.0345193810230013 -679 0.00492460337689268 -680 0.0679821172192718 -681 0.0219950472241659 -682 0.0289438385002853 -683 -0.00781136170677615 -684 -0.0388612390832975 -685 -0.0438680272774733 -686 -0.0376131497506628 -687 0.0139348600467974 -688 0.0615101213028946 -689 0.0249115734544766 -690 0.0331598636184604 -691 -0.0195415991964588 -692 -0.0396395679788538 -693 -0.0456649577394422 -694 -0.0344136244069955 -695 0.031200395934606 -696 0.0562012519733673 -697 0.0260663012747182 -698 0.0295359686001106 -699 -0.0291311572903775 -700 -0.0371203313810216 -701 -0.0424418146790537 -702 -0.0303746199454463 -703 0.0388492858751788 -704 0.0424481679100295 -705 0.0263584605497916 -706 0.0288712604390293 -707 -0.0341554547083513 -708 -0.0333021072203847 -709 -0.0383392296141879 -710 -0.030923211248435 -711 0.0471145773235206 -712 0.032067317539082 -713 0.0263399585846731 -714 0.0323937671311792 -715 -0.0392772990043492 -716 -0.0317758252581109 -717 -0.0407689976562314 -718 -0.0327532575849971 -719 0.0558983521943971 -720 0.026320879417627 -721 0.0457775828616138 -722 0.0162704705253485 -723 -0.0410862090233348 -724 -0.0334511325087015 -725 -0.0413337594074423 -726 -0.0301113850535044 -727 0.0700417742596319 -728 0.0210871230961877 -729 0.0496617422305004 -730 -0.00408251250355076 -731 -0.0406821339716385 -732 -0.0329210563908783 -733 -0.0378798823957753 -734 -0.0166612213666539 -735 0.0622559233401728 -736 0.0220631815362089 -737 0.0480937159816023 -738 -0.0123428856122574 -739 -0.0375402198111287 -740 -0.0309453130567288 -741 -0.0353256252179894 -742 -0.00536945125430805 -743 0.0496444169496324 -744 0.0204929366248046 -745 0.0499533569480695 -746 -0.0174935751544407 -747 -0.0286134919496942 -748 -0.0305151115655182 -749 -0.0370057423961568 -750 0.00182606608143132 -751 0.0417928304144692 -752 0.0232491015772242 -753 0.0556033683720853 -754 -0.0281117547926764 -755 -0.030035318580472 -756 -0.0330573966633533 -757 -0.0365260598388687 -758 0.0111750942979797 -759 0.0374827782514529 -760 0.0257453279628935 -761 0.0580299290244595 -762 -0.0358087395388202 -763 -0.0338231237069173 -764 -0.0328610625099181 -765 -0.0336222121488749 -766 0.0234186100148553 -767 0.0293361050839678 -768 0.0383060243360171 -769 0.0358879458606336 -770 -0.0363117922484678 -771 -0.0310100414844719 -772 -0.0298340231919974 -773 -0.0258481757762449 -774 0.033493341046757 -775 0.0172146853910682 -776 0.0455221955873717 -777 0.0204498758334694 -778 -0.033692934640153 -779 -0.0254246875075756 -780 -0.0321408035488926 -781 -0.0179574084831518 -782 0.0214789164114721 -783 0.019638114859952 -784 0.0455930828635699 -785 0.0178984964416421 -786 -0.0300055577311117 -787 -0.0240917794268532 -788 -0.0321597467853985 -789 -0.0210401731167207 -790 0.0230111556897733 -791 0.0217566052979974 -792 0.0489917866644012 -793 0.0104440982676834 -794 -0.0301428802473305 -795 -0.0258951028342734 -796 -0.03187192392573 -797 -0.0176269050708972 -798 0.027393570534183 -799 0.0263875715311133 -800 0.0486779658212448 -801 -0.00102291484615847 -802 -0.0300556523736458 -803 -0.023857819156972 -804 -0.0280605128257784 -805 -0.0146115387847382 -806 0.0244907923259942 -807 0.0247824841072157 -808 0.0494074681728141 -809 -0.0095960873131345 -810 -0.0267959528999005 -811 -0.0203312406902549 -812 -0.0260311947802059 -813 -0.0131484879600813 -814 0.0230120193265332 -815 0.0228091639758259 -816 0.051666749222434 -817 -0.0152576501369182 -818 -0.0250358027329496 -819 -0.0190314982739485 -820 -0.0266605188325892 -821 -0.0144373958898868 -822 0.0237380994329812 -823 0.0260374801079161 -824 0.0586957834829624 -825 -0.022457849542461 -826 -0.0262980585565696 -827 -0.0200584452117297 -828 -0.0266876132871316 -829 -0.0129290645560979 -830 0.0289095571745369 -831 0.0354539766084729 -832 0.0392777761914384 -833 -0.0238771076358964 -834 -0.0245018601036372 -835 -0.0205517186652316 -836 -0.0234327204627339 -837 -0.00933955244847433 -838 0.0296367828905565 -839 0.0459917434926111 -840 0.0186744768510845 -841 -0.0234505177518883 -842 -0.0215210406113312 -843 -0.01812563049523 -844 -0.0212885529434847 -845 -0.0088234522037928 -846 0.0280281842675072 -847 0.045730091253579 -848 0.0136208433079523 -849 -0.0205058386168346 -850 -0.0163481209061992 -851 -0.017230164457982 -852 -0.0230906563738739 -853 -0.00937085079532756 -854 0.0286089438226922 -855 0.0501679772526387 -856 0.00511934527865221 -857 -0.0188740591732872 -858 -0.017123441437589 -859 -0.0185029603009925 -860 -0.0202624384779385 -861 -0.0103662518808214 -862 0.0316765684721357 -863 0.0535962784902621 -864 -0.00257262435536896 -865 -0.0176721411023214 -866 -0.0194221796537958 -867 -0.0180419513954025 -868 -0.0173325086944974 -869 -0.00890051108382059 -870 0.0333845873727604 -871 0.0544120911411167 -872 -0.0112929673408612 -873 -0.0180526419713337 -874 -0.0167143497616369 -875 -0.0157948604767141 -876 -0.0130148291547908 -877 -0.0066614174930643 -878 0.0306666725820053 -879 0.0540685898200517 -880 -0.0179887040186856 -881 -0.0155749350538922 -882 -0.015542452853135 -883 -0.0149949065113926 -884 -0.0134739305361601 -885 -0.0082822064674981 -886 0.0415180058769115 -887 0.037756025074253 -888 -0.0148899027592997 -889 -0.013090094291838 -890 -0.0153014397425967 -891 -0.0135012972355123 -892 -0.015585448733386 -893 -0.00788737374502331 -894 0.0535415797928148 -895 0.0217926147381109 -896 -0.01363175489377 -897 -0.012354773771845 -898 -0.0155285058724365 -899 -0.0135036893080631 -900 -0.0125236766180776 -901 -0.00637080628552419 -902 0.0605226042557018 -903 0.0112303280281208 -904 -0.0133912061642023 -905 -0.0124502459337457 -906 -0.0142998634027549 -907 -0.0099981269727546 -908 -0.0122633402331702 -909 -0.00567413706716593 -910 0.0595172409685727 -911 0.00326019370638518 -912 -0.0128841193059995 -913 -0.0102224824574885 -914 -0.0116469346046309 -915 -0.00776357295252222 -916 -0.0118848925539363 -917 -0.00433896685705348 -918 0.0567076341120711 -919 -0.00300835870741313 -920 -0.0107647074857665 -921 -0.00845164093060122 -922 -0.0106818140369162 -923 -0.00761048402311565 -924 -0.0114674108324614 -925 -0.00417421313051504 -926 0.0598773670187433 -927 -0.00747931723570069 -928 -0.00927920131574313 -929 -0.00986810999500912 -930 -0.0104075730217127 -931 -0.00695169167094114 -932 -0.0109784274186893 -933 0.00811872232461237 -934 0.0430158981401019 -935 -0.00722859498851006 -936 -0.00990312674945696 -937 -0.00920124918803136 -938 -0.00908355760957161 -939 -0.00496962170124263 -940 -0.00878291146198605 -941 0.0194043242975934 -942 0.0256780783722546 -943 -0.00897052689874001 -944 -0.00954900138754423 -945 -0.00713164082441335 -946 -0.00673138670048183 -947 -0.00311543034312673 -948 -0.00793377494765913 -949 0.0199694046973212 -950 0.0180051634303271 -951 -0.00731841589233604 -952 -0.0061524475893558 -953 -0.00552246177877621 -954 -0.00405347414382562 -955 -0.00502519204794434 -956 -0.00735520719380658 -957 0.0201391483118552 -958 0.0115351551478785 -959 -0.00595396340022971 -960 -0.0044658313778136 -961 -0.00466635333434365 -962 -0.00505971330517482 -963 -0.00426347088471071 -964 -0.00630201264403959 -965 0.0226924063931286 -966 0.00532856864375404 -967 -0.00456693836529996 -968 -0.00500848518452319 -969 -0.00521286355162228 -970 -0.00466691800162192 -971 -0.00261192567994811 -972 -0.00365801738266432 -973 0.0244751515715762 -974 -0.00293671804465107 -975 -0.0036023990997325 -976 -0.00448873920500162 -977 -0.00365131282800052 -978 -0.00180880871887979 -979 -0.00132104428035144 -980 0.00742840409816276 -981 0.00626148410583357 -982 -0.00316720508921753 -983 -0.00304702341715472 -984 -0.0023682711547723 -985 -0.00118323799369014 -986 -3.66599346965767e-05 -987 -0.000324399710172427 -988 0.00733954118289635 -989 -0.00225809776707784 -990 -0.00133635779017759 -991 -0.00134850512655973 -992 -0.000434310902574387 -993 -0.000233992853297238 -994 0.000360461316321191 -995 -0.000531725699132137 -996 -0.000471000549829534 -997 0.000486792668870103 -998 0.000364177523187972 -999 0.000256019411210032 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat deleted file mode 100644 index e51dc44f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails#parser.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.0337560176849365 0.0300000000000011 0.0300000000000011 0.0 1 -2 0.0330429077148438 0.029999999999994 0.029999999999994 0.0 2 -3 0.0369691848754883 0.0400000000000063 0.0400000000000063 0.0 3 -4 0.0330410003662109 0.029999999999994 0.029999999999994 0.0 4 -5 0.0346219539642334 0.0400000000000063 0.0400000000000063 0.0 5 -6 0.0324759483337402 0.029999999999994 0.029999999999994 0.0 6 -7 0.0320150852203369 0.0300000000000011 0.0300000000000011 0.0 7 -8 0.0320718288421631 0.0300000000000011 0.0300000000000011 0.0 8 -9 0.0765988826751709 0.0799999999999983 0.0799999999999983 0.0 9 -10 0.0331180095672607 0.0300000000000011 0.0300000000000011 0.0 10 -11 0.0346410274505615 0.0399999999999991 0.0399999999999991 0.0 11 -12 0.0330672264099121 0.0300000000000011 0.0300000000000011 0.0 12 -13 0.0326869487762451 0.0300000000000011 0.0300000000000011 0.0 13 -14 0.0323951244354248 0.0399999999999991 0.0399999999999991 0.0 14 -15 0.0317728519439697 0.0300000000000011 0.0300000000000011 0.0 15 -16 0.0336828231811523 0.0300000000000011 0.0300000000000011 0.0 16 -17 0.0816280841827393 0.0799999999999983 0.0799999999999983 0.0 17 -18 0.0336179733276367 0.0399999999999991 0.0399999999999991 0.0 18 -19 0.0329349040985107 0.0300000000000011 0.0300000000000011 0.0 19 -20 0.0328211784362793 0.0300000000000011 0.0300000000000011 0.0 20 -21 0.0326688289642334 0.0300000000000011 0.0300000000000011 0.0 21 -22 0.0329129695892334 0.0399999999999991 0.0399999999999991 0.0 22 -23 0.0351161956787109 0.0300000000000011 0.0300000000000011 0.0 23 -24 0.073289155960083 0.0799999999999983 0.0799999999999983 0.0 24 -25 0.0333049297332764 0.0300000000000011 0.0300000000000011 0.0 25 -26 0.0327980518341064 0.029999999999994 0.029999999999994 0.0 26 -27 0.0333559513092041 0.0400000000000063 0.0400000000000063 0.0 27 -28 0.0331299304962158 0.029999999999994 0.029999999999994 0.0 28 -29 0.0361030101776123 0.0300000000000011 0.0300000000000011 0.0 29 -30 0.0326149463653564 0.0399999999999991 0.0399999999999991 0.0 30 -31 0.0354421138763428 0.0300000000000011 0.0300000000000011 0.0 31 -32 0.0737769603729248 0.0799999999999983 0.0799999999999983 0.0 32 -33 0.0334198474884033 0.0300000000000011 0.0300000000000011 0.0 33 -34 0.0328729152679443 0.0300000000000011 0.0300000000000011 0.0 34 -35 0.0363237857818604 0.0399999999999991 0.0399999999999991 0.0 35 -36 0.0331850051879883 0.0300000000000011 0.0300000000000011 0.0 36 -37 0.033970832824707 0.0399999999999991 0.0399999999999991 0.0 37 -38 0.0325729846954346 0.0300000000000011 0.0300000000000011 0.0 38 -39 0.0321781635284424 0.0300000000000011 0.0300000000000011 0.0 39 -40 0.0730009078979492 0.0700000000000003 0.0700000000000003 0.0 40 -41 0.0354671478271484 0.0399999999999991 0.0399999999999991 0.0 41 -42 0.0329980850219727 0.0300000000000011 0.0300000000000011 0.0 42 -43 0.0432839393615723 0.0499999999999972 0.0499999999999972 0.0 43 -44 0.0330131053924561 0.0300000000000011 0.0300000000000011 0.0 44 -45 0.032541036605835 0.0300000000000011 0.0300000000000011 0.0 45 -46 0.0323638916015625 0.0300000000000011 0.0300000000000011 0.0 46 -47 0.0322492122650146 0.0399999999999991 0.0399999999999991 0.0 47 -48 0.0752780437469482 0.0700000000000003 0.0700000000000003 0.0 48 -49 0.0334651470184326 0.0300000000000011 0.0300000000000011 0.0 49 -50 0.0330009460449219 0.0399999999999991 0.0399999999999991 0.0 50 -51 0.0331478118896484 0.0300000000000011 0.0300000000000011 0.0 51 -52 0.0328009128570557 0.029999999999994 0.029999999999994 0.0 52 -53 0.0326621532440186 0.0400000000000063 0.0400000000000063 0.0 53 -54 0.0325331687927246 0.029999999999994 0.029999999999994 0.0 54 -55 0.0355179309844971 0.0300000000000011 0.0300000000000011 0.0 55 -56 0.0758390426635742 0.0800000000000054 0.0800000000000054 0.0 56 -57 0.0330648422241211 0.029999999999994 0.029999999999994 0.0 57 -58 0.0333669185638428 0.0399999999999991 0.0399999999999991 0.0 58 -59 0.0331768989562988 0.0300000000000011 0.0300000000000011 0.0 59 -60 0.0326540470123291 0.0300000000000011 0.0300000000000011 0.0 60 -61 0.036034107208252 0.0399999999999991 0.0399999999999991 0.0 61 -62 0.0326058864593506 0.0300000000000011 0.0300000000000011 0.0 62 -63 0.032081127166748 0.0300000000000011 0.0300000000000011 0.0 63 -64 0.0732240676879883 0.0799999999999983 0.0799999999999983 0.0 64 -65 0.0332009792327881 0.0300000000000011 0.0300000000000011 0.0 65 -66 0.0333409309387207 0.0300000000000011 0.0300000000000011 0.0 66 -67 0.0352249145507812 0.0399999999999991 0.0399999999999991 0.0 67 -68 0.0328779220581055 0.0300000000000011 0.0300000000000011 0.0 68 -69 0.0408899784088135 0.0399999999999991 0.0399999999999991 0.0 69 -70 0.0330538749694824 0.0399999999999991 0.0399999999999991 0.0 70 -71 0.0315990447998047 0.0300000000000011 0.0300000000000011 0.0 71 -72 0.0723180770874023 0.0700000000000003 0.0700000000000003 0.0 72 -73 0.0360608100891113 0.0399999999999991 0.0399999999999991 0.0 73 -74 0.0332560539245605 0.0300000000000011 0.0300000000000011 0.0 74 -75 0.0337710380554199 0.0300000000000011 0.0300000000000011 0.0 75 -76 0.0330729484558105 0.0399999999999991 0.0399999999999991 0.0 76 -77 0.0325820446014404 0.0300000000000011 0.0300000000000011 0.0 77 -78 0.0323619842529297 0.029999999999994 0.029999999999994 0.0 78 -79 0.0319099426269531 0.0300000000000011 0.0300000000000011 0.0 79 -80 0.0756161212921143 0.0800000000000054 0.0800000000000054 0.0 80 -81 0.0331521034240723 0.029999999999994 0.029999999999994 0.0 81 -82 0.0353209972381592 0.0400000000000063 0.0400000000000063 0.0 82 -83 0.0330510139465332 0.029999999999994 0.029999999999994 0.0 83 -84 0.03314208984375 0.0300000000000011 0.0300000000000011 0.0 84 -85 0.03261399269104 0.0300000000000011 0.0300000000000011 0.0 85 -86 0.0322940349578857 0.0399999999999991 0.0399999999999991 0.0 86 -87 0.034559965133667 0.0300000000000011 0.0300000000000011 0.0 87 -88 0.0729730129241943 0.0700000000000003 0.0700000000000003 0.0 88 -89 0.033174991607666 0.0399999999999991 0.0399999999999991 0.0 89 -90 0.0331950187683105 0.0300000000000011 0.0300000000000011 0.0 90 -91 0.032789945602417 0.0300000000000011 0.0300000000000011 0.0 91 -92 0.032573938369751 0.0399999999999991 0.0399999999999991 0.0 92 -93 0.0352959632873535 0.0300000000000011 0.0300000000000011 0.0 93 -94 0.0322601795196533 0.0300000000000011 0.0300000000000011 0.0 94 -95 0.0399200916290283 0.0399999999999991 0.0399999999999991 0.0 95 -96 0.0733668804168701 0.0799999999999983 0.0799999999999983 0.0 96 -97 0.0330679416656494 0.0300000000000011 0.0300000000000011 0.0 97 -98 0.0331020355224609 0.0300000000000011 0.0300000000000011 0.0 98 -99 0.0338099002838135 0.0399999999999991 0.0399999999999991 0.0 99 -100 0.0351119041442871 0.0300000000000011 0.0300000000000011 0.0 100 -101 0.0325391292572021 0.0399999999999991 0.0399999999999991 0.0 101 -102 0.0326120853424072 0.0300000000000011 0.0300000000000011 0.0 102 -103 0.0314269065856934 0.029999999999994 0.029999999999994 0.0 103 -104 0.0736079216003418 0.0700000000000003 0.0700000000000003 0.0 104 -105 0.0331168174743652 0.0399999999999991 0.0399999999999991 0.0 105 -106 0.0369949340820312 0.0300000000000011 0.0300000000000011 0.0 106 -107 0.033034086227417 0.0399999999999991 0.0399999999999991 0.0 107 -108 0.0347108840942383 0.0300000000000011 0.0300000000000011 0.0 108 -109 0.0326550006866455 0.0300000000000011 0.0300000000000011 0.0 109 -110 0.032649040222168 0.0399999999999991 0.0399999999999991 0.0 110 -111 0.0317308902740479 0.0300000000000011 0.0300000000000011 0.0 111 -112 0.075963020324707 0.0700000000000003 0.0700000000000003 0.0 112 -113 0.0332450866699219 0.0399999999999991 0.0399999999999991 0.0 113 -114 0.0340969562530518 0.0300000000000011 0.0300000000000011 0.0 114 -115 0.0331099033355713 0.0300000000000011 0.0300000000000011 0.0 115 -116 0.0326979160308838 0.0399999999999991 0.0399999999999991 0.0 116 -117 0.0322890281677246 0.0300000000000011 0.0300000000000011 0.0 117 -118 0.0321509838104248 0.0300000000000011 0.0300000000000011 0.0 118 -119 0.0315690040588379 0.029999999999994 0.029999999999994 0.0 119 -120 0.0853371620178223 0.0900000000000034 0.0900000000000034 0.0 120 -121 0.0338900089263916 0.0300000000000011 0.0300000000000011 0.0 121 -122 0.0330648422241211 0.0399999999999991 0.0399999999999991 0.0 122 -123 0.0330510139465332 0.0300000000000011 0.0300000000000011 0.0 123 -124 0.0327119827270508 0.0300000000000011 0.0300000000000011 0.0 124 -125 0.0324461460113525 0.029999999999994 0.029999999999994 0.0 125 -126 0.036160945892334 0.0400000000000063 0.0400000000000063 0.0 126 -127 0.0314981937408447 0.029999999999994 0.029999999999994 0.0 127 -128 0.073836088180542 0.0800000000000054 0.0800000000000054 0.0 128 -129 0.0328719615936279 0.029999999999994 0.029999999999994 0.0 129 -130 0.0332820415496826 0.0300000000000011 0.0300000000000011 0.0 130 -131 0.0329020023345947 0.0300000000000011 0.0300000000000011 0.0 131 -132 0.0362491607666016 0.0399999999999991 0.0399999999999991 0.0 132 -133 0.0325329303741455 0.0300000000000011 0.0300000000000011 0.0 133 -134 0.0340819358825684 0.0399999999999991 0.0399999999999991 0.0 134 -135 0.0319511890411377 0.0300000000000011 0.0300000000000011 0.0 135 -136 0.0739138126373291 0.0700000000000003 0.0700000000000003 0.0 136 -137 0.0330600738525391 0.0300000000000011 0.0300000000000011 0.0 137 -138 0.0359530448913574 0.0399999999999991 0.0399999999999991 0.0 138 -139 0.0330100059509277 0.0300000000000011 0.0300000000000011 0.0 139 -140 0.0330448150634766 0.0399999999999991 0.0399999999999991 0.0 140 -141 0.0330119132995605 0.0300000000000011 0.0300000000000011 0.0 141 -142 0.0321979522705078 0.0300000000000011 0.0300000000000011 0.0 142 -143 0.0314090251922607 0.029999999999994 0.029999999999994 0.0 143 -144 0.0762948989868164 0.0800000000000054 0.0800000000000054 0.0 144 -145 0.0330369472503662 0.0300000000000011 0.0300000000000011 0.0 145 -146 0.0413818359375 0.0399999999999991 0.0399999999999991 0.0 146 -147 0.0336639881134033 0.0399999999999991 0.0399999999999991 0.0 147 -148 0.032634973526001 0.0300000000000011 0.0300000000000011 0.0 148 -149 0.0324230194091797 0.029999999999994 0.029999999999994 0.0 149 -150 0.0322530269622803 0.0400000000000063 0.0400000000000063 0.0 150 -151 0.0314328670501709 0.029999999999994 0.029999999999994 0.0 151 -152 0.0764839649200439 0.0700000000000003 0.0700000000000003 0.0 152 -153 0.0351881980895996 0.0400000000000063 0.0400000000000063 0.0 153 -154 0.0330648422241211 0.029999999999994 0.029999999999994 0.0 154 -155 0.0328710079193115 0.0399999999999991 0.0399999999999991 0.0 155 -156 0.032764196395874 0.0300000000000011 0.0300000000000011 0.0 156 -157 0.0323169231414795 0.0300000000000011 0.0300000000000011 0.0 157 -158 0.0350921154022217 0.0399999999999991 0.0399999999999991 0.0 158 -159 0.0315439701080322 0.0300000000000011 0.0300000000000011 0.0 159 -160 0.0760791301727295 0.0700000000000003 0.0700000000000003 0.0 160 -161 0.0333390235900879 0.0399999999999991 0.0399999999999991 0.0 161 -162 0.0331790447235107 0.0300000000000011 0.0300000000000011 0.0 162 -163 0.0328421592712402 0.0300000000000011 0.0300000000000011 0.0 163 -164 0.0354018211364746 0.0399999999999991 0.0399999999999991 0.0 164 -165 0.0326108932495117 0.0300000000000011 0.0300000000000011 0.0 165 -166 0.0330290794372559 0.0300000000000011 0.0300000000000011 0.0 166 -167 0.0316469669342041 0.0300000000000011 0.0300000000000011 0.0 167 -168 0.0735650062561035 0.0799999999999983 0.0799999999999983 0.0 168 -169 0.0328128337860107 0.0300000000000011 0.0300000000000011 0.0 169 -170 0.034276008605957 0.0399999999999991 0.0399999999999991 0.0 170 -171 0.0350871086120605 0.0300000000000011 0.0300000000000011 0.0 171 -172 0.0402491092681885 0.0399999999999991 0.0399999999999991 0.0 172 -173 0.033289909362793 0.0300000000000011 0.0300000000000011 0.0 173 -174 0.0319631099700928 0.0399999999999991 0.0399999999999991 0.0 174 -175 0.0314111709594727 0.029999999999994 0.029999999999994 0.0 175 -176 0.0736920833587646 0.0700000000000003 0.0700000000000003 0.0 176 -177 0.0366611480712891 0.0400000000000063 0.0400000000000063 0.0 177 -178 0.0331029891967773 0.029999999999994 0.029999999999994 0.0 178 -179 0.0331480503082275 0.0300000000000011 0.0300000000000011 0.0 179 -180 0.0324270725250244 0.0399999999999991 0.0399999999999991 0.0 180 -181 0.0324950218200684 0.0300000000000011 0.0300000000000011 0.0 181 -182 0.032120943069458 0.0300000000000011 0.0300000000000011 0.0 182 -183 0.0316941738128662 0.0300000000000011 0.0300000000000011 0.0 183 -184 0.0764799118041992 0.0799999999999983 0.0799999999999983 0.0 184 -185 0.0351009368896484 0.0300000000000011 0.0300000000000011 0.0 185 -186 0.0331439971923828 0.0399999999999991 0.0399999999999991 0.0 186 -187 0.0333070755004883 0.0300000000000011 0.0300000000000011 0.0 187 -188 0.0326988697052002 0.0300000000000011 0.0300000000000011 0.0 188 -189 0.0324010848999023 0.0399999999999991 0.0399999999999991 0.0 189 -190 0.0343129634857178 0.0300000000000011 0.0300000000000011 0.0 190 -191 0.0317180156707764 0.0300000000000011 0.0300000000000011 0.0 191 -192 0.0754880905151367 0.0799999999999983 0.0799999999999983 0.0 192 -193 0.0328428745269775 0.0300000000000011 0.0300000000000011 0.0 193 -194 0.0328872203826904 0.029999999999994 0.029999999999994 0.0 194 -195 0.0326900482177734 0.0400000000000063 0.0400000000000063 0.0 195 -196 0.0326938629150391 0.029999999999994 0.029999999999994 0.0 196 -197 0.036156177520752 0.0400000000000063 0.0400000000000063 0.0 197 -198 0.0402121543884277 0.029999999999994 0.029999999999994 0.0 198 -199 0.0345208644866943 0.0400000000000063 0.0400000000000063 0.0 199 -200 0.0736300945281982 0.0699999999999932 0.0699999999999932 0.0 200 -201 0.0329070091247559 0.0400000000000063 0.0400000000000063 0.0 201 -202 0.0329358577728271 0.029999999999994 0.029999999999994 0.0 202 -203 0.0367400646209717 0.0400000000000063 0.0400000000000063 0.0 203 -204 0.0326740741729736 0.029999999999994 0.029999999999994 0.0 204 -205 0.0328309535980225 0.0300000000000011 0.0300000000000011 0.0 205 -206 0.0319180488586426 0.0300000000000011 0.0300000000000011 0.0 206 -207 0.0315039157867432 0.0300000000000011 0.0300000000000011 0.0 207 -208 0.073983907699585 0.0799999999999983 0.0799999999999983 0.0 208 -209 0.0354940891265869 0.0300000000000011 0.0300000000000011 0.0 209 -210 0.0329270362854004 0.0399999999999991 0.0399999999999991 0.0 210 -211 0.0364441871643066 0.0300000000000011 0.0300000000000011 0.0 211 -212 0.0326921939849854 0.0300000000000011 0.0300000000000011 0.0 212 -213 0.0329389572143555 0.0399999999999991 0.0399999999999991 0.0 213 -214 0.0320320129394531 0.0300000000000011 0.0300000000000011 0.0 214 -215 0.0314679145812988 0.0300000000000011 0.0300000000000011 0.0 215 -216 0.0766069889068604 0.0799999999999983 0.0799999999999983 0.0 216 -217 0.0343639850616455 0.0300000000000011 0.0300000000000011 0.0 217 -218 0.0331821441650391 0.0399999999999991 0.0399999999999991 0.0 218 -219 0.0328841209411621 0.0300000000000011 0.0300000000000011 0.0 219 -220 0.0324678421020508 0.029999999999994 0.029999999999994 0.0 220 -221 0.0323128700256348 0.0300000000000011 0.0300000000000011 0.0 221 -222 0.0320940017700195 0.0399999999999991 0.0399999999999991 0.0 222 -223 0.084298849105835 0.0800000000000054 0.0800000000000054 0.0 223 -224 0.0338959693908691 0.0300000000000011 0.0300000000000011 0.0 224 -225 0.0326578617095947 0.0399999999999991 0.0399999999999991 0.0 225 -226 0.0329980850219727 0.029999999999994 0.029999999999994 0.0 226 -227 0.0328388214111328 0.0300000000000011 0.0300000000000011 0.0 227 -228 0.0324342250823975 0.0399999999999991 0.0399999999999991 0.0 228 -229 0.0363619327545166 0.0300000000000011 0.0300000000000011 0.0 229 -230 0.0319449901580811 0.0300000000000011 0.0300000000000011 0.0 230 -231 0.0728111267089844 0.0799999999999983 0.0799999999999983 0.0 231 -232 0.0331339836120605 0.0300000000000011 0.0300000000000011 0.0 232 -233 0.0330288410186768 0.0300000000000011 0.0300000000000011 0.0 233 -234 0.0328319072723389 0.0399999999999991 0.0399999999999991 0.0 234 -235 0.0353119373321533 0.0300000000000011 0.0300000000000011 0.0 235 -236 0.0324058532714844 0.0300000000000011 0.0300000000000011 0.0 236 -237 0.0343661308288574 0.0399999999999991 0.0399999999999991 0.0 237 -238 0.0319287776947021 0.0300000000000011 0.0300000000000011 0.0 238 -239 0.0734179019927979 0.0700000000000003 0.0700000000000003 0.0 239 -240 0.0330750942230225 0.0399999999999991 0.0399999999999991 0.0 240 -241 0.0359859466552734 0.0300000000000011 0.0300000000000011 0.0 241 -242 0.0331950187683105 0.0399999999999991 0.0399999999999991 0.0 242 -243 0.0336649417877197 0.0300000000000011 0.0300000000000011 0.0 243 -244 0.0327489376068115 0.0300000000000011 0.0300000000000011 0.0 244 -245 0.0324509143829346 0.029999999999994 0.029999999999994 0.0 245 -246 0.0315418243408203 0.0399999999999991 0.0399999999999991 0.0 246 -247 0.0725250244140625 0.0700000000000003 0.0700000000000003 0.0 247 -248 0.0361208915710449 0.0300000000000011 0.0300000000000011 0.0 248 -249 0.040661096572876 0.0399999999999991 0.0399999999999991 0.0 249 -250 0.0346300601959229 0.0400000000000063 0.0400000000000063 0.0 250 -251 0.0325310230255127 0.029999999999994 0.029999999999994 0.0 251 -252 0.032663106918335 0.0300000000000011 0.0300000000000011 0.0 252 -253 0.0323901176452637 0.0399999999999991 0.0399999999999991 0.0 253 -254 0.0314888954162598 0.0300000000000011 0.0300000000000011 0.0 254 -255 0.0757758617401123 0.0700000000000003 0.0700000000000003 0.0 255 -256 0.0334639549255371 0.0399999999999991 0.0399999999999991 0.0 256 -257 0.032958984375 0.0300000000000011 0.0300000000000011 0.0 257 -258 0.0329427719116211 0.0300000000000011 0.0300000000000011 0.0 258 -259 0.0325839519500732 0.0399999999999991 0.0399999999999991 0.0 259 -260 0.0327038764953613 0.0300000000000011 0.0300000000000011 0.0 260 -261 0.0347969532012939 0.0300000000000011 0.0300000000000011 0.0 261 -262 0.0313179492950439 0.0399999999999991 0.0399999999999991 0.0 262 -263 0.0764021873474121 0.0700000000000003 0.0700000000000003 0.0 263 -264 0.0333998203277588 0.0300000000000011 0.0300000000000011 0.0 264 -265 0.0331900119781494 0.0399999999999991 0.0399999999999991 0.0 265 -266 0.0328788757324219 0.0300000000000011 0.0300000000000011 0.0 266 -267 0.0352470874786377 0.0399999999999991 0.0399999999999991 0.0 267 -268 0.0326640605926514 0.0300000000000011 0.0300000000000011 0.0 268 -269 0.0323259830474854 0.029999999999994 0.029999999999994 0.0 269 -270 0.0321478843688965 0.0300000000000011 0.0300000000000011 0.0 270 -271 0.0730900764465332 0.0799999999999983 0.0799999999999983 0.0 271 -272 0.032844066619873 0.0300000000000011 0.0300000000000011 0.0 272 -273 0.0331649780273438 0.0300000000000011 0.0300000000000011 0.0 273 -274 0.0364649295806885 0.0399999999999991 0.0399999999999991 0.0 274 -275 0.0396530628204346 0.0399999999999991 0.0399999999999991 0.0 275 -276 0.0334179401397705 0.0300000000000011 0.0300000000000011 0.0 276 -277 0.0320639610290527 0.0300000000000011 0.0300000000000011 0.0 277 -278 0.0313940048217773 0.0399999999999991 0.0399999999999991 0.0 278 -279 0.0731561183929443 0.0700000000000003 0.0700000000000003 0.0 279 -280 0.0364029407501221 0.0399999999999991 0.0399999999999991 0.0 280 -281 0.0330798625946045 0.0300000000000011 0.0300000000000011 0.0 281 -282 0.0338191986083984 0.0300000000000011 0.0300000000000011 0.0 282 -283 0.0326099395751953 0.0399999999999991 0.0399999999999991 0.0 283 -284 0.0324950218200684 0.0300000000000011 0.0300000000000011 0.0 284 -285 0.0321521759033203 0.0300000000000011 0.0300000000000011 0.0 285 -286 0.0321328639984131 0.0300000000000011 0.0300000000000011 0.0 286 -287 0.0761940479278564 0.0799999999999983 0.0799999999999983 0.0 287 -288 0.0365800857543945 0.0300000000000011 0.0300000000000011 0.0 288 -289 0.0353879928588867 0.0399999999999991 0.0399999999999991 0.0 289 -290 0.0333998203277588 0.0300000000000011 0.0300000000000011 0.0 290 -291 0.0328271389007568 0.029999999999994 0.029999999999994 0.0 291 -292 0.0326738357543945 0.0400000000000063 0.0400000000000063 0.0 292 -293 0.0339128971099854 0.029999999999994 0.029999999999994 0.0 293 -294 0.0325300693511963 0.0300000000000011 0.0300000000000011 0.0 294 -295 0.0739338397979736 0.0800000000000054 0.0800000000000054 0.0 295 -296 0.0328948497772217 0.029999999999994 0.029999999999994 0.0 296 -297 0.0328888893127441 0.0300000000000011 0.0300000000000011 0.0 297 -298 0.0327708721160889 0.0399999999999991 0.0399999999999991 0.0 298 -299 0.0325500965118408 0.0300000000000011 0.0300000000000011 0.0 299 -300 0.0354809761047363 0.0300000000000011 0.0300000000000011 0.0 300 -301 0.0396809577941895 0.0399999999999991 0.0399999999999991 0.0 301 -302 0.0334930419921875 0.0399999999999991 0.0399999999999991 0.0 302 -303 0.0734050273895264 0.0700000000000003 0.0700000000000003 0.0 303 -304 0.0328478813171387 0.0300000000000011 0.0300000000000011 0.0 304 -305 0.0329740047454834 0.0399999999999991 0.0399999999999991 0.0 305 -306 0.0364749431610107 0.0300000000000011 0.0300000000000011 0.0 306 -307 0.0326058864593506 0.0300000000000011 0.0300000000000011 0.0 307 -308 0.0327680110931396 0.0399999999999991 0.0399999999999991 0.0 308 -309 0.0319027900695801 0.0300000000000011 0.0300000000000011 0.0 309 -310 0.0315032005310059 0.0300000000000011 0.0300000000000011 0.0 310 -311 0.073652982711792 0.0700000000000003 0.0700000000000003 0.0 311 -312 0.0356411933898926 0.0399999999999991 0.0399999999999991 0.0 312 -313 0.0330371856689453 0.0300000000000011 0.0300000000000011 0.0 313 -314 0.0342891216278076 0.0399999999999991 0.0399999999999991 0.0 314 -315 0.0345110893249512 0.0300000000000011 0.0300000000000011 0.0 315 -316 0.032926082611084 0.029999999999994 0.029999999999994 0.0 316 -317 0.031851053237915 0.0399999999999991 0.0399999999999991 0.0 317 -318 0.0316848754882812 0.0300000000000011 0.0300000000000011 0.0 318 -319 0.0761759281158447 0.0700000000000003 0.0700000000000003 0.0 319 -320 0.0328528881072998 0.0399999999999991 0.0399999999999991 0.0 320 -321 0.0334789752960205 0.0300000000000011 0.0300000000000011 0.0 321 -322 0.0328638553619385 0.0300000000000011 0.0300000000000011 0.0 322 -323 0.0323901176452637 0.0399999999999991 0.0399999999999991 0.0 323 -324 0.0323100090026855 0.0300000000000011 0.0300000000000011 0.0 324 -325 0.0324501991271973 0.0300000000000011 0.0300000000000011 0.0 325 -326 0.0336298942565918 0.0300000000000011 0.0300000000000011 0.0 326 -327 0.0810260772705078 0.0899999999999963 0.0899999999999963 0.0 327 -328 0.0327072143554688 0.0300000000000011 0.0300000000000011 0.0 328 -329 0.0328741073608398 0.0300000000000011 0.0300000000000011 0.0 329 -330 0.0328249931335449 0.0300000000000011 0.0300000000000011 0.0 330 -331 0.0325191020965576 0.0399999999999991 0.0399999999999991 0.0 331 -332 0.0351779460906982 0.0300000000000011 0.0300000000000011 0.0 332 -333 0.0318300724029541 0.0300000000000011 0.0300000000000011 0.0 333 -334 0.075192928314209 0.0799999999999983 0.0799999999999983 0.0 334 -335 0.0331308841705322 0.0300000000000011 0.0300000000000011 0.0 335 -336 0.0328052043914795 0.029999999999994 0.029999999999994 0.0 336 -337 0.0331370830535889 0.0400000000000063 0.0400000000000063 0.0 337 -338 0.0356910228729248 0.029999999999994 0.029999999999994 0.0 338 -339 0.0324921607971191 0.0400000000000063 0.0400000000000063 0.0 339 -340 0.0324490070343018 0.029999999999994 0.029999999999994 0.0 340 -341 0.0341949462890625 0.0300000000000011 0.0300000000000011 0.0 341 -342 0.0734210014343262 0.0799999999999983 0.0799999999999983 0.0 342 -343 0.0332908630371094 0.0300000000000011 0.0300000000000011 0.0 343 -344 0.0332479476928711 0.0300000000000011 0.0300000000000011 0.0 344 -345 0.0360391139984131 0.0399999999999991 0.0399999999999991 0.0 345 -346 0.0328700542449951 0.0300000000000011 0.0300000000000011 0.0 346 -347 0.0346879959106445 0.0399999999999991 0.0399999999999991 0.0 347 -348 0.0322730541229248 0.0300000000000011 0.0300000000000011 0.0 348 -349 0.0316729545593262 0.0300000000000011 0.0300000000000011 0.0 349 -350 0.0730090141296387 0.0700000000000003 0.0700000000000003 0.0 350 -351 0.0364499092102051 0.0399999999999991 0.0399999999999991 0.0 351 -352 0.0416209697723389 0.0399999999999991 0.0399999999999991 0.0 352 -353 0.0340771675109863 0.0399999999999991 0.0399999999999991 0.0 353 -354 0.0326759815216064 0.0300000000000011 0.0300000000000011 0.0 354 -355 0.0324649810791016 0.0300000000000011 0.0300000000000011 0.0 355 -356 0.032310962677002 0.0300000000000011 0.0300000000000011 0.0 356 -357 0.0313961505889893 0.0300000000000011 0.0300000000000011 0.0 357 -358 0.0751090049743652 0.0799999999999983 0.0799999999999983 0.0 358 -359 0.0351879596710205 0.0399999999999991 0.0399999999999991 0.0 359 -360 0.0331299304962158 0.0300000000000011 0.0300000000000011 0.0 360 -361 0.0328550338745117 0.0300000000000011 0.0300000000000011 0.0 361 -362 0.0325639247894287 0.029999999999994 0.029999999999994 0.0 362 -363 0.0325849056243896 0.0400000000000063 0.0400000000000063 0.0 363 -364 0.0344219207763672 0.029999999999994 0.029999999999994 0.0 364 -365 0.0323021411895752 0.0300000000000011 0.0300000000000011 0.0 365 -366 0.0760447978973389 0.0800000000000054 0.0800000000000054 0.0 366 -367 0.0335848331451416 0.029999999999994 0.029999999999994 0.0 367 -368 0.0331020355224609 0.0399999999999991 0.0399999999999991 0.0 368 -369 0.0329232215881348 0.0300000000000011 0.0300000000000011 0.0 369 -370 0.0328400135040283 0.0300000000000011 0.0300000000000011 0.0 370 -371 0.0363020896911621 0.0399999999999991 0.0399999999999991 0.0 371 -372 0.0322511196136475 0.0300000000000011 0.0300000000000011 0.0 372 -373 0.0333948135375977 0.0300000000000011 0.0300000000000011 0.0 373 -374 0.0732510089874268 0.0799999999999983 0.0799999999999983 0.0 374 -375 0.032930850982666 0.0300000000000011 0.0300000000000011 0.0 375 -376 0.0330500602722168 0.0300000000000011 0.0300000000000011 0.0 376 -377 0.0361061096191406 0.0399999999999991 0.0399999999999991 0.0 377 -378 0.0395760536193848 0.0399999999999991 0.0399999999999991 0.0 378 -379 0.0334169864654541 0.0300000000000011 0.0300000000000011 0.0 379 -380 0.0320568084716797 0.0300000000000011 0.0300000000000011 0.0 380 -381 0.0315189361572266 0.0399999999999991 0.0399999999999991 0.0 381 -382 0.0733020305633545 0.0700000000000003 0.0700000000000003 0.0 382 -383 0.0355980396270752 0.0399999999999991 0.0399999999999991 0.0 383 -384 0.0331339836120605 0.0300000000000011 0.0300000000000011 0.0 384 -385 0.0331411361694336 0.0300000000000011 0.0300000000000011 0.0 385 -386 0.0324721336364746 0.0300000000000011 0.0300000000000011 0.0 386 -387 0.0324320793151855 0.0399999999999991 0.0399999999999991 0.0 387 -388 0.0321850776672363 0.029999999999994 0.029999999999994 0.0 388 -389 0.0315890312194824 0.0300000000000011 0.0300000000000011 0.0 389 -390 0.0761289596557617 0.0800000000000054 0.0800000000000054 0.0 390 -391 0.033301830291748 0.029999999999994 0.029999999999994 0.0 391 -392 0.035081148147583 0.0300000000000011 0.0300000000000011 0.0 392 -393 0.0335009098052979 0.0399999999999991 0.0399999999999991 0.0 393 -394 0.0326759815216064 0.0300000000000011 0.0300000000000011 0.0 394 -395 0.0327270030975342 0.0300000000000011 0.0300000000000011 0.0 395 -396 0.0323770046234131 0.0399999999999991 0.0399999999999991 0.0 396 -397 0.0347421169281006 0.0300000000000011 0.0300000000000011 0.0 397 -398 0.0752899646759033 0.0799999999999983 0.0799999999999983 0.0 398 -399 0.0327789783477783 0.0300000000000011 0.0300000000000011 0.0 399 -400 0.032951831817627 0.0300000000000011 0.0300000000000011 0.0 400 -401 0.03273606300354 0.0300000000000011 0.0300000000000011 0.0 401 -402 0.0324621200561523 0.0399999999999991 0.0399999999999991 0.0 402 -403 0.0350461006164551 0.0300000000000011 0.0300000000000011 0.0 403 -404 0.0376379489898682 0.0399999999999991 0.0399999999999991 0.0 404 -405 0.0354411602020264 0.0300000000000011 0.0300000000000011 0.0 405 -406 0.0734958648681641 0.0799999999999983 0.0799999999999983 0.0 406 -407 0.0329210758209229 0.0300000000000011 0.0300000000000011 0.0 407 -408 0.0329289436340332 0.0300000000000011 0.0300000000000011 0.0 408 -409 0.0354850292205811 0.0399999999999991 0.0399999999999991 0.0 409 -410 0.0325729846954346 0.0300000000000011 0.0300000000000011 0.0 410 -411 0.0327589511871338 0.0399999999999991 0.0399999999999991 0.0 411 -412 0.0319170951843262 0.0300000000000011 0.0300000000000011 0.0 412 -413 0.031519889831543 0.029999999999994 0.029999999999994 0.0 413 -414 0.0742340087890625 0.0700000000000003 0.0700000000000003 0.0 414 -415 0.0346739292144775 0.0399999999999991 0.0399999999999991 0.0 415 -416 0.0351288318634033 0.0300000000000011 0.0300000000000011 0.0 416 -417 0.0329630374908447 0.0399999999999991 0.0399999999999991 0.0 417 -418 0.0367558002471924 0.0300000000000011 0.0300000000000011 0.0 418 -419 0.0328981876373291 0.0300000000000011 0.0300000000000011 0.0 419 -420 0.0320210456848145 0.0399999999999991 0.0399999999999991 0.0 420 -421 0.031790018081665 0.0300000000000011 0.0300000000000011 0.0 421 -422 0.0784010887145996 0.0799999999999983 0.0799999999999983 0.0 422 -423 0.0330309867858887 0.0300000000000011 0.0300000000000011 0.0 423 -424 0.0335760116577148 0.0300000000000011 0.0300000000000011 0.0 424 -425 0.0327050685882568 0.0399999999999991 0.0399999999999991 0.0 425 -426 0.0326788425445557 0.0300000000000011 0.0300000000000011 0.0 426 -427 0.032289981842041 0.0300000000000011 0.0300000000000011 0.0 427 -428 0.0317809581756592 0.0300000000000011 0.0300000000000011 0.0 428 -429 0.0816869735717773 0.0899999999999963 0.0899999999999963 0.0 429 -430 0.035430908203125 0.0300000000000011 0.0300000000000011 0.0 430 -431 0.0327348709106445 0.0300000000000011 0.0300000000000011 0.0 431 -432 0.0328209400177002 0.0399999999999991 0.0399999999999991 0.0 432 -433 0.0328578948974609 0.0300000000000011 0.0300000000000011 0.0 433 -434 0.0324020385742188 0.0300000000000011 0.0300000000000011 0.0 434 -435 0.0351409912109375 0.0399999999999991 0.0399999999999991 0.0 435 -436 0.0321168899536133 0.0300000000000011 0.0300000000000011 0.0 436 -437 0.0726029872894287 0.0700000000000003 0.0700000000000003 0.0 437 -438 0.0331008434295654 0.029999999999994 0.029999999999994 0.0 438 -439 0.0328960418701172 0.0399999999999991 0.0399999999999991 0.0 439 -440 0.0328078269958496 0.0300000000000011 0.0300000000000011 0.0 440 -441 0.0326459407806396 0.0300000000000011 0.0300000000000011 0.0 441 -442 0.0361838340759277 0.0399999999999991 0.0399999999999991 0.0 442 -443 0.0322508811950684 0.0300000000000011 0.0300000000000011 0.0 443 -444 0.0355379581451416 0.0399999999999991 0.0399999999999991 0.0 444 -445 0.0736260414123535 0.0700000000000003 0.0700000000000003 0.0 445 -446 0.0333738327026367 0.0300000000000011 0.0300000000000011 0.0 446 -447 0.0333800315856934 0.0399999999999991 0.0399999999999991 0.0 447 -448 0.0369861125946045 0.0300000000000011 0.0300000000000011 0.0 448 -449 0.033034086227417 0.0399999999999991 0.0399999999999991 0.0 449 -450 0.034984827041626 0.0300000000000011 0.0300000000000011 0.0 450 -451 0.0323779582977295 0.0300000000000011 0.0300000000000011 0.0 451 -452 0.0319168567657471 0.0399999999999991 0.0399999999999991 0.0 452 -453 0.0730609893798828 0.0700000000000003 0.0700000000000003 0.0 453 -454 0.0357108116149902 0.0399999999999991 0.0399999999999991 0.0 454 -455 0.0403239727020264 0.0399999999999991 0.0399999999999991 0.0 455 -456 0.033923864364624 0.0300000000000011 0.0300000000000011 0.0 456 -457 0.0325479507446289 0.0300000000000011 0.0300000000000011 0.0 457 -458 0.0323481559753418 0.0300000000000011 0.0300000000000011 0.0 458 -459 0.0323350429534912 0.0399999999999991 0.0399999999999991 0.0 459 -460 0.0314900875091553 0.0300000000000011 0.0300000000000011 0.0 460 -461 0.075538158416748 0.0700000000000003 0.0700000000000003 0.0 461 -462 0.0340449810028076 0.0399999999999991 0.0399999999999991 0.0 462 -463 0.0331201553344727 0.0300000000000011 0.0300000000000011 0.0 463 -464 0.0330970287322998 0.029999999999994 0.029999999999994 0.0 464 -465 0.0326929092407227 0.0399999999999991 0.0399999999999991 0.0 465 -466 0.0326869487762451 0.0300000000000011 0.0300000000000011 0.0 466 -467 0.0325558185577393 0.0300000000000011 0.0300000000000011 0.0 467 -468 0.0355589389801025 0.0399999999999991 0.0399999999999991 0.0 468 -469 0.0771338939666748 0.0700000000000003 0.0700000000000003 0.0 469 -470 0.0334289073944092 0.0399999999999991 0.0399999999999991 0.0 470 -471 0.0330390930175781 0.0300000000000011 0.0300000000000011 0.0 471 -472 0.0329241752624512 0.0300000000000011 0.0300000000000011 0.0 472 -473 0.0327908992767334 0.0399999999999991 0.0399999999999991 0.0 473 -474 0.0363669395446777 0.0300000000000011 0.0300000000000011 0.0 474 -475 0.0322010517120361 0.0300000000000011 0.0300000000000011 0.0 475 -476 0.0328471660614014 0.0399999999999991 0.0399999999999991 0.0 476 -477 0.0735671520233154 0.0700000000000003 0.0700000000000003 0.0 477 -478 0.0327999591827393 0.0300000000000011 0.0300000000000011 0.0 478 -479 0.0329790115356445 0.0399999999999991 0.0399999999999991 0.0 479 -480 0.0350720882415771 0.0300000000000011 0.0300000000000011 0.0 480 -481 0.0392179489135742 0.0399999999999991 0.0399999999999991 0.0 481 -482 0.0342378616333008 0.0399999999999991 0.0399999999999991 0.0 482 -483 0.0319888591766357 0.0300000000000011 0.0300000000000011 0.0 483 -484 0.0314619541168213 0.0300000000000011 0.0300000000000011 0.0 484 -485 0.0736970901489258 0.0700000000000003 0.0700000000000003 0.0 485 -486 0.0357317924499512 0.0399999999999991 0.0399999999999991 0.0 486 -487 0.0331878662109375 0.0300000000000011 0.0300000000000011 0.0 487 -488 0.033804178237915 0.0399999999999991 0.0399999999999991 0.0 488 -489 0.0325119495391846 0.0300000000000011 0.0300000000000011 0.0 489 -490 0.0325300693511963 0.029999999999994 0.029999999999994 0.0 490 -491 0.0321159362792969 0.0300000000000011 0.0300000000000011 0.0 491 -492 0.0320580005645752 0.0399999999999991 0.0399999999999991 0.0 492 -493 0.075861930847168 0.0700000000000003 0.0700000000000003 0.0 493 -494 0.033599853515625 0.0399999999999991 0.0399999999999991 0.0 494 -495 0.0367560386657715 0.0300000000000011 0.0300000000000011 0.0 495 -496 0.0333199501037598 0.0300000000000011 0.0300000000000011 0.0 496 -497 0.0325191020965576 0.0399999999999991 0.0399999999999991 0.0 497 -498 0.0327298641204834 0.0300000000000011 0.0300000000000011 0.0 498 -499 0.0322799682617188 0.0300000000000011 0.0300000000000011 0.0 499 -500 0.0348708629608154 0.0399999999999991 0.0399999999999991 0.0 500 -501 0.0749578475952148 0.0700000000000003 0.0700000000000003 0.0 501 -502 0.0332460403442383 0.0399999999999991 0.0399999999999991 0.0 502 -503 0.0331079959869385 0.0300000000000011 0.0300000000000011 0.0 503 -504 0.0328578948974609 0.0300000000000011 0.0300000000000011 0.0 504 -505 0.032494068145752 0.0300000000000011 0.0300000000000011 0.0 505 -506 0.0351459980010986 0.0399999999999991 0.0399999999999991 0.0 506 -507 0.0394799709320068 0.0500000000000043 0.0399999999999991 0.01 507 -508 0.0342020988464355 0.0300000000000011 0.0300000000000011 0.0 508 -509 0.0742120742797852 0.0799999999999983 0.0799999999999983 0.0 509 -510 0.0330269336700439 0.0300000000000011 0.0300000000000011 0.0 510 -511 0.032991886138916 0.0300000000000011 0.0300000000000011 0.0 511 -512 0.0354578495025635 0.0399999999999991 0.0399999999999991 0.0 512 -513 0.0327198505401611 0.0300000000000011 0.0300000000000011 0.0 513 -514 0.0336050987243652 0.029999999999994 0.029999999999994 0.0 514 -515 0.0318880081176758 0.0400000000000063 0.0400000000000063 0.0 515 -516 0.0725610256195068 0.0699999999999932 0.0699999999999932 0.0 516 -517 0.0332450866699219 0.0300000000000011 0.0300000000000011 0.0 517 -518 0.0342578887939453 0.0399999999999991 0.0399999999999991 0.0 518 -519 0.035430908203125 0.0300000000000011 0.0300000000000011 0.0 519 -520 0.032912015914917 0.0399999999999991 0.0399999999999991 0.0 520 -521 0.0366041660308838 0.0300000000000011 0.0300000000000011 0.0 521 -522 0.0328991413116455 0.0300000000000011 0.0300000000000011 0.0 522 -523 0.0319130420684814 0.0399999999999991 0.0399999999999991 0.0 523 -524 0.07318115234375 0.0700000000000003 0.0700000000000003 0.0 524 -525 0.0363700389862061 0.0399999999999991 0.0399999999999991 0.0 525 -526 0.033411979675293 0.0300000000000011 0.0300000000000011 0.0 526 -527 0.0364720821380615 0.0399999999999991 0.0399999999999991 0.0 527 -528 0.0327281951904297 0.0300000000000011 0.0300000000000011 0.0 528 -529 0.0325851440429688 0.0300000000000011 0.0300000000000011 0.0 529 -530 0.0322520732879639 0.0300000000000011 0.0300000000000011 0.0 530 -531 0.0316128730773926 0.0399999999999991 0.0399999999999991 0.0 531 -532 0.0813291072845459 0.0799999999999983 0.0799999999999983 0.0 532 -533 0.0356478691101074 0.0300000000000011 0.0300000000000011 0.0 533 -534 0.0330061912536621 0.0300000000000011 0.0300000000000011 0.0 534 -535 0.0327270030975342 0.0399999999999991 0.0399999999999991 0.0 535 -536 0.032696008682251 0.0300000000000011 0.0300000000000011 0.0 536 -537 0.032243013381958 0.0300000000000011 0.0300000000000011 0.0 537 -538 0.0348541736602783 0.0399999999999991 0.0399999999999991 0.0 538 -539 0.031674861907959 0.0300000000000011 0.0300000000000011 0.0 539 -540 0.0754058361053467 0.0700000000000003 0.0700000000000003 0.0 540 -541 0.0328490734100342 0.0399999999999991 0.0399999999999991 0.0 541 -542 0.0332391262054443 0.029999999999994 0.029999999999994 0.0 542 -543 0.0331962108612061 0.0300000000000011 0.0300000000000011 0.0 543 -544 0.0350210666656494 0.0399999999999991 0.0399999999999991 0.0 544 -545 0.0324161052703857 0.0300000000000011 0.0300000000000011 0.0 545 -546 0.031865119934082 0.0300000000000011 0.0300000000000011 0.0 546 -547 0.0355000495910645 0.0399999999999991 0.0399999999999991 0.0 547 -548 0.0733621120452881 0.0700000000000003 0.0700000000000003 0.0 548 -549 0.0331029891967773 0.0300000000000011 0.0300000000000011 0.0 549 -550 0.0332908630371094 0.0399999999999991 0.0399999999999991 0.0 550 -551 0.0365278720855713 0.0300000000000011 0.0300000000000011 0.0 551 -552 0.0326669216156006 0.0399999999999991 0.0399999999999991 0.0 552 -553 0.0345711708068848 0.0300000000000011 0.0300000000000011 0.0 553 -554 0.0320999622344971 0.0300000000000011 0.0300000000000011 0.0 554 -555 0.0315120220184326 0.0300000000000011 0.0300000000000011 0.0 555 -556 0.0733709335327148 0.0700000000000003 0.0700000000000003 0.0 556 -557 0.0357170104980469 0.0300000000000011 0.0300000000000011 0.0 557 -558 0.0411560535430908 0.0399999999999991 0.0399999999999991 0.0 558 -559 0.0337309837341309 0.0399999999999991 0.0399999999999991 0.0 559 -560 0.0325090885162354 0.0300000000000011 0.0300000000000011 0.0 560 -561 0.0326089859008789 0.0300000000000011 0.0300000000000011 0.0 561 -562 0.032412052154541 0.029999999999994 0.029999999999994 0.0 562 -563 0.0314450263977051 0.0300000000000011 0.0300000000000011 0.0 563 -564 0.0781939029693604 0.0700000000000003 0.0700000000000003 0.0 564 -565 0.0359461307525635 0.0399999999999991 0.0399999999999991 0.0 565 -566 0.0339870452880859 0.0300000000000011 0.0300000000000011 0.0 566 -567 0.0329389572143555 0.0399999999999991 0.0399999999999991 0.0 567 -568 0.0336530208587646 0.029999999999994 0.029999999999994 0.0 568 -569 0.0326399803161621 0.0300000000000011 0.0300000000000011 0.0 569 -570 0.0351450443267822 0.0399999999999991 0.0399999999999991 0.0 570 -571 0.0314168930053711 0.0300000000000011 0.0300000000000011 0.0 571 -572 0.0775408744812012 0.0800000000000054 0.0800000000000054 0.0 572 -573 0.032926082611084 0.029999999999994 0.029999999999994 0.0 573 -574 0.0330569744110107 0.0300000000000011 0.0300000000000011 0.0 574 -575 0.0329349040985107 0.0300000000000011 0.0300000000000011 0.0 575 -576 0.0327939987182617 0.0399999999999991 0.0399999999999991 0.0 576 -577 0.035599946975708 0.0300000000000011 0.0300000000000011 0.0 577 -578 0.0321230888366699 0.0399999999999991 0.0399999999999991 0.0 578 -579 0.0320999622344971 0.0300000000000011 0.0300000000000011 0.0 579 -580 0.0739450454711914 0.0700000000000003 0.0700000000000003 0.0 580 -581 0.0332319736480713 0.0300000000000011 0.0300000000000011 0.0 581 -582 0.0331840515136719 0.0300000000000011 0.0300000000000011 0.0 582 -583 0.0358431339263916 0.0300000000000011 0.0300000000000011 0.0 583 -584 0.0413031578063965 0.0499999999999972 0.0499999999999972 0.0 584 -585 0.0345101356506348 0.0300000000000011 0.0300000000000011 0.0 585 -586 0.0317580699920654 0.0300000000000011 0.0300000000000011 0.0 586 -587 0.0729880332946777 0.0799999999999983 0.0799999999999983 0.0 587 -588 0.0332069396972656 0.0300000000000011 0.0300000000000011 0.0 588 -589 0.036264181137085 0.0300000000000011 0.0300000000000011 0.0 589 -590 0.0331530570983887 0.0399999999999991 0.0399999999999991 0.0 590 -591 0.0343399047851562 0.0300000000000011 0.0300000000000011 0.0 591 -592 0.0326418876647949 0.0300000000000011 0.0300000000000011 0.0 592 -593 0.0326697826385498 0.0300000000000011 0.0300000000000011 0.0 593 -594 0.0320968627929688 0.0299999999999869 0.029999999999994 0.0 594 -595 0.0752952098846436 0.0800000000000125 0.0800000000000054 0.0 595 -596 0.0330331325531006 0.0299999999999869 0.029999999999994 0.0 596 -597 0.0343711376190186 0.0300000000000011 0.0300000000000011 0.0 597 -598 0.035207986831665 0.0400000000000063 0.0400000000000063 0.0 598 -599 0.0326581001281738 0.0300000000000011 0.0300000000000011 0.0 599 -600 0.0325701236724854 0.0300000000000011 0.0300000000000011 0.0 600 -601 0.0330169200897217 0.039999999999992 0.039999999999992 0.0 601 -602 0.0319371223449707 0.0300000000000011 0.0300000000000011 0.0 602 -603 0.0774281024932861 0.0799999999999983 0.0799999999999983 0.0 603 -604 0.033113956451416 0.0300000000000011 0.0300000000000011 0.0 604 -605 0.0331709384918213 0.0300000000000011 0.0300000000000011 0.0 605 -606 0.0327689647674561 0.0300000000000011 0.0300000000000011 0.0 606 -607 0.0324411392211914 0.0400000000000063 0.0400000000000063 0.0 607 -608 0.0325808525085449 0.0299999999999869 0.0299999999999869 0.0 608 -609 0.0360062122344971 0.0400000000000063 0.0400000000000063 0.0 609 -610 0.041234016418457 0.0400000000000063 0.0400000000000063 0.0 610 -611 0.0736250877380371 0.0699999999999932 0.0699999999999932 0.0 611 -612 0.0329921245574951 0.0300000000000011 0.0300000000000011 0.0 612 -613 0.0332169532775879 0.0400000000000063 0.0400000000000063 0.0 613 -614 0.0327460765838623 0.0299999999999869 0.0299999999999869 0.0 614 -615 0.0364718437194824 0.0400000000000063 0.0400000000000063 0.0 615 -616 0.0324280261993408 0.0300000000000011 0.0300000000000011 0.0 616 -617 0.0323798656463623 0.0300000000000011 0.0300000000000011 0.0 617 -618 0.031386137008667 0.0300000000000011 0.0300000000000011 0.0 618 -619 0.0726630687713623 0.0799999999999983 0.0799999999999983 0.0 619 -620 0.0328989028930664 0.0300000000000011 0.0300000000000011 0.0 620 -621 0.0358729362487793 0.0300000000000011 0.0300000000000011 0.0 621 -622 0.0327029228210449 0.039999999999992 0.039999999999992 0.0 622 -623 0.0342001914978027 0.0300000000000011 0.0300000000000011 0.0 623 -624 0.0347521305084229 0.0400000000000063 0.0400000000000063 0.0 624 -625 0.0318779945373535 0.0300000000000011 0.0300000000000011 0.0 625 -626 0.0316078662872314 0.0300000000000011 0.0300000000000011 0.0 626 -627 0.0768020153045654 0.0699999999999932 0.0699999999999932 0.0 627 -628 0.0332560539245605 0.0400000000000063 0.0400000000000063 0.0 628 -629 0.0345439910888672 0.0300000000000011 0.0300000000000011 0.0 629 -630 0.033174991607666 0.039999999999992 0.039999999999992 0.0 630 -631 0.0327689647674561 0.0300000000000011 0.0300000000000011 0.0 631 -632 0.0324020385742188 0.0300000000000011 0.0300000000000011 0.0 632 -633 0.0320298671722412 0.0300000000000011 0.0300000000000011 0.0 633 -634 0.0313320159912109 0.0300000000000011 0.0300000000000011 0.0 634 -635 0.0831730365753174 0.0900000000000034 0.0900000000000034 0.0 635 -636 0.0344598293304443 0.0299999999999869 0.0299999999999869 0.0 636 -637 0.0330190658569336 0.0400000000000063 0.0400000000000063 0.0 637 -638 0.033113956451416 0.0300000000000011 0.0300000000000011 0.0 638 -639 0.032689094543457 0.0300000000000011 0.0300000000000011 0.0 639 -640 0.0323820114135742 0.0300000000000011 0.0300000000000011 0.0 640 -641 0.034714937210083 0.039999999999992 0.039999999999992 0.0 641 -642 0.0318310260772705 0.0300000000000011 0.0300000000000011 0.0 642 -643 0.0750701427459717 0.0700000000000074 0.0700000000000074 0.0 643 -644 0.0330171585083008 0.039999999999992 0.039999999999992 0.0 644 -645 0.0331709384918213 0.0300000000000011 0.0300000000000011 0.0 645 -646 0.0328099727630615 0.0300000000000011 0.0300000000000011 0.0 646 -647 0.0354018211364746 0.0400000000000063 0.0400000000000063 0.0 647 -648 0.0324749946594238 0.0300000000000011 0.0300000000000011 0.0 648 -649 0.0331239700317383 0.0300000000000011 0.0300000000000011 0.0 649 -650 0.0337600708007812 0.039999999999992 0.039999999999992 0.0 650 -651 0.0735490322113037 0.0700000000000074 0.0700000000000074 0.0 651 -652 0.0332188606262207 0.0300000000000011 0.0300000000000011 0.0 652 -653 0.0344240665435791 0.039999999999992 0.039999999999992 0.0 653 -654 0.0346159934997559 0.0300000000000011 0.0300000000000011 0.0 654 -655 0.0326159000396729 0.0400000000000063 0.0400000000000063 0.0 655 -656 0.0342769622802734 0.0299999999999869 0.0299999999999869 0.0 656 -657 0.0318350791931152 0.0300000000000011 0.0300000000000011 0.0 657 -658 0.0315489768981934 0.0300000000000011 0.0300000000000011 0.0 658 -659 0.0741128921508789 0.0799999999999983 0.0799999999999983 0.0 659 -660 0.0384690761566162 0.0400000000000063 0.0400000000000063 0.0 660 -661 0.0412099361419678 0.0400000000000063 0.0400000000000063 0.0 661 -662 0.0339169502258301 0.0299999999999869 0.0299999999999869 0.0 662 -663 0.0325090885162354 0.0300000000000011 0.0300000000000011 0.0 663 -664 0.0323750972747803 0.0400000000000063 0.0400000000000063 0.0 664 -665 0.0319221019744873 0.0300000000000011 0.0300000000000011 0.0 665 -666 0.0757949352264404 0.0699999999999932 0.0699999999999932 0.0 666 -667 0.0332348346710205 0.0400000000000063 0.0400000000000063 0.0 667 -668 0.0343492031097412 0.0300000000000011 0.0300000000000011 0.0 668 -669 0.0330471992492676 0.0300000000000011 0.0300000000000011 0.0 669 -670 0.0328240394592285 0.039999999999992 0.039999999999992 0.0 670 -671 0.0326519012451172 0.0300000000000011 0.0300000000000011 0.0 671 -672 0.0323309898376465 0.0300000000000011 0.0300000000000011 0.0 672 -673 0.0348069667816162 0.0400000000000063 0.0400000000000063 0.0 673 -674 0.0734519958496094 0.0699999999999932 0.0699999999999932 0.0 674 -675 0.0358669757843018 0.0400000000000063 0.0400000000000063 0.0 675 -676 0.0329530239105225 0.0300000000000011 0.0300000000000011 0.0 676 -677 0.033228874206543 0.0300000000000011 0.0300000000000011 0.0 677 -678 0.0329709053039551 0.039999999999992 0.039999999999992 0.0 678 -679 0.0349721908569336 0.0300000000000011 0.0300000000000011 0.0 679 -680 0.0329270362854004 0.0300000000000011 0.0300000000000011 0.0 680 -681 0.0317440032958984 0.0400000000000063 0.0400000000000063 0.0 681 -682 0.0737960338592529 0.0699999999999932 0.0699999999999932 0.0 682 -683 0.0329961776733398 0.0300000000000011 0.0300000000000011 0.0 683 -684 0.0329370498657227 0.0400000000000063 0.0400000000000063 0.0 684 -685 0.033027172088623 0.0299999999999869 0.0299999999999869 0.0 685 -686 0.0384509563446045 0.0400000000000063 0.0400000000000063 0.0 686 -687 0.0391240119934082 0.0400000000000063 0.0400000000000063 0.0 687 -688 0.0333750247955322 0.0299999999999869 0.0299999999999869 0.0 688 -689 0.0313661098480225 0.0300000000000011 0.0300000000000011 0.0 689 -690 0.0728821754455566 0.0700000000000074 0.0700000000000074 0.0 690 -691 0.0328829288482666 0.039999999999992 0.039999999999992 0.0 691 -692 0.0367858409881592 0.0300000000000011 0.0300000000000011 0.0 692 -693 0.032905101776123 0.0400000000000063 0.0400000000000063 0.0 693 -694 0.0336589813232422 0.0300000000000011 0.0300000000000011 0.0 694 -695 0.0322878360748291 0.0300000000000011 0.0300000000000011 0.0 695 -696 0.0319581031799316 0.0300000000000011 0.0300000000000011 0.0 696 -697 0.0315032005310059 0.039999999999992 0.039999999999992 0.0 697 -698 0.0756649971008301 0.0700000000000074 0.0700000000000074 0.0 698 -699 0.0332357883453369 0.039999999999992 0.039999999999992 0.0 699 -700 0.0345721244812012 0.0300000000000011 0.0300000000000011 0.0 700 -701 0.035128116607666 0.0300000000000011 0.0300000000000011 0.0 701 -702 0.0327088832855225 0.0400000000000063 0.0400000000000063 0.0 702 -703 0.032559871673584 0.0300000000000011 0.0300000000000011 0.0 703 -704 0.0327198505401611 0.0300000000000011 0.0300000000000011 0.0 704 -705 0.0315008163452148 0.0299999999999869 0.0299999999999869 0.0 705 -706 0.0784509181976318 0.0800000000000125 0.0800000000000125 0.0 706 -707 0.032890796661377 0.039999999999992 0.039999999999992 0.0 707 -708 0.0331568717956543 0.0300000000000011 0.0300000000000011 0.0 708 -709 0.0327529907226562 0.0300000000000011 0.0300000000000011 0.0 709 -710 0.0325257778167725 0.0300000000000011 0.0300000000000011 0.0 710 -711 0.0323739051818848 0.039999999999992 0.039999999999992 0.0 711 -712 0.0377719402313232 0.0300000000000011 0.0300000000000011 0.0 712 -713 0.0389621257781982 0.0400000000000063 0.0400000000000063 0.0 713 -714 0.0756630897521973 0.0799999999999983 0.0799999999999983 0.0 714 -715 0.0329148769378662 0.0300000000000011 0.0300000000000011 0.0 715 -716 0.0330750942230225 0.0400000000000063 0.0400000000000063 0.0 716 -717 0.0328159332275391 0.0299999999999869 0.0299999999999869 0.0 717 -718 0.0366039276123047 0.0300000000000011 0.0300000000000011 0.0 718 -719 0.032505989074707 0.0400000000000063 0.0400000000000063 0.0 719 -720 0.0332479476928711 0.0300000000000011 0.0300000000000011 0.0 720 -721 0.0314240455627441 0.0300000000000011 0.0300000000000011 0.0 721 -722 0.0737588405609131 0.0799999999999983 0.0799999999999983 0.0 722 -723 0.0348548889160156 0.0300000000000011 0.0300000000000011 0.0 723 -724 0.0358438491821289 0.0300000000000011 0.0300000000000011 0.0 724 -725 0.0327739715576172 0.0300000000000011 0.0300000000000011 0.0 725 -726 0.0338411331176758 0.0300000000000011 0.0300000000000011 0.0 726 -727 0.0345768928527832 0.0400000000000063 0.0400000000000063 0.0 727 -728 0.0319709777832031 0.0300000000000011 0.0300000000000011 0.0 728 -729 0.0316281318664551 0.0300000000000011 0.0300000000000011 0.0 729 -730 0.0774428844451904 0.0799999999999983 0.0799999999999983 0.0 730 -731 0.0331730842590332 0.0300000000000011 0.0300000000000011 0.0 731 -732 0.0344212055206299 0.0300000000000011 0.0300000000000011 0.0 732 -733 0.0328938961029053 0.039999999999992 0.039999999999992 0.0 733 -734 0.032724142074585 0.0300000000000011 0.0300000000000011 0.0 734 -735 0.0324850082397461 0.0300000000000011 0.0300000000000011 0.0 735 -736 0.031792163848877 0.0300000000000011 0.0300000000000011 0.0 736 -737 0.0799460411071777 0.0799999999999983 0.0799999999999983 0.0 737 -738 0.0354650020599365 0.0400000000000063 0.0400000000000063 0.0 738 -739 0.0343890190124512 0.0299999999999869 0.0299999999999869 0.0 739 -740 0.0328691005706787 0.0400000000000063 0.0400000000000063 0.0 740 -741 0.0328059196472168 0.0300000000000011 0.0300000000000011 0.0 741 -742 0.0325958728790283 0.0300000000000011 0.0300000000000011 0.0 742 -743 0.0322740077972412 0.039999999999992 0.039999999999992 0.0 743 -744 0.0356390476226807 0.0300000000000011 0.0300000000000011 0.0 744 -745 0.0736830234527588 0.0700000000000074 0.0700000000000074 0.0 745 -746 0.0331189632415771 0.0300000000000011 0.0300000000000011 0.0 746 -747 0.0331828594207764 0.0300000000000011 0.0300000000000011 0.0 747 -748 0.0329599380493164 0.0300000000000011 0.0300000000000011 0.0 748 -749 0.0325560569763184 0.0400000000000063 0.0400000000000063 0.0 749 -750 0.0352969169616699 0.0300000000000011 0.0300000000000011 0.0 750 -751 0.0321471691131592 0.0300000000000011 0.0300000000000011 0.0 751 -752 0.0331270694732666 0.039999999999992 0.039999999999992 0.0 752 -753 0.0755550861358643 0.0700000000000074 0.0700000000000074 0.0 753 -754 0.0331971645355225 0.039999999999992 0.039999999999992 0.0 754 -755 0.0333280563354492 0.0300000000000011 0.0300000000000011 0.0 755 -756 0.0349440574645996 0.0300000000000011 0.0300000000000011 0.0 756 -757 0.0327320098876953 0.0400000000000063 0.0400000000000063 0.0 757 -758 0.0337162017822266 0.0300000000000011 0.0300000000000011 0.0 758 -759 0.0320689678192139 0.0299999999999869 0.0299999999999869 0.0 759 -760 0.0315940380096436 0.0300000000000011 0.0300000000000011 0.0 760 -761 0.0736989974975586 0.0800000000000125 0.0800000000000125 0.0 761 -762 0.0331079959869385 0.0299999999999869 0.0299999999999869 0.0 762 -763 0.0434081554412842 0.0400000000000063 0.0400000000000063 0.0 763 -764 0.0350160598754883 0.0400000000000063 0.0400000000000063 0.0 764 -765 0.0333938598632812 0.0299999999999869 0.0299999999999869 0.0 765 -766 0.0325360298156738 0.0400000000000063 0.0400000000000063 0.0 766 -767 0.032012939453125 0.0300000000000011 0.0300000000000011 0.0 767 -768 0.031588077545166 0.0300000000000011 0.0300000000000011 0.0 768 -769 0.0773451328277588 0.0799999999999983 0.0799999999999983 0.0 769 -770 0.0328960418701172 0.0300000000000011 0.0300000000000011 0.0 770 -771 0.0350039005279541 0.0300000000000011 0.0300000000000011 0.0 771 -772 0.0326879024505615 0.039999999999992 0.039999999999992 0.0 772 -773 0.0326569080352783 0.0300000000000011 0.0300000000000011 0.0 773 -774 0.0326459407806396 0.0300000000000011 0.0300000000000011 0.0 774 -775 0.0321180820465088 0.0300000000000011 0.0300000000000011 0.0 775 -776 0.0343871116638184 0.0400000000000063 0.0400000000000063 0.0 776 -777 0.0758569240570068 0.0799999999999983 0.0799999999999983 0.0 777 -778 0.0349979400634766 0.0300000000000011 0.0300000000000011 0.0 778 -779 0.0329880714416504 0.0300000000000011 0.0300000000000011 0.0 779 -780 0.0330510139465332 0.039999999999992 0.039999999999992 0.0 780 -781 0.0328168869018555 0.0300000000000011 0.0300000000000011 0.0 781 -782 0.0347089767456055 0.0300000000000011 0.0300000000000011 0.0 782 -783 0.0322279930114746 0.0400000000000063 0.0400000000000063 0.0 783 -784 0.0752460956573486 0.0699999999999932 0.0699999999999932 0.0 784 -785 0.0333998203277588 0.0300000000000011 0.0300000000000011 0.0 785 -786 0.0327608585357666 0.0400000000000063 0.0400000000000063 0.0 786 -787 0.032987117767334 0.0300000000000011 0.0300000000000011 0.0 787 -788 0.0328860282897949 0.0299999999999869 0.0299999999999869 0.0 788 -789 0.0421018600463867 0.0500000000000114 0.0500000000000114 0.0 789 -790 0.0354950428009033 0.0300000000000011 0.0300000000000011 0.0 790 -791 0.0326569080352783 0.0299999999999869 0.0299999999999869 0.0 791 -792 0.072484016418457 0.0800000000000125 0.0800000000000125 0.0 792 -793 0.0332272052764893 0.0300000000000011 0.0300000000000011 0.0 793 -794 0.0329101085662842 0.0299999999999869 0.0299999999999869 0.0 794 -795 0.0368521213531494 0.0400000000000063 0.0400000000000063 0.0 795 -796 0.0328860282897949 0.0300000000000011 0.0300000000000011 0.0 796 -797 0.0351109504699707 0.039999999999992 0.039999999999992 0.0 797 -798 0.0322809219360352 0.0300000000000011 0.0300000000000011 0.0 798 -799 0.0317561626434326 0.0300000000000011 0.0300000000000011 0.0 799 -800 0.0744378566741943 0.0799999999999983 0.0799999999999983 0.0 800 -801 0.0369539260864258 0.0300000000000011 0.0300000000000011 0.0 801 -802 0.0338389873504639 0.0400000000000063 0.0400000000000063 0.0 802 -803 0.0353808403015137 0.0300000000000011 0.0300000000000011 0.0 803 -804 0.0346858501434326 0.039999999999992 0.039999999999992 0.0 804 -805 0.0324549674987793 0.0300000000000011 0.0300000000000011 0.0 805 -806 0.0338549613952637 0.0300000000000011 0.0300000000000011 0.0 806 -807 0.0316150188446045 0.0300000000000011 0.0300000000000011 0.0 807 -808 0.0747511386871338 0.0799999999999983 0.0799999999999983 0.0 808 -809 0.0340969562530518 0.0300000000000011 0.0300000000000011 0.0 809 -810 0.0330560207366943 0.0300000000000011 0.0300000000000011 0.0 810 -811 0.0328769683837891 0.0400000000000063 0.0400000000000063 0.0 811 -812 0.0325078964233398 0.0300000000000011 0.0300000000000011 0.0 812 -813 0.0323269367218018 0.0300000000000011 0.0300000000000011 0.0 813 -814 0.0345659255981445 0.039999999999992 0.039999999999992 0.0 814 -815 0.0393409729003906 0.0300000000000011 0.0300000000000011 0.0 815 -816 0.0769538879394531 0.0799999999999983 0.0799999999999983 0.0 816 -817 0.0329430103302002 0.0300000000000011 0.0300000000000011 0.0 817 -818 0.033038854598999 0.0400000000000063 0.0400000000000063 0.0 818 -819 0.0329020023345947 0.0300000000000011 0.0300000000000011 0.0 819 -820 0.0346760749816895 0.0299999999999869 0.0299999999999869 0.0 820 -821 0.0338461399078369 0.0400000000000063 0.0400000000000063 0.0 821 -822 0.0328898429870605 0.0300000000000011 0.0300000000000011 0.0 822 -823 0.0318491458892822 0.0300000000000011 0.0300000000000011 0.0 823 -824 0.0737371444702148 0.0799999999999983 0.0799999999999983 0.0 824 -825 0.032710075378418 0.0300000000000011 0.0300000000000011 0.0 825 -826 0.0330679416656494 0.0300000000000011 0.0300000000000011 0.0 826 -827 0.0366559028625488 0.039999999999992 0.039999999999992 0.0 827 -828 0.0327389240264893 0.0300000000000011 0.0300000000000011 0.0 828 -829 0.0343880653381348 0.0400000000000063 0.0400000000000063 0.0 829 -830 0.0338549613952637 0.0300000000000011 0.0300000000000011 0.0 830 -831 0.0315511226654053 0.0300000000000011 0.0300000000000011 0.0 831 -832 0.0741341114044189 0.0699999999999932 0.0699999999999932 0.0 832 -833 0.0351898670196533 0.0400000000000063 0.0400000000000063 0.0 833 -834 0.0331771373748779 0.0300000000000011 0.0300000000000011 0.0 834 -835 0.0344979763031006 0.039999999999992 0.039999999999992 0.0 835 -836 0.0324339866638184 0.0300000000000011 0.0300000000000011 0.0 836 -837 0.0324251651763916 0.0300000000000011 0.0300000000000011 0.0 837 -838 0.0322468280792236 0.0400000000000063 0.0400000000000063 0.0 838 -839 0.0315029621124268 0.0300000000000011 0.0300000000000011 0.0 839 -840 0.0842621326446533 0.0799999999999983 0.0799999999999983 0.0 840 -841 0.035271167755127 0.039999999999992 0.039999999999992 0.0 841 -842 0.0329780578613281 0.0300000000000011 0.0300000000000011 0.0 842 -843 0.0328261852264404 0.0300000000000011 0.0300000000000011 0.0 843 -844 0.032487154006958 0.0300000000000011 0.0300000000000011 0.0 844 -845 0.0325088500976562 0.0300000000000011 0.0300000000000011 0.0 845 -846 0.0327229499816895 0.0299999999999869 0.0299999999999869 0.0 846 -847 0.0770940780639648 0.0800000000000125 0.0800000000000125 0.0 847 -848 0.0332331657409668 0.0299999999999869 0.0299999999999869 0.0 848 -849 0.0330700874328613 0.0300000000000011 0.0300000000000011 0.0 849 -850 0.0333080291748047 0.0400000000000063 0.0400000000000063 0.0 850 -851 0.0327019691467285 0.0300000000000011 0.0300000000000011 0.0 851 -852 0.0325930118560791 0.0300000000000011 0.0300000000000011 0.0 852 -853 0.0363738536834717 0.039999999999992 0.039999999999992 0.0 853 -854 0.0318160057067871 0.0300000000000011 0.0300000000000011 0.0 854 -855 0.0756251811981201 0.0799999999999983 0.0799999999999983 0.0 855 -856 0.0331168174743652 0.0300000000000011 0.0300000000000011 0.0 856 -857 0.0332381725311279 0.0300000000000011 0.0300000000000011 0.0 857 -858 0.0331380367279053 0.0400000000000063 0.0400000000000063 0.0 858 -859 0.0359609127044678 0.0300000000000011 0.0300000000000011 0.0 859 -860 0.0326030254364014 0.0300000000000011 0.0300000000000011 0.0 860 -861 0.0326559543609619 0.039999999999992 0.039999999999992 0.0 861 -862 0.0313940048217773 0.0300000000000011 0.0300000000000011 0.0 862 -863 0.0721480846405029 0.0700000000000074 0.0700000000000074 0.0 863 -864 0.0329670906066895 0.0300000000000011 0.0300000000000011 0.0 864 -865 0.0358521938323975 0.039999999999992 0.039999999999992 0.0 865 -866 0.0417828559875488 0.0400000000000063 0.0400000000000063 0.0 866 -867 0.0335261821746826 0.039999999999992 0.039999999999992 0.0 867 -868 0.032412052154541 0.0300000000000011 0.0300000000000011 0.0 868 -869 0.0315959453582764 0.0300000000000011 0.0300000000000011 0.0 869 -870 0.0313148498535156 0.0300000000000011 0.0300000000000011 0.0 870 -871 0.0756919384002686 0.0799999999999983 0.0799999999999983 0.0 871 -872 0.033372163772583 0.0300000000000011 0.0300000000000011 0.0 872 -873 0.0342988967895508 0.0300000000000011 0.0300000000000011 0.0 873 -874 0.0328269004821777 0.039999999999992 0.039999999999992 0.0 874 -875 0.0327079296112061 0.0300000000000011 0.0300000000000011 0.0 875 -876 0.0325889587402344 0.0300000000000011 0.0300000000000011 0.0 876 -877 0.0320539474487305 0.0300000000000011 0.0300000000000011 0.0 877 -878 0.0315239429473877 0.0400000000000063 0.0400000000000063 0.0 878 -879 0.0760519504547119 0.0699999999999932 0.0699999999999932 0.0 879 -880 0.0334291458129883 0.0300000000000011 0.0300000000000011 0.0 880 -881 0.0349709987640381 0.0400000000000063 0.0400000000000063 0.0 881 -882 0.0328500270843506 0.0300000000000011 0.0300000000000011 0.0 882 -883 0.0326099395751953 0.0300000000000011 0.0300000000000011 0.0 883 -884 0.0326600074768066 0.039999999999992 0.039999999999992 0.0 884 -885 0.0347640514373779 0.0300000000000011 0.0300000000000011 0.0 885 -886 0.0317268371582031 0.0300000000000011 0.0300000000000011 0.0 886 -887 0.0741100311279297 0.0799999999999983 0.0799999999999983 0.0 887 -888 0.0328361988067627 0.0300000000000011 0.0300000000000011 0.0 888 -889 0.0330181121826172 0.0300000000000011 0.0300000000000011 0.0 889 -890 0.0327560901641846 0.0400000000000063 0.0400000000000063 0.0 890 -891 0.0344109535217285 0.0299999999999869 0.0299999999999869 0.0 891 -892 0.0412158966064453 0.0400000000000063 0.0400000000000063 0.0 892 -893 0.03265380859375 0.0400000000000063 0.0400000000000063 0.0 893 -894 0.0321509838104248 0.0299999999999869 0.0299999999999869 0.0 894 -895 0.0741260051727295 0.0700000000000074 0.0700000000000074 0.0 895 -896 0.0328559875488281 0.0300000000000011 0.0300000000000011 0.0 896 -897 0.0330810546875 0.039999999999992 0.039999999999992 0.0 897 -898 0.0366909503936768 0.0300000000000011 0.0300000000000011 0.0 898 -899 0.0327630043029785 0.0400000000000063 0.0400000000000063 0.0 899 -900 0.0326259136199951 0.0300000000000011 0.0300000000000011 0.0 900 -901 0.031965970993042 0.0300000000000011 0.0300000000000011 0.0 901 -902 0.0730900764465332 0.0699999999999932 0.0699999999999932 0.0 902 -903 0.0331590175628662 0.0400000000000063 0.0400000000000063 0.0 903 -904 0.0365490913391113 0.0300000000000011 0.0300000000000011 0.0 904 -905 0.0330300331115723 0.039999999999992 0.039999999999992 0.0 905 -906 0.0332710742950439 0.0300000000000011 0.0300000000000011 0.0 906 -907 0.0344429016113281 0.0300000000000011 0.0300000000000011 0.0 907 -908 0.032494068145752 0.0400000000000063 0.0400000000000063 0.0 908 -909 0.0318870544433594 0.0300000000000011 0.0300000000000011 0.0 909 -910 0.0748629570007324 0.0699999999999932 0.0699999999999932 0.0 910 -911 0.0334439277648926 0.0400000000000063 0.0400000000000063 0.0 911 -912 0.0351619720458984 0.0300000000000011 0.0300000000000011 0.0 912 -913 0.0328991413116455 0.039999999999992 0.039999999999992 0.0 913 -914 0.0326261520385742 0.0300000000000011 0.0300000000000011 0.0 914 -915 0.0323889255523682 0.0300000000000011 0.0300000000000011 0.0 915 -916 0.0323429107666016 0.0300000000000011 0.0300000000000011 0.0 916 -917 0.0321781635284424 0.039999999999992 0.039999999999992 0.0 917 -918 0.0845181941986084 0.0800000000000125 0.0800000000000125 0.0 918 -919 0.0327539443969727 0.0299999999999869 0.0299999999999869 0.0 919 -920 0.0328059196472168 0.0300000000000011 0.0300000000000011 0.0 920 -921 0.0324711799621582 0.0400000000000063 0.0400000000000063 0.0 921 -922 0.0323400497436523 0.0300000000000011 0.0300000000000011 0.0 922 -923 0.0321018695831299 0.0300000000000011 0.0300000000000011 0.0 923 -924 0.0361039638519287 0.039999999999992 0.039999999999992 0.0 924 -925 0.0316181182861328 0.0300000000000011 0.0300000000000011 0.0 925 -926 0.0748419761657715 0.0700000000000074 0.0700000000000074 0.0 926 -927 0.0332598686218262 0.039999999999992 0.039999999999992 0.0 927 -928 0.0332441329956055 0.0300000000000011 0.0300000000000011 0.0 928 -929 0.0330359935760498 0.0300000000000011 0.0300000000000011 0.0 929 -930 0.0358648300170898 0.0400000000000063 0.0400000000000063 0.0 930 -931 0.0327050685882568 0.0300000000000011 0.0300000000000011 0.0 931 -932 0.0349700450897217 0.039999999999992 0.039999999999992 0.0 932 -933 0.0338780879974365 0.0300000000000011 0.0300000000000011 0.0 933 -934 0.0738511085510254 0.0700000000000074 0.0700000000000074 0.0 934 -935 0.0332021713256836 0.039999999999992 0.039999999999992 0.0 935 -936 0.0359549522399902 0.0300000000000011 0.0300000000000011 0.0 936 -937 0.0331430435180664 0.0400000000000063 0.0400000000000063 0.0 937 -938 0.0340991020202637 0.0300000000000011 0.0300000000000011 0.0 938 -939 0.0326049327850342 0.0299999999999869 0.0299999999999869 0.0 939 -940 0.0325651168823242 0.0400000000000063 0.0400000000000063 0.0 940 -941 0.0317420959472656 0.0300000000000011 0.0300000000000011 0.0 941 -942 0.0775351524353027 0.0799999999999983 0.0799999999999983 0.0 942 -943 0.0417890548706055 0.0400000000000063 0.0400000000000063 0.0 943 -944 0.0358331203460693 0.0300000000000011 0.0300000000000011 0.0 944 -945 0.0328278541564941 0.039999999999992 0.039999999999992 0.0 945 -946 0.0325720310211182 0.0300000000000011 0.0300000000000011 0.0 946 -947 0.0324339866638184 0.0300000000000011 0.0300000000000011 0.0 947 -948 0.0318090915679932 0.0300000000000011 0.0300000000000011 0.0 948 -949 0.0755469799041748 0.0799999999999983 0.0799999999999983 0.0 949 -950 0.0346879959106445 0.0300000000000011 0.0300000000000011 0.0 950 -951 0.0329141616821289 0.039999999999992 0.039999999999992 0.0 951 -952 0.0330381393432617 0.0300000000000011 0.0300000000000011 0.0 952 -953 0.0330090522766113 0.0300000000000011 0.0300000000000011 0.0 953 -954 0.0340299606323242 0.0400000000000063 0.0400000000000063 0.0 954 -955 0.0325748920440674 0.0300000000000011 0.0300000000000011 0.0 955 -956 0.0356650352478027 0.039999999999992 0.039999999999992 0.0 956 -957 0.0749011039733887 0.0700000000000074 0.0700000000000074 0.0 957 -958 0.0347681045532227 0.0300000000000011 0.0300000000000011 0.0 958 -959 0.0330829620361328 0.039999999999992 0.039999999999992 0.0 959 -960 0.0334758758544922 0.0300000000000011 0.0300000000000011 0.0 960 -961 0.0329201221466064 0.0300000000000011 0.0300000000000011 0.0 961 -962 0.0358650684356689 0.0400000000000063 0.0400000000000063 0.0 962 -963 0.0327301025390625 0.0300000000000011 0.0300000000000011 0.0 963 -964 0.03354811668396 0.039999999999992 0.039999999999992 0.0 964 -965 0.0745160579681396 0.0700000000000074 0.0700000000000074 0.0 965 -966 0.0329270362854004 0.0300000000000011 0.0300000000000011 0.0 966 -967 0.0329809188842773 0.039999999999992 0.039999999999992 0.0 967 -968 0.0393757820129395 0.0300000000000011 0.0300000000000011 0.0 968 -969 0.0380401611328125 0.0300000000000011 0.0300000000000011 0.0 969 -970 0.0357730388641357 0.039999999999992 0.039999999999992 0.0 970 -971 0.0322329998016357 0.0300000000000011 0.0300000000000011 0.0 971 -972 0.0315341949462891 0.0300000000000011 0.0300000000000011 0.0 972 -973 0.0736370086669922 0.0799999999999983 0.0799999999999983 0.0 973 -974 0.0357208251953125 0.0300000000000011 0.0300000000000011 0.0 974 -975 0.0331871509552002 0.0400000000000063 0.0400000000000063 0.0 975 -976 0.0338621139526367 0.0300000000000011 0.0300000000000011 0.0 976 -977 0.03261399269104 0.0299999999999869 0.0299999999999869 0.0 977 -978 0.0324549674987793 0.0300000000000011 0.0300000000000011 0.0 978 -979 0.0323319435119629 0.0400000000000063 0.0400000000000063 0.0 979 -980 0.0314400196075439 0.0300000000000011 0.0300000000000011 0.0 980 -981 0.0762598514556885 0.0699999999999932 0.0699999999999932 0.0 981 -982 0.0347981452941895 0.0400000000000063 0.0400000000000063 0.0 982 -983 0.0366230010986328 0.0400000000000063 0.0300000000000011 0.01 983 -984 0.0328900814056396 0.039999999999992 0.039999999999992 0.0 984 -985 0.032588005065918 0.0300000000000011 0.0300000000000011 0.0 985 -986 0.0326781272888184 0.0300000000000011 0.0300000000000011 0.0 986 -987 0.0319411754608154 0.0300000000000011 0.0300000000000011 0.0 987 -988 0.0342800617218018 0.0400000000000063 0.0400000000000063 0.0 988 -989 0.0760009288787842 0.0699999999999932 0.0699999999999932 0.0 989 -990 0.0328078269958496 0.0400000000000063 0.0400000000000063 0.0 990 -991 0.0330369472503662 0.0300000000000011 0.0300000000000011 0.0 991 -992 0.0326659679412842 0.0300000000000011 0.0300000000000011 0.0 992 -993 0.0325169563293457 0.0300000000000011 0.0300000000000011 0.0 993 -994 0.0384469032287598 0.039999999999992 0.039999999999992 0.0 994 -995 0.035956859588623 0.0400000000000063 0.0400000000000063 0.0 995 -996 0.075498104095459 0.0699999999999932 0.0699999999999932 0.0 996 -997 0.0330910682678223 0.0300000000000011 0.0300000000000011 0.0 997 -998 0.0327069759368896 0.0300000000000011 0.0300000000000011 0.0 998 -999 0.0329201221466064 0.0300000000000011 0.0300000000000011 0.0 999 -1000 0.0352790355682373 0.039999999999992 0.039999999999992 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log deleted file mode 100644 index f349db14..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkRails.log +++ /dev/null @@ -1,82 +0,0 @@ -========================== 2009-04-01T16:46:56 CEST =========================== -Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux]. -Running 'ParserBenchmarkRails' for 1000 iterations/method (compare_time=real) -=============================================================================== - -This first run is only for warmup. -ParserBenchmarkRails#parser: - real total user system -sum 38.690086126 38.620000000 38.610000000 0.010000000 -min 0.031255007 0.030000000 0.030000000 0.000000000 -std- 0.025022178 0.024277709 0.024265187 -0.000306228 -mean 0.038690086 0.038620000 0.038610000 0.000010000 -std+ 0.052357994 0.052962291 0.052954813 0.000326228 -max 0.083594084 0.090000000 0.090000000 0.010000000 -std 0.013667908 0.014342291 0.014344813 0.000316228 -std% 35.326641197 37.136951469 37.153104057 3162.277660168 -harm 0.035964441 0.035345750 0.035335342 nan -geo 0.037048388 0.036703287 0.036692729 0.000000000 -q1 0.032610178 0.030000000 0.030000000 0.000000000 -med 0.033129930 0.030000000 0.030000000 0.000000000 -q3 0.035388470 0.040000000 0.040000000 0.000000000 - 1000 25.84641 0.038690086 - calls calls/sec secs/call - - 0.08098 -|* - 0.07574 -|***** - 0.07051 -|** - 0.06528 -| - 0.06004 -| - 0.05481 -| - 0.04957 -| - 0.04434 -|* - 0.03911 -|*** - 0.03387 -|************************************************** - -Outliers detected with box plot algo (median=0.03313, iqr=0.00278, factor=3.00): -high=47 very_high=124 - -Ljung-Box statistics: q=5276.52020 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -ParserBenchmarkRails#parser: - real total user system -sum 38.814780235 38.730000000 38.710000000 0.020000000 -min 0.031314850 0.030000000 0.030000000 0.000000000 -std- 0.024801114 0.023975177 0.023956914 -0.000426990 -mean 0.038814780 0.038730000 0.038710000 0.000020000 -std+ 0.052828447 0.053484823 0.053463086 0.000466990 -max 0.085337162 0.090000000 0.090000000 0.010000000 -std 0.014013666 0.014754823 0.014753086 0.000446990 -std% 36.103943796 38.096625621 38.111821850 2234.948544149 -harm 0.035975867 0.035320781 0.035304155 nan -geo 0.037101026 0.036725170 0.036706415 0.000000000 -q1 0.032611191 0.030000000 0.030000000 0.000000000 -med 0.033082008 0.030000000 0.030000000 0.000000000 -q3 0.035308182 0.040000000 0.040000000 0.000000000 - 1000 25.76338 0.038814780 - calls calls/sec secs/call - - 0.08264 -|* - 0.07723 -|*** - 0.07183 -|**** - 0.06643 -| - 0.06103 -| - 0.05562 -| - 0.05022 -| - 0.04482 -| - 0.03942 -|** - 0.03402 -|************************************************** - -Outliers detected with box plot algo (median=0.03308, iqr=0.00270, factor=3.00): -high=43 very_high=127 - -Ljung-Box statistics: q=3451.96535 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -========================== 2009-04-01T16:48:17 CEST =========================== - -Writing measurement data file '/data/scm/json/benchmarks/data/ParserBenchmarkRails#parser.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/ParserBenchmarkRails#parser-autocorrelation.dat'. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat deleted file mode 100644 index f32d17f6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser-autocorrelation.dat +++ /dev/null @@ -1,1000 +0,0 @@ -#lag autocorrelation -1 1.0 -2 -0.0162844496545126 -3 -0.0217599649154442 -4 -0.0158858309903125 -5 -0.0200808613960338 -6 -0.0259529053941171 -7 -0.0301975414696179 -8 -0.0250675870796551 -9 -0.0285985946623563 -10 -0.0307680893851068 -11 -0.0288265198488383 -12 -0.0271571829024007 -13 -0.0301250298936937 -14 -0.0226181132137933 -15 -0.0294060805772707 -16 -0.0337045155176462 -17 -0.0318194303001094 -18 -0.0292065217707409 -19 -0.0302440574139168 -20 -0.0358556403201638 -21 -0.0277391993235684 -22 -0.0302464277108834 -23 -0.0324555396059655 -24 -0.0281812881852202 -25 -0.022546962678309 -26 -0.0303404504420409 -27 -0.0284646539775073 -28 -0.028171618962038 -29 -0.028565092958004 -30 -0.0291690975621738 -31 -0.0281712395665202 -32 -0.0238379726807203 -33 -0.0294236975427878 -34 -0.0208882165043777 -35 -0.0209638384059497 -36 -0.0161683101478742 -37 -0.0198997973165107 -38 0.435257874984686 -39 0.458604874110641 -40 0.0237621756843474 -41 -0.0234662943892799 -42 -0.0132052112478708 -43 -0.0232550385773748 -44 -0.0265177529080711 -45 -0.0295042353148468 -46 -0.0248888514316335 -47 -0.0267548816775851 -48 -0.0301945196949619 -49 -0.0256866572019894 -50 -0.0261353739728522 -51 -0.0245073925246022 -52 -0.0267569882760944 -53 -0.0290607941928704 -54 -0.030612533159521 -55 -0.0324276179436348 -56 -0.0294828176269951 -57 -0.0302074451537584 -58 -0.0308924549200688 -59 -0.0272193925170758 -60 -0.0310943839021242 -61 -0.0282313865089381 -62 -0.0273610010809688 -63 -0.0250425898280312 -64 -0.0269825367863249 -65 -0.030293343792881 -66 -0.0285829676042798 -67 -0.0259669504450748 -68 -0.028423496235617 -69 -0.0286177493293173 -70 -0.0239113501418138 -71 -0.0226730211754719 -72 -0.0216274261753708 -73 -0.0175668930237053 -74 -0.016987706219544 -75 0.281860410751591 -76 0.25297384526533 -77 0.306701827698567 -78 0.0194414665764478 -79 -0.0243796783451221 -80 -0.0146952129609066 -81 -0.0229107323358625 -82 -0.02476592170182 -83 -0.0262150166126129 -84 -0.0233100425521956 -85 -0.0263455380004048 -86 -0.0253912832942502 -87 -0.0245622723440493 -88 -0.0225180917608497 -89 -0.0292400873158552 -90 -0.0255215645749941 -91 -0.02586826799364 -92 -0.0315849501291156 -93 -0.0319172083894574 -94 -0.0270097346640797 -95 -0.0278372423315524 -96 -0.0306627817548168 -97 -0.0258127345919013 -98 -0.0256340599415291 -99 -0.0270400681439884 -100 -0.0271863267200993 -101 -0.0223938908865392 -102 -0.0269881932444538 -103 -0.0286873034752439 -104 -0.0268085508356207 -105 -0.0250531313567446 -106 -0.0272655637793525 -107 -0.025337879180265 -108 -0.0187629329024022 -109 -0.0223207452723449 -110 -0.0185411706942619 -111 -0.0173591745979572 -112 0.212695002726406 -113 0.176100874201248 -114 0.181136796368959 -115 0.217985852640763 -116 0.0189775496631967 -117 -0.022070943088181 -118 -0.0198858953377023 -119 -0.0228614172431068 -120 -0.0222026156678026 -121 -0.026520195666479 -122 -0.0234557540286227 -123 -0.0222031583717324 -124 -0.0222512221835737 -125 -0.021957746397543 -126 -0.0268087376735115 -127 -0.0273093034119188 -128 -0.0245103124601919 -129 -0.0263347996406397 -130 -0.0312278911250281 -131 -0.0305253475957555 -132 -0.0261963547332742 -133 -0.0274617303870749 -134 -0.0243124109128202 -135 -0.0262235240356464 -136 -0.0239085429783869 -137 -0.0287564527494295 -138 -0.0249876754449911 -139 -0.0197254570216898 -140 -0.0266321665979349 -141 -0.0266120249498159 -142 -0.0248056589461695 -143 -0.0221257923724317 -144 -0.024933311620115 -145 -0.0196549868192828 -146 -0.0207328295283175 -147 -0.0200920805093202 -148 -0.0173063409154936 -149 0.175654369820573 -150 0.0996760311141833 -151 0.142600408151497 -152 0.175452601030937 -153 0.135092911757026 -154 0.015666937752102 -155 -0.0206532136473774 -156 -0.0225660207506427 -157 -0.0220914796170182 -158 -0.0212748341146881 -159 -0.0211831500010699 -160 -0.0199475712567065 -161 -0.0198090360921562 -162 -0.023406680899725 -163 -0.0238338433694836 -164 -0.0256046135139069 -165 -0.0242954498172123 -166 -0.0258660266004111 -167 -0.0269522804569596 -168 -0.0297189079034543 -169 -0.0286038809350082 -170 -0.0243084923873978 -171 -0.0257061323195295 -172 -0.0223670193406507 -173 -0.0230581197957092 -174 -0.0259009025367238 -175 -0.0257560518519552 -176 -0.023090387902458 -177 -0.0203272749388722 -178 -0.0249609826618749 -179 -0.0273749728570153 -180 -0.0232630581935224 -181 -0.0184293362184845 -182 -0.0227584354744901 -183 -0.0189661792281422 -184 -0.0231761259199879 -185 -0.0160634507453316 -186 0.135019288045276 -187 0.0659826079670161 -188 0.135226742645858 -189 0.0605819921567246 -190 0.212733971580529 -191 0.0594662500140067 -192 0.0196656779913871 -193 -0.0198404313214719 -194 -0.0234794798625044 -195 -0.020228110441232 -196 -0.0239711309581977 -197 -0.0213996457420545 -198 -0.0198198390682184 -199 -0.01837620236681 -200 -0.0252904949340885 -201 -0.0209512502626924 -202 -0.0221289412896572 -203 -0.027427908823154 -204 -0.0239458508129429 -205 -0.0247739743326578 -206 -0.0286549975885985 -207 -0.0274257626339078 -208 -0.0209339353182737 -209 -0.0217393583916566 -210 -0.0210676960785699 -211 -0.0244413756252707 -212 -0.0230553337146913 -213 -0.0249257698225569 -214 -0.0209961742884786 -215 -0.0187589223013789 -216 -0.0231441227112562 -217 -0.0256128148841961 -218 -0.0189996873737005 -219 -0.0186032704051841 -220 -0.024896664851184 -221 -0.0154586003532082 -222 -0.016622451190913 -223 0.10528876877612 -224 0.0616792976302413 -225 0.105381487366677 -226 0.0698781422585297 -227 0.0526859362556473 -228 0.252676201792791 -229 -0.0158777502042575 -230 0.0182465167560402 -231 -0.0189176416281867 -232 -0.0223947199370044 -233 -0.0187514827185257 -234 -0.0221421724471967 -235 -0.0189743029127782 -236 -0.0169132380201002 -237 -0.0244680755831848 -238 -0.0218734587520481 -239 -0.0186581914256442 -240 -0.026130481429307 -241 -0.0259336502285975 -242 -0.0243902837001253 -243 -0.0237554283001736 -244 -0.0260009623695832 -245 -0.0207407789914843 -246 -0.0195359028544637 -247 -0.0255947955165555 -248 -0.0192742650096326 -249 -0.02317092217707 -250 -0.0220804794353722 -251 -0.0231629589394634 -252 -0.01815715732966 -253 -0.0168380962328354 -254 -0.0240542649472067 -255 -0.0203501818767696 -256 -0.0171903409693322 -257 -0.0223563828072372 -258 -0.019940801207438 -259 -0.0169291109293721 -260 0.0608679690137956 -261 0.0647081802938391 -262 0.100717554509044 -263 0.0239520468414546 -264 0.0698991274638046 -265 0.0905559637290508 -266 0.178937593759438 -267 0.0219556620146547 -268 -0.0179147413001344 -269 -0.0178917963661612 -270 -0.0182758940871145 -271 -0.0193697306175885 -272 -0.0204671858114412 -273 -0.0171408579409368 -274 -0.0182409872271859 -275 -0.0211824035120345 -276 -0.0235000843866101 -277 -0.0202924958876639 -278 -0.0248505379989764 -279 -0.0220226888126351 -280 -0.0245762806223724 -281 -0.0252042782672907 -282 -0.0216801171879857 -283 -0.0210832689857307 -284 -0.0192213765705103 -285 -0.0220158312276208 -286 -0.0210439300781706 -287 -0.0209875936956392 -288 -0.0206630619760563 -289 -0.0216178400849402 -290 -0.0196909009290242 -291 -0.0174466524982222 -292 -0.0194381489522717 -293 -0.0214825111756293 -294 -0.0174953699462574 -295 -0.022683312446492 -296 -0.0180848133159409 -297 0.0254210486852796 -298 0.0654897828406648 -299 0.0986617374019184 -300 0.0211653698985848 -301 0.03519273754644 -302 0.0994229074199349 -303 0.0569927637089909 -304 0.144208154176788 -305 0.025634547369068 -306 -0.0192573217261146 -307 -0.0134291320771703 -308 -0.0186225883596377 -309 -0.0192924485153545 -310 -0.0212788468915268 -311 -0.0142437809504701 -312 -0.0164846225770394 -313 -0.0230149302918458 -314 -0.0226862925961795 -315 -0.0182027935965825 -316 -0.0223705185857763 -317 -0.0216288175818581 -318 -0.023788812144948 -319 -0.0211845254108688 -320 -0.0222450219207216 -321 -0.0187600056472826 -322 -0.0187902396176198 -323 -0.0195634679662719 -324 -0.0194501685935753 -325 -0.0190333705450752 -326 -0.0204687388385914 -327 -0.0200297119812042 -328 -0.0157733409782519 -329 -0.0164084747060388 -330 -0.0203726921633815 -331 -0.0190072727071644 -332 -0.018178093048503 -333 -0.0159556448940802 -334 -0.013791115173629 -335 0.066803434121925 -336 0.0987477853719105 -337 0.0244839447881098 -338 0.031202350625353 -339 0.0196479023204289 -340 0.141228694216934 -341 0.0175097275718119 -342 0.105954014939689 -343 0.0253759965520281 -344 -0.0116344384079018 -345 -0.0169720879403278 -346 -0.0193914989969224 -347 -0.019089553717436 -348 -0.0156466666300242 -349 -0.0156456435188142 -350 -0.0181150256079739 -351 -0.0223467109479219 -352 -0.0214801527438239 -353 -0.019082414276624 -354 -0.0178557951992504 -355 -0.0228090603341919 -356 -0.0204157042896649 -357 -0.0221410379160091 -358 -0.0199425390855694 -359 -0.018118375890382 -360 -0.0150454629858717 -361 -0.0183129793049915 -362 -0.0204645202101881 -363 -0.0174866608721183 -364 -0.0154096032136416 -365 -0.0179571796427601 -366 -0.0134888272478049 -367 -0.0176851479177383 -368 -0.0193002648975602 -369 -0.0189078544862062 -370 -0.0144320773947494 -371 -0.011260111407965 -372 0.0215572902035114 -373 0.100524914108148 -374 0.0219084872557524 -375 0.0354856193633486 -376 0.0229331908137013 -377 0.0626022532746132 -378 0.0969282134458387 -379 0.0189295482330605 -380 0.0617228180411101 -381 0.0425011894350961 -382 -0.0181588301030469 -383 -0.0171392718695313 -384 -0.0178324205119472 -385 -0.0156705733083666 -386 -0.0146663905947814 -387 -0.0173238224981501 -388 -0.0182073556277454 -389 -0.0204929470007114 -390 -0.0197959652809142 -391 -0.0178487074910014 -392 -0.0191264027449998 -393 -0.0190642154579731 -394 -0.0203166425576961 -395 -0.0188935352488649 -396 -0.0201224460748975 -397 -0.0141844683481906 -398 -0.0139898462786534 -399 -0.0198574924165857 -400 -0.0193966985699962 -401 -0.0164995946916847 -402 -0.0117403653932513 -403 -0.0158736541749091 -404 -0.0156974457240632 -405 -0.0181167763150603 -406 -0.0166788566307347 -407 -0.0180975807807039 -408 -0.0102853501517902 -409 -0.0153437162204268 -410 0.0979710078754703 -411 0.021440871598228 -412 0.0371454198455733 -413 0.0253571102027273 -414 0.0227276443059152 -415 0.101915236805497 -416 0.0635405858848997 -417 0.0221661378891733 -418 0.0270996559475876 -419 0.0299928379379863 -420 -0.0177873081118276 -421 -0.0176051191151391 -422 -0.0117281303593379 -423 -0.013306366759538 -424 -0.0189331445465995 -425 -0.015865418271051 -426 -0.0158088029122447 -427 -0.0187419731224742 -428 -0.0196315339939659 -429 -0.0154861746215526 -430 -0.0178360876528894 -431 -0.0193319397318428 -432 -0.0177297199409179 -433 -0.0183554889687674 -434 -0.0184208823533688 -435 -0.0122396577357641 -436 -0.0123492917667745 -437 -0.0175439953526604 -438 -0.0186111019818843 -439 -0.00971961709959576 -440 -0.0143165389296264 -441 -0.0164005922843576 -442 -0.0132806214338558 -443 -0.0153897804907211 -444 -0.0149226610955752 -445 -0.0161580725559834 -446 -0.0117152404534544 -447 0.0615441203316674 -448 0.0305601601558433 -449 0.0350768852591798 -450 0.026542742159402 -451 0.0220127678478309 -452 0.0626392669570081 -453 0.0651304401691263 -454 0.066454641622587 -455 0.0262150734837409 -456 -0.00708907991883236 -457 0.0224899268420003 -458 -0.0167773922489159 -459 -0.0122552342075114 -460 -0.00995490362784316 -461 -0.0177867736928084 -462 -0.018356900570592 -463 -0.0148615016520588 -464 -0.0148993799153167 -465 -0.0174924308469937 -466 -0.0139062884527871 -467 -0.0169155699762039 -468 -0.0176151358623509 -469 -0.018529629596926 -470 -0.0171234732753041 -471 -0.0168099527879603 -472 -0.0156260281448611 -473 -0.00797509847063728 -474 -0.0133340343499158 -475 -0.0168972023036313 -476 -0.0113479057717735 -477 -0.011961189414667 -478 -0.0152906312825423 -479 -0.0155644967932215 -480 -0.014521215308577 -481 -0.0128622749529332 -482 -0.0141888481401611 -483 -0.0161851374362205 -484 0.0249171103679042 -485 0.0252660269585891 -486 0.04058752667661 -487 0.0258186659046098 -488 0.0275225862715478 -489 0.0600609383170762 -490 0.0261628314767615 -491 0.0691832852264942 -492 0.0694273292329222 -493 -0.0138918138869676 -494 0.0281497919118445 -495 -0.0119297582637103 -496 -0.012445722104394 -497 -0.0152365517205078 -498 -0.0119682770076481 -499 -0.0168102415511826 -500 -0.0132602321806542 -501 -0.0162749170085761 -502 -0.0157874247447598 -503 -0.0143314681097962 -504 -0.0151373301279301 -505 -0.0162736515060562 -506 -0.0170997245763158 -507 -0.0169869002644868 -508 -0.0154802036412146 -509 -0.013854038240204 -510 -0.0151485070183504 -511 -0.00869753773999478 -512 -0.0140737135993086 -513 -0.0107650436900842 -514 -0.0132962323606625 -515 -0.0136429601231209 -516 -0.0155057052143115 -517 -0.0134332443796962 -518 -0.0123129109820222 -519 -0.0142180018449239 -520 -0.0150177576005828 -521 -0.0161252950528183 -522 0.0264250568660815 -523 0.0408783547796429 -524 0.031194610084782 -525 0.0288728641454938 -526 0.0641676357746677 -527 0.0239853005273055 -528 0.0300072680816552 -529 0.0736945294998491 -530 0.028012956538805 -531 0.0259732719006342 -532 -0.00990928630211568 -533 -0.0087387605842169 -534 -0.0137746654626445 -535 -0.0141412876283256 -536 -0.010029400862279 -537 -0.0150007749725246 -538 -0.0121537714685441 -539 -0.0144839491934252 -540 -0.0137950679588151 -541 -0.0155551392121605 -542 -0.0128911409577839 -543 -0.0152961676840741 -544 -0.0161369826243907 -545 -0.0148527760929147 -546 -0.013870773562618 -547 -0.0137226194734097 -548 -0.0113656379568685 -549 -0.00845176980813718 -550 -0.00933414448879775 -551 -0.0133281147011412 -552 -0.0122165348746803 -553 -0.0127303042014063 -554 -0.0128365256419083 -555 -0.0108554430140539 -556 -0.0130979026563391 -557 -0.0146601295923265 -558 -0.0142350683827201 -559 -0.0142543119821695 -560 0.0401428501979482 -561 0.0303680401593431 -562 0.0331394093682309 -563 0.0624790224369076 -564 0.0289179010523467 -565 0.0269736807010873 -566 0.0294760499995686 -567 0.0747760714226703 -568 -0.00997931599998069 -569 0.0266265362948006 -570 -0.00721129513546175 -571 -0.0127302032302545 -572 -0.0136267162889966 -573 -0.0142066353702017 -574 -0.00991164196188114 -575 -0.00996166830564141 -576 -0.0131573176468314 -577 -0.011434640474236 -578 -0.0148706383443339 -579 -0.0134129396964773 -580 -0.0113895405779604 -581 -0.0153189154780471 -582 -0.0150199426352393 -583 -0.0124159111813235 -584 -0.0113435779166304 -585 -0.00971798266945597 -586 -0.0123095479872052 -587 -0.00269803517441434 -588 -0.0127678761964892 -589 -0.0119102487047385 -590 -0.0115043060345689 -591 -0.0106658386617928 -592 -0.0106600448522206 -593 -0.011659738958058 -594 -0.01106663155357 -595 -0.0120386853981255 -596 -0.0127481791971609 -597 -0.00537363830084228 -598 0.0314689202072348 -599 0.032654353162099 -600 0.0639978451412954 -601 0.0283236694256126 -602 0.0317693531084274 -603 0.027542761382292 -604 0.02698217718116 -605 0.0361622659750207 -606 0.0320247155873757 -607 -0.00813391858463189 -608 -0.0089593887672382 -609 -0.0119010871906848 -610 -0.0124880990128273 -611 -0.0121364351320394 -612 -0.00971670182824936 -613 -0.0102177605462013 -614 -0.00898879705064074 -615 -0.013228009191572 -616 -0.012444080731119 -617 -0.0125819657984578 -618 -0.0106457926520048 -619 -0.0137483281342092 -620 -0.0135504808411789 -621 -0.0114612446080959 -622 -0.00821287310238534 -623 -0.0104378096847016 -624 -0.00593940096538122 -625 -0.00945814044610632 -626 -0.0101588782962685 -627 -0.0111243964828339 -628 -0.00950644868084363 -629 -0.00843830240019815 -630 -0.0122240327224205 -631 -0.0121911767968013 -632 -0.0106320087647656 -633 -0.0091538953720945 -634 -0.00833412226908421 -635 -0.00479924172227301 -636 0.0335905043465549 -637 0.0695170041831408 -638 0.0270790255635657 -639 0.0321106733648098 -640 0.0313560382377176 -641 0.0282951882582407 -642 0.0286246187371558 -643 -0.0063978013638528 -644 0.0304346790629898 -645 -0.0101048058759809 -646 -0.00730849974907403 -647 -0.010438994695384 -648 -0.0112449830718235 -649 -0.0113664024129399 -650 -0.00608318090180963 -651 -0.00840928737010642 -652 -0.0108644455614179 -653 -0.010794161792753 -654 -0.0114845408302525 -655 -0.0109919991005556 -656 -0.00951218627321188 -657 -0.0117973727840752 -658 -0.0116097431098058 -659 -0.00670996120713619 -660 -0.0087566923862707 -661 -0.00768893771119313 -662 -0.00792227368859181 -663 -0.0072108108823534 -664 -0.00863418502611649 -665 -0.00848535095588438 -666 -0.00750079906528092 -667 -0.00902829779223548 -668 -0.0104029286615084 -669 -0.00972615613411735 -670 -0.00909686229570264 -671 -0.00489514770930345 -672 -0.00695727933803365 -673 -0.00291923866250643 -674 0.0692585752006358 -675 0.0338324022772704 -676 0.0312432314045003 -677 0.0301206988202449 -678 0.0318944076704347 -679 0.0308282822415121 -680 -0.00918999100874598 -681 0.0315959820198552 -682 -0.00790274938593563 -683 -0.00905781884326524 -684 -0.00978094259623583 -685 -0.00713889275972127 -686 -0.00961735482798763 -687 -0.00462928907883874 -688 -0.00708992015115961 -689 -0.0103894616795413 -690 -0.00975021468154266 -691 -0.0104107842274988 -692 -0.00992064479267111 -693 -0.0101176695314485 -694 -0.0104463991054629 -695 -0.00746960217815067 -696 -0.00654218027790495 -697 -0.0072389149982618 -698 -0.00618599001631964 -699 -0.00987786436517789 -700 -0.00673370918278097 -701 -0.00741759762031304 -702 -0.00541549527991575 -703 -0.00791781857083014 -704 -0.00787381692952382 -705 -0.00794395001729855 -706 -0.00931768673974245 -707 -0.00885678465821695 -708 -0.0052821815238511 -709 -0.00521693921004783 -710 -0.00576093393541424 -711 0.0319052243530813 -712 0.0335565990727355 -713 0.0359823614765673 -714 0.0310776016839443 -715 0.0324813323954347 -716 0.0341278653693179 -717 -0.00771207564784067 -718 0.0276493611582263 -719 -0.00348763960636761 -720 -0.00758712167000528 -721 -0.00857064851604708 -722 -0.00851623359127258 -723 -0.00860306547563313 -724 -0.00613401688706074 -725 -0.00513329277378087 -726 -0.00905815149013341 -727 -0.00906250727280879 -728 -0.00928036762666381 -729 -0.00830114918655625 -730 -0.00888782794632727 -731 -0.00904256610543205 -732 -0.00874136315610037 -733 -0.00531018786452449 -734 -0.00629165130613466 -735 -0.00755517067228936 -736 -0.00836182239325517 -737 -0.00809350876481861 -738 -0.00404124535306633 -739 -0.00561644195626163 -740 -0.00642305805867293 -741 -0.00816305467996883 -742 -0.00843581049472936 -743 -0.00672325206596123 -744 -0.00617215358093702 -745 -0.00402751925690743 -746 -0.00479725155053775 -747 -0.00342071760962384 -748 -0.0076001254677333 -749 0.0344911275393927 -750 0.0357890953530814 -751 0.0369236838641285 -752 0.0337953594669526 -753 0.0341196656886643 -754 -0.00659802662549373 -755 0.0315371138736742 -756 -0.00562959157006591 -757 -0.00365306265936607 -758 -0.00637937791804702 -759 -0.00728163692006943 -760 -0.00728167255033979 -761 -0.00486863763712198 -762 -0.00700194438994883 -763 -0.00488445712486066 -764 -0.00785107429883577 -765 -0.00743663889427734 -766 -0.0075555414143233 -767 -0.0082175974779749 -768 -0.00762712314452127 -769 -0.00716801816399294 -770 -0.00420432905589099 -771 -0.00646377431872973 -772 -0.00627655191972345 -773 -0.0068281800863105 -774 -0.00646314628967681 -775 -0.00545387418053753 -776 -0.00272565261231244 -777 -0.00644191975512085 -778 -0.00690509982226062 -779 -0.00709925853315763 -780 -0.00694005333594523 -781 -0.00625875545170498 -782 -0.00292200977585102 -783 -0.00321016024715532 -784 -0.00336849507857711 -785 -0.00596633161271771 -786 -0.00616166058124168 -787 0.03411477548233 -788 0.03523911486873 -789 0.039313174460712 -790 0.0358510918513492 -791 -0.00378913539308921 -792 0.0304194265074042 -793 -0.0038004308918757 -794 -0.00607189262016905 -795 -0.00587612619804128 -796 -0.00189219359140836 -797 -0.00616375618998826 -798 -0.00388685360401677 -799 -0.00556254294258616 -800 -0.00661778351426878 -801 -0.00382440352172051 -802 -0.00647820073687594 -803 -0.00624655145167987 -804 -0.00667068925870065 -805 -0.00648578196572712 -806 -0.0051558107815927 -807 -0.00231291615968645 -808 -0.00505615473087768 -809 -0.00587295803700975 -810 -0.00558124863643099 -811 -0.00536491992472214 -812 -0.00398836838292933 -813 -0.00377202632549738 -814 -0.002354118299516 -815 -0.00450512819274966 -816 -0.0052767354763421 -817 -0.00524186198269607 -818 -0.00538929450465706 -819 -0.00531625688326681 -820 -0.00559074601189695 -821 -0.00531052145605409 -822 -0.00506016636387018 -823 -0.00558340516310152 -824 -0.00480493075033995 -825 0.0322805865937449 -826 0.0378874582814526 -827 0.0388905020209905 -828 0.00140630493053477 -829 0.0327652229435057 -830 -0.00223687990639532 -831 -0.00415072629779562 -832 -0.00449816632891999 -833 -0.00471900257056604 -834 -0.00380655567933039 -835 -0.00208013080352473 -836 -0.00399065266148802 -837 -0.00487092683399181 -838 -0.0050959015942598 -839 -0.00191592007441914 -840 -0.00461100733700934 -841 -0.00502472638398927 -842 -0.00505288732904903 -843 -0.00438730255591126 -844 -0.00306177948534003 -845 -0.00375916415653544 -846 -0.00446006819331235 -847 -0.00529861753336898 -848 -0.00366324407821308 -849 -0.00260207768467577 -850 -0.00307568973842944 -851 -0.00423298618954815 -852 -0.00402026548184328 -853 -0.00146181843080695 -854 -0.00349341567107831 -855 -0.00433554634082064 -856 -0.00410204223433599 -857 -0.00434967848256952 -858 -0.00421703547450881 -859 -0.00382881572564153 -860 -0.00423970806851707 -861 -0.00437449172653197 -862 -0.00400502122442197 -863 0.0346819215614161 -864 0.0348750856830455 -865 -0.00265543722265669 -866 0.0380644512814575 -867 -5.14244684871617e-05 -868 -0.0029850292925082 -869 -0.00280199446175912 -870 -0.00310596389994767 -871 -0.00343511488292023 -872 -0.000171378148703489 -873 -0.0024459240224584 -874 -0.00327675207097342 -875 -0.00348581260906698 -876 -0.00355868259309655 -877 -0.000312461719204031 -878 -0.00355336474543735 -879 -0.00357392139745643 -880 -0.00290172241076185 -881 -0.00208381746845654 -882 -0.00191420039525358 -883 -0.00288084255403359 -884 -0.00402165110428679 -885 -0.00363823711845451 -886 -0.00105719975984341 -887 -0.00194304900141352 -888 -0.0028117193732005 -889 -0.00272354659953838 -890 -0.00269119684418979 -891 -0.0024739833326293 -892 -0.00264720107421195 -893 -0.00266281337322763 -894 -0.00271486287490391 -895 -0.0025966883492992 -896 -0.00275998355842941 -897 -0.00285830804400797 -898 -0.00283220277180079 -899 -0.00268773055778214 -900 -0.00284073923200707 -901 0.0353145424004993 -902 -0.00160304708129049 -903 0.0348425254145825 -904 2.8677502125498e-05 -905 0.000437164769156674 -906 -0.000353406460783275 -907 -0.00195469155311098 -908 -0.00181504012345376 -909 0.000213017105712491 -910 -0.001310254306005 -911 -0.00211504011023419 -912 -0.00220453472901432 -913 -0.00221445718259423 -914 -0.0019385529058544 -915 -0.00242106879847995 -916 0.000515093602106525 -917 -0.00157522783064606 -918 -0.000809182215147043 -919 -0.00125292469032103 -920 -0.00240883966759777 -921 -0.0021786367875747 -922 -0.00240937489397921 -923 -0.00116795158553355 -924 -0.000727426386542781 -925 -0.00133194403721344 -926 -0.00124546108708765 -927 -0.00148107783605636 -928 -0.00142616980555449 -929 -0.00146243841366756 -930 -0.0015283737803334 -931 -0.00154540562504725 -932 -0.00155805559628689 -933 -0.00151938623493131 -934 -0.00165541232298659 -935 -0.00168144891364875 -936 -0.00132559687940882 -937 -0.00160394278309398 -938 -0.0017363807642805 -939 -0.00167995411949275 -940 0.0354478346047755 -941 0.00106969481951657 -942 -0.000561313854486038 -943 -0.000457998303574142 -944 -0.000583885106294125 -945 -0.000525159904309248 -946 -0.000517315333414318 -947 -0.000721221933781515 -948 -0.000829549124890304 -949 -8.82882583545919e-05 -950 -0.000766770294365053 -951 -0.000811881521540676 -952 -0.000891788154480318 -953 -0.000934560208414364 -954 -0.00079422177360351 -955 -0.000838129010273254 -956 -0.000963325512884482 -957 -0.00102235934683932 -958 -0.00106440392780229 -959 -0.000989883649450528 -960 0.000386274557612681 -961 -0.000389777489444674 -962 -0.00118692846255399 -963 -5.09408200005586e-06 -964 -5.89078730563787e-05 -965 -1.47060551334381e-05 -966 -0.000136166417132319 -967 -0.000121512032975118 -968 -0.00017156987502174 -969 -0.000156708081095913 -970 -0.000153840321519638 -971 -0.000310390758729453 -972 -0.000312404884024801 -973 -0.000200418566814807 -974 -0.000375662527155661 -975 -0.000354596399099672 -976 -0.000424295858947903 -977 -4.46088202453899e-06 -978 0.00224800854296348 -979 0.000523082860817624 -980 0.00048326199320117 -981 0.000448693340206397 -982 0.000421635212488891 -983 0.000437949926365211 -984 0.000428040241678261 -985 0.000391002232599501 -986 0.00036566913933478 -987 0.000381018446039441 -988 0.000321514512415979 -989 0.000287957422008028 -990 0.000255617051800765 -991 0.000221662354369779 -992 0.000188701605125869 -993 0.00016002049297156 -994 0.000127317707925566 -995 9.31667901426005e-05 -996 6.3380231067732e-05 -997 3.423275902354e-05 -998 -2.14223799528709e-06 -999 -3.67741480724576e-05 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat deleted file mode 100644 index 484b9470..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML#parser.dat +++ /dev/null @@ -1,1001 +0,0 @@ -#scatter real total user system repeat -1 0.00562119483947754 0.00999999999999979 0.00999999999999979 0.0 1 -2 0.00404691696166992 0.0 0.0 0.0 2 -3 0.00373387336730957 0.00999999999999979 0.00999999999999979 0.0 3 -4 0.00375699996948242 0.0 0.0 0.0 4 -5 0.00371694564819336 0.0 0.0 0.0 5 -6 0.00381088256835938 0.0100000000000007 0.0100000000000007 0.0 6 -7 0.00370693206787109 0.0 0.0 0.0 7 -8 0.00368213653564453 0.00999999999999979 0.00999999999999979 0.0 8 -9 0.0037529468536377 0.0 0.0 0.0 9 -10 0.00371718406677246 0.0 0.0 0.0 10 -11 0.00370693206787109 0.00999999999999979 0.00999999999999979 0.0 11 -12 0.00371503829956055 0.0 0.0 0.0 12 -13 0.00367999076843262 0.0 0.0 0.0 13 -14 0.0037379264831543 0.00999999999999979 0.00999999999999979 0.0 14 -15 0.00368285179138184 0.0 0.0 0.0 15 -16 0.0036928653717041 0.00999999999999979 0.00999999999999979 0.0 16 -17 0.00363802909851074 0.0 0.0 0.0 17 -18 0.00420713424682617 0.0 0.0 0.0 18 -19 0.0046851634979248 0.0100000000000007 0.0100000000000007 0.0 19 -20 0.00365090370178223 0.0 0.0 0.0 20 -21 0.0036470890045166 0.00999999999999979 0.00999999999999979 0.0 21 -22 0.00363302230834961 0.0 0.0 0.0 22 -23 0.00362706184387207 0.0 0.0 0.0 23 -24 0.00369381904602051 0.00999999999999979 0.00999999999999979 0.0 24 -25 0.00363802909851074 0.0 0.0 0.0 25 -26 0.00362586975097656 0.0 0.0 0.0 26 -27 0.0036308765411377 0.00999999999999979 0.00999999999999979 0.0 27 -28 0.00364899635314941 0.0 0.0 0.0 28 -29 0.00363993644714355 0.0100000000000007 0.0100000000000007 0.0 29 -30 0.0036160945892334 0.0 0.0 0.0 30 -31 0.00362014770507812 0.0 0.0 0.0 31 -32 0.0036470890045166 0.00999999999999979 0.00999999999999979 0.0 32 -33 0.00372695922851562 0.0 0.0 0.0 33 -34 0.00366806983947754 0.0 0.0 0.0 34 -35 0.00362205505371094 0.00999999999999979 0.00999999999999979 0.0 35 -36 0.00366711616516113 0.0 0.0 0.0 36 -37 0.00369906425476074 0.00999999999999979 0.00999999999999979 0.0 37 -38 0.00364184379577637 0.0 0.0 0.0 38 -39 0.0289762020111084 0.0300000000000002 0.0300000000000002 0.0 39 -40 0.00372695922851562 0.0 0.0 0.0 40 -41 0.00367403030395508 0.00999999999999979 0.00999999999999979 0.0 41 -42 0.00373101234436035 0.0 0.0 0.0 42 -43 0.00379014015197754 0.0 0.0 0.0 43 -44 0.00367498397827148 0.0100000000000007 0.0100000000000007 0.0 44 -45 0.00369691848754883 0.0 0.0 0.0 45 -46 0.00368881225585938 0.0 0.0 0.0 46 -47 0.00369405746459961 0.00999999999999979 0.00999999999999979 0.0 47 -48 0.00369095802307129 0.0 0.0 0.0 48 -49 0.00370192527770996 0.00999999999999979 0.00999999999999979 0.0 49 -50 0.00373387336730957 0.0 0.0 0.0 50 -51 0.00370502471923828 0.0 0.0 0.0 51 -52 0.00367999076843262 0.00999999999999979 0.00999999999999979 0.0 52 -53 0.00374007225036621 0.0 0.0 0.0 53 -54 0.00364995002746582 0.0 0.0 0.0 54 -55 0.00367188453674316 0.0100000000000007 0.0100000000000007 0.0 55 -56 0.00363993644714355 0.0 0.0 0.0 56 -57 0.00365900993347168 0.00999999999999979 0.00999999999999979 0.0 57 -58 0.0036160945892334 0.0 0.0 0.0 58 -59 0.00369095802307129 0.0 0.0 0.0 59 -60 0.00452899932861328 0.00999999999999979 0.00999999999999979 0.0 60 -61 0.00462913513183594 0.0 0.0 0.0 61 -62 0.00413894653320312 0.00999999999999979 0.00999999999999979 0.0 62 -63 0.0036470890045166 0.0 0.0 0.0 63 -64 0.00361418724060059 0.0 0.0 0.0 64 -65 0.00383710861206055 0.0100000000000007 0.0100000000000007 0.0 65 -66 0.00362491607666016 0.0 0.0 0.0 66 -67 0.0036318302154541 0.0 0.0 0.0 67 -68 0.0036311149597168 0.00999999999999979 0.00999999999999979 0.0 68 -69 0.00365900993347168 0.0 0.0 0.0 69 -70 0.00515103340148926 0.00999999999999979 0.00999999999999979 0.0 70 -71 0.00363993644714355 0.0 0.0 0.0 71 -72 0.00365900993347168 0.0 0.0 0.0 72 -73 0.00374507904052734 0.00999999999999979 0.00999999999999979 0.0 73 -74 0.00366497039794922 0.0 0.0 0.0 74 -75 0.00367498397827148 0.00999999999999979 0.00999999999999979 0.0 75 -76 0.0036470890045166 0.0 0.0 0.0 76 -77 0.00451517105102539 0.0 0.0 0.0 77 -78 0.0300049781799316 0.0300000000000002 0.0300000000000002 0.0 78 -79 0.00374197959899902 0.00999999999999979 0.00999999999999979 0.0 79 -80 0.00371098518371582 0.0 0.0 0.0 80 -81 0.00372600555419922 0.0 0.0 0.0 81 -82 0.00376200675964355 0.0100000000000007 0.0100000000000007 0.0 82 -83 0.00369596481323242 0.0 0.0 0.0 83 -84 0.00372099876403809 0.00999999999999979 0.00999999999999979 0.0 84 -85 0.00370216369628906 0.0 0.0 0.0 85 -86 0.00374007225036621 0.0 0.0 0.0 86 -87 0.00369381904602051 0.00999999999999979 0.00999999999999979 0.0 87 -88 0.00372195243835449 0.0 0.0 0.0 88 -89 0.00368881225585938 0.0 0.0 0.0 89 -90 0.00371909141540527 0.00999999999999979 0.00999999999999979 0.0 90 -91 0.00371909141540527 0.0 0.0 0.0 91 -92 0.00366497039794922 0.0100000000000007 0.0100000000000007 0.0 92 -93 0.00366401672363281 0.0 0.0 0.0 93 -94 0.00378704071044922 0.0 0.0 0.0 94 -95 0.00365710258483887 0.00999999999999979 0.00999999999999979 0.0 95 -96 0.00405406951904297 0.0 0.0 0.0 96 -97 0.00365591049194336 0.0 0.0 0.0 97 -98 0.00371098518371582 0.00999999999999979 0.00999999999999979 0.0 98 -99 0.00363802909851074 0.0 0.0 0.0 99 -100 0.0036461353302002 0.00999999999999979 0.00999999999999979 0.0 100 -101 0.00359797477722168 0.0 0.0 0.0 101 -102 0.00361990928649902 0.0 0.0 0.0 102 -103 0.00364899635314941 0.0100000000000007 0.0100000000000007 0.0 103 -104 0.00359296798706055 0.0 0.0 0.0 104 -105 0.00363802909851074 0.0 0.0 0.0 105 -106 0.00417685508728027 0.00999999999999979 0.00999999999999979 0.0 106 -107 0.00371980667114258 0.0 0.0 0.0 107 -108 0.0036470890045166 0.00999999999999979 0.00999999999999979 0.0 108 -109 0.00368213653564453 0.0 0.0 0.0 109 -110 0.00360202789306641 0.0 0.0 0.0 110 -111 0.00362992286682129 0.00999999999999979 0.00999999999999979 0.0 111 -112 0.0036311149597168 0.0 0.0 0.0 112 -113 0.00362801551818848 0.0 0.0 0.0 113 -114 0.00364995002746582 0.0100000000000007 0.0100000000000007 0.0 114 -115 0.00370001792907715 0.0 0.0 0.0 115 -116 0.0305509567260742 0.0299999999999994 0.0299999999999994 0.0 116 -117 0.00376200675964355 0.0100000000000007 0.0100000000000007 0.0 117 -118 0.0038001537322998 0.0 0.0 0.0 118 -119 0.00374984741210938 0.0 0.0 0.0 119 -120 0.00397920608520508 0.00999999999999979 0.00999999999999979 0.0 120 -121 0.00372481346130371 0.0 0.0 0.0 121 -122 0.00369715690612793 0.0 0.0 0.0 122 -123 0.00371694564819336 0.00999999999999979 0.00999999999999979 0.0 123 -124 0.00372195243835449 0.0 0.0 0.0 124 -125 0.00375914573669434 0.00999999999999979 0.00999999999999979 0.0 125 -126 0.00368499755859375 0.0 0.0 0.0 126 -127 0.00371503829956055 0.0 0.0 0.0 127 -128 0.00380897521972656 0.00999999999999979 0.00999999999999979 0.0 128 -129 0.00403499603271484 0.0 0.0 0.0 129 -130 0.00370502471923828 0.0100000000000007 0.0100000000000007 0.0 130 -131 0.00371289253234863 0.0 0.0 0.0 131 -132 0.00365591049194336 0.0 0.0 0.0 132 -133 0.00368094444274902 0.00999999999999979 0.00999999999999979 0.0 133 -134 0.0036768913269043 0.0 0.0 0.0 134 -135 0.00362706184387207 0.0 0.0 0.0 135 -136 0.00366616249084473 0.00999999999999979 0.00999999999999979 0.0 136 -137 0.0036470890045166 0.0 0.0 0.0 137 -138 0.00362181663513184 0.0 0.0 0.0 138 -139 0.00364089012145996 0.00999999999999979 0.00999999999999979 0.0 139 -140 0.00363707542419434 0.0 0.0 0.0 140 -141 0.00359892845153809 0.0100000000000007 0.0100000000000007 0.0 141 -142 0.00361514091491699 0.0 0.0 0.0 142 -143 0.00365495681762695 0.0 0.0 0.0 143 -144 0.00371885299682617 0.00999999999999979 0.00999999999999979 0.0 144 -145 0.00364208221435547 0.0 0.0 0.0 145 -146 0.00365304946899414 0.0 0.0 0.0 146 -147 0.00368404388427734 0.00999999999999979 0.00999999999999979 0.0 147 -148 0.00365900993347168 0.0 0.0 0.0 148 -149 0.00368785858154297 0.00999999999999979 0.00999999999999979 0.0 149 -150 0.003662109375 0.0 0.0 0.0 150 -151 0.00363397598266602 0.0 0.0 0.0 151 -152 0.00362491607666016 0.0100000000000007 0.0100000000000007 0.0 152 -153 0.00366687774658203 0.0 0.0 0.0 153 -154 0.0295231342315674 0.0299999999999994 0.0299999999999994 0.0 154 -155 0.00366806983947754 0.0 0.0 0.0 155 -156 0.00370311737060547 0.0100000000000007 0.0100000000000007 0.0 156 -157 0.0037238597869873 0.0 0.0 0.0 157 -158 0.00376701354980469 0.00999999999999979 0.00999999999999979 0.0 158 -159 0.0036771297454834 0.0 0.0 0.0 159 -160 0.00372195243835449 0.0 0.0 0.0 160 -161 0.00371599197387695 0.00999999999999979 0.00999999999999979 0.0 161 -162 0.00371003150939941 0.0 0.0 0.0 162 -163 0.00369811058044434 0.0 0.0 0.0 163 -164 0.00378203392028809 0.00999999999999979 0.00999999999999979 0.0 164 -165 0.00370502471923828 0.0 0.0 0.0 165 -166 0.00371003150939941 0.0100000000000007 0.0100000000000007 0.0 166 -167 0.00371599197387695 0.0 0.0 0.0 167 -168 0.00370192527770996 0.0 0.0 0.0 168 -169 0.00369501113891602 0.00999999999999979 0.00999999999999979 0.0 169 -170 0.00369691848754883 0.0 0.0 0.0 170 -171 0.00400686264038086 0.0 0.0 0.0 171 -172 0.00524497032165527 0.00999999999999979 0.00999999999999979 0.0 172 -173 0.00366020202636719 0.0 0.0 0.0 173 -174 0.00366806983947754 0.00999999999999979 0.00999999999999979 0.0 174 -175 0.00367379188537598 0.0 0.0 0.0 175 -176 0.00362706184387207 0.0 0.0 0.0 176 -177 0.00365996360778809 0.0100000000000007 0.0100000000000007 0.0 177 -178 0.00365900993347168 0.0 0.0 0.0 178 -179 0.00363492965698242 0.00999999999999979 0.00999999999999979 0.0 179 -180 0.00363397598266602 0.0 0.0 0.0 180 -181 0.00366401672363281 0.0 0.0 0.0 181 -182 0.00363302230834961 0.00999999999999979 0.00999999999999979 0.0 182 -183 0.00364494323730469 0.0 0.0 0.0 183 -184 0.00361990928649902 0.0 0.0 0.0 184 -185 0.00379490852355957 0.00999999999999979 0.00999999999999979 0.0 185 -186 0.0036468505859375 0.0 0.0 0.0 186 -187 0.00370502471923828 0.00999999999999979 0.00999999999999979 0.0 187 -188 0.00387907028198242 0.0 0.0 0.0 188 -189 0.00541114807128906 0.0 0.0 0.0 189 -190 0.00428199768066406 0.0100000000000007 0.0100000000000007 0.0 190 -191 0.00368618965148926 0.0 0.0 0.0 191 -192 0.0293948650360107 0.0299999999999994 0.0299999999999994 0.0 192 -193 0.00434708595275879 0.0100000000000007 0.0100000000000007 0.0 193 -194 0.00372600555419922 0.0 0.0 0.0 194 -195 0.00628900527954102 0.00999999999999979 0.00999999999999979 0.0 195 -196 0.00624394416809082 0.0 0.0 0.0 196 -197 0.00649094581604004 0.00999999999999979 0.00999999999999979 0.0 197 -198 0.00419712066650391 0.0 0.0 0.0 198 -199 0.00371003150939941 0.00999999999999979 0.00999999999999979 0.0 199 -200 0.0037531852722168 0.0 0.0 0.0 200 -201 0.00369119644165039 0.0 0.0 0.0 201 -202 0.00369000434875488 0.0100000000000007 0.0100000000000007 0.0 202 -203 0.00372099876403809 0.0 0.0 0.0 203 -204 0.00369000434875488 0.00999999999999979 0.00999999999999979 0.0 204 -205 0.00371885299682617 0.0 0.0 0.0 205 -206 0.00367903709411621 0.0 0.0 0.0 206 -207 0.00364303588867188 0.00999999999999979 0.00999999999999979 0.0 207 -208 0.0037541389465332 0.0 0.0 0.0 208 -209 0.00364303588867188 0.0 0.0 0.0 209 -210 0.00363898277282715 0.00999999999999979 0.00999999999999979 0.0 210 -211 0.00363588333129883 0.0 0.0 0.0 211 -212 0.00367999076843262 0.0100000000000007 0.0100000000000007 0.0 212 -213 0.00364208221435547 0.0 0.0 0.0 213 -214 0.00365614891052246 0.0 0.0 0.0 214 -215 0.00363779067993164 0.00999999999999979 0.00999999999999979 0.0 215 -216 0.00362610816955566 0.0 0.0 0.0 216 -217 0.0036470890045166 0.0 0.0 0.0 217 -218 0.00366711616516113 0.00999999999999979 0.00999999999999979 0.0 218 -219 0.00364995002746582 0.0 0.0 0.0 219 -220 0.0036308765411377 0.0 0.0 0.0 220 -221 0.0036308765411377 0.00999999999999979 0.00999999999999979 0.0 221 -222 0.00362896919250488 0.0 0.0 0.0 222 -223 0.00364899635314941 0.0100000000000007 0.0100000000000007 0.0 223 -224 0.00365805625915527 0.0 0.0 0.0 224 -225 0.00364589691162109 0.0 0.0 0.0 225 -226 0.00363683700561523 0.00999999999999979 0.00999999999999979 0.0 226 -227 0.00364995002746582 0.0 0.0 0.0 227 -228 0.00421810150146484 0.0 0.0 0.0 228 -229 0.00510215759277344 0.00999999999999979 0.00999999999999979 0.0 229 -230 0.0295019149780273 0.0300000000000002 0.0300000000000002 0.0 230 -231 0.00370287895202637 0.0 0.0 0.0 231 -232 0.00370287895202637 0.00999999999999979 0.00999999999999979 0.0 232 -233 0.00372409820556641 0.0 0.0 0.0 233 -234 0.00373697280883789 0.0 0.0 0.0 234 -235 0.00371003150939941 0.00999999999999979 0.00999999999999979 0.0 235 -236 0.00374388694763184 0.0 0.0 0.0 236 -237 0.00366711616516113 0.00999999999999979 0.00999999999999979 0.0 237 -238 0.00371408462524414 0.0 0.0 0.0 238 -239 0.0048530101776123 0.0 0.0 0.0 239 -240 0.00423502922058105 0.0100000000000007 0.0100000000000007 0.0 240 -241 0.00370502471923828 0.0 0.0 0.0 241 -242 0.00370383262634277 0.00999999999999979 0.00999999999999979 0.0 242 -243 0.00366306304931641 0.0 0.0 0.0 243 -244 0.00367593765258789 0.0 0.0 0.0 244 -245 0.00371599197387695 0.00999999999999979 0.00999999999999979 0.0 245 -246 0.00369501113891602 0.0 0.0 0.0 246 -247 0.00366902351379395 0.0 0.0 0.0 247 -248 0.00362110137939453 0.00999999999999979 0.00999999999999979 0.0 248 -249 0.00362896919250488 0.0 0.0 0.0 249 -250 0.00362896919250488 0.0100000000000007 0.0100000000000007 0.0 250 -251 0.00362205505371094 0.0 0.0 0.0 251 -252 0.00364923477172852 0.0 0.0 0.0 252 -253 0.00362801551818848 0.00999999999999979 0.00999999999999979 0.0 253 -254 0.00369715690612793 0.0 0.0 0.0 254 -255 0.00363993644714355 0.0 0.0 0.0 255 -256 0.00364518165588379 0.00999999999999979 0.00999999999999979 0.0 256 -257 0.00360393524169922 0.0 0.0 0.0 257 -258 0.00365090370178223 0.00999999999999979 0.00999999999999979 0.0 258 -259 0.00365996360778809 0.0 0.0 0.0 259 -260 0.00363016128540039 0.0 0.0 0.0 260 -261 0.00363707542419434 0.0100000000000007 0.0100000000000007 0.0 261 -262 0.00364112854003906 0.0 0.0 0.0 262 -263 0.00367903709411621 0.0 0.0 0.0 263 -264 0.00365304946899414 0.00999999999999979 0.00999999999999979 0.0 264 -265 0.00365900993347168 0.0 0.0 0.0 265 -266 0.00364804267883301 0.00999999999999979 0.00999999999999979 0.0 266 -267 0.00368404388427734 0.0 0.0 0.0 267 -268 0.02935791015625 0.0300000000000002 0.0300000000000002 0.0 268 -269 0.00368499755859375 0.0 0.0 0.0 269 -270 0.00371789932250977 0.00999999999999979 0.00999999999999979 0.0 270 -271 0.0037848949432373 0.0 0.0 0.0 271 -272 0.00371384620666504 0.0 0.0 0.0 272 -273 0.00371098518371582 0.00999999999999979 0.00999999999999979 0.0 273 -274 0.00377702713012695 0.0 0.0 0.0 274 -275 0.00371503829956055 0.0 0.0 0.0 275 -276 0.00372791290283203 0.0100000000000007 0.0100000000000007 0.0 276 -277 0.00372004508972168 0.0 0.0 0.0 277 -278 0.00366806983947754 0.00999999999999979 0.00999999999999979 0.0 278 -279 0.00369620323181152 0.0 0.0 0.0 279 -280 0.00374603271484375 0.0 0.0 0.0 280 -281 0.00559902191162109 0.00999999999999979 0.00999999999999979 0.0 281 -282 0.00370311737060547 0.0 0.0 0.0 282 -283 0.00371289253234863 0.00999999999999979 0.00999999999999979 0.0 283 -284 0.00368905067443848 0.0 0.0 0.0 284 -285 0.0037989616394043 0.0 0.0 0.0 285 -286 0.00368595123291016 0.00999999999999979 0.0100000000000007 0.0 286 -287 0.00365710258483887 0.0 0.0 0.0 287 -288 0.00366306304931641 0.00999999999999979 0.00999999999999979 0.0 288 -289 0.00366091728210449 0.0 0.0 0.0 289 -290 0.00363683700561523 0.0 0.0 0.0 290 -291 0.00508499145507812 0.00999999999999979 0.00999999999999979 0.0 291 -292 0.00364899635314941 0.0 0.0 0.0 292 -293 0.00364184379577637 0.0 0.0 0.0 293 -294 0.00365900993347168 0.00999999999999979 0.00999999999999979 0.0 294 -295 0.00361919403076172 0.0 0.0 0.0 295 -296 0.00365996360778809 0.00999999999999979 0.00999999999999979 0.0 296 -297 0.00385499000549316 0.0 0.0 0.0 297 -298 0.00486421585083008 0.0 0.0 0.0 298 -299 0.00370907783508301 0.00999999999999979 0.00999999999999979 0.0 299 -300 0.00366020202636719 0.0 0.0 0.0 300 -301 0.00364780426025391 0.00999999999999979 0.00999999999999979 0.0 301 -302 0.00360703468322754 0.0 0.0 0.0 302 -303 0.00366711616516113 0.0 0.0 0.0 303 -304 0.00365304946899414 0.0100000000000016 0.0100000000000016 0.0 304 -305 0.0293490886688232 0.0299999999999994 0.0299999999999994 0.0 305 -306 0.00373411178588867 0.0 0.0 0.0 306 -307 0.00367593765258789 0.0 0.0 0.0 307 -308 0.0037379264831543 0.00999999999999979 0.00999999999999979 0.0 308 -309 0.00373697280883789 0.0 0.0 0.0 309 -310 0.00374507904052734 0.0 0.0 0.0 310 -311 0.00374889373779297 0.00999999999999979 0.00999999999999979 0.0 311 -312 0.00372195243835449 0.0 0.0 0.0 312 -313 0.00367879867553711 0.00999999999999979 0.00999999999999979 0.0 313 -314 0.00386714935302734 0.0 0.0 0.0 314 -315 0.00381088256835938 0.0 0.0 0.0 315 -316 0.00370597839355469 0.00999999999999979 0.00999999999999979 0.0 316 -317 0.00370287895202637 0.0 0.0 0.0 317 -318 0.00370883941650391 0.0 0.0 0.0 318 -319 0.0037989616394043 0.0100000000000016 0.0100000000000016 0.0 319 -320 0.00371098518371582 0.0 0.0 0.0 320 -321 0.00366806983947754 0.00999999999999979 0.00999999999999979 0.0 321 -322 0.00365209579467773 0.0 0.0 0.0 322 -323 0.00365400314331055 0.0 0.0 0.0 323 -324 0.00365710258483887 0.00999999999999979 0.00999999999999979 0.0 324 -325 0.00365400314331055 0.0 0.0 0.0 325 -326 0.00417399406433105 0.00999999999999979 0.00999999999999979 0.0 326 -327 0.00363588333129883 0.0 0.0 0.0 327 -328 0.00362396240234375 0.0 0.0 0.0 328 -329 0.00364899635314941 0.00999999999999979 0.00999999999999979 0.0 329 -330 0.0036461353302002 0.0 0.0 0.0 330 -331 0.00362610816955566 0.0 0.0 0.0 331 -332 0.00365710258483887 0.00999999999999979 0.00999999999999979 0.0 332 -333 0.00365900993347168 0.0 0.0 0.0 333 -334 0.00363802909851074 0.0 0.0 0.0 334 -335 0.00365495681762695 0.00999999999999979 0.00999999999999979 0.0 335 -336 0.0036931037902832 0.0 0.0 0.0 336 -337 0.00366592407226562 0.00999999999999979 0.00999999999999979 0.0 337 -338 0.0036778450012207 0.0 0.0 0.0 338 -339 0.00438904762268066 0.0 0.0 0.0 339 -340 0.00471091270446777 0.0100000000000016 0.0100000000000016 0.0 340 -341 0.00389599800109863 0.0 0.0 0.0 341 -342 0.00366497039794922 0.00999999999999979 0.00999999999999979 0.0 342 -343 0.0298199653625488 0.0299999999999994 0.0299999999999994 0.0 343 -344 0.00373697280883789 0.0 0.0 0.0 344 -345 0.00366497039794922 0.0 0.0 0.0 345 -346 0.00375890731811523 0.00999999999999979 0.00999999999999979 0.0 346 -347 0.00376486778259277 0.0 0.0 0.0 347 -348 0.00379490852355957 0.00999999999999979 0.00999999999999979 0.0 348 -349 0.00371098518371582 0.0 0.0 0.0 349 -350 0.00410985946655273 0.0 0.0 0.0 350 -351 0.00371313095092773 0.00999999999999979 0.00999999999999979 0.0 351 -352 0.00372481346130371 0.0 0.0 0.0 352 -353 0.00371789932250977 0.0 0.0 0.0 353 -354 0.00374507904052734 0.00999999999999979 0.00999999999999979 0.0 354 -355 0.00374102592468262 0.0 0.0 0.0 355 -356 0.00371098518371582 0.0100000000000016 0.0100000000000016 0.0 356 -357 0.00369906425476074 0.0 0.0 0.0 357 -358 0.00367617607116699 0.0 0.0 0.0 358 -359 0.00366997718811035 0.00999999999999979 0.00999999999999979 0.0 359 -360 0.00365996360778809 0.0 0.0 0.0 360 -361 0.00363588333129883 0.0 0.0 0.0 361 -362 0.00361990928649902 0.00999999999999979 0.00999999999999979 0.0 362 -363 0.00364589691162109 0.0 0.0 0.0 363 -364 0.00363492965698242 0.00999999999999979 0.00999999999999979 0.0 364 -365 0.00372695922851562 0.0 0.0 0.0 365 -366 0.00362396240234375 0.0 0.0 0.0 366 -367 0.00363707542419434 0.00999999999999979 0.00999999999999979 0.0 367 -368 0.0036921501159668 0.0 0.0 0.0 368 -369 0.00365710258483887 0.0 0.0 0.0 369 -370 0.00361800193786621 0.00999999999999979 0.00999999999999979 0.0 370 -371 0.00367903709411621 0.0 0.0 0.0 371 -372 0.00365805625915527 0.00999999999999979 0.00999999999999979 0.0 372 -373 0.00367999076843262 0.0 0.0 0.0 373 -374 0.00368404388427734 0.0 0.0 0.0 374 -375 0.00368690490722656 0.00999999999999979 0.00999999999999979 0.0 375 -376 0.00374794006347656 0.0 0.0 0.0 376 -377 0.00366997718811035 0.0 0.0 0.0 377 -378 0.00365018844604492 0.0100000000000016 0.0100000000000016 0.0 378 -379 0.0036780834197998 0.0 0.0 0.0 379 -380 0.00370216369628906 0.00999999999999979 0.00999999999999979 0.0 380 -381 0.0293450355529785 0.0199999999999996 0.0199999999999996 0.0 381 -382 0.00373005867004395 0.00999999999999979 0.00999999999999979 0.0 382 -383 0.00366306304931641 0.0 0.0 0.0 383 -384 0.00376296043395996 0.00999999999999979 0.00999999999999979 0.0 384 -385 0.00380301475524902 0.0 0.0 0.0 385 -386 0.00372815132141113 0.0 0.0 0.0 386 -387 0.00371193885803223 0.00999999999999979 0.00999999999999979 0.0 387 -388 0.00368499755859375 0.0 0.0 0.0 388 -389 0.00373601913452148 0.0 0.0 0.0 389 -390 0.00371694564819336 0.00999999999999979 0.00999999999999979 0.0 390 -391 0.00372791290283203 0.0 0.0 0.0 391 -392 0.00531101226806641 0.0100000000000016 0.0100000000000016 0.0 392 -393 0.00371789932250977 0.0 0.0 0.0 393 -394 0.00370097160339355 0.00999999999999979 0.00999999999999979 0.0 394 -395 0.00369906425476074 0.0 0.0 0.0 395 -396 0.00373601913452148 0.0 0.0 0.0 396 -397 0.00371694564819336 0.00999999999999979 0.00999999999999979 0.0 397 -398 0.00365591049194336 0.0 0.0 0.0 398 -399 0.00403714179992676 0.0 0.0 0.0 399 -400 0.00364208221435547 0.00999999999999979 0.00999999999999979 0.0 400 -401 0.00365400314331055 0.0 0.0 0.0 401 -402 0.00364089012145996 0.00999999999999979 0.00999999999999979 0.0 402 -403 0.00363302230834961 0.0 0.0 0.0 403 -404 0.00365090370178223 0.0 0.0 0.0 404 -405 0.00374603271484375 0.00999999999999979 0.00999999999999979 0.0 405 -406 0.00363278388977051 0.0 0.0 0.0 406 -407 0.00362515449523926 0.0 0.0 0.0 407 -408 0.00372409820556641 0.00999999999999979 0.00999999999999979 0.0 408 -409 0.00486588478088379 0.0 0.0 0.0 409 -410 0.00364303588867188 0.00999999999999979 0.00999999999999979 0.0 410 -411 0.00371599197387695 0.0 0.0 0.0 411 -412 0.0036618709564209 0.0 0.0 0.0 412 -413 0.00363707542419434 0.00999999999999979 0.00999999999999979 0.0 413 -414 0.00367593765258789 0.0 0.0 0.0 414 -415 0.00361990928649902 0.0 0.0 0.0 415 -416 0.00365900993347168 0.0100000000000016 0.0100000000000016 0.0 416 -417 0.00365614891052246 0.0 0.0 0.0 417 -418 0.00370597839355469 0.00999999999999979 0.00999999999999979 0.0 418 -419 0.0359270572662354 0.0299999999999994 0.0299999999999994 0.0 419 -420 0.00371479988098145 0.00999999999999979 0.00999999999999979 0.0 420 -421 0.00369119644165039 0.0 0.0 0.0 421 -422 0.00375699996948242 0.0 0.0 0.0 422 -423 0.00374388694763184 0.00999999999999979 0.00999999999999979 0.0 423 -424 0.00373291969299316 0.0 0.0 0.0 424 -425 0.00372982025146484 0.0 0.0 0.0 425 -426 0.00370216369628906 0.00999999999999979 0.00999999999999979 0.0 426 -427 0.00371408462524414 0.0 0.0 0.0 427 -428 0.0037078857421875 0.0100000000000016 0.0100000000000016 0.0 428 -429 0.00379300117492676 0.0 0.0 0.0 429 -430 0.00373482704162598 0.0 0.0 0.0 430 -431 0.00374007225036621 0.00999999999999979 0.00999999999999979 0.0 431 -432 0.00367999076843262 0.0 0.0 0.0 432 -433 0.00372695922851562 0.0 0.0 0.0 433 -434 0.00371384620666504 0.00999999999999979 0.00999999999999979 0.0 434 -435 0.0036170482635498 0.0 0.0 0.0 435 -436 0.00364899635314941 0.00999999999999979 0.00999999999999979 0.0 436 -437 0.00367283821105957 0.0 0.0 0.0 437 -438 0.0036160945892334 0.0 0.0 0.0 438 -439 0.00362205505371094 0.00999999999999979 0.00999999999999979 0.0 439 -440 0.00364518165588379 0.0 0.0 0.0 440 -441 0.0036780834197998 0.0 0.0 0.0 441 -442 0.00361800193786621 0.00999999999999979 0.00999999999999979 0.0 442 -443 0.00362396240234375 0.0 0.0 0.0 443 -444 0.00362610816955566 0.00999999999999979 0.00999999999999979 0.0 444 -445 0.00364804267883301 0.0 0.0 0.0 445 -446 0.00360488891601562 0.0 0.0 0.0 446 -447 0.00363397598266602 0.00999999999999979 0.00999999999999979 0.0 447 -448 0.00361299514770508 0.0 0.0 0.0 448 -449 0.00390100479125977 0.0 0.0 0.0 449 -450 0.00565385818481445 0.0100000000000016 0.0100000000000016 0.0 450 -451 0.00366592407226562 0.0 0.0 0.0 451 -452 0.00364398956298828 0.00999999999999979 0.00999999999999979 0.0 452 -453 0.00362896919250488 0.0 0.0 0.0 453 -454 0.0036618709564209 0.0 0.0 0.0 454 -455 0.00370502471923828 0.00999999999999979 0.00999999999999979 0.0 455 -456 0.00375580787658691 0.0 0.0 0.0 456 -457 0.029231071472168 0.0299999999999994 0.0299999999999994 0.0 457 -458 0.00371885299682617 0.0 0.0 0.0 458 -459 0.00371003150939941 0.0 0.0 0.0 459 -460 0.00493097305297852 0.0 0.0 0.0 460 -461 0.00378513336181641 0.00999999999999979 0.00999999999999979 0.0 461 -462 0.0037388801574707 0.0 0.0 0.0 462 -463 0.00383710861206055 0.0 0.0 0.0 463 -464 0.00370407104492188 0.00999999999999979 0.00999999999999979 0.0 464 -465 0.0037388801574707 0.0 0.0 0.0 465 -466 0.00373196601867676 0.0100000000000016 0.0100000000000016 0.0 466 -467 0.00371599197387695 0.0 0.0 0.0 467 -468 0.00373697280883789 0.0 0.0 0.0 468 -469 0.00368809700012207 0.00999999999999979 0.00999999999999979 0.0 469 -470 0.00370502471923828 0.0 0.0 0.0 470 -471 0.0036771297454834 0.0 0.0 0.0 471 -472 0.00364899635314941 0.00999999999999979 0.00999999999999979 0.0 472 -473 0.00366902351379395 0.0 0.0 0.0 473 -474 0.00365710258483887 0.00999999999999979 0.00999999999999979 0.0 474 -475 0.00371217727661133 0.0 0.0 0.0 475 -476 0.00365495681762695 0.0 0.0 0.0 476 -477 0.0036308765411377 0.00999999999999979 0.00999999999999979 0.0 477 -478 0.00365710258483887 0.0 0.0 0.0 478 -479 0.00364899635314941 0.0 0.0 0.0 479 -480 0.00360703468322754 0.00999999999999979 0.00999999999999979 0.0 480 -481 0.0036318302154541 0.0 0.0 0.0 481 -482 0.00359702110290527 0.0 0.0 0.0 482 -483 0.00360584259033203 0.00999999999999979 0.00999999999999979 0.0 483 -484 0.00364303588867188 0.0 0.0 0.0 484 -485 0.00361490249633789 0.00999999999999979 0.00999999999999979 0.0 485 -486 0.00365281105041504 0.0 0.0 0.0 486 -487 0.00365591049194336 0.0 0.0 0.0 487 -488 0.00358986854553223 0.0100000000000016 0.0100000000000016 0.0 488 -489 0.00365304946899414 0.0 0.0 0.0 489 -490 0.00380802154541016 0.0 0.0 0.0 490 -491 0.00366997718811035 0.00999999999999979 0.00999999999999979 0.0 491 -492 0.00363612174987793 0.0 0.0 0.0 492 -493 0.003662109375 0.00999999999999979 0.00999999999999979 0.0 493 -494 0.00367617607116699 0.0 0.0 0.0 494 -495 0.0286951065063477 0.0299999999999994 0.0299999999999994 0.0 495 -496 0.00378203392028809 0.0 0.0 0.0 496 -497 0.00374603271484375 0.00999999999999979 0.00999999999999979 0.0 497 -498 0.00373005867004395 0.0 0.0 0.0 498 -499 0.00371003150939941 0.0 0.0 0.0 499 -500 0.00367212295532227 0.00999999999999979 0.00999999999999979 0.0 500 -501 0.00379490852355957 0.0 0.0 0.0 501 -502 0.00532388687133789 0.0100000000000016 0.0100000000000016 0.0 502 -503 0.00412988662719727 0.0 0.0 0.0 503 -504 0.00371408462524414 0.0 0.0 0.0 504 -505 0.00367403030395508 0.00999999999999979 0.00999999999999979 0.0 505 -506 0.00383114814758301 0.0 0.0 0.0 506 -507 0.00376319885253906 0.00999999999999979 0.00999999999999979 0.0 507 -508 0.00370383262634277 0.0 0.0 0.0 508 -509 0.00366592407226562 0.0 0.0 0.0 509 -510 0.00369906425476074 0.00999999999999979 0.00999999999999979 0.0 510 -511 0.00367116928100586 0.0 0.0 0.0 511 -512 0.00511002540588379 0.0 0.0 0.0 512 -513 0.00360512733459473 0.00999999999999979 0.00999999999999979 0.0 513 -514 0.00369119644165039 0.0 0.0 0.0 514 -515 0.0036311149597168 0.00999999999999979 0.00999999999999979 0.0 515 -516 0.0036771297454834 0.0 0.0 0.0 516 -517 0.00361800193786621 0.0 0.0 0.0 517 -518 0.0038139820098877 0.00999999999999979 0.00999999999999979 0.0 518 -519 0.00537514686584473 0.0 0.0 0.0 519 -520 0.00412893295288086 0.00999999999999979 0.00999999999999979 0.0 520 -521 0.00373005867004395 0.0 0.0 0.0 521 -522 0.00365996360778809 0.0 0.0 0.0 522 -523 0.00364303588867188 0.00999999999999979 0.00999999999999979 0.0 523 -524 0.00367403030395508 0.0 0.0 0.0 524 -525 0.00364589691162109 0.0100000000000016 0.0100000000000016 0.0 525 -526 0.00364398956298828 0.0 0.0 0.0 526 -527 0.00363898277282715 0.0 0.0 0.0 527 -528 0.00362682342529297 0.00999999999999979 0.00999999999999979 0.0 528 -529 0.00360894203186035 0.0 0.0 0.0 529 -530 0.00366091728210449 0.0 0.0 0.0 530 -531 0.00367999076843262 0.00999999999999979 0.00999999999999979 0.0 531 -532 0.0291500091552734 0.0299999999999994 0.0299999999999994 0.0 532 -533 0.00369596481323242 0.0 0.0 0.0 533 -534 0.00374984741210938 0.0 0.0 0.0 534 -535 0.00383186340332031 0.00999999999999979 0.00999999999999979 0.0 535 -536 0.00389409065246582 0.0 0.0 0.0 536 -537 0.00370407104492188 0.00999999999999979 0.00999999999999979 0.0 537 -538 0.0037238597869873 0.0 0.0 0.0 538 -539 0.00371479988098145 0.0 0.0 0.0 539 -540 0.00371289253234863 0.0100000000000016 0.0100000000000016 0.0 540 -541 0.00380897521972656 0.0 0.0 0.0 541 -542 0.00371193885803223 0.0 0.0 0.0 542 -543 0.0036928653717041 0.00999999999999979 0.00999999999999979 0.0 543 -544 0.00368285179138184 0.0 0.0 0.0 544 -545 0.00370407104492188 0.00999999999999979 0.00999999999999979 0.0 545 -546 0.00371193885803223 0.0 0.0 0.0 546 -547 0.00420904159545898 0.0 0.0 0.0 547 -548 0.00372791290283203 0.00999999999999979 0.00999999999999979 0.0 548 -549 0.0037071704864502 0.0 0.0 0.0 549 -550 0.00366401672363281 0.00999999999999979 0.00999999999999979 0.0 550 -551 0.00365710258483887 0.0 0.0 0.0 551 -552 0.00364494323730469 0.0 0.0 0.0 552 -553 0.00368499755859375 0.00999999999999979 0.00999999999999979 0.0 553 -554 0.00366806983947754 0.0 0.0 0.0 554 -555 0.00361418724060059 0.0 0.0 0.0 555 -556 0.00361394882202148 0.00999999999999979 0.00999999999999979 0.0 556 -557 0.00365090370178223 0.0 0.0 0.0 557 -558 0.00361990928649902 0.0 0.0 0.0 558 -559 0.0036468505859375 0.00999999999999979 0.00999999999999979 0.0 559 -560 0.0040891170501709 0.0 0.0 0.0 560 -561 0.00469303131103516 0.0100000000000016 0.0100000000000016 0.0 561 -562 0.00363516807556152 0.0 0.0 0.0 562 -563 0.00363516807556152 0.0 0.0 0.0 563 -564 0.00361895561218262 0.00999999999999979 0.00999999999999979 0.0 564 -565 0.00365996360778809 0.0 0.0 0.0 565 -566 0.00366783142089844 0.00999999999999979 0.00999999999999979 0.0 566 -567 0.00374007225036621 0.0 0.0 0.0 567 -568 0.00392389297485352 0.0 0.0 0.0 568 -569 0.0294678211212158 0.0299999999999994 0.0299999999999994 0.0 569 -570 0.00389218330383301 0.00999999999999979 0.00999999999999979 0.0 570 -571 0.00545501708984375 0.0 0.0 0.0 571 -572 0.00444793701171875 0.00999999999999979 0.00999999999999979 0.0 572 -573 0.00378513336181641 0.0 0.0 0.0 573 -574 0.00372600555419922 0.0 0.0 0.0 574 -575 0.00369596481323242 0.00999999999999979 0.00999999999999979 0.0 575 -576 0.00376510620117188 0.0 0.0 0.0 576 -577 0.00368714332580566 0.0100000000000016 0.0100000000000016 0.0 577 -578 0.00371885299682617 0.0 0.0 0.0 578 -579 0.00372505187988281 0.0 0.0 0.0 579 -580 0.00372815132141113 0.00999999999999979 0.00999999999999979 0.0 580 -581 0.00370502471923828 0.0 0.0 0.0 581 -582 0.00371503829956055 0.0 0.0 0.0 582 -583 0.00371503829956055 0.00999999999999979 0.00999999999999979 0.0 583 -584 0.00370287895202637 0.0 0.0 0.0 584 -585 0.00371599197387695 0.00999999999999979 0.00999999999999979 0.0 585 -586 0.00377798080444336 0.0 0.0 0.0 586 -587 0.00368595123291016 0.0 0.0 0.0 587 -588 0.00366497039794922 0.00999999999999979 0.00999999999999979 0.0 588 -589 0.00367999076843262 0.0 0.0 0.0 589 -590 0.0036320686340332 0.0 0.0 0.0 590 -591 0.00362491607666016 0.00999999999999979 0.00999999999999979 0.0 591 -592 0.00367593765258789 0.0 0.0 0.0 592 -593 0.0036461353302002 0.00999999999999979 0.00999999999999979 0.0 593 -594 0.00365996360778809 0.0 0.0 0.0 594 -595 0.003662109375 0.0 0.0 0.0 595 -596 0.00364398956298828 0.00999999999999979 0.00999999999999979 0.0 596 -597 0.00371479988098145 0.0 0.0 0.0 597 -598 0.00362610816955566 0.0 0.0 0.0 598 -599 0.00365614891052246 0.0100000000000016 0.0100000000000016 0.0 599 -600 0.00365400314331055 0.0 0.0 0.0 600 -601 0.00364089012145996 0.00999999999999979 0.00999999999999979 0.0 601 -602 0.00363492965698242 0.0 0.0 0.0 602 -603 0.0036320686340332 0.0 0.0 0.0 603 -604 0.00364089012145996 0.00999999999999979 0.00999999999999979 0.0 604 -605 0.00368785858154297 0.0 0.0 0.0 605 -606 0.00367999076843262 0.0 0.0 0.0 606 -607 0.0295491218566895 0.0299999999999994 0.0299999999999994 0.0 607 -608 0.00367212295532227 0.00999999999999979 0.00999999999999979 0.0 608 -609 0.00368118286132812 0.0 0.0 0.0 609 -610 0.00368499755859375 0.0 0.0 0.0 610 -611 0.00374102592468262 0.00999999999999979 0.00999999999999979 0.0 611 -612 0.00428009033203125 0.0 0.0 0.0 612 -613 0.00475502014160156 0.0100000000000016 0.0100000000000016 0.0 613 -614 0.00373005867004395 0.0 0.0 0.0 614 -615 0.00372791290283203 0.00999999999999979 0.00999999999999979 0.0 615 -616 0.00373196601867676 0.0 0.0 0.0 616 -617 0.00375008583068848 0.0 0.0 0.0 617 -618 0.00374102592468262 0.00999999999999979 0.00999999999999979 0.0 618 -619 0.00374102592468262 0.0 0.0 0.0 619 -620 0.00369095802307129 0.0 0.0 0.0 620 -621 0.00368785858154297 0.00999999999999979 0.00999999999999979 0.0 621 -622 0.00369095802307129 0.0 0.0 0.0 622 -623 0.0036778450012207 0.00999999999999979 0.00999999999999979 0.0 623 -624 0.0036468505859375 0.0 0.0 0.0 624 -625 0.00369906425476074 0.0 0.0 0.0 625 -626 0.00376510620117188 0.00999999999999979 0.00999999999999979 0.0 626 -627 0.00364899635314941 0.0 0.0 0.0 627 -628 0.00363397598266602 0.0 0.0 0.0 628 -629 0.00383210182189941 0.00999999999999979 0.00999999999999979 0.0 629 -630 0.00394892692565918 0.0 0.0 0.0 630 -631 0.00367307662963867 0.00999999999999979 0.00999999999999979 0.0 631 -632 0.0036311149597168 0.0 0.0 0.0 632 -633 0.00366497039794922 0.0 0.0 0.0 633 -634 0.00363707542419434 0.00999999999999979 0.00999999999999979 0.0 634 -635 0.0036308765411377 0.0 0.0 0.0 635 -636 0.00362706184387207 0.0 0.0 0.0 636 -637 0.00366306304931641 0.0100000000000016 0.0100000000000016 0.0 637 -638 0.0036468505859375 0.0 0.0 0.0 638 -639 0.00365710258483887 0.0 0.0 0.0 639 -640 0.00370287895202637 0.00999999999999979 0.00999999999999979 0.0 640 -641 0.00424313545227051 0.0 0.0 0.0 641 -642 0.00360798835754395 0.00999999999999979 0.00999999999999979 0.0 642 -643 0.00641298294067383 0.0 0.0 0.0 643 -644 0.0336699485778809 0.0399999999999991 0.0399999999999991 0.0 644 -645 0.00376391410827637 0.0 0.0 0.0 645 -646 0.00372314453125 0.0 0.0 0.0 646 -647 0.00375103950500488 0.00999999999999979 0.00999999999999979 0.0 647 -648 0.00373101234436035 0.0 0.0 0.0 648 -649 0.00373196601867676 0.0 0.0 0.0 649 -650 0.00368499755859375 0.0100000000000016 0.0100000000000016 0.0 650 -651 0.00377416610717773 0.0 0.0 0.0 651 -652 0.00371193885803223 0.00999999999999979 0.00999999999999979 0.0 652 -653 0.0036919116973877 0.0 0.0 0.0 653 -654 0.00371813774108887 0.0 0.0 0.0 654 -655 0.00372219085693359 0.00999999999999979 0.00999999999999979 0.0 655 -656 0.00370907783508301 0.0 0.0 0.0 656 -657 0.00366401672363281 0.0 0.0 0.0 657 -658 0.00366806983947754 0.00999999999999979 0.00999999999999979 0.0 658 -659 0.00368309020996094 0.0 0.0 0.0 659 -660 0.00367307662963867 0.00999999999999979 0.00999999999999979 0.0 660 -661 0.00363898277282715 0.0 0.0 0.0 661 -662 0.003662109375 0.0 0.0 0.0 662 -663 0.00363707542419434 0.00999999999999979 0.00999999999999979 0.0 663 -664 0.00363302230834961 0.0 0.0 0.0 664 -665 0.00366091728210449 0.0 0.0 0.0 665 -666 0.0036771297454834 0.00999999999999979 0.00999999999999979 0.0 666 -667 0.00365710258483887 0.0 0.0 0.0 667 -668 0.00360703468322754 0.00999999999999979 0.00999999999999979 0.0 668 -669 0.00365900993347168 0.0 0.0 0.0 669 -670 0.00479602813720703 0.0 0.0 0.0 670 -671 0.0047600269317627 0.0100000000000016 0.0100000000000016 0.0 671 -672 0.00367999076843262 0.0 0.0 0.0 672 -673 0.00362992286682129 0.00999999999999979 0.00999999999999979 0.0 673 -674 0.00359392166137695 0.0 0.0 0.0 674 -675 0.00365710258483887 0.0 0.0 0.0 675 -676 0.00364899635314941 0.00999999999999979 0.00999999999999979 0.0 676 -677 0.00373482704162598 0.0 0.0 0.0 677 -678 0.00359201431274414 0.0 0.0 0.0 678 -679 0.00365900993347168 0.00999999999999979 0.00999999999999979 0.0 679 -680 0.0036919116973877 0.0 0.0 0.0 680 -681 0.00368595123291016 0.00999999999999979 0.00999999999999979 0.0 681 -682 0.0298888683319092 0.0299999999999994 0.0299999999999994 0.0 682 -683 0.00371694564819336 0.0 0.0 0.0 683 -684 0.00372409820556641 0.0 0.0 0.0 684 -685 0.00371193885803223 0.00999999999999979 0.00999999999999979 0.0 685 -686 0.00372695922851562 0.0 0.0 0.0 686 -687 0.00368809700012207 0.0 0.0 0.0 687 -688 0.0036931037902832 0.0100000000000016 0.0100000000000016 0.0 688 -689 0.00371003150939941 0.0 0.0 0.0 689 -690 0.00369119644165039 0.0 0.0 0.0 690 -691 0.00370192527770996 0.0 0.0 0.0 691 -692 0.00372600555419922 0.0 0.0 0.0 692 -693 0.00372099876403809 0.00999999999999979 0.00999999999999979 0.0 693 -694 0.00371193885803223 0.0 0.0 0.0 694 -695 0.00369095802307129 0.0 0.0 0.0 695 -696 0.00366783142089844 0.00999999999999979 0.00999999999999979 0.0 696 -697 0.00373601913452148 0.0 0.0 0.0 697 -698 0.00366497039794922 0.0 0.0 0.0 698 -699 0.00366806983947754 0.0 0.0 0.0 699 -700 0.00364398956298828 0.0 0.0 0.0 700 -701 0.00358295440673828 0.00999999999999979 0.00999999999999979 0.0 701 -702 0.00363898277282715 0.0 0.0 0.0 702 -703 0.00365304946899414 0.0 0.0 0.0 703 -704 0.00369596481323242 0.00999999999999979 0.00999999999999979 0.0 704 -705 0.00362300872802734 0.0 0.0 0.0 705 -706 0.00362801551818848 0.0 0.0 0.0 706 -707 0.00364899635314941 0.00999999999999979 0.00999999999999979 0.0 707 -708 0.00362491607666016 0.0 0.0 0.0 708 -709 0.00363707542419434 0.0100000000000016 0.0100000000000016 0.0 709 -710 0.00364804267883301 0.0 0.0 0.0 710 -711 0.00362610816955566 0.0 0.0 0.0 711 -712 0.00368213653564453 0.00999999999999979 0.00999999999999979 0.0 712 -713 0.00364398956298828 0.0 0.0 0.0 713 -714 0.00365400314331055 0.0 0.0 0.0 714 -715 0.00364518165588379 0.00999999999999979 0.00999999999999979 0.0 715 -716 0.00361394882202148 0.0 0.0 0.0 716 -717 0.00368309020996094 0.00999999999999979 0.00999999999999979 0.0 717 -718 0.00363492965698242 0.0 0.0 0.0 718 -719 0.0291500091552734 0.0299999999999994 0.0299999999999994 0.0 719 -720 0.00372695922851562 0.0 0.0 0.0 720 -721 0.00369691848754883 0.00999999999999979 0.00999999999999979 0.0 721 -722 0.0036919116973877 0.0 0.0 0.0 722 -723 0.00575518608093262 0.0100000000000016 0.0100000000000016 0.0 723 -724 0.00409793853759766 0.0 0.0 0.0 724 -725 0.00376510620117188 0.0 0.0 0.0 725 -726 0.00382494926452637 0.00999999999999979 0.00999999999999979 0.0 726 -727 0.00373482704162598 0.0 0.0 0.0 727 -728 0.00375699996948242 0.0 0.0 0.0 728 -729 0.00374197959899902 0.00999999999999979 0.00999999999999979 0.0 729 -730 0.00372695922851562 0.0 0.0 0.0 730 -731 0.00370311737060547 0.00999999999999979 0.00999999999999979 0.0 731 -732 0.00367593765258789 0.0 0.0 0.0 732 -733 0.00520992279052734 0.0 0.0 0.0 733 -734 0.00372195243835449 0.00999999999999979 0.00999999999999979 0.0 734 -735 0.00368905067443848 0.0 0.0 0.0 735 -736 0.00366616249084473 0.00999999999999979 0.00999999999999979 0.0 736 -737 0.00368809700012207 0.0 0.0 0.0 737 -738 0.00368499755859375 0.0 0.0 0.0 738 -739 0.00387406349182129 0.00999999999999979 0.00999999999999979 0.0 739 -740 0.00513005256652832 0.0 0.0 0.0 740 -741 0.0036470890045166 0.00999999999999979 0.00999999999999979 0.0 741 -742 0.00371885299682617 0.0 0.0 0.0 742 -743 0.00364398956298828 0.0 0.0 0.0 743 -744 0.00364589691162109 0.00999999999999979 0.00999999999999979 0.0 744 -745 0.00363993644714355 0.0 0.0 0.0 745 -746 0.00364089012145996 0.0 0.0 0.0 746 -747 0.00361490249633789 0.0100000000000016 0.0100000000000016 0.0 747 -748 0.00366783142089844 0.0 0.0 0.0 748 -749 0.00363898277282715 0.0 0.0 0.0 749 -750 0.00363612174987793 0.00999999999999979 0.00999999999999979 0.0 750 -751 0.0036470890045166 0.0 0.0 0.0 751 -752 0.00362300872802734 0.00999999999999979 0.00999999999999979 0.0 752 -753 0.00365209579467773 0.0 0.0 0.0 753 -754 0.00367999076843262 0.0 0.0 0.0 754 -755 0.0036628246307373 0.00999999999999979 0.00999999999999979 0.0 755 -756 0.0293610095977783 0.0299999999999994 0.0299999999999994 0.0 756 -757 0.00370907783508301 0.0 0.0 0.0 757 -758 0.00370001792907715 0.0 0.0 0.0 758 -759 0.00371313095092773 0.00999999999999979 0.00999999999999979 0.0 759 -760 0.00373601913452148 0.0 0.0 0.0 760 -761 0.00375699996948242 0.0100000000000016 0.0100000000000016 0.0 761 -762 0.00379014015197754 0.0 0.0 0.0 762 -763 0.00373101234436035 0.0 0.0 0.0 763 -764 0.00369596481323242 0.00999999999999979 0.00999999999999979 0.0 764 -765 0.00373291969299316 0.0 0.0 0.0 765 -766 0.0037081241607666 0.0 0.0 0.0 766 -767 0.00425601005554199 0.00999999999999979 0.00999999999999979 0.0 767 -768 0.00375699996948242 0.0 0.0 0.0 768 -769 0.0037529468536377 0.00999999999999979 0.00999999999999979 0.0 769 -770 0.00371789932250977 0.0 0.0 0.0 770 -771 0.0037229061126709 0.0 0.0 0.0 771 -772 0.00371003150939941 0.00999999999999979 0.00999999999999979 0.0 772 -773 0.00370311737060547 0.0 0.0 0.0 773 -774 0.00365304946899414 0.0 0.0 0.0 774 -775 0.00366783142089844 0.00999999999999979 0.00999999999999979 0.0 775 -776 0.00362801551818848 0.0 0.0 0.0 776 -777 0.00360703468322754 0.00999999999999979 0.00999999999999979 0.0 777 -778 0.00365209579467773 0.0 0.0 0.0 778 -779 0.00366592407226562 0.0 0.0 0.0 779 -780 0.0036308765411377 0.00999999999999979 0.00999999999999979 0.0 780 -781 0.00458216667175293 0.0 0.0 0.0 781 -782 0.00462603569030762 0.0100000000000016 0.0100000000000016 0.0 782 -783 0.00362300872802734 0.0 0.0 0.0 783 -784 0.00360298156738281 0.0 0.0 0.0 784 -785 0.00363993644714355 0.00999999999999979 0.00999999999999979 0.0 785 -786 0.00367403030395508 0.0 0.0 0.0 786 -787 0.00365209579467773 0.0 0.0 0.0 787 -788 0.00373411178588867 0.00999999999999979 0.00999999999999979 0.0 788 -789 0.0038609504699707 0.0 0.0 0.0 789 -790 0.00365781784057617 0.00999999999999979 0.00999999999999979 0.0 790 -791 0.00362110137939453 0.0 0.0 0.0 791 -792 0.00369000434875488 0.0 0.0 0.0 792 -793 0.0307409763336182 0.0299999999999994 0.0299999999999994 0.0 793 -794 0.00374913215637207 0.00999999999999979 0.00999999999999979 0.0 794 -795 0.00369882583618164 0.0 0.0 0.0 795 -796 0.00370097160339355 0.00999999999999979 0.00999999999999979 0.0 796 -797 0.00375890731811523 0.0 0.0 0.0 797 -798 0.00378894805908203 0.0 0.0 0.0 798 -799 0.00387096405029297 0.0100000000000016 0.0100000000000016 0.0 799 -800 0.00368213653564453 0.0 0.0 0.0 800 -801 0.00372719764709473 0.0 0.0 0.0 801 -802 0.00373101234436035 0.00999999999999979 0.00999999999999979 0.0 802 -803 0.00372600555419922 0.0 0.0 0.0 803 -804 0.00373411178588867 0.00999999999999979 0.00999999999999979 0.0 804 -805 0.00366687774658203 0.0 0.0 0.0 805 -806 0.00370907783508301 0.0 0.0 0.0 806 -807 0.0036921501159668 0.00999999999999979 0.00999999999999979 0.0 807 -808 0.00377511978149414 0.0 0.0 0.0 808 -809 0.00365090370178223 0.0 0.0 0.0 809 -810 0.00374388694763184 0.00999999999999979 0.00999999999999979 0.0 810 -811 0.0036778450012207 0.0 0.0 0.0 811 -812 0.0036780834197998 0.00999999999999979 0.00999999999999979 0.0 812 -813 0.00362801551818848 0.0 0.0 0.0 813 -814 0.00365304946899414 0.0 0.0 0.0 814 -815 0.00363516807556152 0.00999999999999979 0.00999999999999979 0.0 815 -816 0.00369000434875488 0.0 0.0 0.0 816 -817 0.00373196601867676 0.0 0.0 0.0 817 -818 0.00360512733459473 0.00999999999999979 0.00999999999999979 0.0 818 -819 0.00361204147338867 0.0 0.0 0.0 819 -820 0.00362610816955566 0.0100000000000016 0.0100000000000016 0.0 820 -821 0.00365090370178223 0.0 0.0 0.0 821 -822 0.00360703468322754 0.0 0.0 0.0 822 -823 0.00362896919250488 0.00999999999999979 0.00999999999999979 0.0 823 -824 0.0036468505859375 0.0 0.0 0.0 824 -825 0.0036320686340332 0.0 0.0 0.0 825 -826 0.00362610816955566 0.00999999999999979 0.00999999999999979 0.0 826 -827 0.00365090370178223 0.0 0.0 0.0 827 -828 0.00363516807556152 0.00999999999999979 0.00999999999999979 0.0 828 -829 0.00368213653564453 0.0 0.0 0.0 829 -830 0.0292301177978516 0.0299999999999994 0.0299999999999994 0.0 830 -831 0.0037531852722168 0.0 0.0 0.0 831 -832 0.00371718406677246 0.00999999999999979 0.00999999999999979 0.0 832 -833 0.0037989616394043 0.0 0.0 0.0 833 -834 0.00615215301513672 0.0100000000000016 0.0100000000000016 0.0 834 -835 0.00377607345581055 0.0 0.0 0.0 835 -836 0.00370907783508301 0.0 0.0 0.0 836 -837 0.00371098518371582 0.00999999999999979 0.00999999999999979 0.0 837 -838 0.00375103950500488 0.0 0.0 0.0 838 -839 0.00372099876403809 0.0 0.0 0.0 839 -840 0.00375795364379883 0.00999999999999979 0.00999999999999979 0.0 840 -841 0.00370502471923828 0.0 0.0 0.0 841 -842 0.00369787216186523 0.00999999999999979 0.00999999999999979 0.0 842 -843 0.00369501113891602 0.0 0.0 0.0 843 -844 0.00370883941650391 0.0 0.0 0.0 844 -845 0.00371408462524414 0.00999999999999979 0.00999999999999979 0.0 845 -846 0.00368404388427734 0.0 0.0 0.0 846 -847 0.0038149356842041 0.0 0.0 0.0 847 -848 0.00367403030395508 0.00999999999999979 0.00999999999999979 0.0 848 -849 0.00365686416625977 0.0 0.0 0.0 849 -850 0.00383400917053223 0.00999999999999979 0.00999999999999979 0.0 850 -851 0.00394606590270996 0.0 0.0 0.0 851 -852 0.00365996360778809 0.0 0.0 0.0 852 -853 0.00365495681762695 0.00999999999999979 0.00999999999999979 0.0 853 -854 0.00370621681213379 0.0 0.0 0.0 854 -855 0.0036461353302002 0.0 0.0 0.0 855 -856 0.00365281105041504 0.00999999999999979 0.00999999999999979 0.0 856 -857 0.00365686416625977 0.0 0.0 0.0 857 -858 0.00365400314331055 0.0100000000000016 0.0100000000000016 0.0 858 -859 0.00363683700561523 0.0 0.0 0.0 859 -860 0.00365209579467773 0.0 0.0 0.0 860 -861 0.00365614891052246 0.00999999999999979 0.00999999999999979 0.0 861 -862 0.00419211387634277 0.0 0.0 0.0 862 -863 0.00362920761108398 0.0 0.0 0.0 863 -864 0.0062098503112793 0.0 0.0 0.0 864 -865 0.00613093376159668 0.00999999999999979 0.00999999999999979 0.0 865 -866 0.00604104995727539 0.0 0.0 0.0 866 -867 0.0290992259979248 0.0299999999999994 0.0299999999999994 0.0 867 -868 0.00398516654968262 0.00999999999999979 0.00999999999999979 0.0 868 -869 0.00370597839355469 0.0 0.0 0.0 869 -870 0.00374913215637207 0.0 0.0 0.0 870 -871 0.00371384620666504 0.0100000000000016 0.0100000000000016 0.0 871 -872 0.00374984741210938 0.0 0.0 0.0 872 -873 0.00371623039245605 0.00999999999999979 0.00999999999999979 0.0 873 -874 0.00370502471923828 0.0 0.0 0.0 874 -875 0.00371003150939941 0.0 0.0 0.0 875 -876 0.00368094444274902 0.00999999999999979 0.00999999999999979 0.0 876 -877 0.00372886657714844 0.0 0.0 0.0 877 -878 0.00374293327331543 0.0 0.0 0.0 878 -879 0.00372195243835449 0.00999999999999979 0.00999999999999979 0.0 879 -880 0.00373101234436035 0.0 0.0 0.0 880 -881 0.00373005867004395 0.00999999999999979 0.00999999999999979 0.0 881 -882 0.00367903709411621 0.0 0.0 0.0 882 -883 0.00371694564819336 0.0 0.0 0.0 883 -884 0.00383996963500977 0.00999999999999979 0.00999999999999979 0.0 884 -885 0.00367379188537598 0.0 0.0 0.0 885 -886 0.00366806983947754 0.0 0.0 0.0 886 -887 0.0036468505859375 0.00999999999999979 0.00999999999999979 0.0 887 -888 0.00361895561218262 0.0 0.0 0.0 888 -889 0.00358295440673828 0.00999999999999979 0.00999999999999979 0.0 889 -890 0.00368213653564453 0.0 0.0 0.0 890 -891 0.0056309700012207 0.0 0.0 0.0 891 -892 0.00402593612670898 0.0 0.0 0.0 892 -893 0.00361013412475586 0.0 0.0 0.0 893 -894 0.00365805625915527 0.00999999999999979 0.00999999999999979 0.0 894 -895 0.00363683700561523 0.0 0.0 0.0 895 -896 0.00369787216186523 0.0 0.0 0.0 896 -897 0.00366902351379395 0.00999999999999979 0.00999999999999979 0.0 897 -898 0.00373387336730957 0.0 0.0 0.0 898 -899 0.00364398956298828 0.00999999999999979 0.00999999999999979 0.0 899 -900 0.00363802909851074 0.0 0.0 0.0 900 -901 0.00359702110290527 0.0 0.0 0.0 901 -902 0.00368213653564453 0.00999999999999979 0.00999999999999979 0.0 902 -903 0.00368189811706543 0.0 0.0 0.0 903 -904 0.0309450626373291 0.0299999999999994 0.0299999999999994 0.0 904 -905 0.00368690490722656 0.0 0.0 0.0 905 -906 0.00371503829956055 0.00999999999999979 0.00999999999999979 0.0 906 -907 0.00382113456726074 0.0 0.0 0.0 907 -908 0.00382494926452637 0.0100000000000016 0.0100000000000016 0.0 908 -909 0.00365877151489258 0.0 0.0 0.0 909 -910 0.00371003150939941 0.0 0.0 0.0 910 -911 0.00370597839355469 0.00999999999999979 0.00999999999999979 0.0 911 -912 0.00368905067443848 0.0 0.0 0.0 912 -913 0.00370502471923828 0.0 0.0 0.0 913 -914 0.00374197959899902 0.00999999999999979 0.00999999999999979 0.0 914 -915 0.00374484062194824 0.0 0.0 0.0 915 -916 0.00371503829956055 0.00999999999999979 0.00999999999999979 0.0 916 -917 0.00371503829956055 0.0 0.0 0.0 917 -918 0.00377702713012695 0.0 0.0 0.0 918 -919 0.00374889373779297 0.00999999999999979 0.00999999999999979 0.0 919 -920 0.00369787216186523 0.0 0.0 0.0 920 -921 0.00368094444274902 0.0 0.0 0.0 921 -922 0.00360298156738281 0.0 0.0 0.0 922 -923 0.00363612174987793 0.0 0.0 0.0 923 -924 0.00366091728210449 0.00999999999999979 0.00999999999999979 0.0 924 -925 0.00364089012145996 0.0 0.0 0.0 925 -926 0.0036780834197998 0.0 0.0 0.0 926 -927 0.00362300872802734 0.00999999999999979 0.00999999999999979 0.0 927 -928 0.00365400314331055 0.0 0.0 0.0 928 -929 0.00363397598266602 0.0 0.0 0.0 929 -930 0.00364303588867188 0.0100000000000016 0.0100000000000016 0.0 930 -931 0.00363302230834961 0.0 0.0 0.0 931 -932 0.0036160945892334 0.00999999999999979 0.00999999999999979 0.0 932 -933 0.00370216369628906 0.0 0.0 0.0 933 -934 0.00365400314331055 0.0 0.0 0.0 934 -935 0.00365090370178223 0.00999999999999979 0.00999999999999979 0.0 935 -936 0.00369095802307129 0.0 0.0 0.0 936 -937 0.00361013412475586 0.0 0.0 0.0 937 -938 0.00361990928649902 0.00999999999999979 0.00999999999999979 0.0 938 -939 0.0036778450012207 0.0 0.0 0.0 939 -940 0.00370097160339355 0.00999999999999979 0.00999999999999979 0.0 940 -941 0.0296061038970947 0.0199999999999996 0.0199999999999996 0.0 941 -942 0.00377488136291504 0.00999999999999979 0.00999999999999979 0.0 942 -943 0.00529098510742188 0.0 0.0 0.0 943 -944 0.0046539306640625 0.0100000000000016 0.0100000000000016 0.0 944 -945 0.00372815132141113 0.0 0.0 0.0 945 -946 0.00383687019348145 0.00999999999999979 0.00999999999999979 0.0 946 -947 0.00372600555419922 0.0 0.0 0.0 947 -948 0.00372004508972168 0.0 0.0 0.0 948 -949 0.00370407104492188 0.00999999999999979 0.00999999999999979 0.0 949 -950 0.00370383262634277 0.0 0.0 0.0 950 -951 0.0037238597869873 0.00999999999999979 0.00999999999999979 0.0 951 -952 0.00373983383178711 0.00999999999999979 0.0 0.01 952 -953 0.00368404388427734 0.0 0.0 0.0 953 -954 0.00569581985473633 0.00999999999999979 0.00999999999999979 0.0 954 -955 0.00375699996948242 0.0 0.0 0.0 955 -956 0.00373697280883789 0.0 0.0 0.0 956 -957 0.00367903709411621 0.00999999999999979 0.00999999999999979 0.0 957 -958 0.00369405746459961 0.0 0.0 0.0 958 -959 0.00399684906005859 0.00999999999999979 0.00999999999999979 0.0 959 -960 0.00383996963500977 0.0 0.0 0.0 960 -961 0.00363612174987793 0.0 0.0 0.0 961 -962 0.00361013412475586 0.00999999999999979 0.00999999999999979 0.0 962 -963 0.00373411178588867 0.0 0.0 0.0 963 -964 0.00365495681762695 0.0 0.0 0.0 964 -965 0.0036311149597168 0.00999999999999979 0.00999999999999979 0.0 965 -966 0.00362300872802734 0.0 0.0 0.0 966 -967 0.00367403030395508 0.0100000000000016 0.0100000000000016 0.0 967 -968 0.00365304946899414 0.0 0.0 0.0 968 -969 0.00368213653564453 0.0 0.0 0.0 969 -970 0.0036468505859375 0.00999999999999979 0.00999999999999979 0.0 970 -971 0.00365900993347168 0.0 0.0 0.0 971 -972 0.00365519523620605 0.0 0.0 0.0 972 -973 0.00365710258483887 0.00999999999999979 0.00999999999999979 0.0 973 -974 0.00362801551818848 0.0 0.0 0.0 974 -975 0.00365090370178223 0.0 0.0 0.0 975 -976 0.00363993644714355 0.0 0.0 0.0 976 -977 0.00367403030395508 0.0 0.0 0.0 977 -978 0.0291531085968018 0.0299999999999994 0.0299999999999994 0.0 978 -979 0.00371599197387695 0.00999999999999979 0.00999999999999979 0.0 979 -980 0.00370097160339355 0.0 0.0 0.0 980 -981 0.00372910499572754 0.0 0.0 0.0 981 -982 0.00373220443725586 0.0100000000000016 0.0100000000000016 0.0 982 -983 0.00378298759460449 0.0 0.0 0.0 983 -984 0.00374412536621094 0.0 0.0 0.0 984 -985 0.00372099876403809 0.00999999999999979 0.00999999999999979 0.0 985 -986 0.00369501113891602 0.0 0.0 0.0 986 -987 0.0042259693145752 0.00999999999999979 0.00999999999999979 0.0 987 -988 0.00376200675964355 0.0 0.0 0.0 988 -989 0.00373697280883789 0.0 0.0 0.0 989 -990 0.00372409820556641 0.00999999999999979 0.00999999999999979 0.0 990 -991 0.00370192527770996 0.0 0.0 0.0 991 -992 0.00368189811706543 0.0 0.0 0.0 992 -993 0.00370502471923828 0.00999999999999979 0.00999999999999979 0.0 993 -994 0.00371217727661133 0.0 0.0 0.0 994 -995 0.0036919116973877 0.00999999999999979 0.00999999999999979 0.0 995 -996 0.00366711616516113 0.0 0.0 0.0 996 -997 0.00371313095092773 0.0 0.0 0.0 997 -998 0.00365209579467773 0.00999999999999979 0.00999999999999979 0.0 998 -999 0.00362896919250488 0.0 0.0 0.0 999 -1000 0.00367307662963867 0.0 0.0 0.0 1000 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log deleted file mode 100644 index d8a6aa31..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/data-p4-3GHz-ruby18/ParserBenchmarkYAML.log +++ /dev/null @@ -1,82 +0,0 @@ -========================== 2009-04-01T16:46:41 CEST =========================== -Benchmarking on ruby 1.8.6 (2008-08-11 patchlevel 287) [i686-linux]. -Running 'ParserBenchmarkYAML' for 1000 iterations/method (compare_time=real) -=============================================================================== - -This first run is only for warmup. -ParserBenchmarkYAML#parser: - real total user system -sum 4.506546021 4.490000000 4.480000000 0.010000000 -min 0.003598928 0.000000000 0.000000000 0.000000000 -std- 0.000288588 -0.001817113 -0.001826296 -0.000306228 -mean 0.004506546 0.004490000 0.004480000 0.000010000 -std+ 0.008724504 0.010797113 0.010786296 0.000326228 -max 0.042540073 0.040000000 0.040000000 0.010000000 -std 0.004217958 0.006307113 0.006306296 0.000316228 -std% 93.596247306 140.470232048 140.765535944 3162.277660168 -harm 0.003882332 nan nan nan -geo 0.004019118 0.000000000 0.000000000 0.000000000 -q1 0.003660917 0.000000000 0.000000000 0.000000000 -med 0.003705978 0.000000000 0.000000000 0.000000000 -q3 0.003748715 0.010000000 0.010000000 0.000000000 - 1000 221.89943 0.004506546 - calls calls/sec secs/call - - 0.04059 -| - 0.03670 -| - 0.03280 -| - 0.02891 -|* - 0.02502 -| - 0.02112 -| - 0.01723 -| - 0.01333 -| - 0.00944 -| - 0.00555 -|************************************************** - -Outliers detected with box plot algo (median=0.00371, iqr=0.00009, factor=3.00): -high=56 very_high=119 - -Ljung-Box statistics: q=433.20488 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -ParserBenchmarkYAML#parser: - real total user system -sum 4.454077959 4.430000000 4.420000000 0.010000000 -min 0.003582954 0.000000000 0.000000000 0.000000000 -std- 0.000263948 -0.001903657 -0.001912749 -0.000306228 -mean 0.004454078 0.004430000 0.004420000 0.000010000 -std+ 0.008644208 0.010763657 0.010752749 0.000326228 -max 0.035927057 0.040000000 0.040000000 0.010000000 -std 0.004190130 0.006333657 0.006332749 0.000316228 -std% 94.074019869 142.971948832 143.274853190 3162.277660168 -harm 0.003836471 nan nan nan -geo 0.003968258 0.000000000 0.000000000 0.000000000 -q1 0.003650367 0.000000000 0.000000000 0.000000000 -med 0.003690004 0.000000000 0.000000000 0.000000000 -q3 0.003731966 0.010000000 0.010000000 0.000000000 - 1000 224.51336 0.004454078 - calls calls/sec secs/call - - 0.03431 -| - 0.03108 -|* - 0.02784 -|* - 0.02461 -| - 0.02137 -| - 0.01814 -| - 0.01490 -| - 0.01167 -| - 0.00843 -| - 0.00520 -|************************************************** - -Outliers detected with box plot algo (median=0.00369, iqr=0.00008, factor=3.00): -high=58 very_high=100 - -Ljung-Box statistics: q=451.12745 (alpha=0.05, df=50). -1.00000 >= 0.95000 => Autocorrelation was detected. - -No initial data truncated. - => System may have been in a steady state from the beginning. -========================== 2009-04-01T16:46:54 CEST =========================== - -Writing measurement data file '/data/scm/json/benchmarks/data/ParserBenchmarkYAML#parser.dat'. -Writing autocorrelation plot file '/data/scm/json/benchmarks/data/ParserBenchmarkYAML#parser-autocorrelation.dat'. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/generator_benchmark.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/generator_benchmark.rb deleted file mode 100755 index 1d29e631..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/generator_benchmark.rb +++ /dev/null @@ -1,165 +0,0 @@ -#!/usr/bin/env ruby -# CODING: UTF-8 - -require 'rbconfig' -RUBY_PATH=File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']) -RAKE_PATH=File.join(Config::CONFIG['bindir'], 'rake') -require 'bullshit' -case ARGV.first -when 'ext' - require 'json/ext' -when 'pure' - require 'json/pure' -when 'rails' - require 'active_support' -end - -module JSON - def self.[](*) end -end - -module GeneratorBenchmarkCommon - include JSON - - def setup - a = [ nil, false, true, "fÖßÄr", [ "n€st€d", true ], { "fooß" => "bär", "quux" => true } ] - puts a.to_json - @big = a * 100 - end - - def generic_reset_method - @result and @result.size > 2 + 6 * @big.size or raise @result.to_s - end -end - -module JSONGeneratorCommon - include GeneratorBenchmarkCommon - - def benchmark_generator_fast - @result = JSON.fast_generate(@big) - end - - alias reset_benchmark_generator_fast generic_reset_method - - def benchmark_generator_safe - @result = JSON.generate(@big) - end - - alias reset_benchmark_generator_safe generic_reset_method - - def benchmark_generator_pretty - @result = JSON.pretty_generate(@big) - end - - alias reset_benchmark_generator_pretty generic_reset_method -end - -class GeneratorBenchmarkExt < Bullshit::RepeatCase - include JSONGeneratorCommon - - warmup yes - iterations 1000 - - truncate_data do - alpha_level 0.05 - window_size 50 - slope_angle 0.1 - end - - autocorrelation do - alpha_level 0.05 - max_lags 50 - file yes - end - - - output_dir File.join(File.dirname(__FILE__), 'data') - output_filename benchmark_name + '.log' - data_file yes - histogram yes -end - -class GeneratorBenchmarkPure < Bullshit::RepeatCase - include JSONGeneratorCommon - - warmup yes - iterations 1000 - - truncate_data do - alpha_level 0.05 - window_size 50 - slope_angle 0.1 - end - - autocorrelation do - alpha_level 0.05 - max_lags 50 - file yes - end - - output_dir File.join(File.dirname(__FILE__), 'data') - output_filename benchmark_name + '.log' - data_file yes - histogram yes -end - -class GeneratorBenchmarkRails < Bullshit::RepeatCase - include GeneratorBenchmarkCommon - - warmup yes - iterations 1000 - - truncate_data do - alpha_level 0.05 - window_size 50 - slope_angle 0.1 - end - - autocorrelation do - alpha_level 0.05 - max_lags 50 - file yes - end - - output_dir File.join(File.dirname(__FILE__), 'data') - output_filename benchmark_name + '.log' - data_file yes - histogram yes - - def benchmark_generator - @result = @big.to_json - end - - alias reset_benchmark_generator generic_reset_method -end - -if $0 == __FILE__ - Bullshit::Case.autorun false - - case ARGV.first - when 'ext' - GeneratorBenchmarkExt.run - when 'pure' - GeneratorBenchmarkPure.run - when 'rails' - GeneratorBenchmarkRails.run - else - system "#{RAKE_PATH} clean" - system "#{RUBY_PATH} #$0 rails" - system "#{RUBY_PATH} #$0 pure" - system "#{RAKE_PATH} compile_ext" - system "#{RUBY_PATH} #$0 ext" - Bullshit.compare do - output_filename File.join(File.dirname(__FILE__), 'data', 'GeneratorBenchmarkComparison.log') - - benchmark GeneratorBenchmarkExt, :generator_fast, :load => yes - benchmark GeneratorBenchmarkExt, :generator_safe, :load => yes - benchmark GeneratorBenchmarkExt, :generator_pretty, :load => yes - benchmark GeneratorBenchmarkPure, :generator_fast, :load => yes - benchmark GeneratorBenchmarkPure, :generator_safe, :load => yes - benchmark GeneratorBenchmarkPure, :generator_pretty, :load => yes - benchmark GeneratorBenchmarkRails, :generator, :load => yes - end - end -end - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/parser_benchmark.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/parser_benchmark.rb deleted file mode 100755 index 38af54d1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/benchmarks/parser_benchmark.rb +++ /dev/null @@ -1,197 +0,0 @@ -#!/usr/bin/env ruby -# CODING: UTF-8 - -require 'rbconfig' -RUBY_PATH=File.join(Config::CONFIG['bindir'], Config::CONFIG['ruby_install_name']) -RAKE_PATH=File.join(Config::CONFIG['bindir'], 'rake') -require 'bullshit' -case ARGV.first -when 'ext' - require 'json/ext' -when 'pure' - require 'json/pure' -when 'yaml' - require 'yaml' - require 'json/pure' -when 'rails' - require 'active_support' - require 'json/pure' -else - require 'json/pure' -end - -module ParserBenchmarkCommon - include JSON - - def setup - a = [ nil, false, true, "fÖß\nÄr", [ "n€st€d", true ], { "fooß" => "bär", "qu\r\nux" => true } ] - @big = a * 100 - @json = JSON.generate(@big) - end - - def generic_reset_method - @result == @big or raise "not equal" - end -end - -class ParserBenchmarkExt < Bullshit::RepeatCase - include ParserBenchmarkCommon - - warmup yes - iterations 1000 - - truncate_data do - alpha_level 0.05 - window_size 50 - slope_angle 0.1 - end - - autocorrelation do - alpha_level 0.05 - max_lags 50 - file yes - end - - output_dir File.join(File.dirname(__FILE__), 'data') - output_filename benchmark_name + '.log' - data_file yes - histogram yes - - def benchmark_parser - @result = JSON.parse(@json) - end - - alias reset_parser generic_reset_method -end - -class ParserBenchmarkPure < Bullshit::RepeatCase - include ParserBenchmarkCommon - - warmup yes - iterations 1000 - - truncate_data do - alpha_level 0.05 - window_size 50 - slope_angle 0.1 - end - - autocorrelation do - alpha_level 0.05 - max_lags 50 - file yes - end - - output_dir File.join(File.dirname(__FILE__), 'data') - output_filename benchmark_name + '.log' - data_file yes - histogram yes - - def benchmark_parser - @result = JSON.parse(@json) - end - - alias reset_parser generic_reset_method -end - -class ParserBenchmarkYAML < Bullshit::RepeatCase - warmup yes - iterations 1000 - - truncate_data do - alpha_level 0.05 - window_size 50 - slope_angle 0.1 - end - - autocorrelation do - alpha_level 0.05 - max_lags 50 - file yes - end - - output_dir File.join(File.dirname(__FILE__), 'data') - output_filename benchmark_name + '.log' - data_file yes - histogram yes - - def setup - a = [ nil, false, true, "fÖß\nÄr", [ "n€st€d", true ], { "fooß" => "bär", "qu\r\nux" => true } ] - @big = a * 100 - @json = JSON.pretty_generate(@big) - end - - def benchmark_parser - @result = YAML.load(@json) - end - - def generic_reset_method - @result == @big or raise "not equal" - end -end - -class ParserBenchmarkRails < Bullshit::RepeatCase - warmup yes - iterations 1000 - - truncate_data do - alpha_level 0.05 - window_size 50 - slope_angle 0.1 - end - - autocorrelation do - alpha_level 0.05 - max_lags 50 - file yes - end - - output_dir File.join(File.dirname(__FILE__), 'data') - output_filename benchmark_name + '.log' - data_file yes - histogram yes - - def setup - a = [ nil, false, true, "fÖß\nÄr", [ "n€st€d", true ], { "fooß" => "bär", "qu\r\nux" => true } ] - @big = a * 100 - @json = JSON.generate(@big) - end - - def benchmark_parser - @result = ActiveSupport::JSON.decode(@json) - end - - def generic_reset_method - @result == @big or raise "not equal" - end -end - -if $0 == __FILE__ - Bullshit::Case.autorun false - - case ARGV.first - when 'ext' - ParserBenchmarkExt.run - when 'pure' - ParserBenchmarkPure.run - when 'yaml' - ParserBenchmarkYAML.run - when 'rails' - ParserBenchmarkRails.run - else - system "#{RAKE_PATH} clean" - system "#{RUBY_PATH} #$0 yaml" - system "#{RUBY_PATH} #$0 rails" - system "#{RUBY_PATH} #$0 pure" - system "#{RAKE_PATH} compile_ext" - system "#{RUBY_PATH} #$0 ext" - Bullshit.compare do - output_filename File.join(File.dirname(__FILE__), 'data', 'ParserBenchmarkComparison.log') - - benchmark ParserBenchmarkExt, :parser, :load => yes - benchmark ParserBenchmarkPure, :parser, :load => yes - benchmark ParserBenchmarkYAML, :parser, :load => yes - benchmark ParserBenchmarkRails, :parser, :load => yes - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/bin/edit_json.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/bin/edit_json.rb deleted file mode 100755 index 04a8189d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/bin/edit_json.rb +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env ruby -require 'json/editor' - -filename, encoding = ARGV -JSON::Editor.start(encoding) do |window| - if filename - window.file_open(filename) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/bin/prettify_json.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/bin/prettify_json.rb deleted file mode 100755 index 5e1f8062..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/bin/prettify_json.rb +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env ruby - -require 'json' -require 'fileutils' -include FileUtils - -# Parses the argument array _args_, according to the pattern _s_, to -# retrieve the single character command line options from it. If _s_ is -# 'xy:' an option '-x' without an option argument is searched, and an -# option '-y foo' with an option argument ('foo'). -# -# An option hash is returned with all found options set to true or the -# found option argument. -def go(s, args = ARGV) - b, v = s.scan(/(.)(:?)/).inject([{},{}]) { |t,(o,a)| - t[a.empty? ? 0 : 1][o] = a.empty? ? false : nil - t - } - while a = args.shift - a !~ /\A-(.+)/ and args.unshift a and break - p = $1 - until p == '' - o = p.slice!(0, 1) - if v.key?(o) - v[o] = if p == '' then args.shift or break 1 else p end - break - elsif b.key?(o) - b[o] = true - else - args.unshift a - break 1 - end - end and break - end - b.merge(v) -end - -opts = go 'slhi:', args = ARGV.dup -if opts['h'] || opts['l'] && opts['s'] - puts < - - - Javascript Example - - - - - -

        Fetching object from server

        -
        - Wait...
        - -
        - - - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/data/prototype.js b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/data/prototype.js deleted file mode 100644 index 5c734629..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json-1.2.0/data/prototype.js +++ /dev/null @@ -1,4184 +0,0 @@ -/* Prototype JavaScript framework, version 1.6.0 - * (c) 2005-2007 Sam Stephenson - * - * Prototype is freely distributable under the terms of an MIT-style license. - * For details, see the Prototype web site: http://www.prototypejs.org/ - * - *--------------------------------------------------------------------------*/ - -var Prototype = { - Version: '1.6.0', - - Browser: { - IE: !!(window.attachEvent && !window.opera), - Opera: !!window.opera, - WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, - Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1, - MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) - }, - - BrowserFeatures: { - XPath: !!document.evaluate, - ElementExtensions: !!window.HTMLElement, - SpecificElementExtensions: - document.createElement('div').__proto__ && - document.createElement('div').__proto__ !== - document.createElement('form').__proto__ - }, - - ScriptFragment: ']*>([\\S\\s]*?)<\/script>', - JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, - - emptyFunction: function() { }, - K: function(x) { return x } -}; - -if (Prototype.Browser.MobileSafari) - Prototype.BrowserFeatures.SpecificElementExtensions = false; - -if (Prototype.Browser.WebKit) - Prototype.BrowserFeatures.XPath = false; - -/* Based on Alex Arnell's inheritance implementation. */ -var Class = { - create: function() { - var parent = null, properties = $A(arguments); - if (Object.isFunction(properties[0])) - parent = properties.shift(); - - function klass() { - this.initialize.apply(this, arguments); - } - - Object.extend(klass, Class.Methods); - klass.superclass = parent; - klass.subclasses = []; - - if (parent) { - var subclass = function() { }; - subclass.prototype = parent.prototype; - klass.prototype = new subclass; - parent.subclasses.push(klass); - } - - for (var i = 0; i < properties.length; i++) - klass.addMethods(properties[i]); - - if (!klass.prototype.initialize) - klass.prototype.initialize = Prototype.emptyFunction; - - klass.prototype.constructor = klass; - - return klass; - } -}; - -Class.Methods = { - addMethods: function(source) { - var ancestor = this.superclass && this.superclass.prototype; - var properties = Object.keys(source); - - if (!Object.keys({ toString: true }).length) - properties.push("toString", "valueOf"); - - for (var i = 0, length = properties.length; i < length; i++) { - var property = properties[i], value = source[property]; - if (ancestor && Object.isFunction(value) && - value.argumentNames().first() == "$super") { - var method = value, value = Object.extend((function(m) { - return function() { return ancestor[m].apply(this, arguments) }; - })(property).wrap(method), { - valueOf: function() { return method }, - toString: function() { return method.toString() } - }); - } - this.prototype[property] = value; - } - - return this; - } -}; - -var Abstract = { }; - -Object.extend = function(destination, source) { - for (var property in source) - destination[property] = source[property]; - return destination; -}; - -Object.extend(Object, { - inspect: function(object) { - try { - if (object === undefined) return 'undefined'; - if (object === null) return 'null'; - return object.inspect ? object.inspect() : object.toString(); - } catch (e) { - if (e instanceof RangeError) return '...'; - throw e; - } - }, - - toJSON: function(object) { - var type = typeof object; - switch (type) { - case 'undefined': - case 'function': - case 'unknown': return; - case 'boolean': return object.toString(); - } - - if (object === null) return 'null'; - if (object.toJSON) return object.toJSON(); - if (Object.isElement(object)) return; - - var results = []; - for (var property in object) { - var value = Object.toJSON(object[property]); - if (value !== undefined) - results.push(property.toJSON() + ': ' + value); - } - - return '{' + results.join(', ') + '}'; - }, - - toQueryString: function(object) { - return $H(object).toQueryString(); - }, - - toHTML: function(object) { - return object && object.toHTML ? object.toHTML() : String.interpret(object); - }, - - keys: function(object) { - var keys = []; - for (var property in object) - keys.push(property); - return keys; - }, - - values: function(object) { - var values = []; - for (var property in object) - values.push(object[property]); - return values; - }, - - clone: function(object) { - return Object.extend({ }, object); - }, - - isElement: function(object) { - return object && object.nodeType == 1; - }, - - isArray: function(object) { - return object && object.constructor === Array; - }, - - isHash: function(object) { - return object instanceof Hash; - }, - - isFunction: function(object) { - return typeof object == "function"; - }, - - isString: function(object) { - return typeof object == "string"; - }, - - isNumber: function(object) { - return typeof object == "number"; - }, - - isUndefined: function(object) { - return typeof object == "undefined"; - } -}); - -Object.extend(Function.prototype, { - argumentNames: function() { - var names = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip"); - return names.length == 1 && !names[0] ? [] : names; - }, - - bind: function() { - if (arguments.length < 2 && arguments[0] === undefined) return this; - var __method = this, args = $A(arguments), object = args.shift(); - return function() { - return __method.apply(object, args.concat($A(arguments))); - } - }, - - bindAsEventListener: function() { - var __method = this, args = $A(arguments), object = args.shift(); - return function(event) { - return __method.apply(object, [event || window.event].concat(args)); - } - }, - - curry: function() { - if (!arguments.length) return this; - var __method = this, args = $A(arguments); - return function() { - return __method.apply(this, args.concat($A(arguments))); - } - }, - - delay: function() { - var __method = this, args = $A(arguments), timeout = args.shift() * 1000; - return window.setTimeout(function() { - return __method.apply(__method, args); - }, timeout); - }, - - wrap: function(wrapper) { - var __method = this; - return function() { - return wrapper.apply(this, [__method.bind(this)].concat($A(arguments))); - } - }, - - methodize: function() { - if (this._methodized) return this._methodized; - var __method = this; - return this._methodized = function() { - return __method.apply(null, [this].concat($A(arguments))); - }; - } -}); - -Function.prototype.defer = Function.prototype.delay.curry(0.01); - -Date.prototype.toJSON = function() { - return '"' + this.getUTCFullYear() + '-' + - (this.getUTCMonth() + 1).toPaddedString(2) + '-' + - this.getUTCDate().toPaddedString(2) + 'T' + - this.getUTCHours().toPaddedString(2) + ':' + - this.getUTCMinutes().toPaddedString(2) + ':' + - this.getUTCSeconds().toPaddedString(2) + 'Z"'; -}; - -var Try = { - these: function() { - var returnValue; - - for (var i = 0, length = arguments.length; i < length; i++) { - var lambda = arguments[i]; - try { - returnValue = lambda(); - break; - } catch (e) { } - } - - return returnValue; - } -}; - -RegExp.prototype.match = RegExp.prototype.test; - -RegExp.escape = function(str) { - return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); -}; - -/*--------------------------------------------------------------------------*/ - -var PeriodicalExecuter = Class.create({ - initialize: function(callback, frequency) { - this.callback = callback; - this.frequency = frequency; - this.currentlyExecuting = false; - - this.registerCallback(); - }, - - registerCallback: function() { - this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); - }, - - execute: function() { - this.callback(this); - }, - - stop: function() { - if (!this.timer) return; - clearInterval(this.timer); - this.timer = null; - }, - - onTimerEvent: function() { - if (!this.currentlyExecuting) { - try { - this.currentlyExecuting = true; - this.execute(); - } finally { - this.currentlyExecuting = false; - } - } - } -}); -Object.extend(String, { - interpret: function(value) { - return value == null ? '' : String(value); - }, - specialChar: { - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '\\': '\\\\' - } -}); - -Object.extend(String.prototype, { - gsub: function(pattern, replacement) { - var result = '', source = this, match; - replacement = arguments.callee.prepareReplacement(replacement); - - while (source.length > 0) { - if (match = source.match(pattern)) { - result += source.slice(0, match.index); - result += String.interpret(replacement(match)); - source = source.slice(match.index + match[0].length); - } else { - result += source, source = ''; - } - } - return result; - }, - - sub: function(pattern, replacement, count) { - replacement = this.gsub.prepareReplacement(replacement); - count = count === undefined ? 1 : count; - - return this.gsub(pattern, function(match) { - if (--count < 0) return match[0]; - return replacement(match); - }); - }, - - scan: function(pattern, iterator) { - this.gsub(pattern, iterator); - return String(this); - }, - - truncate: function(length, truncation) { - length = length || 30; - truncation = truncation === undefined ? '...' : truncation; - return this.length > length ? - this.slice(0, length - truncation.length) + truncation : String(this); - }, - - strip: function() { - return this.replace(/^\s+/, '').replace(/\s+$/, ''); - }, - - stripTags: function() { - return this.replace(/<\/?[^>]+>/gi, ''); - }, - - stripScripts: function() { - return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); - }, - - extractScripts: function() { - var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); - var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); - return (this.match(matchAll) || []).map(function(scriptTag) { - return (scriptTag.match(matchOne) || ['', ''])[1]; - }); - }, - - evalScripts: function() { - return this.extractScripts().map(function(script) { return eval(script) }); - }, - - escapeHTML: function() { - var self = arguments.callee; - self.text.data = this; - return self.div.innerHTML; - }, - - unescapeHTML: function() { - var div = new Element('div'); - div.innerHTML = this.stripTags(); - return div.childNodes[0] ? (div.childNodes.length > 1 ? - $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) : - div.childNodes[0].nodeValue) : ''; - }, - - toQueryParams: function(separator) { - var match = this.strip().match(/([^?#]*)(#.*)?$/); - if (!match) return { }; - - return match[1].split(separator || '&').inject({ }, function(hash, pair) { - if ((pair = pair.split('='))[0]) { - var key = decodeURIComponent(pair.shift()); - var value = pair.length > 1 ? pair.join('=') : pair[0]; - if (value != undefined) value = decodeURIComponent(value); - - if (key in hash) { - if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; - hash[key].push(value); - } - else hash[key] = value; - } - return hash; - }); - }, - - toArray: function() { - return this.split(''); - }, - - succ: function() { - return this.slice(0, this.length - 1) + - String.fromCharCode(this.charCodeAt(this.length - 1) + 1); - }, - - times: function(count) { - return count < 1 ? '' : new Array(count + 1).join(this); - }, - - camelize: function() { - var parts = this.split('-'), len = parts.length; - if (len == 1) return parts[0]; - - var camelized = this.charAt(0) == '-' - ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) - : parts[0]; - - for (var i = 1; i < len; i++) - camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1); - - return camelized; - }, - - capitalize: function() { - return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); - }, - - underscore: function() { - return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase(); - }, - - dasherize: function() { - return this.gsub(/_/,'-'); - }, - - inspect: function(useDoubleQuotes) { - var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) { - var character = String.specialChar[match[0]]; - return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16); - }); - if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; - return "'" + escapedString.replace(/'/g, '\\\'') + "'"; - }, - - toJSON: function() { - return this.inspect(true); - }, - - unfilterJSON: function(filter) { - return this.sub(filter || Prototype.JSONFilter, '#{1}'); - }, - - isJSON: function() { - var str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); - return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); - }, - - evalJSON: function(sanitize) { - var json = this.unfilterJSON(); - try { - if (!sanitize || json.isJSON()) return eval('(' + json + ')'); - } catch (e) { } - throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); - }, - - include: function(pattern) { - return this.indexOf(pattern) > -1; - }, - - startsWith: function(pattern) { - return this.indexOf(pattern) === 0; - }, - - endsWith: function(pattern) { - var d = this.length - pattern.length; - return d >= 0 && this.lastIndexOf(pattern) === d; - }, - - empty: function() { - return this == ''; - }, - - blank: function() { - return /^\s*$/.test(this); - }, - - interpolate: function(object, pattern) { - return new Template(this, pattern).evaluate(object); - } -}); - -if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, { - escapeHTML: function() { - return this.replace(/&/g,'&').replace(//g,'>'); - }, - unescapeHTML: function() { - return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>'); - } -}); - -String.prototype.gsub.prepareReplacement = function(replacement) { - if (Object.isFunction(replacement)) return replacement; - var template = new Template(replacement); - return function(match) { return template.evaluate(match) }; -}; - -String.prototype.parseQuery = String.prototype.toQueryParams; - -Object.extend(String.prototype.escapeHTML, { - div: document.createElement('div'), - text: document.createTextNode('') -}); - -with (String.prototype.escapeHTML) div.appendChild(text); - -var Template = Class.create({ - initialize: function(template, pattern) { - this.template = template.toString(); - this.pattern = pattern || Template.Pattern; - }, - - evaluate: function(object) { - if (Object.isFunction(object.toTemplateReplacements)) - object = object.toTemplateReplacements(); - - return this.template.gsub(this.pattern, function(match) { - if (object == null) return ''; - - var before = match[1] || ''; - if (before == '\\') return match[2]; - - var ctx = object, expr = match[3]; - var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/, match = pattern.exec(expr); - if (match == null) return before; - - while (match != null) { - var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1]; - ctx = ctx[comp]; - if (null == ctx || '' == match[3]) break; - expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); - match = pattern.exec(expr); - } - - return before + String.interpret(ctx); - }.bind(this)); - } -}); -Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; - -var $break = { }; - -var Enumerable = { - each: function(iterator, context) { - var index = 0; - iterator = iterator.bind(context); - try { - this._each(function(value) { - iterator(value, index++); - }); - } catch (e) { - if (e != $break) throw e; - } - return this; - }, - - eachSlice: function(number, iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var index = -number, slices = [], array = this.toArray(); - while ((index += number) < array.length) - slices.push(array.slice(index, index+number)); - return slices.collect(iterator, context); - }, - - all: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result = true; - this.each(function(value, index) { - result = result && !!iterator(value, index); - if (!result) throw $break; - }); - return result; - }, - - any: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result = false; - this.each(function(value, index) { - if (result = !!iterator(value, index)) - throw $break; - }); - return result; - }, - - collect: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var results = []; - this.each(function(value, index) { - results.push(iterator(value, index)); - }); - return results; - }, - - detect: function(iterator, context) { - iterator = iterator.bind(context); - var result; - this.each(function(value, index) { - if (iterator(value, index)) { - result = value; - throw $break; - } - }); - return result; - }, - - findAll: function(iterator, context) { - iterator = iterator.bind(context); - var results = []; - this.each(function(value, index) { - if (iterator(value, index)) - results.push(value); - }); - return results; - }, - - grep: function(filter, iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var results = []; - - if (Object.isString(filter)) - filter = new RegExp(filter); - - this.each(function(value, index) { - if (filter.match(value)) - results.push(iterator(value, index)); - }); - return results; - }, - - include: function(object) { - if (Object.isFunction(this.indexOf)) - if (this.indexOf(object) != -1) return true; - - var found = false; - this.each(function(value) { - if (value == object) { - found = true; - throw $break; - } - }); - return found; - }, - - inGroupsOf: function(number, fillWith) { - fillWith = fillWith === undefined ? null : fillWith; - return this.eachSlice(number, function(slice) { - while(slice.length < number) slice.push(fillWith); - return slice; - }); - }, - - inject: function(memo, iterator, context) { - iterator = iterator.bind(context); - this.each(function(value, index) { - memo = iterator(memo, value, index); - }); - return memo; - }, - - invoke: function(method) { - var args = $A(arguments).slice(1); - return this.map(function(value) { - return value[method].apply(value, args); - }); - }, - - max: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result; - this.each(function(value, index) { - value = iterator(value, index); - if (result == undefined || value >= result) - result = value; - }); - return result; - }, - - min: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result; - this.each(function(value, index) { - value = iterator(value, index); - if (result == undefined || value < result) - result = value; - }); - return result; - }, - - partition: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var trues = [], falses = []; - this.each(function(value, index) { - (iterator(value, index) ? - trues : falses).push(value); - }); - return [trues, falses]; - }, - - pluck: function(property) { - var results = []; - this.each(function(value) { - results.push(value[property]); - }); - return results; - }, - - reject: function(iterator, context) { - iterator = iterator.bind(context); - var results = []; - this.each(function(value, index) { - if (!iterator(value, index)) - results.push(value); - }); - return results; - }, - - sortBy: function(iterator, context) { - iterator = iterator.bind(context); - return this.map(function(value, index) { - return {value: value, criteria: iterator(value, index)}; - }).sort(function(left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - }).pluck('value'); - }, - - toArray: function() { - return this.map(); - }, - - zip: function() { - var iterator = Prototype.K, args = $A(arguments); - if (Object.isFunction(args.last())) - iterator = args.pop(); - - var collections = [this].concat(args).map($A); - return this.map(function(value, index) { - return iterator(collections.pluck(index)); - }); - }, - - size: function() { - return this.toArray().length; - }, - - inspect: function() { - return '#'; - } -}; - -Object.extend(Enumerable, { - map: Enumerable.collect, - find: Enumerable.detect, - select: Enumerable.findAll, - filter: Enumerable.findAll, - member: Enumerable.include, - entries: Enumerable.toArray, - every: Enumerable.all, - some: Enumerable.any -}); -function $A(iterable) { - if (!iterable) return []; - if (iterable.toArray) return iterable.toArray(); - var length = iterable.length, results = new Array(length); - while (length--) results[length] = iterable[length]; - return results; -} - -if (Prototype.Browser.WebKit) { - function $A(iterable) { - if (!iterable) return []; - if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') && - iterable.toArray) return iterable.toArray(); - var length = iterable.length, results = new Array(length); - while (length--) results[length] = iterable[length]; - return results; - } -} - -Array.from = $A; - -Object.extend(Array.prototype, Enumerable); - -if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse; - -Object.extend(Array.prototype, { - _each: function(iterator) { - for (var i = 0, length = this.length; i < length; i++) - iterator(this[i]); - }, - - clear: function() { - this.length = 0; - return this; - }, - - first: function() { - return this[0]; - }, - - last: function() { - return this[this.length - 1]; - }, - - compact: function() { - return this.select(function(value) { - return value != null; - }); - }, - - flatten: function() { - return this.inject([], function(array, value) { - return array.concat(Object.isArray(value) ? - value.flatten() : [value]); - }); - }, - - without: function() { - var values = $A(arguments); - return this.select(function(value) { - return !values.include(value); - }); - }, - - reverse: function(inline) { - return (inline !== false ? this : this.toArray())._reverse(); - }, - - reduce: function() { - return this.length > 1 ? this : this[0]; - }, - - uniq: function(sorted) { - return this.inject([], function(array, value, index) { - if (0 == index || (sorted ? array.last() != value : !array.include(value))) - array.push(value); - return array; - }); - }, - - intersect: function(array) { - return this.uniq().findAll(function(item) { - return array.detect(function(value) { return item === value }); - }); - }, - - clone: function() { - return [].concat(this); - }, - - size: function() { - return this.length; - }, - - inspect: function() { - return '[' + this.map(Object.inspect).join(', ') + ']'; - }, - - toJSON: function() { - var results = []; - this.each(function(object) { - var value = Object.toJSON(object); - if (value !== undefined) results.push(value); - }); - return '[' + results.join(', ') + ']'; - } -}); - -// use native browser JS 1.6 implementation if available -if (Object.isFunction(Array.prototype.forEach)) - Array.prototype._each = Array.prototype.forEach; - -if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) { - i || (i = 0); - var length = this.length; - if (i < 0) i = length + i; - for (; i < length; i++) - if (this[i] === item) return i; - return -1; -}; - -if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) { - i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; - var n = this.slice(0, i).reverse().indexOf(item); - return (n < 0) ? n : i - n - 1; -}; - -Array.prototype.toArray = Array.prototype.clone; - -function $w(string) { - if (!Object.isString(string)) return []; - string = string.strip(); - return string ? string.split(/\s+/) : []; -} - -if (Prototype.Browser.Opera){ - Array.prototype.concat = function() { - var array = []; - for (var i = 0, length = this.length; i < length; i++) array.push(this[i]); - for (var i = 0, length = arguments.length; i < length; i++) { - if (Object.isArray(arguments[i])) { - for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++) - array.push(arguments[i][j]); - } else { - array.push(arguments[i]); - } - } - return array; - }; -} -Object.extend(Number.prototype, { - toColorPart: function() { - return this.toPaddedString(2, 16); - }, - - succ: function() { - return this + 1; - }, - - times: function(iterator) { - $R(0, this, true).each(iterator); - return this; - }, - - toPaddedString: function(length, radix) { - var string = this.toString(radix || 10); - return '0'.times(length - string.length) + string; - }, - - toJSON: function() { - return isFinite(this) ? this.toString() : 'null'; - } -}); - -$w('abs round ceil floor').each(function(method){ - Number.prototype[method] = Math[method].methodize(); -}); -function $H(object) { - return new Hash(object); -}; - -var Hash = Class.create(Enumerable, (function() { - if (function() { - var i = 0, Test = function(value) { this.key = value }; - Test.prototype.key = 'foo'; - for (var property in new Test('bar')) i++; - return i > 1; - }()) { - function each(iterator) { - var cache = []; - for (var key in this._object) { - var value = this._object[key]; - if (cache.include(key)) continue; - cache.push(key); - var pair = [key, value]; - pair.key = key; - pair.value = value; - iterator(pair); - } - } - } else { - function each(iterator) { - for (var key in this._object) { - var value = this._object[key], pair = [key, value]; - pair.key = key; - pair.value = value; - iterator(pair); - } - } - } - - function toQueryPair(key, value) { - if (Object.isUndefined(value)) return key; - return key + '=' + encodeURIComponent(String.interpret(value)); - } - - return { - initialize: function(object) { - this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); - }, - - _each: each, - - set: function(key, value) { - return this._object[key] = value; - }, - - get: function(key) { - return this._object[key]; - }, - - unset: function(key) { - var value = this._object[key]; - delete this._object[key]; - return value; - }, - - toObject: function() { - return Object.clone(this._object); - }, - - keys: function() { - return this.pluck('key'); - }, - - values: function() { - return this.pluck('value'); - }, - - index: function(value) { - var match = this.detect(function(pair) { - return pair.value === value; - }); - return match && match.key; - }, - - merge: function(object) { - return this.clone().update(object); - }, - - update: function(object) { - return new Hash(object).inject(this, function(result, pair) { - result.set(pair.key, pair.value); - return result; - }); - }, - - toQueryString: function() { - return this.map(function(pair) { - var key = encodeURIComponent(pair.key), values = pair.value; - - if (values && typeof values == 'object') { - if (Object.isArray(values)) - return values.map(toQueryPair.curry(key)).join('&'); - } - return toQueryPair(key, values); - }).join('&'); - }, - - inspect: function() { - return '#'; - }, - - toJSON: function() { - return Object.toJSON(this.toObject()); - }, - - clone: function() { - return new Hash(this); - } - } -})()); - -Hash.prototype.toTemplateReplacements = Hash.prototype.toObject; -Hash.from = $H; -var ObjectRange = Class.create(Enumerable, { - initialize: function(start, end, exclusive) { - this.start = start; - this.end = end; - this.exclusive = exclusive; - }, - - _each: function(iterator) { - var value = this.start; - while (this.include(value)) { - iterator(value); - value = value.succ(); - } - }, - - include: function(value) { - if (value < this.start) - return false; - if (this.exclusive) - return value < this.end; - return value <= this.end; - } -}); - -var $R = function(start, end, exclusive) { - return new ObjectRange(start, end, exclusive); -}; - -var Ajax = { - getTransport: function() { - return Try.these( - function() {return new XMLHttpRequest()}, - function() {return new ActiveXObject('Msxml2.XMLHTTP')}, - function() {return new ActiveXObject('Microsoft.XMLHTTP')} - ) || false; - }, - - activeRequestCount: 0 -}; - -Ajax.Responders = { - responders: [], - - _each: function(iterator) { - this.responders._each(iterator); - }, - - register: function(responder) { - if (!this.include(responder)) - this.responders.push(responder); - }, - - unregister: function(responder) { - this.responders = this.responders.without(responder); - }, - - dispatch: function(callback, request, transport, json) { - this.each(function(responder) { - if (Object.isFunction(responder[callback])) { - try { - responder[callback].apply(responder, [request, transport, json]); - } catch (e) { } - } - }); - } -}; - -Object.extend(Ajax.Responders, Enumerable); - -Ajax.Responders.register({ - onCreate: function() { Ajax.activeRequestCount++ }, - onComplete: function() { Ajax.activeRequestCount-- } -}); - -Ajax.Base = Class.create({ - initialize: function(options) { - this.options = { - method: 'post', - asynchronous: true, - contentType: 'application/x-www-form-urlencoded', - encoding: 'UTF-8', - parameters: '', - evalJSON: true, - evalJS: true - }; - Object.extend(this.options, options || { }); - - this.options.method = this.options.method.toLowerCase(); - if (Object.isString(this.options.parameters)) - this.options.parameters = this.options.parameters.toQueryParams(); - } -}); - -Ajax.Request = Class.create(Ajax.Base, { - _complete: false, - - initialize: function($super, url, options) { - $super(options); - this.transport = Ajax.getTransport(); - this.request(url); - }, - - request: function(url) { - this.url = url; - this.method = this.options.method; - var params = Object.clone(this.options.parameters); - - if (!['get', 'post'].include(this.method)) { - // simulate other verbs over post - params['_method'] = this.method; - this.method = 'post'; - } - - this.parameters = params; - - if (params = Object.toQueryString(params)) { - // when GET, append parameters to URL - if (this.method == 'get') - this.url += (this.url.include('?') ? '&' : '?') + params; - else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) - params += '&_='; - } - - try { - var response = new Ajax.Response(this); - if (this.options.onCreate) this.options.onCreate(response); - Ajax.Responders.dispatch('onCreate', this, response); - - this.transport.open(this.method.toUpperCase(), this.url, - this.options.asynchronous); - - if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); - - this.transport.onreadystatechange = this.onStateChange.bind(this); - this.setRequestHeaders(); - - this.body = this.method == 'post' ? (this.options.postBody || params) : null; - this.transport.send(this.body); - - /* Force Firefox to handle ready state 4 for synchronous requests */ - if (!this.options.asynchronous && this.transport.overrideMimeType) - this.onStateChange(); - - } - catch (e) { - this.dispatchException(e); - } - }, - - onStateChange: function() { - var readyState = this.transport.readyState; - if (readyState > 1 && !((readyState == 4) && this._complete)) - this.respondToReadyState(this.transport.readyState); - }, - - setRequestHeaders: function() { - var headers = { - 'X-Requested-With': 'XMLHttpRequest', - 'X-Prototype-Version': Prototype.Version, - 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' - }; - - if (this.method == 'post') { - headers['Content-type'] = this.options.contentType + - (this.options.encoding ? '; charset=' + this.options.encoding : ''); - - /* Force "Connection: close" for older Mozilla browsers to work - * around a bug where XMLHttpRequest sends an incorrect - * Content-length header. See Mozilla Bugzilla #246651. - */ - if (this.transport.overrideMimeType && - (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) - headers['Connection'] = 'close'; - } - - // user-defined headers - if (typeof this.options.requestHeaders == 'object') { - var extras = this.options.requestHeaders; - - if (Object.isFunction(extras.push)) - for (var i = 0, length = extras.length; i < length; i += 2) - headers[extras[i]] = extras[i+1]; - else - $H(extras).each(function(pair) { headers[pair.key] = pair.value }); - } - - for (var name in headers) - this.transport.setRequestHeader(name, headers[name]); - }, - - success: function() { - var status = this.getStatus(); - return !status || (status >= 200 && status < 300); - }, - - getStatus: function() { - try { - return this.transport.status || 0; - } catch (e) { return 0 } - }, - - respondToReadyState: function(readyState) { - var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); - - if (state == 'Complete') { - try { - this._complete = true; - (this.options['on' + response.status] - || this.options['on' + (this.success() ? 'Success' : 'Failure')] - || Prototype.emptyFunction)(response, response.headerJSON); - } catch (e) { - this.dispatchException(e); - } - - var contentType = response.getHeader('Content-type'); - if (this.options.evalJS == 'force' - || (this.options.evalJS && contentType - && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) - this.evalResponse(); - } - - try { - (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); - Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); - } catch (e) { - this.dispatchException(e); - } - - if (state == 'Complete') { - // avoid memory leak in MSIE: clean up - this.transport.onreadystatechange = Prototype.emptyFunction; - } - }, - - getHeader: function(name) { - try { - return this.transport.getResponseHeader(name); - } catch (e) { return null } - }, - - evalResponse: function() { - try { - return eval((this.transport.responseText || '').unfilterJSON()); - } catch (e) { - this.dispatchException(e); - } - }, - - dispatchException: function(exception) { - (this.options.onException || Prototype.emptyFunction)(this, exception); - Ajax.Responders.dispatch('onException', this, exception); - } -}); - -Ajax.Request.Events = - ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; - -Ajax.Response = Class.create({ - initialize: function(request){ - this.request = request; - var transport = this.transport = request.transport, - readyState = this.readyState = transport.readyState; - - if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { - this.status = this.getStatus(); - this.statusText = this.getStatusText(); - this.responseText = String.interpret(transport.responseText); - this.headerJSON = this._getHeaderJSON(); - } - - if(readyState == 4) { - var xml = transport.responseXML; - this.responseXML = xml === undefined ? null : xml; - this.responseJSON = this._getResponseJSON(); - } - }, - - status: 0, - statusText: '', - - getStatus: Ajax.Request.prototype.getStatus, - - getStatusText: function() { - try { - return this.transport.statusText || ''; - } catch (e) { return '' } - }, - - getHeader: Ajax.Request.prototype.getHeader, - - getAllHeaders: function() { - try { - return this.getAllResponseHeaders(); - } catch (e) { return null } - }, - - getResponseHeader: function(name) { - return this.transport.getResponseHeader(name); - }, - - getAllResponseHeaders: function() { - return this.transport.getAllResponseHeaders(); - }, - - _getHeaderJSON: function() { - var json = this.getHeader('X-JSON'); - if (!json) return null; - json = decodeURIComponent(escape(json)); - try { - return json.evalJSON(this.request.options.sanitizeJSON); - } catch (e) { - this.request.dispatchException(e); - } - }, - - _getResponseJSON: function() { - var options = this.request.options; - if (!options.evalJSON || (options.evalJSON != 'force' && - !(this.getHeader('Content-type') || '').include('application/json'))) - return null; - try { - return this.transport.responseText.evalJSON(options.sanitizeJSON); - } catch (e) { - this.request.dispatchException(e); - } - } -}); - -Ajax.Updater = Class.create(Ajax.Request, { - initialize: function($super, container, url, options) { - this.container = { - success: (container.success || container), - failure: (container.failure || (container.success ? null : container)) - }; - - options = options || { }; - var onComplete = options.onComplete; - options.onComplete = (function(response, param) { - this.updateContent(response.responseText); - if (Object.isFunction(onComplete)) onComplete(response, param); - }).bind(this); - - $super(url, options); - }, - - updateContent: function(responseText) { - var receiver = this.container[this.success() ? 'success' : 'failure'], - options = this.options; - - if (!options.evalScripts) responseText = responseText.stripScripts(); - - if (receiver = $(receiver)) { - if (options.insertion) { - if (Object.isString(options.insertion)) { - var insertion = { }; insertion[options.insertion] = responseText; - receiver.insert(insertion); - } - else options.insertion(receiver, responseText); - } - else receiver.update(responseText); - } - - if (this.success()) { - if (this.onComplete) this.onComplete.bind(this).defer(); - } - } -}); - -Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { - initialize: function($super, container, url, options) { - $super(options); - this.onComplete = this.options.onComplete; - - this.frequency = (this.options.frequency || 2); - this.decay = (this.options.decay || 1); - - this.updater = { }; - this.container = container; - this.url = url; - - this.start(); - }, - - start: function() { - this.options.onComplete = this.updateComplete.bind(this); - this.onTimerEvent(); - }, - - stop: function() { - this.updater.options.onComplete = undefined; - clearTimeout(this.timer); - (this.onComplete || Prototype.emptyFunction).apply(this, arguments); - }, - - updateComplete: function(response) { - if (this.options.decay) { - this.decay = (response.responseText == this.lastText ? - this.decay * this.options.decay : 1); - - this.lastText = response.responseText; - } - this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); - }, - - onTimerEvent: function() { - this.updater = new Ajax.Updater(this.container, this.url, this.options); - } -}); -function $(element) { - if (arguments.length > 1) { - for (var i = 0, elements = [], length = arguments.length; i < length; i++) - elements.push($(arguments[i])); - return elements; - } - if (Object.isString(element)) - element = document.getElementById(element); - return Element.extend(element); -} - -if (Prototype.BrowserFeatures.XPath) { - document._getElementsByXPath = function(expression, parentElement) { - var results = []; - var query = document.evaluate(expression, $(parentElement) || document, - null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); - for (var i = 0, length = query.snapshotLength; i < length; i++) - results.push(Element.extend(query.snapshotItem(i))); - return results; - }; -} - -/*--------------------------------------------------------------------------*/ - -if (!window.Node) var Node = { }; - -if (!Node.ELEMENT_NODE) { - // DOM level 2 ECMAScript Language Binding - Object.extend(Node, { - ELEMENT_NODE: 1, - ATTRIBUTE_NODE: 2, - TEXT_NODE: 3, - CDATA_SECTION_NODE: 4, - ENTITY_REFERENCE_NODE: 5, - ENTITY_NODE: 6, - PROCESSING_INSTRUCTION_NODE: 7, - COMMENT_NODE: 8, - DOCUMENT_NODE: 9, - DOCUMENT_TYPE_NODE: 10, - DOCUMENT_FRAGMENT_NODE: 11, - NOTATION_NODE: 12 - }); -} - -(function() { - var element = this.Element; - this.Element = function(tagName, attributes) { - attributes = attributes || { }; - tagName = tagName.toLowerCase(); - var cache = Element.cache; - if (Prototype.Browser.IE && attributes.name) { - tagName = '<' + tagName + ' name="' + attributes.name + '">'; - delete attributes.name; - return Element.writeAttribute(document.createElement(tagName), attributes); - } - if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); - return Element.writeAttribute(cache[tagName].cloneNode(false), attributes); - }; - Object.extend(this.Element, element || { }); -}).call(window); - -Element.cache = { }; - -Element.Methods = { - visible: function(element) { - return $(element).style.display != 'none'; - }, - - toggle: function(element) { - element = $(element); - Element[Element.visible(element) ? 'hide' : 'show'](element); - return element; - }, - - hide: function(element) { - $(element).style.display = 'none'; - return element; - }, - - show: function(element) { - $(element).style.display = ''; - return element; - }, - - remove: function(element) { - element = $(element); - element.parentNode.removeChild(element); - return element; - }, - - update: function(element, content) { - element = $(element); - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) return element.update().insert(content); - content = Object.toHTML(content); - element.innerHTML = content.stripScripts(); - content.evalScripts.bind(content).defer(); - return element; - }, - - replace: function(element, content) { - element = $(element); - if (content && content.toElement) content = content.toElement(); - else if (!Object.isElement(content)) { - content = Object.toHTML(content); - var range = element.ownerDocument.createRange(); - range.selectNode(element); - content.evalScripts.bind(content).defer(); - content = range.createContextualFragment(content.stripScripts()); - } - element.parentNode.replaceChild(content, element); - return element; - }, - - insert: function(element, insertions) { - element = $(element); - - if (Object.isString(insertions) || Object.isNumber(insertions) || - Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) - insertions = {bottom:insertions}; - - var content, t, range; - - for (position in insertions) { - content = insertions[position]; - position = position.toLowerCase(); - t = Element._insertionTranslations[position]; - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - t.insert(element, content); - continue; - } - - content = Object.toHTML(content); - - range = element.ownerDocument.createRange(); - t.initializeRange(element, range); - t.insert(element, range.createContextualFragment(content.stripScripts())); - - content.evalScripts.bind(content).defer(); - } - - return element; - }, - - wrap: function(element, wrapper, attributes) { - element = $(element); - if (Object.isElement(wrapper)) - $(wrapper).writeAttribute(attributes || { }); - else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); - else wrapper = new Element('div', wrapper); - if (element.parentNode) - element.parentNode.replaceChild(wrapper, element); - wrapper.appendChild(element); - return wrapper; - }, - - inspect: function(element) { - element = $(element); - var result = '<' + element.tagName.toLowerCase(); - $H({'id': 'id', 'className': 'class'}).each(function(pair) { - var property = pair.first(), attribute = pair.last(); - var value = (element[property] || '').toString(); - if (value) result += ' ' + attribute + '=' + value.inspect(true); - }); - return result + '>'; - }, - - recursivelyCollect: function(element, property) { - element = $(element); - var elements = []; - while (element = element[property]) - if (element.nodeType == 1) - elements.push(Element.extend(element)); - return elements; - }, - - ancestors: function(element) { - return $(element).recursivelyCollect('parentNode'); - }, - - descendants: function(element) { - return $A($(element).getElementsByTagName('*')).each(Element.extend); - }, - - firstDescendant: function(element) { - element = $(element).firstChild; - while (element && element.nodeType != 1) element = element.nextSibling; - return $(element); - }, - - immediateDescendants: function(element) { - if (!(element = $(element).firstChild)) return []; - while (element && element.nodeType != 1) element = element.nextSibling; - if (element) return [element].concat($(element).nextSiblings()); - return []; - }, - - previousSiblings: function(element) { - return $(element).recursivelyCollect('previousSibling'); - }, - - nextSiblings: function(element) { - return $(element).recursivelyCollect('nextSibling'); - }, - - siblings: function(element) { - element = $(element); - return element.previousSiblings().reverse().concat(element.nextSiblings()); - }, - - match: function(element, selector) { - if (Object.isString(selector)) - selector = new Selector(selector); - return selector.match($(element)); - }, - - up: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(element.parentNode); - var ancestors = element.ancestors(); - return expression ? Selector.findElement(ancestors, expression, index) : - ancestors[index || 0]; - }, - - down: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return element.firstDescendant(); - var descendants = element.descendants(); - return expression ? Selector.findElement(descendants, expression, index) : - descendants[index || 0]; - }, - - previous: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element)); - var previousSiblings = element.previousSiblings(); - return expression ? Selector.findElement(previousSiblings, expression, index) : - previousSiblings[index || 0]; - }, - - next: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element)); - var nextSiblings = element.nextSiblings(); - return expression ? Selector.findElement(nextSiblings, expression, index) : - nextSiblings[index || 0]; - }, - - select: function() { - var args = $A(arguments), element = $(args.shift()); - return Selector.findChildElements(element, args); - }, - - adjacent: function() { - var args = $A(arguments), element = $(args.shift()); - return Selector.findChildElements(element.parentNode, args).without(element); - }, - - identify: function(element) { - element = $(element); - var id = element.readAttribute('id'), self = arguments.callee; - if (id) return id; - do { id = 'anonymous_element_' + self.counter++ } while ($(id)); - element.writeAttribute('id', id); - return id; - }, - - readAttribute: function(element, name) { - element = $(element); - if (Prototype.Browser.IE) { - var t = Element._attributeTranslations.read; - if (t.values[name]) return t.values[name](element, name); - if (t.names[name]) name = t.names[name]; - if (name.include(':')) { - return (!element.attributes || !element.attributes[name]) ? null : - element.attributes[name].value; - } - } - return element.getAttribute(name); - }, - - writeAttribute: function(element, name, value) { - element = $(element); - var attributes = { }, t = Element._attributeTranslations.write; - - if (typeof name == 'object') attributes = name; - else attributes[name] = value === undefined ? true : value; - - for (var attr in attributes) { - var name = t.names[attr] || attr, value = attributes[attr]; - if (t.values[attr]) name = t.values[attr](element, value); - if (value === false || value === null) - element.removeAttribute(name); - else if (value === true) - element.setAttribute(name, name); - else element.setAttribute(name, value); - } - return element; - }, - - getHeight: function(element) { - return $(element).getDimensions().height; - }, - - getWidth: function(element) { - return $(element).getDimensions().width; - }, - - classNames: function(element) { - return new Element.ClassNames(element); - }, - - hasClassName: function(element, className) { - if (!(element = $(element))) return; - var elementClassName = element.className; - return (elementClassName.length > 0 && (elementClassName == className || - new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); - }, - - addClassName: function(element, className) { - if (!(element = $(element))) return; - if (!element.hasClassName(className)) - element.className += (element.className ? ' ' : '') + className; - return element; - }, - - removeClassName: function(element, className) { - if (!(element = $(element))) return; - element.className = element.className.replace( - new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); - return element; - }, - - toggleClassName: function(element, className) { - if (!(element = $(element))) return; - return element[element.hasClassName(className) ? - 'removeClassName' : 'addClassName'](className); - }, - - // removes whitespace-only text node children - cleanWhitespace: function(element) { - element = $(element); - var node = element.firstChild; - while (node) { - var nextNode = node.nextSibling; - if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) - element.removeChild(node); - node = nextNode; - } - return element; - }, - - empty: function(element) { - return $(element).innerHTML.blank(); - }, - - descendantOf: function(element, ancestor) { - element = $(element), ancestor = $(ancestor); - - if (element.compareDocumentPosition) - return (element.compareDocumentPosition(ancestor) & 8) === 8; - - if (element.sourceIndex && !Prototype.Browser.Opera) { - var e = element.sourceIndex, a = ancestor.sourceIndex, - nextAncestor = ancestor.nextSibling; - if (!nextAncestor) { - do { ancestor = ancestor.parentNode; } - while (!(nextAncestor = ancestor.nextSibling) && ancestor.parentNode); - } - if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex); - } - - while (element = element.parentNode) - if (element == ancestor) return true; - return false; - }, - - scrollTo: function(element) { - element = $(element); - var pos = element.cumulativeOffset(); - window.scrollTo(pos[0], pos[1]); - return element; - }, - - getStyle: function(element, style) { - element = $(element); - style = style == 'float' ? 'cssFloat' : style.camelize(); - var value = element.style[style]; - if (!value) { - var css = document.defaultView.getComputedStyle(element, null); - value = css ? css[style] : null; - } - if (style == 'opacity') return value ? parseFloat(value) : 1.0; - return value == 'auto' ? null : value; - }, - - getOpacity: function(element) { - return $(element).getStyle('opacity'); - }, - - setStyle: function(element, styles) { - element = $(element); - var elementStyle = element.style, match; - if (Object.isString(styles)) { - element.style.cssText += ';' + styles; - return styles.include('opacity') ? - element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; - } - for (var property in styles) - if (property == 'opacity') element.setOpacity(styles[property]); - else - elementStyle[(property == 'float' || property == 'cssFloat') ? - (elementStyle.styleFloat === undefined ? 'cssFloat' : 'styleFloat') : - property] = styles[property]; - - return element; - }, - - setOpacity: function(element, value) { - element = $(element); - element.style.opacity = (value == 1 || value === '') ? '' : - (value < 0.00001) ? 0 : value; - return element; - }, - - getDimensions: function(element) { - element = $(element); - var display = $(element).getStyle('display'); - if (display != 'none' && display != null) // Safari bug - return {width: element.offsetWidth, height: element.offsetHeight}; - - // All *Width and *Height properties give 0 on elements with display none, - // so enable the element temporarily - var els = element.style; - var originalVisibility = els.visibility; - var originalPosition = els.position; - var originalDisplay = els.display; - els.visibility = 'hidden'; - els.position = 'absolute'; - els.display = 'block'; - var originalWidth = element.clientWidth; - var originalHeight = element.clientHeight; - els.display = originalDisplay; - els.position = originalPosition; - els.visibility = originalVisibility; - return {width: originalWidth, height: originalHeight}; - }, - - makePositioned: function(element) { - element = $(element); - var pos = Element.getStyle(element, 'position'); - if (pos == 'static' || !pos) { - element._madePositioned = true; - element.style.position = 'relative'; - // Opera returns the offset relative to the positioning context, when an - // element is position relative but top and left have not been defined - if (window.opera) { - element.style.top = 0; - element.style.left = 0; - } - } - return element; - }, - - undoPositioned: function(element) { - element = $(element); - if (element._madePositioned) { - element._madePositioned = undefined; - element.style.position = - element.style.top = - element.style.left = - element.style.bottom = - element.style.right = ''; - } - return element; - }, - - makeClipping: function(element) { - element = $(element); - if (element._overflow) return element; - element._overflow = Element.getStyle(element, 'overflow') || 'auto'; - if (element._overflow !== 'hidden') - element.style.overflow = 'hidden'; - return element; - }, - - undoClipping: function(element) { - element = $(element); - if (!element._overflow) return element; - element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; - element._overflow = null; - return element; - }, - - cumulativeOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - positionedOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - if (element) { - if (element.tagName == 'BODY') break; - var p = Element.getStyle(element, 'position'); - if (p == 'relative' || p == 'absolute') break; - } - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - absolutize: function(element) { - element = $(element); - if (element.getStyle('position') == 'absolute') return; - // Position.prepare(); // To be done manually by Scripty when it needs it. - - var offsets = element.positionedOffset(); - var top = offsets[1]; - var left = offsets[0]; - var width = element.clientWidth; - var height = element.clientHeight; - - element._originalLeft = left - parseFloat(element.style.left || 0); - element._originalTop = top - parseFloat(element.style.top || 0); - element._originalWidth = element.style.width; - element._originalHeight = element.style.height; - - element.style.position = 'absolute'; - element.style.top = top + 'px'; - element.style.left = left + 'px'; - element.style.width = width + 'px'; - element.style.height = height + 'px'; - return element; - }, - - relativize: function(element) { - element = $(element); - if (element.getStyle('position') == 'relative') return; - // Position.prepare(); // To be done manually by Scripty when it needs it. - - element.style.position = 'relative'; - var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); - var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); - - element.style.top = top + 'px'; - element.style.left = left + 'px'; - element.style.height = element._originalHeight; - element.style.width = element._originalWidth; - return element; - }, - - cumulativeScrollOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.scrollTop || 0; - valueL += element.scrollLeft || 0; - element = element.parentNode; - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - getOffsetParent: function(element) { - if (element.offsetParent) return $(element.offsetParent); - if (element == document.body) return $(element); - - while ((element = element.parentNode) && element != document.body) - if (Element.getStyle(element, 'position') != 'static') - return $(element); - - return $(document.body); - }, - - viewportOffset: function(forElement) { - var valueT = 0, valueL = 0; - - var element = forElement; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - - // Safari fix - if (element.offsetParent == document.body && - Element.getStyle(element, 'position') == 'absolute') break; - - } while (element = element.offsetParent); - - element = forElement; - do { - if (!Prototype.Browser.Opera || element.tagName == 'BODY') { - valueT -= element.scrollTop || 0; - valueL -= element.scrollLeft || 0; - } - } while (element = element.parentNode); - - return Element._returnOffset(valueL, valueT); - }, - - clonePosition: function(element, source) { - var options = Object.extend({ - setLeft: true, - setTop: true, - setWidth: true, - setHeight: true, - offsetTop: 0, - offsetLeft: 0 - }, arguments[2] || { }); - - // find page position of source - source = $(source); - var p = source.viewportOffset(); - - // find coordinate system to use - element = $(element); - var delta = [0, 0]; - var parent = null; - // delta [0,0] will do fine with position: fixed elements, - // position:absolute needs offsetParent deltas - if (Element.getStyle(element, 'position') == 'absolute') { - parent = element.getOffsetParent(); - delta = parent.viewportOffset(); - } - - // correct by body offsets (fixes Safari) - if (parent == document.body) { - delta[0] -= document.body.offsetLeft; - delta[1] -= document.body.offsetTop; - } - - // set position - if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; - if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; - if (options.setWidth) element.style.width = source.offsetWidth + 'px'; - if (options.setHeight) element.style.height = source.offsetHeight + 'px'; - return element; - } -}; - -Element.Methods.identify.counter = 1; - -Object.extend(Element.Methods, { - getElementsBySelector: Element.Methods.select, - childElements: Element.Methods.immediateDescendants -}); - -Element._attributeTranslations = { - write: { - names: { - className: 'class', - htmlFor: 'for' - }, - values: { } - } -}; - - -if (!document.createRange || Prototype.Browser.Opera) { - Element.Methods.insert = function(element, insertions) { - element = $(element); - - if (Object.isString(insertions) || Object.isNumber(insertions) || - Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) - insertions = { bottom: insertions }; - - var t = Element._insertionTranslations, content, position, pos, tagName; - - for (position in insertions) { - content = insertions[position]; - position = position.toLowerCase(); - pos = t[position]; - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - pos.insert(element, content); - continue; - } - - content = Object.toHTML(content); - tagName = ((position == 'before' || position == 'after') - ? element.parentNode : element).tagName.toUpperCase(); - - if (t.tags[tagName]) { - var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); - if (position == 'top' || position == 'after') fragments.reverse(); - fragments.each(pos.insert.curry(element)); - } - else element.insertAdjacentHTML(pos.adjacency, content.stripScripts()); - - content.evalScripts.bind(content).defer(); - } - - return element; - }; -} - -if (Prototype.Browser.Opera) { - Element.Methods._getStyle = Element.Methods.getStyle; - Element.Methods.getStyle = function(element, style) { - switch(style) { - case 'left': - case 'top': - case 'right': - case 'bottom': - if (Element._getStyle(element, 'position') == 'static') return null; - default: return Element._getStyle(element, style); - } - }; - Element.Methods._readAttribute = Element.Methods.readAttribute; - Element.Methods.readAttribute = function(element, attribute) { - if (attribute == 'title') return element.title; - return Element._readAttribute(element, attribute); - }; -} - -else if (Prototype.Browser.IE) { - $w('positionedOffset getOffsetParent viewportOffset').each(function(method) { - Element.Methods[method] = Element.Methods[method].wrap( - function(proceed, element) { - element = $(element); - var position = element.getStyle('position'); - if (position != 'static') return proceed(element); - element.setStyle({ position: 'relative' }); - var value = proceed(element); - element.setStyle({ position: position }); - return value; - } - ); - }); - - Element.Methods.getStyle = function(element, style) { - element = $(element); - style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); - var value = element.style[style]; - if (!value && element.currentStyle) value = element.currentStyle[style]; - - if (style == 'opacity') { - if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) - if (value[1]) return parseFloat(value[1]) / 100; - return 1.0; - } - - if (value == 'auto') { - if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) - return element['offset' + style.capitalize()] + 'px'; - return null; - } - return value; - }; - - Element.Methods.setOpacity = function(element, value) { - function stripAlpha(filter){ - return filter.replace(/alpha\([^\)]*\)/gi,''); - } - element = $(element); - var currentStyle = element.currentStyle; - if ((currentStyle && !currentStyle.hasLayout) || - (!currentStyle && element.style.zoom == 'normal')) - element.style.zoom = 1; - - var filter = element.getStyle('filter'), style = element.style; - if (value == 1 || value === '') { - (filter = stripAlpha(filter)) ? - style.filter = filter : style.removeAttribute('filter'); - return element; - } else if (value < 0.00001) value = 0; - style.filter = stripAlpha(filter) + - 'alpha(opacity=' + (value * 100) + ')'; - return element; - }; - - Element._attributeTranslations = { - read: { - names: { - 'class': 'className', - 'for': 'htmlFor' - }, - values: { - _getAttr: function(element, attribute) { - return element.getAttribute(attribute, 2); - }, - _getAttrNode: function(element, attribute) { - var node = element.getAttributeNode(attribute); - return node ? node.value : ""; - }, - _getEv: function(element, attribute) { - var attribute = element.getAttribute(attribute); - return attribute ? attribute.toString().slice(23, -2) : null; - }, - _flag: function(element, attribute) { - return $(element).hasAttribute(attribute) ? attribute : null; - }, - style: function(element) { - return element.style.cssText.toLowerCase(); - }, - title: function(element) { - return element.title; - } - } - } - }; - - Element._attributeTranslations.write = { - names: Object.clone(Element._attributeTranslations.read.names), - values: { - checked: function(element, value) { - element.checked = !!value; - }, - - style: function(element, value) { - element.style.cssText = value ? value : ''; - } - } - }; - - Element._attributeTranslations.has = {}; - - $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + - 'encType maxLength readOnly longDesc').each(function(attr) { - Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; - Element._attributeTranslations.has[attr.toLowerCase()] = attr; - }); - - (function(v) { - Object.extend(v, { - href: v._getAttr, - src: v._getAttr, - type: v._getAttr, - action: v._getAttrNode, - disabled: v._flag, - checked: v._flag, - readonly: v._flag, - multiple: v._flag, - onload: v._getEv, - onunload: v._getEv, - onclick: v._getEv, - ondblclick: v._getEv, - onmousedown: v._getEv, - onmouseup: v._getEv, - onmouseover: v._getEv, - onmousemove: v._getEv, - onmouseout: v._getEv, - onfocus: v._getEv, - onblur: v._getEv, - onkeypress: v._getEv, - onkeydown: v._getEv, - onkeyup: v._getEv, - onsubmit: v._getEv, - onreset: v._getEv, - onselect: v._getEv, - onchange: v._getEv - }); - })(Element._attributeTranslations.read.values); -} - -else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { - Element.Methods.setOpacity = function(element, value) { - element = $(element); - element.style.opacity = (value == 1) ? 0.999999 : - (value === '') ? '' : (value < 0.00001) ? 0 : value; - return element; - }; -} - -else if (Prototype.Browser.WebKit) { - Element.Methods.setOpacity = function(element, value) { - element = $(element); - element.style.opacity = (value == 1 || value === '') ? '' : - (value < 0.00001) ? 0 : value; - - if (value == 1) - if(element.tagName == 'IMG' && element.width) { - element.width++; element.width--; - } else try { - var n = document.createTextNode(' '); - element.appendChild(n); - element.removeChild(n); - } catch (e) { } - - return element; - }; - - // Safari returns margins on body which is incorrect if the child is absolutely - // positioned. For performance reasons, redefine Position.cumulativeOffset for - // KHTML/WebKit only. - Element.Methods.cumulativeOffset = function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - if (element.offsetParent == document.body) - if (Element.getStyle(element, 'position') == 'absolute') break; - - element = element.offsetParent; - } while (element); - - return Element._returnOffset(valueL, valueT); - }; -} - -if (Prototype.Browser.IE || Prototype.Browser.Opera) { - // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements - Element.Methods.update = function(element, content) { - element = $(element); - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) return element.update().insert(content); - - content = Object.toHTML(content); - var tagName = element.tagName.toUpperCase(); - - if (tagName in Element._insertionTranslations.tags) { - $A(element.childNodes).each(function(node) { element.removeChild(node) }); - Element._getContentFromAnonymousElement(tagName, content.stripScripts()) - .each(function(node) { element.appendChild(node) }); - } - else element.innerHTML = content.stripScripts(); - - content.evalScripts.bind(content).defer(); - return element; - }; -} - -if (document.createElement('div').outerHTML) { - Element.Methods.replace = function(element, content) { - element = $(element); - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - element.parentNode.replaceChild(content, element); - return element; - } - - content = Object.toHTML(content); - var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); - - if (Element._insertionTranslations.tags[tagName]) { - var nextSibling = element.next(); - var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); - parent.removeChild(element); - if (nextSibling) - fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); - else - fragments.each(function(node) { parent.appendChild(node) }); - } - else element.outerHTML = content.stripScripts(); - - content.evalScripts.bind(content).defer(); - return element; - }; -} - -Element._returnOffset = function(l, t) { - var result = [l, t]; - result.left = l; - result.top = t; - return result; -}; - -Element._getContentFromAnonymousElement = function(tagName, html) { - var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; - div.innerHTML = t[0] + html + t[1]; - t[2].times(function() { div = div.firstChild }); - return $A(div.childNodes); -}; - -Element._insertionTranslations = { - before: { - adjacency: 'beforeBegin', - insert: function(element, node) { - element.parentNode.insertBefore(node, element); - }, - initializeRange: function(element, range) { - range.setStartBefore(element); - } - }, - top: { - adjacency: 'afterBegin', - insert: function(element, node) { - element.insertBefore(node, element.firstChild); - }, - initializeRange: function(element, range) { - range.selectNodeContents(element); - range.collapse(true); - } - }, - bottom: { - adjacency: 'beforeEnd', - insert: function(element, node) { - element.appendChild(node); - } - }, - after: { - adjacency: 'afterEnd', - insert: function(element, node) { - element.parentNode.insertBefore(node, element.nextSibling); - }, - initializeRange: function(element, range) { - range.setStartAfter(element); - } - }, - tags: { - TABLE: ['', '
        ', 1], - TBODY: ['', '
        ', 2], - TR: ['', '
        ', 3], - TD: ['
        ', '
        ', 4], - SELECT: ['', 1] - } -}; - -(function() { - this.bottom.initializeRange = this.top.initializeRange; - Object.extend(this.tags, { - THEAD: this.tags.TBODY, - TFOOT: this.tags.TBODY, - TH: this.tags.TD - }); -}).call(Element._insertionTranslations); - -Element.Methods.Simulated = { - hasAttribute: function(element, attribute) { - attribute = Element._attributeTranslations.has[attribute] || attribute; - var node = $(element).getAttributeNode(attribute); - return node && node.specified; - } -}; - -Element.Methods.ByTag = { }; - -Object.extend(Element, Element.Methods); - -if (!Prototype.BrowserFeatures.ElementExtensions && - document.createElement('div').__proto__) { - window.HTMLElement = { }; - window.HTMLElement.prototype = document.createElement('div').__proto__; - Prototype.BrowserFeatures.ElementExtensions = true; -} - -Element.extend = (function() { - if (Prototype.BrowserFeatures.SpecificElementExtensions) - return Prototype.K; - - var Methods = { }, ByTag = Element.Methods.ByTag; - - var extend = Object.extend(function(element) { - if (!element || element._extendedByPrototype || - element.nodeType != 1 || element == window) return element; - - var methods = Object.clone(Methods), - tagName = element.tagName, property, value; - - // extend methods for specific tags - if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); - - for (property in methods) { - value = methods[property]; - if (Object.isFunction(value) && !(property in element)) - element[property] = value.methodize(); - } - - element._extendedByPrototype = Prototype.emptyFunction; - return element; - - }, { - refresh: function() { - // extend methods for all tags (Safari doesn't need this) - if (!Prototype.BrowserFeatures.ElementExtensions) { - Object.extend(Methods, Element.Methods); - Object.extend(Methods, Element.Methods.Simulated); - } - } - }); - - extend.refresh(); - return extend; -})(); - -Element.hasAttribute = function(element, attribute) { - if (element.hasAttribute) return element.hasAttribute(attribute); - return Element.Methods.Simulated.hasAttribute(element, attribute); -}; - -Element.addMethods = function(methods) { - var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; - - if (!methods) { - Object.extend(Form, Form.Methods); - Object.extend(Form.Element, Form.Element.Methods); - Object.extend(Element.Methods.ByTag, { - "FORM": Object.clone(Form.Methods), - "INPUT": Object.clone(Form.Element.Methods), - "SELECT": Object.clone(Form.Element.Methods), - "TEXTAREA": Object.clone(Form.Element.Methods) - }); - } - - if (arguments.length == 2) { - var tagName = methods; - methods = arguments[1]; - } - - if (!tagName) Object.extend(Element.Methods, methods || { }); - else { - if (Object.isArray(tagName)) tagName.each(extend); - else extend(tagName); - } - - function extend(tagName) { - tagName = tagName.toUpperCase(); - if (!Element.Methods.ByTag[tagName]) - Element.Methods.ByTag[tagName] = { }; - Object.extend(Element.Methods.ByTag[tagName], methods); - } - - function copy(methods, destination, onlyIfAbsent) { - onlyIfAbsent = onlyIfAbsent || false; - for (var property in methods) { - var value = methods[property]; - if (!Object.isFunction(value)) continue; - if (!onlyIfAbsent || !(property in destination)) - destination[property] = value.methodize(); - } - } - - function findDOMClass(tagName) { - var klass; - var trans = { - "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", - "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", - "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", - "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", - "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": - "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": - "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": - "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": - "FrameSet", "IFRAME": "IFrame" - }; - if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; - if (window[klass]) return window[klass]; - klass = 'HTML' + tagName + 'Element'; - if (window[klass]) return window[klass]; - klass = 'HTML' + tagName.capitalize() + 'Element'; - if (window[klass]) return window[klass]; - - window[klass] = { }; - window[klass].prototype = document.createElement(tagName).__proto__; - return window[klass]; - } - - if (F.ElementExtensions) { - copy(Element.Methods, HTMLElement.prototype); - copy(Element.Methods.Simulated, HTMLElement.prototype, true); - } - - if (F.SpecificElementExtensions) { - for (var tag in Element.Methods.ByTag) { - var klass = findDOMClass(tag); - if (Object.isUndefined(klass)) continue; - copy(T[tag], klass.prototype); - } - } - - Object.extend(Element, Element.Methods); - delete Element.ByTag; - - if (Element.extend.refresh) Element.extend.refresh(); - Element.cache = { }; -}; - -document.viewport = { - getDimensions: function() { - var dimensions = { }; - $w('width height').each(function(d) { - var D = d.capitalize(); - dimensions[d] = self['inner' + D] || - (document.documentElement['client' + D] || document.body['client' + D]); - }); - return dimensions; - }, - - getWidth: function() { - return this.getDimensions().width; - }, - - getHeight: function() { - return this.getDimensions().height; - }, - - getScrollOffsets: function() { - return Element._returnOffset( - window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, - window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); - } -}; -/* Portions of the Selector class are derived from Jack Slocum’s DomQuery, - * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style - * license. Please see http://www.yui-ext.com/ for more information. */ - -var Selector = Class.create({ - initialize: function(expression) { - this.expression = expression.strip(); - this.compileMatcher(); - }, - - compileMatcher: function() { - // Selectors with namespaced attributes can't use the XPath version - if (Prototype.BrowserFeatures.XPath && !(/(\[[\w-]*?:|:checked)/).test(this.expression)) - return this.compileXPathMatcher(); - - var e = this.expression, ps = Selector.patterns, h = Selector.handlers, - c = Selector.criteria, le, p, m; - - if (Selector._cache[e]) { - this.matcher = Selector._cache[e]; - return; - } - - this.matcher = ["this.matcher = function(root) {", - "var r = root, h = Selector.handlers, c = false, n;"]; - - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - p = ps[i]; - if (m = e.match(p)) { - this.matcher.push(Object.isFunction(c[i]) ? c[i](m) : - new Template(c[i]).evaluate(m)); - e = e.replace(m[0], ''); - break; - } - } - } - - this.matcher.push("return h.unique(n);\n}"); - eval(this.matcher.join('\n')); - Selector._cache[this.expression] = this.matcher; - }, - - compileXPathMatcher: function() { - var e = this.expression, ps = Selector.patterns, - x = Selector.xpath, le, m; - - if (Selector._cache[e]) { - this.xpath = Selector._cache[e]; return; - } - - this.matcher = ['.//*']; - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - if (m = e.match(ps[i])) { - this.matcher.push(Object.isFunction(x[i]) ? x[i](m) : - new Template(x[i]).evaluate(m)); - e = e.replace(m[0], ''); - break; - } - } - } - - this.xpath = this.matcher.join(''); - Selector._cache[this.expression] = this.xpath; - }, - - findElements: function(root) { - root = root || document; - if (this.xpath) return document._getElementsByXPath(this.xpath, root); - return this.matcher(root); - }, - - match: function(element) { - this.tokens = []; - - var e = this.expression, ps = Selector.patterns, as = Selector.assertions; - var le, p, m; - - while (e && le !== e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - p = ps[i]; - if (m = e.match(p)) { - // use the Selector.assertions methods unless the selector - // is too complex. - if (as[i]) { - this.tokens.push([i, Object.clone(m)]); - e = e.replace(m[0], ''); - } else { - // reluctantly do a document-wide search - // and look for a match in the array - return this.findElements(document).include(element); - } - } - } - } - - var match = true, name, matches; - for (var i = 0, token; token = this.tokens[i]; i++) { - name = token[0], matches = token[1]; - if (!Selector.assertions[name](element, matches)) { - match = false; break; - } - } - - return match; - }, - - toString: function() { - return this.expression; - }, - - inspect: function() { - return "#"; - } -}); - -Object.extend(Selector, { - _cache: { }, - - xpath: { - descendant: "//*", - child: "/*", - adjacent: "/following-sibling::*[1]", - laterSibling: '/following-sibling::*', - tagName: function(m) { - if (m[1] == '*') return ''; - return "[local-name()='" + m[1].toLowerCase() + - "' or local-name()='" + m[1].toUpperCase() + "']"; - }, - className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", - id: "[@id='#{1}']", - attrPresence: "[@#{1}]", - attr: function(m) { - m[3] = m[5] || m[6]; - return new Template(Selector.xpath.operators[m[2]]).evaluate(m); - }, - pseudo: function(m) { - var h = Selector.xpath.pseudos[m[1]]; - if (!h) return ''; - if (Object.isFunction(h)) return h(m); - return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); - }, - operators: { - '=': "[@#{1}='#{3}']", - '!=': "[@#{1}!='#{3}']", - '^=': "[starts-with(@#{1}, '#{3}')]", - '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']", - '*=': "[contains(@#{1}, '#{3}')]", - '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", - '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" - }, - pseudos: { - 'first-child': '[not(preceding-sibling::*)]', - 'last-child': '[not(following-sibling::*)]', - 'only-child': '[not(preceding-sibling::* or following-sibling::*)]', - 'empty': "[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]", - 'checked': "[@checked]", - 'disabled': "[@disabled]", - 'enabled': "[not(@disabled)]", - 'not': function(m) { - var e = m[6], p = Selector.patterns, - x = Selector.xpath, le, m, v; - - var exclusion = []; - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in p) { - if (m = e.match(p[i])) { - v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m); - exclusion.push("(" + v.substring(1, v.length - 1) + ")"); - e = e.replace(m[0], ''); - break; - } - } - } - return "[not(" + exclusion.join(" and ") + ")]"; - }, - 'nth-child': function(m) { - return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m); - }, - 'nth-last-child': function(m) { - return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m); - }, - 'nth-of-type': function(m) { - return Selector.xpath.pseudos.nth("position() ", m); - }, - 'nth-last-of-type': function(m) { - return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m); - }, - 'first-of-type': function(m) { - m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m); - }, - 'last-of-type': function(m) { - m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m); - }, - 'only-of-type': function(m) { - var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m); - }, - nth: function(fragment, m) { - var mm, formula = m[6], predicate; - if (formula == 'even') formula = '2n+0'; - if (formula == 'odd') formula = '2n+1'; - if (mm = formula.match(/^(\d+)$/)) // digit only - return '[' + fragment + "= " + mm[1] + ']'; - if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b - if (mm[1] == "-") mm[1] = -1; - var a = mm[1] ? Number(mm[1]) : 1; - var b = mm[2] ? Number(mm[2]) : 0; - predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " + - "((#{fragment} - #{b}) div #{a} >= 0)]"; - return new Template(predicate).evaluate({ - fragment: fragment, a: a, b: b }); - } - } - } - }, - - criteria: { - tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;', - className: 'n = h.className(n, r, "#{1}", c); c = false;', - id: 'n = h.id(n, r, "#{1}", c); c = false;', - attrPresence: 'n = h.attrPresence(n, r, "#{1}"); c = false;', - attr: function(m) { - m[3] = (m[5] || m[6]); - return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = false;').evaluate(m); - }, - pseudo: function(m) { - if (m[6]) m[6] = m[6].replace(/"/g, '\\"'); - return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m); - }, - descendant: 'c = "descendant";', - child: 'c = "child";', - adjacent: 'c = "adjacent";', - laterSibling: 'c = "laterSibling";' - }, - - patterns: { - // combinators must be listed first - // (and descendant needs to be last combinator) - laterSibling: /^\s*~\s*/, - child: /^\s*>\s*/, - adjacent: /^\s*\+\s*/, - descendant: /^\s/, - - // selectors follow - tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, - id: /^#([\w\-\*]+)(\b|$)/, - className: /^\.([\w\-\*]+)(\b|$)/, - pseudo: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s)|(?=:))/, - attrPresence: /^\[([\w]+)\]/, - attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/ - }, - - // for Selector.match and Element#match - assertions: { - tagName: function(element, matches) { - return matches[1].toUpperCase() == element.tagName.toUpperCase(); - }, - - className: function(element, matches) { - return Element.hasClassName(element, matches[1]); - }, - - id: function(element, matches) { - return element.id === matches[1]; - }, - - attrPresence: function(element, matches) { - return Element.hasAttribute(element, matches[1]); - }, - - attr: function(element, matches) { - var nodeValue = Element.readAttribute(element, matches[1]); - return Selector.operators[matches[2]](nodeValue, matches[3]); - } - }, - - handlers: { - // UTILITY FUNCTIONS - // joins two collections - concat: function(a, b) { - for (var i = 0, node; node = b[i]; i++) - a.push(node); - return a; - }, - - // marks an array of nodes for counting - mark: function(nodes) { - for (var i = 0, node; node = nodes[i]; i++) - node._counted = true; - return nodes; - }, - - unmark: function(nodes) { - for (var i = 0, node; node = nodes[i]; i++) - node._counted = undefined; - return nodes; - }, - - // mark each child node with its position (for nth calls) - // "ofType" flag indicates whether we're indexing for nth-of-type - // rather than nth-child - index: function(parentNode, reverse, ofType) { - parentNode._counted = true; - if (reverse) { - for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) { - var node = nodes[i]; - if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++; - } - } else { - for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++) - if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++; - } - }, - - // filters out duplicates and extends all nodes - unique: function(nodes) { - if (nodes.length == 0) return nodes; - var results = [], n; - for (var i = 0, l = nodes.length; i < l; i++) - if (!(n = nodes[i])._counted) { - n._counted = true; - results.push(Element.extend(n)); - } - return Selector.handlers.unmark(results); - }, - - // COMBINATOR FUNCTIONS - descendant: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - h.concat(results, node.getElementsByTagName('*')); - return results; - }, - - child: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) { - for (var j = 0, children = [], child; child = node.childNodes[j]; j++) - if (child.nodeType == 1 && child.tagName != '!') results.push(child); - } - return results; - }, - - adjacent: function(nodes) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - var next = this.nextElementSibling(node); - if (next) results.push(next); - } - return results; - }, - - laterSibling: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - h.concat(results, Element.nextSiblings(node)); - return results; - }, - - nextElementSibling: function(node) { - while (node = node.nextSibling) - if (node.nodeType == 1) return node; - return null; - }, - - previousElementSibling: function(node) { - while (node = node.previousSibling) - if (node.nodeType == 1) return node; - return null; - }, - - // TOKEN FUNCTIONS - tagName: function(nodes, root, tagName, combinator) { - tagName = tagName.toUpperCase(); - var results = [], h = Selector.handlers; - if (nodes) { - if (combinator) { - // fastlane for ordinary descendant combinators - if (combinator == "descendant") { - for (var i = 0, node; node = nodes[i]; i++) - h.concat(results, node.getElementsByTagName(tagName)); - return results; - } else nodes = this[combinator](nodes); - if (tagName == "*") return nodes; - } - for (var i = 0, node; node = nodes[i]; i++) - if (node.tagName.toUpperCase() == tagName) results.push(node); - return results; - } else return root.getElementsByTagName(tagName); - }, - - id: function(nodes, root, id, combinator) { - var targetNode = $(id), h = Selector.handlers; - if (!targetNode) return []; - if (!nodes && root == document) return [targetNode]; - if (nodes) { - if (combinator) { - if (combinator == 'child') { - for (var i = 0, node; node = nodes[i]; i++) - if (targetNode.parentNode == node) return [targetNode]; - } else if (combinator == 'descendant') { - for (var i = 0, node; node = nodes[i]; i++) - if (Element.descendantOf(targetNode, node)) return [targetNode]; - } else if (combinator == 'adjacent') { - for (var i = 0, node; node = nodes[i]; i++) - if (Selector.handlers.previousElementSibling(targetNode) == node) - return [targetNode]; - } else nodes = h[combinator](nodes); - } - for (var i = 0, node; node = nodes[i]; i++) - if (node == targetNode) return [targetNode]; - return []; - } - return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : []; - }, - - className: function(nodes, root, className, combinator) { - if (nodes && combinator) nodes = this[combinator](nodes); - return Selector.handlers.byClassName(nodes, root, className); - }, - - byClassName: function(nodes, root, className) { - if (!nodes) nodes = Selector.handlers.descendant([root]); - var needle = ' ' + className + ' '; - for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) { - nodeClassName = node.className; - if (nodeClassName.length == 0) continue; - if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle)) - results.push(node); - } - return results; - }, - - attrPresence: function(nodes, root, attr) { - if (!nodes) nodes = root.getElementsByTagName("*"); - var results = []; - for (var i = 0, node; node = nodes[i]; i++) - if (Element.hasAttribute(node, attr)) results.push(node); - return results; - }, - - attr: function(nodes, root, attr, value, operator) { - if (!nodes) nodes = root.getElementsByTagName("*"); - var handler = Selector.operators[operator], results = []; - for (var i = 0, node; node = nodes[i]; i++) { - var nodeValue = Element.readAttribute(node, attr); - if (nodeValue === null) continue; - if (handler(nodeValue, value)) results.push(node); - } - return results; - }, - - pseudo: function(nodes, name, value, root, combinator) { - if (nodes && combinator) nodes = this[combinator](nodes); - if (!nodes) nodes = root.getElementsByTagName("*"); - return Selector.pseudos[name](nodes, value, root); - } - }, - - pseudos: { - 'first-child': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - if (Selector.handlers.previousElementSibling(node)) continue; - results.push(node); - } - return results; - }, - 'last-child': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - if (Selector.handlers.nextElementSibling(node)) continue; - results.push(node); - } - return results; - }, - 'only-child': function(nodes, value, root) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!h.previousElementSibling(node) && !h.nextElementSibling(node)) - results.push(node); - return results; - }, - 'nth-child': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root); - }, - 'nth-last-child': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, true); - }, - 'nth-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, false, true); - }, - 'nth-last-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, true, true); - }, - 'first-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, "1", root, false, true); - }, - 'last-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, "1", root, true, true); - }, - 'only-of-type': function(nodes, formula, root) { - var p = Selector.pseudos; - return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root); - }, - - // handles the an+b logic - getIndices: function(a, b, total) { - if (a == 0) return b > 0 ? [b] : []; - return $R(1, total).inject([], function(memo, i) { - if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i); - return memo; - }); - }, - - // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type - nth: function(nodes, formula, root, reverse, ofType) { - if (nodes.length == 0) return []; - if (formula == 'even') formula = '2n+0'; - if (formula == 'odd') formula = '2n+1'; - var h = Selector.handlers, results = [], indexed = [], m; - h.mark(nodes); - for (var i = 0, node; node = nodes[i]; i++) { - if (!node.parentNode._counted) { - h.index(node.parentNode, reverse, ofType); - indexed.push(node.parentNode); - } - } - if (formula.match(/^\d+$/)) { // just a number - formula = Number(formula); - for (var i = 0, node; node = nodes[i]; i++) - if (node.nodeIndex == formula) results.push(node); - } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b - if (m[1] == "-") m[1] = -1; - var a = m[1] ? Number(m[1]) : 1; - var b = m[2] ? Number(m[2]) : 0; - var indices = Selector.pseudos.getIndices(a, b, nodes.length); - for (var i = 0, node, l = indices.length; node = nodes[i]; i++) { - for (var j = 0; j < l; j++) - if (node.nodeIndex == indices[j]) results.push(node); - } - } - h.unmark(nodes); - h.unmark(indexed); - return results; - }, - - 'empty': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - // IE treats comments as element nodes - if (node.tagName == '!' || (node.firstChild && !node.innerHTML.match(/^\s*$/))) continue; - results.push(node); - } - return results; - }, - - 'not': function(nodes, selector, root) { - var h = Selector.handlers, selectorType, m; - var exclusions = new Selector(selector).findElements(root); - h.mark(exclusions); - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!node._counted) results.push(node); - h.unmark(exclusions); - return results; - }, - - 'enabled': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!node.disabled) results.push(node); - return results; - }, - - 'disabled': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (node.disabled) results.push(node); - return results; - }, - - 'checked': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (node.checked) results.push(node); - return results; - } - }, - - operators: { - '=': function(nv, v) { return nv == v; }, - '!=': function(nv, v) { return nv != v; }, - '^=': function(nv, v) { return nv.startsWith(v); }, - '$=': function(nv, v) { return nv.endsWith(v); }, - '*=': function(nv, v) { return nv.include(v); }, - '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); }, - '|=': function(nv, v) { return ('-' + nv.toUpperCase() + '-').include('-' + v.toUpperCase() + '-'); } - }, - - matchElements: function(elements, expression) { - var matches = new Selector(expression).findElements(), h = Selector.handlers; - h.mark(matches); - for (var i = 0, results = [], element; element = elements[i]; i++) - if (element._counted) results.push(element); - h.unmark(matches); - return results; - }, - - findElement: function(elements, expression, index) { - if (Object.isNumber(expression)) { - index = expression; expression = false; - } - return Selector.matchElements(elements, expression || '*')[index || 0]; - }, - - findChildElements: function(element, expressions) { - var exprs = expressions.join(','), expressions = []; - exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { - expressions.push(m[1].strip()); - }); - var results = [], h = Selector.handlers; - for (var i = 0, l = expressions.length, selector; i < l; i++) { - selector = new Selector(expressions[i].strip()); - h.concat(results, selector.findElements(element)); - } - return (l > 1) ? h.unique(results) : results; - } -}); - -function $$() { - return Selector.findChildElements(document, $A(arguments)); -} -var Form = { - reset: function(form) { - $(form).reset(); - return form; - }, - - serializeElements: function(elements, options) { - if (typeof options != 'object') options = { hash: !!options }; - else if (options.hash === undefined) options.hash = true; - var key, value, submitted = false, submit = options.submit; - - var data = elements.inject({ }, function(result, element) { - if (!element.disabled && element.name) { - key = element.name; value = $(element).getValue(); - if (value != null && (element.type != 'submit' || (!submitted && - submit !== false && (!submit || key == submit) && (submitted = true)))) { - if (key in result) { - // a key is already present; construct an array of values - if (!Object.isArray(result[key])) result[key] = [result[key]]; - result[key].push(value); - } - else result[key] = value; - } - } - return result; - }); - - return options.hash ? data : Object.toQueryString(data); - } -}; - -Form.Methods = { - serialize: function(form, options) { - return Form.serializeElements(Form.getElements(form), options); - }, - - getElements: function(form) { - return $A($(form).getElementsByTagName('*')).inject([], - function(elements, child) { - if (Form.Element.Serializers[child.tagName.toLowerCase()]) - elements.push(Element.extend(child)); - return elements; - } - ); - }, - - getInputs: function(form, typeName, name) { - form = $(form); - var inputs = form.getElementsByTagName('input'); - - if (!typeName && !name) return $A(inputs).map(Element.extend); - - for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { - var input = inputs[i]; - if ((typeName && input.type != typeName) || (name && input.name != name)) - continue; - matchingInputs.push(Element.extend(input)); - } - - return matchingInputs; - }, - - disable: function(form) { - form = $(form); - Form.getElements(form).invoke('disable'); - return form; - }, - - enable: function(form) { - form = $(form); - Form.getElements(form).invoke('enable'); - return form; - }, - - findFirstElement: function(form) { - var elements = $(form).getElements().findAll(function(element) { - return 'hidden' != element.type && !element.disabled; - }); - var firstByIndex = elements.findAll(function(element) { - return element.hasAttribute('tabIndex') && element.tabIndex >= 0; - }).sortBy(function(element) { return element.tabIndex }).first(); - - return firstByIndex ? firstByIndex : elements.find(function(element) { - return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); - }); - }, - - focusFirstElement: function(form) { - form = $(form); - form.findFirstElement().activate(); - return form; - }, - - request: function(form, options) { - form = $(form), options = Object.clone(options || { }); - - var params = options.parameters, action = form.readAttribute('action') || ''; - if (action.blank()) action = window.location.href; - options.parameters = form.serialize(true); - - if (params) { - if (Object.isString(params)) params = params.toQueryParams(); - Object.extend(options.parameters, params); - } - - if (form.hasAttribute('method') && !options.method) - options.method = form.method; - - return new Ajax.Request(action, options); - } -}; - -/*--------------------------------------------------------------------------*/ - -Form.Element = { - focus: function(element) { - $(element).focus(); - return element; - }, - - select: function(element) { - $(element).select(); - return element; - } -}; - -Form.Element.Methods = { - serialize: function(element) { - element = $(element); - if (!element.disabled && element.name) { - var value = element.getValue(); - if (value != undefined) { - var pair = { }; - pair[element.name] = value; - return Object.toQueryString(pair); - } - } - return ''; - }, - - getValue: function(element) { - element = $(element); - var method = element.tagName.toLowerCase(); - return Form.Element.Serializers[method](element); - }, - - setValue: function(element, value) { - element = $(element); - var method = element.tagName.toLowerCase(); - Form.Element.Serializers[method](element, value); - return element; - }, - - clear: function(element) { - $(element).value = ''; - return element; - }, - - present: function(element) { - return $(element).value != ''; - }, - - activate: function(element) { - element = $(element); - try { - element.focus(); - if (element.select && (element.tagName.toLowerCase() != 'input' || - !['button', 'reset', 'submit'].include(element.type))) - element.select(); - } catch (e) { } - return element; - }, - - disable: function(element) { - element = $(element); - element.blur(); - element.disabled = true; - return element; - }, - - enable: function(element) { - element = $(element); - element.disabled = false; - return element; - } -}; - -/*--------------------------------------------------------------------------*/ - -var Field = Form.Element; -var $F = Form.Element.Methods.getValue; - -/*--------------------------------------------------------------------------*/ - -Form.Element.Serializers = { - input: function(element, value) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - return Form.Element.Serializers.inputSelector(element, value); - default: - return Form.Element.Serializers.textarea(element, value); - } - }, - - inputSelector: function(element, value) { - if (value === undefined) return element.checked ? element.value : null; - else element.checked = !!value; - }, - - textarea: function(element, value) { - if (value === undefined) return element.value; - else element.value = value; - }, - - select: function(element, index) { - if (index === undefined) - return this[element.type == 'select-one' ? - 'selectOne' : 'selectMany'](element); - else { - var opt, value, single = !Object.isArray(index); - for (var i = 0, length = element.length; i < length; i++) { - opt = element.options[i]; - value = this.optionValue(opt); - if (single) { - if (value == index) { - opt.selected = true; - return; - } - } - else opt.selected = index.include(value); - } - } - }, - - selectOne: function(element) { - var index = element.selectedIndex; - return index >= 0 ? this.optionValue(element.options[index]) : null; - }, - - selectMany: function(element) { - var values, length = element.length; - if (!length) return null; - - for (var i = 0, values = []; i < length; i++) { - var opt = element.options[i]; - if (opt.selected) values.push(this.optionValue(opt)); - } - return values; - }, - - optionValue: function(opt) { - // extend element because hasAttribute may not be native - return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text; - } -}; - -/*--------------------------------------------------------------------------*/ - -Abstract.TimedObserver = Class.create(PeriodicalExecuter, { - initialize: function($super, element, frequency, callback) { - $super(callback, frequency); - this.element = $(element); - this.lastValue = this.getValue(); - }, - - execute: function() { - var value = this.getValue(); - if (Object.isString(this.lastValue) && Object.isString(value) ? - this.lastValue != value : String(this.lastValue) != String(value)) { - this.callback(this.element, value); - this.lastValue = value; - } - } -}); - -Form.Element.Observer = Class.create(Abstract.TimedObserver, { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.Observer = Class.create(Abstract.TimedObserver, { - getValue: function() { - return Form.serialize(this.element); - } -}); - -/*--------------------------------------------------------------------------*/ - -Abstract.EventObserver = Class.create({ - initialize: function(element, callback) { - this.element = $(element); - this.callback = callback; - - this.lastValue = this.getValue(); - if (this.element.tagName.toLowerCase() == 'form') - this.registerFormCallbacks(); - else - this.registerCallback(this.element); - }, - - onElementEvent: function() { - var value = this.getValue(); - if (this.lastValue != value) { - this.callback(this.element, value); - this.lastValue = value; - } - }, - - registerFormCallbacks: function() { - Form.getElements(this.element).each(this.registerCallback, this); - }, - - registerCallback: function(element) { - if (element.type) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - Event.observe(element, 'click', this.onElementEvent.bind(this)); - break; - default: - Event.observe(element, 'change', this.onElementEvent.bind(this)); - break; - } - } - } -}); - -Form.Element.EventObserver = Class.create(Abstract.EventObserver, { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.EventObserver = Class.create(Abstract.EventObserver, { - getValue: function() { - return Form.serialize(this.element); - } -}); -if (!window.Event) var Event = { }; - -Object.extend(Event, { - KEY_BACKSPACE: 8, - KEY_TAB: 9, - KEY_RETURN: 13, - KEY_ESC: 27, - KEY_LEFT: 37, - KEY_UP: 38, - KEY_RIGHT: 39, - KEY_DOWN: 40, - KEY_DELETE: 46, - KEY_HOME: 36, - KEY_END: 35, - KEY_PAGEUP: 33, - KEY_PAGEDOWN: 34, - KEY_INSERT: 45, - - cache: { }, - - relatedTarget: function(event) { - var element; - switch(event.type) { - case 'mouseover': element = event.fromElement; break; - case 'mouseout': element = event.toElement; break; - default: return null; - } - return Element.extend(element); - } -}); - -Event.Methods = (function() { - var isButton; - - if (Prototype.Browser.IE) { - var buttonMap = { 0: 1, 1: 4, 2: 2 }; - isButton = function(event, code) { - return event.button == buttonMap[code]; - }; - - } else if (Prototype.Browser.WebKit) { - isButton = function(event, code) { - switch (code) { - case 0: return event.which == 1 && !event.metaKey; - case 1: return event.which == 1 && event.metaKey; - default: return false; - } - }; - - } else { - isButton = function(event, code) { - return event.which ? (event.which === code + 1) : (event.button === code); - }; - } - - return { - isLeftClick: function(event) { return isButton(event, 0) }, - isMiddleClick: function(event) { return isButton(event, 1) }, - isRightClick: function(event) { return isButton(event, 2) }, - - element: function(event) { - var node = Event.extend(event).target; - return Element.extend(node.nodeType == Node.TEXT_NODE ? node.parentNode : node); - }, - - findElement: function(event, expression) { - var element = Event.element(event); - return element.match(expression) ? element : element.up(expression); - }, - - pointer: function(event) { - return { - x: event.pageX || (event.clientX + - (document.documentElement.scrollLeft || document.body.scrollLeft)), - y: event.pageY || (event.clientY + - (document.documentElement.scrollTop || document.body.scrollTop)) - }; - }, - - pointerX: function(event) { return Event.pointer(event).x }, - pointerY: function(event) { return Event.pointer(event).y }, - - stop: function(event) { - Event.extend(event); - event.preventDefault(); - event.stopPropagation(); - event.stopped = true; - } - }; -})(); - -Event.extend = (function() { - var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { - m[name] = Event.Methods[name].methodize(); - return m; - }); - - if (Prototype.Browser.IE) { - Object.extend(methods, { - stopPropagation: function() { this.cancelBubble = true }, - preventDefault: function() { this.returnValue = false }, - inspect: function() { return "[object Event]" } - }); - - return function(event) { - if (!event) return false; - if (event._extendedByPrototype) return event; - - event._extendedByPrototype = Prototype.emptyFunction; - var pointer = Event.pointer(event); - Object.extend(event, { - target: event.srcElement, - relatedTarget: Event.relatedTarget(event), - pageX: pointer.x, - pageY: pointer.y - }); - return Object.extend(event, methods); - }; - - } else { - Event.prototype = Event.prototype || document.createEvent("HTMLEvents").__proto__; - Object.extend(Event.prototype, methods); - return Prototype.K; - } -})(); - -Object.extend(Event, (function() { - var cache = Event.cache; - - function getEventID(element) { - if (element._eventID) return element._eventID; - arguments.callee.id = arguments.callee.id || 1; - return element._eventID = ++arguments.callee.id; - } - - function getDOMEventName(eventName) { - if (eventName && eventName.include(':')) return "dataavailable"; - return eventName; - } - - function getCacheForID(id) { - return cache[id] = cache[id] || { }; - } - - function getWrappersForEventName(id, eventName) { - var c = getCacheForID(id); - return c[eventName] = c[eventName] || []; - } - - function createWrapper(element, eventName, handler) { - var id = getEventID(element); - var c = getWrappersForEventName(id, eventName); - if (c.pluck("handler").include(handler)) return false; - - var wrapper = function(event) { - if (!Event || !Event.extend || - (event.eventName && event.eventName != eventName)) - return false; - - Event.extend(event); - handler.call(element, event) - }; - - wrapper.handler = handler; - c.push(wrapper); - return wrapper; - } - - function findWrapper(id, eventName, handler) { - var c = getWrappersForEventName(id, eventName); - return c.find(function(wrapper) { return wrapper.handler == handler }); - } - - function destroyWrapper(id, eventName, handler) { - var c = getCacheForID(id); - if (!c[eventName]) return false; - c[eventName] = c[eventName].without(findWrapper(id, eventName, handler)); - } - - function destroyCache() { - for (var id in cache) - for (var eventName in cache[id]) - cache[id][eventName] = null; - } - - if (window.attachEvent) { - window.attachEvent("onunload", destroyCache); - } - - return { - observe: function(element, eventName, handler) { - element = $(element); - var name = getDOMEventName(eventName); - - var wrapper = createWrapper(element, eventName, handler); - if (!wrapper) return element; - - if (element.addEventListener) { - element.addEventListener(name, wrapper, false); - } else { - element.attachEvent("on" + name, wrapper); - } - - return element; - }, - - stopObserving: function(element, eventName, handler) { - element = $(element); - var id = getEventID(element), name = getDOMEventName(eventName); - - if (!handler && eventName) { - getWrappersForEventName(id, eventName).each(function(wrapper) { - element.stopObserving(eventName, wrapper.handler); - }); - return element; - - } else if (!eventName) { - Object.keys(getCacheForID(id)).each(function(eventName) { - element.stopObserving(eventName); - }); - return element; - } - - var wrapper = findWrapper(id, eventName, handler); - if (!wrapper) return element; - - if (element.removeEventListener) { - element.removeEventListener(name, wrapper, false); - } else { - element.detachEvent("on" + name, wrapper); - } - - destroyWrapper(id, eventName, handler); - - return element; - }, - - fire: function(element, eventName, memo) { - element = $(element); - if (element == document && document.createEvent && !element.dispatchEvent) - element = document.documentElement; - - if (document.createEvent) { - var event = document.createEvent("HTMLEvents"); - event.initEvent("dataavailable", true, true); - } else { - var event = document.createEventObject(); - event.eventType = "ondataavailable"; - } - - event.eventName = eventName; - event.memo = memo || { }; - - if (document.createEvent) { - element.dispatchEvent(event); - } else { - element.fireEvent(event.eventType, event); - } - - return event; - } - }; -})()); - -Object.extend(Event, Event.Methods); - -Element.addMethods({ - fire: Event.fire, - observe: Event.observe, - stopObserving: Event.stopObserving -}); - -Object.extend(document, { - fire: Element.Methods.fire.methodize(), - observe: Element.Methods.observe.methodize(), - stopObserving: Element.Methods.stopObserving.methodize() -}); - -(function() { - /* Support for the DOMContentLoaded event is based on work by Dan Webb, - Matthias Miller, Dean Edwards and John Resig. */ - - var timer, fired = false; - - function fireContentLoadedEvent() { - if (fired) return; - if (timer) window.clearInterval(timer); - document.fire("dom:loaded"); - fired = true; - } - - if (document.addEventListener) { - if (Prototype.Browser.WebKit) { - timer = window.setInterval(function() { - if (/loaded|complete/.test(document.readyState)) - fireContentLoadedEvent(); - }, 0); - - Event.observe(window, "load", fireContentLoadedEvent); - - } else { - document.addEventListener("DOMContentLoaded", - fireContentLoadedEvent, false); - } - - } else { - document.write(" - - - -

        Fetching object from server

        -
        - Wait...
        - -
        - - - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/data/prototype.js b/lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/data/prototype.js deleted file mode 100644 index 5c734629..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/json_pure-1.2.0/data/prototype.js +++ /dev/null @@ -1,4184 +0,0 @@ -/* Prototype JavaScript framework, version 1.6.0 - * (c) 2005-2007 Sam Stephenson - * - * Prototype is freely distributable under the terms of an MIT-style license. - * For details, see the Prototype web site: http://www.prototypejs.org/ - * - *--------------------------------------------------------------------------*/ - -var Prototype = { - Version: '1.6.0', - - Browser: { - IE: !!(window.attachEvent && !window.opera), - Opera: !!window.opera, - WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1, - Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1, - MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/) - }, - - BrowserFeatures: { - XPath: !!document.evaluate, - ElementExtensions: !!window.HTMLElement, - SpecificElementExtensions: - document.createElement('div').__proto__ && - document.createElement('div').__proto__ !== - document.createElement('form').__proto__ - }, - - ScriptFragment: ']*>([\\S\\s]*?)<\/script>', - JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/, - - emptyFunction: function() { }, - K: function(x) { return x } -}; - -if (Prototype.Browser.MobileSafari) - Prototype.BrowserFeatures.SpecificElementExtensions = false; - -if (Prototype.Browser.WebKit) - Prototype.BrowserFeatures.XPath = false; - -/* Based on Alex Arnell's inheritance implementation. */ -var Class = { - create: function() { - var parent = null, properties = $A(arguments); - if (Object.isFunction(properties[0])) - parent = properties.shift(); - - function klass() { - this.initialize.apply(this, arguments); - } - - Object.extend(klass, Class.Methods); - klass.superclass = parent; - klass.subclasses = []; - - if (parent) { - var subclass = function() { }; - subclass.prototype = parent.prototype; - klass.prototype = new subclass; - parent.subclasses.push(klass); - } - - for (var i = 0; i < properties.length; i++) - klass.addMethods(properties[i]); - - if (!klass.prototype.initialize) - klass.prototype.initialize = Prototype.emptyFunction; - - klass.prototype.constructor = klass; - - return klass; - } -}; - -Class.Methods = { - addMethods: function(source) { - var ancestor = this.superclass && this.superclass.prototype; - var properties = Object.keys(source); - - if (!Object.keys({ toString: true }).length) - properties.push("toString", "valueOf"); - - for (var i = 0, length = properties.length; i < length; i++) { - var property = properties[i], value = source[property]; - if (ancestor && Object.isFunction(value) && - value.argumentNames().first() == "$super") { - var method = value, value = Object.extend((function(m) { - return function() { return ancestor[m].apply(this, arguments) }; - })(property).wrap(method), { - valueOf: function() { return method }, - toString: function() { return method.toString() } - }); - } - this.prototype[property] = value; - } - - return this; - } -}; - -var Abstract = { }; - -Object.extend = function(destination, source) { - for (var property in source) - destination[property] = source[property]; - return destination; -}; - -Object.extend(Object, { - inspect: function(object) { - try { - if (object === undefined) return 'undefined'; - if (object === null) return 'null'; - return object.inspect ? object.inspect() : object.toString(); - } catch (e) { - if (e instanceof RangeError) return '...'; - throw e; - } - }, - - toJSON: function(object) { - var type = typeof object; - switch (type) { - case 'undefined': - case 'function': - case 'unknown': return; - case 'boolean': return object.toString(); - } - - if (object === null) return 'null'; - if (object.toJSON) return object.toJSON(); - if (Object.isElement(object)) return; - - var results = []; - for (var property in object) { - var value = Object.toJSON(object[property]); - if (value !== undefined) - results.push(property.toJSON() + ': ' + value); - } - - return '{' + results.join(', ') + '}'; - }, - - toQueryString: function(object) { - return $H(object).toQueryString(); - }, - - toHTML: function(object) { - return object && object.toHTML ? object.toHTML() : String.interpret(object); - }, - - keys: function(object) { - var keys = []; - for (var property in object) - keys.push(property); - return keys; - }, - - values: function(object) { - var values = []; - for (var property in object) - values.push(object[property]); - return values; - }, - - clone: function(object) { - return Object.extend({ }, object); - }, - - isElement: function(object) { - return object && object.nodeType == 1; - }, - - isArray: function(object) { - return object && object.constructor === Array; - }, - - isHash: function(object) { - return object instanceof Hash; - }, - - isFunction: function(object) { - return typeof object == "function"; - }, - - isString: function(object) { - return typeof object == "string"; - }, - - isNumber: function(object) { - return typeof object == "number"; - }, - - isUndefined: function(object) { - return typeof object == "undefined"; - } -}); - -Object.extend(Function.prototype, { - argumentNames: function() { - var names = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip"); - return names.length == 1 && !names[0] ? [] : names; - }, - - bind: function() { - if (arguments.length < 2 && arguments[0] === undefined) return this; - var __method = this, args = $A(arguments), object = args.shift(); - return function() { - return __method.apply(object, args.concat($A(arguments))); - } - }, - - bindAsEventListener: function() { - var __method = this, args = $A(arguments), object = args.shift(); - return function(event) { - return __method.apply(object, [event || window.event].concat(args)); - } - }, - - curry: function() { - if (!arguments.length) return this; - var __method = this, args = $A(arguments); - return function() { - return __method.apply(this, args.concat($A(arguments))); - } - }, - - delay: function() { - var __method = this, args = $A(arguments), timeout = args.shift() * 1000; - return window.setTimeout(function() { - return __method.apply(__method, args); - }, timeout); - }, - - wrap: function(wrapper) { - var __method = this; - return function() { - return wrapper.apply(this, [__method.bind(this)].concat($A(arguments))); - } - }, - - methodize: function() { - if (this._methodized) return this._methodized; - var __method = this; - return this._methodized = function() { - return __method.apply(null, [this].concat($A(arguments))); - }; - } -}); - -Function.prototype.defer = Function.prototype.delay.curry(0.01); - -Date.prototype.toJSON = function() { - return '"' + this.getUTCFullYear() + '-' + - (this.getUTCMonth() + 1).toPaddedString(2) + '-' + - this.getUTCDate().toPaddedString(2) + 'T' + - this.getUTCHours().toPaddedString(2) + ':' + - this.getUTCMinutes().toPaddedString(2) + ':' + - this.getUTCSeconds().toPaddedString(2) + 'Z"'; -}; - -var Try = { - these: function() { - var returnValue; - - for (var i = 0, length = arguments.length; i < length; i++) { - var lambda = arguments[i]; - try { - returnValue = lambda(); - break; - } catch (e) { } - } - - return returnValue; - } -}; - -RegExp.prototype.match = RegExp.prototype.test; - -RegExp.escape = function(str) { - return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1'); -}; - -/*--------------------------------------------------------------------------*/ - -var PeriodicalExecuter = Class.create({ - initialize: function(callback, frequency) { - this.callback = callback; - this.frequency = frequency; - this.currentlyExecuting = false; - - this.registerCallback(); - }, - - registerCallback: function() { - this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); - }, - - execute: function() { - this.callback(this); - }, - - stop: function() { - if (!this.timer) return; - clearInterval(this.timer); - this.timer = null; - }, - - onTimerEvent: function() { - if (!this.currentlyExecuting) { - try { - this.currentlyExecuting = true; - this.execute(); - } finally { - this.currentlyExecuting = false; - } - } - } -}); -Object.extend(String, { - interpret: function(value) { - return value == null ? '' : String(value); - }, - specialChar: { - '\b': '\\b', - '\t': '\\t', - '\n': '\\n', - '\f': '\\f', - '\r': '\\r', - '\\': '\\\\' - } -}); - -Object.extend(String.prototype, { - gsub: function(pattern, replacement) { - var result = '', source = this, match; - replacement = arguments.callee.prepareReplacement(replacement); - - while (source.length > 0) { - if (match = source.match(pattern)) { - result += source.slice(0, match.index); - result += String.interpret(replacement(match)); - source = source.slice(match.index + match[0].length); - } else { - result += source, source = ''; - } - } - return result; - }, - - sub: function(pattern, replacement, count) { - replacement = this.gsub.prepareReplacement(replacement); - count = count === undefined ? 1 : count; - - return this.gsub(pattern, function(match) { - if (--count < 0) return match[0]; - return replacement(match); - }); - }, - - scan: function(pattern, iterator) { - this.gsub(pattern, iterator); - return String(this); - }, - - truncate: function(length, truncation) { - length = length || 30; - truncation = truncation === undefined ? '...' : truncation; - return this.length > length ? - this.slice(0, length - truncation.length) + truncation : String(this); - }, - - strip: function() { - return this.replace(/^\s+/, '').replace(/\s+$/, ''); - }, - - stripTags: function() { - return this.replace(/<\/?[^>]+>/gi, ''); - }, - - stripScripts: function() { - return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); - }, - - extractScripts: function() { - var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); - var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); - return (this.match(matchAll) || []).map(function(scriptTag) { - return (scriptTag.match(matchOne) || ['', ''])[1]; - }); - }, - - evalScripts: function() { - return this.extractScripts().map(function(script) { return eval(script) }); - }, - - escapeHTML: function() { - var self = arguments.callee; - self.text.data = this; - return self.div.innerHTML; - }, - - unescapeHTML: function() { - var div = new Element('div'); - div.innerHTML = this.stripTags(); - return div.childNodes[0] ? (div.childNodes.length > 1 ? - $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) : - div.childNodes[0].nodeValue) : ''; - }, - - toQueryParams: function(separator) { - var match = this.strip().match(/([^?#]*)(#.*)?$/); - if (!match) return { }; - - return match[1].split(separator || '&').inject({ }, function(hash, pair) { - if ((pair = pair.split('='))[0]) { - var key = decodeURIComponent(pair.shift()); - var value = pair.length > 1 ? pair.join('=') : pair[0]; - if (value != undefined) value = decodeURIComponent(value); - - if (key in hash) { - if (!Object.isArray(hash[key])) hash[key] = [hash[key]]; - hash[key].push(value); - } - else hash[key] = value; - } - return hash; - }); - }, - - toArray: function() { - return this.split(''); - }, - - succ: function() { - return this.slice(0, this.length - 1) + - String.fromCharCode(this.charCodeAt(this.length - 1) + 1); - }, - - times: function(count) { - return count < 1 ? '' : new Array(count + 1).join(this); - }, - - camelize: function() { - var parts = this.split('-'), len = parts.length; - if (len == 1) return parts[0]; - - var camelized = this.charAt(0) == '-' - ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1) - : parts[0]; - - for (var i = 1; i < len; i++) - camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1); - - return camelized; - }, - - capitalize: function() { - return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); - }, - - underscore: function() { - return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase(); - }, - - dasherize: function() { - return this.gsub(/_/,'-'); - }, - - inspect: function(useDoubleQuotes) { - var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) { - var character = String.specialChar[match[0]]; - return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16); - }); - if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"'; - return "'" + escapedString.replace(/'/g, '\\\'') + "'"; - }, - - toJSON: function() { - return this.inspect(true); - }, - - unfilterJSON: function(filter) { - return this.sub(filter || Prototype.JSONFilter, '#{1}'); - }, - - isJSON: function() { - var str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''); - return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str); - }, - - evalJSON: function(sanitize) { - var json = this.unfilterJSON(); - try { - if (!sanitize || json.isJSON()) return eval('(' + json + ')'); - } catch (e) { } - throw new SyntaxError('Badly formed JSON string: ' + this.inspect()); - }, - - include: function(pattern) { - return this.indexOf(pattern) > -1; - }, - - startsWith: function(pattern) { - return this.indexOf(pattern) === 0; - }, - - endsWith: function(pattern) { - var d = this.length - pattern.length; - return d >= 0 && this.lastIndexOf(pattern) === d; - }, - - empty: function() { - return this == ''; - }, - - blank: function() { - return /^\s*$/.test(this); - }, - - interpolate: function(object, pattern) { - return new Template(this, pattern).evaluate(object); - } -}); - -if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, { - escapeHTML: function() { - return this.replace(/&/g,'&').replace(//g,'>'); - }, - unescapeHTML: function() { - return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>'); - } -}); - -String.prototype.gsub.prepareReplacement = function(replacement) { - if (Object.isFunction(replacement)) return replacement; - var template = new Template(replacement); - return function(match) { return template.evaluate(match) }; -}; - -String.prototype.parseQuery = String.prototype.toQueryParams; - -Object.extend(String.prototype.escapeHTML, { - div: document.createElement('div'), - text: document.createTextNode('') -}); - -with (String.prototype.escapeHTML) div.appendChild(text); - -var Template = Class.create({ - initialize: function(template, pattern) { - this.template = template.toString(); - this.pattern = pattern || Template.Pattern; - }, - - evaluate: function(object) { - if (Object.isFunction(object.toTemplateReplacements)) - object = object.toTemplateReplacements(); - - return this.template.gsub(this.pattern, function(match) { - if (object == null) return ''; - - var before = match[1] || ''; - if (before == '\\') return match[2]; - - var ctx = object, expr = match[3]; - var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/, match = pattern.exec(expr); - if (match == null) return before; - - while (match != null) { - var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1]; - ctx = ctx[comp]; - if (null == ctx || '' == match[3]) break; - expr = expr.substring('[' == match[3] ? match[1].length : match[0].length); - match = pattern.exec(expr); - } - - return before + String.interpret(ctx); - }.bind(this)); - } -}); -Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/; - -var $break = { }; - -var Enumerable = { - each: function(iterator, context) { - var index = 0; - iterator = iterator.bind(context); - try { - this._each(function(value) { - iterator(value, index++); - }); - } catch (e) { - if (e != $break) throw e; - } - return this; - }, - - eachSlice: function(number, iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var index = -number, slices = [], array = this.toArray(); - while ((index += number) < array.length) - slices.push(array.slice(index, index+number)); - return slices.collect(iterator, context); - }, - - all: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result = true; - this.each(function(value, index) { - result = result && !!iterator(value, index); - if (!result) throw $break; - }); - return result; - }, - - any: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result = false; - this.each(function(value, index) { - if (result = !!iterator(value, index)) - throw $break; - }); - return result; - }, - - collect: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var results = []; - this.each(function(value, index) { - results.push(iterator(value, index)); - }); - return results; - }, - - detect: function(iterator, context) { - iterator = iterator.bind(context); - var result; - this.each(function(value, index) { - if (iterator(value, index)) { - result = value; - throw $break; - } - }); - return result; - }, - - findAll: function(iterator, context) { - iterator = iterator.bind(context); - var results = []; - this.each(function(value, index) { - if (iterator(value, index)) - results.push(value); - }); - return results; - }, - - grep: function(filter, iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var results = []; - - if (Object.isString(filter)) - filter = new RegExp(filter); - - this.each(function(value, index) { - if (filter.match(value)) - results.push(iterator(value, index)); - }); - return results; - }, - - include: function(object) { - if (Object.isFunction(this.indexOf)) - if (this.indexOf(object) != -1) return true; - - var found = false; - this.each(function(value) { - if (value == object) { - found = true; - throw $break; - } - }); - return found; - }, - - inGroupsOf: function(number, fillWith) { - fillWith = fillWith === undefined ? null : fillWith; - return this.eachSlice(number, function(slice) { - while(slice.length < number) slice.push(fillWith); - return slice; - }); - }, - - inject: function(memo, iterator, context) { - iterator = iterator.bind(context); - this.each(function(value, index) { - memo = iterator(memo, value, index); - }); - return memo; - }, - - invoke: function(method) { - var args = $A(arguments).slice(1); - return this.map(function(value) { - return value[method].apply(value, args); - }); - }, - - max: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result; - this.each(function(value, index) { - value = iterator(value, index); - if (result == undefined || value >= result) - result = value; - }); - return result; - }, - - min: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var result; - this.each(function(value, index) { - value = iterator(value, index); - if (result == undefined || value < result) - result = value; - }); - return result; - }, - - partition: function(iterator, context) { - iterator = iterator ? iterator.bind(context) : Prototype.K; - var trues = [], falses = []; - this.each(function(value, index) { - (iterator(value, index) ? - trues : falses).push(value); - }); - return [trues, falses]; - }, - - pluck: function(property) { - var results = []; - this.each(function(value) { - results.push(value[property]); - }); - return results; - }, - - reject: function(iterator, context) { - iterator = iterator.bind(context); - var results = []; - this.each(function(value, index) { - if (!iterator(value, index)) - results.push(value); - }); - return results; - }, - - sortBy: function(iterator, context) { - iterator = iterator.bind(context); - return this.map(function(value, index) { - return {value: value, criteria: iterator(value, index)}; - }).sort(function(left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - }).pluck('value'); - }, - - toArray: function() { - return this.map(); - }, - - zip: function() { - var iterator = Prototype.K, args = $A(arguments); - if (Object.isFunction(args.last())) - iterator = args.pop(); - - var collections = [this].concat(args).map($A); - return this.map(function(value, index) { - return iterator(collections.pluck(index)); - }); - }, - - size: function() { - return this.toArray().length; - }, - - inspect: function() { - return '#'; - } -}; - -Object.extend(Enumerable, { - map: Enumerable.collect, - find: Enumerable.detect, - select: Enumerable.findAll, - filter: Enumerable.findAll, - member: Enumerable.include, - entries: Enumerable.toArray, - every: Enumerable.all, - some: Enumerable.any -}); -function $A(iterable) { - if (!iterable) return []; - if (iterable.toArray) return iterable.toArray(); - var length = iterable.length, results = new Array(length); - while (length--) results[length] = iterable[length]; - return results; -} - -if (Prototype.Browser.WebKit) { - function $A(iterable) { - if (!iterable) return []; - if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') && - iterable.toArray) return iterable.toArray(); - var length = iterable.length, results = new Array(length); - while (length--) results[length] = iterable[length]; - return results; - } -} - -Array.from = $A; - -Object.extend(Array.prototype, Enumerable); - -if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse; - -Object.extend(Array.prototype, { - _each: function(iterator) { - for (var i = 0, length = this.length; i < length; i++) - iterator(this[i]); - }, - - clear: function() { - this.length = 0; - return this; - }, - - first: function() { - return this[0]; - }, - - last: function() { - return this[this.length - 1]; - }, - - compact: function() { - return this.select(function(value) { - return value != null; - }); - }, - - flatten: function() { - return this.inject([], function(array, value) { - return array.concat(Object.isArray(value) ? - value.flatten() : [value]); - }); - }, - - without: function() { - var values = $A(arguments); - return this.select(function(value) { - return !values.include(value); - }); - }, - - reverse: function(inline) { - return (inline !== false ? this : this.toArray())._reverse(); - }, - - reduce: function() { - return this.length > 1 ? this : this[0]; - }, - - uniq: function(sorted) { - return this.inject([], function(array, value, index) { - if (0 == index || (sorted ? array.last() != value : !array.include(value))) - array.push(value); - return array; - }); - }, - - intersect: function(array) { - return this.uniq().findAll(function(item) { - return array.detect(function(value) { return item === value }); - }); - }, - - clone: function() { - return [].concat(this); - }, - - size: function() { - return this.length; - }, - - inspect: function() { - return '[' + this.map(Object.inspect).join(', ') + ']'; - }, - - toJSON: function() { - var results = []; - this.each(function(object) { - var value = Object.toJSON(object); - if (value !== undefined) results.push(value); - }); - return '[' + results.join(', ') + ']'; - } -}); - -// use native browser JS 1.6 implementation if available -if (Object.isFunction(Array.prototype.forEach)) - Array.prototype._each = Array.prototype.forEach; - -if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) { - i || (i = 0); - var length = this.length; - if (i < 0) i = length + i; - for (; i < length; i++) - if (this[i] === item) return i; - return -1; -}; - -if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) { - i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1; - var n = this.slice(0, i).reverse().indexOf(item); - return (n < 0) ? n : i - n - 1; -}; - -Array.prototype.toArray = Array.prototype.clone; - -function $w(string) { - if (!Object.isString(string)) return []; - string = string.strip(); - return string ? string.split(/\s+/) : []; -} - -if (Prototype.Browser.Opera){ - Array.prototype.concat = function() { - var array = []; - for (var i = 0, length = this.length; i < length; i++) array.push(this[i]); - for (var i = 0, length = arguments.length; i < length; i++) { - if (Object.isArray(arguments[i])) { - for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++) - array.push(arguments[i][j]); - } else { - array.push(arguments[i]); - } - } - return array; - }; -} -Object.extend(Number.prototype, { - toColorPart: function() { - return this.toPaddedString(2, 16); - }, - - succ: function() { - return this + 1; - }, - - times: function(iterator) { - $R(0, this, true).each(iterator); - return this; - }, - - toPaddedString: function(length, radix) { - var string = this.toString(radix || 10); - return '0'.times(length - string.length) + string; - }, - - toJSON: function() { - return isFinite(this) ? this.toString() : 'null'; - } -}); - -$w('abs round ceil floor').each(function(method){ - Number.prototype[method] = Math[method].methodize(); -}); -function $H(object) { - return new Hash(object); -}; - -var Hash = Class.create(Enumerable, (function() { - if (function() { - var i = 0, Test = function(value) { this.key = value }; - Test.prototype.key = 'foo'; - for (var property in new Test('bar')) i++; - return i > 1; - }()) { - function each(iterator) { - var cache = []; - for (var key in this._object) { - var value = this._object[key]; - if (cache.include(key)) continue; - cache.push(key); - var pair = [key, value]; - pair.key = key; - pair.value = value; - iterator(pair); - } - } - } else { - function each(iterator) { - for (var key in this._object) { - var value = this._object[key], pair = [key, value]; - pair.key = key; - pair.value = value; - iterator(pair); - } - } - } - - function toQueryPair(key, value) { - if (Object.isUndefined(value)) return key; - return key + '=' + encodeURIComponent(String.interpret(value)); - } - - return { - initialize: function(object) { - this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); - }, - - _each: each, - - set: function(key, value) { - return this._object[key] = value; - }, - - get: function(key) { - return this._object[key]; - }, - - unset: function(key) { - var value = this._object[key]; - delete this._object[key]; - return value; - }, - - toObject: function() { - return Object.clone(this._object); - }, - - keys: function() { - return this.pluck('key'); - }, - - values: function() { - return this.pluck('value'); - }, - - index: function(value) { - var match = this.detect(function(pair) { - return pair.value === value; - }); - return match && match.key; - }, - - merge: function(object) { - return this.clone().update(object); - }, - - update: function(object) { - return new Hash(object).inject(this, function(result, pair) { - result.set(pair.key, pair.value); - return result; - }); - }, - - toQueryString: function() { - return this.map(function(pair) { - var key = encodeURIComponent(pair.key), values = pair.value; - - if (values && typeof values == 'object') { - if (Object.isArray(values)) - return values.map(toQueryPair.curry(key)).join('&'); - } - return toQueryPair(key, values); - }).join('&'); - }, - - inspect: function() { - return '#'; - }, - - toJSON: function() { - return Object.toJSON(this.toObject()); - }, - - clone: function() { - return new Hash(this); - } - } -})()); - -Hash.prototype.toTemplateReplacements = Hash.prototype.toObject; -Hash.from = $H; -var ObjectRange = Class.create(Enumerable, { - initialize: function(start, end, exclusive) { - this.start = start; - this.end = end; - this.exclusive = exclusive; - }, - - _each: function(iterator) { - var value = this.start; - while (this.include(value)) { - iterator(value); - value = value.succ(); - } - }, - - include: function(value) { - if (value < this.start) - return false; - if (this.exclusive) - return value < this.end; - return value <= this.end; - } -}); - -var $R = function(start, end, exclusive) { - return new ObjectRange(start, end, exclusive); -}; - -var Ajax = { - getTransport: function() { - return Try.these( - function() {return new XMLHttpRequest()}, - function() {return new ActiveXObject('Msxml2.XMLHTTP')}, - function() {return new ActiveXObject('Microsoft.XMLHTTP')} - ) || false; - }, - - activeRequestCount: 0 -}; - -Ajax.Responders = { - responders: [], - - _each: function(iterator) { - this.responders._each(iterator); - }, - - register: function(responder) { - if (!this.include(responder)) - this.responders.push(responder); - }, - - unregister: function(responder) { - this.responders = this.responders.without(responder); - }, - - dispatch: function(callback, request, transport, json) { - this.each(function(responder) { - if (Object.isFunction(responder[callback])) { - try { - responder[callback].apply(responder, [request, transport, json]); - } catch (e) { } - } - }); - } -}; - -Object.extend(Ajax.Responders, Enumerable); - -Ajax.Responders.register({ - onCreate: function() { Ajax.activeRequestCount++ }, - onComplete: function() { Ajax.activeRequestCount-- } -}); - -Ajax.Base = Class.create({ - initialize: function(options) { - this.options = { - method: 'post', - asynchronous: true, - contentType: 'application/x-www-form-urlencoded', - encoding: 'UTF-8', - parameters: '', - evalJSON: true, - evalJS: true - }; - Object.extend(this.options, options || { }); - - this.options.method = this.options.method.toLowerCase(); - if (Object.isString(this.options.parameters)) - this.options.parameters = this.options.parameters.toQueryParams(); - } -}); - -Ajax.Request = Class.create(Ajax.Base, { - _complete: false, - - initialize: function($super, url, options) { - $super(options); - this.transport = Ajax.getTransport(); - this.request(url); - }, - - request: function(url) { - this.url = url; - this.method = this.options.method; - var params = Object.clone(this.options.parameters); - - if (!['get', 'post'].include(this.method)) { - // simulate other verbs over post - params['_method'] = this.method; - this.method = 'post'; - } - - this.parameters = params; - - if (params = Object.toQueryString(params)) { - // when GET, append parameters to URL - if (this.method == 'get') - this.url += (this.url.include('?') ? '&' : '?') + params; - else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) - params += '&_='; - } - - try { - var response = new Ajax.Response(this); - if (this.options.onCreate) this.options.onCreate(response); - Ajax.Responders.dispatch('onCreate', this, response); - - this.transport.open(this.method.toUpperCase(), this.url, - this.options.asynchronous); - - if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1); - - this.transport.onreadystatechange = this.onStateChange.bind(this); - this.setRequestHeaders(); - - this.body = this.method == 'post' ? (this.options.postBody || params) : null; - this.transport.send(this.body); - - /* Force Firefox to handle ready state 4 for synchronous requests */ - if (!this.options.asynchronous && this.transport.overrideMimeType) - this.onStateChange(); - - } - catch (e) { - this.dispatchException(e); - } - }, - - onStateChange: function() { - var readyState = this.transport.readyState; - if (readyState > 1 && !((readyState == 4) && this._complete)) - this.respondToReadyState(this.transport.readyState); - }, - - setRequestHeaders: function() { - var headers = { - 'X-Requested-With': 'XMLHttpRequest', - 'X-Prototype-Version': Prototype.Version, - 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*' - }; - - if (this.method == 'post') { - headers['Content-type'] = this.options.contentType + - (this.options.encoding ? '; charset=' + this.options.encoding : ''); - - /* Force "Connection: close" for older Mozilla browsers to work - * around a bug where XMLHttpRequest sends an incorrect - * Content-length header. See Mozilla Bugzilla #246651. - */ - if (this.transport.overrideMimeType && - (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005) - headers['Connection'] = 'close'; - } - - // user-defined headers - if (typeof this.options.requestHeaders == 'object') { - var extras = this.options.requestHeaders; - - if (Object.isFunction(extras.push)) - for (var i = 0, length = extras.length; i < length; i += 2) - headers[extras[i]] = extras[i+1]; - else - $H(extras).each(function(pair) { headers[pair.key] = pair.value }); - } - - for (var name in headers) - this.transport.setRequestHeader(name, headers[name]); - }, - - success: function() { - var status = this.getStatus(); - return !status || (status >= 200 && status < 300); - }, - - getStatus: function() { - try { - return this.transport.status || 0; - } catch (e) { return 0 } - }, - - respondToReadyState: function(readyState) { - var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this); - - if (state == 'Complete') { - try { - this._complete = true; - (this.options['on' + response.status] - || this.options['on' + (this.success() ? 'Success' : 'Failure')] - || Prototype.emptyFunction)(response, response.headerJSON); - } catch (e) { - this.dispatchException(e); - } - - var contentType = response.getHeader('Content-type'); - if (this.options.evalJS == 'force' - || (this.options.evalJS && contentType - && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i))) - this.evalResponse(); - } - - try { - (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON); - Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON); - } catch (e) { - this.dispatchException(e); - } - - if (state == 'Complete') { - // avoid memory leak in MSIE: clean up - this.transport.onreadystatechange = Prototype.emptyFunction; - } - }, - - getHeader: function(name) { - try { - return this.transport.getResponseHeader(name); - } catch (e) { return null } - }, - - evalResponse: function() { - try { - return eval((this.transport.responseText || '').unfilterJSON()); - } catch (e) { - this.dispatchException(e); - } - }, - - dispatchException: function(exception) { - (this.options.onException || Prototype.emptyFunction)(this, exception); - Ajax.Responders.dispatch('onException', this, exception); - } -}); - -Ajax.Request.Events = - ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; - -Ajax.Response = Class.create({ - initialize: function(request){ - this.request = request; - var transport = this.transport = request.transport, - readyState = this.readyState = transport.readyState; - - if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) { - this.status = this.getStatus(); - this.statusText = this.getStatusText(); - this.responseText = String.interpret(transport.responseText); - this.headerJSON = this._getHeaderJSON(); - } - - if(readyState == 4) { - var xml = transport.responseXML; - this.responseXML = xml === undefined ? null : xml; - this.responseJSON = this._getResponseJSON(); - } - }, - - status: 0, - statusText: '', - - getStatus: Ajax.Request.prototype.getStatus, - - getStatusText: function() { - try { - return this.transport.statusText || ''; - } catch (e) { return '' } - }, - - getHeader: Ajax.Request.prototype.getHeader, - - getAllHeaders: function() { - try { - return this.getAllResponseHeaders(); - } catch (e) { return null } - }, - - getResponseHeader: function(name) { - return this.transport.getResponseHeader(name); - }, - - getAllResponseHeaders: function() { - return this.transport.getAllResponseHeaders(); - }, - - _getHeaderJSON: function() { - var json = this.getHeader('X-JSON'); - if (!json) return null; - json = decodeURIComponent(escape(json)); - try { - return json.evalJSON(this.request.options.sanitizeJSON); - } catch (e) { - this.request.dispatchException(e); - } - }, - - _getResponseJSON: function() { - var options = this.request.options; - if (!options.evalJSON || (options.evalJSON != 'force' && - !(this.getHeader('Content-type') || '').include('application/json'))) - return null; - try { - return this.transport.responseText.evalJSON(options.sanitizeJSON); - } catch (e) { - this.request.dispatchException(e); - } - } -}); - -Ajax.Updater = Class.create(Ajax.Request, { - initialize: function($super, container, url, options) { - this.container = { - success: (container.success || container), - failure: (container.failure || (container.success ? null : container)) - }; - - options = options || { }; - var onComplete = options.onComplete; - options.onComplete = (function(response, param) { - this.updateContent(response.responseText); - if (Object.isFunction(onComplete)) onComplete(response, param); - }).bind(this); - - $super(url, options); - }, - - updateContent: function(responseText) { - var receiver = this.container[this.success() ? 'success' : 'failure'], - options = this.options; - - if (!options.evalScripts) responseText = responseText.stripScripts(); - - if (receiver = $(receiver)) { - if (options.insertion) { - if (Object.isString(options.insertion)) { - var insertion = { }; insertion[options.insertion] = responseText; - receiver.insert(insertion); - } - else options.insertion(receiver, responseText); - } - else receiver.update(responseText); - } - - if (this.success()) { - if (this.onComplete) this.onComplete.bind(this).defer(); - } - } -}); - -Ajax.PeriodicalUpdater = Class.create(Ajax.Base, { - initialize: function($super, container, url, options) { - $super(options); - this.onComplete = this.options.onComplete; - - this.frequency = (this.options.frequency || 2); - this.decay = (this.options.decay || 1); - - this.updater = { }; - this.container = container; - this.url = url; - - this.start(); - }, - - start: function() { - this.options.onComplete = this.updateComplete.bind(this); - this.onTimerEvent(); - }, - - stop: function() { - this.updater.options.onComplete = undefined; - clearTimeout(this.timer); - (this.onComplete || Prototype.emptyFunction).apply(this, arguments); - }, - - updateComplete: function(response) { - if (this.options.decay) { - this.decay = (response.responseText == this.lastText ? - this.decay * this.options.decay : 1); - - this.lastText = response.responseText; - } - this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency); - }, - - onTimerEvent: function() { - this.updater = new Ajax.Updater(this.container, this.url, this.options); - } -}); -function $(element) { - if (arguments.length > 1) { - for (var i = 0, elements = [], length = arguments.length; i < length; i++) - elements.push($(arguments[i])); - return elements; - } - if (Object.isString(element)) - element = document.getElementById(element); - return Element.extend(element); -} - -if (Prototype.BrowserFeatures.XPath) { - document._getElementsByXPath = function(expression, parentElement) { - var results = []; - var query = document.evaluate(expression, $(parentElement) || document, - null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); - for (var i = 0, length = query.snapshotLength; i < length; i++) - results.push(Element.extend(query.snapshotItem(i))); - return results; - }; -} - -/*--------------------------------------------------------------------------*/ - -if (!window.Node) var Node = { }; - -if (!Node.ELEMENT_NODE) { - // DOM level 2 ECMAScript Language Binding - Object.extend(Node, { - ELEMENT_NODE: 1, - ATTRIBUTE_NODE: 2, - TEXT_NODE: 3, - CDATA_SECTION_NODE: 4, - ENTITY_REFERENCE_NODE: 5, - ENTITY_NODE: 6, - PROCESSING_INSTRUCTION_NODE: 7, - COMMENT_NODE: 8, - DOCUMENT_NODE: 9, - DOCUMENT_TYPE_NODE: 10, - DOCUMENT_FRAGMENT_NODE: 11, - NOTATION_NODE: 12 - }); -} - -(function() { - var element = this.Element; - this.Element = function(tagName, attributes) { - attributes = attributes || { }; - tagName = tagName.toLowerCase(); - var cache = Element.cache; - if (Prototype.Browser.IE && attributes.name) { - tagName = '<' + tagName + ' name="' + attributes.name + '">'; - delete attributes.name; - return Element.writeAttribute(document.createElement(tagName), attributes); - } - if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName)); - return Element.writeAttribute(cache[tagName].cloneNode(false), attributes); - }; - Object.extend(this.Element, element || { }); -}).call(window); - -Element.cache = { }; - -Element.Methods = { - visible: function(element) { - return $(element).style.display != 'none'; - }, - - toggle: function(element) { - element = $(element); - Element[Element.visible(element) ? 'hide' : 'show'](element); - return element; - }, - - hide: function(element) { - $(element).style.display = 'none'; - return element; - }, - - show: function(element) { - $(element).style.display = ''; - return element; - }, - - remove: function(element) { - element = $(element); - element.parentNode.removeChild(element); - return element; - }, - - update: function(element, content) { - element = $(element); - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) return element.update().insert(content); - content = Object.toHTML(content); - element.innerHTML = content.stripScripts(); - content.evalScripts.bind(content).defer(); - return element; - }, - - replace: function(element, content) { - element = $(element); - if (content && content.toElement) content = content.toElement(); - else if (!Object.isElement(content)) { - content = Object.toHTML(content); - var range = element.ownerDocument.createRange(); - range.selectNode(element); - content.evalScripts.bind(content).defer(); - content = range.createContextualFragment(content.stripScripts()); - } - element.parentNode.replaceChild(content, element); - return element; - }, - - insert: function(element, insertions) { - element = $(element); - - if (Object.isString(insertions) || Object.isNumber(insertions) || - Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) - insertions = {bottom:insertions}; - - var content, t, range; - - for (position in insertions) { - content = insertions[position]; - position = position.toLowerCase(); - t = Element._insertionTranslations[position]; - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - t.insert(element, content); - continue; - } - - content = Object.toHTML(content); - - range = element.ownerDocument.createRange(); - t.initializeRange(element, range); - t.insert(element, range.createContextualFragment(content.stripScripts())); - - content.evalScripts.bind(content).defer(); - } - - return element; - }, - - wrap: function(element, wrapper, attributes) { - element = $(element); - if (Object.isElement(wrapper)) - $(wrapper).writeAttribute(attributes || { }); - else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes); - else wrapper = new Element('div', wrapper); - if (element.parentNode) - element.parentNode.replaceChild(wrapper, element); - wrapper.appendChild(element); - return wrapper; - }, - - inspect: function(element) { - element = $(element); - var result = '<' + element.tagName.toLowerCase(); - $H({'id': 'id', 'className': 'class'}).each(function(pair) { - var property = pair.first(), attribute = pair.last(); - var value = (element[property] || '').toString(); - if (value) result += ' ' + attribute + '=' + value.inspect(true); - }); - return result + '>'; - }, - - recursivelyCollect: function(element, property) { - element = $(element); - var elements = []; - while (element = element[property]) - if (element.nodeType == 1) - elements.push(Element.extend(element)); - return elements; - }, - - ancestors: function(element) { - return $(element).recursivelyCollect('parentNode'); - }, - - descendants: function(element) { - return $A($(element).getElementsByTagName('*')).each(Element.extend); - }, - - firstDescendant: function(element) { - element = $(element).firstChild; - while (element && element.nodeType != 1) element = element.nextSibling; - return $(element); - }, - - immediateDescendants: function(element) { - if (!(element = $(element).firstChild)) return []; - while (element && element.nodeType != 1) element = element.nextSibling; - if (element) return [element].concat($(element).nextSiblings()); - return []; - }, - - previousSiblings: function(element) { - return $(element).recursivelyCollect('previousSibling'); - }, - - nextSiblings: function(element) { - return $(element).recursivelyCollect('nextSibling'); - }, - - siblings: function(element) { - element = $(element); - return element.previousSiblings().reverse().concat(element.nextSiblings()); - }, - - match: function(element, selector) { - if (Object.isString(selector)) - selector = new Selector(selector); - return selector.match($(element)); - }, - - up: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(element.parentNode); - var ancestors = element.ancestors(); - return expression ? Selector.findElement(ancestors, expression, index) : - ancestors[index || 0]; - }, - - down: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return element.firstDescendant(); - var descendants = element.descendants(); - return expression ? Selector.findElement(descendants, expression, index) : - descendants[index || 0]; - }, - - previous: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element)); - var previousSiblings = element.previousSiblings(); - return expression ? Selector.findElement(previousSiblings, expression, index) : - previousSiblings[index || 0]; - }, - - next: function(element, expression, index) { - element = $(element); - if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element)); - var nextSiblings = element.nextSiblings(); - return expression ? Selector.findElement(nextSiblings, expression, index) : - nextSiblings[index || 0]; - }, - - select: function() { - var args = $A(arguments), element = $(args.shift()); - return Selector.findChildElements(element, args); - }, - - adjacent: function() { - var args = $A(arguments), element = $(args.shift()); - return Selector.findChildElements(element.parentNode, args).without(element); - }, - - identify: function(element) { - element = $(element); - var id = element.readAttribute('id'), self = arguments.callee; - if (id) return id; - do { id = 'anonymous_element_' + self.counter++ } while ($(id)); - element.writeAttribute('id', id); - return id; - }, - - readAttribute: function(element, name) { - element = $(element); - if (Prototype.Browser.IE) { - var t = Element._attributeTranslations.read; - if (t.values[name]) return t.values[name](element, name); - if (t.names[name]) name = t.names[name]; - if (name.include(':')) { - return (!element.attributes || !element.attributes[name]) ? null : - element.attributes[name].value; - } - } - return element.getAttribute(name); - }, - - writeAttribute: function(element, name, value) { - element = $(element); - var attributes = { }, t = Element._attributeTranslations.write; - - if (typeof name == 'object') attributes = name; - else attributes[name] = value === undefined ? true : value; - - for (var attr in attributes) { - var name = t.names[attr] || attr, value = attributes[attr]; - if (t.values[attr]) name = t.values[attr](element, value); - if (value === false || value === null) - element.removeAttribute(name); - else if (value === true) - element.setAttribute(name, name); - else element.setAttribute(name, value); - } - return element; - }, - - getHeight: function(element) { - return $(element).getDimensions().height; - }, - - getWidth: function(element) { - return $(element).getDimensions().width; - }, - - classNames: function(element) { - return new Element.ClassNames(element); - }, - - hasClassName: function(element, className) { - if (!(element = $(element))) return; - var elementClassName = element.className; - return (elementClassName.length > 0 && (elementClassName == className || - new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName))); - }, - - addClassName: function(element, className) { - if (!(element = $(element))) return; - if (!element.hasClassName(className)) - element.className += (element.className ? ' ' : '') + className; - return element; - }, - - removeClassName: function(element, className) { - if (!(element = $(element))) return; - element.className = element.className.replace( - new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip(); - return element; - }, - - toggleClassName: function(element, className) { - if (!(element = $(element))) return; - return element[element.hasClassName(className) ? - 'removeClassName' : 'addClassName'](className); - }, - - // removes whitespace-only text node children - cleanWhitespace: function(element) { - element = $(element); - var node = element.firstChild; - while (node) { - var nextNode = node.nextSibling; - if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) - element.removeChild(node); - node = nextNode; - } - return element; - }, - - empty: function(element) { - return $(element).innerHTML.blank(); - }, - - descendantOf: function(element, ancestor) { - element = $(element), ancestor = $(ancestor); - - if (element.compareDocumentPosition) - return (element.compareDocumentPosition(ancestor) & 8) === 8; - - if (element.sourceIndex && !Prototype.Browser.Opera) { - var e = element.sourceIndex, a = ancestor.sourceIndex, - nextAncestor = ancestor.nextSibling; - if (!nextAncestor) { - do { ancestor = ancestor.parentNode; } - while (!(nextAncestor = ancestor.nextSibling) && ancestor.parentNode); - } - if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex); - } - - while (element = element.parentNode) - if (element == ancestor) return true; - return false; - }, - - scrollTo: function(element) { - element = $(element); - var pos = element.cumulativeOffset(); - window.scrollTo(pos[0], pos[1]); - return element; - }, - - getStyle: function(element, style) { - element = $(element); - style = style == 'float' ? 'cssFloat' : style.camelize(); - var value = element.style[style]; - if (!value) { - var css = document.defaultView.getComputedStyle(element, null); - value = css ? css[style] : null; - } - if (style == 'opacity') return value ? parseFloat(value) : 1.0; - return value == 'auto' ? null : value; - }, - - getOpacity: function(element) { - return $(element).getStyle('opacity'); - }, - - setStyle: function(element, styles) { - element = $(element); - var elementStyle = element.style, match; - if (Object.isString(styles)) { - element.style.cssText += ';' + styles; - return styles.include('opacity') ? - element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element; - } - for (var property in styles) - if (property == 'opacity') element.setOpacity(styles[property]); - else - elementStyle[(property == 'float' || property == 'cssFloat') ? - (elementStyle.styleFloat === undefined ? 'cssFloat' : 'styleFloat') : - property] = styles[property]; - - return element; - }, - - setOpacity: function(element, value) { - element = $(element); - element.style.opacity = (value == 1 || value === '') ? '' : - (value < 0.00001) ? 0 : value; - return element; - }, - - getDimensions: function(element) { - element = $(element); - var display = $(element).getStyle('display'); - if (display != 'none' && display != null) // Safari bug - return {width: element.offsetWidth, height: element.offsetHeight}; - - // All *Width and *Height properties give 0 on elements with display none, - // so enable the element temporarily - var els = element.style; - var originalVisibility = els.visibility; - var originalPosition = els.position; - var originalDisplay = els.display; - els.visibility = 'hidden'; - els.position = 'absolute'; - els.display = 'block'; - var originalWidth = element.clientWidth; - var originalHeight = element.clientHeight; - els.display = originalDisplay; - els.position = originalPosition; - els.visibility = originalVisibility; - return {width: originalWidth, height: originalHeight}; - }, - - makePositioned: function(element) { - element = $(element); - var pos = Element.getStyle(element, 'position'); - if (pos == 'static' || !pos) { - element._madePositioned = true; - element.style.position = 'relative'; - // Opera returns the offset relative to the positioning context, when an - // element is position relative but top and left have not been defined - if (window.opera) { - element.style.top = 0; - element.style.left = 0; - } - } - return element; - }, - - undoPositioned: function(element) { - element = $(element); - if (element._madePositioned) { - element._madePositioned = undefined; - element.style.position = - element.style.top = - element.style.left = - element.style.bottom = - element.style.right = ''; - } - return element; - }, - - makeClipping: function(element) { - element = $(element); - if (element._overflow) return element; - element._overflow = Element.getStyle(element, 'overflow') || 'auto'; - if (element._overflow !== 'hidden') - element.style.overflow = 'hidden'; - return element; - }, - - undoClipping: function(element) { - element = $(element); - if (!element._overflow) return element; - element.style.overflow = element._overflow == 'auto' ? '' : element._overflow; - element._overflow = null; - return element; - }, - - cumulativeOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - positionedOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - if (element) { - if (element.tagName == 'BODY') break; - var p = Element.getStyle(element, 'position'); - if (p == 'relative' || p == 'absolute') break; - } - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - absolutize: function(element) { - element = $(element); - if (element.getStyle('position') == 'absolute') return; - // Position.prepare(); // To be done manually by Scripty when it needs it. - - var offsets = element.positionedOffset(); - var top = offsets[1]; - var left = offsets[0]; - var width = element.clientWidth; - var height = element.clientHeight; - - element._originalLeft = left - parseFloat(element.style.left || 0); - element._originalTop = top - parseFloat(element.style.top || 0); - element._originalWidth = element.style.width; - element._originalHeight = element.style.height; - - element.style.position = 'absolute'; - element.style.top = top + 'px'; - element.style.left = left + 'px'; - element.style.width = width + 'px'; - element.style.height = height + 'px'; - return element; - }, - - relativize: function(element) { - element = $(element); - if (element.getStyle('position') == 'relative') return; - // Position.prepare(); // To be done manually by Scripty when it needs it. - - element.style.position = 'relative'; - var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); - var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); - - element.style.top = top + 'px'; - element.style.left = left + 'px'; - element.style.height = element._originalHeight; - element.style.width = element._originalWidth; - return element; - }, - - cumulativeScrollOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.scrollTop || 0; - valueL += element.scrollLeft || 0; - element = element.parentNode; - } while (element); - return Element._returnOffset(valueL, valueT); - }, - - getOffsetParent: function(element) { - if (element.offsetParent) return $(element.offsetParent); - if (element == document.body) return $(element); - - while ((element = element.parentNode) && element != document.body) - if (Element.getStyle(element, 'position') != 'static') - return $(element); - - return $(document.body); - }, - - viewportOffset: function(forElement) { - var valueT = 0, valueL = 0; - - var element = forElement; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - - // Safari fix - if (element.offsetParent == document.body && - Element.getStyle(element, 'position') == 'absolute') break; - - } while (element = element.offsetParent); - - element = forElement; - do { - if (!Prototype.Browser.Opera || element.tagName == 'BODY') { - valueT -= element.scrollTop || 0; - valueL -= element.scrollLeft || 0; - } - } while (element = element.parentNode); - - return Element._returnOffset(valueL, valueT); - }, - - clonePosition: function(element, source) { - var options = Object.extend({ - setLeft: true, - setTop: true, - setWidth: true, - setHeight: true, - offsetTop: 0, - offsetLeft: 0 - }, arguments[2] || { }); - - // find page position of source - source = $(source); - var p = source.viewportOffset(); - - // find coordinate system to use - element = $(element); - var delta = [0, 0]; - var parent = null; - // delta [0,0] will do fine with position: fixed elements, - // position:absolute needs offsetParent deltas - if (Element.getStyle(element, 'position') == 'absolute') { - parent = element.getOffsetParent(); - delta = parent.viewportOffset(); - } - - // correct by body offsets (fixes Safari) - if (parent == document.body) { - delta[0] -= document.body.offsetLeft; - delta[1] -= document.body.offsetTop; - } - - // set position - if (options.setLeft) element.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; - if (options.setTop) element.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; - if (options.setWidth) element.style.width = source.offsetWidth + 'px'; - if (options.setHeight) element.style.height = source.offsetHeight + 'px'; - return element; - } -}; - -Element.Methods.identify.counter = 1; - -Object.extend(Element.Methods, { - getElementsBySelector: Element.Methods.select, - childElements: Element.Methods.immediateDescendants -}); - -Element._attributeTranslations = { - write: { - names: { - className: 'class', - htmlFor: 'for' - }, - values: { } - } -}; - - -if (!document.createRange || Prototype.Browser.Opera) { - Element.Methods.insert = function(element, insertions) { - element = $(element); - - if (Object.isString(insertions) || Object.isNumber(insertions) || - Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML))) - insertions = { bottom: insertions }; - - var t = Element._insertionTranslations, content, position, pos, tagName; - - for (position in insertions) { - content = insertions[position]; - position = position.toLowerCase(); - pos = t[position]; - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - pos.insert(element, content); - continue; - } - - content = Object.toHTML(content); - tagName = ((position == 'before' || position == 'after') - ? element.parentNode : element).tagName.toUpperCase(); - - if (t.tags[tagName]) { - var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); - if (position == 'top' || position == 'after') fragments.reverse(); - fragments.each(pos.insert.curry(element)); - } - else element.insertAdjacentHTML(pos.adjacency, content.stripScripts()); - - content.evalScripts.bind(content).defer(); - } - - return element; - }; -} - -if (Prototype.Browser.Opera) { - Element.Methods._getStyle = Element.Methods.getStyle; - Element.Methods.getStyle = function(element, style) { - switch(style) { - case 'left': - case 'top': - case 'right': - case 'bottom': - if (Element._getStyle(element, 'position') == 'static') return null; - default: return Element._getStyle(element, style); - } - }; - Element.Methods._readAttribute = Element.Methods.readAttribute; - Element.Methods.readAttribute = function(element, attribute) { - if (attribute == 'title') return element.title; - return Element._readAttribute(element, attribute); - }; -} - -else if (Prototype.Browser.IE) { - $w('positionedOffset getOffsetParent viewportOffset').each(function(method) { - Element.Methods[method] = Element.Methods[method].wrap( - function(proceed, element) { - element = $(element); - var position = element.getStyle('position'); - if (position != 'static') return proceed(element); - element.setStyle({ position: 'relative' }); - var value = proceed(element); - element.setStyle({ position: position }); - return value; - } - ); - }); - - Element.Methods.getStyle = function(element, style) { - element = $(element); - style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize(); - var value = element.style[style]; - if (!value && element.currentStyle) value = element.currentStyle[style]; - - if (style == 'opacity') { - if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/)) - if (value[1]) return parseFloat(value[1]) / 100; - return 1.0; - } - - if (value == 'auto') { - if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none')) - return element['offset' + style.capitalize()] + 'px'; - return null; - } - return value; - }; - - Element.Methods.setOpacity = function(element, value) { - function stripAlpha(filter){ - return filter.replace(/alpha\([^\)]*\)/gi,''); - } - element = $(element); - var currentStyle = element.currentStyle; - if ((currentStyle && !currentStyle.hasLayout) || - (!currentStyle && element.style.zoom == 'normal')) - element.style.zoom = 1; - - var filter = element.getStyle('filter'), style = element.style; - if (value == 1 || value === '') { - (filter = stripAlpha(filter)) ? - style.filter = filter : style.removeAttribute('filter'); - return element; - } else if (value < 0.00001) value = 0; - style.filter = stripAlpha(filter) + - 'alpha(opacity=' + (value * 100) + ')'; - return element; - }; - - Element._attributeTranslations = { - read: { - names: { - 'class': 'className', - 'for': 'htmlFor' - }, - values: { - _getAttr: function(element, attribute) { - return element.getAttribute(attribute, 2); - }, - _getAttrNode: function(element, attribute) { - var node = element.getAttributeNode(attribute); - return node ? node.value : ""; - }, - _getEv: function(element, attribute) { - var attribute = element.getAttribute(attribute); - return attribute ? attribute.toString().slice(23, -2) : null; - }, - _flag: function(element, attribute) { - return $(element).hasAttribute(attribute) ? attribute : null; - }, - style: function(element) { - return element.style.cssText.toLowerCase(); - }, - title: function(element) { - return element.title; - } - } - } - }; - - Element._attributeTranslations.write = { - names: Object.clone(Element._attributeTranslations.read.names), - values: { - checked: function(element, value) { - element.checked = !!value; - }, - - style: function(element, value) { - element.style.cssText = value ? value : ''; - } - } - }; - - Element._attributeTranslations.has = {}; - - $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' + - 'encType maxLength readOnly longDesc').each(function(attr) { - Element._attributeTranslations.write.names[attr.toLowerCase()] = attr; - Element._attributeTranslations.has[attr.toLowerCase()] = attr; - }); - - (function(v) { - Object.extend(v, { - href: v._getAttr, - src: v._getAttr, - type: v._getAttr, - action: v._getAttrNode, - disabled: v._flag, - checked: v._flag, - readonly: v._flag, - multiple: v._flag, - onload: v._getEv, - onunload: v._getEv, - onclick: v._getEv, - ondblclick: v._getEv, - onmousedown: v._getEv, - onmouseup: v._getEv, - onmouseover: v._getEv, - onmousemove: v._getEv, - onmouseout: v._getEv, - onfocus: v._getEv, - onblur: v._getEv, - onkeypress: v._getEv, - onkeydown: v._getEv, - onkeyup: v._getEv, - onsubmit: v._getEv, - onreset: v._getEv, - onselect: v._getEv, - onchange: v._getEv - }); - })(Element._attributeTranslations.read.values); -} - -else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) { - Element.Methods.setOpacity = function(element, value) { - element = $(element); - element.style.opacity = (value == 1) ? 0.999999 : - (value === '') ? '' : (value < 0.00001) ? 0 : value; - return element; - }; -} - -else if (Prototype.Browser.WebKit) { - Element.Methods.setOpacity = function(element, value) { - element = $(element); - element.style.opacity = (value == 1 || value === '') ? '' : - (value < 0.00001) ? 0 : value; - - if (value == 1) - if(element.tagName == 'IMG' && element.width) { - element.width++; element.width--; - } else try { - var n = document.createTextNode(' '); - element.appendChild(n); - element.removeChild(n); - } catch (e) { } - - return element; - }; - - // Safari returns margins on body which is incorrect if the child is absolutely - // positioned. For performance reasons, redefine Position.cumulativeOffset for - // KHTML/WebKit only. - Element.Methods.cumulativeOffset = function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - if (element.offsetParent == document.body) - if (Element.getStyle(element, 'position') == 'absolute') break; - - element = element.offsetParent; - } while (element); - - return Element._returnOffset(valueL, valueT); - }; -} - -if (Prototype.Browser.IE || Prototype.Browser.Opera) { - // IE and Opera are missing .innerHTML support for TABLE-related and SELECT elements - Element.Methods.update = function(element, content) { - element = $(element); - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) return element.update().insert(content); - - content = Object.toHTML(content); - var tagName = element.tagName.toUpperCase(); - - if (tagName in Element._insertionTranslations.tags) { - $A(element.childNodes).each(function(node) { element.removeChild(node) }); - Element._getContentFromAnonymousElement(tagName, content.stripScripts()) - .each(function(node) { element.appendChild(node) }); - } - else element.innerHTML = content.stripScripts(); - - content.evalScripts.bind(content).defer(); - return element; - }; -} - -if (document.createElement('div').outerHTML) { - Element.Methods.replace = function(element, content) { - element = $(element); - - if (content && content.toElement) content = content.toElement(); - if (Object.isElement(content)) { - element.parentNode.replaceChild(content, element); - return element; - } - - content = Object.toHTML(content); - var parent = element.parentNode, tagName = parent.tagName.toUpperCase(); - - if (Element._insertionTranslations.tags[tagName]) { - var nextSibling = element.next(); - var fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts()); - parent.removeChild(element); - if (nextSibling) - fragments.each(function(node) { parent.insertBefore(node, nextSibling) }); - else - fragments.each(function(node) { parent.appendChild(node) }); - } - else element.outerHTML = content.stripScripts(); - - content.evalScripts.bind(content).defer(); - return element; - }; -} - -Element._returnOffset = function(l, t) { - var result = [l, t]; - result.left = l; - result.top = t; - return result; -}; - -Element._getContentFromAnonymousElement = function(tagName, html) { - var div = new Element('div'), t = Element._insertionTranslations.tags[tagName]; - div.innerHTML = t[0] + html + t[1]; - t[2].times(function() { div = div.firstChild }); - return $A(div.childNodes); -}; - -Element._insertionTranslations = { - before: { - adjacency: 'beforeBegin', - insert: function(element, node) { - element.parentNode.insertBefore(node, element); - }, - initializeRange: function(element, range) { - range.setStartBefore(element); - } - }, - top: { - adjacency: 'afterBegin', - insert: function(element, node) { - element.insertBefore(node, element.firstChild); - }, - initializeRange: function(element, range) { - range.selectNodeContents(element); - range.collapse(true); - } - }, - bottom: { - adjacency: 'beforeEnd', - insert: function(element, node) { - element.appendChild(node); - } - }, - after: { - adjacency: 'afterEnd', - insert: function(element, node) { - element.parentNode.insertBefore(node, element.nextSibling); - }, - initializeRange: function(element, range) { - range.setStartAfter(element); - } - }, - tags: { - TABLE: ['', '
        ', 1], - TBODY: ['', '
        ', 2], - TR: ['', '
        ', 3], - TD: ['
        ', '
        ', 4], - SELECT: ['', 1] - } -}; - -(function() { - this.bottom.initializeRange = this.top.initializeRange; - Object.extend(this.tags, { - THEAD: this.tags.TBODY, - TFOOT: this.tags.TBODY, - TH: this.tags.TD - }); -}).call(Element._insertionTranslations); - -Element.Methods.Simulated = { - hasAttribute: function(element, attribute) { - attribute = Element._attributeTranslations.has[attribute] || attribute; - var node = $(element).getAttributeNode(attribute); - return node && node.specified; - } -}; - -Element.Methods.ByTag = { }; - -Object.extend(Element, Element.Methods); - -if (!Prototype.BrowserFeatures.ElementExtensions && - document.createElement('div').__proto__) { - window.HTMLElement = { }; - window.HTMLElement.prototype = document.createElement('div').__proto__; - Prototype.BrowserFeatures.ElementExtensions = true; -} - -Element.extend = (function() { - if (Prototype.BrowserFeatures.SpecificElementExtensions) - return Prototype.K; - - var Methods = { }, ByTag = Element.Methods.ByTag; - - var extend = Object.extend(function(element) { - if (!element || element._extendedByPrototype || - element.nodeType != 1 || element == window) return element; - - var methods = Object.clone(Methods), - tagName = element.tagName, property, value; - - // extend methods for specific tags - if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]); - - for (property in methods) { - value = methods[property]; - if (Object.isFunction(value) && !(property in element)) - element[property] = value.methodize(); - } - - element._extendedByPrototype = Prototype.emptyFunction; - return element; - - }, { - refresh: function() { - // extend methods for all tags (Safari doesn't need this) - if (!Prototype.BrowserFeatures.ElementExtensions) { - Object.extend(Methods, Element.Methods); - Object.extend(Methods, Element.Methods.Simulated); - } - } - }); - - extend.refresh(); - return extend; -})(); - -Element.hasAttribute = function(element, attribute) { - if (element.hasAttribute) return element.hasAttribute(attribute); - return Element.Methods.Simulated.hasAttribute(element, attribute); -}; - -Element.addMethods = function(methods) { - var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag; - - if (!methods) { - Object.extend(Form, Form.Methods); - Object.extend(Form.Element, Form.Element.Methods); - Object.extend(Element.Methods.ByTag, { - "FORM": Object.clone(Form.Methods), - "INPUT": Object.clone(Form.Element.Methods), - "SELECT": Object.clone(Form.Element.Methods), - "TEXTAREA": Object.clone(Form.Element.Methods) - }); - } - - if (arguments.length == 2) { - var tagName = methods; - methods = arguments[1]; - } - - if (!tagName) Object.extend(Element.Methods, methods || { }); - else { - if (Object.isArray(tagName)) tagName.each(extend); - else extend(tagName); - } - - function extend(tagName) { - tagName = tagName.toUpperCase(); - if (!Element.Methods.ByTag[tagName]) - Element.Methods.ByTag[tagName] = { }; - Object.extend(Element.Methods.ByTag[tagName], methods); - } - - function copy(methods, destination, onlyIfAbsent) { - onlyIfAbsent = onlyIfAbsent || false; - for (var property in methods) { - var value = methods[property]; - if (!Object.isFunction(value)) continue; - if (!onlyIfAbsent || !(property in destination)) - destination[property] = value.methodize(); - } - } - - function findDOMClass(tagName) { - var klass; - var trans = { - "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph", - "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList", - "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading", - "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote", - "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION": - "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD": - "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR": - "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET": - "FrameSet", "IFRAME": "IFrame" - }; - if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element'; - if (window[klass]) return window[klass]; - klass = 'HTML' + tagName + 'Element'; - if (window[klass]) return window[klass]; - klass = 'HTML' + tagName.capitalize() + 'Element'; - if (window[klass]) return window[klass]; - - window[klass] = { }; - window[klass].prototype = document.createElement(tagName).__proto__; - return window[klass]; - } - - if (F.ElementExtensions) { - copy(Element.Methods, HTMLElement.prototype); - copy(Element.Methods.Simulated, HTMLElement.prototype, true); - } - - if (F.SpecificElementExtensions) { - for (var tag in Element.Methods.ByTag) { - var klass = findDOMClass(tag); - if (Object.isUndefined(klass)) continue; - copy(T[tag], klass.prototype); - } - } - - Object.extend(Element, Element.Methods); - delete Element.ByTag; - - if (Element.extend.refresh) Element.extend.refresh(); - Element.cache = { }; -}; - -document.viewport = { - getDimensions: function() { - var dimensions = { }; - $w('width height').each(function(d) { - var D = d.capitalize(); - dimensions[d] = self['inner' + D] || - (document.documentElement['client' + D] || document.body['client' + D]); - }); - return dimensions; - }, - - getWidth: function() { - return this.getDimensions().width; - }, - - getHeight: function() { - return this.getDimensions().height; - }, - - getScrollOffsets: function() { - return Element._returnOffset( - window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft, - window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop); - } -}; -/* Portions of the Selector class are derived from Jack Slocum’s DomQuery, - * part of YUI-Ext version 0.40, distributed under the terms of an MIT-style - * license. Please see http://www.yui-ext.com/ for more information. */ - -var Selector = Class.create({ - initialize: function(expression) { - this.expression = expression.strip(); - this.compileMatcher(); - }, - - compileMatcher: function() { - // Selectors with namespaced attributes can't use the XPath version - if (Prototype.BrowserFeatures.XPath && !(/(\[[\w-]*?:|:checked)/).test(this.expression)) - return this.compileXPathMatcher(); - - var e = this.expression, ps = Selector.patterns, h = Selector.handlers, - c = Selector.criteria, le, p, m; - - if (Selector._cache[e]) { - this.matcher = Selector._cache[e]; - return; - } - - this.matcher = ["this.matcher = function(root) {", - "var r = root, h = Selector.handlers, c = false, n;"]; - - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - p = ps[i]; - if (m = e.match(p)) { - this.matcher.push(Object.isFunction(c[i]) ? c[i](m) : - new Template(c[i]).evaluate(m)); - e = e.replace(m[0], ''); - break; - } - } - } - - this.matcher.push("return h.unique(n);\n}"); - eval(this.matcher.join('\n')); - Selector._cache[this.expression] = this.matcher; - }, - - compileXPathMatcher: function() { - var e = this.expression, ps = Selector.patterns, - x = Selector.xpath, le, m; - - if (Selector._cache[e]) { - this.xpath = Selector._cache[e]; return; - } - - this.matcher = ['.//*']; - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - if (m = e.match(ps[i])) { - this.matcher.push(Object.isFunction(x[i]) ? x[i](m) : - new Template(x[i]).evaluate(m)); - e = e.replace(m[0], ''); - break; - } - } - } - - this.xpath = this.matcher.join(''); - Selector._cache[this.expression] = this.xpath; - }, - - findElements: function(root) { - root = root || document; - if (this.xpath) return document._getElementsByXPath(this.xpath, root); - return this.matcher(root); - }, - - match: function(element) { - this.tokens = []; - - var e = this.expression, ps = Selector.patterns, as = Selector.assertions; - var le, p, m; - - while (e && le !== e && (/\S/).test(e)) { - le = e; - for (var i in ps) { - p = ps[i]; - if (m = e.match(p)) { - // use the Selector.assertions methods unless the selector - // is too complex. - if (as[i]) { - this.tokens.push([i, Object.clone(m)]); - e = e.replace(m[0], ''); - } else { - // reluctantly do a document-wide search - // and look for a match in the array - return this.findElements(document).include(element); - } - } - } - } - - var match = true, name, matches; - for (var i = 0, token; token = this.tokens[i]; i++) { - name = token[0], matches = token[1]; - if (!Selector.assertions[name](element, matches)) { - match = false; break; - } - } - - return match; - }, - - toString: function() { - return this.expression; - }, - - inspect: function() { - return "#"; - } -}); - -Object.extend(Selector, { - _cache: { }, - - xpath: { - descendant: "//*", - child: "/*", - adjacent: "/following-sibling::*[1]", - laterSibling: '/following-sibling::*', - tagName: function(m) { - if (m[1] == '*') return ''; - return "[local-name()='" + m[1].toLowerCase() + - "' or local-name()='" + m[1].toUpperCase() + "']"; - }, - className: "[contains(concat(' ', @class, ' '), ' #{1} ')]", - id: "[@id='#{1}']", - attrPresence: "[@#{1}]", - attr: function(m) { - m[3] = m[5] || m[6]; - return new Template(Selector.xpath.operators[m[2]]).evaluate(m); - }, - pseudo: function(m) { - var h = Selector.xpath.pseudos[m[1]]; - if (!h) return ''; - if (Object.isFunction(h)) return h(m); - return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m); - }, - operators: { - '=': "[@#{1}='#{3}']", - '!=': "[@#{1}!='#{3}']", - '^=': "[starts-with(@#{1}, '#{3}')]", - '$=': "[substring(@#{1}, (string-length(@#{1}) - string-length('#{3}') + 1))='#{3}']", - '*=': "[contains(@#{1}, '#{3}')]", - '~=': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]", - '|=': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]" - }, - pseudos: { - 'first-child': '[not(preceding-sibling::*)]', - 'last-child': '[not(following-sibling::*)]', - 'only-child': '[not(preceding-sibling::* or following-sibling::*)]', - 'empty': "[count(*) = 0 and (count(text()) = 0 or translate(text(), ' \t\r\n', '') = '')]", - 'checked': "[@checked]", - 'disabled': "[@disabled]", - 'enabled': "[not(@disabled)]", - 'not': function(m) { - var e = m[6], p = Selector.patterns, - x = Selector.xpath, le, m, v; - - var exclusion = []; - while (e && le != e && (/\S/).test(e)) { - le = e; - for (var i in p) { - if (m = e.match(p[i])) { - v = Object.isFunction(x[i]) ? x[i](m) : new Template(x[i]).evaluate(m); - exclusion.push("(" + v.substring(1, v.length - 1) + ")"); - e = e.replace(m[0], ''); - break; - } - } - } - return "[not(" + exclusion.join(" and ") + ")]"; - }, - 'nth-child': function(m) { - return Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m); - }, - 'nth-last-child': function(m) { - return Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m); - }, - 'nth-of-type': function(m) { - return Selector.xpath.pseudos.nth("position() ", m); - }, - 'nth-last-of-type': function(m) { - return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", m); - }, - 'first-of-type': function(m) { - m[6] = "1"; return Selector.xpath.pseudos['nth-of-type'](m); - }, - 'last-of-type': function(m) { - m[6] = "1"; return Selector.xpath.pseudos['nth-last-of-type'](m); - }, - 'only-of-type': function(m) { - var p = Selector.xpath.pseudos; return p['first-of-type'](m) + p['last-of-type'](m); - }, - nth: function(fragment, m) { - var mm, formula = m[6], predicate; - if (formula == 'even') formula = '2n+0'; - if (formula == 'odd') formula = '2n+1'; - if (mm = formula.match(/^(\d+)$/)) // digit only - return '[' + fragment + "= " + mm[1] + ']'; - if (mm = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b - if (mm[1] == "-") mm[1] = -1; - var a = mm[1] ? Number(mm[1]) : 1; - var b = mm[2] ? Number(mm[2]) : 0; - predicate = "[((#{fragment} - #{b}) mod #{a} = 0) and " + - "((#{fragment} - #{b}) div #{a} >= 0)]"; - return new Template(predicate).evaluate({ - fragment: fragment, a: a, b: b }); - } - } - } - }, - - criteria: { - tagName: 'n = h.tagName(n, r, "#{1}", c); c = false;', - className: 'n = h.className(n, r, "#{1}", c); c = false;', - id: 'n = h.id(n, r, "#{1}", c); c = false;', - attrPresence: 'n = h.attrPresence(n, r, "#{1}"); c = false;', - attr: function(m) { - m[3] = (m[5] || m[6]); - return new Template('n = h.attr(n, r, "#{1}", "#{3}", "#{2}"); c = false;').evaluate(m); - }, - pseudo: function(m) { - if (m[6]) m[6] = m[6].replace(/"/g, '\\"'); - return new Template('n = h.pseudo(n, "#{1}", "#{6}", r, c); c = false;').evaluate(m); - }, - descendant: 'c = "descendant";', - child: 'c = "child";', - adjacent: 'c = "adjacent";', - laterSibling: 'c = "laterSibling";' - }, - - patterns: { - // combinators must be listed first - // (and descendant needs to be last combinator) - laterSibling: /^\s*~\s*/, - child: /^\s*>\s*/, - adjacent: /^\s*\+\s*/, - descendant: /^\s/, - - // selectors follow - tagName: /^\s*(\*|[\w\-]+)(\b|$)?/, - id: /^#([\w\-\*]+)(\b|$)/, - className: /^\.([\w\-\*]+)(\b|$)/, - pseudo: /^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis)abled|not)(\((.*?)\))?(\b|$|(?=\s)|(?=:))/, - attrPresence: /^\[([\w]+)\]/, - attr: /\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=)\s*((['"])([^\4]*?)\4|([^'"][^\]]*?)))?\]/ - }, - - // for Selector.match and Element#match - assertions: { - tagName: function(element, matches) { - return matches[1].toUpperCase() == element.tagName.toUpperCase(); - }, - - className: function(element, matches) { - return Element.hasClassName(element, matches[1]); - }, - - id: function(element, matches) { - return element.id === matches[1]; - }, - - attrPresence: function(element, matches) { - return Element.hasAttribute(element, matches[1]); - }, - - attr: function(element, matches) { - var nodeValue = Element.readAttribute(element, matches[1]); - return Selector.operators[matches[2]](nodeValue, matches[3]); - } - }, - - handlers: { - // UTILITY FUNCTIONS - // joins two collections - concat: function(a, b) { - for (var i = 0, node; node = b[i]; i++) - a.push(node); - return a; - }, - - // marks an array of nodes for counting - mark: function(nodes) { - for (var i = 0, node; node = nodes[i]; i++) - node._counted = true; - return nodes; - }, - - unmark: function(nodes) { - for (var i = 0, node; node = nodes[i]; i++) - node._counted = undefined; - return nodes; - }, - - // mark each child node with its position (for nth calls) - // "ofType" flag indicates whether we're indexing for nth-of-type - // rather than nth-child - index: function(parentNode, reverse, ofType) { - parentNode._counted = true; - if (reverse) { - for (var nodes = parentNode.childNodes, i = nodes.length - 1, j = 1; i >= 0; i--) { - var node = nodes[i]; - if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++; - } - } else { - for (var i = 0, j = 1, nodes = parentNode.childNodes; node = nodes[i]; i++) - if (node.nodeType == 1 && (!ofType || node._counted)) node.nodeIndex = j++; - } - }, - - // filters out duplicates and extends all nodes - unique: function(nodes) { - if (nodes.length == 0) return nodes; - var results = [], n; - for (var i = 0, l = nodes.length; i < l; i++) - if (!(n = nodes[i])._counted) { - n._counted = true; - results.push(Element.extend(n)); - } - return Selector.handlers.unmark(results); - }, - - // COMBINATOR FUNCTIONS - descendant: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - h.concat(results, node.getElementsByTagName('*')); - return results; - }, - - child: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) { - for (var j = 0, children = [], child; child = node.childNodes[j]; j++) - if (child.nodeType == 1 && child.tagName != '!') results.push(child); - } - return results; - }, - - adjacent: function(nodes) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - var next = this.nextElementSibling(node); - if (next) results.push(next); - } - return results; - }, - - laterSibling: function(nodes) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - h.concat(results, Element.nextSiblings(node)); - return results; - }, - - nextElementSibling: function(node) { - while (node = node.nextSibling) - if (node.nodeType == 1) return node; - return null; - }, - - previousElementSibling: function(node) { - while (node = node.previousSibling) - if (node.nodeType == 1) return node; - return null; - }, - - // TOKEN FUNCTIONS - tagName: function(nodes, root, tagName, combinator) { - tagName = tagName.toUpperCase(); - var results = [], h = Selector.handlers; - if (nodes) { - if (combinator) { - // fastlane for ordinary descendant combinators - if (combinator == "descendant") { - for (var i = 0, node; node = nodes[i]; i++) - h.concat(results, node.getElementsByTagName(tagName)); - return results; - } else nodes = this[combinator](nodes); - if (tagName == "*") return nodes; - } - for (var i = 0, node; node = nodes[i]; i++) - if (node.tagName.toUpperCase() == tagName) results.push(node); - return results; - } else return root.getElementsByTagName(tagName); - }, - - id: function(nodes, root, id, combinator) { - var targetNode = $(id), h = Selector.handlers; - if (!targetNode) return []; - if (!nodes && root == document) return [targetNode]; - if (nodes) { - if (combinator) { - if (combinator == 'child') { - for (var i = 0, node; node = nodes[i]; i++) - if (targetNode.parentNode == node) return [targetNode]; - } else if (combinator == 'descendant') { - for (var i = 0, node; node = nodes[i]; i++) - if (Element.descendantOf(targetNode, node)) return [targetNode]; - } else if (combinator == 'adjacent') { - for (var i = 0, node; node = nodes[i]; i++) - if (Selector.handlers.previousElementSibling(targetNode) == node) - return [targetNode]; - } else nodes = h[combinator](nodes); - } - for (var i = 0, node; node = nodes[i]; i++) - if (node == targetNode) return [targetNode]; - return []; - } - return (targetNode && Element.descendantOf(targetNode, root)) ? [targetNode] : []; - }, - - className: function(nodes, root, className, combinator) { - if (nodes && combinator) nodes = this[combinator](nodes); - return Selector.handlers.byClassName(nodes, root, className); - }, - - byClassName: function(nodes, root, className) { - if (!nodes) nodes = Selector.handlers.descendant([root]); - var needle = ' ' + className + ' '; - for (var i = 0, results = [], node, nodeClassName; node = nodes[i]; i++) { - nodeClassName = node.className; - if (nodeClassName.length == 0) continue; - if (nodeClassName == className || (' ' + nodeClassName + ' ').include(needle)) - results.push(node); - } - return results; - }, - - attrPresence: function(nodes, root, attr) { - if (!nodes) nodes = root.getElementsByTagName("*"); - var results = []; - for (var i = 0, node; node = nodes[i]; i++) - if (Element.hasAttribute(node, attr)) results.push(node); - return results; - }, - - attr: function(nodes, root, attr, value, operator) { - if (!nodes) nodes = root.getElementsByTagName("*"); - var handler = Selector.operators[operator], results = []; - for (var i = 0, node; node = nodes[i]; i++) { - var nodeValue = Element.readAttribute(node, attr); - if (nodeValue === null) continue; - if (handler(nodeValue, value)) results.push(node); - } - return results; - }, - - pseudo: function(nodes, name, value, root, combinator) { - if (nodes && combinator) nodes = this[combinator](nodes); - if (!nodes) nodes = root.getElementsByTagName("*"); - return Selector.pseudos[name](nodes, value, root); - } - }, - - pseudos: { - 'first-child': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - if (Selector.handlers.previousElementSibling(node)) continue; - results.push(node); - } - return results; - }, - 'last-child': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - if (Selector.handlers.nextElementSibling(node)) continue; - results.push(node); - } - return results; - }, - 'only-child': function(nodes, value, root) { - var h = Selector.handlers; - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!h.previousElementSibling(node) && !h.nextElementSibling(node)) - results.push(node); - return results; - }, - 'nth-child': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root); - }, - 'nth-last-child': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, true); - }, - 'nth-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, false, true); - }, - 'nth-last-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, formula, root, true, true); - }, - 'first-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, "1", root, false, true); - }, - 'last-of-type': function(nodes, formula, root) { - return Selector.pseudos.nth(nodes, "1", root, true, true); - }, - 'only-of-type': function(nodes, formula, root) { - var p = Selector.pseudos; - return p['last-of-type'](p['first-of-type'](nodes, formula, root), formula, root); - }, - - // handles the an+b logic - getIndices: function(a, b, total) { - if (a == 0) return b > 0 ? [b] : []; - return $R(1, total).inject([], function(memo, i) { - if (0 == (i - b) % a && (i - b) / a >= 0) memo.push(i); - return memo; - }); - }, - - // handles nth(-last)-child, nth(-last)-of-type, and (first|last)-of-type - nth: function(nodes, formula, root, reverse, ofType) { - if (nodes.length == 0) return []; - if (formula == 'even') formula = '2n+0'; - if (formula == 'odd') formula = '2n+1'; - var h = Selector.handlers, results = [], indexed = [], m; - h.mark(nodes); - for (var i = 0, node; node = nodes[i]; i++) { - if (!node.parentNode._counted) { - h.index(node.parentNode, reverse, ofType); - indexed.push(node.parentNode); - } - } - if (formula.match(/^\d+$/)) { // just a number - formula = Number(formula); - for (var i = 0, node; node = nodes[i]; i++) - if (node.nodeIndex == formula) results.push(node); - } else if (m = formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b - if (m[1] == "-") m[1] = -1; - var a = m[1] ? Number(m[1]) : 1; - var b = m[2] ? Number(m[2]) : 0; - var indices = Selector.pseudos.getIndices(a, b, nodes.length); - for (var i = 0, node, l = indices.length; node = nodes[i]; i++) { - for (var j = 0; j < l; j++) - if (node.nodeIndex == indices[j]) results.push(node); - } - } - h.unmark(nodes); - h.unmark(indexed); - return results; - }, - - 'empty': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) { - // IE treats comments as element nodes - if (node.tagName == '!' || (node.firstChild && !node.innerHTML.match(/^\s*$/))) continue; - results.push(node); - } - return results; - }, - - 'not': function(nodes, selector, root) { - var h = Selector.handlers, selectorType, m; - var exclusions = new Selector(selector).findElements(root); - h.mark(exclusions); - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!node._counted) results.push(node); - h.unmark(exclusions); - return results; - }, - - 'enabled': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (!node.disabled) results.push(node); - return results; - }, - - 'disabled': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (node.disabled) results.push(node); - return results; - }, - - 'checked': function(nodes, value, root) { - for (var i = 0, results = [], node; node = nodes[i]; i++) - if (node.checked) results.push(node); - return results; - } - }, - - operators: { - '=': function(nv, v) { return nv == v; }, - '!=': function(nv, v) { return nv != v; }, - '^=': function(nv, v) { return nv.startsWith(v); }, - '$=': function(nv, v) { return nv.endsWith(v); }, - '*=': function(nv, v) { return nv.include(v); }, - '~=': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + ' '); }, - '|=': function(nv, v) { return ('-' + nv.toUpperCase() + '-').include('-' + v.toUpperCase() + '-'); } - }, - - matchElements: function(elements, expression) { - var matches = new Selector(expression).findElements(), h = Selector.handlers; - h.mark(matches); - for (var i = 0, results = [], element; element = elements[i]; i++) - if (element._counted) results.push(element); - h.unmark(matches); - return results; - }, - - findElement: function(elements, expression, index) { - if (Object.isNumber(expression)) { - index = expression; expression = false; - } - return Selector.matchElements(elements, expression || '*')[index || 0]; - }, - - findChildElements: function(element, expressions) { - var exprs = expressions.join(','), expressions = []; - exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) { - expressions.push(m[1].strip()); - }); - var results = [], h = Selector.handlers; - for (var i = 0, l = expressions.length, selector; i < l; i++) { - selector = new Selector(expressions[i].strip()); - h.concat(results, selector.findElements(element)); - } - return (l > 1) ? h.unique(results) : results; - } -}); - -function $$() { - return Selector.findChildElements(document, $A(arguments)); -} -var Form = { - reset: function(form) { - $(form).reset(); - return form; - }, - - serializeElements: function(elements, options) { - if (typeof options != 'object') options = { hash: !!options }; - else if (options.hash === undefined) options.hash = true; - var key, value, submitted = false, submit = options.submit; - - var data = elements.inject({ }, function(result, element) { - if (!element.disabled && element.name) { - key = element.name; value = $(element).getValue(); - if (value != null && (element.type != 'submit' || (!submitted && - submit !== false && (!submit || key == submit) && (submitted = true)))) { - if (key in result) { - // a key is already present; construct an array of values - if (!Object.isArray(result[key])) result[key] = [result[key]]; - result[key].push(value); - } - else result[key] = value; - } - } - return result; - }); - - return options.hash ? data : Object.toQueryString(data); - } -}; - -Form.Methods = { - serialize: function(form, options) { - return Form.serializeElements(Form.getElements(form), options); - }, - - getElements: function(form) { - return $A($(form).getElementsByTagName('*')).inject([], - function(elements, child) { - if (Form.Element.Serializers[child.tagName.toLowerCase()]) - elements.push(Element.extend(child)); - return elements; - } - ); - }, - - getInputs: function(form, typeName, name) { - form = $(form); - var inputs = form.getElementsByTagName('input'); - - if (!typeName && !name) return $A(inputs).map(Element.extend); - - for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) { - var input = inputs[i]; - if ((typeName && input.type != typeName) || (name && input.name != name)) - continue; - matchingInputs.push(Element.extend(input)); - } - - return matchingInputs; - }, - - disable: function(form) { - form = $(form); - Form.getElements(form).invoke('disable'); - return form; - }, - - enable: function(form) { - form = $(form); - Form.getElements(form).invoke('enable'); - return form; - }, - - findFirstElement: function(form) { - var elements = $(form).getElements().findAll(function(element) { - return 'hidden' != element.type && !element.disabled; - }); - var firstByIndex = elements.findAll(function(element) { - return element.hasAttribute('tabIndex') && element.tabIndex >= 0; - }).sortBy(function(element) { return element.tabIndex }).first(); - - return firstByIndex ? firstByIndex : elements.find(function(element) { - return ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); - }); - }, - - focusFirstElement: function(form) { - form = $(form); - form.findFirstElement().activate(); - return form; - }, - - request: function(form, options) { - form = $(form), options = Object.clone(options || { }); - - var params = options.parameters, action = form.readAttribute('action') || ''; - if (action.blank()) action = window.location.href; - options.parameters = form.serialize(true); - - if (params) { - if (Object.isString(params)) params = params.toQueryParams(); - Object.extend(options.parameters, params); - } - - if (form.hasAttribute('method') && !options.method) - options.method = form.method; - - return new Ajax.Request(action, options); - } -}; - -/*--------------------------------------------------------------------------*/ - -Form.Element = { - focus: function(element) { - $(element).focus(); - return element; - }, - - select: function(element) { - $(element).select(); - return element; - } -}; - -Form.Element.Methods = { - serialize: function(element) { - element = $(element); - if (!element.disabled && element.name) { - var value = element.getValue(); - if (value != undefined) { - var pair = { }; - pair[element.name] = value; - return Object.toQueryString(pair); - } - } - return ''; - }, - - getValue: function(element) { - element = $(element); - var method = element.tagName.toLowerCase(); - return Form.Element.Serializers[method](element); - }, - - setValue: function(element, value) { - element = $(element); - var method = element.tagName.toLowerCase(); - Form.Element.Serializers[method](element, value); - return element; - }, - - clear: function(element) { - $(element).value = ''; - return element; - }, - - present: function(element) { - return $(element).value != ''; - }, - - activate: function(element) { - element = $(element); - try { - element.focus(); - if (element.select && (element.tagName.toLowerCase() != 'input' || - !['button', 'reset', 'submit'].include(element.type))) - element.select(); - } catch (e) { } - return element; - }, - - disable: function(element) { - element = $(element); - element.blur(); - element.disabled = true; - return element; - }, - - enable: function(element) { - element = $(element); - element.disabled = false; - return element; - } -}; - -/*--------------------------------------------------------------------------*/ - -var Field = Form.Element; -var $F = Form.Element.Methods.getValue; - -/*--------------------------------------------------------------------------*/ - -Form.Element.Serializers = { - input: function(element, value) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - return Form.Element.Serializers.inputSelector(element, value); - default: - return Form.Element.Serializers.textarea(element, value); - } - }, - - inputSelector: function(element, value) { - if (value === undefined) return element.checked ? element.value : null; - else element.checked = !!value; - }, - - textarea: function(element, value) { - if (value === undefined) return element.value; - else element.value = value; - }, - - select: function(element, index) { - if (index === undefined) - return this[element.type == 'select-one' ? - 'selectOne' : 'selectMany'](element); - else { - var opt, value, single = !Object.isArray(index); - for (var i = 0, length = element.length; i < length; i++) { - opt = element.options[i]; - value = this.optionValue(opt); - if (single) { - if (value == index) { - opt.selected = true; - return; - } - } - else opt.selected = index.include(value); - } - } - }, - - selectOne: function(element) { - var index = element.selectedIndex; - return index >= 0 ? this.optionValue(element.options[index]) : null; - }, - - selectMany: function(element) { - var values, length = element.length; - if (!length) return null; - - for (var i = 0, values = []; i < length; i++) { - var opt = element.options[i]; - if (opt.selected) values.push(this.optionValue(opt)); - } - return values; - }, - - optionValue: function(opt) { - // extend element because hasAttribute may not be native - return Element.extend(opt).hasAttribute('value') ? opt.value : opt.text; - } -}; - -/*--------------------------------------------------------------------------*/ - -Abstract.TimedObserver = Class.create(PeriodicalExecuter, { - initialize: function($super, element, frequency, callback) { - $super(callback, frequency); - this.element = $(element); - this.lastValue = this.getValue(); - }, - - execute: function() { - var value = this.getValue(); - if (Object.isString(this.lastValue) && Object.isString(value) ? - this.lastValue != value : String(this.lastValue) != String(value)) { - this.callback(this.element, value); - this.lastValue = value; - } - } -}); - -Form.Element.Observer = Class.create(Abstract.TimedObserver, { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.Observer = Class.create(Abstract.TimedObserver, { - getValue: function() { - return Form.serialize(this.element); - } -}); - -/*--------------------------------------------------------------------------*/ - -Abstract.EventObserver = Class.create({ - initialize: function(element, callback) { - this.element = $(element); - this.callback = callback; - - this.lastValue = this.getValue(); - if (this.element.tagName.toLowerCase() == 'form') - this.registerFormCallbacks(); - else - this.registerCallback(this.element); - }, - - onElementEvent: function() { - var value = this.getValue(); - if (this.lastValue != value) { - this.callback(this.element, value); - this.lastValue = value; - } - }, - - registerFormCallbacks: function() { - Form.getElements(this.element).each(this.registerCallback, this); - }, - - registerCallback: function(element) { - if (element.type) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - Event.observe(element, 'click', this.onElementEvent.bind(this)); - break; - default: - Event.observe(element, 'change', this.onElementEvent.bind(this)); - break; - } - } - } -}); - -Form.Element.EventObserver = Class.create(Abstract.EventObserver, { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.EventObserver = Class.create(Abstract.EventObserver, { - getValue: function() { - return Form.serialize(this.element); - } -}); -if (!window.Event) var Event = { }; - -Object.extend(Event, { - KEY_BACKSPACE: 8, - KEY_TAB: 9, - KEY_RETURN: 13, - KEY_ESC: 27, - KEY_LEFT: 37, - KEY_UP: 38, - KEY_RIGHT: 39, - KEY_DOWN: 40, - KEY_DELETE: 46, - KEY_HOME: 36, - KEY_END: 35, - KEY_PAGEUP: 33, - KEY_PAGEDOWN: 34, - KEY_INSERT: 45, - - cache: { }, - - relatedTarget: function(event) { - var element; - switch(event.type) { - case 'mouseover': element = event.fromElement; break; - case 'mouseout': element = event.toElement; break; - default: return null; - } - return Element.extend(element); - } -}); - -Event.Methods = (function() { - var isButton; - - if (Prototype.Browser.IE) { - var buttonMap = { 0: 1, 1: 4, 2: 2 }; - isButton = function(event, code) { - return event.button == buttonMap[code]; - }; - - } else if (Prototype.Browser.WebKit) { - isButton = function(event, code) { - switch (code) { - case 0: return event.which == 1 && !event.metaKey; - case 1: return event.which == 1 && event.metaKey; - default: return false; - } - }; - - } else { - isButton = function(event, code) { - return event.which ? (event.which === code + 1) : (event.button === code); - }; - } - - return { - isLeftClick: function(event) { return isButton(event, 0) }, - isMiddleClick: function(event) { return isButton(event, 1) }, - isRightClick: function(event) { return isButton(event, 2) }, - - element: function(event) { - var node = Event.extend(event).target; - return Element.extend(node.nodeType == Node.TEXT_NODE ? node.parentNode : node); - }, - - findElement: function(event, expression) { - var element = Event.element(event); - return element.match(expression) ? element : element.up(expression); - }, - - pointer: function(event) { - return { - x: event.pageX || (event.clientX + - (document.documentElement.scrollLeft || document.body.scrollLeft)), - y: event.pageY || (event.clientY + - (document.documentElement.scrollTop || document.body.scrollTop)) - }; - }, - - pointerX: function(event) { return Event.pointer(event).x }, - pointerY: function(event) { return Event.pointer(event).y }, - - stop: function(event) { - Event.extend(event); - event.preventDefault(); - event.stopPropagation(); - event.stopped = true; - } - }; -})(); - -Event.extend = (function() { - var methods = Object.keys(Event.Methods).inject({ }, function(m, name) { - m[name] = Event.Methods[name].methodize(); - return m; - }); - - if (Prototype.Browser.IE) { - Object.extend(methods, { - stopPropagation: function() { this.cancelBubble = true }, - preventDefault: function() { this.returnValue = false }, - inspect: function() { return "[object Event]" } - }); - - return function(event) { - if (!event) return false; - if (event._extendedByPrototype) return event; - - event._extendedByPrototype = Prototype.emptyFunction; - var pointer = Event.pointer(event); - Object.extend(event, { - target: event.srcElement, - relatedTarget: Event.relatedTarget(event), - pageX: pointer.x, - pageY: pointer.y - }); - return Object.extend(event, methods); - }; - - } else { - Event.prototype = Event.prototype || document.createEvent("HTMLEvents").__proto__; - Object.extend(Event.prototype, methods); - return Prototype.K; - } -})(); - -Object.extend(Event, (function() { - var cache = Event.cache; - - function getEventID(element) { - if (element._eventID) return element._eventID; - arguments.callee.id = arguments.callee.id || 1; - return element._eventID = ++arguments.callee.id; - } - - function getDOMEventName(eventName) { - if (eventName && eventName.include(':')) return "dataavailable"; - return eventName; - } - - function getCacheForID(id) { - return cache[id] = cache[id] || { }; - } - - function getWrappersForEventName(id, eventName) { - var c = getCacheForID(id); - return c[eventName] = c[eventName] || []; - } - - function createWrapper(element, eventName, handler) { - var id = getEventID(element); - var c = getWrappersForEventName(id, eventName); - if (c.pluck("handler").include(handler)) return false; - - var wrapper = function(event) { - if (!Event || !Event.extend || - (event.eventName && event.eventName != eventName)) - return false; - - Event.extend(event); - handler.call(element, event) - }; - - wrapper.handler = handler; - c.push(wrapper); - return wrapper; - } - - function findWrapper(id, eventName, handler) { - var c = getWrappersForEventName(id, eventName); - return c.find(function(wrapper) { return wrapper.handler == handler }); - } - - function destroyWrapper(id, eventName, handler) { - var c = getCacheForID(id); - if (!c[eventName]) return false; - c[eventName] = c[eventName].without(findWrapper(id, eventName, handler)); - } - - function destroyCache() { - for (var id in cache) - for (var eventName in cache[id]) - cache[id][eventName] = null; - } - - if (window.attachEvent) { - window.attachEvent("onunload", destroyCache); - } - - return { - observe: function(element, eventName, handler) { - element = $(element); - var name = getDOMEventName(eventName); - - var wrapper = createWrapper(element, eventName, handler); - if (!wrapper) return element; - - if (element.addEventListener) { - element.addEventListener(name, wrapper, false); - } else { - element.attachEvent("on" + name, wrapper); - } - - return element; - }, - - stopObserving: function(element, eventName, handler) { - element = $(element); - var id = getEventID(element), name = getDOMEventName(eventName); - - if (!handler && eventName) { - getWrappersForEventName(id, eventName).each(function(wrapper) { - element.stopObserving(eventName, wrapper.handler); - }); - return element; - - } else if (!eventName) { - Object.keys(getCacheForID(id)).each(function(eventName) { - element.stopObserving(eventName); - }); - return element; - } - - var wrapper = findWrapper(id, eventName, handler); - if (!wrapper) return element; - - if (element.removeEventListener) { - element.removeEventListener(name, wrapper, false); - } else { - element.detachEvent("on" + name, wrapper); - } - - destroyWrapper(id, eventName, handler); - - return element; - }, - - fire: function(element, eventName, memo) { - element = $(element); - if (element == document && document.createEvent && !element.dispatchEvent) - element = document.documentElement; - - if (document.createEvent) { - var event = document.createEvent("HTMLEvents"); - event.initEvent("dataavailable", true, true); - } else { - var event = document.createEventObject(); - event.eventType = "ondataavailable"; - } - - event.eventName = eventName; - event.memo = memo || { }; - - if (document.createEvent) { - element.dispatchEvent(event); - } else { - element.fireEvent(event.eventType, event); - } - - return event; - } - }; -})()); - -Object.extend(Event, Event.Methods); - -Element.addMethods({ - fire: Event.fire, - observe: Event.observe, - stopObserving: Event.stopObserving -}); - -Object.extend(document, { - fire: Element.Methods.fire.methodize(), - observe: Element.Methods.observe.methodize(), - stopObserving: Element.Methods.stopObserving.methodize() -}); - -(function() { - /* Support for the DOMContentLoaded event is based on work by Dan Webb, - Matthias Miller, Dean Edwards and John Resig. */ - - var timer, fired = false; - - function fireContentLoadedEvent() { - if (fired) return; - if (timer) window.clearInterval(timer); - document.fire("dom:loaded"); - fired = true; - } - - if (document.addEventListener) { - if (Prototype.Browser.WebKit) { - timer = window.setInterval(function() { - if (/loaded|complete/.test(document.readyState)) - fireContentLoadedEvent(); - }, 0); - - Event.observe(window, "load", fireContentLoadedEvent); - - } else { - document.addEventListener("DOMContentLoaded", - fireContentLoadedEvent, false); - } - - } else { - document.write(" - - - -
        -

        <%=h exception.class %> at <%=h path %>

        -

        <%=h exception.message %>

        - - - - - - -
        Ruby<%=h frames.first.filename %>: in <%=h frames.first.function %>, line <%=h frames.first.lineno %>
        Web<%=h req.request_method %> <%=h(req.host + path)%>
        - -

        Jump to:

        - -
        - -
        -

        Traceback (innermost first)

        -
          -<% frames.each { |frame| %> -
        • - <%=h frame.filename %>: in <%=h frame.function %> - - <% if frame.context_line %> -
          - <% if frame.pre_context %> -
            - <% frame.pre_context.each { |line| %> -
          1. <%=h line %>
          2. - <% } %> -
          - <% end %> - -
            -
          1. <%=h frame.context_line %>...
          - - <% if frame.post_context %> -
            - <% frame.post_context.each { |line| %> -
          1. <%=h line %>
          2. - <% } %> -
          - <% end %> -
          - <% end %> -
        • -<% } %> -
        -
        - -
        -

        Request information

        - -

        GET

        - <% unless req.GET.empty? %> - - - - - - - - - <% req.GET.sort_by { |k, v| k.to_s }.each { |key, val| %> - - - - - <% } %> - -
        VariableValue
        <%=h key %>
        <%=h val.inspect %>
        - <% else %> -

        No GET data.

        - <% end %> - -

        POST

        - <% unless req.POST.empty? %> - - - - - - - - - <% req.POST.sort_by { |k, v| k.to_s }.each { |key, val| %> - - - - - <% } %> - -
        VariableValue
        <%=h key %>
        <%=h val.inspect %>
        - <% else %> -

        No POST data.

        - <% end %> - - - - <% unless req.cookies.empty? %> - - - - - - - - - <% req.cookies.each { |key, val| %> - - - - - <% } %> - -
        VariableValue
        <%=h key %>
        <%=h val.inspect %>
        - <% else %> -

        No cookie data.

        - <% end %> - -

        Rack ENV

        - - - - - - - - - <% env.sort_by { |k, v| k.to_s }.each { |key, val| %> - - - - - <% } %> - -
        VariableValue
        <%=h key %>
        <%=h val %>
        - -
        - -
        -

        - You're seeing this error because you use Rack::ShowExceptions. -

        -
        - - - -HTML - - # :startdoc: - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/showstatus.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/showstatus.rb deleted file mode 100644 index 28258c7c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/showstatus.rb +++ /dev/null @@ -1,106 +0,0 @@ -require 'erb' -require 'rack/request' -require 'rack/utils' - -module Rack - # Rack::ShowStatus catches all empty responses the app it wraps and - # replaces them with a site explaining the error. - # - # Additional details can be put into rack.showstatus.detail - # and will be shown as HTML. If such details exist, the error page - # is always rendered, even if the reply was not empty. - - class ShowStatus - def initialize(app) - @app = app - @template = ERB.new(TEMPLATE) - end - - def call(env) - status, headers, body = @app.call(env) - headers = Utils::HeaderHash.new(headers) - empty = headers['Content-Length'].to_i <= 0 - - # client or server error, or explicit message - if (status.to_i >= 400 && empty) || env["rack.showstatus.detail"] - req = Rack::Request.new(env) - message = Rack::Utils::HTTP_STATUS_CODES[status.to_i] || status.to_s - detail = env["rack.showstatus.detail"] || message - body = @template.result(binding) - size = Rack::Utils.bytesize(body) - [status, headers.merge("Content-Type" => "text/html", "Content-Length" => size.to_s), [body]] - else - [status, headers, body] - end - end - - def h(obj) # :nodoc: - case obj - when String - Utils.escape_html(obj) - else - Utils.escape_html(obj.inspect) - end - end - - # :stopdoc: - -# adapted from Django -# Copyright (c) 2005, the Lawrence Journal-World -# Used under the modified BSD license: -# http://www.xfree86.org/3.3.6/COPYRIGHT2.html#5 -TEMPLATE = <<'HTML' - - - - - <%=h message %> at <%=h req.script_name + req.path_info %> - - - - -
        -

        <%=h message %> (<%= status.to_i %>)

        - - - - - - - - - -
        Request Method:<%=h req.request_method %>
        Request URL:<%=h req.url %>
        -
        -
        -

        <%= detail %>

        -
        - -
        -

        - You're seeing this error because you use Rack::ShowStatus. -

        -
        - - -HTML - - # :startdoc: - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/static.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/static.rb deleted file mode 100644 index 168e8f83..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/static.rb +++ /dev/null @@ -1,38 +0,0 @@ -module Rack - - # The Rack::Static middleware intercepts requests for static files - # (javascript files, images, stylesheets, etc) based on the url prefixes - # passed in the options, and serves them using a Rack::File object. This - # allows a Rack stack to serve both static and dynamic content. - # - # Examples: - # use Rack::Static, :urls => ["/media"] - # will serve all requests beginning with /media from the "media" folder - # located in the current directory (ie media/*). - # - # use Rack::Static, :urls => ["/css", "/images"], :root => "public" - # will serve all requests beginning with /css or /images from the folder - # "public" in the current directory (ie public/css/* and public/images/*) - - class Static - - def initialize(app, options={}) - @app = app - @urls = options[:urls] || ["/favicon.ico"] - root = options[:root] || Dir.pwd - @file_server = Rack::File.new(root) - end - - def call(env) - path = env["PATH_INFO"] - can_serve = @urls.any? { |url| path.index(url) == 0 } - - if can_serve - @file_server.call(env) - else - @app.call(env) - end - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/urlmap.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/urlmap.rb deleted file mode 100644 index b699d35b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/urlmap.rb +++ /dev/null @@ -1,56 +0,0 @@ -module Rack - # Rack::URLMap takes a hash mapping urls or paths to apps, and - # dispatches accordingly. Support for HTTP/1.1 host names exists if - # the URLs start with http:// or https://. - # - # URLMap modifies the SCRIPT_NAME and PATH_INFO such that the part - # relevant for dispatch is in the SCRIPT_NAME, and the rest in the - # PATH_INFO. This should be taken care of when you need to - # reconstruct the URL in order to create links. - # - # URLMap dispatches in such a way that the longest paths are tried - # first, since they are most specific. - - class URLMap - def initialize(map = {}) - remap(map) - end - - def remap(map) - @mapping = map.map { |location, app| - if location =~ %r{\Ahttps?://(.*?)(/.*)} - host, location = $1, $2 - else - host = nil - end - - unless location[0] == ?/ - raise ArgumentError, "paths need to start with /" - end - location = location.chomp('/') - match = Regexp.new("^#{Regexp.quote(location).gsub('/', '/+')}(.*)", nil, 'n') - - [host, location, match, app] - }.sort_by { |(h, l, m, a)| [h ? -h.size : (-1.0 / 0.0), -l.size] } # Longest path first - end - - def call(env) - path = env["PATH_INFO"].to_s - script_name = env['SCRIPT_NAME'] - hHost, sName, sPort = env.values_at('HTTP_HOST','SERVER_NAME','SERVER_PORT') - @mapping.each { |host, location, match, app| - next unless (hHost == host || sName == host \ - || (host.nil? && (hHost == sName || hHost == sName+':'+sPort))) - next unless path =~ match && rest = $1 - next unless rest.empty? || rest[0] == ?/ - - return app.call( - env.merge( - 'SCRIPT_NAME' => (script_name + location), - 'PATH_INFO' => rest)) - } - [404, {"Content-Type" => "text/plain", "X-Cascade" => "pass"}, ["Not Found: #{path}"]] - end - end -end - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/utils.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/utils.rb deleted file mode 100644 index 68fd6ace..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/lib/rack/utils.rb +++ /dev/null @@ -1,620 +0,0 @@ -# -*- encoding: binary -*- - -require 'set' -require 'tempfile' - -module Rack - # Rack::Utils contains a grab-bag of useful methods for writing web - # applications adopted from all kinds of Ruby libraries. - - module Utils - # Performs URI escaping so that you can construct proper - # query strings faster. Use this rather than the cgi.rb - # version since it's faster. (Stolen from Camping). - def escape(s) - s.to_s.gsub(/([^ a-zA-Z0-9_.-]+)/n) { - '%'+$1.unpack('H2'*bytesize($1)).join('%').upcase - }.tr(' ', '+') - end - module_function :escape - - # Unescapes a URI escaped string. (Stolen from Camping). - def unescape(s) - s.tr('+', ' ').gsub(/((?:%[0-9a-fA-F]{2})+)/n){ - [$1.delete('%')].pack('H*') - } - end - module_function :unescape - - DEFAULT_SEP = /[&;] */n - - # Stolen from Mongrel, with some small modifications: - # Parses a query string by breaking it up at the '&' - # and ';' characters. You can also use this to parse - # cookies by changing the characters used in the second - # parameter (which defaults to '&;'). - def parse_query(qs, d = nil) - params = {} - - (qs || '').split(d ? /[#{d}] */n : DEFAULT_SEP).each do |p| - k, v = p.split('=', 2).map { |x| unescape(x) } - if v =~ /^("|')(.*)\1$/ - v = $2.gsub('\\'+$1, $1) - end - if cur = params[k] - if cur.class == Array - params[k] << v - else - params[k] = [cur, v] - end - else - params[k] = v - end - end - - return params - end - module_function :parse_query - - def parse_nested_query(qs, d = nil) - params = {} - - (qs || '').split(d ? /[#{d}] */n : DEFAULT_SEP).each do |p| - k, v = unescape(p).split('=', 2) - normalize_params(params, k, v) - end - - return params - end - module_function :parse_nested_query - - def normalize_params(params, name, v = nil) - if v and v =~ /^("|')(.*)\1$/ - v = $2.gsub('\\'+$1, $1) - end - name =~ %r(\A[\[\]]*([^\[\]]+)\]*) - k = $1 || '' - after = $' || '' - - return if k.empty? - - if after == "" - params[k] = v - elsif after == "[]" - params[k] ||= [] - raise TypeError, "expected Array (got #{params[k].class.name}) for param `#{k}'" unless params[k].is_a?(Array) - params[k] << v - elsif after =~ %r(^\[\]\[([^\[\]]+)\]$) || after =~ %r(^\[\](.+)$) - child_key = $1 - params[k] ||= [] - raise TypeError, "expected Array (got #{params[k].class.name}) for param `#{k}'" unless params[k].is_a?(Array) - if params[k].last.is_a?(Hash) && !params[k].last.key?(child_key) - normalize_params(params[k].last, child_key, v) - else - params[k] << normalize_params({}, child_key, v) - end - else - params[k] ||= {} - raise TypeError, "expected Hash (got #{params[k].class.name}) for param `#{k}'" unless params[k].is_a?(Hash) - params[k] = normalize_params(params[k], after, v) - end - - return params - end - module_function :normalize_params - - def build_query(params) - params.map { |k, v| - if v.class == Array - build_query(v.map { |x| [k, x] }) - else - "#{escape(k)}=#{escape(v)}" - end - }.join("&") - end - module_function :build_query - - def build_nested_query(value, prefix = nil) - case value - when Array - value.map { |v| - build_nested_query(v, "#{prefix}[]") - }.join("&") - when Hash - value.map { |k, v| - build_nested_query(v, prefix ? "#{prefix}[#{escape(k)}]" : escape(k)) - }.join("&") - when String - raise ArgumentError, "value must be a Hash" if prefix.nil? - "#{prefix}=#{escape(value)}" - else - prefix - end - end - module_function :build_nested_query - - # Escape ampersands, brackets and quotes to their HTML/XML entities. - def escape_html(string) - string.to_s.gsub("&", "&"). - gsub("<", "<"). - gsub(">", ">"). - gsub("'", "'"). - gsub('"', """) - end - module_function :escape_html - - def select_best_encoding(available_encodings, accept_encoding) - # http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html - - expanded_accept_encoding = - accept_encoding.map { |m, q| - if m == "*" - (available_encodings - accept_encoding.map { |m2, _| m2 }).map { |m2| [m2, q] } - else - [[m, q]] - end - }.inject([]) { |mem, list| - mem + list - } - - encoding_candidates = expanded_accept_encoding.sort_by { |_, q| -q }.map { |m, _| m } - - unless encoding_candidates.include?("identity") - encoding_candidates.push("identity") - end - - expanded_accept_encoding.find_all { |m, q| - q == 0.0 - }.each { |m, _| - encoding_candidates.delete(m) - } - - return (encoding_candidates & available_encodings)[0] - end - module_function :select_best_encoding - - def set_cookie_header!(header, key, value) - case value - when Hash - domain = "; domain=" + value[:domain] if value[:domain] - path = "; path=" + value[:path] if value[:path] - # According to RFC 2109, we need dashes here. - # N.B.: cgi.rb uses spaces... - expires = "; expires=" + value[:expires].clone.gmtime. - strftime("%a, %d-%b-%Y %H:%M:%S GMT") if value[:expires] - secure = "; secure" if value[:secure] - httponly = "; HttpOnly" if value[:httponly] - value = value[:value] - end - value = [value] unless Array === value - cookie = escape(key) + "=" + - value.map { |v| escape v }.join("&") + - "#{domain}#{path}#{expires}#{secure}#{httponly}" - - case header["Set-Cookie"] - when Array - header["Set-Cookie"] << cookie - when String - header["Set-Cookie"] = [header["Set-Cookie"], cookie] - when nil - header["Set-Cookie"] = cookie - end - - nil - end - module_function :set_cookie_header! - - def delete_cookie_header!(header, key, value = {}) - unless Array === header["Set-Cookie"] - header["Set-Cookie"] = [header["Set-Cookie"]].compact - end - - header["Set-Cookie"].reject! { |cookie| - cookie =~ /\A#{escape(key)}=/ - } - - set_cookie_header!(header, key, - {:value => '', :path => nil, :domain => nil, - :expires => Time.at(0) }.merge(value)) - - nil - end - module_function :delete_cookie_header! - - # Return the bytesize of String; uses String#length under Ruby 1.8 and - # String#bytesize under 1.9. - if ''.respond_to?(:bytesize) - def bytesize(string) - string.bytesize - end - else - def bytesize(string) - string.size - end - end - module_function :bytesize - - # Context allows the use of a compatible middleware at different points - # in a request handling stack. A compatible middleware must define - # #context which should take the arguments env and app. The first of which - # would be the request environment. The second of which would be the rack - # application that the request would be forwarded to. - class Context - attr_reader :for, :app - - def initialize(app_f, app_r) - raise 'running context does not respond to #context' unless app_f.respond_to? :context - @for, @app = app_f, app_r - end - - def call(env) - @for.context(env, @app) - end - - def recontext(app) - self.class.new(@for, app) - end - - def context(env, app=@app) - recontext(app).call(env) - end - end - - # A case-insensitive Hash that preserves the original case of a - # header when set. - class HeaderHash < Hash - def self.new(hash={}) - HeaderHash === hash ? hash : super(hash) - end - - def initialize(hash={}) - super() - @names = {} - hash.each { |k, v| self[k] = v } - end - - def each - super do |k, v| - yield(k, v.respond_to?(:to_ary) ? v.to_ary.join("\n") : v) - end - end - - def to_hash - inject({}) do |hash, (k,v)| - if v.respond_to? :to_ary - hash[k] = v.to_ary.join("\n") - else - hash[k] = v - end - hash - end - end - - def [](k) - super(@names[k] ||= @names[k.downcase]) - end - - def []=(k, v) - delete k - @names[k] = @names[k.downcase] = k - super k, v - end - - def delete(k) - canonical = k.downcase - result = super @names.delete(canonical) - @names.delete_if { |name,| name.downcase == canonical } - result - end - - def include?(k) - @names.include?(k) || @names.include?(k.downcase) - end - - alias_method :has_key?, :include? - alias_method :member?, :include? - alias_method :key?, :include? - - def merge!(other) - other.each { |k, v| self[k] = v } - self - end - - def merge(other) - hash = dup - hash.merge! other - end - - def replace(other) - clear - other.each { |k, v| self[k] = v } - self - end - end - - # Every standard HTTP code mapped to the appropriate message. - # Generated with: - # curl -s http://www.iana.org/assignments/http-status-codes | \ - # ruby -ane 'm = /^(\d{3}) +(\S[^\[(]+)/.match($_) and - # puts " #{m[1]} => \x27#{m[2].strip}x27,"' - HTTP_STATUS_CODES = { - 100 => 'Continue', - 101 => 'Switching Protocols', - 102 => 'Processing', - 200 => 'OK', - 201 => 'Created', - 202 => 'Accepted', - 203 => 'Non-Authoritative Information', - 204 => 'No Content', - 205 => 'Reset Content', - 206 => 'Partial Content', - 207 => 'Multi-Status', - 226 => 'IM Used', - 300 => 'Multiple Choices', - 301 => 'Moved Permanently', - 302 => 'Found', - 303 => 'See Other', - 304 => 'Not Modified', - 305 => 'Use Proxy', - 306 => 'Reserved', - 307 => 'Temporary Redirect', - 400 => 'Bad Request', - 401 => 'Unauthorized', - 402 => 'Payment Required', - 403 => 'Forbidden', - 404 => 'Not Found', - 405 => 'Method Not Allowed', - 406 => 'Not Acceptable', - 407 => 'Proxy Authentication Required', - 408 => 'Request Timeout', - 409 => 'Conflict', - 410 => 'Gone', - 411 => 'Length Required', - 412 => 'Precondition Failed', - 413 => 'Request Entity Too Large', - 414 => 'Request-URI Too Long', - 415 => 'Unsupported Media Type', - 416 => 'Requested Range Not Satisfiable', - 417 => 'Expectation Failed', - 422 => 'Unprocessable Entity', - 423 => 'Locked', - 424 => 'Failed Dependency', - 426 => 'Upgrade Required', - 500 => 'Internal Server Error', - 501 => 'Not Implemented', - 502 => 'Bad Gateway', - 503 => 'Service Unavailable', - 504 => 'Gateway Timeout', - 505 => 'HTTP Version Not Supported', - 506 => 'Variant Also Negotiates', - 507 => 'Insufficient Storage', - 510 => 'Not Extended', - } - - # Responses with HTTP status codes that should not have an entity body - STATUS_WITH_NO_ENTITY_BODY = Set.new((100..199).to_a << 204 << 304) - - SYMBOL_TO_STATUS_CODE = HTTP_STATUS_CODES.inject({}) { |hash, (code, message)| - hash[message.downcase.gsub(/\s|-/, '_').to_sym] = code - hash - } - - def status_code(status) - if status.is_a?(Symbol) - SYMBOL_TO_STATUS_CODE[status] || 500 - else - status.to_i - end - end - module_function :status_code - - # A multipart form data parser, adapted from IOWA. - # - # Usually, Rack::Request#POST takes care of calling this. - - module Multipart - class UploadedFile - # The filename, *not* including the path, of the "uploaded" file - attr_reader :original_filename - - # The content type of the "uploaded" file - attr_accessor :content_type - - def initialize(path, content_type = "text/plain", binary = false) - raise "#{path} file does not exist" unless ::File.exist?(path) - @content_type = content_type - @original_filename = ::File.basename(path) - @tempfile = Tempfile.new(@original_filename) - @tempfile.set_encoding(Encoding::BINARY) if @tempfile.respond_to?(:set_encoding) - @tempfile.binmode if binary - FileUtils.copy_file(path, @tempfile.path) - end - - def path - @tempfile.path - end - alias_method :local_path, :path - - def method_missing(method_name, *args, &block) #:nodoc: - @tempfile.__send__(method_name, *args, &block) - end - end - - EOL = "\r\n" - MULTIPART_BOUNDARY = "AaB03x" - - def self.parse_multipart(env) - unless env['CONTENT_TYPE'] =~ - %r|\Amultipart/.*boundary=\"?([^\";,]+)\"?|n - nil - else - boundary = "--#{$1}" - - params = {} - buf = "" - content_length = env['CONTENT_LENGTH'].to_i - input = env['rack.input'] - input.rewind - - boundary_size = Utils.bytesize(boundary) + EOL.size - bufsize = 16384 - - content_length -= boundary_size - - read_buffer = '' - - status = input.read(boundary_size, read_buffer) - raise EOFError, "bad content body" unless status == boundary + EOL - - rx = /(?:#{EOL})?#{Regexp.quote boundary}(#{EOL}|--)/n - - loop { - head = nil - body = '' - filename = content_type = name = nil - - until head && buf =~ rx - if !head && i = buf.index(EOL+EOL) - head = buf.slice!(0, i+2) # First \r\n - buf.slice!(0, 2) # Second \r\n - - filename = head[/Content-Disposition:.* filename=(?:"((?:\\.|[^\"])*)"|([^;\s]*))/ni, 1] - content_type = head[/Content-Type: (.*)#{EOL}/ni, 1] - name = head[/Content-Disposition:.*\s+name="?([^\";]*)"?/ni, 1] || head[/Content-ID:\s*([^#{EOL}]*)/ni, 1] - - if content_type || filename - body = Tempfile.new("RackMultipart") - body.binmode if body.respond_to?(:binmode) - end - - next - end - - # Save the read body part. - if head && (boundary_size+4 < buf.size) - body << buf.slice!(0, buf.size - (boundary_size+4)) - end - - c = input.read(bufsize < content_length ? bufsize : content_length, read_buffer) - raise EOFError, "bad content body" if c.nil? || c.empty? - buf << c - content_length -= c.size - end - - # Save the rest. - if i = buf.index(rx) - body << buf.slice!(0, i) - buf.slice!(0, boundary_size+2) - - content_length = -1 if $1 == "--" - end - - if filename == "" - # filename is blank which means no file has been selected - data = nil - elsif filename - body.rewind - - # Take the basename of the upload's original filename. - # This handles the full Windows paths given by Internet Explorer - # (and perhaps other broken user agents) without affecting - # those which give the lone filename. - filename =~ /^(?:.*[:\\\/])?(.*)/m - filename = $1 - - data = {:filename => filename, :type => content_type, - :name => name, :tempfile => body, :head => head} - elsif !filename && content_type - body.rewind - - # Generic multipart cases, not coming from a form - data = {:type => content_type, - :name => name, :tempfile => body, :head => head} - else - data = body - end - - Utils.normalize_params(params, name, data) unless data.nil? - - # break if we're at the end of a buffer, but not if it is the end of a field - break if (buf.empty? && $1 != EOL) || content_length == -1 - } - - input.rewind - - params - end - end - - def self.build_multipart(params, first = true) - if first - unless params.is_a?(Hash) - raise ArgumentError, "value must be a Hash" - end - - multipart = false - query = lambda { |value| - case value - when Array - value.each(&query) - when Hash - value.values.each(&query) - when UploadedFile - multipart = true - end - } - params.values.each(&query) - return nil unless multipart - end - - flattened_params = Hash.new - - params.each do |key, value| - k = first ? key.to_s : "[#{key}]" - - case value - when Array - value.map { |v| - build_multipart(v, false).each { |subkey, subvalue| - flattened_params["#{k}[]#{subkey}"] = subvalue - } - } - when Hash - build_multipart(value, false).each { |subkey, subvalue| - flattened_params[k + subkey] = subvalue - } - else - flattened_params[k] = value - end - end - - if first - flattened_params.map { |name, file| - if file.respond_to?(:original_filename) - ::File.open(file.path, "rb") do |f| - f.set_encoding(Encoding::BINARY) if f.respond_to?(:set_encoding) -<<-EOF ---#{MULTIPART_BOUNDARY}\r -Content-Disposition: form-data; name="#{name}"; filename="#{Utils.escape(file.original_filename)}"\r -Content-Type: #{file.content_type}\r -Content-Length: #{::File.stat(file.path).size}\r -\r -#{f.read}\r -EOF - end - else -<<-EOF ---#{MULTIPART_BOUNDARY}\r -Content-Disposition: form-data; name="#{name}"\r -\r -#{file}\r -EOF - end - }.join + "--#{MULTIPART_BOUNDARY}--\r" - else - flattened_params - end - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/rack.gemspec b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/rack.gemspec deleted file mode 100644 index e28b9bb2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/rack.gemspec +++ /dev/null @@ -1,38 +0,0 @@ -Gem::Specification.new do |s| - s.name = "rack" - s.version = "1.1.0" - s.platform = Gem::Platform::RUBY - s.summary = "a modular Ruby webserver interface" - - s.description = <<-EOF -Rack provides minimal, modular and adaptable interface for developing -web applications in Ruby. By wrapping HTTP requests and responses in -the simplest way possible, it unifies and distills the API for web -servers, web frameworks, and software in between (the so-called -middleware) into a single method call. - -Also see http://rack.rubyforge.org. -EOF - - s.files = Dir['{bin/*,contrib/*,example/*,lib/**/*}'] + - %w(COPYING KNOWN-ISSUES rack.gemspec RDOX README SPEC) - s.bindir = 'bin' - s.executables << 'rackup' - s.require_path = 'lib' - s.has_rdoc = true - s.extra_rdoc_files = ['README', 'SPEC', 'KNOWN-ISSUES'] - s.test_files = Dir['test/{test,spec}_*.rb'] - - s.author = 'Christian Neukirchen' - s.email = 'chneukirchen@gmail.com' - s.homepage = 'http://rack.rubyforge.org' - s.rubyforge_project = 'rack' - - s.add_development_dependency 'test-spec' - - s.add_development_dependency 'camping' - s.add_development_dependency 'fcgi' - s.add_development_dependency 'memcache-client' - s.add_development_dependency 'mongrel' - s.add_development_dependency 'thin' -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_auth_basic.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_auth_basic.rb deleted file mode 100644 index 0176efc8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_auth_basic.rb +++ /dev/null @@ -1,73 +0,0 @@ -require 'test/spec' - -require 'rack/auth/basic' -require 'rack/mock' - -context 'Rack::Auth::Basic' do - - def realm - 'WallysWorld' - end - - def unprotected_app - lambda { |env| [ 200, {'Content-Type' => 'text/plain'}, ["Hi #{env['REMOTE_USER']}"] ] } - end - - def protected_app - app = Rack::Auth::Basic.new(unprotected_app) { |username, password| 'Boss' == username } - app.realm = realm - app - end - - setup do - @request = Rack::MockRequest.new(protected_app) - end - - def request_with_basic_auth(username, password, &block) - request 'HTTP_AUTHORIZATION' => 'Basic ' + ["#{username}:#{password}"].pack("m*"), &block - end - - def request(headers = {}) - yield @request.get('/', headers) - end - - def assert_basic_auth_challenge(response) - response.should.be.a.client_error - response.status.should.equal 401 - response.should.include 'WWW-Authenticate' - response.headers['WWW-Authenticate'].should =~ /Basic realm="#{Regexp.escape(realm)}"/ - response.body.should.be.empty - end - - specify 'should challenge correctly when no credentials are specified' do - request do |response| - assert_basic_auth_challenge response - end - end - - specify 'should rechallenge if incorrect credentials are specified' do - request_with_basic_auth 'joe', 'password' do |response| - assert_basic_auth_challenge response - end - end - - specify 'should return application output if correct credentials are specified' do - request_with_basic_auth 'Boss', 'password' do |response| - response.status.should.equal 200 - response.body.to_s.should.equal 'Hi Boss' - end - end - - specify 'should return 400 Bad Request if different auth scheme used' do - request 'HTTP_AUTHORIZATION' => 'Digest params' do |response| - response.should.be.a.client_error - response.status.should.equal 400 - response.should.not.include 'WWW-Authenticate' - end - end - - specify 'realm as optional constructor arg' do - app = Rack::Auth::Basic.new(unprotected_app, realm) { true } - assert_equal realm, app.realm - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_auth_digest.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_auth_digest.rb deleted file mode 100644 index a980acc8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_auth_digest.rb +++ /dev/null @@ -1,226 +0,0 @@ -require 'test/spec' - -require 'rack/auth/digest/md5' -require 'rack/mock' - -context 'Rack::Auth::Digest::MD5' do - - def realm - 'WallysWorld' - end - - def unprotected_app - lambda do |env| - [ 200, {'Content-Type' => 'text/plain'}, ["Hi #{env['REMOTE_USER']}"] ] - end - end - - def protected_app - app = Rack::Auth::Digest::MD5.new(unprotected_app) do |username| - { 'Alice' => 'correct-password' }[username] - end - app.realm = realm - app.opaque = 'this-should-be-secret' - app - end - - def protected_app_with_hashed_passwords - app = Rack::Auth::Digest::MD5.new(unprotected_app) do |username| - username == 'Alice' ? Digest::MD5.hexdigest("Alice:#{realm}:correct-password") : nil - end - app.realm = realm - app.opaque = 'this-should-be-secret' - app.passwords_hashed = true - app - end - - def partially_protected_app - Rack::URLMap.new({ - '/' => unprotected_app, - '/protected' => protected_app - }) - end - - def protected_app_with_method_override - Rack::MethodOverride.new(protected_app) - end - - setup do - @request = Rack::MockRequest.new(protected_app) - end - - def request(method, path, headers = {}, &block) - response = @request.request(method, path, headers) - block.call(response) if block - return response - end - - class MockDigestRequest - def initialize(params) - @params = params - end - def method_missing(sym) - if @params.has_key? k = sym.to_s - return @params[k] - end - super - end - def method - @params['method'] - end - def response(password) - Rack::Auth::Digest::MD5.new(nil).send :digest, self, password - end - end - - def request_with_digest_auth(method, path, username, password, options = {}, &block) - request_options = {} - request_options[:input] = options.delete(:input) if options.include? :input - - response = request(method, path, request_options) - - return response unless response.status == 401 - - if wait = options.delete(:wait) - sleep wait - end - - challenge = response['WWW-Authenticate'].split(' ', 2).last - - params = Rack::Auth::Digest::Params.parse(challenge) - - params['username'] = username - params['nc'] = '00000001' - params['cnonce'] = 'nonsensenonce' - params['uri'] = path - - params['method'] = method - - params.update options - - params['response'] = MockDigestRequest.new(params).response(password) - - request(method, path, request_options.merge('HTTP_AUTHORIZATION' => "Digest #{params}"), &block) - end - - def assert_digest_auth_challenge(response) - response.should.be.a.client_error - response.status.should.equal 401 - response.should.include 'WWW-Authenticate' - response.headers['WWW-Authenticate'].should =~ /^Digest / - response.body.should.be.empty - end - - def assert_bad_request(response) - response.should.be.a.client_error - response.status.should.equal 400 - response.should.not.include 'WWW-Authenticate' - end - - specify 'should challenge when no credentials are specified' do - request 'GET', '/' do |response| - assert_digest_auth_challenge response - end - end - - specify 'should return application output if correct credentials given' do - request_with_digest_auth 'GET', '/', 'Alice', 'correct-password' do |response| - response.status.should.equal 200 - response.body.to_s.should.equal 'Hi Alice' - end - end - - specify 'should return application output if correct credentials given (hashed passwords)' do - @request = Rack::MockRequest.new(protected_app_with_hashed_passwords) - - request_with_digest_auth 'GET', '/', 'Alice', 'correct-password' do |response| - response.status.should.equal 200 - response.body.to_s.should.equal 'Hi Alice' - end - end - - specify 'should rechallenge if incorrect username given' do - request_with_digest_auth 'GET', '/', 'Bob', 'correct-password' do |response| - assert_digest_auth_challenge response - end - end - - specify 'should rechallenge if incorrect password given' do - request_with_digest_auth 'GET', '/', 'Alice', 'wrong-password' do |response| - assert_digest_auth_challenge response - end - end - - specify 'should rechallenge with stale parameter if nonce is stale' do - begin - Rack::Auth::Digest::Nonce.time_limit = 1 - - request_with_digest_auth 'GET', '/', 'Alice', 'correct-password', :wait => 2 do |response| - assert_digest_auth_challenge response - response.headers['WWW-Authenticate'].should =~ /\bstale=true\b/ - end - ensure - Rack::Auth::Digest::Nonce.time_limit = nil - end - end - - specify 'should return 400 Bad Request if incorrect qop given' do - request_with_digest_auth 'GET', '/', 'Alice', 'correct-password', 'qop' => 'auth-int' do |response| - assert_bad_request response - end - end - - specify 'should return 400 Bad Request if incorrect uri given' do - request_with_digest_auth 'GET', '/', 'Alice', 'correct-password', 'uri' => '/foo' do |response| - assert_bad_request response - end - end - - specify 'should return 400 Bad Request if different auth scheme used' do - request 'GET', '/', 'HTTP_AUTHORIZATION' => 'Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==' do |response| - assert_bad_request response - end - end - - specify 'should not require credentials for unprotected path' do - @request = Rack::MockRequest.new(partially_protected_app) - request 'GET', '/' do |response| - response.should.be.ok - end - end - - specify 'should challenge when no credentials are specified for protected path' do - @request = Rack::MockRequest.new(partially_protected_app) - request 'GET', '/protected' do |response| - assert_digest_auth_challenge response - end - end - - specify 'should return application output if correct credentials given for protected path' do - @request = Rack::MockRequest.new(partially_protected_app) - request_with_digest_auth 'GET', '/protected', 'Alice', 'correct-password' do |response| - response.status.should.equal 200 - response.body.to_s.should.equal 'Hi Alice' - end - end - - specify 'should return application output if correct credentials given for POST' do - request_with_digest_auth 'POST', '/', 'Alice', 'correct-password' do |response| - response.status.should.equal 200 - response.body.to_s.should.equal 'Hi Alice' - end - end - - specify 'should return application output if correct credentials given for PUT (using method override of POST)' do - @request = Rack::MockRequest.new(protected_app_with_method_override) - request_with_digest_auth 'POST', '/', 'Alice', 'correct-password', :input => "_method=put" do |response| - response.status.should.equal 200 - response.body.to_s.should.equal 'Hi Alice' - end - end - - specify 'realm as optional constructor arg' do - app = Rack::Auth::Digest::MD5.new(unprotected_app, realm) { true } - assert_equal realm, app.realm - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_builder.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_builder.rb deleted file mode 100644 index 3fad9810..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_builder.rb +++ /dev/null @@ -1,84 +0,0 @@ -require 'test/spec' - -require 'rack/builder' -require 'rack/mock' -require 'rack/showexceptions' -require 'rack/auth/basic' - -context "Rack::Builder" do - specify "chains apps by default" do - app = Rack::Builder.new do - use Rack::ShowExceptions - run lambda { |env| raise "bzzzt" } - end.to_app - - Rack::MockRequest.new(app).get("/").should.be.server_error - Rack::MockRequest.new(app).get("/").should.be.server_error - Rack::MockRequest.new(app).get("/").should.be.server_error - end - - specify "has implicit #to_app" do - app = Rack::Builder.new do - use Rack::ShowExceptions - run lambda { |env| raise "bzzzt" } - end - - Rack::MockRequest.new(app).get("/").should.be.server_error - Rack::MockRequest.new(app).get("/").should.be.server_error - Rack::MockRequest.new(app).get("/").should.be.server_error - end - - specify "supports blocks on use" do - app = Rack::Builder.new do - use Rack::ShowExceptions - use Rack::Auth::Basic do |username, password| - 'secret' == password - end - - run lambda { |env| [200, {}, ['Hi Boss']] } - end - - response = Rack::MockRequest.new(app).get("/") - response.should.be.client_error - response.status.should.equal 401 - - # with auth... - response = Rack::MockRequest.new(app).get("/", - 'HTTP_AUTHORIZATION' => 'Basic ' + ["joe:secret"].pack("m*")) - response.status.should.equal 200 - response.body.to_s.should.equal 'Hi Boss' - end - - specify "has explicit #to_app" do - app = Rack::Builder.app do - use Rack::ShowExceptions - run lambda { |env| raise "bzzzt" } - end - - Rack::MockRequest.new(app).get("/").should.be.server_error - Rack::MockRequest.new(app).get("/").should.be.server_error - Rack::MockRequest.new(app).get("/").should.be.server_error - end - - specify "apps are initialized once" do - app = Rack::Builder.new do - class AppClass - def initialize - @called = 0 - end - def call(env) - raise "bzzzt" if @called > 0 - @called += 1 - [200, {'Content-Type' => 'text/plain'}, ['OK']] - end - end - - use Rack::ShowExceptions - run AppClass.new - end - - Rack::MockRequest.new(app).get("/").status.should.equal 200 - Rack::MockRequest.new(app).get("/").should.be.server_error - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_camping.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_camping.rb deleted file mode 100644 index bed11710..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_camping.rb +++ /dev/null @@ -1,51 +0,0 @@ -require 'test/spec' -require 'stringio' -require 'uri' - -begin - require 'rack/mock' - - $-w, w = nil, $-w # yuck - require 'camping' - require 'rack/adapter/camping' - - Camping.goes :CampApp - module CampApp - module Controllers - class HW < R('/') - def get - @headers["X-Served-By"] = URI("http://rack.rubyforge.org") - "Camping works!" - end - - def post - "Data: #{input.foo}" - end - end - end - end - $-w = w - - context "Rack::Adapter::Camping" do - specify "works with GET" do - res = Rack::MockRequest.new(Rack::Adapter::Camping.new(CampApp)). - get("/") - - res.should.be.ok - res["Content-Type"].should.equal "text/html" - res["X-Served-By"].should.equal "http://rack.rubyforge.org" - - res.body.should.equal "Camping works!" - end - - specify "works with POST" do - res = Rack::MockRequest.new(Rack::Adapter::Camping.new(CampApp)). - post("/", :input => "foo=bar") - - res.should.be.ok - res.body.should.equal "Data: bar" - end - end -rescue LoadError - $stderr.puts "Skipping Rack::Adapter::Camping tests (Camping is required). `gem install camping` and try again." -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_cascade.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_cascade.rb deleted file mode 100644 index cf3c29b4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_cascade.rb +++ /dev/null @@ -1,48 +0,0 @@ -require 'test/spec' - -require 'rack/cascade' -require 'rack/mock' - -require 'rack/urlmap' -require 'rack/file' - -context "Rack::Cascade" do - docroot = File.expand_path(File.dirname(__FILE__)) - app1 = Rack::File.new(docroot) - - app2 = Rack::URLMap.new("/crash" => lambda { |env| raise "boom" }) - - app3 = Rack::URLMap.new("/foo" => lambda { |env| - [200, { "Content-Type" => "text/plain"}, [""]]}) - - specify "should dispatch onward on 404 by default" do - cascade = Rack::Cascade.new([app1, app2, app3]) - Rack::MockRequest.new(cascade).get("/cgi/test").should.be.ok - Rack::MockRequest.new(cascade).get("/foo").should.be.ok - Rack::MockRequest.new(cascade).get("/toobad").should.be.not_found - Rack::MockRequest.new(cascade).get("/cgi/../bla").should.be.forbidden - end - - specify "should dispatch onward on whatever is passed" do - cascade = Rack::Cascade.new([app1, app2, app3], [404, 403]) - Rack::MockRequest.new(cascade).get("/cgi/../bla").should.be.not_found - end - - specify "should return 404 if empty" do - Rack::MockRequest.new(Rack::Cascade.new([])).get('/').should.be.not_found - end - - specify "should append new app" do - cascade = Rack::Cascade.new([], [404, 403]) - Rack::MockRequest.new(cascade).get('/').should.be.not_found - cascade << app2 - Rack::MockRequest.new(cascade).get('/cgi/test').should.be.not_found - Rack::MockRequest.new(cascade).get('/cgi/../bla').should.be.not_found - cascade << app1 - Rack::MockRequest.new(cascade).get('/cgi/test').should.be.ok - Rack::MockRequest.new(cascade).get('/cgi/../bla').should.be.forbidden - Rack::MockRequest.new(cascade).get('/foo').should.be.not_found - cascade << app3 - Rack::MockRequest.new(cascade).get('/foo').should.be.ok - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_cgi.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_cgi.rb deleted file mode 100644 index 59500cd7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_cgi.rb +++ /dev/null @@ -1,89 +0,0 @@ -require 'test/spec' -require 'testrequest' - -context "Rack::Handler::CGI" do - include TestRequest::Helpers - - setup do - @host = '0.0.0.0' - @port = 9203 - end - - # Keep this first. - specify "startup" do - $pid = fork { - Dir.chdir(File.join(File.dirname(__FILE__), "..", "test", "cgi")) - exec "lighttpd -D -f lighttpd.conf" - } - end - - specify "should respond" do - sleep 1 - lambda { - GET("/test") - }.should.not.raise - end - - specify "should be a lighttpd" do - GET("/test") - status.should.be 200 - response["SERVER_SOFTWARE"].should =~ /lighttpd/ - response["HTTP_VERSION"].should.equal "HTTP/1.1" - response["SERVER_PROTOCOL"].should.equal "HTTP/1.1" - response["SERVER_PORT"].should.equal @port.to_s - response["SERVER_NAME"].should =~ @host - end - - specify "should have rack headers" do - GET("/test") - response["rack.version"].should.equal [1,1] - response["rack.multithread"].should.be false - response["rack.multiprocess"].should.be true - response["rack.run_once"].should.be true - end - - specify "should have CGI headers on GET" do - GET("/test") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/" - response["PATH_INFO"].should.equal "" - response["QUERY_STRING"].should.equal "" - response["test.postdata"].should.equal "" - - GET("/test/foo?quux=1") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/" - response["PATH_INFO"].should.equal "/foo" - response["QUERY_STRING"].should.equal "quux=1" - end - - specify "should have CGI headers on POST" do - POST("/test", {"rack-form-data" => "23"}, {'X-test-header' => '42'}) - status.should.equal 200 - response["REQUEST_METHOD"].should.equal "POST" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/" - response["QUERY_STRING"].should.equal "" - response["HTTP_X_TEST_HEADER"].should.equal "42" - response["test.postdata"].should.equal "rack-form-data=23" - end - - specify "should support HTTP auth" do - GET("/test", {:user => "ruth", :passwd => "secret"}) - response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ=" - end - - specify "should set status" do - GET("/test?secret") - status.should.equal 403 - response["rack.url_scheme"].should.equal "http" - end - - # Keep this last. - specify "shutdown" do - Process.kill 15, $pid - Process.wait($pid).should.equal $pid - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_chunked.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_chunked.rb deleted file mode 100644 index 39eea482..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_chunked.rb +++ /dev/null @@ -1,62 +0,0 @@ -require 'rack/mock' -require 'rack/chunked' -require 'rack/utils' - -context "Rack::Chunked" do - - before do - @env = Rack::MockRequest. - env_for('/', 'HTTP_VERSION' => '1.1', 'REQUEST_METHOD' => 'GET') - end - - specify 'chunks responses with no Content-Length' do - app = lambda { |env| [200, {}, ['Hello', ' ', 'World!']] } - response = Rack::MockResponse.new(*Rack::Chunked.new(app).call(@env)) - response.headers.should.not.include 'Content-Length' - response.headers['Transfer-Encoding'].should.equal 'chunked' - response.body.should.equal "5\r\nHello\r\n1\r\n \r\n6\r\nWorld!\r\n0\r\n\r\n" - end - - specify 'chunks empty bodies properly' do - app = lambda { |env| [200, {}, []] } - response = Rack::MockResponse.new(*Rack::Chunked.new(app).call(@env)) - response.headers.should.not.include 'Content-Length' - response.headers['Transfer-Encoding'].should.equal 'chunked' - response.body.should.equal "0\r\n\r\n" - end - - specify 'does not modify response when Content-Length header present' do - app = lambda { |env| [200, {'Content-Length'=>'12'}, ['Hello', ' ', 'World!']] } - status, headers, body = Rack::Chunked.new(app).call(@env) - status.should.equal 200 - headers.should.not.include 'Transfer-Encoding' - headers.should.include 'Content-Length' - body.join.should.equal 'Hello World!' - end - - specify 'does not modify response when client is HTTP/1.0' do - app = lambda { |env| [200, {}, ['Hello', ' ', 'World!']] } - @env['HTTP_VERSION'] = 'HTTP/1.0' - status, headers, body = Rack::Chunked.new(app).call(@env) - status.should.equal 200 - headers.should.not.include 'Transfer-Encoding' - body.join.should.equal 'Hello World!' - end - - specify 'does not modify response when Transfer-Encoding header already present' do - app = lambda { |env| [200, {'Transfer-Encoding' => 'identity'}, ['Hello', ' ', 'World!']] } - status, headers, body = Rack::Chunked.new(app).call(@env) - status.should.equal 200 - headers['Transfer-Encoding'].should.equal 'identity' - body.join.should.equal 'Hello World!' - end - - [100, 204, 304].each do |status_code| - specify "does not modify response when status code is #{status_code}" do - app = lambda { |env| [status_code, {}, []] } - status, headers, body = Rack::Chunked.new(app).call(@env) - status.should.equal status_code - headers.should.not.include 'Transfer-Encoding' - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_commonlogger.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_commonlogger.rb deleted file mode 100644 index 46a72e86..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_commonlogger.rb +++ /dev/null @@ -1,61 +0,0 @@ -require 'test/spec' -require 'stringio' - -require 'rack/commonlogger' -require 'rack/lobster' -require 'rack/mock' - -context "Rack::CommonLogger" do - app = lambda { |env| - [200, - {"Content-Type" => "text/html", "Content-Length" => length.to_s}, - [obj]]} - app_without_length = lambda { |env| - [200, - {"Content-Type" => "text/html"}, - []]} - app_with_zero_length = lambda { |env| - [200, - {"Content-Type" => "text/html", "Content-Length" => "0"}, - []]} - - specify "should log to rack.errors by default" do - res = Rack::MockRequest.new(Rack::CommonLogger.new(app)).get("/") - - res.errors.should.not.be.empty - res.errors.should =~ /"GET \/ " 200 #{length} / - end - - specify "should log to anything with +write+" do - log = StringIO.new - res = Rack::MockRequest.new(Rack::CommonLogger.new(app, log)).get("/") - - log.string.should =~ /"GET \/ " 200 #{length} / - end - - specify "should log - content length if header is missing" do - res = Rack::MockRequest.new(Rack::CommonLogger.new(app_without_length)).get("/") - - res.errors.should.not.be.empty - res.errors.should =~ /"GET \/ " 200 - / - end - - specify "should log - content length if header is zero" do - res = Rack::MockRequest.new(Rack::CommonLogger.new(app_with_zero_length)).get("/") - - res.errors.should.not.be.empty - res.errors.should =~ /"GET \/ " 200 - / - end - - def length - self.class.length - end - - def self.length - 123 - end - - def self.obj - "hello world" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_conditionalget.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_conditionalget.rb deleted file mode 100644 index ca34cc92..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_conditionalget.rb +++ /dev/null @@ -1,41 +0,0 @@ -require 'test/spec' -require 'time' - -require 'rack/mock' -require 'rack/conditionalget' - -context "Rack::ConditionalGet" do - specify "should set a 304 status and truncate body when If-Modified-Since hits" do - timestamp = Time.now.httpdate - app = Rack::ConditionalGet.new(lambda { |env| - [200, {'Last-Modified'=>timestamp}, ['TEST']] }) - - response = Rack::MockRequest.new(app). - get("/", 'HTTP_IF_MODIFIED_SINCE' => timestamp) - - response.status.should.equal 304 - response.body.should.be.empty - end - - specify "should set a 304 status and truncate body when If-None-Match hits" do - app = Rack::ConditionalGet.new(lambda { |env| - [200, {'Etag'=>'1234'}, ['TEST']] }) - - response = Rack::MockRequest.new(app). - get("/", 'HTTP_IF_NONE_MATCH' => '1234') - - response.status.should.equal 304 - response.body.should.be.empty - end - - specify "should not affect non-GET/HEAD requests" do - app = Rack::ConditionalGet.new(lambda { |env| - [200, {'Etag'=>'1234'}, ['TEST']] }) - - response = Rack::MockRequest.new(app). - post("/", 'HTTP_IF_NONE_MATCH' => '1234') - - response.status.should.equal 200 - response.body.should.equal 'TEST' - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_config.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_config.rb deleted file mode 100644 index a508ea4b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_config.rb +++ /dev/null @@ -1,24 +0,0 @@ -require 'test/spec' -require 'rack/mock' -require 'rack/builder' -require 'rack/content_length' -require 'rack/config' - -context "Rack::Config" do - - specify "should accept a block that modifies the environment" do - app = Rack::Builder.new do - use Rack::Lint - use Rack::ContentLength - use Rack::Config do |env| - env['greeting'] = 'hello' - end - run lambda { |env| - [200, {'Content-Type' => 'text/plain'}, [env['greeting'] || '']] - } - end - response = Rack::MockRequest.new(app).get('/') - response.body.should.equal('hello') - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_content_length.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_content_length.rb deleted file mode 100644 index 7db9345f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_content_length.rb +++ /dev/null @@ -1,43 +0,0 @@ -require 'rack/mock' -require 'rack/content_length' - -context "Rack::ContentLength" do - specify "sets Content-Length on String bodies if none is set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] } - response = Rack::ContentLength.new(app).call({}) - response[1]['Content-Length'].should.equal '13' - end - - specify "sets Content-Length on Array bodies if none is set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]] } - response = Rack::ContentLength.new(app).call({}) - response[1]['Content-Length'].should.equal '13' - end - - specify "does not set Content-Length on variable length bodies" do - body = lambda { "Hello World!" } - def body.each ; yield call ; end - - app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, body] } - response = Rack::ContentLength.new(app).call({}) - response[1]['Content-Length'].should.be.nil - end - - specify "does not change Content-Length if it is already set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain', 'Content-Length' => '1'}, "Hello, World!"] } - response = Rack::ContentLength.new(app).call({}) - response[1]['Content-Length'].should.equal '1' - end - - specify "does not set Content-Length on 304 responses" do - app = lambda { |env| [304, {'Content-Type' => 'text/plain'}, []] } - response = Rack::ContentLength.new(app).call({}) - response[1]['Content-Length'].should.equal nil - end - - specify "does not set Content-Length when Transfer-Encoding is chunked" do - app = lambda { |env| [200, {'Transfer-Encoding' => 'chunked'}, []] } - response = Rack::ContentLength.new(app).call({}) - response[1]['Content-Length'].should.equal nil - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_content_type.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_content_type.rb deleted file mode 100644 index 9975b94d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_content_type.rb +++ /dev/null @@ -1,30 +0,0 @@ -require 'rack/mock' -require 'rack/content_type' - -context "Rack::ContentType" do - specify "sets Content-Type to default text/html if none is set" do - app = lambda { |env| [200, {}, "Hello, World!"] } - status, headers, body = Rack::ContentType.new(app).call({}) - headers['Content-Type'].should.equal 'text/html' - end - - specify "sets Content-Type to chosen default if none is set" do - app = lambda { |env| [200, {}, "Hello, World!"] } - status, headers, body = - Rack::ContentType.new(app, 'application/octet-stream').call({}) - headers['Content-Type'].should.equal 'application/octet-stream' - end - - specify "does not change Content-Type if it is already set" do - app = lambda { |env| [200, {'Content-Type' => 'foo/bar'}, "Hello, World!"] } - status, headers, body = Rack::ContentType.new(app).call({}) - headers['Content-Type'].should.equal 'foo/bar' - end - - specify "case insensitive detection of Content-Type" do - app = lambda { |env| [200, {'CONTENT-Type' => 'foo/bar'}, "Hello, World!"] } - status, headers, body = Rack::ContentType.new(app).call({}) - headers.to_a.select { |k,v| k.downcase == "content-type" }. - should.equal [["CONTENT-Type","foo/bar"]] - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_deflater.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_deflater.rb deleted file mode 100644 index c9bb3189..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_deflater.rb +++ /dev/null @@ -1,127 +0,0 @@ -require 'test/spec' - -require 'rack/mock' -require 'rack/deflater' -require 'stringio' -require 'time' # for Time#httpdate - -context "Rack::Deflater" do - def build_response(status, body, accept_encoding, headers = {}) - body = [body] if body.respond_to? :to_str - app = lambda { |env| [status, {}, body] } - request = Rack::MockRequest.env_for("", headers.merge("HTTP_ACCEPT_ENCODING" => accept_encoding)) - response = Rack::Deflater.new(app).call(request) - - return response - end - - specify "should be able to deflate bodies that respond to each" do - body = Object.new - class << body; def each; yield("foo"); yield("bar"); end; end - - response = build_response(200, body, "deflate") - - response[0].should.equal(200) - response[1].should.equal({ - "Content-Encoding" => "deflate", - "Vary" => "Accept-Encoding" - }) - buf = '' - response[2].each { |part| buf << part } - buf.should.equal("K\313\317OJ,\002\000") - end - - # TODO: This is really just a special case of the above... - specify "should be able to deflate String bodies" do - response = build_response(200, "Hello world!", "deflate") - - response[0].should.equal(200) - response[1].should.equal({ - "Content-Encoding" => "deflate", - "Vary" => "Accept-Encoding" - }) - buf = '' - response[2].each { |part| buf << part } - buf.should.equal("\363H\315\311\311W(\317/\312IQ\004\000") - end - - specify "should be able to gzip bodies that respond to each" do - body = Object.new - class << body; def each; yield("foo"); yield("bar"); end; end - - response = build_response(200, body, "gzip") - - response[0].should.equal(200) - response[1].should.equal({ - "Content-Encoding" => "gzip", - "Vary" => "Accept-Encoding", - }) - - buf = '' - response[2].each { |part| buf << part } - io = StringIO.new(buf) - gz = Zlib::GzipReader.new(io) - gz.read.should.equal("foobar") - gz.close - end - - specify "should be able to fallback to no deflation" do - response = build_response(200, "Hello world!", "superzip") - - response[0].should.equal(200) - response[1].should.equal({ "Vary" => "Accept-Encoding" }) - response[2].should.equal(["Hello world!"]) - end - - specify "should be able to skip when there is no response entity body" do - response = build_response(304, [], "gzip") - - response[0].should.equal(304) - response[1].should.equal({}) - response[2].should.equal([]) - end - - specify "should handle the lack of an acceptable encoding" do - response1 = build_response(200, "Hello world!", "identity;q=0", "PATH_INFO" => "/") - response1[0].should.equal(406) - response1[1].should.equal({"Content-Type" => "text/plain", "Content-Length" => "71"}) - response1[2].should.equal(["An acceptable encoding for the requested resource / could not be found."]) - - response2 = build_response(200, "Hello world!", "identity;q=0", "SCRIPT_NAME" => "/foo", "PATH_INFO" => "/bar") - response2[0].should.equal(406) - response2[1].should.equal({"Content-Type" => "text/plain", "Content-Length" => "78"}) - response2[2].should.equal(["An acceptable encoding for the requested resource /foo/bar could not be found."]) - end - - specify "should handle gzip response with Last-Modified header" do - last_modified = Time.now.httpdate - - app = lambda { |env| [200, { "Last-Modified" => last_modified }, ["Hello World!"]] } - request = Rack::MockRequest.env_for("", "HTTP_ACCEPT_ENCODING" => "gzip") - response = Rack::Deflater.new(app).call(request) - - response[0].should.equal(200) - response[1].should.equal({ - "Content-Encoding" => "gzip", - "Vary" => "Accept-Encoding", - "Last-Modified" => last_modified - }) - - buf = '' - response[2].each { |part| buf << part } - io = StringIO.new(buf) - gz = Zlib::GzipReader.new(io) - gz.read.should.equal("Hello World!") - gz.close - end - - specify "should do nothing when no-transform Cache-Control directive present" do - app = lambda { |env| [200, {'Cache-Control' => 'no-transform'}, ['Hello World!']] } - request = Rack::MockRequest.env_for("", "HTTP_ACCEPT_ENCODING" => "gzip") - response = Rack::Deflater.new(app).call(request) - - response[0].should.equal(200) - response[1].should.not.include "Content-Encoding" - response[2].join.should.equal("Hello World!") - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_directory.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_directory.rb deleted file mode 100644 index d255c91d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_directory.rb +++ /dev/null @@ -1,61 +0,0 @@ -require 'test/spec' - -require 'rack/directory' -require 'rack/lint' - -require 'rack/mock' - -context "Rack::Directory" do - DOCROOT = File.expand_path(File.dirname(__FILE__)) unless defined? DOCROOT - FILE_CATCH = proc{|env| [200, {'Content-Type'=>'text/plain', "Content-Length" => "7"}, ['passed!']] } - app = Rack::Directory.new DOCROOT, FILE_CATCH - - specify "serves directory indices" do - res = Rack::MockRequest.new(Rack::Lint.new(app)). - get("/cgi/") - - res.should.be.ok - res.should =~ // - end - - specify "passes to app if file found" do - res = Rack::MockRequest.new(Rack::Lint.new(app)). - get("/cgi/test") - - res.should.be.ok - res.should =~ /passed!/ - end - - specify "serves uri with URL encoded filenames" do - res = Rack::MockRequest.new(Rack::Lint.new(app)). - get("/%63%67%69/") # "/cgi/test" - - res.should.be.ok - res.should =~ // - - res = Rack::MockRequest.new(Rack::Lint.new(app)). - get("/cgi/%74%65%73%74") # "/cgi/test" - - res.should.be.ok - res.should =~ /passed!/ - end - - specify "does not allow directory traversal" do - res = Rack::MockRequest.new(Rack::Lint.new(app)). - get("/cgi/../test") - - res.should.be.forbidden - - res = Rack::MockRequest.new(Rack::Lint.new(app)). - get("/cgi/%2E%2E/test") - - res.should.be.forbidden - end - - specify "404s if it can't find the file" do - res = Rack::MockRequest.new(Rack::Lint.new(app)). - get("/cgi/blubb") - - res.should.be.not_found - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_etag.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_etag.rb deleted file mode 100644 index 73cd31ac..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_etag.rb +++ /dev/null @@ -1,17 +0,0 @@ -require 'test/spec' -require 'rack/mock' -require 'rack/etag' - -context "Rack::ETag" do - specify "sets ETag if none is set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]] } - response = Rack::ETag.new(app).call({}) - response[1]['ETag'].should.equal "\"65a8e27d8879283831b664bd8b7f0ad4\"" - end - - specify "does not change ETag if it is already set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain', 'ETag' => '"abc"'}, ["Hello, World!"]] } - response = Rack::ETag.new(app).call({}) - response[1]['ETag'].should.equal "\"abc\"" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_fastcgi.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_fastcgi.rb deleted file mode 100644 index 1ae55ace..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_fastcgi.rb +++ /dev/null @@ -1,89 +0,0 @@ -require 'test/spec' -require 'testrequest' - -context "Rack::Handler::FastCGI" do - include TestRequest::Helpers - - setup do - @host = '0.0.0.0' - @port = 9203 - end - - # Keep this first. - specify "startup" do - $pid = fork { - Dir.chdir(File.join(File.dirname(__FILE__), "..", "test", "cgi")) - exec "lighttpd -D -f lighttpd.conf" - } - end - - specify "should respond" do - sleep 1 - lambda { - GET("/test.fcgi") - }.should.not.raise - end - - specify "should be a lighttpd" do - GET("/test.fcgi") - status.should.be 200 - response["SERVER_SOFTWARE"].should =~ /lighttpd/ - response["HTTP_VERSION"].should.equal "HTTP/1.1" - response["SERVER_PROTOCOL"].should.equal "HTTP/1.1" - response["SERVER_PORT"].should.equal @port.to_s - response["SERVER_NAME"].should =~ @host - end - - specify "should have rack headers" do - GET("/test.fcgi") - response["rack.version"].should.equal [1,1] - response["rack.multithread"].should.be false - response["rack.multiprocess"].should.be true - response["rack.run_once"].should.be false - end - - specify "should have CGI headers on GET" do - GET("/test.fcgi") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test.fcgi" - response["REQUEST_PATH"].should.equal "/" - response["PATH_INFO"].should.equal "" - response["QUERY_STRING"].should.equal "" - response["test.postdata"].should.equal "" - - GET("/test.fcgi/foo?quux=1") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test.fcgi" - response["REQUEST_PATH"].should.equal "/" - response["PATH_INFO"].should.equal "/foo" - response["QUERY_STRING"].should.equal "quux=1" - end - - specify "should have CGI headers on POST" do - POST("/test.fcgi", {"rack-form-data" => "23"}, {'X-test-header' => '42'}) - status.should.equal 200 - response["REQUEST_METHOD"].should.equal "POST" - response["SCRIPT_NAME"].should.equal "/test.fcgi" - response["REQUEST_PATH"].should.equal "/" - response["QUERY_STRING"].should.equal "" - response["HTTP_X_TEST_HEADER"].should.equal "42" - response["test.postdata"].should.equal "rack-form-data=23" - end - - specify "should support HTTP auth" do - GET("/test.fcgi", {:user => "ruth", :passwd => "secret"}) - response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ=" - end - - specify "should set status" do - GET("/test.fcgi?secret") - status.should.equal 403 - response["rack.url_scheme"].should.equal "http" - end - - # Keep this last. - specify "shutdown" do - Process.kill 15, $pid - Process.wait($pid).should.equal $pid - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_file.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_file.rb deleted file mode 100644 index 0a2f8ee8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_file.rb +++ /dev/null @@ -1,75 +0,0 @@ -require 'test/spec' - -require 'rack/file' -require 'rack/lint' - -require 'rack/mock' - -context "Rack::File" do - DOCROOT = File.expand_path(File.dirname(__FILE__)) unless defined? DOCROOT - - specify "serves files" do - res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))). - get("/cgi/test") - - res.should.be.ok - res.should =~ /ruby/ - end - - specify "sets Last-Modified header" do - res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))). - get("/cgi/test") - - path = File.join(DOCROOT, "/cgi/test") - - res.should.be.ok - res["Last-Modified"].should.equal File.mtime(path).httpdate - end - - specify "serves files with URL encoded filenames" do - res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))). - get("/cgi/%74%65%73%74") # "/cgi/test" - - res.should.be.ok - res.should =~ /ruby/ - end - - specify "does not allow directory traversal" do - res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))). - get("/cgi/../test") - - res.should.be.forbidden - end - - specify "does not allow directory traversal with encoded periods" do - res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))). - get("/%2E%2E/README") - - res.should.be.forbidden - end - - specify "404s if it can't find the file" do - res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))). - get("/cgi/blubb") - - res.should.be.not_found - end - - specify "detects SystemCallErrors" do - res = Rack::MockRequest.new(Rack::Lint.new(Rack::File.new(DOCROOT))). - get("/cgi") - - res.should.be.not_found - end - - specify "returns bodies that respond to #to_path" do - env = Rack::MockRequest.env_for("/cgi/test") - status, headers, body = Rack::File.new(DOCROOT).call(env) - - path = File.join(DOCROOT, "/cgi/test") - - status.should.equal 200 - body.should.respond_to :to_path - body.to_path.should.equal path - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_handler.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_handler.rb deleted file mode 100644 index fcf19b78..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_handler.rb +++ /dev/null @@ -1,43 +0,0 @@ -require 'test/spec' - -require 'rack/handler' - -class Rack::Handler::Lobster; end -class RockLobster; end - -context "Rack::Handler" do - specify "has registered default handlers" do - Rack::Handler.get('cgi').should.equal Rack::Handler::CGI - Rack::Handler.get('fastcgi').should.equal Rack::Handler::FastCGI - Rack::Handler.get('mongrel').should.equal Rack::Handler::Mongrel - Rack::Handler.get('webrick').should.equal Rack::Handler::WEBrick - end - - specify "handler that doesn't exist should raise a NameError" do - lambda { - Rack::Handler.get('boom') - }.should.raise(NameError) - end - - specify "should get unregistered, but already required, handler by name" do - Rack::Handler.get('Lobster').should.equal Rack::Handler::Lobster - end - - specify "should register custom handler" do - Rack::Handler.register('rock_lobster', 'RockLobster') - Rack::Handler.get('rock_lobster').should.equal RockLobster - end - - specify "should not need registration for properly coded handlers even if not already required" do - begin - $:.push "test/unregistered_handler" - Rack::Handler.get('Unregistered').should.equal Rack::Handler::Unregistered - lambda { - Rack::Handler.get('UnRegistered') - }.should.raise(NameError) - Rack::Handler.get('UnregisteredLongOne').should.equal Rack::Handler::UnregisteredLongOne - ensure - $:.delete "test/unregistered_handler" - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_head.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_head.rb deleted file mode 100644 index 48d3f81f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_head.rb +++ /dev/null @@ -1,30 +0,0 @@ -require 'rack/head' -require 'rack/mock' - -context "Rack::Head" do - def test_response(headers = {}) - app = lambda { |env| [200, {"Content-type" => "test/plain", "Content-length" => "3"}, ["foo"]] } - request = Rack::MockRequest.env_for("/", headers) - response = Rack::Head.new(app).call(request) - - return response - end - - specify "passes GET, POST, PUT, DELETE, OPTIONS, TRACE requests" do - %w[GET POST PUT DELETE OPTIONS TRACE].each do |type| - resp = test_response("REQUEST_METHOD" => type) - - resp[0].should.equal(200) - resp[1].should.equal({"Content-type" => "test/plain", "Content-length" => "3"}) - resp[2].should.equal(["foo"]) - end - end - - specify "removes body from HEAD requests" do - resp = test_response("REQUEST_METHOD" => "HEAD") - - resp[0].should.equal(200) - resp[1].should.equal({"Content-type" => "test/plain", "Content-length" => "3"}) - resp[2].should.equal([]) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_lint.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_lint.rb deleted file mode 100644 index bbf75c17..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_lint.rb +++ /dev/null @@ -1,528 +0,0 @@ -require 'test/spec' -require 'stringio' - -require 'rack/lint' -require 'rack/mock' - -context "Rack::Lint" do - def env(*args) - Rack::MockRequest.env_for("/", *args) - end - - specify "passes valid request" do - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Content-type" => "test/plain", "Content-length" => "3"}, ["foo"]] - }).call(env({})) - }.should.not.raise - end - - specify "notices fatal errors" do - lambda { Rack::Lint.new(nil).call }.should.raise(Rack::Lint::LintError). - message.should.match(/No env given/) - end - - specify "notices environment errors" do - lambda { Rack::Lint.new(nil).call 5 }.should.raise(Rack::Lint::LintError). - message.should.match(/not a Hash/) - - lambda { - e = env - e.delete("REQUEST_METHOD") - Rack::Lint.new(nil).call(e) - }.should.raise(Rack::Lint::LintError). - message.should.match(/missing required key REQUEST_METHOD/) - - lambda { - e = env - e.delete("SERVER_NAME") - Rack::Lint.new(nil).call(e) - }.should.raise(Rack::Lint::LintError). - message.should.match(/missing required key SERVER_NAME/) - - - lambda { - Rack::Lint.new(nil).call(env("HTTP_CONTENT_TYPE" => "text/plain")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/contains HTTP_CONTENT_TYPE/) - - lambda { - Rack::Lint.new(nil).call(env("HTTP_CONTENT_LENGTH" => "42")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/contains HTTP_CONTENT_LENGTH/) - - lambda { - Rack::Lint.new(nil).call(env("FOO" => Object.new)) - }.should.raise(Rack::Lint::LintError). - message.should.match(/non-string value/) - - lambda { - Rack::Lint.new(nil).call(env("rack.version" => "0.2")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/must be an Array/) - - lambda { - Rack::Lint.new(nil).call(env("rack.url_scheme" => "gopher")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/url_scheme unknown/) - - lambda { - Rack::Lint.new(nil).call(env("rack.session" => [])) - }.should.raise(Rack::Lint::LintError). - message.should.equal("session [] must respond to store and []=") - - lambda { - Rack::Lint.new(nil).call(env("rack.logger" => [])) - }.should.raise(Rack::Lint::LintError). - message.should.equal("logger [] must respond to info") - - lambda { - Rack::Lint.new(nil).call(env("REQUEST_METHOD" => "FUCKUP?")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/REQUEST_METHOD/) - - lambda { - Rack::Lint.new(nil).call(env("SCRIPT_NAME" => "howdy")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/must start with/) - - lambda { - Rack::Lint.new(nil).call(env("PATH_INFO" => "../foo")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/must start with/) - - lambda { - Rack::Lint.new(nil).call(env("CONTENT_LENGTH" => "xcii")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/Invalid CONTENT_LENGTH/) - - lambda { - e = env - e.delete("PATH_INFO") - e.delete("SCRIPT_NAME") - Rack::Lint.new(nil).call(e) - }.should.raise(Rack::Lint::LintError). - message.should.match(/One of .* must be set/) - - lambda { - Rack::Lint.new(nil).call(env("SCRIPT_NAME" => "/")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/cannot be .* make it ''/) - end - - specify "notices input errors" do - lambda { - Rack::Lint.new(nil).call(env("rack.input" => "")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/does not respond to #gets/) - - lambda { - input = Object.new - def input.binmode? - false - end - Rack::Lint.new(nil).call(env("rack.input" => input)) - }.should.raise(Rack::Lint::LintError). - message.should.match(/is not opened in binary mode/) - - lambda { - input = Object.new - def input.external_encoding - result = Object.new - def result.name - "US-ASCII" - end - result - end - Rack::Lint.new(nil).call(env("rack.input" => input)) - }.should.raise(Rack::Lint::LintError). - message.should.match(/does not have ASCII-8BIT as its external encoding/) - end - - specify "notices error errors" do - lambda { - Rack::Lint.new(nil).call(env("rack.errors" => "")) - }.should.raise(Rack::Lint::LintError). - message.should.match(/does not respond to #puts/) - end - - specify "notices status errors" do - lambda { - Rack::Lint.new(lambda { |env| - ["cc", {}, ""] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/must be >=100 seen as integer/) - - lambda { - Rack::Lint.new(lambda { |env| - [42, {}, ""] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/must be >=100 seen as integer/) - end - - specify "notices header errors" do - lambda { - Rack::Lint.new(lambda { |env| - [200, Object.new, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.equal("headers object should respond to #each, but doesn't (got Object as headers)") - - lambda { - Rack::Lint.new(lambda { |env| - [200, {true=>false}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.equal("header key must be a string, was TrueClass") - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Status" => "404"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/must not contain Status/) - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Content-Type:" => "text/plain"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/must not contain :/) - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Content-" => "text/plain"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/must not end/) - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"..%%quark%%.." => "text/plain"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.equal("invalid header name: ..%%quark%%..") - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Foo" => Object.new}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.equal("a header value must be a String, but the value of 'Foo' is a Object") - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Foo" => [1, 2, 3]}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.equal("a header value must be a String, but the value of 'Foo' is a Array") - - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Foo-Bar" => "text\000plain"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/invalid header/) - - # line ends (010) should be allowed in header values. - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Foo-Bar" => "one\ntwo\nthree", "Content-Length" => "0", "Content-Type" => "text/plain" }, []] - }).call(env({})) - }.should.not.raise(Rack::Lint::LintError) - end - - specify "notices content-type errors" do - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/No Content-Type/) - - [100, 101, 204, 304].each do |status| - lambda { - Rack::Lint.new(lambda { |env| - [status, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/Content-Type header found/) - end - end - - specify "notices content-length errors" do - [100, 101, 204, 304].each do |status| - lambda { - Rack::Lint.new(lambda { |env| - [status, {"Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/Content-Length header found/) - end - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Content-type" => "text/plain", "Content-Length" => "1"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/Content-Length header was 1, but should be 0/) - end - - specify "notices body errors" do - lambda { - status, header, body = Rack::Lint.new(lambda { |env| - [200, {"Content-type" => "text/plain","Content-length" => "3"}, [1,2,3]] - }).call(env({})) - body.each { |part| } - }.should.raise(Rack::Lint::LintError). - message.should.match(/yielded non-string/) - end - - specify "notices input handling errors" do - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].gets("\r\n") - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/gets called with arguments/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(1, 2, 3) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/read called with too many arguments/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read("foo") - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/read called with non-integer and non-nil length/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(-1) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/read called with a negative length/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(nil, nil) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/read called with non-String buffer/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(nil, 1) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/read called with non-String buffer/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].rewind(0) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/rewind called with arguments/) - - weirdio = Object.new - class << weirdio - def gets - 42 - end - - def read - 23 - end - - def each - yield 23 - yield 42 - end - - def rewind - raise Errno::ESPIPE, "Errno::ESPIPE" - end - end - - eof_weirdio = Object.new - class << eof_weirdio - def gets - nil - end - - def read(*args) - nil - end - - def each - end - - def rewind - end - end - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].gets - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env("rack.input" => weirdio)) - }.should.raise(Rack::Lint::LintError). - message.should.match(/gets didn't return a String/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].each { |x| } - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env("rack.input" => weirdio)) - }.should.raise(Rack::Lint::LintError). - message.should.match(/each didn't yield a String/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env("rack.input" => weirdio)) - }.should.raise(Rack::Lint::LintError). - message.should.match(/read didn't return nil or a String/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env("rack.input" => eof_weirdio)) - }.should.raise(Rack::Lint::LintError). - message.should.match(/read\(nil\) returned nil on EOF/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].rewind - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env("rack.input" => weirdio)) - }.should.raise(Rack::Lint::LintError). - message.should.match(/rewind raised Errno::ESPIPE/) - - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].close - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/close must not be called/) - end - - specify "notices error handling errors" do - lambda { - Rack::Lint.new(lambda { |env| - env["rack.errors"].write(42) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/write not called with a String/) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.errors"].close - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/close must not be called/) - end - - specify "notices HEAD errors" do - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Content-type" => "test/plain", "Content-length" => "3"}, []] - }).call(env({"REQUEST_METHOD" => "HEAD"})) - }.should.not.raise - - lambda { - Rack::Lint.new(lambda { |env| - [200, {"Content-type" => "test/plain", "Content-length" => "3"}, ["foo"]] - }).call(env({"REQUEST_METHOD" => "HEAD"})) - }.should.raise(Rack::Lint::LintError). - message.should.match(/body was given for HEAD/) - end - - specify "passes valid read calls" do - hello_str = "hello world" - hello_str.force_encoding("ASCII-8BIT") if hello_str.respond_to? :force_encoding - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({"rack.input" => StringIO.new(hello_str)})) - }.should.not.raise(Rack::Lint::LintError) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(0) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({"rack.input" => StringIO.new(hello_str)})) - }.should.not.raise(Rack::Lint::LintError) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(1) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({"rack.input" => StringIO.new(hello_str)})) - }.should.not.raise(Rack::Lint::LintError) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(nil) - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({"rack.input" => StringIO.new(hello_str)})) - }.should.not.raise(Rack::Lint::LintError) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(nil, '') - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({"rack.input" => StringIO.new(hello_str)})) - }.should.not.raise(Rack::Lint::LintError) - - lambda { - Rack::Lint.new(lambda { |env| - env["rack.input"].read(1, '') - [201, {"Content-type" => "text/plain", "Content-length" => "0"}, []] - }).call(env({"rack.input" => StringIO.new(hello_str)})) - }.should.not.raise(Rack::Lint::LintError) - end -end - -context "Rack::Lint::InputWrapper" do - specify "delegates :size to underlying IO object" do - class IOMock - def size - 101 - end - end - - wrapper = Rack::Lint::InputWrapper.new(IOMock.new) - wrapper.size.should == 101 - end - - specify "delegates :rewind to underlying IO object" do - io = StringIO.new("123") - wrapper = Rack::Lint::InputWrapper.new(io) - wrapper.read.should.equal "123" - wrapper.read.should.equal "" - wrapper.rewind - wrapper.read.should.equal "123" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_lobster.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_lobster.rb deleted file mode 100644 index 7be267a2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_lobster.rb +++ /dev/null @@ -1,45 +0,0 @@ -require 'test/spec' - -require 'rack/lobster' -require 'rack/mock' - -context "Rack::Lobster::LambdaLobster" do - specify "should be a single lambda" do - Rack::Lobster::LambdaLobster.should.be.kind_of Proc - end - - specify "should look like a lobster" do - res = Rack::MockRequest.new(Rack::Lobster::LambdaLobster).get("/") - res.should.be.ok - res.body.should.include "(,(,,(,,,(" - res.body.should.include "?flip" - end - - specify "should be flippable" do - res = Rack::MockRequest.new(Rack::Lobster::LambdaLobster).get("/?flip") - res.should.be.ok - res.body.should.include "(,,,(,,(,(" - end -end - -context "Rack::Lobster" do - specify "should look like a lobster" do - res = Rack::MockRequest.new(Rack::Lobster.new).get("/") - res.should.be.ok - res.body.should.include "(,(,,(,,,(" - res.body.should.include "?flip" - res.body.should.include "crash" - end - - specify "should be flippable" do - res = Rack::MockRequest.new(Rack::Lobster.new).get("/?flip=left") - res.should.be.ok - res.body.should.include "(,,,(,,(,(" - end - - specify "should provide crashing for testing purposes" do - lambda { - Rack::MockRequest.new(Rack::Lobster.new).get("/?flip=crash") - }.should.raise - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_lock.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_lock.rb deleted file mode 100644 index 18af2b23..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_lock.rb +++ /dev/null @@ -1,38 +0,0 @@ -require 'test/spec' - -require 'rack/mock' -require 'rack/lock' - -context "Rack::Lock" do - class Lock - attr_reader :synchronized - - def initialize - @synchronized = false - end - - def synchronize - @synchronized = true - yield - end - end - - specify "should call synchronize on lock" do - lock = Lock.new - env = Rack::MockRequest.env_for("/") - app = Rack::Lock.new(lambda { |env| }, lock) - lock.synchronized.should.equal false - app.call(env) - lock.synchronized.should.equal true - end - - specify "should set multithread flag to false" do - app = Rack::Lock.new(lambda { |env| env['rack.multithread'] }) - app.call(Rack::MockRequest.env_for("/")).should.equal false - end - - specify "should reset original multithread flag when exiting lock" do - app = Rack::Lock.new(lambda { |env| env }) - app.call(Rack::MockRequest.env_for("/"))['rack.multithread'].should.equal true - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_logger.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_logger.rb deleted file mode 100644 index d55b9c77..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_logger.rb +++ /dev/null @@ -1,21 +0,0 @@ -require 'rack/logger' -require 'rack/lint' -require 'stringio' - -context "Rack::Logger" do - specify "logs to rack.errors" do - app = lambda { |env| - log = env['rack.logger'] - log.debug("Created logger") - log.info("Program started") - log.warn("Nothing to do!") - - [200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]] - } - - errors = StringIO.new - Rack::Logger.new(app).call({'rack.errors' => errors}) - errors.string.should.match "INFO -- : Program started" - errors.string.should.match "WARN -- : Nothing to do" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_methodoverride.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_methodoverride.rb deleted file mode 100644 index 57452394..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_methodoverride.rb +++ /dev/null @@ -1,60 +0,0 @@ -require 'test/spec' - -require 'rack/mock' -require 'rack/methodoverride' -require 'stringio' - -context "Rack::MethodOverride" do - specify "should not affect GET requests" do - env = Rack::MockRequest.env_for("/?_method=delete", :method => "GET") - app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) }) - req = app.call(env) - - req.env["REQUEST_METHOD"].should.equal "GET" - end - - specify "_method parameter should modify REQUEST_METHOD for POST requests" do - env = Rack::MockRequest.env_for("/", :method => "POST", :input => "_method=put") - app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) }) - req = app.call(env) - - req.env["REQUEST_METHOD"].should.equal "PUT" - end - - specify "X-HTTP-Method-Override header should modify REQUEST_METHOD for POST requests" do - env = Rack::MockRequest.env_for("/", - :method => "POST", - "HTTP_X_HTTP_METHOD_OVERRIDE" => "PUT" - ) - app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) }) - req = app.call(env) - - req.env["REQUEST_METHOD"].should.equal "PUT" - end - - specify "should not modify REQUEST_METHOD if the method is unknown" do - env = Rack::MockRequest.env_for("/", :method => "POST", :input => "_method=foo") - app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) }) - req = app.call(env) - - req.env["REQUEST_METHOD"].should.equal "POST" - end - - specify "should not modify REQUEST_METHOD when _method is nil" do - env = Rack::MockRequest.env_for("/", :method => "POST", :input => "foo=bar") - app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) }) - req = app.call(env) - - req.env["REQUEST_METHOD"].should.equal "POST" - end - - specify "should store the original REQUEST_METHOD prior to overriding" do - env = Rack::MockRequest.env_for("/", - :method => "POST", - :input => "_method=options") - app = Rack::MethodOverride.new(lambda { |env| Rack::Request.new(env) }) - req = app.call(env) - - req.env["rack.methodoverride.original_method"].should.equal "POST" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_mock.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_mock.rb deleted file mode 100644 index a03bedc2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_mock.rb +++ /dev/null @@ -1,243 +0,0 @@ -require 'yaml' -require 'rack/mock' -require 'rack/request' -require 'rack/response' - -app = lambda { |env| - req = Rack::Request.new(env) - - env["mock.postdata"] = env["rack.input"].read - if req.GET["error"] - env["rack.errors"].puts req.GET["error"] - env["rack.errors"].flush - end - - Rack::Response.new(env.to_yaml, - req.GET["status"] || 200, - "Content-Type" => "text/yaml").finish -} - -context "Rack::MockRequest" do - specify "should return a MockResponse" do - res = Rack::MockRequest.new(app).get("") - res.should.be.kind_of Rack::MockResponse - end - - specify "should be able to only return the environment" do - env = Rack::MockRequest.env_for("") - env.should.be.kind_of Hash - env.should.include "rack.version" - end - - specify "should provide sensible defaults" do - res = Rack::MockRequest.new(app).request - - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "GET" - env["SERVER_NAME"].should.equal "example.org" - env["SERVER_PORT"].should.equal "80" - env["QUERY_STRING"].should.equal "" - env["PATH_INFO"].should.equal "/" - env["SCRIPT_NAME"].should.equal "" - env["rack.url_scheme"].should.equal "http" - env["mock.postdata"].should.be.empty - end - - specify "should allow GET/POST/PUT/DELETE" do - res = Rack::MockRequest.new(app).get("", :input => "foo") - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "GET" - - res = Rack::MockRequest.new(app).post("", :input => "foo") - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "POST" - - res = Rack::MockRequest.new(app).put("", :input => "foo") - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "PUT" - - res = Rack::MockRequest.new(app).delete("", :input => "foo") - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "DELETE" - - Rack::MockRequest.env_for("/", :method => "OPTIONS")["REQUEST_METHOD"]. - should.equal "OPTIONS" - end - - specify "should set content length" do - env = Rack::MockRequest.env_for("/", :input => "foo") - env["CONTENT_LENGTH"].should.equal "3" - end - - specify "should allow posting" do - res = Rack::MockRequest.new(app).get("", :input => "foo") - env = YAML.load(res.body) - env["mock.postdata"].should.equal "foo" - - res = Rack::MockRequest.new(app).post("", :input => StringIO.new("foo")) - env = YAML.load(res.body) - env["mock.postdata"].should.equal "foo" - end - - specify "should use all parts of an URL" do - res = Rack::MockRequest.new(app). - get("https://bla.example.org:9292/meh/foo?bar") - res.should.be.kind_of Rack::MockResponse - - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "GET" - env["SERVER_NAME"].should.equal "bla.example.org" - env["SERVER_PORT"].should.equal "9292" - env["QUERY_STRING"].should.equal "bar" - env["PATH_INFO"].should.equal "/meh/foo" - env["rack.url_scheme"].should.equal "https" - end - - specify "should set SSL port and HTTP flag on when using https" do - res = Rack::MockRequest.new(app). - get("https://example.org/foo") - res.should.be.kind_of Rack::MockResponse - - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "GET" - env["SERVER_NAME"].should.equal "example.org" - env["SERVER_PORT"].should.equal "443" - env["QUERY_STRING"].should.equal "" - env["PATH_INFO"].should.equal "/foo" - env["rack.url_scheme"].should.equal "https" - env["HTTPS"].should.equal "on" - end - - specify "should prepend slash to uri path" do - res = Rack::MockRequest.new(app). - get("foo") - res.should.be.kind_of Rack::MockResponse - - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "GET" - env["SERVER_NAME"].should.equal "example.org" - env["SERVER_PORT"].should.equal "80" - env["QUERY_STRING"].should.equal "" - env["PATH_INFO"].should.equal "/foo" - env["rack.url_scheme"].should.equal "http" - end - - specify "should properly convert method name to an uppercase string" do - res = Rack::MockRequest.new(app).request(:get) - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "GET" - end - - specify "should accept params and build query string for GET requests" do - res = Rack::MockRequest.new(app).get("/foo?baz=2", :params => {:foo => {:bar => "1"}}) - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "GET" - env["QUERY_STRING"].should.match "baz=2" - env["QUERY_STRING"].should.match "foo[bar]=1" - env["PATH_INFO"].should.equal "/foo" - env["mock.postdata"].should.equal "" - end - - specify "should accept raw input in params for GET requests" do - res = Rack::MockRequest.new(app).get("/foo?baz=2", :params => "foo[bar]=1") - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "GET" - env["QUERY_STRING"].should.match "baz=2" - env["QUERY_STRING"].should.match "foo[bar]=1" - env["PATH_INFO"].should.equal "/foo" - env["mock.postdata"].should.equal "" - end - - specify "should accept params and build url encoded params for POST requests" do - res = Rack::MockRequest.new(app).post("/foo", :params => {:foo => {:bar => "1"}}) - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "POST" - env["QUERY_STRING"].should.equal "" - env["PATH_INFO"].should.equal "/foo" - env["CONTENT_TYPE"].should.equal "application/x-www-form-urlencoded" - env["mock.postdata"].should.equal "foo[bar]=1" - end - - specify "should accept raw input in params for POST requests" do - res = Rack::MockRequest.new(app).post("/foo", :params => "foo[bar]=1") - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "POST" - env["QUERY_STRING"].should.equal "" - env["PATH_INFO"].should.equal "/foo" - env["CONTENT_TYPE"].should.equal "application/x-www-form-urlencoded" - env["mock.postdata"].should.equal "foo[bar]=1" - end - - specify "should accept params and build multipart encoded params for POST requests" do - files = Rack::Utils::Multipart::UploadedFile.new(File.join(File.dirname(__FILE__), "multipart", "file1.txt")) - res = Rack::MockRequest.new(app).post("/foo", :params => { "submit-name" => "Larry", "files" => files }) - env = YAML.load(res.body) - env["REQUEST_METHOD"].should.equal "POST" - env["QUERY_STRING"].should.equal "" - env["PATH_INFO"].should.equal "/foo" - env["CONTENT_TYPE"].should.equal "multipart/form-data; boundary=AaB03x" - env["mock.postdata"].length.should.equal 206 - end - - specify "should behave valid according to the Rack spec" do - lambda { - res = Rack::MockRequest.new(app). - get("https://bla.example.org:9292/meh/foo?bar", :lint => true) - }.should.not.raise(Rack::Lint::LintError) - end -end - -context "Rack::MockResponse" do - specify "should provide access to the HTTP status" do - res = Rack::MockRequest.new(app).get("") - res.should.be.successful - res.should.be.ok - - res = Rack::MockRequest.new(app).get("/?status=404") - res.should.not.be.successful - res.should.be.client_error - res.should.be.not_found - - res = Rack::MockRequest.new(app).get("/?status=501") - res.should.not.be.successful - res.should.be.server_error - - res = Rack::MockRequest.new(app).get("/?status=307") - res.should.be.redirect - - res = Rack::MockRequest.new(app).get("/?status=201", :lint => true) - res.should.be.empty - end - - specify "should provide access to the HTTP headers" do - res = Rack::MockRequest.new(app).get("") - res.should.include "Content-Type" - res.headers["Content-Type"].should.equal "text/yaml" - res.original_headers["Content-Type"].should.equal "text/yaml" - res["Content-Type"].should.equal "text/yaml" - res.content_type.should.equal "text/yaml" - res.content_length.should.be 414 # needs change often. - res.location.should.be.nil - end - - specify "should provide access to the HTTP body" do - res = Rack::MockRequest.new(app).get("") - res.body.should =~ /rack/ - res.should =~ /rack/ - res.should.match(/rack/) - res.should.satisfy { |r| r.match(/rack/) } - end - - specify "should provide access to the Rack errors" do - res = Rack::MockRequest.new(app).get("/?error=foo", :lint => true) - res.should.be.ok - res.errors.should.not.be.empty - res.errors.should.include "foo" - end - - specify "should optionally make Rack errors fatal" do - lambda { - Rack::MockRequest.new(app).get("/?error=foo", :fatal => true) - }.should.raise(Rack::MockRequest::FatalWarning) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_mongrel.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_mongrel.rb deleted file mode 100644 index 4b386891..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_mongrel.rb +++ /dev/null @@ -1,189 +0,0 @@ -require 'test/spec' - -begin -require 'rack/handler/mongrel' -require 'rack/urlmap' -require 'rack/lint' -require 'testrequest' -require 'timeout' - -Thread.abort_on_exception = true -$tcp_defer_accept_opts = nil -$tcp_cork_opts = nil - -context "Rack::Handler::Mongrel" do - include TestRequest::Helpers - - setup do - server = Mongrel::HttpServer.new(@host='0.0.0.0', @port=9201) - server.register('/test', - Rack::Handler::Mongrel.new(Rack::Lint.new(TestRequest.new))) - server.register('/stream', - Rack::Handler::Mongrel.new(Rack::Lint.new(StreamingRequest))) - @acc = server.run - end - - specify "should respond" do - lambda { - GET("/test") - }.should.not.raise - end - - specify "should be a Mongrel" do - GET("/test") - status.should.be 200 - response["SERVER_SOFTWARE"].should =~ /Mongrel/ - response["HTTP_VERSION"].should.equal "HTTP/1.1" - response["SERVER_PROTOCOL"].should.equal "HTTP/1.1" - response["SERVER_PORT"].should.equal "9201" - response["SERVER_NAME"].should.equal "0.0.0.0" - end - - specify "should have rack headers" do - GET("/test") - response["rack.version"].should.equal [1,1] - response["rack.multithread"].should.be true - response["rack.multiprocess"].should.be false - response["rack.run_once"].should.be false - end - - specify "should have CGI headers on GET" do - GET("/test") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/test" - response["PATH_INFO"].should.be.equal "" - response["QUERY_STRING"].should.equal "" - response["test.postdata"].should.equal "" - - GET("/test/foo?quux=1") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/test/foo" - response["PATH_INFO"].should.equal "/foo" - response["QUERY_STRING"].should.equal "quux=1" - end - - specify "should have CGI headers on POST" do - POST("/test", {"rack-form-data" => "23"}, {'X-test-header' => '42'}) - status.should.equal 200 - response["REQUEST_METHOD"].should.equal "POST" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/test" - response["QUERY_STRING"].should.equal "" - response["HTTP_X_TEST_HEADER"].should.equal "42" - response["test.postdata"].should.equal "rack-form-data=23" - end - - specify "should support HTTP auth" do - GET("/test", {:user => "ruth", :passwd => "secret"}) - response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ=" - end - - specify "should set status" do - GET("/test?secret") - status.should.equal 403 - response["rack.url_scheme"].should.equal "http" - end - - specify "should provide a .run" do - block_ran = false - Thread.new { - Rack::Handler::Mongrel.run(lambda {}, {:Port => 9211}) { |server| - server.should.be.kind_of Mongrel::HttpServer - block_ran = true - } - } - sleep 1 - block_ran.should.be true - end - - specify "should provide a .run that maps a hash" do - block_ran = false - Thread.new { - map = {'/'=>lambda{},'/foo'=>lambda{}} - Rack::Handler::Mongrel.run(map, :map => true, :Port => 9221) { |server| - server.should.be.kind_of Mongrel::HttpServer - server.classifier.uris.size.should.be 2 - server.classifier.uris.should.not.include '/arf' - server.classifier.uris.should.include '/' - server.classifier.uris.should.include '/foo' - block_ran = true - } - } - sleep 1 - block_ran.should.be true - end - - specify "should provide a .run that maps a urlmap" do - block_ran = false - Thread.new { - map = Rack::URLMap.new({'/'=>lambda{},'/bar'=>lambda{}}) - Rack::Handler::Mongrel.run(map, {:map => true, :Port => 9231}) { |server| - server.should.be.kind_of Mongrel::HttpServer - server.classifier.uris.size.should.be 2 - server.classifier.uris.should.not.include '/arf' - server.classifier.uris.should.include '/' - server.classifier.uris.should.include '/bar' - block_ran = true - } - } - sleep 1 - block_ran.should.be true - end - - specify "should provide a .run that maps a urlmap restricting by host" do - block_ran = false - Thread.new { - map = Rack::URLMap.new({ - '/' => lambda{}, - '/foo' => lambda{}, - '/bar' => lambda{}, - 'http://localhost/' => lambda{}, - 'http://localhost/bar' => lambda{}, - 'http://falsehost/arf' => lambda{}, - 'http://falsehost/qux' => lambda{} - }) - opt = {:map => true, :Port => 9241, :Host => 'localhost'} - Rack::Handler::Mongrel.run(map, opt) { |server| - server.should.be.kind_of Mongrel::HttpServer - server.classifier.uris.should.include '/' - server.classifier.handler_map['/'].size.should.be 2 - server.classifier.uris.should.include '/foo' - server.classifier.handler_map['/foo'].size.should.be 1 - server.classifier.uris.should.include '/bar' - server.classifier.handler_map['/bar'].size.should.be 2 - server.classifier.uris.should.not.include '/qux' - server.classifier.uris.should.not.include '/arf' - server.classifier.uris.size.should.be 3 - block_ran = true - } - } - sleep 1 - block_ran.should.be true - end - - specify "should stream #each part of the response" do - body = '' - begin - Timeout.timeout(1) do - Net::HTTP.start(@host, @port) do |http| - get = Net::HTTP::Get.new('/stream') - http.request(get) do |response| - response.read_body { |part| body << part } - end - end - end - rescue Timeout::Error - end - body.should.not.be.empty - end - - teardown do - @acc.raise Mongrel::StopServer - end -end - -rescue LoadError - $stderr.puts "Skipping Rack::Handler::Mongrel tests (Mongrel is required). `gem install mongrel` and try again." -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_nulllogger.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_nulllogger.rb deleted file mode 100644 index b3c2bc9c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_nulllogger.rb +++ /dev/null @@ -1,13 +0,0 @@ -require 'rack/nulllogger' -require 'rack/lint' -require 'rack/mock' - -context "Rack::NullLogger" do - specify "acks as a nop logger" do - app = lambda { |env| - env['rack.logger'].warn "b00m" - [200, {'Content-Type' => 'text/plain'}, ["Hello, World!"]] - } - Rack::NullLogger.new(app).call({}) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_recursive.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_recursive.rb deleted file mode 100644 index afc1a0d9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_recursive.rb +++ /dev/null @@ -1,77 +0,0 @@ -require 'test/spec' - -require 'rack/recursive' -require 'rack/urlmap' -require 'rack/response' -require 'rack/mock' - -context "Rack::Recursive" do - setup do - - @app1 = lambda { |env| - res = Rack::Response.new - res["X-Path-Info"] = env["PATH_INFO"] - res["X-Query-String"] = env["QUERY_STRING"] - res.finish do |res| - res.write "App1" - end - } - - @app2 = lambda { |env| - Rack::Response.new.finish do |res| - res.write "App2" - _, _, body = env['rack.recursive.include'].call(env, "/app1") - body.each { |b| - res.write b - } - end - } - - @app3 = lambda { |env| - raise Rack::ForwardRequest.new("/app1") - } - - @app4 = lambda { |env| - raise Rack::ForwardRequest.new("http://example.org/app1/quux?meh") - } - - end - - specify "should allow for subrequests" do - res = Rack::MockRequest.new(Rack::Recursive.new( - Rack::URLMap.new("/app1" => @app1, - "/app2" => @app2))). - get("/app2") - - res.should.be.ok - res.body.should.equal "App2App1" - end - - specify "should raise error on requests not below the app" do - app = Rack::URLMap.new("/app1" => @app1, - "/app" => Rack::Recursive.new( - Rack::URLMap.new("/1" => @app1, - "/2" => @app2))) - - lambda { - Rack::MockRequest.new(app).get("/app/2") - }.should.raise(ArgumentError). - message.should =~ /can only include below/ - end - - specify "should support forwarding" do - app = Rack::Recursive.new(Rack::URLMap.new("/app1" => @app1, - "/app3" => @app3, - "/app4" => @app4)) - - res = Rack::MockRequest.new(app).get("/app3") - res.should.be.ok - res.body.should.equal "App1" - - res = Rack::MockRequest.new(app).get("/app4") - res.should.be.ok - res.body.should.equal "App1" - res["X-Path-Info"].should.equal "/quux" - res["X-Query-String"].should.equal "meh" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_request.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_request.rb deleted file mode 100644 index fcdeb484..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_request.rb +++ /dev/null @@ -1,545 +0,0 @@ -require 'test/spec' -require 'stringio' - -require 'rack/request' -require 'rack/mock' - -context "Rack::Request" do - specify "wraps the rack variables" do - req = Rack::Request.new(Rack::MockRequest.env_for("http://example.com:8080/")) - - req.body.should.respond_to? :gets - req.scheme.should.equal "http" - req.request_method.should.equal "GET" - - req.should.be.get - req.should.not.be.post - req.should.not.be.put - req.should.not.be.delete - req.should.not.be.head - - req.script_name.should.equal "" - req.path_info.should.equal "/" - req.query_string.should.equal "" - - req.host.should.equal "example.com" - req.port.should.equal 8080 - - req.content_length.should.equal "0" - req.content_type.should.be.nil - end - - specify "can figure out the correct host" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", "HTTP_HOST" => "www2.example.org") - req.host.should.equal "www2.example.org" - - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", "SERVER_NAME" => "example.org", "SERVER_PORT" => "9292") - req.host.should.equal "example.org" - - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", "HTTP_HOST" => "localhost:81", "HTTP_X_FORWARDED_HOST" => "example.org:9292") - req.host.should.equal "example.org" - - env = Rack::MockRequest.env_for("/", "SERVER_ADDR" => "192.168.1.1", "SERVER_PORT" => "9292") - env.delete("SERVER_NAME") - req = Rack::Request.new(env) - req.host.should.equal "192.168.1.1" - - env = Rack::MockRequest.env_for("/") - env.delete("SERVER_NAME") - req = Rack::Request.new(env) - req.host.should.equal "" - end - - specify "can parse the query string" do - req = Rack::Request.new(Rack::MockRequest.env_for("/?foo=bar&quux=bla")) - req.query_string.should.equal "foo=bar&quux=bla" - req.GET.should.equal "foo" => "bar", "quux" => "bla" - req.POST.should.be.empty - req.params.should.equal "foo" => "bar", "quux" => "bla" - end - - specify "raises if rack.input is missing" do - req = Rack::Request.new({}) - lambda { req.POST }.should.raise(RuntimeError) - end - - specify "can parse POST data when method is POST and no Content-Type given" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/?foo=quux", - "REQUEST_METHOD" => 'POST', - :input => "foo=bar&quux=bla") - req.content_type.should.be.nil - req.media_type.should.be.nil - req.query_string.should.equal "foo=quux" - req.GET.should.equal "foo" => "quux" - req.POST.should.equal "foo" => "bar", "quux" => "bla" - req.params.should.equal "foo" => "bar", "quux" => "bla" - end - - specify "can parse POST data with explicit content type regardless of method" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", - "CONTENT_TYPE" => 'application/x-www-form-urlencoded;foo=bar', - :input => "foo=bar&quux=bla") - req.content_type.should.equal 'application/x-www-form-urlencoded;foo=bar' - req.media_type.should.equal 'application/x-www-form-urlencoded' - req.media_type_params['foo'].should.equal 'bar' - req.POST.should.equal "foo" => "bar", "quux" => "bla" - req.params.should.equal "foo" => "bar", "quux" => "bla" - end - - specify "does not parse POST data when media type is not form-data" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/?foo=quux", - "REQUEST_METHOD" => 'POST', - "CONTENT_TYPE" => 'text/plain;charset=utf-8', - :input => "foo=bar&quux=bla") - req.content_type.should.equal 'text/plain;charset=utf-8' - req.media_type.should.equal 'text/plain' - req.media_type_params['charset'].should.equal 'utf-8' - req.POST.should.be.empty - req.params.should.equal "foo" => "quux" - req.body.read.should.equal "foo=bar&quux=bla" - end - - specify "can parse POST data on PUT when media type is form-data" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/?foo=quux", - "REQUEST_METHOD" => 'PUT', - "CONTENT_TYPE" => 'application/x-www-form-urlencoded', - :input => "foo=bar&quux=bla") - req.POST.should.equal "foo" => "bar", "quux" => "bla" - req.body.read.should.equal "foo=bar&quux=bla" - end - - specify "rewinds input after parsing POST data" do - input = StringIO.new("foo=bar&quux=bla") - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", - "CONTENT_TYPE" => 'application/x-www-form-urlencoded;foo=bar', - :input => input) - req.params.should.equal "foo" => "bar", "quux" => "bla" - input.read.should.equal "foo=bar&quux=bla" - end - - specify "cleans up Safari's ajax POST body" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", - 'REQUEST_METHOD' => 'POST', :input => "foo=bar&quux=bla\0") - req.POST.should.equal "foo" => "bar", "quux" => "bla" - end - - specify "can get value by key from params with #[]" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("?foo=quux") - req['foo'].should.equal 'quux' - req[:foo].should.equal 'quux' - end - - specify "can set value to key on params with #[]=" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("?foo=duh") - req['foo'].should.equal 'duh' - req[:foo].should.equal 'duh' - req.params.should.equal 'foo' => 'duh' - - req['foo'] = 'bar' - req.params.should.equal 'foo' => 'bar' - req['foo'].should.equal 'bar' - req[:foo].should.equal 'bar' - - req[:foo] = 'jaz' - req.params.should.equal 'foo' => 'jaz' - req['foo'].should.equal 'jaz' - req[:foo].should.equal 'jaz' - end - - specify "values_at answers values by keys in order given" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("?foo=baz&wun=der&bar=ful") - req.values_at('foo').should.equal ['baz'] - req.values_at('foo', 'wun').should.equal ['baz', 'der'] - req.values_at('bar', 'foo', 'wun').should.equal ['ful', 'baz', 'der'] - end - - specify "referrer should be extracted correct" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", "HTTP_REFERER" => "/some/path") - req.referer.should.equal "/some/path" - - req = Rack::Request.new \ - Rack::MockRequest.env_for("/") - req.referer.should.equal "/" - end - - specify "user agent should be extracted correct" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", "HTTP_USER_AGENT" => "Mozilla/4.0 (compatible)") - req.user_agent.should.equal "Mozilla/4.0 (compatible)" - - req = Rack::Request.new \ - Rack::MockRequest.env_for("/") - req.user_agent.should.equal nil - end - - specify "can cache, but invalidates the cache" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/?foo=quux", - "CONTENT_TYPE" => "application/x-www-form-urlencoded", - :input => "foo=bar&quux=bla") - req.GET.should.equal "foo" => "quux" - req.GET.should.equal "foo" => "quux" - req.env["QUERY_STRING"] = "bla=foo" - req.GET.should.equal "bla" => "foo" - req.GET.should.equal "bla" => "foo" - - req.POST.should.equal "foo" => "bar", "quux" => "bla" - req.POST.should.equal "foo" => "bar", "quux" => "bla" - req.env["rack.input"] = StringIO.new("foo=bla&quux=bar") - req.POST.should.equal "foo" => "bla", "quux" => "bar" - req.POST.should.equal "foo" => "bla", "quux" => "bar" - end - - specify "can figure out if called via XHR" do - req = Rack::Request.new(Rack::MockRequest.env_for("")) - req.should.not.be.xhr - - req = Rack::Request.new \ - Rack::MockRequest.env_for("", "HTTP_X_REQUESTED_WITH" => "XMLHttpRequest") - req.should.be.xhr - end - - specify "can parse cookies" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("", "HTTP_COOKIE" => "foo=bar;quux=h&m") - req.cookies.should.equal "foo" => "bar", "quux" => "h&m" - req.cookies.should.equal "foo" => "bar", "quux" => "h&m" - req.env.delete("HTTP_COOKIE") - req.cookies.should.equal({}) - end - - specify "parses cookies according to RFC 2109" do - req = Rack::Request.new \ - Rack::MockRequest.env_for('', 'HTTP_COOKIE' => 'foo=bar;foo=car') - req.cookies.should.equal 'foo' => 'bar' - end - - specify "provides setters" do - req = Rack::Request.new(e=Rack::MockRequest.env_for("")) - req.script_name.should.equal "" - req.script_name = "/foo" - req.script_name.should.equal "/foo" - e["SCRIPT_NAME"].should.equal "/foo" - - req.path_info.should.equal "/" - req.path_info = "/foo" - req.path_info.should.equal "/foo" - e["PATH_INFO"].should.equal "/foo" - end - - specify "provides the original env" do - req = Rack::Request.new(e=Rack::MockRequest.env_for("")) - req.env.should.be e - end - - specify "can restore the URL" do - Rack::Request.new(Rack::MockRequest.env_for("")).url. - should.equal "http://example.org/" - Rack::Request.new(Rack::MockRequest.env_for("", "SCRIPT_NAME" => "/foo")).url. - should.equal "http://example.org/foo/" - Rack::Request.new(Rack::MockRequest.env_for("/foo")).url. - should.equal "http://example.org/foo" - Rack::Request.new(Rack::MockRequest.env_for("?foo")).url. - should.equal "http://example.org/?foo" - Rack::Request.new(Rack::MockRequest.env_for("http://example.org:8080/")).url. - should.equal "http://example.org:8080/" - Rack::Request.new(Rack::MockRequest.env_for("https://example.org/")).url. - should.equal "https://example.org/" - - Rack::Request.new(Rack::MockRequest.env_for("https://example.com:8080/foo?foo")).url. - should.equal "https://example.com:8080/foo?foo" - end - - specify "can restore the full path" do - Rack::Request.new(Rack::MockRequest.env_for("")).fullpath. - should.equal "/" - Rack::Request.new(Rack::MockRequest.env_for("", "SCRIPT_NAME" => "/foo")).fullpath. - should.equal "/foo/" - Rack::Request.new(Rack::MockRequest.env_for("/foo")).fullpath. - should.equal "/foo" - Rack::Request.new(Rack::MockRequest.env_for("?foo")).fullpath. - should.equal "/?foo" - Rack::Request.new(Rack::MockRequest.env_for("http://example.org:8080/")).fullpath. - should.equal "/" - Rack::Request.new(Rack::MockRequest.env_for("https://example.org/")).fullpath. - should.equal "/" - - Rack::Request.new(Rack::MockRequest.env_for("https://example.com:8080/foo?foo")).fullpath. - should.equal "/foo?foo" - end - - specify "can handle multiple media type parameters" do - req = Rack::Request.new \ - Rack::MockRequest.env_for("/", - "CONTENT_TYPE" => 'text/plain; foo=BAR,baz=bizzle dizzle;BLING=bam') - req.should.not.be.form_data - req.media_type_params.should.include 'foo' - req.media_type_params['foo'].should.equal 'BAR' - req.media_type_params.should.include 'baz' - req.media_type_params['baz'].should.equal 'bizzle dizzle' - req.media_type_params.should.not.include 'BLING' - req.media_type_params.should.include 'bling' - req.media_type_params['bling'].should.equal 'bam' - end - - specify "can parse multipart form data" do - # Adapted from RFC 1867. - input = < "multipart/form-data, boundary=AaB03x", - "CONTENT_LENGTH" => input.size, - :input => input) - - req.POST.should.include "fileupload" - req.POST.should.include "reply" - - req.should.be.form_data - req.content_length.should.equal input.size - req.media_type.should.equal 'multipart/form-data' - req.media_type_params.should.include 'boundary' - req.media_type_params['boundary'].should.equal 'AaB03x' - - req.POST["reply"].should.equal "yes" - - f = req.POST["fileupload"] - f.should.be.kind_of Hash - f[:type].should.equal "image/jpeg" - f[:filename].should.equal "dj.jpg" - f.should.include :tempfile - f[:tempfile].size.should.equal 76 - end - - specify "can parse big multipart form data" do - input = < "multipart/form-data, boundary=AaB03x", - "CONTENT_LENGTH" => input.size, - :input => input) - - req.POST["huge"][:tempfile].size.should.equal 32768 - req.POST["mean"][:tempfile].size.should.equal 10 - req.POST["mean"][:tempfile].read.should.equal "--AaB03xha" - end - - specify "can detect invalid multipart form data" do - input = < "multipart/form-data, boundary=AaB03x", - "CONTENT_LENGTH" => input.size, - :input => input) - - lambda { req.POST }.should.raise(EOFError) - - input = < "multipart/form-data, boundary=AaB03x", - "CONTENT_LENGTH" => input.size, - :input => input) - - lambda { req.POST }.should.raise(EOFError) - - input = < "multipart/form-data, boundary=AaB03x", - "CONTENT_LENGTH" => input.size, - :input => input) - - lambda { req.POST }.should.raise(EOFError) - end - - specify "shouldn't try to interpret binary as utf8" do - begin - original_kcode = $KCODE - $KCODE='UTF8' - - input = < "multipart/form-data, boundary=AaB03x", - "CONTENT_LENGTH" => input.size, - :input => input) - - lambda{req.POST}.should.not.raise(EOFError) - req.POST["fileupload"][:tempfile].size.should.equal 4 - ensure - $KCODE = original_kcode - end - end - - - specify "should work around buggy 1.8.* Tempfile equality" do - input = < "multipart/form-data, boundary=AaB03x", - "CONTENT_LENGTH" => input.size, - :input => rack_input) - - lambda {req.POST}.should.not.raise - lambda {req.POST}.should.blaming("input re-processed!").not.raise - end - - specify "does conform to the Rack spec" do - app = lambda { |env| - content = Rack::Request.new(env).POST["file"].inspect - size = content.respond_to?(:bytesize) ? content.bytesize : content.size - [200, {"Content-Type" => "text/html", "Content-Length" => size.to_s}, [content]] - } - - input = < "multipart/form-data, boundary=AaB03x", - "CONTENT_LENGTH" => input.size.to_s, "rack.input" => StringIO.new(input) - - res.should.be.ok - end - - specify "should parse Accept-Encoding correctly" do - parser = lambda do |x| - Rack::Request.new(Rack::MockRequest.env_for("", "HTTP_ACCEPT_ENCODING" => x)).accept_encoding - end - - parser.call(nil).should.equal([]) - - parser.call("compress, gzip").should.equal([["compress", 1.0], ["gzip", 1.0]]) - parser.call("").should.equal([]) - parser.call("*").should.equal([["*", 1.0]]) - parser.call("compress;q=0.5, gzip;q=1.0").should.equal([["compress", 0.5], ["gzip", 1.0]]) - parser.call("gzip;q=1.0, identity; q=0.5, *;q=0").should.equal([["gzip", 1.0], ["identity", 0.5], ["*", 0] ]) - - lambda { parser.call("gzip ; q=1.0") }.should.raise(RuntimeError) - end - - specify 'should provide ip information' do - app = lambda { |env| - request = Rack::Request.new(env) - response = Rack::Response.new - response.write request.ip - response.finish - } - - mock = Rack::MockRequest.new(Rack::Lint.new(app)) - res = mock.get '/', 'REMOTE_ADDR' => '123.123.123.123' - res.body.should.equal '123.123.123.123' - - res = mock.get '/', - 'REMOTE_ADDR' => '123.123.123.123', - 'HTTP_X_FORWARDED_FOR' => '234.234.234.234' - - res.body.should.equal '234.234.234.234' - - res = mock.get '/', - 'REMOTE_ADDR' => '123.123.123.123', - 'HTTP_X_FORWARDED_FOR' => '234.234.234.234,212.212.212.212' - - res.body.should.equal '212.212.212.212' - end - - class MyRequest < Rack::Request - def params - {:foo => "bar"} - end - end - - specify "should allow subclass request to be instantiated after parent request" do - env = Rack::MockRequest.env_for("/?foo=bar") - - req1 = Rack::Request.new(env) - req1.GET.should.equal "foo" => "bar" - req1.params.should.equal "foo" => "bar" - - req2 = MyRequest.new(env) - req2.GET.should.equal "foo" => "bar" - req2.params.should.equal :foo => "bar" - end - - specify "should allow parent request to be instantiated after subclass request" do - env = Rack::MockRequest.env_for("/?foo=bar") - - req1 = MyRequest.new(env) - req1.GET.should.equal "foo" => "bar" - req1.params.should.equal :foo => "bar" - - req2 = Rack::Request.new(env) - req2.GET.should.equal "foo" => "bar" - req2.params.should.equal "foo" => "bar" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_response.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_response.rb deleted file mode 100644 index 7989013d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_response.rb +++ /dev/null @@ -1,221 +0,0 @@ -require 'test/spec' -require 'set' - -require 'rack/response' - -context "Rack::Response" do - specify "has sensible default values" do - response = Rack::Response.new - status, header, body = response.finish - status.should.equal 200 - header.should.equal "Content-Type" => "text/html" - body.each { |part| - part.should.equal "" - } - - response = Rack::Response.new - status, header, body = *response - status.should.equal 200 - header.should.equal "Content-Type" => "text/html" - body.each { |part| - part.should.equal "" - } - end - - specify "can be written to" do - response = Rack::Response.new - - status, header, body = response.finish do - response.write "foo" - response.write "bar" - response.write "baz" - end - - parts = [] - body.each { |part| parts << part } - - parts.should.equal ["foo", "bar", "baz"] - end - - specify "can set and read headers" do - response = Rack::Response.new - response["Content-Type"].should.equal "text/html" - response["Content-Type"] = "text/plain" - response["Content-Type"].should.equal "text/plain" - end - - specify "can set cookies" do - response = Rack::Response.new - - response.set_cookie "foo", "bar" - response["Set-Cookie"].should.equal "foo=bar" - response.set_cookie "foo2", "bar2" - response["Set-Cookie"].should.equal ["foo=bar", "foo2=bar2"] - response.set_cookie "foo3", "bar3" - response["Set-Cookie"].should.equal ["foo=bar", "foo2=bar2", "foo3=bar3"] - end - - specify "formats the Cookie expiration date accordingly to RFC 2109" do - response = Rack::Response.new - - response.set_cookie "foo", {:value => "bar", :expires => Time.now+10} - response["Set-Cookie"].should.match( - /expires=..., \d\d-...-\d\d\d\d \d\d:\d\d:\d\d .../) - end - - specify "can set secure cookies" do - response = Rack::Response.new - response.set_cookie "foo", {:value => "bar", :secure => true} - response["Set-Cookie"].should.equal "foo=bar; secure" - end - - specify "can set http only cookies" do - response = Rack::Response.new - response.set_cookie "foo", {:value => "bar", :httponly => true} - response["Set-Cookie"].should.equal "foo=bar; HttpOnly" - end - - specify "can delete cookies" do - response = Rack::Response.new - response.set_cookie "foo", "bar" - response.set_cookie "foo2", "bar2" - response.delete_cookie "foo" - response["Set-Cookie"].should.equal ["foo2=bar2", - "foo=; expires=Thu, 01-Jan-1970 00:00:00 GMT"] - end - - specify "can do redirects" do - response = Rack::Response.new - response.redirect "/foo" - status, header, body = response.finish - - status.should.equal 302 - header["Location"].should.equal "/foo" - - response = Rack::Response.new - response.redirect "/foo", 307 - status, header, body = response.finish - - status.should.equal 307 - end - - specify "has a useful constructor" do - r = Rack::Response.new("foo") - status, header, body = r.finish - str = ""; body.each { |part| str << part } - str.should.equal "foo" - - r = Rack::Response.new(["foo", "bar"]) - status, header, body = r.finish - str = ""; body.each { |part| str << part } - str.should.equal "foobar" - - r = Rack::Response.new(["foo", "bar"].to_set) - r.write "foo" - status, header, body = r.finish - str = ""; body.each { |part| str << part } - str.should.equal "foobarfoo" - - r = Rack::Response.new([], 500) - r.status.should.equal 500 - - r = Rack::Response.new([], "200 OK") - r.status.should.equal 200 - end - - specify "has a constructor that can take a block" do - r = Rack::Response.new { |res| - res.status = 404 - res.write "foo" - } - status, header, body = r.finish - str = ""; body.each { |part| str << part } - str.should.equal "foo" - status.should.equal 404 - end - - specify "doesn't return invalid responses" do - r = Rack::Response.new(["foo", "bar"], 204) - status, header, body = r.finish - str = ""; body.each { |part| str << part } - str.should.be.empty - header["Content-Type"].should.equal nil - - lambda { - Rack::Response.new(Object.new) - }.should.raise(TypeError). - message.should =~ /stringable or iterable required/ - end - - specify "knows if it's empty" do - r = Rack::Response.new - r.should.be.empty - r.write "foo" - r.should.not.be.empty - - r = Rack::Response.new - r.should.be.empty - r.finish - r.should.be.empty - - r = Rack::Response.new - r.should.be.empty - r.finish { } - r.should.not.be.empty - end - - specify "should provide access to the HTTP status" do - res = Rack::Response.new - res.status = 200 - res.should.be.successful - res.should.be.ok - - res.status = 404 - res.should.not.be.successful - res.should.be.client_error - res.should.be.not_found - - res.status = 501 - res.should.not.be.successful - res.should.be.server_error - - res.status = 307 - res.should.be.redirect - end - - specify "should provide access to the HTTP headers" do - res = Rack::Response.new - res["Content-Type"] = "text/yaml" - - res.should.include "Content-Type" - res.headers["Content-Type"].should.equal "text/yaml" - res["Content-Type"].should.equal "text/yaml" - res.content_type.should.equal "text/yaml" - res.content_length.should.be.nil - res.location.should.be.nil - end - - specify "does not add or change Content-Length when #finish()ing" do - res = Rack::Response.new - res.status = 200 - res.finish - res.headers["Content-Length"].should.be.nil - - res = Rack::Response.new - res.status = 200 - res.headers["Content-Length"] = "10" - res.finish - res.headers["Content-Length"].should.equal "10" - end - - specify "updates Content-Length when body appended to using #write" do - res = Rack::Response.new - res.status = 200 - res.headers["Content-Length"].should.be.nil - res.write "Hi" - res.headers["Content-Length"].should.equal "2" - res.write " there" - res.headers["Content-Length"].should.equal "8" - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_rewindable_input.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_rewindable_input.rb deleted file mode 100644 index 78bebfc9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_rewindable_input.rb +++ /dev/null @@ -1,118 +0,0 @@ -require 'test/spec' -require 'stringio' -require 'rack/rewindable_input' - -shared_context "a rewindable IO object" do - setup do - @rio = Rack::RewindableInput.new(@io) - end - - teardown do - @rio.close - end - - specify "should be able to handle to read()" do - @rio.read.should.equal "hello world" - end - - specify "should be able to handle to read(nil)" do - @rio.read(nil).should.equal "hello world" - end - - specify "should be able to handle to read(length)" do - @rio.read(1).should.equal "h" - end - - specify "should be able to handle to read(length, buffer)" do - buffer = "" - result = @rio.read(1, buffer) - result.should.equal "h" - result.object_id.should.equal buffer.object_id - end - - specify "should be able to handle to read(nil, buffer)" do - buffer = "" - result = @rio.read(nil, buffer) - result.should.equal "hello world" - result.object_id.should.equal buffer.object_id - end - - specify "should rewind to the beginning when #rewind is called" do - @rio.read(1) - @rio.rewind - @rio.read.should.equal "hello world" - end - - specify "should be able to handle gets" do - @rio.gets.should == "hello world" - end - - specify "should be able to handle each" do - array = [] - @rio.each do |data| - array << data - end - array.should.equal(["hello world"]) - end - - specify "should not buffer into a Tempfile if no data has been read yet" do - @rio.instance_variable_get(:@rewindable_io).should.be.nil - end - - specify "should buffer into a Tempfile when data has been consumed for the first time" do - @rio.read(1) - tempfile = @rio.instance_variable_get(:@rewindable_io) - tempfile.should.not.be.nil - @rio.read(1) - tempfile2 = @rio.instance_variable_get(:@rewindable_io) - tempfile2.should.equal tempfile - end - - specify "should close the underlying tempfile upon calling #close" do - @rio.read(1) - tempfile = @rio.instance_variable_get(:@rewindable_io) - @rio.close - tempfile.should.be.closed - end - - specify "should be possibel to call #close when no data has been buffered yet" do - @rio.close - end - - specify "should be possible to call #close multiple times" do - @rio.close - @rio.close - end -end - -context "Rack::RewindableInput" do - context "given an IO object that is already rewindable" do - setup do - @io = StringIO.new("hello world") - end - - it_should_behave_like "a rewindable IO object" - end - - context "given an IO object that is not rewindable" do - setup do - @io = StringIO.new("hello world") - @io.instance_eval do - undef :rewind - end - end - - it_should_behave_like "a rewindable IO object" - end - - context "given an IO object whose rewind method raises Errno::ESPIPE" do - setup do - @io = StringIO.new("hello world") - def @io.rewind - raise Errno::ESPIPE, "You can't rewind this!" - end - end - - it_should_behave_like "a rewindable IO object" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_runtime.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_runtime.rb deleted file mode 100644 index 62d80956..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_runtime.rb +++ /dev/null @@ -1,35 +0,0 @@ -require 'test/spec' -require 'rack/mock' -require 'rack/runtime' - -context "Rack::Runtime" do - specify "sets X-Runtime is none is set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] } - response = Rack::Runtime.new(app).call({}) - response[1]['X-Runtime'].should =~ /[\d\.]+/ - end - - specify "does not set the X-Runtime if it is already set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain', "X-Runtime" => "foobar"}, "Hello, World!"] } - response = Rack::Runtime.new(app).call({}) - response[1]['X-Runtime'].should == "foobar" - end - - specify "should allow a suffix to be set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] } - response = Rack::Runtime.new(app, "Test").call({}) - response[1]['X-Runtime-Test'].should =~ /[\d\.]+/ - end - - specify "should allow multiple timers to be set" do - app = lambda { |env| [200, {'Content-Type' => 'text/plain'}, "Hello, World!"] } - runtime1 = Rack::Runtime.new(app, "App") - runtime2 = Rack::Runtime.new(runtime1, "All") - response = runtime2.call({}) - - response[1]['X-Runtime-App'].should =~ /[\d\.]+/ - response[1]['X-Runtime-All'].should =~ /[\d\.]+/ - - Float(response[1]['X-Runtime-All']).should > Float(response[1]['X-Runtime-App']) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_sendfile.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_sendfile.rb deleted file mode 100644 index 8cfe2017..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_sendfile.rb +++ /dev/null @@ -1,86 +0,0 @@ -require 'test/spec' -require 'rack/mock' -require 'rack/sendfile' - -context "Rack::File" do - specify "should respond to #to_path" do - Rack::File.new(Dir.pwd).should.respond_to :to_path - end -end - -context "Rack::Sendfile" do - def sendfile_body - res = ['Hello World'] - def res.to_path ; "/tmp/hello.txt" ; end - res - end - - def simple_app(body=sendfile_body) - lambda { |env| [200, {'Content-Type' => 'text/plain'}, body] } - end - - def sendfile_app(body=sendfile_body) - Rack::Sendfile.new(simple_app(body)) - end - - setup do - @request = Rack::MockRequest.new(sendfile_app) - end - - def request(headers={}) - yield @request.get('/', headers) - end - - specify "does nothing when no X-Sendfile-Type header present" do - request do |response| - response.should.be.ok - response.body.should.equal 'Hello World' - response.headers.should.not.include 'X-Sendfile' - end - end - - specify "sets X-Sendfile response header and discards body" do - request 'HTTP_X_SENDFILE_TYPE' => 'X-Sendfile' do |response| - response.should.be.ok - response.body.should.be.empty - response.headers['X-Sendfile'].should.equal '/tmp/hello.txt' - end - end - - specify "sets X-Lighttpd-Send-File response header and discards body" do - request 'HTTP_X_SENDFILE_TYPE' => 'X-Lighttpd-Send-File' do |response| - response.should.be.ok - response.body.should.be.empty - response.headers['X-Lighttpd-Send-File'].should.equal '/tmp/hello.txt' - end - end - - specify "sets X-Accel-Redirect response header and discards body" do - headers = { - 'HTTP_X_SENDFILE_TYPE' => 'X-Accel-Redirect', - 'HTTP_X_ACCEL_MAPPING' => '/tmp/=/foo/bar/' - } - request headers do |response| - response.should.be.ok - response.body.should.be.empty - response.headers['X-Accel-Redirect'].should.equal '/foo/bar/hello.txt' - end - end - - specify 'writes to rack.error when no X-Accel-Mapping is specified' do - request 'HTTP_X_SENDFILE_TYPE' => 'X-Accel-Redirect' do |response| - response.should.be.ok - response.body.should.equal 'Hello World' - response.headers.should.not.include 'X-Accel-Redirect' - response.errors.should.include 'X-Accel-Mapping' - end - end - - specify 'does nothing when body does not respond to #to_path' do - @request = Rack::MockRequest.new(sendfile_app(['Not a file...'])) - request 'HTTP_X_SENDFILE_TYPE' => 'X-Sendfile' do |response| - response.body.should.equal 'Not a file...' - response.headers.should.not.include 'X-Sendfile' - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_session_cookie.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_session_cookie.rb deleted file mode 100644 index fba3f83b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_session_cookie.rb +++ /dev/null @@ -1,73 +0,0 @@ -require 'test/spec' - -require 'rack/session/cookie' -require 'rack/mock' -require 'rack/response' - -context "Rack::Session::Cookie" do - incrementor = lambda { |env| - env["rack.session"]["counter"] ||= 0 - env["rack.session"]["counter"] += 1 - Rack::Response.new(env["rack.session"].inspect).to_a - } - - specify "creates a new cookie" do - res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)).get("/") - res["Set-Cookie"].should.match("rack.session=") - res.body.should.equal '{"counter"=>1}' - end - - specify "loads from a cookie" do - res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)).get("/") - cookie = res["Set-Cookie"] - res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)). - get("/", "HTTP_COOKIE" => cookie) - res.body.should.equal '{"counter"=>2}' - cookie = res["Set-Cookie"] - res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)). - get("/", "HTTP_COOKIE" => cookie) - res.body.should.equal '{"counter"=>3}' - end - - specify "survives broken cookies" do - res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor)). - get("/", "HTTP_COOKIE" => "rack.session=blarghfasel") - res.body.should.equal '{"counter"=>1}' - end - - bigcookie = lambda { |env| - env["rack.session"]["cookie"] = "big" * 3000 - Rack::Response.new(env["rack.session"].inspect).to_a - } - - specify "barks on too big cookies" do - lambda { - Rack::MockRequest.new(Rack::Session::Cookie.new(bigcookie)). - get("/", :fatal => true) - }.should.raise(Rack::MockRequest::FatalWarning) - end - - specify "loads from a cookie wih integrity hash" do - res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor, :secret => 'test')).get("/") - cookie = res["Set-Cookie"] - res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor, :secret => 'test')). - get("/", "HTTP_COOKIE" => cookie) - res.body.should.equal '{"counter"=>2}' - cookie = res["Set-Cookie"] - res = Rack::MockRequest.new(Rack::Session::Cookie.new(incrementor, :secret => 'test')). - get("/", "HTTP_COOKIE" => cookie) - res.body.should.equal '{"counter"=>3}' - end - - specify "ignores tampered with session cookies" do - app = Rack::Session::Cookie.new(incrementor, :secret => 'test') - response1 = Rack::MockRequest.new(app).get("/") - _, digest = response1["Set-Cookie"].split("--") - tampered_with_cookie = "hackerman-was-here" + "--" + digest - response2 = Rack::MockRequest.new(app).get("/", "HTTP_COOKIE" => - tampered_with_cookie) - - # The tampered-with cookie is ignored, so we get back an identical Set-Cookie - response2["Set-Cookie"].should.equal(response1["Set-Cookie"]) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_session_memcache.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_session_memcache.rb deleted file mode 100644 index faac796e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_session_memcache.rb +++ /dev/null @@ -1,273 +0,0 @@ -require 'test/spec' - -begin - require 'rack/session/memcache' - require 'rack/mock' - require 'rack/response' - require 'thread' - - context "Rack::Session::Memcache" do - session_key = Rack::Session::Memcache::DEFAULT_OPTIONS[:key] - session_match = /#{session_key}=([0-9a-fA-F]+);/ - incrementor = lambda do |env| - env["rack.session"]["counter"] ||= 0 - env["rack.session"]["counter"] += 1 - Rack::Response.new(env["rack.session"].inspect).to_a - end - drop_session = proc do |env| - env['rack.session.options'][:drop] = true - incrementor.call(env) - end - renew_session = proc do |env| - env['rack.session.options'][:renew] = true - incrementor.call(env) - end - defer_session = proc do |env| - env['rack.session.options'][:defer] = true - incrementor.call(env) - end - - specify "faults on no connection" do - if RUBY_VERSION < "1.9" - lambda do - Rack::Session::Memcache.new incrementor, :memcache_server => 'nosuchserver' - end.should.raise - else - lambda do - Rack::Session::Memcache.new incrementor, :memcache_server => 'nosuchserver' - end.should.raise ArgumentError - end - end - - specify "connect to existing server" do - test_pool = MemCache.new incrementor, :namespace => 'test:rack:session' - end - - specify "creates a new cookie" do - pool = Rack::Session::Memcache.new(incrementor) - res = Rack::MockRequest.new(pool).get("/") - res["Set-Cookie"].should.match("#{session_key}=") - res.body.should.equal '{"counter"=>1}' - end - - specify "determines session from a cookie" do - pool = Rack::Session::Memcache.new(incrementor) - req = Rack::MockRequest.new(pool) - res = req.get("/") - cookie = res["Set-Cookie"] - req.get("/", "HTTP_COOKIE" => cookie). - body.should.equal '{"counter"=>2}' - req.get("/", "HTTP_COOKIE" => cookie). - body.should.equal '{"counter"=>3}' - end - - specify "survives nonexistant cookies" do - bad_cookie = "rack.session=blarghfasel" - pool = Rack::Session::Memcache.new(incrementor) - res = Rack::MockRequest.new(pool). - get("/", "HTTP_COOKIE" => bad_cookie) - res.body.should.equal '{"counter"=>1}' - cookie = res["Set-Cookie"][session_match] - cookie.should.not.match(/#{bad_cookie}/) - end - - specify "maintains freshness" do - pool = Rack::Session::Memcache.new(incrementor, :expire_after => 3) - res = Rack::MockRequest.new(pool).get('/') - res.body.should.include '"counter"=>1' - cookie = res["Set-Cookie"] - res = Rack::MockRequest.new(pool).get('/', "HTTP_COOKIE" => cookie) - res["Set-Cookie"].should.equal cookie - res.body.should.include '"counter"=>2' - puts 'Sleeping to expire session' if $DEBUG - sleep 4 - res = Rack::MockRequest.new(pool).get('/', "HTTP_COOKIE" => cookie) - res["Set-Cookie"].should.not.equal cookie - res.body.should.include '"counter"=>1' - end - - specify "deletes cookies with :drop option" do - pool = Rack::Session::Memcache.new(incrementor) - req = Rack::MockRequest.new(pool) - drop = Rack::Utils::Context.new(pool, drop_session) - dreq = Rack::MockRequest.new(drop) - - res0 = req.get("/") - session = (cookie = res0["Set-Cookie"])[session_match] - res0.body.should.equal '{"counter"=>1}' - - res1 = req.get("/", "HTTP_COOKIE" => cookie) - res1["Set-Cookie"][session_match].should.equal session - res1.body.should.equal '{"counter"=>2}' - - res2 = dreq.get("/", "HTTP_COOKIE" => cookie) - res2["Set-Cookie"].should.equal nil - res2.body.should.equal '{"counter"=>3}' - - res3 = req.get("/", "HTTP_COOKIE" => cookie) - res3["Set-Cookie"][session_match].should.not.equal session - res3.body.should.equal '{"counter"=>1}' - end - - specify "provides new session id with :renew option" do - pool = Rack::Session::Memcache.new(incrementor) - req = Rack::MockRequest.new(pool) - renew = Rack::Utils::Context.new(pool, renew_session) - rreq = Rack::MockRequest.new(renew) - - res0 = req.get("/") - session = (cookie = res0["Set-Cookie"])[session_match] - res0.body.should.equal '{"counter"=>1}' - - res1 = req.get("/", "HTTP_COOKIE" => cookie) - res1["Set-Cookie"][session_match].should.equal session - res1.body.should.equal '{"counter"=>2}' - - res2 = rreq.get("/", "HTTP_COOKIE" => cookie) - new_cookie = res2["Set-Cookie"] - new_session = new_cookie[session_match] - new_session.should.not.equal session - res2.body.should.equal '{"counter"=>3}' - - res3 = req.get("/", "HTTP_COOKIE" => new_cookie) - res3["Set-Cookie"][session_match].should.equal new_session - res3.body.should.equal '{"counter"=>4}' - end - - specify "omits cookie with :defer option" do - pool = Rack::Session::Memcache.new(incrementor) - req = Rack::MockRequest.new(pool) - defer = Rack::Utils::Context.new(pool, defer_session) - dreq = Rack::MockRequest.new(defer) - - res0 = req.get("/") - session = (cookie = res0["Set-Cookie"])[session_match] - res0.body.should.equal '{"counter"=>1}' - - res1 = req.get("/", "HTTP_COOKIE" => cookie) - res1["Set-Cookie"][session_match].should.equal session - res1.body.should.equal '{"counter"=>2}' - - res2 = dreq.get("/", "HTTP_COOKIE" => cookie) - res2["Set-Cookie"].should.equal nil - res2.body.should.equal '{"counter"=>3}' - - res3 = req.get("/", "HTTP_COOKIE" => cookie) - res3["Set-Cookie"][session_match].should.equal session - res3.body.should.equal '{"counter"=>4}' - end - - specify "deep hashes are correctly updated" do - store = nil - hash_check = proc do |env| - session = env['rack.session'] - unless session.include? 'test' - session.update :a => :b, :c => { :d => :e }, - :f => { :g => { :h => :i} }, 'test' => true - else - session[:f][:g][:h] = :j - end - [200, {}, session.inspect] - end - pool = Rack::Session::Memcache.new(hash_check) - req = Rack::MockRequest.new(pool) - - res0 = req.get("/") - session_id = (cookie = res0["Set-Cookie"])[session_match, 1] - ses0 = pool.pool.get(session_id, true) - - res1 = req.get("/", "HTTP_COOKIE" => cookie) - ses1 = pool.pool.get(session_id, true) - - ses1.should.not.equal ses0 - end - - # anyone know how to do this better? - specify "multithread: should cleanly merge sessions" do - next unless $DEBUG - warn 'Running multithread test for Session::Memcache' - pool = Rack::Session::Memcache.new(incrementor) - req = Rack::MockRequest.new(pool) - - res = req.get('/') - res.body.should.equal '{"counter"=>1}' - cookie = res["Set-Cookie"] - session_id = cookie[session_match, 1] - - delta_incrementor = lambda do |env| - # emulate disconjoinment of threading - env['rack.session'] = env['rack.session'].dup - Thread.stop - env['rack.session'][(Time.now.usec*rand).to_i] = true - incrementor.call(env) - end - tses = Rack::Utils::Context.new pool, delta_incrementor - treq = Rack::MockRequest.new(tses) - tnum = rand(7).to_i+5 - r = Array.new(tnum) do - Thread.new(treq) do |run| - run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true) - end - end.reverse.map{|t| t.run.join.value } - r.each do |request| - request['Set-Cookie'].should.equal cookie - request.body.should.include '"counter"=>2' - end - - session = pool.pool.get(session_id) - session.size.should.be tnum+1 # counter - session['counter'].should.be 2 # meeeh - - tnum = rand(7).to_i+5 - r = Array.new(tnum) do |i| - delta_time = proc do |env| - env['rack.session'][i] = Time.now - Thread.stop - env['rack.session'] = env['rack.session'].dup - env['rack.session'][i] -= Time.now - incrementor.call(env) - end - app = Rack::Utils::Context.new pool, time_delta - req = Rack::MockRequest.new app - Thread.new(req) do |run| - run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true) - end - end.reverse.map{|t| t.run.join.value } - r.each do |request| - request['Set-Cookie'].should.equal cookie - request.body.should.include '"counter"=>3' - end - - session = pool.pool.get(session_id) - session.size.should.be tnum+1 - session['counter'].should.be 3 - - drop_counter = proc do |env| - env['rack.session'].delete 'counter' - env['rack.session']['foo'] = 'bar' - [200, {'Content-Type'=>'text/plain'}, env['rack.session'].inspect] - end - tses = Rack::Utils::Context.new pool, drop_counter - treq = Rack::MockRequest.new(tses) - tnum = rand(7).to_i+5 - r = Array.new(tnum) do - Thread.new(treq) do |run| - run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true) - end - end.reverse.map{|t| t.run.join.value } - r.each do |request| - request['Set-Cookie'].should.equal cookie - request.body.should.include '"foo"=>"bar"' - end - - session = pool.pool.get(session_id) - session.size.should.be r.size+1 - session['counter'].should.be.nil? - session['foo'].should.equal 'bar' - end - end -rescue RuntimeError - $stderr.puts "Skipping Rack::Session::Memcache tests. Start memcached and try again." -rescue LoadError - $stderr.puts "Skipping Rack::Session::Memcache tests (Memcache is required). `gem install memcache-client` and try again." -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_session_pool.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_session_pool.rb deleted file mode 100644 index 6be382ec..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_session_pool.rb +++ /dev/null @@ -1,172 +0,0 @@ -require 'test/spec' - -require 'rack/session/pool' -require 'rack/mock' -require 'rack/response' -require 'thread' - -context "Rack::Session::Pool" do - session_key = Rack::Session::Pool::DEFAULT_OPTIONS[:key] - session_match = /#{session_key}=[0-9a-fA-F]+;/ - incrementor = lambda do |env| - env["rack.session"]["counter"] ||= 0 - env["rack.session"]["counter"] += 1 - Rack::Response.new(env["rack.session"].inspect).to_a - end - drop_session = proc do |env| - env['rack.session.options'][:drop] = true - incrementor.call(env) - end - renew_session = proc do |env| - env['rack.session.options'][:renew] = true - incrementor.call(env) - end - defer_session = proc do |env| - env['rack.session.options'][:defer] = true - incrementor.call(env) - end - - specify "creates a new cookie" do - pool = Rack::Session::Pool.new(incrementor) - res = Rack::MockRequest.new(pool).get("/") - res["Set-Cookie"].should.match session_match - res.body.should.equal '{"counter"=>1}' - end - - specify "determines session from a cookie" do - pool = Rack::Session::Pool.new(incrementor) - req = Rack::MockRequest.new(pool) - cookie = req.get("/")["Set-Cookie"] - req.get("/", "HTTP_COOKIE" => cookie). - body.should.equal '{"counter"=>2}' - req.get("/", "HTTP_COOKIE" => cookie). - body.should.equal '{"counter"=>3}' - end - - specify "survives nonexistant cookies" do - pool = Rack::Session::Pool.new(incrementor) - res = Rack::MockRequest.new(pool). - get("/", "HTTP_COOKIE" => "#{session_key}=blarghfasel") - res.body.should.equal '{"counter"=>1}' - end - - specify "deletes cookies with :drop option" do - pool = Rack::Session::Pool.new(incrementor) - req = Rack::MockRequest.new(pool) - drop = Rack::Utils::Context.new(pool, drop_session) - dreq = Rack::MockRequest.new(drop) - - res0 = req.get("/") - session = (cookie = res0["Set-Cookie"])[session_match] - res0.body.should.equal '{"counter"=>1}' - pool.pool.size.should.be 1 - - res1 = req.get("/", "HTTP_COOKIE" => cookie) - res1["Set-Cookie"][session_match].should.equal session - res1.body.should.equal '{"counter"=>2}' - pool.pool.size.should.be 1 - - res2 = dreq.get("/", "HTTP_COOKIE" => cookie) - res2["Set-Cookie"].should.equal nil - res2.body.should.equal '{"counter"=>3}' - pool.pool.size.should.be 0 - - res3 = req.get("/", "HTTP_COOKIE" => cookie) - res3["Set-Cookie"][session_match].should.not.equal session - res3.body.should.equal '{"counter"=>1}' - pool.pool.size.should.be 1 - end - - specify "provides new session id with :renew option" do - pool = Rack::Session::Pool.new(incrementor) - req = Rack::MockRequest.new(pool) - renew = Rack::Utils::Context.new(pool, renew_session) - rreq = Rack::MockRequest.new(renew) - - res0 = req.get("/") - session = (cookie = res0["Set-Cookie"])[session_match] - res0.body.should.equal '{"counter"=>1}' - pool.pool.size.should.be 1 - - res1 = req.get("/", "HTTP_COOKIE" => cookie) - res1["Set-Cookie"][session_match].should.equal session - res1.body.should.equal '{"counter"=>2}' - pool.pool.size.should.be 1 - - res2 = rreq.get("/", "HTTP_COOKIE" => cookie) - new_cookie = res2["Set-Cookie"] - new_session = new_cookie[session_match] - new_session.should.not.equal session - res2.body.should.equal '{"counter"=>3}' - pool.pool.size.should.be 1 - - res3 = req.get("/", "HTTP_COOKIE" => new_cookie) - res3["Set-Cookie"][session_match].should.equal new_session - res3.body.should.equal '{"counter"=>4}' - pool.pool.size.should.be 1 - end - - specify "omits cookie with :defer option" do - pool = Rack::Session::Pool.new(incrementor) - req = Rack::MockRequest.new(pool) - defer = Rack::Utils::Context.new(pool, defer_session) - dreq = Rack::MockRequest.new(defer) - - res0 = req.get("/") - session = (cookie = res0["Set-Cookie"])[session_match] - res0.body.should.equal '{"counter"=>1}' - pool.pool.size.should.be 1 - - res1 = req.get("/", "HTTP_COOKIE" => cookie) - res1["Set-Cookie"][session_match].should.equal session - res1.body.should.equal '{"counter"=>2}' - pool.pool.size.should.be 1 - - res2 = dreq.get("/", "HTTP_COOKIE" => cookie) - res2["Set-Cookie"].should.equal nil - res2.body.should.equal '{"counter"=>3}' - pool.pool.size.should.be 1 - - res3 = req.get("/", "HTTP_COOKIE" => cookie) - res3["Set-Cookie"][session_match].should.equal session - res3.body.should.equal '{"counter"=>4}' - pool.pool.size.should.be 1 - end - - # anyone know how to do this better? - specify "multithread: should merge sessions" do - next unless $DEBUG - warn 'Running multithread tests for Session::Pool' - pool = Rack::Session::Pool.new(incrementor) - req = Rack::MockRequest.new(pool) - - res = req.get('/') - res.body.should.equal '{"counter"=>1}' - cookie = res["Set-Cookie"] - sess_id = cookie[/#{pool.key}=([^,;]+)/,1] - - delta_incrementor = lambda do |env| - # emulate disconjoinment of threading - env['rack.session'] = env['rack.session'].dup - Thread.stop - env['rack.session'][(Time.now.usec*rand).to_i] = true - incrementor.call(env) - end - tses = Rack::Utils::Context.new pool, delta_incrementor - treq = Rack::MockRequest.new(tses) - tnum = rand(7).to_i+5 - r = Array.new(tnum) do - Thread.new(treq) do |run| - run.get('/', "HTTP_COOKIE" => cookie, 'rack.multithread' => true) - end - end.reverse.map{|t| t.run.join.value } - r.each do |res| - res['Set-Cookie'].should.equal cookie - res.body.should.include '"counter"=>2' - end - - session = pool.pool[sess_id] - session.size.should.be tnum+1 # counter - session['counter'].should.be 2 # meeeh - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_showexceptions.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_showexceptions.rb deleted file mode 100644 index bdbc1201..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_showexceptions.rb +++ /dev/null @@ -1,21 +0,0 @@ -require 'test/spec' - -require 'rack/showexceptions' -require 'rack/mock' - -context "Rack::ShowExceptions" do - specify "catches exceptions" do - res = nil - req = Rack::MockRequest.new(Rack::ShowExceptions.new(lambda { |env| - raise RuntimeError - })) - lambda { - res = req.get("/") - }.should.not.raise - res.should.be.a.server_error - res.status.should.equal 500 - - res.should =~ /RuntimeError/ - res.should =~ /ShowExceptions/ - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_showstatus.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_showstatus.rb deleted file mode 100644 index 78700134..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_showstatus.rb +++ /dev/null @@ -1,72 +0,0 @@ -require 'test/spec' - -require 'rack/showstatus' -require 'rack/mock' - -context "Rack::ShowStatus" do - specify "should provide a default status message" do - req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env| - [404, {"Content-Type" => "text/plain", "Content-Length" => "0"}, []] - })) - - res = req.get("/", :lint => true) - res.should.be.not_found - res.should.be.not.empty - - res["Content-Type"].should.equal("text/html") - res.should =~ /404/ - res.should =~ /Not Found/ - end - - specify "should let the app provide additional information" do - req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env| - env["rack.showstatus.detail"] = "gone too meta." - [404, {"Content-Type" => "text/plain", "Content-Length" => "0"}, []] - })) - - res = req.get("/", :lint => true) - res.should.be.not_found - res.should.be.not.empty - - res["Content-Type"].should.equal("text/html") - res.should =~ /404/ - res.should =~ /Not Found/ - res.should =~ /too meta/ - end - - specify "should not replace existing messages" do - req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env| - [404, {"Content-Type" => "text/plain", "Content-Length" => "4"}, ["foo!"]] - })) - res = req.get("/", :lint => true) - res.should.be.not_found - - res.body.should == "foo!" - end - - specify "should pass on original headers" do - headers = {"WWW-Authenticate" => "Basic blah"} - - req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env| [401, headers, []] })) - res = req.get("/", :lint => true) - - res["WWW-Authenticate"].should.equal("Basic blah") - end - - specify "should replace existing messages if there is detail" do - req = Rack::MockRequest.new(Rack::ShowStatus.new(lambda { |env| - env["rack.showstatus.detail"] = "gone too meta." - [404, {"Content-Type" => "text/plain", "Content-Length" => "4"}, ["foo!"]] - })) - - res = req.get("/", :lint => true) - res.should.be.not_found - res.should.be.not.empty - - res["Content-Type"].should.equal("text/html") - res["Content-Length"].should.not.equal("4") - res.should =~ /404/ - res.should =~ /too meta/ - res.body.should.not =~ /foo/ - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_static.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_static.rb deleted file mode 100644 index 19d2ecb7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_static.rb +++ /dev/null @@ -1,37 +0,0 @@ -require 'test/spec' - -require 'rack/static' -require 'rack/mock' - -class DummyApp - def call(env) - [200, {}, ["Hello World"]] - end -end - -context "Rack::Static" do - root = File.expand_path(File.dirname(__FILE__)) - OPTIONS = {:urls => ["/cgi"], :root => root} - - setup do - @request = Rack::MockRequest.new(Rack::Static.new(DummyApp.new, OPTIONS)) - end - - specify "serves files" do - res = @request.get("/cgi/test") - res.should.be.ok - res.body.should =~ /ruby/ - end - - specify "404s if url root is known but it can't find the file" do - res = @request.get("/cgi/foo") - res.should.be.not_found - end - - specify "calls down the chain if url root is not known" do - res = @request.get("/something/else") - res.should.be.ok - res.body.should == "Hello World" - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_thin.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_thin.rb deleted file mode 100644 index 324f6498..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_thin.rb +++ /dev/null @@ -1,91 +0,0 @@ -require 'test/spec' - -begin -require 'rack/handler/thin' -require 'testrequest' -require 'timeout' - -context "Rack::Handler::Thin" do - include TestRequest::Helpers - - setup do - @app = Rack::Lint.new(TestRequest.new) - @server = nil - Thin::Logging.silent = true - @thread = Thread.new do - Rack::Handler::Thin.run(@app, :Host => @host='0.0.0.0', :Port => @port=9204) do |server| - @server = server - end - end - Thread.pass until @server && @server.running? - end - - specify "should respond" do - lambda { - GET("/") - }.should.not.raise - end - - specify "should be a Thin" do - GET("/") - status.should.be 200 - response["SERVER_SOFTWARE"].should =~ /thin/ - response["HTTP_VERSION"].should.equal "HTTP/1.1" - response["SERVER_PROTOCOL"].should.equal "HTTP/1.1" - response["SERVER_PORT"].should.equal "9204" - response["SERVER_NAME"].should.equal "0.0.0.0" - end - - specify "should have rack headers" do - GET("/") - response["rack.version"].should.equal [0,3] - response["rack.multithread"].should.be false - response["rack.multiprocess"].should.be false - response["rack.run_once"].should.be false - end - - specify "should have CGI headers on GET" do - GET("/") - response["REQUEST_METHOD"].should.equal "GET" - response["REQUEST_PATH"].should.equal "/" - response["PATH_INFO"].should.be.equal "/" - response["QUERY_STRING"].should.equal "" - response["test.postdata"].should.equal "" - - GET("/test/foo?quux=1") - response["REQUEST_METHOD"].should.equal "GET" - response["REQUEST_PATH"].should.equal "/test/foo" - response["PATH_INFO"].should.equal "/test/foo" - response["QUERY_STRING"].should.equal "quux=1" - end - - specify "should have CGI headers on POST" do - POST("/", {"rack-form-data" => "23"}, {'X-test-header' => '42'}) - status.should.equal 200 - response["REQUEST_METHOD"].should.equal "POST" - response["REQUEST_PATH"].should.equal "/" - response["QUERY_STRING"].should.equal "" - response["HTTP_X_TEST_HEADER"].should.equal "42" - response["test.postdata"].should.equal "rack-form-data=23" - end - - specify "should support HTTP auth" do - GET("/test", {:user => "ruth", :passwd => "secret"}) - response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ=" - end - - specify "should set status" do - GET("/test?secret") - status.should.equal 403 - response["rack.url_scheme"].should.equal "http" - end - - teardown do - @server.stop! - @thread.kill - end -end - -rescue LoadError - $stderr.puts "Skipping Rack::Handler::Thin tests (Thin is required). `gem install thin` and try again." -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_urlmap.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_urlmap.rb deleted file mode 100644 index 3d8fe605..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_urlmap.rb +++ /dev/null @@ -1,215 +0,0 @@ -require 'test/spec' - -require 'rack/urlmap' -require 'rack/mock' - -context "Rack::URLMap" do - specify "dispatches paths correctly" do - app = lambda { |env| - [200, { - 'X-ScriptName' => env['SCRIPT_NAME'], - 'X-PathInfo' => env['PATH_INFO'], - 'Content-Type' => 'text/plain' - }, [""]] - } - map = Rack::URLMap.new({ - 'http://foo.org/bar' => app, - '/foo' => app, - '/foo/bar' => app - }) - - res = Rack::MockRequest.new(map).get("/") - res.should.be.not_found - - res = Rack::MockRequest.new(map).get("/qux") - res.should.be.not_found - - res = Rack::MockRequest.new(map).get("/foo") - res.should.be.ok - res["X-ScriptName"].should.equal "/foo" - res["X-PathInfo"].should.equal "" - - res = Rack::MockRequest.new(map).get("/foo/") - res.should.be.ok - res["X-ScriptName"].should.equal "/foo" - res["X-PathInfo"].should.equal "/" - - res = Rack::MockRequest.new(map).get("/foo/bar") - res.should.be.ok - res["X-ScriptName"].should.equal "/foo/bar" - res["X-PathInfo"].should.equal "" - - res = Rack::MockRequest.new(map).get("/foo/bar/") - res.should.be.ok - res["X-ScriptName"].should.equal "/foo/bar" - res["X-PathInfo"].should.equal "/" - - res = Rack::MockRequest.new(map).get("/foo///bar//quux") - res.status.should.equal 200 - res.should.be.ok - res["X-ScriptName"].should.equal "/foo/bar" - res["X-PathInfo"].should.equal "//quux" - - res = Rack::MockRequest.new(map).get("/foo/quux", "SCRIPT_NAME" => "/bleh") - res.should.be.ok - res["X-ScriptName"].should.equal "/bleh/foo" - res["X-PathInfo"].should.equal "/quux" - - res = Rack::MockRequest.new(map).get("/bar", 'HTTP_HOST' => 'foo.org') - res.should.be.ok - res["X-ScriptName"].should.equal "/bar" - res["X-PathInfo"].should.be.empty - - res = Rack::MockRequest.new(map).get("/bar/", 'HTTP_HOST' => 'foo.org') - res.should.be.ok - res["X-ScriptName"].should.equal "/bar" - res["X-PathInfo"].should.equal '/' - end - - - specify "dispatches hosts correctly" do - map = Rack::URLMap.new("http://foo.org/" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "foo.org", - "X-Host" => env["HTTP_HOST"] || env["SERVER_NAME"], - }, [""]]}, - "http://subdomain.foo.org/" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "subdomain.foo.org", - "X-Host" => env["HTTP_HOST"] || env["SERVER_NAME"], - }, [""]]}, - "http://bar.org/" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "bar.org", - "X-Host" => env["HTTP_HOST"] || env["SERVER_NAME"], - }, [""]]}, - "/" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "default.org", - "X-Host" => env["HTTP_HOST"] || env["SERVER_NAME"], - }, [""]]} - ) - - res = Rack::MockRequest.new(map).get("/") - res.should.be.ok - res["X-Position"].should.equal "default.org" - - res = Rack::MockRequest.new(map).get("/", "HTTP_HOST" => "bar.org") - res.should.be.ok - res["X-Position"].should.equal "bar.org" - - res = Rack::MockRequest.new(map).get("/", "HTTP_HOST" => "foo.org") - res.should.be.ok - res["X-Position"].should.equal "foo.org" - - res = Rack::MockRequest.new(map).get("/", "HTTP_HOST" => "subdomain.foo.org", "SERVER_NAME" => "foo.org") - res.should.be.ok - res["X-Position"].should.equal "subdomain.foo.org" - - res = Rack::MockRequest.new(map).get("http://foo.org/") - res.should.be.ok - res["X-Position"].should.equal "default.org" - - res = Rack::MockRequest.new(map).get("/", "HTTP_HOST" => "example.org") - res.should.be.ok - res["X-Position"].should.equal "default.org" - - res = Rack::MockRequest.new(map).get("/", - "HTTP_HOST" => "example.org:9292", - "SERVER_PORT" => "9292") - res.should.be.ok - res["X-Position"].should.equal "default.org" - end - - specify "should be nestable" do - map = Rack::URLMap.new("/foo" => - Rack::URLMap.new("/bar" => - Rack::URLMap.new("/quux" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "/foo/bar/quux", - "X-PathInfo" => env["PATH_INFO"], - "X-ScriptName" => env["SCRIPT_NAME"], - }, [""]]} - ))) - - res = Rack::MockRequest.new(map).get("/foo/bar") - res.should.be.not_found - - res = Rack::MockRequest.new(map).get("/foo/bar/quux") - res.should.be.ok - res["X-Position"].should.equal "/foo/bar/quux" - res["X-PathInfo"].should.equal "" - res["X-ScriptName"].should.equal "/foo/bar/quux" - end - - specify "should route root apps correctly" do - map = Rack::URLMap.new("/" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "root", - "X-PathInfo" => env["PATH_INFO"], - "X-ScriptName" => env["SCRIPT_NAME"] - }, [""]]}, - "/foo" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "foo", - "X-PathInfo" => env["PATH_INFO"], - "X-ScriptName" => env["SCRIPT_NAME"] - }, [""]]} - ) - - res = Rack::MockRequest.new(map).get("/foo/bar") - res.should.be.ok - res["X-Position"].should.equal "foo" - res["X-PathInfo"].should.equal "/bar" - res["X-ScriptName"].should.equal "/foo" - - res = Rack::MockRequest.new(map).get("/foo") - res.should.be.ok - res["X-Position"].should.equal "foo" - res["X-PathInfo"].should.equal "" - res["X-ScriptName"].should.equal "/foo" - - res = Rack::MockRequest.new(map).get("/bar") - res.should.be.ok - res["X-Position"].should.equal "root" - res["X-PathInfo"].should.equal "/bar" - res["X-ScriptName"].should.equal "" - - res = Rack::MockRequest.new(map).get("") - res.should.be.ok - res["X-Position"].should.equal "root" - res["X-PathInfo"].should.equal "/" - res["X-ScriptName"].should.equal "" - end - - specify "should not squeeze slashes" do - map = Rack::URLMap.new("/" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "root", - "X-PathInfo" => env["PATH_INFO"], - "X-ScriptName" => env["SCRIPT_NAME"] - }, [""]]}, - "/foo" => lambda { |env| - [200, - { "Content-Type" => "text/plain", - "X-Position" => "foo", - "X-PathInfo" => env["PATH_INFO"], - "X-ScriptName" => env["SCRIPT_NAME"] - }, [""]]} - ) - - res = Rack::MockRequest.new(map).get("/http://example.org/bar") - res.should.be.ok - res["X-Position"].should.equal "root" - res["X-PathInfo"].should.equal "/http://example.org/bar" - res["X-ScriptName"].should.equal "" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_utils.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_utils.rb deleted file mode 100644 index 269a52bd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_utils.rb +++ /dev/null @@ -1,552 +0,0 @@ -require 'test/spec' - -require 'rack/utils' -require 'rack/lint' -require 'rack/mock' - -context "Rack::Utils" do - specify "should escape correctly" do - Rack::Utils.escape("fobar").should.equal "fo%3Co%3Ebar" - Rack::Utils.escape("a space").should.equal "a+space" - Rack::Utils.escape("q1!2\"'w$5&7/z8)?\\"). - should.equal "q1%212%22%27w%245%267%2Fz8%29%3F%5C" - end - - specify "should escape correctly for multibyte characters" do - matz_name = "\xE3\x81\xBE\xE3\x81\xA4\xE3\x82\x82\xE3\x81\xA8".unpack("a*")[0] # Matsumoto - matz_name.force_encoding("UTF-8") if matz_name.respond_to? :force_encoding - Rack::Utils.escape(matz_name).should.equal '%E3%81%BE%E3%81%A4%E3%82%82%E3%81%A8' - matz_name_sep = "\xE3\x81\xBE\xE3\x81\xA4 \xE3\x82\x82\xE3\x81\xA8".unpack("a*")[0] # Matsu moto - matz_name_sep.force_encoding("UTF-8") if matz_name_sep.respond_to? :force_encoding - Rack::Utils.escape(matz_name_sep).should.equal '%E3%81%BE%E3%81%A4+%E3%82%82%E3%81%A8' - end - - specify "should unescape correctly" do - Rack::Utils.unescape("fo%3Co%3Ebar").should.equal "fobar" - Rack::Utils.unescape("a+space").should.equal "a space" - Rack::Utils.unescape("a%20space").should.equal "a space" - Rack::Utils.unescape("q1%212%22%27w%245%267%2Fz8%29%3F%5C"). - should.equal "q1!2\"'w$5&7/z8)?\\" - end - - specify "should parse query strings correctly" do - Rack::Utils.parse_query("foo=bar"). - should.equal "foo" => "bar" - Rack::Utils.parse_query("foo=\"bar\""). - should.equal "foo" => "bar" - Rack::Utils.parse_query("foo=bar&foo=quux"). - should.equal "foo" => ["bar", "quux"] - Rack::Utils.parse_query("foo=1&bar=2"). - should.equal "foo" => "1", "bar" => "2" - Rack::Utils.parse_query("my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F"). - should.equal "my weird field" => "q1!2\"'w$5&7/z8)?" - Rack::Utils.parse_query("foo%3Dbaz=bar").should.equal "foo=baz" => "bar" - end - - specify "should parse nested query strings correctly" do - Rack::Utils.parse_nested_query("foo"). - should.equal "foo" => nil - Rack::Utils.parse_nested_query("foo="). - should.equal "foo" => "" - Rack::Utils.parse_nested_query("foo=bar"). - should.equal "foo" => "bar" - Rack::Utils.parse_nested_query("foo=\"bar\""). - should.equal "foo" => "bar" - - Rack::Utils.parse_nested_query("foo=bar&foo=quux"). - should.equal "foo" => "quux" - Rack::Utils.parse_nested_query("foo&foo="). - should.equal "foo" => "" - Rack::Utils.parse_nested_query("foo=1&bar=2"). - should.equal "foo" => "1", "bar" => "2" - Rack::Utils.parse_nested_query("&foo=1&&bar=2"). - should.equal "foo" => "1", "bar" => "2" - Rack::Utils.parse_nested_query("foo&bar="). - should.equal "foo" => nil, "bar" => "" - Rack::Utils.parse_nested_query("foo=bar&baz="). - should.equal "foo" => "bar", "baz" => "" - Rack::Utils.parse_nested_query("my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F"). - should.equal "my weird field" => "q1!2\"'w$5&7/z8)?" - - Rack::Utils.parse_nested_query("foo[]"). - should.equal "foo" => [nil] - Rack::Utils.parse_nested_query("foo[]="). - should.equal "foo" => [""] - Rack::Utils.parse_nested_query("foo[]=bar"). - should.equal "foo" => ["bar"] - - Rack::Utils.parse_nested_query("foo[]=1&foo[]=2"). - should.equal "foo" => ["1", "2"] - Rack::Utils.parse_nested_query("foo=bar&baz[]=1&baz[]=2&baz[]=3"). - should.equal "foo" => "bar", "baz" => ["1", "2", "3"] - Rack::Utils.parse_nested_query("foo[]=bar&baz[]=1&baz[]=2&baz[]=3"). - should.equal "foo" => ["bar"], "baz" => ["1", "2", "3"] - - Rack::Utils.parse_nested_query("x[y][z]=1"). - should.equal "x" => {"y" => {"z" => "1"}} - Rack::Utils.parse_nested_query("x[y][z][]=1"). - should.equal "x" => {"y" => {"z" => ["1"]}} - Rack::Utils.parse_nested_query("x[y][z]=1&x[y][z]=2"). - should.equal "x" => {"y" => {"z" => "2"}} - Rack::Utils.parse_nested_query("x[y][z][]=1&x[y][z][]=2"). - should.equal "x" => {"y" => {"z" => ["1", "2"]}} - - Rack::Utils.parse_nested_query("x[y][][z]=1"). - should.equal "x" => {"y" => [{"z" => "1"}]} - Rack::Utils.parse_nested_query("x[y][][z][]=1"). - should.equal "x" => {"y" => [{"z" => ["1"]}]} - Rack::Utils.parse_nested_query("x[y][][z]=1&x[y][][w]=2"). - should.equal "x" => {"y" => [{"z" => "1", "w" => "2"}]} - - Rack::Utils.parse_nested_query("x[y][][v][w]=1"). - should.equal "x" => {"y" => [{"v" => {"w" => "1"}}]} - Rack::Utils.parse_nested_query("x[y][][z]=1&x[y][][v][w]=2"). - should.equal "x" => {"y" => [{"z" => "1", "v" => {"w" => "2"}}]} - - Rack::Utils.parse_nested_query("x[y][][z]=1&x[y][][z]=2"). - should.equal "x" => {"y" => [{"z" => "1"}, {"z" => "2"}]} - Rack::Utils.parse_nested_query("x[y][][z]=1&x[y][][w]=a&x[y][][z]=2&x[y][][w]=3"). - should.equal "x" => {"y" => [{"z" => "1", "w" => "a"}, {"z" => "2", "w" => "3"}]} - - lambda { Rack::Utils.parse_nested_query("x[y]=1&x[y]z=2") }. - should.raise(TypeError). - message.should.equal "expected Hash (got String) for param `y'" - - lambda { Rack::Utils.parse_nested_query("x[y]=1&x[]=1") }. - should.raise(TypeError). - message.should.equal "expected Array (got Hash) for param `x'" - - lambda { Rack::Utils.parse_nested_query("x[y]=1&x[y][][w]=2") }. - should.raise(TypeError). - message.should.equal "expected Array (got String) for param `y'" - end - - specify "should build query strings correctly" do - Rack::Utils.build_query("foo" => "bar").should.equal "foo=bar" - Rack::Utils.build_query("foo" => ["bar", "quux"]). - should.equal "foo=bar&foo=quux" - Rack::Utils.build_query("foo" => "1", "bar" => "2"). - should.equal "foo=1&bar=2" - Rack::Utils.build_query("my weird field" => "q1!2\"'w$5&7/z8)?"). - should.equal "my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F" - end - - specify "should build nested query strings correctly" do - Rack::Utils.build_nested_query("foo" => nil).should.equal "foo" - Rack::Utils.build_nested_query("foo" => "").should.equal "foo=" - Rack::Utils.build_nested_query("foo" => "bar").should.equal "foo=bar" - - Rack::Utils.build_nested_query("foo" => "1", "bar" => "2"). - should.equal "foo=1&bar=2" - Rack::Utils.build_nested_query("my weird field" => "q1!2\"'w$5&7/z8)?"). - should.equal "my+weird+field=q1%212%22%27w%245%267%2Fz8%29%3F" - - Rack::Utils.build_nested_query("foo" => [nil]). - should.equal "foo[]" - Rack::Utils.build_nested_query("foo" => [""]). - should.equal "foo[]=" - Rack::Utils.build_nested_query("foo" => ["bar"]). - should.equal "foo[]=bar" - - # The ordering of the output query string is unpredictable with 1.8's - # unordered hash. Test that build_nested_query performs the inverse - # function of parse_nested_query. - [{"foo" => nil, "bar" => ""}, - {"foo" => "bar", "baz" => ""}, - {"foo" => ["1", "2"]}, - {"foo" => "bar", "baz" => ["1", "2", "3"]}, - {"foo" => ["bar"], "baz" => ["1", "2", "3"]}, - {"foo" => ["1", "2"]}, - {"foo" => "bar", "baz" => ["1", "2", "3"]}, - {"x" => {"y" => {"z" => "1"}}}, - {"x" => {"y" => {"z" => ["1"]}}}, - {"x" => {"y" => {"z" => ["1", "2"]}}}, - {"x" => {"y" => [{"z" => "1"}]}}, - {"x" => {"y" => [{"z" => ["1"]}]}}, - {"x" => {"y" => [{"z" => "1", "w" => "2"}]}}, - {"x" => {"y" => [{"v" => {"w" => "1"}}]}}, - {"x" => {"y" => [{"z" => "1", "v" => {"w" => "2"}}]}}, - {"x" => {"y" => [{"z" => "1"}, {"z" => "2"}]}}, - {"x" => {"y" => [{"z" => "1", "w" => "a"}, {"z" => "2", "w" => "3"}]}} - ].each { |params| - qs = Rack::Utils.build_nested_query(params) - Rack::Utils.parse_nested_query(qs).should.equal params - } - - lambda { Rack::Utils.build_nested_query("foo=bar") }. - should.raise(ArgumentError). - message.should.equal "value must be a Hash" - end - - specify "should figure out which encodings are acceptable" do - helper = lambda do |a, b| - request = Rack::Request.new(Rack::MockRequest.env_for("", "HTTP_ACCEPT_ENCODING" => a)) - Rack::Utils.select_best_encoding(a, b) - end - - helper.call(%w(), [["x", 1]]).should.equal(nil) - helper.call(%w(identity), [["identity", 0.0]]).should.equal(nil) - helper.call(%w(identity), [["*", 0.0]]).should.equal(nil) - - helper.call(%w(identity), [["compress", 1.0], ["gzip", 1.0]]).should.equal("identity") - - helper.call(%w(compress gzip identity), [["compress", 1.0], ["gzip", 1.0]]).should.equal("compress") - helper.call(%w(compress gzip identity), [["compress", 0.5], ["gzip", 1.0]]).should.equal("gzip") - - helper.call(%w(foo bar identity), []).should.equal("identity") - helper.call(%w(foo bar identity), [["*", 1.0]]).should.equal("foo") - helper.call(%w(foo bar identity), [["*", 1.0], ["foo", 0.9]]).should.equal("bar") - - helper.call(%w(foo bar identity), [["foo", 0], ["bar", 0]]).should.equal("identity") - helper.call(%w(foo bar baz identity), [["*", 0], ["identity", 0.1]]).should.equal("identity") - end - - specify "should return the bytesize of String" do - Rack::Utils.bytesize("FOO\xE2\x82\xAC").should.equal 6 - end - - specify "should return status code for integer" do - Rack::Utils.status_code(200).should.equal 200 - end - - specify "should return status code for string" do - Rack::Utils.status_code("200").should.equal 200 - end - - specify "should return status code for symbol" do - Rack::Utils.status_code(:ok).should.equal 200 - end -end - -context "Rack::Utils::HeaderHash" do - specify "should retain header case" do - h = Rack::Utils::HeaderHash.new("Content-MD5" => "d5ff4e2a0 ...") - h['ETag'] = 'Boo!' - h.to_hash.should.equal "Content-MD5" => "d5ff4e2a0 ...", "ETag" => 'Boo!' - end - - specify "should check existence of keys case insensitively" do - h = Rack::Utils::HeaderHash.new("Content-MD5" => "d5ff4e2a0 ...") - h.should.include 'content-md5' - h.should.not.include 'ETag' - end - - specify "should merge case-insensitively" do - h = Rack::Utils::HeaderHash.new("ETag" => 'HELLO', "content-length" => '123') - merged = h.merge("Etag" => 'WORLD', 'Content-Length' => '321', "Foo" => 'BAR') - merged.should.equal "Etag"=>'WORLD', "Content-Length"=>'321', "Foo"=>'BAR' - end - - specify "should overwrite case insensitively and assume the new key's case" do - h = Rack::Utils::HeaderHash.new("Foo-Bar" => "baz") - h["foo-bar"] = "bizzle" - h["FOO-BAR"].should.equal "bizzle" - h.length.should.equal 1 - h.to_hash.should.equal "foo-bar" => "bizzle" - end - - specify "should be converted to real Hash" do - h = Rack::Utils::HeaderHash.new("foo" => "bar") - h.to_hash.should.be.instance_of Hash - end - - specify "should convert Array values to Strings when converting to Hash" do - h = Rack::Utils::HeaderHash.new("foo" => ["bar", "baz"]) - h.to_hash.should.equal({ "foo" => "bar\nbaz" }) - end - - specify "should replace hashes correctly" do - h = Rack::Utils::HeaderHash.new("Foo-Bar" => "baz") - j = {"foo" => "bar"} - h.replace(j) - h["foo"].should.equal "bar" - end - - specify "should be able to delete the given key case-sensitively" do - h = Rack::Utils::HeaderHash.new("foo" => "bar") - h.delete("foo") - h["foo"].should.be.nil - h["FOO"].should.be.nil - end - - specify "should be able to delete the given key case-insensitively" do - h = Rack::Utils::HeaderHash.new("foo" => "bar") - h.delete("FOO") - h["foo"].should.be.nil - h["FOO"].should.be.nil - end - - specify "should return the deleted value when #delete is called on an existing key" do - h = Rack::Utils::HeaderHash.new("foo" => "bar") - h.delete("Foo").should.equal("bar") - end - - specify "should return nil when #delete is called on a non-existant key" do - h = Rack::Utils::HeaderHash.new("foo" => "bar") - h.delete("Hello").should.be.nil - end - - specify "should avoid unnecessary object creation if possible" do - a = Rack::Utils::HeaderHash.new("foo" => "bar") - b = Rack::Utils::HeaderHash.new(a) - b.object_id.should.equal(a.object_id) - b.should.equal(a) - end - - specify "should convert Array values to Strings when responding to #each" do - h = Rack::Utils::HeaderHash.new("foo" => ["bar", "baz"]) - h.each do |k,v| - k.should.equal("foo") - v.should.equal("bar\nbaz") - end - end - -end - -context "Rack::Utils::Context" do - class ContextTest - attr_reader :app - def initialize app; @app=app; end - def call env; context env; end - def context env, app=@app; app.call(env); end - end - test_target1 = proc{|e| e.to_s+' world' } - test_target2 = proc{|e| e.to_i+2 } - test_target3 = proc{|e| nil } - test_target4 = proc{|e| [200,{'Content-Type'=>'text/plain', 'Content-Length'=>'0'},['']] } - test_app = ContextTest.new test_target4 - - specify "should set context correctly" do - test_app.app.should.equal test_target4 - c1 = Rack::Utils::Context.new(test_app, test_target1) - c1.for.should.equal test_app - c1.app.should.equal test_target1 - c2 = Rack::Utils::Context.new(test_app, test_target2) - c2.for.should.equal test_app - c2.app.should.equal test_target2 - end - - specify "should alter app on recontexting" do - c1 = Rack::Utils::Context.new(test_app, test_target1) - c2 = c1.recontext(test_target2) - c2.for.should.equal test_app - c2.app.should.equal test_target2 - c3 = c2.recontext(test_target3) - c3.for.should.equal test_app - c3.app.should.equal test_target3 - end - - specify "should run different apps" do - c1 = Rack::Utils::Context.new test_app, test_target1 - c2 = c1.recontext test_target2 - c3 = c2.recontext test_target3 - c4 = c3.recontext test_target4 - a4 = Rack::Lint.new c4 - a5 = Rack::Lint.new test_app - r1 = c1.call('hello') - r1.should.equal 'hello world' - r2 = c2.call(2) - r2.should.equal 4 - r3 = c3.call(:misc_symbol) - r3.should.be.nil - r4 = Rack::MockRequest.new(a4).get('/') - r4.status.should.be 200 - r5 = Rack::MockRequest.new(a5).get('/') - r5.status.should.be 200 - r4.body.should.equal r5.body - end -end - -context "Rack::Utils::Multipart" do - specify "should return nil if content type is not multipart" do - env = Rack::MockRequest.env_for("/", - "CONTENT_TYPE" => 'application/x-www-form-urlencoded') - Rack::Utils::Multipart.parse_multipart(env).should.equal nil - end - - specify "should parse multipart upload with text file" do - env = Rack::MockRequest.env_for("/", multipart_fixture(:text)) - params = Rack::Utils::Multipart.parse_multipart(env) - params["submit-name"].should.equal "Larry" - params["files"][:type].should.equal "text/plain" - params["files"][:filename].should.equal "file1.txt" - params["files"][:head].should.equal "Content-Disposition: form-data; " + - "name=\"files\"; filename=\"file1.txt\"\r\n" + - "Content-Type: text/plain\r\n" - params["files"][:name].should.equal "files" - params["files"][:tempfile].read.should.equal "contents" - end - - specify "should parse multipart upload with nested parameters" do - env = Rack::MockRequest.env_for("/", multipart_fixture(:nested)) - params = Rack::Utils::Multipart.parse_multipart(env) - params["foo"]["submit-name"].should.equal "Larry" - params["foo"]["files"][:type].should.equal "text/plain" - params["foo"]["files"][:filename].should.equal "file1.txt" - params["foo"]["files"][:head].should.equal "Content-Disposition: form-data; " + - "name=\"foo[files]\"; filename=\"file1.txt\"\r\n" + - "Content-Type: text/plain\r\n" - params["foo"]["files"][:name].should.equal "foo[files]" - params["foo"]["files"][:tempfile].read.should.equal "contents" - end - - specify "should parse multipart upload with binary file" do - env = Rack::MockRequest.env_for("/", multipart_fixture(:binary)) - params = Rack::Utils::Multipart.parse_multipart(env) - params["submit-name"].should.equal "Larry" - params["files"][:type].should.equal "image/png" - params["files"][:filename].should.equal "rack-logo.png" - params["files"][:head].should.equal "Content-Disposition: form-data; " + - "name=\"files\"; filename=\"rack-logo.png\"\r\n" + - "Content-Type: image/png\r\n" - params["files"][:name].should.equal "files" - params["files"][:tempfile].read.length.should.equal 26473 - end - - specify "should parse multipart upload with empty file" do - env = Rack::MockRequest.env_for("/", multipart_fixture(:empty)) - params = Rack::Utils::Multipart.parse_multipart(env) - params["submit-name"].should.equal "Larry" - params["files"][:type].should.equal "text/plain" - params["files"][:filename].should.equal "file1.txt" - params["files"][:head].should.equal "Content-Disposition: form-data; " + - "name=\"files\"; filename=\"file1.txt\"\r\n" + - "Content-Type: text/plain\r\n" - params["files"][:name].should.equal "files" - params["files"][:tempfile].read.should.equal "" - end - - specify "should parse multipart upload with filename with semicolons" do - env = Rack::MockRequest.env_for("/", multipart_fixture(:semicolon)) - params = Rack::Utils::Multipart.parse_multipart(env) - params["files"][:type].should.equal "text/plain" - params["files"][:filename].should.equal "fi;le1.txt" - params["files"][:head].should.equal "Content-Disposition: form-data; " + - "name=\"files\"; filename=\"fi;le1.txt\"\r\n" + - "Content-Type: text/plain\r\n" - params["files"][:name].should.equal "files" - params["files"][:tempfile].read.should.equal "contents" - end - - specify "should not include file params if no file was selected" do - env = Rack::MockRequest.env_for("/", multipart_fixture(:none)) - params = Rack::Utils::Multipart.parse_multipart(env) - params["submit-name"].should.equal "Larry" - params["files"].should.equal nil - params.keys.should.not.include "files" - end - - specify "should parse IE multipart upload and clean up filename" do - env = Rack::MockRequest.env_for("/", multipart_fixture(:ie)) - params = Rack::Utils::Multipart.parse_multipart(env) - params["files"][:type].should.equal "text/plain" - params["files"][:filename].should.equal "file1.txt" - params["files"][:head].should.equal "Content-Disposition: form-data; " + - "name=\"files\"; " + - 'filename="C:\Documents and Settings\Administrator\Desktop\file1.txt"' + - "\r\nContent-Type: text/plain\r\n" - params["files"][:name].should.equal "files" - params["files"][:tempfile].read.should.equal "contents" - end - - specify "rewinds input after parsing upload" do - options = multipart_fixture(:text) - input = options[:input] - env = Rack::MockRequest.env_for("/", options) - params = Rack::Utils::Multipart.parse_multipart(env) - params["submit-name"].should.equal "Larry" - params["files"][:filename].should.equal "file1.txt" - input.read.length.should.equal 197 - end - - specify "builds multipart body" do - files = Rack::Utils::Multipart::UploadedFile.new(multipart_file("file1.txt")) - data = Rack::Utils::Multipart.build_multipart("submit-name" => "Larry", "files" => files) - - options = { - "CONTENT_TYPE" => "multipart/form-data; boundary=AaB03x", - "CONTENT_LENGTH" => data.length.to_s, - :input => StringIO.new(data) - } - env = Rack::MockRequest.env_for("/", options) - params = Rack::Utils::Multipart.parse_multipart(env) - params["submit-name"].should.equal "Larry" - params["files"][:filename].should.equal "file1.txt" - params["files"][:tempfile].read.should.equal "contents" - end - - specify "builds nested multipart body" do - files = Rack::Utils::Multipart::UploadedFile.new(multipart_file("file1.txt")) - data = Rack::Utils::Multipart.build_multipart("people" => [{"submit-name" => "Larry", "files" => files}]) - - options = { - "CONTENT_TYPE" => "multipart/form-data; boundary=AaB03x", - "CONTENT_LENGTH" => data.length.to_s, - :input => StringIO.new(data) - } - env = Rack::MockRequest.env_for("/", options) - params = Rack::Utils::Multipart.parse_multipart(env) - params["people"][0]["submit-name"].should.equal "Larry" - params["people"][0]["files"][:filename].should.equal "file1.txt" - params["people"][0]["files"][:tempfile].read.should.equal "contents" - end - - specify "can parse fields that end at the end of the buffer" do - input = File.read(multipart_file("bad_robots")) - - req = Rack::Request.new Rack::MockRequest.env_for("/", - "CONTENT_TYPE" => "multipart/form-data, boundary=1yy3laWhgX31qpiHinh67wJXqKalukEUTvqTzmon", - "CONTENT_LENGTH" => input.size, - :input => input) - - req.POST['file.path'].should.equal "/var/tmp/uploads/4/0001728414" - req.POST['addresses'].should.not.equal nil - end - - specify "builds complete params with the chunk size of 16384 slicing exactly on boundary" do - data = File.open(multipart_file("fail_16384_nofile")) { |f| f.read }.gsub(/\n/, "\r\n") - options = { - "CONTENT_TYPE" => "multipart/form-data; boundary=----WebKitFormBoundaryWsY0GnpbI5U7ztzo", - "CONTENT_LENGTH" => data.length.to_s, - :input => StringIO.new(data) - } - env = Rack::MockRequest.env_for("/", options) - params = Rack::Utils::Multipart.parse_multipart(env) - - params.should.not.equal nil - params.keys.should.include "AAAAAAAAAAAAAAAAAAA" - params["AAAAAAAAAAAAAAAAAAA"].keys.should.include "PLAPLAPLA_MEMMEMMEMM_ATTRATTRER" - params["AAAAAAAAAAAAAAAAAAA"]["PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"].keys.should.include "new" - params["AAAAAAAAAAAAAAAAAAA"]["PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"]["new"].keys.should.include "-2" - params["AAAAAAAAAAAAAAAAAAA"]["PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"]["new"]["-2"].keys.should.include "ba_unit_id" - params["AAAAAAAAAAAAAAAAAAA"]["PLAPLAPLA_MEMMEMMEMM_ATTRATTRER"]["new"]["-2"]["ba_unit_id"].should.equal "1017" - end - - specify "should return nil if no UploadedFiles were used" do - data = Rack::Utils::Multipart.build_multipart("people" => [{"submit-name" => "Larry", "files" => "contents"}]) - data.should.equal nil - end - - specify "should raise ArgumentError if params is not a Hash" do - lambda { Rack::Utils::Multipart.build_multipart("foo=bar") }. - should.raise(ArgumentError). - message.should.equal "value must be a Hash" - end - - private - def multipart_fixture(name) - file = multipart_file(name) - data = File.open(file, 'rb') { |io| io.read } - - type = "multipart/form-data; boundary=AaB03x" - length = data.respond_to?(:bytesize) ? data.bytesize : data.size - - { "CONTENT_TYPE" => type, - "CONTENT_LENGTH" => length.to_s, - :input => StringIO.new(data) } - end - - def multipart_file(name) - File.join(File.dirname(__FILE__), "multipart", name.to_s) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_webrick.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_webrick.rb deleted file mode 100644 index 599425c4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rack_webrick.rb +++ /dev/null @@ -1,130 +0,0 @@ -require 'test/spec' - -require 'rack/handler/webrick' -require 'rack/lint' -require 'rack/response' -require 'testrequest' - -Thread.abort_on_exception = true - -context "Rack::Handler::WEBrick" do - include TestRequest::Helpers - - setup do - @server = WEBrick::HTTPServer.new(:Host => @host='0.0.0.0', - :Port => @port=9202, - :Logger => WEBrick::Log.new(nil, WEBrick::BasicLog::WARN), - :AccessLog => []) - @server.mount "/test", Rack::Handler::WEBrick, - Rack::Lint.new(TestRequest.new) - Thread.new { @server.start } - trap(:INT) { @server.shutdown } - end - - specify "should respond" do - lambda { - GET("/test") - }.should.not.raise - end - - specify "should be a WEBrick" do - GET("/test") - status.should.be 200 - response["SERVER_SOFTWARE"].should =~ /WEBrick/ - response["HTTP_VERSION"].should.equal "HTTP/1.1" - response["SERVER_PROTOCOL"].should.equal "HTTP/1.1" - response["SERVER_PORT"].should.equal "9202" - response["SERVER_NAME"].should.equal "0.0.0.0" - end - - specify "should have rack headers" do - GET("/test") - response["rack.version"].should.equal [1,1] - response["rack.multithread"].should.be true - response["rack.multiprocess"].should.be false - response["rack.run_once"].should.be false - end - - specify "should have CGI headers on GET" do - GET("/test") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/" - response["PATH_INFO"].should.be.equal "" - response["QUERY_STRING"].should.equal "" - response["test.postdata"].should.equal "" - - GET("/test/foo?quux=1") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/" - response["PATH_INFO"].should.equal "/foo" - response["QUERY_STRING"].should.equal "quux=1" - - GET("/test/foo%25encoding?quux=1") - response["REQUEST_METHOD"].should.equal "GET" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/" - response["PATH_INFO"].should.equal "/foo%25encoding" - response["QUERY_STRING"].should.equal "quux=1" - end - - specify "should have CGI headers on POST" do - POST("/test", {"rack-form-data" => "23"}, {'X-test-header' => '42'}) - status.should.equal 200 - response["REQUEST_METHOD"].should.equal "POST" - response["SCRIPT_NAME"].should.equal "/test" - response["REQUEST_PATH"].should.equal "/" - response["QUERY_STRING"].should.equal "" - response["HTTP_X_TEST_HEADER"].should.equal "42" - response["test.postdata"].should.equal "rack-form-data=23" - end - - specify "should support HTTP auth" do - GET("/test", {:user => "ruth", :passwd => "secret"}) - response["HTTP_AUTHORIZATION"].should.equal "Basic cnV0aDpzZWNyZXQ=" - end - - specify "should set status" do - GET("/test?secret") - status.should.equal 403 - response["rack.url_scheme"].should.equal "http" - end - - specify "should correctly set cookies" do - @server.mount "/cookie-test", Rack::Handler::WEBrick, - Rack::Lint.new(lambda { |req| - res = Rack::Response.new - res.set_cookie "one", "1" - res.set_cookie "two", "2" - res.finish - }) - - Net::HTTP.start(@host, @port) { |http| - res = http.get("/cookie-test") - res.code.to_i.should.equal 200 - res.get_fields("set-cookie").should.equal ["one=1", "two=2"] - } - end - - specify "should provide a .run" do - block_ran = false - catch(:done) { - Rack::Handler::WEBrick.run(lambda {}, - {:Port => 9210, - :Logger => WEBrick::Log.new(nil, WEBrick::BasicLog::WARN), - :AccessLog => []}) { |server| - block_ran = true - server.should.be.kind_of WEBrick::HTTPServer - @s = server - throw :done - } - } - block_ran.should.be true - @s.shutdown - end - - teardown do - @server.shutdown - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rackup.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rackup.rb deleted file mode 100644 index d9926fda..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-1.1.0/test/spec_rackup.rb +++ /dev/null @@ -1,154 +0,0 @@ -require 'test/spec' -require 'testrequest' -require 'rack/server' -require 'open3' - -begin -require "mongrel" - -context "rackup" do - include TestRequest::Helpers - - def run_rackup(*args) - options = args.last.is_a?(Hash) ? args.pop : {} - flags = args.first - @host = options[:host] || "0.0.0.0" - @port = options[:port] || 9292 - - Dir.chdir("#{root}/test/rackup") do - @in, @rackup, @err = Open3.popen3("#{Gem.ruby} -S #{rackup} #{flags}") - end - - return if options[:port] == false - - # Wait until the server is available - begin - GET("/") - rescue - sleep 0.05 - retry - end - end - - def output - @rackup.read - end - - after do - # This doesn't actually return a response, so we rescue - GET "/die" rescue nil - - Dir["#{root}/**/*.pid"].each do |file| - File.delete(file) - end - - File.delete("#{root}/log_output") if File.exist?("#{root}/log_output") - end - - specify "rackup" do - run_rackup - response["PATH_INFO"].should.equal '/' - response["test.$DEBUG"].should.be false - response["test.$EVAL"].should.be nil - response["test.$VERBOSE"].should.be false - response["test.Ping"].should.be nil - response["SERVER_SOFTWARE"].should.not =~ /webrick/ - end - - specify "rackup --help" do - run_rackup "--help", :port => false - output.should.match /--port/ - end - - specify "rackup --port" do - run_rackup "--port 9000", :port => 9000 - response["SERVER_PORT"].should.equal "9000" - end - - specify "rackup --debug" do - run_rackup "--debug" - response["test.$DEBUG"].should.be true - end - - specify "rackup --eval" do - run_rackup %{--eval "BUKKIT = 'BUKKIT'"} - response["test.$EVAL"].should.equal "BUKKIT" - end - - specify "rackup --warn" do - run_rackup %{--warn} - response["test.$VERBOSE"].should.be true - end - - specify "rackup --include" do - run_rackup %{--include /foo/bar} - response["test.$LOAD_PATH"].should.include "/foo/bar" - end - - specify "rackup --require" do - run_rackup %{--require ping} - response["test.Ping"].should.equal "constant" - end - - specify "rackup --server" do - run_rackup %{--server webrick} - response["SERVER_SOFTWARE"].should =~ /webrick/i - end - - specify "rackup --host" do - run_rackup %{--host 127.0.0.1}, :host => "127.0.0.1" - response["REMOTE_ADDR"].should.equal "127.0.0.1" - end - - specify "rackup --daemonize --pid" do - run_rackup %{--daemonize --pid testing.pid} - status.should.be 200 - @rackup.should.be.eof? - Dir["#{root}/**/testing.pid"].should.not.be.empty? - end - - specify "rackup --pid" do - run_rackup %{--pid testing.pid} - status.should.be 200 - Dir["#{root}/**/testing.pid"].should.not.be.empty? - end - - specify "rackup --version" do - run_rackup %{--version}, :port => false - output.should =~ /1.0/ - end - - specify "rackup --env development includes lint" do - run_rackup - GET("/broken_lint") - status.should.be 500 - end - - specify "rackup --env deployment does not include lint" do - run_rackup %{--env deployment} - GET("/broken_lint") - status.should.be 200 - end - - specify "rackup --env none does not include lint" do - run_rackup %{--env none} - GET("/broken_lint") - status.should.be 200 - end - - specify "rackup --env deployment does log" do - run_rackup %{--env deployment} - log = File.read(response["test.stderr"]) - log.should.be.empty? - end - - specify "rackup --env none does not log" do - run_rackup %{--env none} - GET("/") - log = File.read(response["test.stderr"]) - log.should.be.empty? - end -end -rescue LoadError - $stderr.puts "Skipping rackup --server tests (mongrel is required). `gem install thin` and try again." -end \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/.document b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/.document deleted file mode 100644 index fa1ded68..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/.document +++ /dev/null @@ -1,4 +0,0 @@ -README.rdoc -lib/**/*.rb -History.txt -MIT-LICENSE.txt diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/.gitignore b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/.gitignore deleted file mode 100644 index 68dc26ad..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/.gitignore +++ /dev/null @@ -1,4 +0,0 @@ -pkg -doc -coverage -VERSION diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/History.txt b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/History.txt deleted file mode 100644 index 60d4d357..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/History.txt +++ /dev/null @@ -1,107 +0,0 @@ -== 0.5.3 / 2009-11-27 - -* Bug fixes - - * Fix cookie matching for subdomains (Marcin Kulik) - -== 0.5.2 / 2009-11-13 - -* Bug fixes - - * Call close on response body after iteration, not before (Simon Rozet) - * Add missing require for time in cookie_jar.rb (Jerry West) - -== 0.5.1 / 2009-10-27 - -* Bug fixes - - * Escape cookie values (John Pignata) - * Close the response body after each request, as per the Rack spec (Elomar França) - -== 0.5.0 / 2009-09-19 - -* Bug fixes - - * Set HTTP_X_REQUESTED_WITH in the Rack env when a request is made with :xhr => true (Ben Sales) - * Set headers in the Rack env in HTTP_USER_AGENT form - * Rack::Test now generates no Ruby warnings - -== 0.4.2 / 2009-09-01 - -* Minor enhancements - - * Merge in rack/master's build_multipart method which covers additional cases - * Accept raw :params string input and merge it with the query string - * Stringify and upcase request method (e.g. :post => "POST") (Josh Peek) - -* Bug fixes - - * Properly convert hashes with nil values (e.g. :foo => nil becomes simply "foo", not "foo=") - * Prepend a slash to the URI path if it doesn't start with one (Josh Peek) - * Requiring Rack-Test never modifies the Ruby load path anymore (Josh Peek) - * Fixed using multiple cookies in a string on Ruby 1.8 (Tuomas Kareinen and Hermanni Hyytiälä) - -== 0.4.1 / 2009-08-06 - -* Minor enhancements - - * Support initializing a Rack::Test::Session with an app in addition to - a Rack::MockSession - * Allow CONTENT_TYPE to be specified in the env and not overwritten when - sending a POST or PUT - -== 0.4.0 / 2009-06-25 - -* Minor enhancements - - * Expose hook for building Rack::MockSessions for frameworks that need - to configure them before use - * Support passing in arrays of raw cookies in addition to a newline - separated string - * Support after_request callbacks in MockSession for things like running - background jobs - * Allow multiple named sessions using with_session - * Initialize Rack::Test::Sessions with Rack::MockSessions instead of apps. - This change should help integration with other Ruby web frameworks - (like Merb). - * Support sending bodies for PUT requests (Larry Diehl) - -== 0.3.0 / 2009-05-17 - -* Major enhancements - - * Ruby 1.9 compatible (Simon Rozet, Michael Fellinger) - -* Minor enhancements - - * Add CookieJar#[] and CookieJar#[]= methods - * Make the default host configurable - * Use Rack::Lint and fix errors (Simon Rozet) - * Extract Rack::MockSession from Rack::Test::Session to handle tracking - the last request and response and the cookie jar - * Add #set_cookie and #clear_cookies methods - * Rename #authorize to #basic_authorize (#authorize remains as an alias) - (Simon Rozet) - -== 0.2.0 / 2009-04-26 - -Because #last_response is now a MockResponse instead of a Rack::Response, -#last_response.body now returns a string instead of an array. - -* Major enhancements - - * Support multipart requests via the UploadedFile class (thanks, Rails) - -* Minor enhancements - - * Updated for Rack 1.0 - * Don't require rubygems (See http://gist.github.com/54177) - * Support HTTP Digest authentication with the #digest_authorize method - * #last_response returns a MockResponse instead of a Response - (Michael Fellinger) - -== 0.1.0 / 2009-03-02 - -* 1 major enhancement - - * Birthday! diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/MIT-LICENSE.txt b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/MIT-LICENSE.txt deleted file mode 100644 index f387441c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/MIT-LICENSE.txt +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2008-2009 Bryan Helmkamp, Engine Yard Inc. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/README.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/README.rdoc deleted file mode 100644 index 43c54abc..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/README.rdoc +++ /dev/null @@ -1,57 +0,0 @@ -= Rack::Test - -- Code: http://github.com/brynary/rack-test -- Build: http://runcoderun.com/brynary/rack-test - -== Description - -Rack::Test is a small, simple testing API for Rack apps. It can be used on its -own or as a reusable starting point for Web frameworks and testing libraries -to build on. Most of its initial functionality is an extraction of Merb 1.0's -request helpers feature. - -== Features - -* Maintains a cookie jar across requests -* Easily follow redirects when desired -* Set request headers to be used by all subsequent requests -* Small footprint. Approximately 200 LOC - -== Example - - require "rack/test" - - class HomepageTest < Test::Unit::TestCase - include Rack::Test::Methods - - def app - MyApp.new - end - - def test_redirect_logged_in_users_to_dashboard - authorize "bryan", "secret" - get "/" - follow_redirect! - - assert_equal "http://example.org/redirected", last_request.url - assert last_response.ok? - end - - end - -== Install - -To install the latest release as a gem: - - sudo gem install rack-test - -== Authors - -- Maintained by {Bryan Helmkamp}[mailto:bryan@brynary.com] -- Contributions from Simon Rozet and Pat Nakajima -- Much of the original code was extracted from Merb 1.0's request helper - -== License - -Copyright (c) 2008-2009 Bryan Helmkamp, Engine Yard Inc. -See MIT-LICENSE.txt in this directory. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/Rakefile deleted file mode 100644 index f4a29a15..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/Rakefile +++ /dev/null @@ -1,39 +0,0 @@ -require "rubygems" - -begin - require "spec/rake/spectask" -rescue LoadError - desc "Run specs" - task(:spec) { $stderr.puts '`gem install rspec` to run specs' } -else - Spec::Rake::SpecTask.new do |t| - t.spec_opts = ['--options', "\"#{File.dirname(__FILE__)}/spec/spec.opts\""] - t.libs << 'lib' - t.libs << 'spec' - t.warning = true - end - - task :default => :spec - - desc "Run all specs in spec directory with RCov" - Spec::Rake::SpecTask.new(:rcov) do |t| - t.spec_opts = ['--options', "\"#{File.dirname(__FILE__)}/spec/spec.opts\""] - t.libs << 'lib' - t.libs << 'spec' - t.warning = true - t.rcov = true - t.rcov_opts = ['-x spec'] - end -end - -desc "Generate RDoc" -task :docs do - FileUtils.rm_rf("doc") - require "rack/test" - system "hanna --title 'Rack::Test #{Rack::Test::VERSION} API Documentation'" -end - -desc 'Removes trailing whitespace' -task :whitespace do - sh %{find . -name '*.rb' -exec sed -i '' 's/ *$//g' {} \\;} -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/Thorfile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/Thorfile deleted file mode 100644 index dc9aaa9a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/Thorfile +++ /dev/null @@ -1,114 +0,0 @@ -module GemHelpers - - def generate_gemspec - $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), "lib"))) - require "rack/test" - - Gem::Specification.new do |s| - s.name = "rack-test" - s.version = Rack::Test::VERSION - s.author = "Bryan Helmkamp" - s.email = "bryan@brynary.com" - s.homepage = "http://github.com/brynary/rack-test" - s.summary = "Simple testing API built on Rack" - s.description = <<-EOS.strip -Rack::Test is a small, simple testing API for Rack apps. It can be used on its -own or as a reusable starting point for Web frameworks and testing libraries -to build on. Most of its initial functionality is an extraction of Merb 1.0's -request helpers feature. - EOS - s.rubyforge_project = "rack-test" - - require "git" - repo = Git.open(".") - - s.files = normalize_files(repo.ls_files.keys - repo.lib.ignored_files) - s.test_files = normalize_files(Dir['spec/**/*.rb'] - repo.lib.ignored_files) - - s.has_rdoc = true - s.extra_rdoc_files = %w[README.rdoc MIT-LICENSE.txt] - - s.add_dependency "rack", ">= 1.0" - end - end - - def normalize_files(array) - # only keep files, no directories, and sort - array.select do |path| - File.file?(path) - end.sort - end - - # Adds extra space when outputting an array. This helps create better version - # control diffs, because otherwise it is all on the same line. - def prettyify_array(gemspec_ruby, array_name) - gemspec_ruby.gsub(/s\.#{array_name.to_s} = \[.+?\]/) do |match| - leadin, files = match[0..-2].split("[") - leadin + "[\n #{files.split(",").join(",\n ")}\n ]" - end - end - - def read_gemspec - @read_gemspec ||= eval(File.read("rack-test.gemspec")) - end - - def sh(command) - puts command - system command - end -end - -class Default < Thor - include GemHelpers - - desc "gemspec", "Regenerate rack-test.gemspec" - def gemspec - File.open("rack-test.gemspec", "w") do |file| - gemspec_ruby = generate_gemspec.to_ruby - gemspec_ruby = prettyify_array(gemspec_ruby, :files) - gemspec_ruby = prettyify_array(gemspec_ruby, :test_files) - gemspec_ruby = prettyify_array(gemspec_ruby, :extra_rdoc_files) - - file.write gemspec_ruby - end - - puts "Wrote gemspec to rack-test.gemspec" - read_gemspec.validate - end - - desc "build", "Build a rack-test gem" - def build - sh "gem build rack-test.gemspec" - FileUtils.mkdir_p "pkg" - FileUtils.mv read_gemspec.file_name, "pkg" - end - - desc "install", "Install the latest built gem" - def install - sh "gem install --local pkg/#{read_gemspec.file_name}" - end - - desc "release", "Release the current branch to GitHub and Gemcutter" - def release - gemspec - build - Release.new.tag - Release.new.gem - end -end - -class Release < Thor - include GemHelpers - - desc "tag", "Tag the gem on the origin server" - def tag - release_tag = "v#{read_gemspec.version}" - sh "git tag -a #{release_tag} -m 'Tagging #{release_tag}'" - sh "git push origin #{release_tag}" - end - - desc "gem", "Push the gem to Gemcutter" - def gem - sh "gem push pkg/#{read_gemspec.file_name}" - end -end \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/mock_session.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/mock_session.rb deleted file mode 100644 index a3f509db..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/mock_session.rb +++ /dev/null @@ -1,61 +0,0 @@ -module Rack - - class MockSession # :nodoc: - attr_writer :cookie_jar - attr_reader :default_host - - def initialize(app, default_host = Rack::Test::DEFAULT_HOST) - @app = app - @after_request = [] - @default_host = default_host - @last_request = nil - @last_response = nil - end - - def after_request(&block) - @after_request << block - end - - def clear_cookies - @cookie_jar = Rack::Test::CookieJar.new([], @default_host) - end - - def set_cookie(cookie, uri = nil) - cookie_jar.merge(cookie, uri) - end - - def request(uri, env) - env["HTTP_COOKIE"] ||= cookie_jar.for(uri) - @last_request = Rack::Request.new(env) - status, headers, body = @app.call(@last_request.env) - - @last_response = MockResponse.new(status, headers, body, env["rack.errors"].flush) - body.close if body.respond_to?(:close) - - cookie_jar.merge(last_response.headers["Set-Cookie"], uri) - - @after_request.each { |hook| hook.call } - @last_response - end - - # Return the last request issued in the session. Raises an error if no - # requests have been sent yet. - def last_request - raise Rack::Test::Error.new("No request yet. Request a page first.") unless @last_request - @last_request - end - - # Return the last response received in the session. Raises an error if - # no requests have been sent yet. - def last_response - raise Rack::Test::Error.new("No response yet. Request a page first.") unless @last_response - @last_response - end - - def cookie_jar - @cookie_jar ||= Rack::Test::CookieJar.new([], @default_host) - end - - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test.rb deleted file mode 100644 index ad25c6a4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test.rb +++ /dev/null @@ -1,276 +0,0 @@ -require "uri" -require "rack" -require "rack/mock_session" -require "rack/test/cookie_jar" -require "rack/test/mock_digest_request" -require "rack/test/utils" -require "rack/test/methods" -require "rack/test/uploaded_file" - -module Rack - module Test - VERSION = "0.5.3" - - DEFAULT_HOST = "example.org" - MULTIPART_BOUNDARY = "----------XnJLe9ZIbbGUYtzPQJ16u1" - - # The common base class for exceptions raised by Rack::Test - class Error < StandardError; end - - # This class represents a series of requests issued to a Rack app, sharing - # a single cookie jar - # - # Rack::Test::Session's methods are most often called through Rack::Test::Methods, - # which will automatically build a session when it's first used. - class Session - extend Forwardable - include Rack::Test::Utils - - def_delegators :@rack_mock_session, :clear_cookies, :set_cookie, :last_response, :last_request - - # Creates a Rack::Test::Session for a given Rack app or Rack::MockSession. - # - # Note: Generally, you won't need to initialize a Rack::Test::Session directly. - # Instead, you should include Rack::Test::Methods into your testing context. - # (See README.rdoc for an example) - def initialize(mock_session) - @headers = {} - - if mock_session.is_a?(MockSession) - @rack_mock_session = mock_session - else - @rack_mock_session = MockSession.new(mock_session) - end - - @default_host = @rack_mock_session.default_host - end - - # Issue a GET request for the given URI with the given params and Rack - # environment. Stores the issues request object in #last_request and - # the app's response in #last_response. Yield #last_response to a block - # if given. - # - # Example: - # get "/" - def get(uri, params = {}, env = {}, &block) - env = env_for(uri, env.merge(:method => "GET", :params => params)) - process_request(uri, env, &block) - end - - # Issue a POST request for the given URI. See #get - # - # Example: - # post "/signup", "name" => "Bryan" - def post(uri, params = {}, env = {}, &block) - env = env_for(uri, env.merge(:method => "POST", :params => params)) - process_request(uri, env, &block) - end - - # Issue a PUT request for the given URI. See #get - # - # Example: - # put "/" - def put(uri, params = {}, env = {}, &block) - env = env_for(uri, env.merge(:method => "PUT", :params => params)) - process_request(uri, env, &block) - end - - # Issue a DELETE request for the given URI. See #get - # - # Example: - # delete "/" - def delete(uri, params = {}, env = {}, &block) - env = env_for(uri, env.merge(:method => "DELETE", :params => params)) - process_request(uri, env, &block) - end - - # Issue a HEAD request for the given URI. See #get - # - # Example: - # head "/" - def head(uri, params = {}, env = {}, &block) - env = env_for(uri, env.merge(:method => "HEAD", :params => params)) - process_request(uri, env, &block) - end - - # Issue a request to the Rack app for the given URI and optional Rack - # environment. Stores the issues request object in #last_request and - # the app's response in #last_response. Yield #last_response to a block - # if given. - # - # Example: - # request "/" - def request(uri, env = {}, &block) - env = env_for(uri, env) - process_request(uri, env, &block) - end - - # Set a header to be included on all subsequent requests through the - # session. Use a value of nil to remove a previously configured header. - # - # In accordance with the Rack spec, headers will be included in the Rack - # environment hash in HTTP_USER_AGENT form. - # - # Example: - # header "User-Agent", "Firefox" - def header(name, value) - if value.nil? - @headers.delete(name) - else - @headers[name] = value - end - end - - # Set the username and password for HTTP Basic authorization, to be - # included in subsequent requests in the HTTP_AUTHORIZATION header. - # - # Example: - # basic_authorize "bryan", "secret" - def basic_authorize(username, password) - encoded_login = ["#{username}:#{password}"].pack("m*") - header('Authorization', "Basic #{encoded_login}") - end - - alias_method :authorize, :basic_authorize - - # Set the username and password for HTTP Digest authorization, to be - # included in subsequent requests in the HTTP_AUTHORIZATION header. - # - # Example: - # digest_authorize "bryan", "secret" - def digest_authorize(username, password) - @digest_username = username - @digest_password = password - end - - # Rack::Test will not follow any redirects automatically. This method - # will follow the redirect returned in the last response. If the last - # response was not a redirect, an error will be raised. - def follow_redirect! - unless last_response.redirect? - raise Error.new("Last response was not a redirect. Cannot follow_redirect!") - end - - get(last_response["Location"]) - end - - private - - def env_for(path, env) - uri = URI.parse(path) - uri.path = "/#{uri.path}" unless uri.path[0] == ?/ - uri.host ||= @default_host - - env = default_env.merge(env) - - env.update("HTTPS" => "on") if URI::HTTPS === uri - env["HTTP_X_REQUESTED_WITH"] = "XMLHttpRequest" if env[:xhr] - - # TODO: Remove this after Rack 1.1 has been released. - # Stringifying and upcasing methods has be commit upstream - env["REQUEST_METHOD"] ||= env[:method] ? env[:method].to_s.upcase : "GET" - - if env["REQUEST_METHOD"] == "GET" - params = env[:params] || {} - params = parse_nested_query(params) if params.is_a?(String) - params.update(parse_query(uri.query)) - uri.query = build_nested_query(params) - elsif !env.has_key?(:input) - env["CONTENT_TYPE"] ||= "application/x-www-form-urlencoded" - - if env[:params].is_a?(Hash) - if data = build_multipart(env[:params]) - env[:input] = data - env["CONTENT_LENGTH"] ||= data.length.to_s - env["CONTENT_TYPE"] = "multipart/form-data; boundary=#{MULTIPART_BOUNDARY}" - else - env[:input] = params_to_string(env[:params]) - end - else - env[:input] = env[:params] - end - end - - env.delete(:params) - - if env.has_key?(:cookie) - set_cookie(env.delete(:cookie), uri) - end - - Rack::MockRequest.env_for(uri.to_s, env) - end - - def process_request(uri, env) - uri = URI.parse(uri) - uri.host ||= @default_host - - @rack_mock_session.request(uri, env) - - if retry_with_digest_auth?(env) - auth_env = env.merge({ - "HTTP_AUTHORIZATION" => digest_auth_header, - "rack-test.digest_auth_retry" => true - }) - auth_env.delete('rack.request') - process_request(uri.path, auth_env) - else - yield last_response if block_given? - - last_response - end - end - - def digest_auth_header - challenge = last_response["WWW-Authenticate"].split(" ", 2).last - params = Rack::Auth::Digest::Params.parse(challenge) - - params.merge!({ - "username" => @digest_username, - "nc" => "00000001", - "cnonce" => "nonsensenonce", - "uri" => last_request.path_info, - "method" => last_request.env["REQUEST_METHOD"], - }) - - params["response"] = MockDigestRequest.new(params).response(@digest_password) - - "Digest #{params}" - end - - def retry_with_digest_auth?(env) - last_response.status == 401 && - digest_auth_configured? && - !env["rack-test.digest_auth_retry"] - end - - def digest_auth_configured? - @digest_username - end - - def default_env - { "rack.test" => true, "REMOTE_ADDR" => "127.0.0.1" }.merge(headers_for_env) - end - - def headers_for_env - converted_headers = {} - - @headers.each do |name, value| - env_key = "HTTP_" + name.upcase.gsub("-", "_") - converted_headers[env_key] = value - end - - converted_headers - end - - def params_to_string(params) - case params - when Hash then build_nested_query(params) - when nil then "" - else params - end - end - - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/cookie_jar.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/cookie_jar.rb deleted file mode 100644 index 8f274020..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/cookie_jar.rb +++ /dev/null @@ -1,172 +0,0 @@ -require "uri" -require "time" - -module Rack - module Test - - class Cookie # :nodoc: - include Rack::Utils - - # :api: private - attr_reader :name, :value - - # :api: private - def initialize(raw, uri = nil, default_host = DEFAULT_HOST) - @default_host = default_host - uri ||= default_uri - - # separate the name / value pair from the cookie options - @name_value_raw, options = raw.split(/[;,] */n, 2) - - @name, @value = parse_query(@name_value_raw, ';').to_a.first - @options = parse_query(options, ';') - - @options["domain"] ||= (uri.host || default_host) - @options["path"] ||= uri.path.sub(/\/[^\/]*\Z/, "") - end - - def replaces?(other) - [name.downcase, domain, path] == [other.name.downcase, other.domain, other.path] - end - - # :api: private - def raw - @name_value_raw - end - - # :api: private - def empty? - @value.nil? || @value.empty? - end - - # :api: private - def domain - @options["domain"] - end - - def secure? - @options.has_key?("secure") - end - - # :api: private - def path - @options["path"].strip || "/" - end - - # :api: private - def expires - Time.parse(@options["expires"]) if @options["expires"] - end - - # :api: private - def expired? - expires && expires < Time.now - end - - # :api: private - def valid?(uri) - uri ||= default_uri - - if uri.host.nil? - uri.host = @default_host - end - - real_domain = domain =~ /^\./ ? domain[1..-1] : domain - (!secure? || (secure? && uri.scheme == "https")) && - uri.host =~ Regexp.new("#{Regexp.escape(real_domain)}$", Regexp::IGNORECASE) && - uri.path =~ Regexp.new("^#{Regexp.escape(path)}") - end - - # :api: private - def matches?(uri) - ! expired? && valid?(uri) - end - - # :api: private - def <=>(other) - # Orders the cookies from least specific to most - [name, path, domain.reverse] <=> [other.name, other.path, other.domain.reverse] - end - - protected - - def default_uri - URI.parse("//" + @default_host + "/") - end - - end - - class CookieJar # :nodoc: - - # :api: private - def initialize(cookies = [], default_host = DEFAULT_HOST) - @default_host = default_host - @cookies = cookies - @cookies.sort! - end - - def [](name) - cookies = hash_for(nil) - # TODO: Should be case insensitive - cookies[name] && cookies[name].value - end - - def []=(name, value) - merge("#{name}=#{Rack::Utils.escape(value)}") - end - - def merge(raw_cookies, uri = nil) - return unless raw_cookies - - raw_cookies = raw_cookies.split("\n") if raw_cookies.is_a? String - raw_cookies.each do |raw_cookie| - cookie = Cookie.new(raw_cookie, uri, @default_host) - self << cookie if cookie.valid?(uri) - end - end - - def <<(new_cookie) - @cookies.reject! do |existing_cookie| - new_cookie.replaces?(existing_cookie) - end - - @cookies << new_cookie - @cookies.sort! - end - - # :api: private - def for(uri) - hash_for(uri).values.map { |c| c.raw }.join(';') - end - - def to_hash - cookies = {} - - hash_for(nil).each do |name, cookie| - cookies[name] = cookie.value - end - - return cookies - end - - protected - - def hash_for(uri = nil) - cookies = {} - - # The cookies are sorted by most specific first. So, we loop through - # all the cookies in order and add it to a hash by cookie name if - # the cookie can be sent to the current URI. It's added to the hash - # so that when we are done, the cookies will be unique by name and - # we'll have grabbed the most specific to the URI. - @cookies.each do |cookie| - cookies[cookie.name] = cookie if cookie.matches?(uri) - end - - return cookies - end - - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/methods.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/methods.rb deleted file mode 100644 index f79669fd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/methods.rb +++ /dev/null @@ -1,80 +0,0 @@ -require "forwardable" - -module Rack - module Test - - # This module serves as the primary integration point for using Rack::Test - # in a testing environment. It depends on an app method being defined in the - # same context, and provides the Rack::Test API methods (see Rack::Test::Session - # for their documentation). - # - # Example: - # - # class HomepageTest < Test::Unit::TestCase - # include Rack::Test::Methods - # - # def app - # MyApp.new - # end - # end - module Methods - extend Forwardable - - def rack_mock_session(name = :default) # :nodoc: - return build_rack_mock_session unless name - - @_rack_mock_sessions ||= {} - @_rack_mock_sessions[name] ||= build_rack_mock_session - end - - def build_rack_mock_session # :nodoc: - Rack::MockSession.new(app) - end - - def rack_test_session(name = :default) # :nodoc: - return build_rack_test_session(name) unless name - - @_rack_test_sessions ||= {} - @_rack_test_sessions[name] ||= build_rack_test_session(name) - end - - def build_rack_test_session(name) # :nodoc: - Rack::Test::Session.new(rack_mock_session(name)) - end - - def current_session # :nodoc: - rack_test_session(_current_session_names.last) - end - - def with_session(name) # :nodoc: - _current_session_names.push(name) - yield rack_test_session(name) - _current_session_names.pop - end - - def _current_session_names # :nodoc: - @_current_session_names ||= [:default] - end - - METHODS = [ - :request, - :get, - :post, - :put, - :delete, - :head, - :follow_redirect!, - :header, - :set_cookie, - :clear_cookies, - :authorize, - :basic_authorize, - :digest_authorize, - :last_response, - :last_request - ] - - def_delegators :current_session, *METHODS - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/mock_digest_request.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/mock_digest_request.rb deleted file mode 100644 index b5764930..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/mock_digest_request.rb +++ /dev/null @@ -1,29 +0,0 @@ -module Rack - module Test - - class MockDigestRequest # :nodoc: - - def initialize(params) - @params = params - end - - def method_missing(sym) - if @params.has_key? k = sym.to_s - return @params[k] - end - - super - end - - def method - @params['method'] - end - - def response(password) - Rack::Auth::Digest::MD5.new(nil).send :digest, self, password - end - - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/uploaded_file.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/uploaded_file.rb deleted file mode 100644 index cd49f26a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/uploaded_file.rb +++ /dev/null @@ -1,46 +0,0 @@ -require "tempfile" -require "fileutils" - -module Rack - module Test - - # Wraps a Tempfile with a content type. Including one or more UploadedFile's - # in the params causes Rack::Test to build and issue a multipart request. - # - # Example: - # post "/photos", "file" => Rack::Test::UploadedFile.new("me.jpg", "image/jpeg") - class UploadedFile - - # The filename, *not* including the path, of the "uploaded" file - attr_reader :original_filename - - # The content type of the "uploaded" file - attr_accessor :content_type - - def initialize(path, content_type = "text/plain", binary = false) - raise "#{path} file does not exist" unless ::File.exist?(path) - - @content_type = content_type - @original_filename = ::File.basename(path) - - @tempfile = Tempfile.new(@original_filename) - @tempfile.set_encoding(Encoding::BINARY) if @tempfile.respond_to?(:set_encoding) - @tempfile.binmode if binary - - FileUtils.copy_file(path, @tempfile.path) - end - - def path - @tempfile.path - end - - alias_method :local_path, :path - - def method_missing(method_name, *args, &block) #:nodoc: - @tempfile.__send__(method_name, *args, &block) - end - - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/utils.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/utils.rb deleted file mode 100644 index 4b8ba177..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/lib/rack/test/utils.rb +++ /dev/null @@ -1,101 +0,0 @@ -module Rack - module Test - - module Utils # :nodoc: - include Rack::Utils - - def build_nested_query(value, prefix = nil) - case value - when Array - value.map do |v| - build_nested_query(v, "#{prefix}[]") - end.join("&") - when Hash - value.map do |k, v| - build_nested_query(v, prefix ? "#{prefix}[#{escape(k)}]" : escape(k)) - end.join("&") - when NilClass - prefix.to_s - else - "#{prefix}=#{escape(value)}" - end - end - - module_function :build_nested_query - - def build_multipart(params, first = true) - if first - unless params.is_a?(Hash) - raise ArgumentError, "value must be a Hash" - end - - multipart = false - query = lambda { |value| - case value - when Array - value.each(&query) - when Hash - value.values.each(&query) - when UploadedFile - multipart = true - end - } - params.values.each(&query) - return nil unless multipart - end - - flattened_params = Hash.new - - params.each do |key, value| - k = first ? key.to_s : "[#{key}]" - - case value - when Array - value.map { |v| - build_multipart(v, false).each { |subkey, subvalue| - flattened_params["#{k}[]#{subkey}"] = subvalue - } - } - when Hash - build_multipart(value, false).each { |subkey, subvalue| - flattened_params[k + subkey] = subvalue - } - else - flattened_params[k] = value - end - end - - if first - flattened_params.map { |name, file| - if file.respond_to?(:original_filename) - ::File.open(file.path, "rb") do |f| - f.set_encoding(Encoding::BINARY) if f.respond_to?(:set_encoding) -<<-EOF ---#{MULTIPART_BOUNDARY}\r -Content-Disposition: form-data; name="#{name}"; filename="#{escape(file.original_filename)}"\r -Content-Type: #{file.content_type}\r -Content-Length: #{::File.stat(file.path).size}\r -\r -#{f.read}\r -EOF - end - else -<<-EOF ---#{MULTIPART_BOUNDARY}\r -Content-Disposition: form-data; name="#{name}"\r -\r -#{file}\r -EOF - end - }.join + "--#{MULTIPART_BOUNDARY}--\r" - else - flattened_params - end - end - - module_function :build_multipart - - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/rack-test.gemspec b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/rack-test.gemspec deleted file mode 100644 index 2588a365..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/rack-test.gemspec +++ /dev/null @@ -1,73 +0,0 @@ -# -*- encoding: utf-8 -*- - -Gem::Specification.new do |s| - s.name = %q{rack-test} - s.version = "0.5.3" - - s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= - s.authors = ["Bryan Helmkamp"] - s.date = %q{2009-11-27} - s.description = %q{Rack::Test is a small, simple testing API for Rack apps. It can be used on its -own or as a reusable starting point for Web frameworks and testing libraries -to build on. Most of its initial functionality is an extraction of Merb 1.0's -request helpers feature.} - s.email = %q{bryan@brynary.com} - s.extra_rdoc_files = [ - "README.rdoc", - "MIT-LICENSE.txt" - ] - s.files = [ - ".document", - ".gitignore", - "History.txt", - "MIT-LICENSE.txt", - "README.rdoc", - "Rakefile", - "Thorfile", - "lib/rack/mock_session.rb", - "lib/rack/test.rb", - "lib/rack/test/cookie_jar.rb", - "lib/rack/test/methods.rb", - "lib/rack/test/mock_digest_request.rb", - "lib/rack/test/uploaded_file.rb", - "lib/rack/test/utils.rb", - "rack-test.gemspec", - "spec/fixtures/config.ru", - "spec/fixtures/fake_app.rb", - "spec/fixtures/foo.txt", - "spec/rack/test/cookie_spec.rb", - "spec/rack/test/digest_auth_spec.rb", - "spec/rack/test/multipart_spec.rb", - "spec/rack/test/utils_spec.rb", - "spec/rack/test_spec.rb", - "spec/spec.opts", - "spec/spec_helper.rb" - ] - s.homepage = %q{http://github.com/brynary/rack-test} - s.require_paths = ["lib"] - s.rubyforge_project = %q{rack-test} - s.rubygems_version = %q{1.3.5} - s.summary = %q{Simple testing API built on Rack} - s.test_files = [ - "spec/fixtures/fake_app.rb", - "spec/rack/test/cookie_spec.rb", - "spec/rack/test/digest_auth_spec.rb", - "spec/rack/test/multipart_spec.rb", - "spec/rack/test/utils_spec.rb", - "spec/rack/test_spec.rb", - "spec/spec_helper.rb" - ] - - if s.respond_to? :specification_version then - current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION - s.specification_version = 3 - - if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then - s.add_runtime_dependency(%q, [">= 1.0"]) - else - s.add_dependency(%q, [">= 1.0"]) - end - else - s.add_dependency(%q, [">= 1.0"]) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/fixtures/config.ru b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/fixtures/config.ru deleted file mode 100644 index 407c9b94..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/fixtures/config.ru +++ /dev/null @@ -1,3 +0,0 @@ -require "fake_app" - -run Rack::Test::FakeApp diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/fixtures/fake_app.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/fixtures/fake_app.rb deleted file mode 100644 index cb1041df..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/fixtures/fake_app.rb +++ /dev/null @@ -1,123 +0,0 @@ -require "sinatra/base" - -module Rack - module Test - - class FakeApp < Sinatra::Default - head "/" do - "meh" - end - - get "/" do - "Hello, GET: #{params.inspect}" - end - - get "/redirect" do - redirect "/redirected" - end - - get "/redirected" do - "You've been redirected" - end - - get "/void" do - [200, {}, ""] - end - - get "/cookies/show" do - request.cookies.inspect - end - - get "/COOKIES/show" do - request.cookies.inspect - end - - get "/not-cookies/show" do - request.cookies.inspect - end - - get "/cookies/set-secure" do - raise if params["value"].nil? - - response.set_cookie("secure-cookie", :value => params["value"], :secure => true) - "Set" - end - - get "/cookies/set-simple" do - raise if params["value"].nil? - - response.set_cookie "simple", params["value"] - "Set" - end - - get "/cookies/delete" do - response.delete_cookie "value" - end - - get "/cookies/count" do - old_value = request.cookies["count"].to_i || 0 - new_value = (old_value + 1).to_s - - response.set_cookie("count", :value => new_value) - new_value - end - - get "/cookies/set" do - raise if params["value"].nil? - - response.set_cookie("value", { - :value => params["value"], - :path => "/cookies", - :expires => Time.now + 10 - }) - "Set" - end - - get "/cookies/domain" do - old_value = request.cookies["count"].to_i || 0 - new_value = (old_value + 1).to_s - - response.set_cookie("count", :value => new_value, :domain => "localhost.com") - new_value - end - - get "/cookies/subdomain" do - old_value = request.cookies["count"].to_i || 0 - new_value = (old_value + 1).to_s - - response.set_cookie("count", :value => new_value, :domain => ".example.org") - new_value - end - - get "/cookies/set-uppercase" do - raise if params["value"].nil? - - response.set_cookie("VALUE", { - :value => params["value"], - :path => "/cookies", - :expires => Time.now + 10 - }) - "Set" - end - - get "/cookies/set-multiple" do - response.set_cookie("key1", :value => "value1") - response.set_cookie("key2", :value => "value2") - "Set" - end - - post "/" do - "Hello, POST: #{params.inspect}" - end - - put "/" do - "Hello, PUT: #{params.inspect}" - end - - delete "/" do - "Hello, DELETE: #{params.inspect}" - end - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/fixtures/foo.txt b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/fixtures/foo.txt deleted file mode 100644 index 5716ca59..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/fixtures/foo.txt +++ /dev/null @@ -1 +0,0 @@ -bar diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test/cookie_spec.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test/cookie_spec.rb deleted file mode 100644 index 998be11c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test/cookie_spec.rb +++ /dev/null @@ -1,199 +0,0 @@ -require "spec_helper" - -describe Rack::Test::Session do - def have_body(string) - simple_matcher "have body #{string.inspect}" do |response| - response.body.should == string - end - end - - context "cookies" do - it "keeps a cookie jar" do - get "/cookies/show" - check last_request.cookies.should == {} - - get "/cookies/set", "value" => "1" - get "/cookies/show" - last_request.cookies.should == { "value" => "1" } - end - - it "doesn't send expired cookies" do - get "/cookies/set", "value" => "1" - now = Time.now - Time.stub!(:now => now + 60) - get "/cookies/show" - last_request.cookies.should == {} - end - - it "escapes cookie values" do - jar = Rack::Test::CookieJar.new - jar["value"] = "foo;abc" - jar["value"].should == "foo;abc" - end - - it "doesn't send cookies with the wrong domain" do - get "http://www.example.com/cookies/set", "value" => "1" - get "http://www.other.example/cookies/show" - last_request.cookies.should == {} - end - - it "doesn't send cookies with the wrong path" do - get "/cookies/set", "value" => "1" - get "/not-cookies/show" - last_request.cookies.should == {} - end - - it "persists cookies across requests that don't return any cookie headers" do - get "/cookies/set", "value" => "1" - get "/void" - get "/cookies/show" - last_request.cookies.should == { "value" => "1" } - end - - it "deletes cookies" do - get "/cookies/set", "value" => "1" - get "/cookies/delete" - get "/cookies/show" - last_request.cookies.should == { } - end - - it "respects cookie domains when no domain is explicitly set" do - pending "FIXME: www.example.org should not get the first cookie" do - request("http://example.org/cookies/count").should have_body("1") - request("http://www.example.org/cookies/count").should have_body("1") - request("http://example.org/cookies/count").should have_body("2") - request("http://www.example.org/cookies/count").should have_body("2") - end - end - - it "treats domains case insensitively" do - get "http://example.com/cookies/set", "value" => "1" - get "http://EXAMPLE.COM/cookies/show" - last_request.cookies.should == { "value" => "1" } - end - - it "treats paths case sensitively" do - get "/cookies/set", "value" => "1" - get "/COOKIES/show" - last_request.cookies.should == {} - end - - it "prefers more specific cookies" do - get "http://example.com/cookies/set", "value" => "domain" - get "http://sub.example.com/cookies/set", "value" => "sub" - - get "http://sub.example.com/cookies/show" - check last_request.cookies.should == { "value" => "sub" } - - get "http://example.com/cookies/show" - last_request.cookies.should == { "value" => "domain" } - end - - it "treats cookie names case insensitively" do - get "/cookies/set", "value" => "lowercase" - get "/cookies/set-uppercase", "value" => "UPPERCASE" - get "/cookies/show" - last_request.cookies.should == { "VALUE" => "UPPERCASE" } - end - - it "defaults the domain to the request domain" do - get "http://example.com/cookies/set-simple", "value" => "cookie" - get "http://example.com/cookies/show" - check last_request.cookies.should == { "simple" => "cookie" } - - get "http://other.example/cookies/show" - last_request.cookies.should == {} - end - - it "defaults the domain to the request path up to the last slash" do - get "/cookies/set-simple", "value" => "1" - get "/not-cookies/show" - last_request.cookies.should == {} - end - - it "supports secure cookies" do - get "https://example.com/cookies/set-secure", "value" => "set" - get "http://example.com/cookies/show" - check last_request.cookies.should == {} - - get "https://example.com/cookies/show" - last_request.cookies.should == { "secure-cookie" => "set" } - end - - it "keeps separate cookie jars for different domains" do - get "http://example.com/cookies/set", "value" => "example" - get "http://example.com/cookies/show" - check last_request.cookies.should == { "value" => "example" } - - get "http://other.example/cookies/set", "value" => "other" - get "http://other.example/cookies/show" - check last_request.cookies.should == { "value" => "other" } - - get "http://example.com/cookies/show" - last_request.cookies.should == { "value" => "example" } - end - - it "keeps one cookie jar for domain and its subdomains" do - get "http://example.org/cookies/subdomain" - get "http://example.org/cookies/subdomain" - last_request.cookies.should == { "count" => "1" } - - get "http://foo.example.org/cookies/subdomain" - last_request.cookies.should == { "count" => "2" } - end - - it "allows cookies to be cleared" do - get "/cookies/set", "value" => "1" - clear_cookies - get "/cookies/show" - last_request.cookies.should == {} - end - - it "allow cookies to be set" do - set_cookie "value=10" - get "/cookies/show" - last_request.cookies.should == { "value" => "10" } - end - - it "allows an array of cookies to be set" do - set_cookie ["value=10", "foo=bar"] - get "/cookies/show" - last_request.cookies.should == { "value" => "10", "foo" => "bar" } - end - - it "parses multiple cookies properly" do - get "/cookies/set-multiple" - get "/cookies/show" - last_request.cookies.should == { "key1" => "value1", "key2" => "value2" } - end - - it "supports multiple sessions" do - with_session(:first) do - get "/cookies/set", "value" => "1" - get "/cookies/show" - last_request.cookies.should == { "value" => "1" } - end - - with_session(:second) do - get "/cookies/show" - last_request.cookies.should == { } - end - end - - it "uses :default as the default session name" do - get "/cookies/set", "value" => "1" - get "/cookies/show" - check last_request.cookies.should == { "value" => "1" } - - with_session(:default) do - get "/cookies/show" - last_request.cookies.should == { "value" => "1" } - end - end - - it "accepts explicitly provided cookies" do - request "/cookies/show", :cookie => "value=1" - last_request.cookies.should == { "value" => "1" } - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test/digest_auth_spec.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test/digest_auth_spec.rb deleted file mode 100644 index 474ec323..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test/digest_auth_spec.rb +++ /dev/null @@ -1,48 +0,0 @@ -require "spec_helper" - -describe Rack::Test::Session do - context "HTTP Digest authentication" do - - def app - app = Rack::Auth::Digest::MD5.new(Rack::Test::FakeApp.new) do |username| - { 'alice' => 'correct-password' }[username] - end - app.realm = 'WallysWorld' - app.opaque = 'this-should-be-secret' - app - end - - def be_challenge - simple_matcher "a HTTP Digest challenge response" do |response| - response.status == 401 && - response['WWW-Authenticate'] =~ /^Digest / && - response.body.empty? - end - end - - it 'incorrectly authenticates GETs' do - digest_authorize 'foo', 'bar' - get '/' - last_response.should be_challenge - end - - it "correctly authenticates GETs" do - digest_authorize "alice", "correct-password" - response = get "/" - response.should be_ok - end - - it "correctly authenticates POSTs" do - digest_authorize "alice", "correct-password" - response = post "/" - response.should be_ok - end - - it "returns a re-challenge if authenticating incorrectly" do - digest_authorize "alice", "incorrect-password" - response = get "/" - response.should be_challenge - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test/multipart_spec.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test/multipart_spec.rb deleted file mode 100644 index d0e7005e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test/multipart_spec.rb +++ /dev/null @@ -1,87 +0,0 @@ -require "spec_helper" - -describe Rack::Test::Session do - - def test_file_path - File.dirname(__FILE__) + "/../../fixtures/foo.txt" - end - - def uploaded_file - Rack::Test::UploadedFile.new(test_file_path) - end - - context "uploading a file" do - it "sends the multipart/form-data content type" do - post "/", "photo" => uploaded_file - last_request.env["CONTENT_TYPE"].should include("multipart/form-data;") - end - - it "sends regular params" do - post "/", "photo" => uploaded_file, "foo" => "bar" - last_request.POST["foo"].should == "bar" - end - - it "sends nested params" do - post "/", "photo" => uploaded_file, "foo" => {"bar" => "baz"} - last_request.POST["foo"]["bar"].should == "baz" - end - - it "sends multiple nested params" do - post "/", "photo" => uploaded_file, "foo" => {"bar" => {"baz" => "bop"}} - last_request.POST["foo"]["bar"]["baz"].should == "bop" - end - - it "sends params with arrays" do - pending "FIXME: should work the same with and without multipart" do - post "/", "photo" => uploaded_file, "foo" => ["1", "2"] - last_request.POST["foo"].should == ["1", "2"] - end - end - - it "sends params with encoding sensitive values" do - post "/", "photo" => uploaded_file, "foo" => "bar? baz" - last_request.POST["foo"].should == "bar? baz" - end - - it "sends params with parens in names" do - post "/", "photo" => uploaded_file, "foo(1i)" => "bar" - last_request.POST["foo(1i)"].should == "bar" - end - - it "sends params with encoding sensitive names" do - post "/", "photo" => uploaded_file, "foo bar" => "baz" - last_request.POST["foo bar"].should == "baz" - end - - it "sends files with the filename" do - post "/", "photo" => uploaded_file - last_request.POST["photo"][:filename].should == "foo.txt" - end - - it "sends files with the text/plain MIME type by default" do - post "/", "photo" => uploaded_file - last_request.POST["photo"][:type].should == "text/plain" - end - - it "sends files with the right name" do - post "/", "photo" => uploaded_file - last_request.POST["photo"][:name].should == "photo" - end - - it "allows overriding the content type" do - post "/", "photo" => Rack::Test::UploadedFile.new(test_file_path, "image/jpeg") - last_request.POST["photo"][:type].should == "image/jpeg" - end - - it "sends files with a Content-Length in the header" do - post "/", "photo" => uploaded_file - last_request.POST["photo"][:head].should include("Content-Length: 4") - end - - it "sends files as Tempfiles" do - post "/", "photo" => uploaded_file - last_request.POST["photo"][:tempfile].should be_a(::Tempfile) - end - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test/utils_spec.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test/utils_spec.rb deleted file mode 100644 index 5a999699..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test/utils_spec.rb +++ /dev/null @@ -1,97 +0,0 @@ -require "spec_helper" - -describe Rack::Test::Utils do - include Rack::Test::Utils - - describe "build_nested_query" do - it "converts empty strings to =" do - build_nested_query("").should == "=" - end - - it "converts nil to an empty string" do - build_nested_query(nil).should == "" - end - - it "converts hashes with nil values" do - build_nested_query(:a => nil).should == "a" - end - - it "converts hashes" do - build_nested_query(:a => 1).should == "a=1" - end - - it "converts hashes with multiple keys" do - hash = { :a => 1, :b => 2 } - ["a=1&b=2", "b=2&a=1"].should include(build_nested_query(hash)) - end - - it "converts arrays with one element" do - build_nested_query(:a => [1]).should == "a[]=1" - end - - it "converts arrays with multiple elements" do - build_nested_query(:a => [1, 2]).should == "a[]=1&a[]=2" - end - - it "converts nested hashes" do - build_nested_query(:a => { :b => 1 }).should == "a[b]=1" - end - - it "converts arrays nested in a hash" do - build_nested_query(:a => { :b => [1, 2] }).should == "a[b][]=1&a[b][]=2" - end - - it "converts arrays of hashes" do - build_nested_query(:a => [{ :b => 2}, { :c => 3}]).should == "a[][b]=2&a[][c]=3" - end - end - - describe "build_multipart" do - it "builds multipart bodies" do - files = Rack::Test::UploadedFile.new(multipart_file("foo.txt")) - data = build_multipart("submit-name" => "Larry", "files" => files) - - options = { - "CONTENT_TYPE" => "multipart/form-data; boundary=#{Rack::Test::MULTIPART_BOUNDARY}", - "CONTENT_LENGTH" => data.length.to_s, - :input => StringIO.new(data) - } - env = Rack::MockRequest.env_for("/", options) - params = Rack::Utils::Multipart.parse_multipart(env) - check params["submit-name"].should == "Larry" - check params["files"][:filename].should == "foo.txt" - params["files"][:tempfile].read.should == "bar\n" - end - - it "builds nested multipart bodies" do - files = Rack::Test::UploadedFile.new(multipart_file("foo.txt")) - data = build_multipart("people" => [{"submit-name" => "Larry", "files" => files}]) - - options = { - "CONTENT_TYPE" => "multipart/form-data; boundary=#{Rack::Test::MULTIPART_BOUNDARY}", - "CONTENT_LENGTH" => data.length.to_s, - :input => StringIO.new(data) - } - env = Rack::MockRequest.env_for("/", options) - params = Rack::Utils::Multipart.parse_multipart(env) - check params["people"][0]["submit-name"].should == "Larry" - check params["people"][0]["files"][:filename].should == "foo.txt" - params["people"][0]["files"][:tempfile].read.should == "bar\n" - end - - it "should return nil if no UploadedFiles were used" do - data = build_multipart("people" => [{"submit-name" => "Larry", "files" => "contents"}]) - data.should be_nil - end - - it "raises ArgumentErrors if params is not a Hash" do - lambda { - build_multipart("foo=bar") - }.should raise_error(ArgumentError, "value must be a Hash") - end - - def multipart_file(name) - File.join(File.dirname(__FILE__), "..", "..", "fixtures", name.to_s) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test_spec.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test_spec.rb deleted file mode 100644 index b0aaa61d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/rack/test_spec.rb +++ /dev/null @@ -1,443 +0,0 @@ -require "spec_helper" - -describe Rack::Test::Session do - describe "initialization" do - it "supports being initialized with a Rack::MockSession app" do - session = Rack::Test::Session.new(Rack::MockSession.new(app)) - session.request("/").should be_ok - end - - it "supports being initialized with an app" do - session = Rack::Test::Session.new(app) - session.request("/").should be_ok - end - end - - describe "#request" do - it "requests the URI using GET by default" do - request "/" - last_request.should be_get - last_response.should be_ok - end - - it "returns a response" do - request("/").should be_ok - end - - it "uses the provided env" do - request "/", "X-Foo" => "bar" - last_request.env["X-Foo"].should == "bar" - end - - it "defaults to GET" do - request "/" - last_request.env["REQUEST_METHOD"].should == "GET" - end - - it "defaults the REMOTE_ADDR to 127.0.0.1" do - request "/" - last_request.env["REMOTE_ADDR"].should == "127.0.0.1" - end - - it "sets rack.test to true in the env" do - request "/" - last_request.env["rack.test"].should == true - end - - it "defaults to port 80" do - request "/" - last_request.env["SERVER_PORT"].should == "80" - end - - it "defaults to example.org" do - request "/" - last_request.env["SERVER_NAME"].should == "example.org" - end - - it "yields the response to a given block" do - request "/" do |response| - response.should be_ok - end - end - - it "supports sending :params" do - request "/", :params => { "foo" => "bar" } - last_request.GET["foo"].should == "bar" - end - - it "doesn't follow redirects by default" do - request "/redirect" - last_response.should be_redirect - last_response.body.should be_empty - end - - it "allows passing :input in for POSTs" do - request "/", :method => :post, :input => "foo" - last_request.env["rack.input"].read.should == "foo" - end - - it "converts method names to a uppercase strings" do - request "/", :method => :put - last_request.env["REQUEST_METHOD"].should == "PUT" - end - - it "prepends a slash to the URI path" do - request "foo" - last_request.env["PATH_INFO"].should == "/foo" - end - - it "accepts params and builds query strings for GET requests" do - request "/foo?baz=2", :params => {:foo => {:bar => "1"}} - last_request.GET.should == { "baz" => "2", "foo" => { "bar" => "1" }} - end - - it "accepts raw input in params for GET requests" do - request "/foo?baz=2", :params => "foo[bar]=1" - last_request.GET.should == { "baz" => "2", "foo" => { "bar" => "1" }} - end - - it "accepts params and builds url encoded params for POST requests" do - request "/foo", :method => :post, :params => {:foo => {:bar => "1"}} - last_request.env["rack.input"].read.should == "foo[bar]=1" - end - - it "accepts raw input in params for POST requests" do - request "/foo", :method => :post, :params => "foo[bar]=1" - last_request.env["rack.input"].read.should == "foo[bar]=1" - end - - context "when the response body responds_to?(:close)" do - class CloseableBody - def initialize - @closed = false - end - - def each - return if @closed - yield "Hello, World!" - end - - def close - @closed = true - end - end - - it "closes response's body" do - body = CloseableBody.new - body.should_receive(:close) - - app = lambda do |env| - [200, {"Content-Type" => "text/html", "Content-Length" => "13"}, body] - end - - session = Rack::Test::Session.new(Rack::MockSession.new(app)) - session.request("/") - end - - it "closes response's body after iteration" do - app = lambda do |env| - [200, {"Content-Type" => "text/html", "Content-Length" => "13"}, CloseableBody.new] - end - - session = Rack::Test::Session.new(Rack::MockSession.new(app)) - session.request("/") - session.last_response.body.should == "Hello, World!" - end - end - - context "when input is given" do - it "should send the input" do - request "/", :method => "POST", :input => "foo" - last_request.env["rack.input"].read.should == "foo" - end - - it "should not send a multipart request" do - request "/", :method => "POST", :input => "foo" - last_request.env["CONTENT_TYPE"].should_not == "application/x-www-form-urlencoded" - end - end - - context "for a POST specified with :method" do - it "uses application/x-www-form-urlencoded as the CONTENT_TYPE" do - request "/", :method => "POST" - last_request.env["CONTENT_TYPE"].should == "application/x-www-form-urlencoded" - end - end - - context "for a POST specified with REQUEST_METHOD" do - it "uses application/x-www-form-urlencoded as the CONTENT_TYPE" do - request "/", "REQUEST_METHOD" => "POST" - last_request.env["CONTENT_TYPE"].should == "application/x-www-form-urlencoded" - end - end - - context "when CONTENT_TYPE is specified in the env" do - it "does not overwrite the CONTENT_TYPE" do - request "/", "CONTENT_TYPE" => "application/xml" - last_request.env["CONTENT_TYPE"].should == "application/xml" - end - end - - context "when the URL is https://" do - it "sets rack.url_scheme to https" do - get "https://example.org/" - last_request.env["rack.url_scheme"].should == "https" - end - - it "sets SERVER_PORT to 443" do - get "https://example.org/" - last_request.env["SERVER_PORT"].should == "443" - end - - it "sets HTTPS to on" do - get "https://example.org/" - last_request.env["HTTPS"].should == "on" - end - end - - context "for a XHR" do - it "sends XMLHttpRequest for the X-Requested-With header" do - request "/", :xhr => true - last_request.env["HTTP_X_REQUESTED_WITH"].should == "XMLHttpRequest" - last_request.should be_xhr - end - end - end - - describe "#header" do - it "sets a header to be sent with requests" do - header "User-Agent", "Firefox" - request "/" - - last_request.env["HTTP_USER_AGENT"].should == "Firefox" - end - - it "persists across multiple requests" do - header "User-Agent", "Firefox" - request "/" - request "/" - - last_request.env["HTTP_USER_AGENT"].should == "Firefox" - end - - it "overwrites previously set headers" do - header "User-Agent", "Firefox" - header "User-Agent", "Safari" - request "/" - - last_request.env["HTTP_USER_AGENT"].should == "Safari" - end - - it "can be used to clear a header" do - header "User-Agent", "Firefox" - header "User-Agent", nil - request "/" - - last_request.env.should_not have_key("HTTP_USER_AGENT") - end - - it "is overridden by headers sent during the request" do - header "User-Agent", "Firefox" - request "/", "HTTP_USER_AGENT" => "Safari" - - last_request.env["HTTP_USER_AGENT"].should == "Safari" - end - end - - describe "#authorize" do - it "sets the HTTP_AUTHORIZATION header" do - authorize "bryan", "secret" - request "/" - - last_request.env["HTTP_AUTHORIZATION"].should == "Basic YnJ5YW46c2VjcmV0\n" - end - - it "includes the header for subsequent requests" do - basic_authorize "bryan", "secret" - request "/" - request "/" - - last_request.env["HTTP_AUTHORIZATION"].should == "Basic YnJ5YW46c2VjcmV0\n" - end - end - - describe "follow_redirect!" do - it "follows redirects" do - get "/redirect" - follow_redirect! - - last_response.should_not be_redirect - last_response.body.should == "You've been redirected" - end - - it "does not include params when following the redirect" do - get "/redirect", { "foo" => "bar" } - follow_redirect! - - last_request.GET.should == {} - end - - it "raises an error if the last_response is not set" do - lambda { - follow_redirect! - }.should raise_error(Rack::Test::Error) - end - - it "raises an error if the last_response is not a redirect" do - get "/" - - lambda { - follow_redirect! - }.should raise_error(Rack::Test::Error) - end - end - - describe "#last_request" do - it "returns the most recent request" do - request "/" - last_request.env["PATH_INFO"].should == "/" - end - - it "raises an error if no requests have been issued" do - lambda { - last_request - }.should raise_error(Rack::Test::Error) - end - end - - describe "#last_response" do - it "returns the most recent response" do - request "/" - last_response["Content-Type"].should == "text/html" - end - - it "raises an error if no requests have been issued" do - lambda { - last_response - }.should raise_error - end - end - - describe "after_request" do - it "runs callbacks after each request" do - ran = false - - rack_mock_session.after_request do - ran = true - end - - get "/" - ran.should == true - end - - it "runs multiple callbacks" do - count = 0 - - 2.times do - rack_mock_session.after_request do - count += 1 - end - end - - get "/" - count.should == 2 - end - end - - describe "#get" do - it_should_behave_like "any #verb methods" - - def verb - "get" - end - - it "uses the provided params hash" do - get "/", :foo => "bar" - last_request.GET.should == { "foo" => "bar" } - end - - it "sends params with parens in names" do - get "/", "foo(1i)" => "bar" - last_request.GET["foo(1i)"].should == "bar" - end - - it "supports params with encoding sensitive names" do - get "/", "foo bar" => "baz" - last_request.GET["foo bar"].should == "baz" - end - - it "supports params with nested encoding sensitive names" do - get "/", "boo" => {"foo bar" => "baz"} - last_request.GET.should == {"boo" => {"foo bar" => "baz"}} - end - - it "accepts params in the path" do - get "/?foo=bar" - last_request.GET.should == { "foo" => "bar" } - end - end - - describe "#head" do - it_should_behave_like "any #verb methods" - - def verb - "head" - end - end - - describe "#post" do - it_should_behave_like "any #verb methods" - - def verb - "post" - end - - it "uses the provided params hash" do - post "/", :foo => "bar" - last_request.POST.should == { "foo" => "bar" } - end - - it "supports params with encoding sensitive names" do - post "/", "foo bar" => "baz" - last_request.POST["foo bar"].should == "baz" - end - - it "uses application/x-www-form-urlencoded as the CONTENT_TYPE" do - post "/" - last_request.env["CONTENT_TYPE"].should == "application/x-www-form-urlencoded" - end - - it "accepts a body" do - post "/", "Lobsterlicious!" - last_request.body.read.should == "Lobsterlicious!" - end - - context "when CONTENT_TYPE is specified in the env" do - it "does not overwrite the CONTENT_TYPE" do - post "/", {}, { "CONTENT_TYPE" => "application/xml" } - last_request.env["CONTENT_TYPE"].should == "application/xml" - end - end - end - - describe "#put" do - it_should_behave_like "any #verb methods" - - def verb - "put" - end - - it "accepts a body" do - put "/", "Lobsterlicious!" - last_request.body.read.should == "Lobsterlicious!" - end - end - - describe "#delete" do - it_should_behave_like "any #verb methods" - - def verb - "delete" - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/spec.opts b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/spec.opts deleted file mode 100644 index 7bfa3f20..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/spec.opts +++ /dev/null @@ -1,2 +0,0 @@ ---color --fs diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/spec_helper.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/spec_helper.rb deleted file mode 100644 index 7c31b98b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rack-test-0.5.3/spec/spec_helper.rb +++ /dev/null @@ -1,52 +0,0 @@ -require "rubygems" -require "spec" - -gem "rack", "~> 1.0.0" - -require "rack/test" -require File.dirname(__FILE__) + "/fixtures/fake_app" - -Spec::Runner.configure do |config| - config.include Rack::Test::Methods - - def app - Rack::Lint.new(Rack::Test::FakeApp.new) - end - - def check(*args) - end - -end - -describe "any #verb methods", :shared => true do - it "requests the URL using VERB" do - send(verb, "/") - - check last_request.env["REQUEST_METHOD"].should == verb.upcase - last_response.should be_ok - end - - it "uses the provided env" do - send(verb, "/", {}, { "HTTP_USER_AGENT" => "Rack::Test" }) - last_request.env["HTTP_USER_AGENT"].should == "Rack::Test" - end - - it "yields the response to a given block" do - yielded = false - - send(verb, "/") do |response| - response.should be_ok - yielded = true - end - - yielded.should be_true - end - - context "for a XHR" do - it "sends XMLHttpRequest for the X-Requested-With header" do - send(verb, "/", {}, { :xhr => true }) - last_request.env["HTTP_X_REQUESTED_WITH"].should == "XMLHttpRequest" - last_request.should be_xhr - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/CHANGES b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/CHANGES deleted file mode 100644 index 3b1a02b8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/CHANGES +++ /dev/null @@ -1,440 +0,0 @@ - -= Rake Changelog - -== Version 0.8.7 - -* Fixed EXEEXT for JRuby on windows. - -== Version 0.8.6 - -* Minor fixes to the RDoc generation (removed dependency on darkfish - and removed inline source option). - -== Version 0.8.5 - -* Better support for the system command on Windows. - -== Version 0.8.4 - -* Preserve case when locating rakefiles (patch from James - M. Lawrence/quix) - -* Better support for windows paths in the test task (patch from Simon - Chiang/bahuvrihi) - -* Windows system dir search order is now: HOME, HOMEDRIVE + HOMEPATH, - APPDATA, USERPROFILE (patch from Luis Lavena) - -* MingGW is now recognized as a windows platform. (patch from Luis - Lavena) - -* Numerous fixes to the windows test suite (patch from Luis Lavena). - -* Improved Rakefile case insensitivity testing (patch from Luis - Lavena). - -* Fixed stray ARGV option problem that was interfering with - Test::Unit::Runner. - -* Fixed default verbose mode (was accidently changed to false). - -* Removed reference to manage_gem to fix the warning produced by the - gem package task. - -== Version 0.8.3 - -* Enhanced the system directory detection in windows. We now check - HOMEDRIVE/HOMEPATH and USERPROFILE if APPDATA isn't found. (Patch - supplied by James Tucker). Rake no long aborts if it can't find the - directory. - -* Added fix to handle ruby installations in directories with spaces in - their name. - -== Version 0.8.2 - -* Fixed bug in package task so that it will include the subdir - directory in the package for testing. (Bug found by Adam Majer) - -* Added ENV var to rakefile to prevent OS X from including extended - attribute junk in a tar file. (Bug found by Adam Majer) - -* Fixed filename dependency order bug in test_inspect_pending and - test_to_s_pending. (Bug found by Adam Majer) - -* Fixed check for file utils options to make them immune to the - symbol/string differences. (Patch supplied by Edwin Pratomo) - -* Fixed bug with rules involving multiple source (Patch supplied by - Emanuel Indermhle) - -* Switched from getoptlong to optparse (patches supplied by Edwin - Pratomo) - -* The -T option will now attempt to dynamically sense the size of the - terminal. RAKE_COLUMNS will override any dynamic sensing. - -* FileList#clone and FileList#dup have better sematics w.r.t. taint - and freeze. - -* Added ability clear prerequisites, and/or actions from an existing - task. - -* Added the ability to reenable a task to be invoked a second time. - -* Changed RDoc test task to have no default template. This makes it - easier for the tempate to pick up the template from the environment. - -* Changed from using Mutex to Monitor. Evidently Mutex causes thread - join errors when Ruby is compiled with -disable-pthreads. (Patch - supplied by Ittay Dror) - -* Fixed bug in makefile parser that had problems with extra spaces in - file task names. (Patch supplied by Ittay Dror) - -* Added a performance patch for reading large makefile dependency - files. (Patch supplied by Ittay Dror) - -* Default values for task arguments can easily be specified with the - :with_defaults method. (Idea for default argument merging supplied - by (Adam Q. Salter) - -* The -T output will only self-truncate if the output is a tty. - However, if RAKE_COLUMNS is explicitly set, it will be honored in - any case. (Patch provided by Gavin Stark). - -* Numerous fixes for running under windows. A big thanks to Bheeshmar - Redheendran for spending a good part of the afternoon at the - Lonestar Ruby Conference to help me work out these issues. - -== Version 0.8.1 - -* Removed requires on parsedate.rb (in Ftptools) -* Removed ftools from rake.rb. Made it options in sys.rb - -== Version 0.8.0 - -* Added task parameters (e.g. "rake build[version7]") -* Made task parameters passable to prerequisites. -* Comments are limited to 80 columns or so (suggested by Jamis Buck). -* Added -D to display full comments (suggested by Jamis Buck). -* The rake program will set the status value used in any explicit - exit(n) calls. (patch provided by Stephen Touset) -* Fixed error in functional tests that were not including session (and - silently skipping the functionl tests. -* Removed --usage and make -h the same as -H. -* Make a prettier inspect for tasks. - -== Version 0.7.3 - -* Added existing and existing! methods to FileList -* FileLists now claim to be Arrays (via is_a?) to get better support - from the FileUtil module. -* Added init and top_level for custom rake applications. - -== Version 0.7.2 - -* Error messages are now send to stderr rather than stdout (from - Payton Quackenbush). -* Better error handling on invalid command line arguments (from Payton - Quackenbush). -* Added rcov task and updated unit testing for better code coverage. -* Fixed some bugs where the application object was going to the global - appliation instead of using its own data. -* Added square and curly bracket patterns to FileList#include (Tilman - Sauerbeck). -* Added plain filename support to rule dependents (suggested by Nobu - Nakada). -* Added pathmap support to rule dependents. -* Added a 'tasks' method to a namespace to get a list of tasks - associated with the namespace. -* Fixed the method name leak from FileUtils (bug found by Glenn - Vanderburg). -* Added rake_extension to handle detection of extension collisions. -* Added test for noop, bad_option and verbose flags to sh command. -* Removed dependency on internal fu_xxx functions from FileUtils. -* Added a 'shame' task to the Rakefile. -* Added tar_command and zip_command options to the Package task. -* Added a description to the gem task in GemPackageTask. -* Fixed a bug when rules have multiple prerequisites (patch by Joel - VanderWerf) -* Added a protected 'require "rubygems"' to test/test_application to - unbreak cruisecontrol.rb. -* Added the handful of RakeFileUtils to the private method as well. -* Added block based exclusion. -* The clean task will no longer delete 'core' if it is a directory. -* Removed rake_dup. Now we just simply rescue a bad dup. -* Refactored the FileList reject logic to remove duplication. -* Removed if __FILE__ at the end of the rake.rb file. - -== Version 0.7.1 - -* Added optional filter parameter to the --tasks command line option. -* Added flatten to allow rule transform procs to return lists of - prereqs (Joel VanderWerf provided patch). -* Added pathmap to String and FileList. -* The -r option will now load .rake files (but a straight require - doesn't yet). NOTE: This is experimental ... it may be - discontinued. -* The -f option without a value will disable the search for a - Rakefile. The assumption is that the -r files are adequate. -* Fixed the safe_ln function to fall back to cp in more error - scenarios. - -== Version 0.7.0 - -* Added Rake.original_dir to return the original starting directory of - the rake application. -* Added safe_ln support for openAFS (from Ludvig Omholt). -* Added --trace reminder on short exception messages (David Heinemeier - Hansson suggestion). -* Added multitask declaration that executes prerequisites in - parallel. (Doug Young providied an initial implementation). -* Fixed missing_const hack to be compatible with Rails. (Jamis Buck - supplied test case). -* Made the RDoc task default to internal (in-process) RDoc formatting. - The old behavior is still available by setting the +external+ flag - to true. -* Rakefiles are now loaded with the expanded path to prevent - accidental polution from the Ruby load path. -* The +namespace+ command now returns a NameSpace object that can be - used to lookup tasks defined in that namespace. This allows for - better anonymous namespace behavior. -* Task objects my now be used in prerequisite lists directly. - -== Version 0.6.1 - -* Rebuilt 0.6.0 gem without signing. - -== Version 0.6.0 - -* Fixed file creation bug in the unit tests (caused infinite loop on - windows). -* Fixed bug where session based functional tests were run under - windows. -* Fixed bug in directory tasks so that updating a directory will not - retrigger file tasks depending on the directory (see - FileCreationTask and EarlyTime). -* Added egrep to FileList -* ruby command now runs same ruby version as rake. -* Added investigation to task object. (suggested by Martin Fowler) -* Added ruby_opts to the test task to allow arbitrary ruby options to - be passed to the test script. (Greg Fast) -* Fixed the test loader to ignore options. (Greg Fast) -* Moved Task, FileTask, FileCreationTask and RakeApp into the Rake - module namespace. Old style namespace behavior can be invoked via - the --classic-namespace option. (requested by Kelly Felkins). -* GemTask is now sensitive to the gem platform (Masao Mutoh). -* A non-existing file prerequisite will no longer cause an exception - (Philipp Neubeck). -* Multiple prerequisites on Rake rules now allowed (initial patch - supplied by Stuart Jansen). - -== Version 0.5.4 - -* Added double quotes to the test runner. -* Added .svn to default ignore list. -* Updated FileList#include to support nested arrays and filelists. - -== Version 0.5.3 - -* Added support for importing Rakefile and other dependencies. -* Fixed bug so that now rules can chain off of existing tasks as well - as existing files. -* Fixed verbose flag bug in the testing task. Shortened some failure - messages. -* Make FileUtils methods private at the top level module to avoid - accidental method leaking into other objects. -* Added test loader option to test task. "testrb" is no longer the - default test loader. It is now eating syntax errors that should - halt the unit tests. -* Revamped FileList so that it works more like and array (addressed - flatten bug). Added many tests around file list. -* Added +ext+ method to both String and FileList. - -== Version 0.5.0 - -* Fixed documentation that was lacking the Rake module name (Tilman - Sauerbeck). -* Added tar.gz and tar.bz2 support to package task (Tilman Sauerbeck). -* Recursive rules are now supported (Tilman Sauerbeck). -* Added warning option for the Test Task (requested by Eric Hodel). -* The jamis rdoc template is only used if it exists. -* Added fix for Ruby 1.8.2 test/unit and rails problem. -* Added contributed rake man file (Jani Monoses). -* Added Brian Candler's fix for problems in --trace and --dry-run - mode. - -== Version 0.4.15 - -* Fixed a bug that prevented the TESTOPTS flag from working with the - revised for 1.8.2 test task. -* Updated the docs on --trace to indicate that it also enables a full - backtrace on errors. - -== Version 0.4.14 - -* Modified the TestTask to workaround the Ruby 1.8.2 change in - autoexecuting unit tests. - -== Version 0.4.13 - -* Fixed the dry-run flag so it is operating again. -* Multiple arguments to sh and ruby commands will not be interpreted - by the shell (patch provided by Jonathan Paisley). - -== Version 0.4.12 - -* Added --silent (-s) to suppress the (in directory) rake message. - -== Version 0.4.11 - -* Changed the "don't know how to rake" message (finally) -* Changes references to a literal "Rakefile" to reference the global - variable $rakefile (which contains the actual name of the rakefile). - -== Version 0.4.10 - -* Added block support to the "sh" command, allowing users to take - special actions on the result of the system call. E.g. - - sh "shell_command" do |ok, res| - puts "Program returned #{res.exitstatus}" if ! ok - end - -== Version 0.4.9 - -* Switched to Jamis Buck's RDoc template. -* Removed autorequire from Rake's gem spec. This prevents the Rake - libraries from loading while using rails. - -== Version 0.4.8 - -* Added support for .rb versions of Rakefile. -* Removed \\\n's from test task. -* Fixed Ruby 1.9 compatibility issue with FileList. - -== Version 0.4.7 - -* Fixed problem in FileList that caused Ruby 1.9 to go into infinite - recursion. Since to_a was removed from Object, it does not need to - added back into the list of methods to rewrite in FileList. (Thanks - to Kent Sibilev for pointing this out). - -== Version 0.4.6 -* Removed test version of ln in FileUtils that prevented safe_ln from - using ln. - -== Version 0.4.5 -* Upgraded comments in TestTask. -* FileList to_s and inspect now automatically resolve pending changes. -* FileList#exclude properly returns the FileList. - -== Version 0.4.4 -* Fixed initialization problem with @comment. -* Now using multi -r technique in TestTask. Switch Rakefile back to - using the built-in test task macros because the rake runtime is no - longer needed. -* Added 'TEST=filename' and 'TESTOPTS=options' to the Test Task - macros. -* Allow a +test_files+ attribute in test tasks. This allows more - flexibility in specifying test files. - -== Version 0.4.3 -* Fixed Comment leakage. - -== Version 0.4.2 -* Added safe_ln that falls back to a copy if a file link is not supported. -* Package builder now uses safe_ln. - -== Version 0.4.1 -* Task comments are now additive, combined with "/". -* Works with (soon to be released) rubygems 0.6.2 (or 0.7.0) - -== Version 0.4.0 -* FileList now uses deferred loading. The file system is not searched - until the first call that needs the file names. -* VAR=VALUE options are now accepted on the command line and are - treated like environment variables. The values may be tested in a - Rakefile by referencing ENV['VAR']. -* File.mtime is now used (instead of File.new().mtime). - -== Version 0.3.2.x - -* Removed some hidden dependencies on rubygems. Tests now will test - gems only if they are installed. -* Removed Sys from some example files. I believe that is that last - reference to Sys outside of the contrib area. -* Updated all copyright notices to include 2004. - -== Version 0.3.2 - -* GEM Installation now works with the application stub. - -== Version 0.3.1 - -* FileLists now automatically ignore CVS, .bak, ! -* GEM Installation now works. - -== Version 0.3.0 - -Promoted 0.2.10. - -== Version 0.2.10 -General - -* Added title to Rake's rdocs -* Contrib packages are no longer included in the documentation. - -RDoc Issues - -* Removed default for the '--main' option -* Fixed rendering of the rdoc options -* Fixed clean/clobber confusion with rerdoc -* 'title' attribute added - -Package Task Library Issues - -* Version (or explicit :noversion) is required. -* +package_file+ attribute is now writable - -FileList Issues - -* Dropped bang version of exclude. Now using ant-like include/exclude semantics. -* Enabled the "yield self" idiom in FileList#initialize. - -== Version 0.2.9 - -This version contains numerous changes as the RubyConf.new(2003) -presentation was being prepared. The changes include: - -* The monolithic rubyapp task library is in the process of being - dropped in favor of lighter weight task libraries. - -== Version 0.2.7 - -* Added "desc" for task descriptions. -* -T will now display tasks with descriptions. -* -P will display tasks and prerequisites. -* Dropped the Sys module in favor of the 1.8.x FileUtils module. Sys - is still supported in the contrib area. - -== Version 0.2.6 - -* Moved to RubyForge - -== Version 0.2.5 - -* Switched to standard ruby app builder. -* Added no_match option to file matcher. - -== Version 0.2.4 - -* Fixed indir, which neglected to actually change directories. - -== Version 0.2.3 - -* Added rake module for a help target -* Added 'for_files' to Sys -* Added a $rakefile constant -* Added test for selecting proper rule with multiple targets. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/MIT-LICENSE b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/MIT-LICENSE deleted file mode 100644 index 72734753..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/MIT-LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2003, 2004 Jim Weirich - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/README b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/README deleted file mode 100644 index 41668dd7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/README +++ /dev/null @@ -1,196 +0,0 @@ -= RAKE -- Ruby Make - -Supporting Rake version: 0.8.6 - -This package contains Rake, a simple ruby build program with -capabilities similar to make. - -Rake has the following features: - -* Rakefiles (rake's version of Makefiles) are completely defined in - standard Ruby syntax. No XML files to edit. No quirky Makefile - syntax to worry about (is that a tab or a space?) - -* Users can specify tasks with prerequisites. - -* Rake supports rule patterns to synthesize implicit tasks. - -* Flexible FileLists that act like arrays but know about manipulating - file names and paths. - -* A library of prepackaged tasks to make building rakefiles easier. For example, - tasks for building tarballs, gems and RDoc output are provided. - -* Supports parallel execution of tasks. - - -== Installation - -=== Gem Installation - -Download and install rake with the following. - - gem install rake - -=== Normal Installation - -You can download the source tarball of the latest version of Rake from - -* http://rubyforge.org/project/showfiles.php?group_id=50 - -Extract the tarball and run - - % ruby install.rb - -from its distribution directory. - -== Usage - -=== Simple Example - -First, you must write a "Rakefile" file which contains the build rules. Here's -a simple example: - - task :default => [:test] - - task :test do - ruby "test/unittest.rb" - end - -This Rakefile has two tasks: - -* A task named "test", which - upon invocation - will run a unit test file in - Ruby. -* A task named "default". This task does nothing by itself, but it has exactly - one dependency, namely the "test" task. Invoking the "default" task will - cause Rake to invoke the "test" task as well. - -Running the "rake" command without any options will cause it to run the -"default" task in the Rakefile: - - % ls - Rakefile test/ - % rake - (in /home/some_user/Projects/rake) - ruby test/unittest.rb - ....unit test output here... - -Type "rake --help" for all available options. - - -=== More Information - -* For details on Rake's command-line invocation, read - doc/command_line_usage.rdoc[http://rake.rubyforge.org/files/doc/command_line_usage_rdoc.html] -* For details on writing Rakefiles, see - doc/rakefile.rdoc[http://rake.rubyforge.org/files/doc/rakefile_rdoc.html]. -* For the original announcement of Rake, see - doc/rational.rdoc[http://rake.rubyforge.org/files/doc/rational_rdoc.html]. -* For a glossary of terms, see - doc/glossary.rdoc[http://rake.rubyforge.org/files/doc/glossary_rdoc.html]. - - -== Development - -=== Source Repository - -Rake is currently hosted at github. The github web page is -http://github.com/jimweirich/rake. The public git clone URL is - -* git://github.com/jimweirich/rake.git - -=== Running the Rake Test Suite - -If you wish to run the unit and functional tests that come with Rake: - -* Install the 'session' gem in order to run the functional tests. -* CD into the top project directory of rake. -* Type one of the following: - - rake # If you have a version of rake installed - ruby -Ilib bin/rake # If you do not have a version of rake installed. - -=== Issues and Bug Reports - -Bugs, features requests and other issues can be logged at - -* http://onestepback.org/redmine/projects/show/rake - -You will need an account to before you can post issues. Register at -http://onestepback.org/redmine/account/register. Or you can send me -an email (at jim dot weirich at gmail dot com) - - -== Online Resources - -=== Rake References - -* Rake Documentation Home: http://docs.rubyrake.org -* Rake Project Page: http://rubyforge.org/projects/rake -* Rake API Documents: http://rake.rubyforge.org -* Rake Source Code Repo: http://github.com/jimweirich/rake -* Rake Git Repo Clone URL: git://github.com/jimweirich/rake.git - -=== Presentations and Articles about Rake - -* Jim Weirich's 2003 RubyConf presentation: http://onestepback.org/articles/buildingwithrake/ -* Martin Fowler's article on Rake: http://martinfowler.com/articles/rake.html - -== Other Make Reinvisionings ... - -Rake is a late entry in the make replacement field. Here are links to -other projects with similar (and not so similar) goals. - -* http://directory.fsf.org/bras.html -- Bras, one of earliest - implementations of "make in a scripting language". -* http://www.a-a-p.org -- Make in Python -* http://www.aromatic.com/tools/jam.txt -- JAM, Java Automated Make -* http://ant.apache.org -- The Ant project -* http://ppt.perl.org/commands/make/index.html -- Make from the Perl - Power Tools implementation. -* http://search.cpan.org/search?query=PerlBuildSystem -- The Perl Build System -* http://make.rubyforge.org -- Rant, another Ruby make tool. - -== Credits - -[Ryan Dlugosz] For the initial conversation that sparked Rake. - -[nobu.nokada@softhome.net] For the initial patch for rule support. - -[Tilman Sauerbeck ] For the recursive rule patch. - -== License - -Rake is available under an MIT-style license. - -:include: MIT-LICENSE - -== Support - -The Rake homepage is http://rake.rubyforge.org. You can find the Rake -RubyForge page at http://rubyforge.org/projects/rake. - -Feel free to submit commits or feature requests. If you send a patch, -remember to update the corresponding unit tests. If fact, I prefer -new feature to be submitted in the form of new unit tests. - -For other information, feel free to ask on the ruby-talk mailing list -(which is mirrored to comp.lang.ruby) or contact -jim dot weirich at gmail.com. - ---- - -= Other stuff - -Author:: Jim Weirich -Requires:: Ruby 1.8.0 or later -License:: Copyright 2003-2008 by Jim Weirich. - Released under an MIT-style license. See the LICENSE file - included in the distribution. - -== Warranty - -This software is provided "as is" and without any express or -implied warranties, including, without limitation, the implied -warranties of merchantibility and fitness for a particular -purpose. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/Rakefile deleted file mode 100644 index 751ec983..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/Rakefile +++ /dev/null @@ -1,430 +0,0 @@ -# Rakefile for rake -*- ruby -*- - -# Copyright 2003, 2004, 2005 by Jim Weirich (jim@weirichhouse.org) -# All rights reserved. - -# This file may be distributed under an MIT style license. See -# MIT-LICENSE for details. - -begin - require 'rubygems' - require 'rake/gempackagetask' -rescue Exception - nil -end -require 'rake/clean' -require 'rake/testtask' -require 'rake/rdoctask' - -CLEAN.include('**/*.o', '*.dot', '**/.*.rbc') -CLOBBER.include('doc/example/main', 'testdata') -CLOBBER.include('test/data/**/temp_*') -CLOBBER.include('test/data/chains/play.*') -CLOBBER.include('test/data/file_creation_task/build') -CLOBBER.include('test/data/file_creation_task/src') -CLOBBER.include('TAGS') -CLOBBER.include('coverage', 'rcov_aggregate') - -# Prevent OS X from including extended attribute junk in the tar output -ENV['COPY_EXTENDED_ATTRIBUTES_DISABLE'] = 'true' - -def announce(msg='') - STDERR.puts msg -end - -# Determine the current version of the software - -if `ruby -Ilib ./bin/rake --version` =~ /rake, version ([0-9.]+)$/ - CURRENT_VERSION = $1 -else - CURRENT_VERSION = "0.0.0" -end - -$package_version = CURRENT_VERSION - -SRC_RB = FileList['lib/**/*.rb'] - -# The default task is run if rake is given no explicit arguments. - -desc "Default Task" -task :default => :test_all - -# Test Tasks --------------------------------------------------------- -task :dbg do |t| - puts "Arguments are: #{t.args.join(', ')}" -end - -# Common Abbreviations ... - -task :ta => :test_all -task :tf => :test_functional -task :tu => :test_units -task :tc => :test_contribs -task :test => :test_units - -Rake::TestTask.new(:test_all) do |t| - t.test_files = FileList[ - 'test/test*.rb', - 'test/contrib/test*.rb', - 'test/fun*.rb' - ] - t.warning = true - t.verbose = false -end - -Rake::TestTask.new(:test_units) do |t| - t.test_files = FileList['test/test*.rb'] - t.warning = true - t.verbose = false -end - -Rake::TestTask.new(:test_functional) do |t| - t.test_files = FileList['test/fun*.rb'] - t.warning = true - t.verbose = false -end - -Rake::TestTask.new(:test_contribs) do |t| - t.test_files = FileList['test/contrib/test*.rb'] - t.warning = true - t.verbose = false -end - -begin - require 'rcov/rcovtask' - - Rcov::RcovTask.new do |t| - t.libs << "test" - dot_rakes = - t.rcov_opts = [ - '-xRakefile', '-xrakefile', '-xpublish.rf', - '-xlib/rake/contrib', '-x/Library', - '--text-report', - '--sort coverage' - ] + FileList['rakelib/*.rake'].pathmap("-x%p") - t.test_files = FileList[ - 'test/test*.rb', 'test/functional.rb' - ] - t.output_dir = 'coverage' - t.verbose = true - end -rescue LoadError - puts "RCov is not available" -end - -directory 'testdata' -[:test_all, :test_units, :test_contribs, :test_functional].each do |t| - task t => ['testdata'] -end - -# CVS Tasks ---------------------------------------------------------- - -# Install rake using the standard install.rb script. - -desc "Install the application" -task :install do - ruby "install.rb" -end - -# Create a task to build the RDOC documentation tree. - -begin - require 'darkfish-rdoc' - DARKFISH_ENABLED = true -rescue LoadError => ex - DARKFISH_ENABLED = false -end - -BASE_RDOC_OPTIONS = [ - '--line-numbers', - '--main', 'README', - '--title', 'Rake -- Ruby Make', -] - -rd = Rake::RDocTask.new("rdoc") do |rdoc| - rdoc.rdoc_dir = 'html' - rdoc.template = 'doc/jamis.rb' - rdoc.title = "Rake -- Ruby Make" - rdoc.options = BASE_RDOC_OPTIONS.dup - rdoc.options << '-SHN' << '-f' << 'darkfish' if DARKFISH_ENABLED - - rdoc.rdoc_files.include('README', 'MIT-LICENSE', 'TODO', 'CHANGES') - rdoc.rdoc_files.include('lib/**/*.rb', 'doc/**/*.rdoc') - rdoc.rdoc_files.exclude(/\bcontrib\b/) -end - -# ==================================================================== -# Create a task that will package the Rake software into distributable -# tar, zip and gem files. - -PKG_FILES = FileList[ - 'install.rb', - '[A-Z]*', - 'bin/**/*', - 'lib/**/*.rb', - 'test/**/*.rb', - 'test/**/*.rf', - 'test/**/*.mf', - 'test/**/Rakefile', - 'test/**/subdir', - 'doc/**/*' -] -PKG_FILES.exclude('doc/example/*.o') -PKG_FILES.exclude('TAGS') -PKG_FILES.exclude(%r{doc/example/main$}) - -if ! defined?(Gem) - puts "Package Target requires RubyGEMs" -else - SPEC = Gem::Specification.new do |s| - - #### Basic information. - - s.name = 'rake' - s.version = $package_version - s.summary = "Ruby based make-like utility." - s.description = <<-EOF - Rake is a Make-like program implemented in Ruby. Tasks - and dependencies are specified in standard Ruby syntax. - EOF - - #### Dependencies and requirements. - - #s.add_dependency('log4r', '> 1.0.4') - #s.requirements << "" - - #### Which files are to be included in this gem? Everything! (Except CVS directories.) - - s.files = PKG_FILES.to_a - - #### C code extensions. - - #s.extensions << "ext/rmagic/extconf.rb" - - #### Load-time details: library and application (you will need one or both). - - s.require_path = 'lib' # Use these for libraries. - - s.bindir = "bin" # Use these for applications. - s.executables = ["rake"] - s.default_executable = "rake" - - #### Documentation and testing. - - s.has_rdoc = true - s.extra_rdoc_files = rd.rdoc_files.reject { |fn| fn =~ /\.rb$/ }.to_a - s.rdoc_options = BASE_RDOC_OPTIONS - - #### Author and project details. - - s.author = "Jim Weirich" - s.email = "jim@weirichhouse.org" - s.homepage = "http://rake.rubyforge.org" - s.rubyforge_project = "rake" -# if ENV['CERT_DIR'] -# s.signing_key = File.join(ENV['CERT_DIR'], 'gem-private_key.pem') -# s.cert_chain = [File.join(ENV['CERT_DIR'], 'gem-public_cert.pem')] -# end - end - - package_task = Rake::GemPackageTask.new(SPEC) do |pkg| - pkg.need_zip = true - pkg.need_tar = true - end - - file "rake.gemspec" => ["Rakefile", "lib/rake.rb"] do |t| - require 'yaml' - open(t.name, "w") { |f| f.puts SPEC.to_yaml } - end - - desc "Create a stand-alone gemspec" - task :gemspec => "rake.gemspec" -end - -# Misc tasks ========================================================= - -def count_lines(filename) - lines = 0 - codelines = 0 - open(filename) { |f| - f.each do |line| - lines += 1 - next if line =~ /^\s*$/ - next if line =~ /^\s*#/ - codelines += 1 - end - } - [lines, codelines] -end - -def show_line(msg, lines, loc) - printf "%6s %6s %s\n", lines.to_s, loc.to_s, msg -end - -desc "Count lines in the main rake file" -task :lines do - total_lines = 0 - total_code = 0 - show_line("File Name", "LINES", "LOC") - SRC_RB.each do |fn| - lines, codelines = count_lines(fn) - show_line(fn, lines, codelines) - total_lines += lines - total_code += codelines - end - show_line("TOTAL", total_lines, total_code) -end - -# Define an optional publish target in an external file. If the -# publish.rf file is not found, the publish targets won't be defined. - -load "publish.rf" if File.exist? "publish.rf" - -# Support Tasks ------------------------------------------------------ - -RUBY_FILES = FileList['**/*.rb'].exclude('pkg') - -desc "Look for TODO and FIXME tags in the code" -task :todo do - RUBY_FILES.egrep(/#.*(FIXME|TODO|TBD)/) -end - -desc "Look for Debugging print lines" -task :dbg do - RUBY_FILES.egrep(/\bDBG|\bbreakpoint\b/) -end - -desc "List all ruby files" -task :rubyfiles do - puts RUBY_FILES - puts FileList['bin/*'].exclude('bin/*.rb') -end -task :rf => :rubyfiles - -desc "Create a TAGS file" -task :tags => "TAGS" - -TAGS = 'xctags -e' - -file "TAGS" => RUBY_FILES do - puts "Makings TAGS" - sh "#{TAGS} #{RUBY_FILES}", :verbose => false -end - -# -------------------------------------------------------------------- -# Creating a release - -def plugin(plugin_name) - require "rake/plugins/#{plugin_name}" -end - -task :noop -#plugin "release_manager" - -desc "Make a new release" -task :release, :rel, :reuse, :reltest, - :needs => [ - :prerelease, - :clobber, - :test_all, - :update_version, - :package, - :tag - ] do - announce - announce "**************************************************************" - announce "* Release #{$package_version} Complete." - announce "* Packages ready to upload." - announce "**************************************************************" - announce -end - -# Validate that everything is ready to go for a release. -task :prerelease, :rel, :reuse, :reltest do |t, args| - $package_version = args.rel - announce - announce "**************************************************************" - announce "* Making RubyGem Release #{$package_version}" - announce "* (current version #{CURRENT_VERSION})" - announce "**************************************************************" - announce - - # Is a release number supplied? - unless args.rel - fail "Usage: rake release[X.Y.Z] [REUSE=tag_suffix]" - end - - # Is the release different than the current release. - # (or is REUSE set?) - if $package_version == CURRENT_VERSION && ! args.reuse - fail "Current version is #{$package_version}, must specify REUSE=tag_suffix to reuse version" - end - - # Are all source files checked in? - if args.reltest - announce "Release Task Testing, skipping checked-in file test" - else - announce "Checking for unchecked-in files..." - data = `svn st` - unless data =~ /^$/ - abort "svn status is not clean ... do you have unchecked-in files?" - end - announce "No outstanding checkins found ... OK" - end -end - -task :update_version, :rel, :reuse, :reltest, - :needs => [:prerelease] do |t, args| - if args.rel == CURRENT_VERSION - announce "No version change ... skipping version update" - else - announce "Updating Rake version to #{args.rel}" - open("lib/rake.rb") do |rakein| - open("lib/rake.rb.new", "w") do |rakeout| - rakein.each do |line| - if line =~ /^RAKEVERSION\s*=\s*/ - rakeout.puts "RAKEVERSION = '#{args.rel}'" - else - rakeout.puts line - end - end - end - end - mv "lib/rake.rb.new", "lib/rake.rb" - if args.reltest - announce "Release Task Testing, skipping commiting of new version" - else - sh %{svn commit -m "Updated to version #{args.rel}" lib/rake.rb} # " - end - end -end - -desc "Tag all the CVS files with the latest release number (REL=x.y.z)" -task :tag, :rel, :reuse, :reltest, - :needs => [:prerelease] do |t, args| - reltag = "REL_#{args.rel.gsub(/\./, '_')}" - reltag << args.reuse.gsub(/\./, '_') if args.reuse - announce "Tagging Repository with [#{reltag}]" - if args.reltest - announce "Release Task Testing, skipping CVS tagging" - else - sh %{svn copy svn+ssh://rubyforge.org/var/svn/rake/trunk svn+ssh://rubyforge.org/var/svn/rake/tags/#{reltag} -m 'Commiting release #{reltag}'} ###' - end -end - -desc "Install the jamis RDoc template" -task :install_jamis_template do - require 'rbconfig' - dest_dir = File.join(Config::CONFIG['rubylibdir'], "rdoc/generators/template/html") - fail "Unabled to write to #{dest_dir}" unless File.writable?(dest_dir) - install "doc/jamis.rb", dest_dir, :verbose => true -end - -# Require experimental XForge/Metaproject support. - -load 'xforge.rf' if File.exist?('xforge.rf') - -desc "Where is the current directory. This task displays\nthe current rake directory" -task :where_am_i do - puts Rake.original_dir -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/TODO b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/TODO deleted file mode 100644 index bd8a9694..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/TODO +++ /dev/null @@ -1,20 +0,0 @@ -= Rake Project -- To Do List - -Send suggestions for this list to mailto:jim@weirichhouse.org or on -the rake-devel@rubyforge.org mailing list. - -=== To Do -* Need a nice API for accessing tasks in namespaces, namespaces in an app, etc. -* Provide a way to disable -w warning mode. -* Define a set of default rules that work in the absense of any Rakefile -* What about cyclic dependencies? -* Java support utilities -* Installation support utilities - * Check out installpkg.rb -* Autogenerate Dependencies -* Rules should apply to existing tasks if no actions are defined. -* How to create multiple package tasks without task name collision? -* Trap "ln -s" commands that fail and use "cp" instead (SMB mounted - drives have problems with "ln -s". - -(moved DONE list to CHANGES file) diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/bin/rake b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/bin/rake deleted file mode 100755 index c9e95da6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/bin/rake +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env ruby - -#-- -# Copyright (c) 2003, 2004, 2005, 2006, 2007 Jim Weirich -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -#++ - -begin - require 'rake' -rescue LoadError - require 'rubygems' - require 'rake' -end -Rake.application.run diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/command_line_usage.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/command_line_usage.rdoc deleted file mode 100644 index c60e53f5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/command_line_usage.rdoc +++ /dev/null @@ -1,102 +0,0 @@ -= Rake Command Line Usage - -Rake is invoked from the command line using: - - % rake [options ...] [VAR=VALUE] [targets ...] - -Options are: - -[name=value] - Set the environment variable name to value - during the execution of the rake command. You can access - the value by using ENV['name']. - -[--classic-namespace (-n)] - Import the Task, FileTask, and FileCreateTask into the top-level - scope to be compatible with older versions of Rake. Alternatively - you can include the line require - 'rake/classic_namespace' in your Rakefile to get the - classic behavior. - -[--describe _pattern_ (-D)] - Describe the tasks (matching optional PATTERN), then exit. - -[--dry-run (-n)] - Do a dry run. Print the tasks invoked and executed, but do not - actually execute any of the actions. - -[--execute _code_ (-e)] - Execute some Ruby code and exit. - -[--execute-print _code_ (-p)] - Execute some Ruby code, print the result, and exit. - -[--execute-continue _code_ (-p)] - Execute some Ruby code, then continue with normal task processing. - -[--help (-H)] - Display some help text and exit. - -[--libdir _directory_ (-I)] - Add _directory_ to the list of directories searched for require. - -[--nosearch (-N)] - Do not search for a Rakefile in parent directories. - -[--prereqs (-P)] - Display a list of all tasks and their immediate prerequisites. - -[--quiet (-q)] - Do not echo commands from FileUtils. - -[--rakefile _filename_ (-f)] - Use _filename_ as the name of the rakefile. The default rakefile - names are +rakefile+ and +Rakefile+ (with +rakefile+ taking - precedence). If the rakefile is not found in the current - directory, +rake+ will search parent directories for a match. The - directory where the Rakefile is found will become the current - directory for the actions executed in the Rakefile. - -[--rakelibdir _rakelibdir_ (-R)] - Auto-import any .rake files in RAKELIBDIR. (default is 'rakelib') - -[--require _name_ (-r)] - Require _name_ before executing the Rakefile. - -[--rules] - Trace the rules resolution. - -[--silent (-s)] - Like --quiet, but also suppresses the 'in directory' announcement. - -[--system (-g)] - Use the system wide (global) rakefiles. The project Rakefile is - ignored. By default, the system wide rakefiles are used only if no - project Rakefile is found. On Unix-like system, the system wide - rake files are located in $HOME/.rake. On a windows system they - are stored in $APPDATA/Rake. - -[--no-system (-G)] - Use the project level Rakefile, ignoring the system-wide (global) - rakefiles. - -[--tasks (-T)] - Display a list of the major tasks and their comments. Comments - are defined using the "desc" command. - -[--trace (-t)] - Turn on invoke/execute tracing. Also enable full backtrace on - errors. - -[--usage (-h)] - Display a usage message and exit. - -[--verbose (-v)] - Echo the Sys commands to standard output. - -[--version (-V)] - Display the program version and exit. - -In addition, any command line option of the form -VAR=VALUE will be added to the environment hash -ENV and may be tested in the Rakefile. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/Rakefile1 b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/Rakefile1 deleted file mode 100644 index 39f8bcce..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/Rakefile1 +++ /dev/null @@ -1,38 +0,0 @@ -# Example Rakefile -*- ruby -*- - -task :default => [:main] - -file "a.o" => ["a.c"] do |t| - src = t.name.sub(/\.o$/, '.c') - sh "gcc #{src} -c -o #{t.name}" -end - -file "b.o" => ["b.c"] do |t| - src = t.name.sub(/\.o$/, '.c') - sh "gcc #{src} -c -o #{t.name}" -end - -file "main.o" => ["main.c"] do |t| - src = t.name.sub(/\.o$/, '.c') - sh "gcc #{src} -c -o #{t.name}" -end - -OBJFILES = ["a.o", "b.o", "main.o"] -task :obj => OBJFILES - -file "main" => OBJFILES do |t| - sh "gcc -o #{t.name} main.o a.o b.o" -end - -task :clean do - rm_f FileList['*.o'] - Dir['*~'].each { |fn| rm_f fn } -end - -task :clobber => [:clean] do - rm_f "main" -end - -task :run => ["main"] do - sh "./main" -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/Rakefile2 b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/Rakefile2 deleted file mode 100644 index 35310ece..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/Rakefile2 +++ /dev/null @@ -1,35 +0,0 @@ -# Example Rakefile -*- ruby -*- -# Using the power of Ruby - -task :default => [:main] - -def ext(fn, newext) - fn.sub(/\.[^.]+$/, newext) -end - -SRCFILES = Dir['*.c'] -OBJFILES = SRCFILES.collect { |fn| ext(fn,".o") } - -OBJFILES.each do |objfile| - srcfile = ext(objfile, ".c") - file objfile => [srcfile] do |t| - sh "gcc #{srcfile} -c -o #{t.name}" - end -end - -file "main" => OBJFILES do |t| - sh "gcc -o #{t.name} main.o a.o b.o" -end - -task :clean do - rm_f FileList['*.o'] - Dir['*~'].each { |fn| rm_f fn } -end - -task :clobber => [:clean] do - rm_f "main" -end - -task :run => ["main"] do - sh "./main" -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/a.c b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/a.c deleted file mode 100644 index 620e6f80..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/a.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -void a() -{ - printf ("In function a\n"); -} diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/b.c b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/b.c deleted file mode 100644 index 9b24aa12..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/b.c +++ /dev/null @@ -1,6 +0,0 @@ -#include - -void b() -{ - printf ("In function b\n"); -} diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/main.c b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/main.c deleted file mode 100644 index a04558a2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/example/main.c +++ /dev/null @@ -1,11 +0,0 @@ -#include - -extern void a(); -extern void b(); - -int main () -{ - a(); - b(); - return 0; -} diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/glossary.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/glossary.rdoc deleted file mode 100644 index 0ca18693..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/glossary.rdoc +++ /dev/null @@ -1,51 +0,0 @@ -= Glossary - -[action] - Code to be executed in order to perform a task. Actions in a - rakefile are specified in a code block (usually delimited by - +do+/+end+ pairs. - -[execute] - When a task is executed, all of its actions are performed, in - the order they were defined. Note that unlike - invoke, execute always executes the actions - (without invoking or executing the prerequisites). - -[file task (FileTask)] - A file task is a task whose purpose is to create a file - (which has the same name as the task). When invoked, a file - task will only execute if one or more of the following - conditions are true. - - 1. The associated file does not exist. - 2. A prerequisite has a later time stamp than the existing file. - - Because normal Tasks always have the current time as - timestamp, a FileTask that has a normal Task prerequisite - will always execute. - -[invoke] - When a task is invoked, first we check to see if it has been - invoked before. if it has been, then nothing else is done. - If this is the first time its been invoked, then we invoke - each of its prerequisites. Finally, we check to see if we - need to execute the actions of this task by calling - needed?. Finally, if the task is needed, we execute - its actions. - - NOTE: Currently prerequisites are invoked even if the task is - not needed. This may change in the future. - -[prerequisites] - Every task has a set (possiblity empty) of prerequisites. A - prerequisite P to Task T is itself a task that must be invoked - before Task T. - -[rule] - A rule is a recipe for synthesizing a task when no task is - explicitly defined. Rules generally synthesize file tasks. - -[task (Task)] - Basic unit of work in a rakefile. A task has a name, a set of - prerequisites and a list of actions to be performed. - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/jamis.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/jamis.rb deleted file mode 100644 index c7439d88..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/jamis.rb +++ /dev/null @@ -1,591 +0,0 @@ -module RDoc -module Page - -FONTS = "\"Bitstream Vera Sans\", Verdana, Arial, Helvetica, sans-serif" - -STYLE = < pre { - padding: 0.5em; - border: 1px dotted black; - background: #FFE; -} - -CSS - -XHTML_PREAMBLE = %{ - -} - -HEADER = XHTML_PREAMBLE + < - - %title% - - - - - - - -ENDHEADER - -FILE_PAGE = < - - - - -
        File
        %short_name%
        - - - - - - - - - -
        Path:%full_path% -IF:cvsurl -  (CVS) -ENDIF:cvsurl -
        Modified:%dtm_modified%
        -
        - -
        -HTML - -################################################################### - -CLASS_PAGE = < - %classmod%
        %full_name% - - - - - - -IF:parent - - - - -ENDIF:parent -
        In: -START:infiles -HREF:full_path_url:full_path: -IF:cvsurl - (CVS) -ENDIF:cvsurl -END:infiles -
        Parent: -IF:par_url - -ENDIF:par_url -%parent% -IF:par_url - -ENDIF:par_url -
        - - - -HTML - -################################################################### - -METHOD_LIST = < -IF:diagram -
        - %diagram% -
        -ENDIF:diagram - -IF:description -
        %description%
        -ENDIF:description - -IF:requires -
        Required Files
        -
          -START:requires -
        • HREF:aref:name:
        • -END:requires -
        -ENDIF:requires - -IF:toc -
        Contents
        - -ENDIF:toc - -IF:methods -
        Methods
        -
          -START:methods -
        • HREF:aref:name:
        • -END:methods -
        -ENDIF:methods - -IF:includes -
        Included Modules
        -
          -START:includes -
        • HREF:aref:name:
        • -END:includes -
        -ENDIF:includes - -START:sections -IF:sectitle - -IF:seccomment -
        -%seccomment% -
        -ENDIF:seccomment -ENDIF:sectitle - -IF:classlist -
        Classes and Modules
        - %classlist% -ENDIF:classlist - -IF:constants -
        Constants
        - -START:constants - - - - - -IF:desc - - - - -ENDIF:desc -END:constants -
        %name%=%value%
         %desc%
        -ENDIF:constants - -IF:attributes -
        Attributes
        - -START:attributes - - - - - -END:attributes -
        -IF:rw -[%rw%] -ENDIF:rw - %name%%a_desc%
        -ENDIF:attributes - -IF:method_list -START:method_list -IF:methods -
        %type% %category% methods
        -START:methods -
        -
        -IF:callseq - %callseq% -ENDIF:callseq -IFNOT:callseq - %name%%params% -ENDIF:callseq -IF:codeurl -[ source ] -ENDIF:codeurl -
        -IF:m_desc -
        - %m_desc% -
        -ENDIF:m_desc -IF:aka -
        - This method is also aliased as -START:aka - %name% -END:aka -
        -ENDIF:aka -IF:sourcecode -
        - -
        -
        -%sourcecode%
        -
        -
        -
        -ENDIF:sourcecode -
        -END:methods -ENDIF:methods -END:method_list -ENDIF:method_list -END:sections -
    -HTML - -FOOTER = < - -ENDFOOTER - -BODY = HEADER + < - -
    - #{METHOD_LIST} -
    - - #{FOOTER} -ENDBODY - -########################## Source code ########################## - -SRC_PAGE = XHTML_PREAMBLE + < -%title% - - - - -
    %code%
    - - -HTML - -########################## Index ################################ - -FR_INDEX_BODY = < - - - - - - - -
    -START:entries -%name%
    -END:entries -
    - -HTML - -CLASS_INDEX = FILE_INDEX -METHOD_INDEX = FILE_INDEX - -INDEX = XHTML_PREAMBLE + < - - %title% - - - - - - - - - -IF:inline_source - -ENDIF:inline_source -IFNOT:inline_source - - - - -ENDIF:inline_source - - <body bgcolor="white"> - Click <a href="html/index.html">here</a> for a non-frames - version of this page. - </body> - - - - -HTML - -end -end - - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/proto_rake.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/proto_rake.rdoc deleted file mode 100644 index 39b9b88c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/proto_rake.rdoc +++ /dev/null @@ -1,127 +0,0 @@ -= Original Prototype Rake - -This is the original 100 line prototype rake program. - ---- - #!/usr/bin/env ruby - - require 'ftools' - - class Task - TASKS = Hash.new - - attr_reader :prerequisites - - def initialize(task_name) - @name = task_name - @prerequisites = [] - @actions = [] - end - - def enhance(deps=nil, &block) - @prerequisites |= deps if deps - @actions << block if block_given? - self - end - - def name - @name.to_s - end - - def invoke - @prerequisites.each { |n| Task[n].invoke } - execute if needed? - end - - def execute - return if @triggered - @triggered = true - @actions.collect { |act| result = act.call(self) }.last - end - - def needed? - true - end - - def timestamp - Time.now - end - - class << self - def [](task_name) - TASKS[intern(task_name)] or fail "Don't know how to rake #{task_name}" - end - - def define_task(args, &block) - case args - when Hash - fail "Too Many Target Names: #{args.keys.join(' ')}" if args.size > 1 - fail "No Task Name Given" if args.size < 1 - task_name = args.keys[0] - deps = args[task_name] - else - task_name = args - deps = [] - end - deps = deps.collect {|d| intern(d) } - get(task_name).enhance(deps, &block) - end - - def get(task_name) - name = intern(task_name) - TASKS[name] ||= self.new(name) - end - - def intern(task_name) - (Symbol === task_name) ? task_name : task_name.intern - end - end - end - - class FileTask < Task - def needed? - return true unless File.exist?(name) - latest_prereq = @prerequisites.collect{|n| Task[n].timestamp}.max - return false if latest_prereq.nil? - timestamp < latest_prereq - end - - def timestamp - File.new(name.to_s).mtime - end - end - - def task(args, &block) - Task.define_task(args, &block) - end - - def file(args, &block) - FileTask.define_task(args, &block) - end - - def sys(cmd) - puts cmd - system(cmd) or fail "Command Failed: [#{cmd}]" - end - - def rake - begin - here = Dir.pwd - while ! File.exist?("Rakefile") - Dir.chdir("..") - fail "No Rakefile found" if Dir.pwd == here - here = Dir.pwd - end - puts "(in #{Dir.pwd})" - load "./Rakefile" - ARGV.push("default") if ARGV.size == 0 - ARGV.each { |task_name| Task[task_name].invoke } - rescue Exception => ex - puts "rake aborted ... #{ex.message}" - puts ex.backtrace.find {|str| str =~ /Rakefile/ } || "" - end - end - - if __FILE__ == $0 then - rake - end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/rake.1.gz b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/rake.1.gz deleted file mode 100644 index 02af4de4b50404e7a74f9495a78d3a2d4c42a312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1369 zcmV-f1*ZBRiwFph;1ogv19D+&WiBxQomSg!+eQ$5=T{8!5~-EwxImG@NZdHF0;}~! zkmNQ&-G?PPG&iPpnY~zHzrJUeq$~@0C~6qCyfb@d=FFK{r*|*tKYd+rJE7Ut*@x8$ zO@Ek@GP*3orz8c$M`^61Mi{YS$7Vv;XIHZc*-HDmpo~e>HRYnQ(R;i*iYW870 zzq#JOaXkHHLL1TIsuiLO4XPSn(sm8Ge*js(aWX zek1NV4OhFO^oA*tvJtt_c0#2NcS<&_az2Spsj3D-3u#4GGgWPa0Ag2KTD5}Uq9Be~x)ajms`tg`})3`Reb~yyLdQzvh;arw7-%htx@Vl`hS>3cHqa5<;HNH>95OMfS* zBs!kYRv(u0MNs76OO>#(@1+hZ3o0mCIB(dVB*_o7gbzqzOQYca(h?M7flIoitHC&q zI?Z)R*m2!bfpf(Lcu9z?LwAHJXz8<-Y^$93mJ(fS`gCowSmG#roE$)47m$*pPa}DL<_Qw$obcC$ot8v%i$+VnY$PrlMeMc zBQx*7Netf)y3t=S{TOq6hcdx`r$WZ{#bAv!7ThpI?i+9)J6C8@+EJ_m><1@6L=z%H zkq(Ok@!;<;6YNleb-W1~r;9}t=bAr}k2GN;g=-t#H4>_IaUx>2K_GYK`!`#}2rJ|C zu3UtXix_w1{JDWGHX^7*Vqrr>_N02$1rpQHa)}PbftAQm<`{#B1IaaE6+S{hY1HdY zlqz(+UL@0LVcMzjYJYi;rfQs=YqT9k3dWFbkOqI_+`AxW5w|Of?ocYOn}a7{G`#?d zv`q~T;(m-y8@9IFgz;i6vqGA;m-F}M^W|`HK2GK;uRTiZ4N^t6EDMuYK|oc%FJqSq z5L`f6yL6Q9J@?bOjzxv$?qINMAps!dP8$hM184{|4CnyZ>DoT8Z?Rt=_hS$`(1{9N z0^}sv6qv&p_F%{vvN<5@>n^)m-w!NxBQgv+I?(tXis@5)`*D6b8&Jw|g88I))UP0O zP)g6)+pC-N+y3HcYR1X3SA2h-aT!GW)bT?ci_gj(RAI--rNpT8MNY71u}5mF;|hQl zEq7VHL`MhW+m~QXX%AIz067Hc_&f-({-2yX6UO5J%#D+^H!93>n4||j>dFN!+)?yo z_kwx+N0N#BA>s_6KJ@4iw0g?W?<*a1oI#e)ogcy1Q@g*@Z5mwUv&3NPAhMrW6+o8+_hafRYFDR%G6u>Nu%nh^hg2oFt)={xe)9N7xvas>O4 z8J@_q+x5lGvU^&$klWTsY<8^XmVT2P`je%Rn6o!uHTpCe#`!k$%K718 bpixj|znYOw5kTV8VZrjh-^fVx). - - task :name => [:prereq1, :prereq2] - -NOTE: Although this syntax looks a little funky, it is legal -Ruby. We are constructing a hash where the key is :name and the value -for that key is the list of prerequisites. It is equivalent to the -following ... - - hash = Hash.new - hash[:name] = [:prereq1, :prereq2] - task(hash) - -=== Tasks with Actions - -Actions are defined by passing a block to the +task+ method. Any Ruby -code can be placed in the block. The block may reference the task -object via the block paramter.. - - task :name => [:prereq1, :prereq2] do |t| - # actions (may reference t) - end - -=== Multiple Definitions - -A task may be specified more than once. Each specification adds its -prerequisites and actions to the existing definition. This allows one -part of a rakefile to specify the actions and a different rakefile -(perhaps separately generated) to specify the dependencies. - -For example, the following is equivalent to the single task -specification given above. - - task :name - task :name => [:prereq1] - task :name => [:prereq2] - task :name do |t| - # actions - end - -== File Tasks - -Some tasks are designed to create a file from one or more other files. -Tasks that generate these files may be skipped if the file already -exists. File tasks are used to specify file creation tasks. - -File tasks are declared using the +file+ method (instead of the +task+ -method). In addition, file tasks are usually named with a string -rather than a symbol. - -The following file task creates a executable program (named +prog+) -given two object files name a.o and b.o. The tasks -for creating a.o and b.o are not shown. - - file "prog" => ["a.o", "b.o"] do |t| - sh "cc -o #{t.name} #{t.prerequisites.join(' ')}" - end - -== Directory Tasks - -It is common to need to create directories upon demand. The -+directory+ convenience method is a short-hand for creating a FileTask -that creates the directory. For example, the following declaration -... - - directory "testdata/examples/doc" - -is equivalent to ... - - file "testdata" do |t| mkdir t.name end - file "testdata/examples" do |t| mkdir t.name end - file "testdata/examples/doc" do |t| mkdir t.name end - -The +directory+ method does not accept prerequisites or actions, but -both prerequisites and actions can be added later. For example ... - - directory "testdata" - file "testdata" => ["otherdata"] - file "testdata" do - cp Dir["standard_data/*.data"], "testdata" - end - -== Tasks with Parallel Prerequisites - -Rake allows parallel execution of prerequisites using the following syntax: - - multitask :copy_files => [:copy_src, :copy_doc, :copy_bin] do - puts "All Copies Complete" - end - -In this example, +copy_files+ is a normal rake task. Its actions are -executed whereever all of its prerequisites are done. The big -difference is that the prerequisites (+copy_src+, +copy_bin+ and -+copy_doc+) are executed in parallel. Each of the prerequisites are -run in their own Ruby thread, possibly allowing faster overall runtime. - -=== Secondary Prerequisites - -If any of the primary prerequites of a multitask have common secondary -prerequisites, all of the primary/parallel prerequisites will wait -until the common prerequisites have been run. - -For example, if the copy_xxx tasks have the -following prerequisites: - - task :copy_src => [:prep_for_copy] - task :copy_bin => [:prep_for_copy] - task :copy_doc => [:prep_for_copy] - -Then the +prep_for_copy+ task is run before starting all the copies in -parallel. Once +prep_for_copy+ is complete, +copy_src+, +copy_bin+, -and +copy_doc+ are all run in parallel. Note that +prep_for_copy+ is -run only once, even though it is referenced in multiple threads. - -=== Thread Safety - -The Rake internal data structures are thread-safe with respect -to the multitask parallel execution, so there is no need for the user -to do extra synchronization for Rake's benefit. However, if there are -user data structures shared between the parallel prerequisites, the -user must do whatever is necessary to prevent race conditions. - -== Tasks with Arguments - -Prior to version 0.8.0, rake was only able to handle command line -arguments of the form NAME=VALUE that were passed into Rake via the -ENV hash. Many folks had asked for some kind of simple command line -arguments, perhaps using "--" to separate regular task names from -argument values on the command line. The problem is that there was no -easy way to associate positional arguments on the command line with -different tasks. Suppose both tasks :a and :b expect a command line -argument: does the first value go with :a? What if :b is run first? -Should it then get the first command line argument. - -Rake 0.8.0 solves this problem by explicitly passing values directly -to the tasks that need them. For example, if I had a release task -that required a version number, I could say: - - rake release[0.8.2] - -And the string "0.8.2" will be passed to the :release task. Multiple -arguments can be passed by separating them with a comma, for example: - - rake name[john,doe] - -Just a few words of caution. The rake task name and its arguments -need to be a single command line argument to rake. This generally -means no spaces. If spaces are needed, then the entire rake + -argument string should be quoted. Something like this: - - rake "name[billy bob, smith]" - -(Quoting rules vary between operating systems and shells, so make sure -you consult the proper docs for your OS/shell). - -=== Tasks that Expect Parameters - -Parameters are only given to tasks that are setup to expect them. In -order to handle named parameters, the task declaration syntax for -tasks has been extended slightly. - -For example, a task that needs a first name and last name might be -declared as: - - task :name, [:first_name, :last_name] - -The first argument is still the name of the task (:name in this case). -The next to argumements are the names of the parameters expected by -:name in an array (:first_name and :last_name in the example). - -To access the values of the paramters, the block defining the task -behaviour can now accept a second parameter: - - task :name, [:first_name, :last_name] do |t, args| - puts "First name is #{args.first_name}" - puts "Last name is #{args.last_name}" - end - -The first argument of the block "t" is always bound to the current -task object. The second argument "args" is an open-struct like object -that allows access to the task arguments. Extra command line -arguments to a task are ignored. Missing command line arguments are -given the nil value. - -If you wish to specify default values for the arguments, you can use -the with_defaults method in the task body. Here is the above example -where we specify default values for the first and last names: - - task :name, [:first_name, :last_name] do |t, args| - args.with_defaults(:first_name => "John", :last_name => "Dough") - puts "First name is #{args.first_name}" - puts "Last name is #{args.last_name}" - end - -=== Tasks that Expect Parameters and Have Prerequisites - -Tasks that use parameters have a slightly different format for -prerequisites. Use the arrow notation to indicate the prerequisites -for tasks with arguments. For example: - - task :name, [:first_name, :last_name] => [:pre_name] do |t, args| - args.with_defaults(:first_name => "John", :last_name => "Dough") - puts "First name is #{args.first_name}" - puts "Last name is #{args.last_name}" - end - -=== Deprecated Task Parameters Format - -There is an older format for declaring task parameters that omitted -the task argument array and used the :needs keyword to introduce the -dependencies. That format is still supported for compatibility, but -is not recommended for use. - -== Accessing Task Programatically - -Sometimes it is useful to manipulate tasks programatically in a -Rakefile. To find a task object, use the :[] operator on the -Rake::Task. - -=== Programmatic Task Example - -For example, the following Rakefile defines two tasks. The :doit task -simply prints a simple "DONE" message. The :dont class will lookup -the doit class and remove (clear) all of its prerequisites and -actions. - - task :doit do - puts "DONE" - end - - task :dont do - Rake::Task[:doit].clear - end - -Running this example: - - $ rake doit - (in /Users/jim/working/git/rake/x) - DONE - $ rake dont doit - (in /Users/jim/working/git/rake/x) - $ - -The ability to programmatically manipulate tasks gives rake very -powerful meta-programming capabilities w.r.t. task execution, but -should be used with cation. - -== Rules - -When a file is named as a prerequisite, but does not have a file task -defined for it, Rake will attempt to synthesize a task by looking at a -list of rules supplied in the Rakefile. - -Suppose we were trying to invoke task "mycode.o", but no task is -defined for it. But the rakefile has a rule that look like this ... - - rule '.o' => ['.c'] do |t| - sh "cc #{t.source} -c -o #{t.name}" - end - -This rule will synthesize any task that ends in ".o". It has a -prerequisite a source file with an extension of ".c" must exist. If -Rake is able to find a file named "mycode.c", it will automatically -create a task that builds "mycode.o" from "mycode.c". - -If the file "mycode.c" does not exist, rake will attempt -to recursively synthesize a rule for it. - -When a task is synthesized from a rule, the +source+ attribute of the -task is set to the matching source file. This allows us to write -rules with actions that reference the source file. - -=== Advanced Rules - -Any regular expression may be used as the rule pattern. Additionally, -a proc may be used to calculate the name of the source file. This -allows for complex patterns and sources. - -The following rule is equivalent to the example above. - - rule( /\.o$/ => [ - proc {|task_name| task_name.sub(/\.[^.]+$/, '.c') } - ]) do |t| - sh "cc #{t.source} -c -o #{t.name}" - end - -NOTE: Because of a _quirk_ in Ruby syntax, parenthesis are -required on *rule* when the first argument is a regular expression. - -The following rule might be used for Java files ... - - rule '.java' => [ - proc { |tn| tn.sub(/\.class$/, '.java').sub(/^classes\//, 'src/') } - ] do |t| - java_compile(t.source, t.name) - end - -NOTE: +java_compile+ is a hypothetical method that invokes the -java compiler. - -== Importing Dependencies - -Any ruby file (including other rakefiles) can be included with a -standard Ruby +require+ command. The rules and declarations in the -required file are just added to the definitions already accumulated. - -Because the files are loaded _before_ the rake targets are evaluated, -the loaded files must be "ready to go" when the rake command is -invoked. This make generated dependency files difficult to use. By -the time rake gets around to updating the dependencies file, it is too -late to load it. - -The +import+ command addresses this by specifying a file to be loaded -_after_ the main rakefile is loaded, but _before_ any targets on the -command line are specified. In addition, if the file name matches an -explicit task, that task is invoked before loading the file. This -allows dependency files to be generated and used in a single rake -command invocation. - -=== Example: - - require 'rake/loaders/makefile' - - file ".depends.mf" => [SRC_LIST] do |t| - sh "makedepend -f- -- #{CFLAGS} -- #{t.prerequisites} > #{t.name}" - end - - import ".depends.mf" - -If ".depends" does not exist, or is out of date w.r.t. the source -files, a new ".depends" file is generated using +makedepend+ before -loading. - -== Comments - -Standard Ruby comments (beginning with "#") can be used anywhere it is -legal in Ruby source code, including comments for tasks and rules. -However, if you wish a task to be described using the "-T" switch, -then you need to use the +desc+ command to describe the task. - -=== Example: - - desc "Create a distribution package" - task :package => [ ... ] do ... end - -The "-T" switch (or "--tasks" if you like to spell things out) will -display a list of tasks that have a defined comment. If you use -+desc+ to describe your major tasks, you have a semi-automatic way of -generating a summary of your Rake file. - - traken$ rake -T - (in /home/.../rake) - rake clean # Remove any temporary products. - rake clobber # Remove any generated file. - rake clobber_rdoc # Remove rdoc products - rake contrib_test # Run tests for contrib_test - rake default # Default Task - rake install # Install the application - rake lines # Count lines in the main rake file - rake rdoc # Build the rdoc HTML Files - rake rerdoc # Force a rebuild of the RDOC files - rake test # Run tests - rake testall # Run all test targets - -Only tasks with descriptions will be displayed with the "-T" switch. -Use "-P" (or "--prereqs") to get a list of all tasks and their -prerequisites. - -== Namespaces - -As projects grow (and along with it, the number of tasks), it is -common for task names to begin to clash. For example, if you might -have a main program and a set of sample programs built by a single -Rakefile. By placing the tasks related to the main program in one -namespace, and the tasks for building the sample programs in a -different namespace, the task names will not will not interfer with -each other. - -For example: - - namespace "main" - task :build do - # Build the main program - end - end - - namespace "samples" do - task :build do - # Build the sample programs - end - end - - task :build => ["main:build", "samples:build"] - -Referencing a task in a separate namespace can be achieved by -prefixing the task name with the namespace and a colon -(e.g. "main:build" refers to the :build task in the +main+ namespace). -Nested namespaces are supported, so - -Note that the name given in the +task+ command is always the unadorned -task name without any namespace prefixes. The +task+ command always -defines a task in the current namespace. - -=== FileTasks - -File task names are not scoped by the namespace command. Since the -name of a file task is the name of an actual file in the file system, -it makes little sense to include file task names in name space. -Directory tasks (created by the +directory+ command) are a type of -file task and are also not affected by namespaces. - -=== Name Resolution - -When looking up a task name, rake will start with the current -namespace and attempt to find the name there. If it fails to find a -name in the current namespace, it will search the parent namespaces -until a match is found (or an error occurs if there is no match). - -The "rake" namespace is a special implicit namespace that refers to -the toplevel names. - -If a task name begins with a "^" character, the name resolution will -start in the parent namespace. Multiple "^" characters are allowed. - -Here is an example file with multiple :run tasks and how various names -resolve in different locations. - - task :run - - namespace "one" do - task :run - - namespace "two" do - task :run - - # :run => "one:two:run" - # "two:run" => "one:two:run" - # "one:two:run" => "one:two:run" - # "one:run" => "one:run" - # "^run" => "one:run" - # "^^run" => "rake:run" (the top level task) - # "rake:run" => "rake:run" (the top level task) - end - - # :run => "one:run" - # "two:run" => "one:two:run" - # "^run" => "rake:run" - end - - # :run => "rake:run" - # "one:run" => "one:run" - # "one:two:run" => "one:two:run" - -== FileLists - -FileLists are the way Rake manages lists of files. You can treat a -FileList as an array of strings for the most part, but FileLists -support some additional operations. - -=== Creating a FileList - -Creating a file list is easy. Just give it the list of file names: - - fl = FileList['file1.rb', file2.rb'] - -Or give it a glob pattern: - - fl = FileList['*.rb'] - -== Odds and Ends - -=== do/end verses { } - -Blocks may be specified with either a +do+/+end+ pair, or with curly -braces in Ruby. We _strongly_ recommend using +do+/+end+ to specify the -actions for tasks and rules. Because the rakefile idiom tends to -leave off parenthesis on the task/file/rule methods, unusual -ambiguities can arise when using curly braces. - -For example, suppose that the method +object_files+ returns a list of -object files in a project. Now we use +object_files+ as the -prerequistes in a rule specified with actions in curly braces. - - # DON'T DO THIS! - file "prog" => object_files { - # Actions are expected here (but it doesn't work)! - } - -Because curly braces have a higher precedence than +do+/+end+, the -block is associated with the +object_files+ method rather than the -+file+ method. - -This is the proper way to specify the task ... - - # THIS IS FINE - file "prog" => object_files do - # Actions go here - end - ----- - -== See - -* README -- Main documentation for Rake. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/rational.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/rational.rdoc deleted file mode 100644 index f741e65b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/rational.rdoc +++ /dev/null @@ -1,151 +0,0 @@ -= Why rake? - -Ok, let me state from the beginning that I never intended to write this -code. I'm not convinced it is useful, and I'm not convinced anyone -would even be interested in it. All I can say is that Why's onion truck -must by been passing through the Ohio valley. - -What am I talking about? ... A Ruby version of Make. - -See, I can sense you cringing already, and I agree. The world certainly -doesn't need yet another reworking of the "make" program. I mean, we -already have "ant". Isn't that enough? - -It started yesterday. I was helping a coworker fix a problem in one of -the Makefiles we use in our project. Not a particularly tough problem, -but during the course of the conversation I began lamenting some of the -shortcomings of make. In particular, in one of my makefiles I wanted to -determine the name of a file dynamically and had to resort to some -simple scripting (in Ruby) to make it work. "Wouldn't it be nice if you -could just use Ruby inside a Makefile" I said. - -My coworker (a recent convert to Ruby) agreed, but wondered what it -would look like. So I sketched the following on the whiteboard... - - "What if you could specify the make tasks in Ruby, like this ..." - - task "build" do - java_compile(...args, etc ...) - end - - "The task function would register "build" as a target to be made, - and the block would be the action executed whenever the build - system determined that it was time to do the build target." - -We agreed that would be cool, but writing make from scratch would be WAY -too much work. And that was the end of that! - -... Except I couldn't get the thought out of my head. What exactly -would be needed to make the about syntax work as a make file? Hmmm, you -would need to register the tasks, you need some way of specifying -dependencies between tasks, and some way of kicking off the process. -Hey! What if we did ... and fifteen minutes later I had a working -prototype of Ruby make, complete with dependencies and actions. - -I showed the code to my coworker and we had a good laugh. It was just -about a page worth of code that reproduced an amazing amount of the -functionality of make. We were both truely stunned with the power of -Ruby. - -But it didn't do everything make did. In particular, it didn't have -timestamp based file dependencies (where a file is rebuilt if any of its -prerequisite files have a later timestamp). Obviously THAT would be a -pain to add and so Ruby Make would remain an interesting experiment. - -... Except as I walked back to my desk, I started thinking about what -file based dependecies would really need. Rats! I was hooked again, -and by adding a new class and two new methods, file/timestamp -dependencies were implemented. - -Ok, now I was really hooked. Last night (during CSI!) I massaged the -code and cleaned it up a bit. The result is a bare-bones replacement -for make in exactly 100 lines of code. - -For the curious, you can see it at ... -* doc/proto_rake.rdoc - -Oh, about the name. When I wrote the example Ruby Make task on my -whiteboard, my coworker exclaimed "Oh! I have the perfect name: Rake ... -Get it? Ruby-Make. Rake!" He said he envisioned the tasks as leaves -and Rake would clean them up ... or something like that. Anyways, the -name stuck. - -Some quick examples ... - -A simple task to delete backup files ... - - task :clean do - Dir['*~'].each {|fn| rm fn rescue nil} - end - -Note that task names are symbols (they are slightly easier to type -than quoted strings ... but you may use quoted string if you would -rather). Rake makes the methods of the FileUtils module directly -available, so we take advantage of the rm command. Also note -the use of "rescue nil" to trap and ignore errors in the rm -command. - -To run it, just type "rake clean". Rake will automatically find a -Rakefile in the current directory (or above!) and will invoke the -targets named on the command line. If there are no targets explicitly -named, rake will invoke the task "default". - -Here's another task with dependencies ... - - task :clobber => [:clean] do - rm_r "tempdir" - end - -Task :clobber depends upon task :clean, so :clean will be run before -:clobber is executed. - -Files are specified by using the "file" command. It is similar to the -task command, except that the task name represents a file, and the task -will be run only if the file doesn't exist, or if its modification time -is earlier than any of its prerequisites. - -Here is a file based dependency that will compile "hello.cc" to -"hello.o". - - file "hello.cc" - file "hello.o" => ["hello.cc"] do |t| - srcfile = t.name.sub(/\.o$/, ".cc") - sh %{g++ #{srcfile} -c -o #{t.name}} - end - -I normally specify file tasks with string (rather than symbols). Some -file names can't be represented by symbols. Plus it makes the -distinction between them more clear to the casual reader. - -Currently writing a task for each and every file in the project would be -tedious at best. I envision a set of libraries to make this job -easier. For instance, perhaps something like this ... - - require 'rake/ctools' - Dir['*.c'].each do |fn| - c_source_file(fn) - end - -where "c_source_file" will create all the tasks need to compile all the -C source files in a directory. Any number of useful libraries could be -created for rake. - -That's it. There's no documentation (other than whats in this -message). Does this sound interesting to anyone? If so, I'll continue -to clean it up and write it up and publish it on RAA. Otherwise, I'll -leave it as an interesting excerise and a tribute to the power of Ruby. - -Why /might/ rake be interesting to Ruby programmers. I don't know, -perhaps ... - -* No weird make syntax (only weird Ruby syntax :-) -* No need to edit or read XML (a la ant) -* Platform independent build scripts. -* Will run anywhere Ruby exists, so no need to have "make" installed. - If you stay away from the "sys" command and use things like - 'ftools', you can have a perfectly platform independent - build script. Also rake is only 100 lines of code, so it can - easily be packaged along with the rest of your code. - -So ... Sorry for the long rambling message. Like I said, I never -intended to write this code at all. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.4.14.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.4.14.rdoc deleted file mode 100644 index b2f1f84f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.4.14.rdoc +++ /dev/null @@ -1,23 +0,0 @@ -= Rake 0.4.14 Released - -== Changes - -Version 0.4.14 is a compatibility fix to allow Rake's test task to -work under Ruby 1.8.2. A change in the Test::Unit autorun feature -prevented Rake from running any tests. This release fixes the -problem. - -Rake 0.4.14 is the recommended release for anyone using Ruby 1.8.2. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.4.15.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.4.15.rdoc deleted file mode 100644 index 1d8afd94..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.4.15.rdoc +++ /dev/null @@ -1,35 +0,0 @@ -= Rake 0.4.15 Released - -== Changes - -Version 0.4.15 is a bug fix update for the Ruby 1.8.2 compatibility -changes. This release includes: - -* Fixed a bug that prevented the TESTOPTS flag from working with the - revised for 1.8.2 test task. - -* Updated the docs on --trace to indicate that it also enables a full - backtrace on errors. - -* Several fixes for new warnings generated. - -== Mini-Roadmap - -I will continue to issue Rake updates in the 0.4.xx series as new -Ruby-1.8.2 issues become manifest. Once the codebase stabilizes, I -will release a 0.5.0 version incorporating all the changes. If you -are not using Ruby-1.8.2 and wish to avoid version churn, I recommend -staying with a release prior to Rake-0.4.14. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.5.0.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.5.0.rdoc deleted file mode 100644 index 6b49d2a6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.5.0.rdoc +++ /dev/null @@ -1,53 +0,0 @@ -= Rake 0.5.0 Released - -It has been a long time in coming, but we finally have a new version -of Rake available. - -== Changes - -* Fixed bug where missing intermediate file dependencies could cause - an abort with --trace or --dry-run. (Brian Candler) - -* Recursive rules are now supported (Tilman Sauerbeck). - -* Added tar.gz and tar.bz2 support to package task (Tilman Sauerbeck). - -* Added warning option for the Test Task (requested by Eric Hodel). - -* The jamis rdoc template is only used if it exists. - -* Added fix for Ruby 1.8.2 test/unit and rails problem. - -* Added contributed rake man file. (Jani Monoses) - -* Fixed documentation that was lacking the Rake module name (Tilman - Sauerbeck). - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Thanks - -Lots of people provided input to this release. Thanks to Tilman -Sauerbeck for numerous patches, documentation fixes and suggestions. -And for also pushing me to get this release out. Also, thanks to -Brian Candler for the finding and fixing --trace/dry-run fix. That -was an obscure bug. Also to Eric Hodel for some good suggestions. - --- Jim Weirich - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.5.3.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.5.3.rdoc deleted file mode 100644 index be2919f5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.5.3.rdoc +++ /dev/null @@ -1,78 +0,0 @@ -= Rake 0.5.0 Released - -Although it has only been two weeks since the last release, we have -enough updates to the Rake program to make it time for another -release. - -== Changes - -Here are the changes for version 0.5.3 ... - -* FileLists have been extensively changed so that they mimic the - behavior of real arrays even more closely. In particular, - operations on FileLists that return a new collection (e.g. collect, - reject) will now return a FileList rather than an array. In - addition, several places where FileLists were not properly expanded - before use have been fixed. - -* A method (+ext+) to simplify the handling of file extensions was - added to String and to Array. - -* The 'testrb' script in test/unit tends to silently swallow syntax - errors in test suites. Because of that, the default test loader is - now a rake-provided script. You can still use 'testrb' by setting - the loader flag in the test task to :testrb. (See the API documents - for TestTask for all the loader flag values). - -* FileUtil methods (e.g. cp, mv, install) are now declared to be - private. This will cut down on the interference with user defined - methods of the same name. - -* Fixed the verbose flag in the TestTask so that the test code is - controlled by the flag. Also shortened up some failure messages. - (Thanks to Tobias Luetke for the suggestion). - -* Rules will now properly detect a task that can generate a source - file. Previously rules would only consider source files that were - already present. - -* Added an +import+ command that allows Rake to dynamically import - dependendencies into a running Rake session. The +import+ command - can run tasks to update the dependency file before loading them. - Dependency files can be in rake or make format, allowing rake to - work with tools designed to generate dependencies for make. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Thanks - -As usual, it was input from users that drove a alot of these changes. -Thanks to ... - -* Brian Gernhardt for the rules fix (especially for the patience to - explain the problem to me until I got what he was talking about). -* Stefan Lang for pointing out problems in the dark corners of the - FileList implementation. -* Alexey Verkhovsky pointing out the silently swallows syntax errors - in tests. -* Tobias Luetke for beautifying the test task output. -* Sam Roberts for some of the ideas behind dependency loading. - --- Jim Weirich - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.5.4.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.5.4.rdoc deleted file mode 100644 index 38dfbdda..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.5.4.rdoc +++ /dev/null @@ -1,46 +0,0 @@ -= Rake 0.5.4 Released - -Time for some minor bug fixes and small enhancements - -== Changes - -Here are the changes for version 0.5.3 ... - -* Added double quotes to the test runner. This allows the location of - the tests (and runner) to be in a directory path that contains - spaces (e.g. "C:/Program Files/ruby/bin"). - -* Added .svn to default ignore list. Now subversion project metadata - is automatically ignored by Rake's FileList. - -* Updated FileList#include to support nested arrays and filelists. - FileLists are flat lists of file names. Using a FileList in an - include will flatten out the nested file names. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Thanks - -As usual, it was input from users that drove a alot of these changes. -Thanks to ... - -* Tilman Sauerbeck for the nested FileList suggestion. -* Josh Knowles for pointing out the spaces in directory name problem. - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.6.0.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.6.0.rdoc deleted file mode 100644 index 340c07bf..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.6.0.rdoc +++ /dev/null @@ -1,141 +0,0 @@ -= Rake 0.6.0 Released - -Its time for some long requested enhancements and lots of bug fixes -... And a whole new web page. - -== New Web Page - -The primary documentation for rake has moved from the RubyForge based -wiki to its own Hieraki based web site. Constant spam on the wiki -made it a difficult to keep clean. The new site will be easier to -update and organize. - -Check out the new documentation at: http://docs.rubyrake.org - -We will be adding new documentation to the site as time goes on. - -In addition to the new docs page, make sure you check out Martin -Fowlers article on rake at http://martinfowler.com/articles/rake.html - -== Changes - -=== New Features - -* Multiple prerequisites on Rake rules now allowed. However, keep the - following in mind: - - 1. All the prerequisites of a rule must be available before a rule - is triggered, where "enabled" means (a) an existing file, (b) a - defined rule, or (c) another rule which also must be - trigger-able. - 2. Rules are checked in order of definition, so it is important to - order your rules properly. If a file can be created by two - different rules, put the more specific rule first (otherwise the - more general rule will trigger first and the specific one will - never be triggered). - 3. The source method now returns the name of the first - prerequisite listed in the rule. sources returns the - names of all the rule prerequisites, ordered as they are defined - in the rule. If the task has other prerequisites not defined in - the rule (but defined in an explicit task definition), then they - will _not_ be included in the sources list. - -* FileLists may now use the egrep command. This popular enhancement - is now a core part of the FileList object. If you want to get a - list of all your to-dos, fixmes and TBD comments, add the following - to your Rakefile. - - desc "Look for TODO and FIXME tags in the code" - task :todo do - FileList['**/*.rb'].egrep /#.*(FIXME|TODO|TBD)/ - end - -* The investigation method was added to task object to dump - out some important values. This makes it a bit easier to debug Rake - tasks. - - For example, if you are having problems with a particular task, just - print it out: - - task :huh do - puts Rake::Task['huh'].investigation - end - -* The Rake::TestTask class now supports a "ruby_opts" option to pass - arbitrary ruby options to a test subprocess. - -=== Some Incompatibilities - -* When using the ruby command to start a Ruby subprocess, the - Ruby interpreter that is currently running rake is used by default. - This makes it easier to use rake in an environment with multiple - ruby installation. (Previously, the first ruby command found in the - PATH was used). - - If you wish to chose a different Ruby interpreter, you can - explicitly choose the interpreter via the sh command. - -* The major rake classes (Task, FileTask, FileCreationTask, RakeApp) - have been moved out of the toplevel scope and are now accessible as - Rake::Task, Rake::FileTask, Rake::FileCreationTask and - Rake::Application. If your Rakefile - directly references any one of these tasks, you may: - - 1. Update your Rakefile to use the new classnames - 2. Use the --classic-namespace option on the rake command to get the - old behavior, - 3. Add require 'rake/classic_namespace' to the - Rakefile to get the old behavior. - - rake will print a rather annoying warning whenever a - deprecated class name is referenced without enabling classic - namespace. - -=== Bug Fixes - -* Several unit tests and functional tests were fixed to run better - under windows. - -* Directory tasks are now a specialized version of a File task. A - directory task will only be triggered if it doesn't exist. It will - not be triggered if it is out of date w.r.t. any of its - prerequisites. - -* Fixed a bug in the Rake::GemPackageTask class so that the gem now - properly contains the platform name. - -* Fixed a bug where a prerequisite on a file task would cause - an exception if the prerequisite did not exist. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Thanks - -As usual, it was input from users that drove a alot of these changes. -The following people either contributed patches, made suggestions or -made otherwise helpful comments. Thanks to ... - -* Greg Fast (better ruby_opt test options) -* Kelly Felkins (requested by better namespace support) -* Martin Fowler (suggested Task.investigation) -* Stuart Jansen (send initial patch for multiple prerequisites). -* Masao Mutch (better support for non-ruby Gem platforms) -* Philipp Neubeck (patch for file task exception fix) - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.7.0.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.7.0.rdoc deleted file mode 100644 index 9c07c7f5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.7.0.rdoc +++ /dev/null @@ -1,119 +0,0 @@ -= Rake 0.7.0 Released - -These changes for Rake have been brewing for a long time. Here they -are, I hope you enjoy them. - -== Changes - -=== New Features - -* Name space support for task names (see below). - -* Prerequisites can be executed in parallel (see below). - -* Added safe_ln support for openAFS (via Ludvig Omholt). - -* RDoc defaults to internal (in-process) invocation. The old behavior - is still available by setting the +external+ flag to true. - -* Rakefiles are now loaded with the expanded path to prevent - accidental polution from the Ruby load path. - -* Task objects my now be used in prerequisite lists directly. - -* Task objects (in addition to task names) may now be included in the - prerequisite list of a task. - -* Internals cleanup and refactoring. - -=== Bug Fixes - -* Compatibility fixes for Ruby 1.8.4 FileUtils changes. - -=== Namespaces - -Tasks can now be nested inside their own namespaces. Tasks within one -namespace will not accidently interfer with tasks named in a different -namespace. - -For example: - - namespace "main" do - task :build do - # Build the main program - end - end - - namespace "samples" do - task :build do - # Build the sample programs - end - end - - task :build_all => ["main:build", "samples:build"] - -Even though both tasks are named :build, they are separate tasks in -their own namespaces. The :build_all task (defined in the toplevel -namespace) references both build tasks in its prerequisites. - -You may invoke each of the individual build tasks with the following -commands: - - rake main:build - rake samples:build - -Or invoke both via the :build_all command: - - rake build_all - -Namespaces may be nested arbitrarily. Since the name of file tasks -correspond to the name of a file in the external file system, -FileTasks are not affected by the namespaces. - -See the Rakefile format documentation (in the Rake API documents) for -more information. - -=== Parallel Tasks - -Sometimes you have several tasks that can be executed in parallel. By -specifying these tasks as prerequisites to a +multitask+ task. - -In the following example the tasks copy_src, copy_doc and copy_bin -will all execute in parallel in their own thread. - - multitask :copy_files => [:copy_src, :copy_doc, :copy_bin] do - puts "All Copies Complete" - end - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Thanks - -As usual, it was input from users that drove a alot of these changes. -The following people either contributed patches, made suggestions or -made otherwise helpful comments. Thanks to ... - -* Doug Young (inspriation for the parallel task) - -* David Heinemeier Hansson (for --trace message enhancement and for - pushing for namespace support). - -* Ludvig Omholt (for the openAFS fix) - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.7.1.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.7.1.rdoc deleted file mode 100644 index c17088ee..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.7.1.rdoc +++ /dev/null @@ -1,59 +0,0 @@ -= Rake 0.7.1 Released - -Version 0.7.1 supplies a bug fix and a few minor enhancements. - -== Changes - -=== Bug Fixes in 0.7.1 - -* Changes in the exception reported for the FileUtils.ln caused - safe_ln to fail with a NotImplementedError. Rake 0.7.1 will now - catch that error or any StandardError and properly fall back to - using +cp+. - -=== New Features in 0.7.1 - -* You can filter the results of the --task option by supplying an - optional regular expression. This allows the user to easily find a - particular task name in a long list of possible names. - -* Transforming procs in a rule may now return a list of prerequisites. - This allows more flexible rule formation. - -* FileList and String now support a +pathmap+ melthod that makes the - transforming paths a bit easier. See the API docs for +pathmap+ for - details. - -* The -f option without a value will disable the search for a - Rakefile. This allows the Rakefile to be defined entirely in a - library (and loaded with the -r option). The current working - directory is not changed when this is done. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Thanks - -As usual, it was input from users that drove a alot of these changes. -The following people either contributed patches, made suggestions or -made otherwise helpful comments. Thanks to ... - -* James Britt and Assaph Mehr for reporting and helping to debug the - safe_ln issue. - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.7.2.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.7.2.rdoc deleted file mode 100644 index 2cc86bec..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.7.2.rdoc +++ /dev/null @@ -1,121 +0,0 @@ -= Rake 0.7.2 Released - -Version 0.7.2 supplies a bug fix and a few minor enhancements. In -particular, the new version fixes an incompatibility with the soon to -be released Ruby 1.8.6. We strongly recommend upgrading to Rake 0.7.2 -in order to be compatible with the new version of Ruby. - -== Changes - -=== Bug Fixes in 0.7.2 - -There are quite a number of bug fixes in the new 0.7.2 version of -Rake: - -* Removed dependency on internal fu_xxx functions from FileUtils. - -* Error messages are now send to stderr rather than stdout (from - Payton Quackenbush). - -* Better error handling on invalid command line arguments (from Payton - Quackenbush). - -* Fixed some bugs where the application object was going to the global - appliation instead of using its own data. - -* Fixed the method name leak from FileUtils (bug found by Glenn - Vanderburg). - -* Added test for noop, bad_option and verbose flags to sh command. - -* Added a description to the gem task in GemPackageTask. - -* Fixed a bug when rules have multiple prerequisites (patch by Joel - VanderWerf) - -* Added the handful of RakeFileUtils to the private method as well. - -=== New Features in 0.7.2 - -The following new features are available in Rake version 0.7.2: - -* Added square and curly bracket patterns to FileList#include (Tilman - Sauerbeck). - -* FileLists can now pass a block to FileList#exclude to exclude files - based on calculated values. - -* Added plain filename support to rule dependents (suggested by Nobu - Nakada). - -* Added pathmap support to rule dependents. In other words, if a - pathmap format (beginning with a '%') is given as a Rake rule - dependent, then the name of the depend will be the name of the - target with the pathmap format applied. - -* Added a 'tasks' method to a namespace to get a list of tasks - associated with the namespace. - -* Added tar_command and zip_command options to the Package task. - -* The clean task will no longer delete 'core' if it is a directory. - -=== Internal Rake Improvements - -The following changes will are mainly internal improvements and -refactorings and have little effect on the end user. But they may be -of interest to the general public. - -* Added rcov task and updated unit testing for better code coverage. - -* Added a 'shame' task to the Rakefile. - -* Added rake_extension to handle detection of extension collisions. - -* Added a protected 'require "rubygems"' to test/test_application to - unbreak cruisecontrol.rb. - -* Removed rake_dup. Now we just simply rescue a bad dup. - -* Refactored the FileList reject logic to remove duplication. - -* Removed if __FILE__ at the end of the rake.rb file. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Thanks - -As usual, it was input from users that drove a alot of these changes. -The following people either contributed patches, made suggestions or -made otherwise helpful comments. Thanks to ... - -* Payton Quackenbush -- For several error handling improvements. - -* Glenn Vanderburg -- For finding and fixing the method name leak from - FileUtils. - -* Joel VanderWerf -- for finding and fixing a bug in the handling of - multiple prerequisites. - -* Tilman Sauerbeck -- For some enhancing FileList to support more - advanced file globbing. - -* Nobu Nakada -- For suggesting plain file name support to rule dependents. - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.7.3.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.7.3.rdoc deleted file mode 100755 index 39e91bb9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.7.3.rdoc +++ /dev/null @@ -1,47 +0,0 @@ -= Rake 0.7.3 Released - -Rake version 0.7.3 is a minor release that includes some refactoring to better -support custom Rake applications. - -== Changes - -=== New Features in Version 0.7.3 - -* Added the +init+ and +top_level+ methods to make the creation of custom Rake applications a bit easier. E.g. - - gem 'rake', ">= 0.7.3" - require 'rake' - - Rake.application.init('myrake') - - task :default do - something_interesting - end - - Rake.application.top_level - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But instead of -cryptic make recipes, Rake uses standard Ruby code to declare tasks and -dependencies. You have the full power of a modern scripting language built -right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.0.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.0.rdoc deleted file mode 100644 index 05e5877f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.0.rdoc +++ /dev/null @@ -1,114 +0,0 @@ -= Rake 0.8.0/0.8.1 Released - -Rake version 0.8.0 is a new release of rake that includes serveral new -features. - -== Changes - -=== New Features in Version 0.8.0 - -* Tasks can now receive command line parameters. See the examples - below for more details. - -* Comments are limited to 80 columns on output, but full comments can - be seen by using the -D parameter. (feature suggested by Jamis - Buck). - -* Explicit exit(n) calls will now set the exit status to n. (patch - provided by Stephen Touset). - -* Rake is now compatible with Ruby 1.9. - -Version 0.8.1 is a minor update that includes additional Ruby 1.9 -compatibility fixes. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Task Argument Examples - -Prior to version 0.8.0, rake was only able to handle command line -arguments of the form NAME=VALUE that were passed into Rake via the -ENV hash. Many folks had asked for some kind of simple command line -arguments, perhaps using "--" to separate regular task names from -argument values on the command line. The problem is that there was no -easy way to associate positional arguments on the command line with -different tasks. Suppose both tasks :a and :b expect a command line -argument: does the first value go with :a? What if :b is run first? -Should it then get the first command line argument. - -Rake 0.8.0 solves this problem by explicitly passing values directly -to the tasks that need them. For example, if I had a release task -that required a version number, I could say: - - rake release[0.8.0] - -And the string "0.8.0" will be passed to the :release task. Multiple -arguments can be passed by separating them with a comma, for example: - - rake name[john,doe] - -Just a few words of caution. The rake task name and its arguments -need to be a single command line argument to rake. This generally -means no spaces. If spaces are needed, then the entire rake + -argument string should be quoted. Something like this: - - rake "name[billy bob, smith]" - -(Quoting rules vary between operating systems and shells, so make sure -you consult the proper docs for your OS/shell). - -=== Tasks that Expect Parameters - -Parameters are only given to tasks that are setup to expect them. In -order to handle named parameters, the task declaration syntax for -tasks has been extended slightly. - -For example, a task that needs a first name and last name might be -declared as: - - task :name, :first_name, :last_name - -The first argument is still the name of the task (:name in this case). -The next to argumements are the names of the parameters expected by -:name (:first_name and :last_name in the example). - -To access the values of the paramters, the block defining the task -behaviour can now accept a second parameter: - - task :name, :first_name, :last_name do |t, args| - puts "First name is #{args.first_name}" - puts "Last name is #{args.last_name}" - end - -The first argument of the block "t" is always bound to the current -task object. The second argument "args" is an open-struct like object -that allows access to the task arguments. Extra command line -arguments to a task are ignored. Missing command line arguments are -given the nil value. - -== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Jamis Buck (for comment formatting suggestions) -* Stephen Touset (for exit status patch). - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.2.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.2.rdoc deleted file mode 100644 index cfb99418..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.2.rdoc +++ /dev/null @@ -1,165 +0,0 @@ -= Rake 0.8.2 Released - -Rake version 0.8.2 is a new release of rake that includes a number of -new features and numerous bug fixes. - -== Changes - -=== New Features in Version 0.8.2 - -* Switched from getoptlong to optparse (patches supplied by Edwin - Pratomo). - -* The -T option will now attempt to dynamically sense the size of the - terminal. The -T output will only self-truncate if the output is a - tty. However, if RAKE_COLUMNS is explicitly set, it will be honored - in any case. (Patch provided by Gavin Stark). - -* The following public methods have been added to rake task objects: - - * task.clear -- Clear both the prerequisites and actions of the - target rake task. - * task.clear_prerequisites -- Clear all the existing prerequisites - from the target rake task. - * task.clear_actions -- Clear all the existing actions from the - target rake task. - * task.reenable -- Re-enable a task, allowing its actions to be - executed again if the task is invoked. - -* Changed RDoc test task to have no default template. This makes it - easier for the tempate to pick up the template from the environment. - -* Default values for task arguments can easily be specified with the - :with_defaults method. (Idea for default argument merging supplied - by (Adam Q. Salter) - -=== Bug Fixes in Version 0.8.2 - -* Fixed bug in package task so that it will include the subdir - directory in the package for testing. (Bug found by Adam Majer) - -* Fixed filename dependency order bug in test_inspect_pending and - test_to_s_pending. (Bug found by Adam Majer) - -* Fixed check for file utils options to make them immune to the - symbol/string differences. (Patch supplied by Edwin Pratomo) - -* Fixed bug with rules involving multiple source, where only the first - dependency of a rule has any effect (Patch supplied by Emanuel - Indermhle) - -* FileList#clone and FileList#dup have better sematics w.r.t. taint - and freeze. - -* Changed from using Mutex to Monitor. Evidently Mutex causes thread - join errors when Ruby is compiled with -disable-pthreads. (Patch - supplied by Ittay Dror) - -* Fixed bug in makefile parser that had problems with extra spaces in - file task names. (Patch supplied by Ittay Dror) - -== Other changes in Version 0.8.2 - -* Added ENV var to rake's own Rakefile to prevent OS X from including - extended attribute junk in the rake package tar file. (Bug found by - Adam Majer) - -* Added a performance patch for reading large makefile dependency - files. (Patch supplied by Ittay Dror) - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Task Argument Examples - -Prior to version 0.8.0, rake was only able to handle command line -arguments of the form NAME=VALUE that were passed into Rake via the -ENV hash. Many folks had asked for some kind of simple command line -arguments, perhaps using "--" to separate regular task names from -argument values on the command line. The problem is that there was no -easy way to associate positional arguments on the command line with -different tasks. Suppose both tasks :a and :b expect a command line -argument: does the first value go with :a? What if :b is run first? -Should it then get the first command line argument. - -Rake 0.8.0 solves this problem by explicitly passing values directly -to the tasks that need them. For example, if I had a release task -that required a version number, I could say: - - rake release[0.8.2] - -And the string "0.8.2" will be passed to the :release task. Multiple -arguments can be passed by separating them with a comma, for example: - - rake name[john,doe] - -Just a few words of caution. The rake task name and its arguments -need to be a single command line argument to rake. This generally -means no spaces. If spaces are needed, then the entire rake + -argument string should be quoted. Something like this: - - rake "name[billy bob, smith]" - -(Quoting rules vary between operating systems and shells, so make sure -you consult the proper docs for your OS/shell). - -=== Tasks that Expect Parameters - -Parameters are only given to tasks that are setup to expect them. In -order to handle named parameters, the task declaration syntax for -tasks has been extended slightly. - -For example, a task that needs a first name and last name might be -declared as: - - task :name, :first_name, :last_name - -The first argument is still the name of the task (:name in this case). -The next to argumements are the names of the parameters expected by -:name (:first_name and :last_name in the example). - -To access the values of the paramters, the block defining the task -behaviour can now accept a second parameter: - - task :name, :first_name, :last_name do |t, args| - puts "First name is #{args.first_name}" - puts "Last name is #{args.last_name}" - end - -The first argument of the block "t" is always bound to the current -task object. The second argument "args" is an open-struct like object -that allows access to the task arguments. Extra command line -arguments to a task are ignored. Missing command line arguments are -given the nil value. - -== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Edwin Pratomo -* Gavin Stark -* Adam Q. Salter -* Adam Majer -* Emanuel Indermhle -* Ittay Dror -* Bheeshmar Redheendran (for spending an afternoon with me debugging - windows issues) - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.3.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.3.rdoc deleted file mode 100644 index fefc8c07..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.3.rdoc +++ /dev/null @@ -1,112 +0,0 @@ -= Rake 0.8.3 Released - -Rake version 0.8.3 is a bug-fix release of rake. - -== Changes - -=== Bug Fixes in Version 0.8.3 - -* Enhanced the system directory detection in windows. We now check - HOMEDRIVE/HOMEPATH and USERPROFILE if APPDATA isn't found. (Patch - supplied by James Tucker). Rake no long aborts if it can't find the - directory. - -* Added fix to handle ruby installations in directories with spaces in - their name. - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 - -== Task Argument Examples - -Prior to version 0.8.0, rake was only able to handle command line -arguments of the form NAME=VALUE that were passed into Rake via the -ENV hash. Many folks had asked for some kind of simple command line -arguments, perhaps using "--" to separate regular task names from -argument values on the command line. The problem is that there was no -easy way to associate positional arguments on the command line with -different tasks. Suppose both tasks :a and :b expect a command line -argument: does the first value go with :a? What if :b is run first? -Should it then get the first command line argument. - -Rake 0.8.0 solves this problem by explicitly passing values directly -to the tasks that need them. For example, if I had a release task -that required a version number, I could say: - - rake release[0.8.3] - -And the string "0.8.3" will be passed to the :release task. Multiple -arguments can be passed by separating them with a comma, for example: - - rake name[john,doe] - -Just a few words of caution. The rake task name and its arguments -need to be a single command line argument to rake. This generally -means no spaces. If spaces are needed, then the entire rake + -argument string should be quoted. Something like this: - - rake "name[billy bob, smith]" - -(Quoting rules vary between operating systems and shells, so make sure -you consult the proper docs for your OS/shell). - -=== Tasks that Expect Parameters - -Parameters are only given to tasks that are setup to expect them. In -order to handle named parameters, the task declaration syntax for -tasks has been extended slightly. - -For example, a task that needs a first name and last name might be -declared as: - - task :name, :first_name, :last_name - -The first argument is still the name of the task (:name in this case). -The next to argumements are the names of the parameters expected by -:name (:first_name and :last_name in the example). - -To access the values of the paramters, the block defining the task -behaviour can now accept a second parameter: - - task :name, :first_name, :last_name do |t, args| - puts "First name is #{args.first_name}" - puts "Last name is #{args.last_name}" - end - -The first argument of the block "t" is always bound to the current -task object. The second argument "args" is an open-struct like object -that allows access to the task arguments. Extra command line -arguments to a task are ignored. Missing command line arguments are -given the nil value. - -== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Edwin Pratomo -* Gavin Stark -* Adam Q. Salter -* Adam Majer -* Emanuel Indermhle -* Ittay Dror -* Bheeshmar Redheendran (for spending an afternoon with me debugging - windows issues) - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.4.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.4.rdoc deleted file mode 100644 index 8ccb1abc..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.4.rdoc +++ /dev/null @@ -1,147 +0,0 @@ -= Rake 0.8.4 Released - -Rake version 0.8.4 is a bug-fix release of rake. - -NOTE: The version of Rake that comes with Ruby 1.9 has diverged - slightly from the core Rake code base. Rake 0.8.4 will work - with Ruby 1.9, but is not a strict upgrade for the Rake that - comes with Ruby 1.9. A (near) future release of Rake will unify - those two codebases. - -== Letter Writing Campaign - -Thanks to Aaron Patterson (@tenderlove) and Eric Hodel (@drbrain) for -their encouraging support in organizing a letter writing campaign to -lobby for the "Warning Free" release of rake 0.8.4. A special callout -goes to Jonathan D. Lord, Sr (Dr. Wingnut) whose postcard was the -first to actually reach me. (see -http://tenderlovemaking.com/2009/02/26/we-need-a-new-version-of-rake/ -for details) - -== Changes - -=== New Features / Enhancements in Version 0.8.4 - -* Case is preserved on rakefile names. (patch from James - M. Lawrence/quix) - -* Improved Rakefile case insensitivity testing (patch from Luis - Lavena). - -* Windows system dir search order is now: HOME, HOMEDRIVE + HOMEPATH, - APPDATA, USERPROFILE (patch from Luis Lavena) - -* MingGW is now recognized as a windows platform. (patch from Luis - Lavena) - -=== Bug Fixes in Version 0.8.4 - -* Removed reference to manage_gem to fix the warning produced by the - gem package task. - -* Fixed stray ARGV option problem that was interfering with - Test::Unit::Runner. (patch from Pivotal Labs) - -=== Infrastructure Improvements in Version 0.8.4 - -* Numerous fixes to the windows test suite (patch from Luis Lavena). - -* Improved Rakefile case insensitivity testing (patch from Luis - Lavena). - -* Better support for windows paths in the test task (patch from Simon - Chiang/bahuvrihi) - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 -GitHub:: git://github.com/jimweirich/rake.git - -== Task Argument Examples - -Prior to version 0.8.0, rake was only able to handle command line -arguments of the form NAME=VALUE that were passed into Rake via the -ENV hash. Many folks had asked for some kind of simple command line -arguments, perhaps using "--" to separate regular task names from -argument values on the command line. The problem is that there was no -easy way to associate positional arguments on the command line with -different tasks. Suppose both tasks :a and :b expect a command line -argument: does the first value go with :a? What if :b is run first? -Should it then get the first command line argument. - -Rake 0.8.0 solves this problem by explicitly passing values directly -to the tasks that need them. For example, if I had a release task -that required a version number, I could say: - - rake release[0.8.4] - -And the string "0.8.4" will be passed to the :release task. Multiple -arguments can be passed by separating them with a comma, for example: - - rake name[john,doe] - -Just a few words of caution. The rake task name and its arguments -need to be a single command line argument to rake. This generally -means no spaces. If spaces are needed, then the entire rake + -argument string should be quoted. Something like this: - - rake "name[billy bob, smith]" - -(Quoting rules vary between operating systems and shells, so make sure -you consult the proper docs for your OS/shell). - -=== Tasks that Expect Parameters - -Parameters are only given to tasks that are setup to expect them. In -order to handle named parameters, the task declaration syntax for -tasks has been extended slightly. - -For example, a task that needs a first name and last name might be -declared as: - - task :name, :first_name, :last_name - -The first argument is still the name of the task (:name in this case). -The next to argumements are the names of the parameters expected by -:name (:first_name and :last_name in the example). - -To access the values of the paramters, the block defining the task -behaviour can now accept a second parameter: - - task :name, :first_name, :last_name do |t, args| - puts "First name is #{args.first_name}" - puts "Last name is #{args.last_name}" - end - -The first argument of the block "t" is always bound to the current -task object. The second argument "args" is an open-struct like object -that allows access to the task arguments. Extra command line -arguments to a task are ignored. Missing command line arguments are -given the nil value. - -== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* James M. Lawrence/quix -* Luis Lavena -* Pivotal Labs -* Simon Chiang/bahuvrihi - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.5.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.5.rdoc deleted file mode 100644 index 9c828cef..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.5.rdoc +++ /dev/null @@ -1,53 +0,0 @@ -= Rake 0.8.5 Released - -Rake version 0.8.5 is a new release of Rake with greatly improved -support for executing commands on Windows. The "sh" command now has -the same semantics on Windows that it has on Unix based platforms. - -== Changes - -=== New Features / Enhancements in Version 0.8.5 - -* Improved implementation of the Rake system command for Windows. - (patch from James M. Lawrence/quix) - -* Support for Ruby 1.9's improved system command. (patch from James - M. Lawrence/quix) - -* Rake now includes the configured extension when invoking an - executable (Config::CONFIG['EXEEXT]) - -=== Bug Fixes in Version 0.8.5 - -* Environment variable keys are now correctly cased (it matters in - some implementations). - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 -GitHub:: git://github.com/jimweirich/rake.git - -== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* James M. Lawrence/quix -* Luis Lavena - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.6.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.6.rdoc deleted file mode 100644 index e1031ad3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.6.rdoc +++ /dev/null @@ -1,55 +0,0 @@ -= Rake 0.8.6 Released - -Rake version 0.8.5 introduced greatly improved support for executing -commands on Windows. The "sh" command now has the same semantics on -Windows that it has on Unix based platforms. - -Rake version 0.8.6 includes minor fixes the the RDoc generation. - -== Changes - -=== New Features / Enhancements in Version 0.8.5 - -* Improved implementation of the Rake system command for Windows. - (patch from James M. Lawrence/quix) - -* Support for Ruby 1.9's improved system command. (patch from James - M. Lawrence/quix) - -* Rake now includes the configured extension when invoking an - executable (Config::CONFIG['EXEEXT]) - -=== Bug Fixes in Version 0.8.5 - -* Environment variable keys are now correctly cased (it matters in - some implementations). - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 -GitHub:: git://github.com/jimweirich/rake.git - -== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* James M. Lawrence/quix -* Luis Lavena - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.7.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.7.rdoc deleted file mode 100644 index fb0c5d4e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/doc/release_notes/rake-0.8.7.rdoc +++ /dev/null @@ -1,55 +0,0 @@ -= Rake 0.8.7 Released - -Rake version 0.8.5 introduced greatly improved support for executing -commands on Windows. The "sh" command now has the same semantics on -Windows that it has on Unix based platforms. - -Rake version 0.8.6 includes minor fixes the the RDoc generation. -Rake version 0.8.7 includes a minor fix for JRuby running on windows. - -== Changes - -=== New Features / Enhancements in Version 0.8.5 - -* Improved implementation of the Rake system command for Windows. - (patch from James M. Lawrence/quix) - -* Support for Ruby 1.9's improved system command. (patch from James - M. Lawrence/quix) - -* Rake now includes the configured extension when invoking an - executable (Config::CONFIG['EXEEXT]) - -=== Bug Fixes in Version 0.8.5 - -* Environment variable keys are now correctly cased (it matters in - some implementations). - -== What is Rake - -Rake is a build tool similar to the make program in many ways. But -instead of cryptic make recipes, Rake uses standard Ruby code to -declare tasks and dependencies. You have the full power of a modern -scripting language built right into your build tool. - -== Availability - -The easiest way to get and install rake is via RubyGems ... - - gem install rake (you may need root/admin privileges) - -Otherwise, you can get it from the more traditional places: - -Home Page:: http://rake.rubyforge.org/ -Download:: http://rubyforge.org/project/showfiles.php?group_id=50 -GitHub:: git://github.com/jimweirich/rake.git - -== Thanks - -As usual, it was input from users that drove a alot of these changes. The -following people either contributed patches, made suggestions or made -otherwise helpful comments. Thanks to ... - -* Charles Nutter - --- Jim Weirich diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/install.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/install.rb deleted file mode 100644 index 2d0dc619..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/install.rb +++ /dev/null @@ -1,88 +0,0 @@ -require 'rbconfig' -require 'find' -require 'ftools' - -include Config - -$ruby = CONFIG['ruby_install_name'] - -## -# Install a binary file. We patch in on the way through to -# insert a #! line. If this is a Unix install, we name -# the command (for example) 'rake' and let the shebang line -# handle running it. Under windows, we add a '.rb' extension -# and let file associations to their stuff -# - -def installBIN(from, opfile) - - tmp_dir = nil - for t in [".", "/tmp", "c:/temp", $bindir] - stat = File.stat(t) rescue next - if stat.directory? and stat.writable? - tmp_dir = t - break - end - end - - fail "Cannot find a temporary directory" unless tmp_dir - tmp_file = File.join(tmp_dir, "_tmp") - - File.open(from) do |ip| - File.open(tmp_file, "w") do |op| - ruby = File.join($realbindir, $ruby) - op.puts "#!#{ruby} -w" - op.write ip.read - end - end - - opfile += ".rb" if CONFIG["target_os"] =~ /mswin/i - File::install(tmp_file, File.join($bindir, opfile), 0755, true) - File::unlink(tmp_file) -end - -$sitedir = CONFIG["sitelibdir"] -unless $sitedir - version = CONFIG["MAJOR"]+"."+CONFIG["MINOR"] - $libdir = File.join(CONFIG["libdir"], "ruby", version) - $sitedir = $:.find {|x| x =~ /site_ruby/} - if !$sitedir - $sitedir = File.join($libdir, "site_ruby") - elsif $sitedir !~ Regexp.quote(version) - $sitedir = File.join($sitedir, version) - end -end - -$bindir = CONFIG["bindir"] - -$realbindir = $bindir - -bindir = CONFIG["bindir"] -if (destdir = ENV['DESTDIR']) - $bindir = destdir + $bindir - $sitedir = destdir + $sitedir - - File::makedirs($bindir) - File::makedirs($sitedir) -end - -rake_dest = File.join($sitedir, "rake") -File::makedirs(rake_dest, true) -File::chmod(0755, rake_dest) - -# The library files - -files = Dir.chdir('lib') { Dir['**/*.rb'] } - -for fn in files - fn_dir = File.dirname(fn) - target_dir = File.join($sitedir, fn_dir) - if ! File.exist?(target_dir) - File.makedirs(target_dir) - end - File::install(File.join('lib', fn), File.join($sitedir, fn), 0644, true) -end - -# and the executable - -installBIN("bin/rake", "rake") diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb deleted file mode 100755 index 12928308..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake.rb +++ /dev/null @@ -1,2506 +0,0 @@ -#!/usr/bin/env ruby - -#-- - -# Copyright 2003, 2004, 2005, 2006, 2007, 2008 by Jim Weirich (jim@weirichhouse.org) -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. -#++ -# -# = Rake -- Ruby Make -# -# This is the main file for the Rake application. Normally it is referenced -# as a library via a require statement, but it can be distributed -# independently as an application. - -RAKEVERSION = '0.8.7' - -require 'rbconfig' -require 'fileutils' -require 'singleton' -require 'monitor' -require 'optparse' -require 'ostruct' - -require 'rake/win32' - -$trace = false - -###################################################################### -# Rake extensions to Module. -# -class Module - # Check for an existing method in the current class before extending. IF - # the method already exists, then a warning is printed and the extension is - # not added. Otherwise the block is yielded and any definitions in the - # block will take effect. - # - # Usage: - # - # class String - # rake_extension("xyz") do - # def xyz - # ... - # end - # end - # end - # - def rake_extension(method) - if method_defined?(method) - $stderr.puts "WARNING: Possible conflict with Rake extension: #{self}##{method} already exists" - else - yield - end - end -end # module Module - - -###################################################################### -# User defined methods to be added to String. -# -class String - rake_extension("ext") do - # Replace the file extension with +newext+. If there is no extension on - # the string, append the new extension to the end. If the new extension - # is not given, or is the empty string, remove any existing extension. - # - # +ext+ is a user added method for the String class. - def ext(newext='') - return self.dup if ['.', '..'].include? self - if newext != '' - newext = (newext =~ /^\./) ? newext : ("." + newext) - end - self.chomp(File.extname(self)) << newext - end - end - - rake_extension("pathmap") do - # Explode a path into individual components. Used by +pathmap+. - def pathmap_explode - head, tail = File.split(self) - return [self] if head == self - return [tail] if head == '.' || tail == '/' - return [head, tail] if head == '/' - return head.pathmap_explode + [tail] - end - protected :pathmap_explode - - # Extract a partial path from the path. Include +n+ directories from the - # front end (left hand side) if +n+ is positive. Include |+n+| - # directories from the back end (right hand side) if +n+ is negative. - def pathmap_partial(n) - dirs = File.dirname(self).pathmap_explode - partial_dirs = - if n > 0 - dirs[0...n] - elsif n < 0 - dirs.reverse[0...-n].reverse - else - "." - end - File.join(partial_dirs) - end - protected :pathmap_partial - - # Preform the pathmap replacement operations on the given path. The - # patterns take the form 'pat1,rep1;pat2,rep2...'. - def pathmap_replace(patterns, &block) - result = self - patterns.split(';').each do |pair| - pattern, replacement = pair.split(',') - pattern = Regexp.new(pattern) - if replacement == '*' && block_given? - result = result.sub(pattern, &block) - elsif replacement - result = result.sub(pattern, replacement) - else - result = result.sub(pattern, '') - end - end - result - end - protected :pathmap_replace - - # Map the path according to the given specification. The specification - # controls the details of the mapping. The following special patterns are - # recognized: - # - # * %p -- The complete path. - # * %f -- The base file name of the path, with its file extension, - # but without any directories. - # * %n -- The file name of the path without its file extension. - # * %d -- The directory list of the path. - # * %x -- The file extension of the path. An empty string if there - # is no extension. - # * %X -- Everything *but* the file extension. - # * %s -- The alternate file separater if defined, otherwise use - # the standard file separator. - # * %% -- A percent sign. - # - # The %d specifier can also have a numeric prefix (e.g. '%2d'). If the - # number is positive, only return (up to) +n+ directories in the path, - # starting from the left hand side. If +n+ is negative, return (up to) - # |+n+| directories from the right hand side of the path. - # - # Examples: - # - # 'a/b/c/d/file.txt'.pathmap("%2d") => 'a/b' - # 'a/b/c/d/file.txt'.pathmap("%-2d") => 'c/d' - # - # Also the %d, %p, %f, %n, %x, and %X operators can take a - # pattern/replacement argument to perform simple string substititions on a - # particular part of the path. The pattern and replacement are speparated - # by a comma and are enclosed by curly braces. The replacement spec comes - # after the % character but before the operator letter. (e.g. - # "%{old,new}d"). Muliple replacement specs should be separated by - # semi-colons (e.g. "%{old,new;src,bin}d"). - # - # Regular expressions may be used for the pattern, and back refs may be - # used in the replacement text. Curly braces, commas and semi-colons are - # excluded from both the pattern and replacement text (let's keep parsing - # reasonable). - # - # For example: - # - # "src/org/onestepback/proj/A.java".pathmap("%{^src,bin}X.class") - # - # returns: - # - # "bin/org/onestepback/proj/A.class" - # - # If the replacement text is '*', then a block may be provided to perform - # some arbitrary calculation for the replacement. - # - # For example: - # - # "/path/to/file.TXT".pathmap("%X%{.*,*}x") { |ext| - # ext.downcase - # } - # - # Returns: - # - # "/path/to/file.txt" - # - def pathmap(spec=nil, &block) - return self if spec.nil? - result = '' - spec.scan(/%\{[^}]*\}-?\d*[sdpfnxX%]|%-?\d+d|%.|[^%]+/) do |frag| - case frag - when '%f' - result << File.basename(self) - when '%n' - result << File.basename(self).ext - when '%d' - result << File.dirname(self) - when '%x' - result << File.extname(self) - when '%X' - result << self.ext - when '%p' - result << self - when '%s' - result << (File::ALT_SEPARATOR || File::SEPARATOR) - when '%-' - # do nothing - when '%%' - result << "%" - when /%(-?\d+)d/ - result << pathmap_partial($1.to_i) - when /^%\{([^}]*)\}(\d*[dpfnxX])/ - patterns, operator = $1, $2 - result << pathmap('%' + operator).pathmap_replace(patterns, &block) - when /^%/ - fail ArgumentError, "Unknown pathmap specifier #{frag} in '#{spec}'" - else - result << frag - end - end - result - end - end -end # class String - -############################################################################## -module Rake - - # Errors ----------------------------------------------------------- - - # Error indicating an ill-formed task declaration. - class TaskArgumentError < ArgumentError - end - - # Error indicating a recursion overflow error in task selection. - class RuleRecursionOverflowError < StandardError - def initialize(*args) - super - @targets = [] - end - - def add_target(target) - @targets << target - end - - def message - super + ": [" + @targets.reverse.join(' => ') + "]" - end - end - - # -------------------------------------------------------------------------- - # Rake module singleton methods. - # - class << self - # Current Rake Application - def application - @application ||= Rake::Application.new - end - - # Set the current Rake application object. - def application=(app) - @application = app - end - - # Return the original directory where the Rake application was started. - def original_dir - application.original_dir - end - - end - - #################################################################### - # Mixin for creating easily cloned objects. - # - module Cloneable - # Clone an object by making a new object and setting all the instance - # variables to the same values. - def dup - sibling = self.class.new - instance_variables.each do |ivar| - value = self.instance_variable_get(ivar) - new_value = value.clone rescue value - sibling.instance_variable_set(ivar, new_value) - end - sibling.taint if tainted? - sibling - end - - def clone - sibling = dup - sibling.freeze if frozen? - sibling - end - end - - #################################################################### - # Exit status class for times the system just gives us a nil. - class PseudoStatus - attr_reader :exitstatus - def initialize(code=0) - @exitstatus = code - end - def to_i - @exitstatus << 8 - end - def >>(n) - to_i >> n - end - def stopped? - false - end - def exited? - true - end - end - - #################################################################### - # TaskAguments manage the arguments passed to a task. - # - class TaskArguments - include Enumerable - - attr_reader :names - - # Create a TaskArgument object with a list of named arguments - # (given by :names) and a set of associated values (given by - # :values). :parent is the parent argument object. - def initialize(names, values, parent=nil) - @names = names - @parent = parent - @hash = {} - names.each_with_index { |name, i| - @hash[name.to_sym] = values[i] unless values[i].nil? - } - end - - # Create a new argument scope using the prerequisite argument - # names. - def new_scope(names) - values = names.collect { |n| self[n] } - self.class.new(names, values, self) - end - - # Find an argument value by name or index. - def [](index) - lookup(index.to_sym) - end - - # Specify a hash of default values for task arguments. Use the - # defaults only if there is no specific value for the given - # argument. - def with_defaults(defaults) - @hash = defaults.merge(@hash) - end - - def each(&block) - @hash.each(&block) - end - - def method_missing(sym, *args, &block) - lookup(sym.to_sym) - end - - def to_hash - @hash - end - - def to_s - @hash.inspect - end - - def inspect - to_s - end - - protected - - def lookup(name) - if @hash.has_key?(name) - @hash[name] - elsif ENV.has_key?(name.to_s) - ENV[name.to_s] - elsif ENV.has_key?(name.to_s.upcase) - ENV[name.to_s.upcase] - elsif @parent - @parent.lookup(name) - end - end - end - - EMPTY_TASK_ARGS = TaskArguments.new([], []) - - #################################################################### - # InvocationChain tracks the chain of task invocations to detect - # circular dependencies. - class InvocationChain - def initialize(value, tail) - @value = value - @tail = tail - end - - def member?(obj) - @value == obj || @tail.member?(obj) - end - - def append(value) - if member?(value) - fail RuntimeError, "Circular dependency detected: #{to_s} => #{value}" - end - self.class.new(value, self) - end - - def to_s - "#{prefix}#{@value}" - end - - def self.append(value, chain) - chain.append(value) - end - - private - - def prefix - "#{@tail.to_s} => " - end - - class EmptyInvocationChain - def member?(obj) - false - end - def append(value) - InvocationChain.new(value, self) - end - def to_s - "TOP" - end - end - - EMPTY = EmptyInvocationChain.new - - end # class InvocationChain - -end # module Rake - -module Rake - - ########################################################################### - # A Task is the basic unit of work in a Rakefile. Tasks have associated - # actions (possibly more than one) and a list of prerequisites. When - # invoked, a task will first ensure that all of its prerequisites have an - # opportunity to run and then it will execute its own actions. - # - # Tasks are not usually created directly using the new method, but rather - # use the +file+ and +task+ convenience methods. - # - class Task - # List of prerequisites for a task. - attr_reader :prerequisites - - # List of actions attached to a task. - attr_reader :actions - - # Application owning this task. - attr_accessor :application - - # Comment for this task. Restricted to a single line of no more than 50 - # characters. - attr_reader :comment - - # Full text of the (possibly multi-line) comment. - attr_reader :full_comment - - # Array of nested namespaces names used for task lookup by this task. - attr_reader :scope - - # Return task name - def to_s - name - end - - def inspect - "<#{self.class} #{name} => [#{prerequisites.join(', ')}]>" - end - - # List of sources for task. - attr_writer :sources - def sources - @sources ||= [] - end - - # First source from a rule (nil if no sources) - def source - @sources.first if defined?(@sources) - end - - # Create a task named +task_name+ with no actions or prerequisites. Use - # +enhance+ to add actions and prerequisites. - def initialize(task_name, app) - @name = task_name.to_s - @prerequisites = [] - @actions = [] - @already_invoked = false - @full_comment = nil - @comment = nil - @lock = Monitor.new - @application = app - @scope = app.current_scope - @arg_names = nil - end - - # Enhance a task with prerequisites or actions. Returns self. - def enhance(deps=nil, &block) - @prerequisites |= deps if deps - @actions << block if block_given? - self - end - - # Name of the task, including any namespace qualifiers. - def name - @name.to_s - end - - # Name of task with argument list description. - def name_with_args # :nodoc: - if arg_description - "#{name}#{arg_description}" - else - name - end - end - - # Argument description (nil if none). - def arg_description # :nodoc: - @arg_names ? "[#{(arg_names || []).join(',')}]" : nil - end - - # Name of arguments for this task. - def arg_names - @arg_names || [] - end - - # Reenable the task, allowing its tasks to be executed if the task - # is invoked again. - def reenable - @already_invoked = false - end - - # Clear the existing prerequisites and actions of a rake task. - def clear - clear_prerequisites - clear_actions - self - end - - # Clear the existing prerequisites of a rake task. - def clear_prerequisites - prerequisites.clear - self - end - - # Clear the existing actions on a rake task. - def clear_actions - actions.clear - self - end - - # Invoke the task if it is needed. Prerequites are invoked first. - def invoke(*args) - task_args = TaskArguments.new(arg_names, args) - invoke_with_call_chain(task_args, InvocationChain::EMPTY) - end - - # Same as invoke, but explicitly pass a call chain to detect - # circular dependencies. - def invoke_with_call_chain(task_args, invocation_chain) # :nodoc: - new_chain = InvocationChain.append(self, invocation_chain) - @lock.synchronize do - if application.options.trace - puts "** Invoke #{name} #{format_trace_flags}" - end - return if @already_invoked - @already_invoked = true - invoke_prerequisites(task_args, new_chain) - execute(task_args) if needed? - end - end - protected :invoke_with_call_chain - - # Invoke all the prerequisites of a task. - def invoke_prerequisites(task_args, invocation_chain) # :nodoc: - @prerequisites.each { |n| - prereq = application[n, @scope] - prereq_args = task_args.new_scope(prereq.arg_names) - prereq.invoke_with_call_chain(prereq_args, invocation_chain) - } - end - - # Format the trace flags for display. - def format_trace_flags - flags = [] - flags << "first_time" unless @already_invoked - flags << "not_needed" unless needed? - flags.empty? ? "" : "(" + flags.join(", ") + ")" - end - private :format_trace_flags - - # Execute the actions associated with this task. - def execute(args=nil) - args ||= EMPTY_TASK_ARGS - if application.options.dryrun - puts "** Execute (dry run) #{name}" - return - end - if application.options.trace - puts "** Execute #{name}" - end - application.enhance_with_matching_rule(name) if @actions.empty? - @actions.each do |act| - case act.arity - when 1 - act.call(self) - else - act.call(self, args) - end - end - end - - # Is this task needed? - def needed? - true - end - - # Timestamp for this task. Basic tasks return the current time for their - # time stamp. Other tasks can be more sophisticated. - def timestamp - @prerequisites.collect { |p| application[p].timestamp }.max || Time.now - end - - # Add a description to the task. The description can consist of an option - # argument list (enclosed brackets) and an optional comment. - def add_description(description) - return if ! description - comment = description.strip - add_comment(comment) if comment && ! comment.empty? - end - - # Writing to the comment attribute is the same as adding a description. - def comment=(description) - add_description(description) - end - - # Add a comment to the task. If a comment alread exists, separate - # the new comment with " / ". - def add_comment(comment) - if @full_comment - @full_comment << " / " - else - @full_comment = '' - end - @full_comment << comment - if @full_comment =~ /\A([^.]+?\.)( |$)/ - @comment = $1 - else - @comment = @full_comment - end - end - private :add_comment - - # Set the names of the arguments for this task. +args+ should be - # an array of symbols, one for each argument name. - def set_arg_names(args) - @arg_names = args.map { |a| a.to_sym } - end - - # Return a string describing the internal state of a task. Useful for - # debugging. - def investigation - result = "------------------------------\n" - result << "Investigating #{name}\n" - result << "class: #{self.class}\n" - result << "task needed: #{needed?}\n" - result << "timestamp: #{timestamp}\n" - result << "pre-requisites: \n" - prereqs = @prerequisites.collect {|name| application[name]} - prereqs.sort! {|a,b| a.timestamp <=> b.timestamp} - prereqs.each do |p| - result << "--#{p.name} (#{p.timestamp})\n" - end - latest_prereq = @prerequisites.collect{|n| application[n].timestamp}.max - result << "latest-prerequisite time: #{latest_prereq}\n" - result << "................................\n\n" - return result - end - - # ---------------------------------------------------------------- - # Rake Module Methods - # - class << self - - # Clear the task list. This cause rake to immediately forget all the - # tasks that have been assigned. (Normally used in the unit tests.) - def clear - Rake.application.clear - end - - # List of all defined tasks. - def tasks - Rake.application.tasks - end - - # Return a task with the given name. If the task is not currently - # known, try to synthesize one from the defined rules. If no rules are - # found, but an existing file matches the task name, assume it is a file - # task with no dependencies or actions. - def [](task_name) - Rake.application[task_name] - end - - # TRUE if the task name is already defined. - def task_defined?(task_name) - Rake.application.lookup(task_name) != nil - end - - # Define a task given +args+ and an option block. If a rule with the - # given name already exists, the prerequisites and actions are added to - # the existing task. Returns the defined task. - def define_task(*args, &block) - Rake.application.define_task(self, *args, &block) - end - - # Define a rule for synthesizing tasks. - def create_rule(*args, &block) - Rake.application.create_rule(*args, &block) - end - - # Apply the scope to the task name according to the rules for - # this kind of task. Generic tasks will accept the scope as - # part of the name. - def scope_name(scope, task_name) - (scope + [task_name]).join(':') - end - - end # class << Rake::Task - end # class Rake::Task - - - ########################################################################### - # A FileTask is a task that includes time based dependencies. If any of a - # FileTask's prerequisites have a timestamp that is later than the file - # represented by this task, then the file must be rebuilt (using the - # supplied actions). - # - class FileTask < Task - - # Is this file task needed? Yes if it doesn't exist, or if its time stamp - # is out of date. - def needed? - ! File.exist?(name) || out_of_date?(timestamp) - end - - # Time stamp for file task. - def timestamp - if File.exist?(name) - File.mtime(name.to_s) - else - Rake::EARLY - end - end - - private - - # Are there any prerequisites with a later time than the given time stamp? - def out_of_date?(stamp) - @prerequisites.any? { |n| application[n].timestamp > stamp} - end - - # ---------------------------------------------------------------- - # Task class methods. - # - class << self - # Apply the scope to the task name according to the rules for this kind - # of task. File based tasks ignore the scope when creating the name. - def scope_name(scope, task_name) - task_name - end - end - end # class Rake::FileTask - - ########################################################################### - # A FileCreationTask is a file task that when used as a dependency will be - # needed if and only if the file has not been created. Once created, it is - # not re-triggered if any of its dependencies are newer, nor does trigger - # any rebuilds of tasks that depend on it whenever it is updated. - # - class FileCreationTask < FileTask - # Is this file task needed? Yes if it doesn't exist. - def needed? - ! File.exist?(name) - end - - # Time stamp for file creation task. This time stamp is earlier - # than any other time stamp. - def timestamp - Rake::EARLY - end - end - - ########################################################################### - # Same as a regular task, but the immediate prerequisites are done in - # parallel using Ruby threads. - # - class MultiTask < Task - private - def invoke_prerequisites(args, invocation_chain) - threads = @prerequisites.collect { |p| - Thread.new(p) { |r| application[r].invoke_with_call_chain(args, invocation_chain) } - } - threads.each { |t| t.join } - end - end -end # module Rake - -## ########################################################################### -# Task Definition Functions ... - -# Declare a basic task. -# -# Example: -# task :clobber => [:clean] do -# rm_rf "html" -# end -# -def task(*args, &block) - Rake::Task.define_task(*args, &block) -end - - -# Declare a file task. -# -# Example: -# file "config.cfg" => ["config.template"] do -# open("config.cfg", "w") do |outfile| -# open("config.template") do |infile| -# while line = infile.gets -# outfile.puts line -# end -# end -# end -# end -# -def file(*args, &block) - Rake::FileTask.define_task(*args, &block) -end - -# Declare a file creation task. -# (Mainly used for the directory command). -def file_create(args, &block) - Rake::FileCreationTask.define_task(args, &block) -end - -# Declare a set of files tasks to create the given directories on demand. -# -# Example: -# directory "testdata/doc" -# -def directory(dir) - Rake.each_dir_parent(dir) do |d| - file_create d do |t| - mkdir_p t.name if ! File.exist?(t.name) - end - end -end - -# Declare a task that performs its prerequisites in parallel. Multitasks does -# *not* guarantee that its prerequisites will execute in any given order -# (which is obvious when you think about it) -# -# Example: -# multitask :deploy => [:deploy_gem, :deploy_rdoc] -# -def multitask(args, &block) - Rake::MultiTask.define_task(args, &block) -end - -# Create a new rake namespace and use it for evaluating the given block. -# Returns a NameSpace object that can be used to lookup tasks defined in the -# namespace. -# -# E.g. -# -# ns = namespace "nested" do -# task :run -# end -# task_run = ns[:run] # find :run in the given namespace. -# -def namespace(name=nil, &block) - Rake.application.in_namespace(name, &block) -end - -# Declare a rule for auto-tasks. -# -# Example: -# rule '.o' => '.c' do |t| -# sh %{cc -o #{t.name} #{t.source}} -# end -# -def rule(*args, &block) - Rake::Task.create_rule(*args, &block) -end - -# Describe the next rake task. -# -# Example: -# desc "Run the Unit Tests" -# task :test => [:build] -# runtests -# end -# -def desc(description) - Rake.application.last_description = description -end - -# Import the partial Rakefiles +fn+. Imported files are loaded _after_ the -# current file is completely loaded. This allows the import statement to -# appear anywhere in the importing file, and yet allowing the imported files -# to depend on objects defined in the importing file. -# -# A common use of the import statement is to include files containing -# dependency declarations. -# -# See also the --rakelibdir command line option. -# -# Example: -# import ".depend", "my_rules" -# -def import(*fns) - fns.each do |fn| - Rake.application.add_import(fn) - end -end - -############################################################################# -# This a FileUtils extension that defines several additional commands to be -# added to the FileUtils utility functions. -# -module FileUtils - RUBY_EXT = ((Config::CONFIG['ruby_install_name'] =~ /\.(com|cmd|exe|bat|rb|sh)$/) ? - "" : - Config::CONFIG['EXEEXT']) - - RUBY = File.join( - Config::CONFIG['bindir'], - Config::CONFIG['ruby_install_name'] + RUBY_EXT). - sub(/.*\s.*/m, '"\&"') - - OPT_TABLE['sh'] = %w(noop verbose) - OPT_TABLE['ruby'] = %w(noop verbose) - - # Run the system command +cmd+. If multiple arguments are given the command - # is not run with the shell (same semantics as Kernel::exec and - # Kernel::system). - # - # Example: - # sh %{ls -ltr} - # - # sh 'ls', 'file with spaces' - # - # # check exit status after command runs - # sh %{grep pattern file} do |ok, res| - # if ! ok - # puts "pattern not found (status = #{res.exitstatus})" - # end - # end - # - def sh(*cmd, &block) - options = (Hash === cmd.last) ? cmd.pop : {} - unless block_given? - show_command = cmd.join(" ") - show_command = show_command[0,42] + "..." unless $trace - # TODO code application logic heref show_command.length > 45 - block = lambda { |ok, status| - ok or fail "Command failed with status (#{status.exitstatus}): [#{show_command}]" - } - end - if RakeFileUtils.verbose_flag == :default - options[:verbose] = true - else - options[:verbose] ||= RakeFileUtils.verbose_flag - end - options[:noop] ||= RakeFileUtils.nowrite_flag - rake_check_options options, :noop, :verbose - rake_output_message cmd.join(" ") if options[:verbose] - unless options[:noop] - res = rake_system(*cmd) - status = $? - status = PseudoStatus.new(1) if !res && status.nil? - block.call(res, status) - end - end - - def rake_system(*cmd) - Rake::AltSystem.system(*cmd) - end - private :rake_system - - # Run a Ruby interpreter with the given arguments. - # - # Example: - # ruby %{-pe '$_.upcase!' 1 then - sh(*([RUBY] + args + [options]), &block) - else - sh("#{RUBY} #{args.first}", options, &block) - end - end - - LN_SUPPORTED = [true] - - # Attempt to do a normal file link, but fall back to a copy if the link - # fails. - def safe_ln(*args) - unless LN_SUPPORTED[0] - cp(*args) - else - begin - ln(*args) - rescue StandardError, NotImplementedError => ex - LN_SUPPORTED[0] = false - cp(*args) - end - end - end - - # Split a file path into individual directory names. - # - # Example: - # split_all("a/b/c") => ['a', 'b', 'c'] - # - def split_all(path) - head, tail = File.split(path) - return [tail] if head == '.' || tail == '/' - return [head, tail] if head == '/' - return split_all(head) + [tail] - end -end - -############################################################################# -# RakeFileUtils provides a custom version of the FileUtils methods that -# respond to the verbose and nowrite commands. -# -module RakeFileUtils - include FileUtils - - class << self - attr_accessor :verbose_flag, :nowrite_flag - end - RakeFileUtils.verbose_flag = :default - RakeFileUtils.nowrite_flag = false - - $fileutils_verbose = true - $fileutils_nowrite = false - - FileUtils::OPT_TABLE.each do |name, opts| - default_options = [] - if opts.include?(:verbose) || opts.include?("verbose") - default_options << ':verbose => RakeFileUtils.verbose_flag' - end - if opts.include?(:noop) || opts.include?("noop") - default_options << ':noop => RakeFileUtils.nowrite_flag' - end - - next if default_options.empty? - module_eval(<<-EOS, __FILE__, __LINE__ + 1) - def #{name}( *args, &block ) - super( - *rake_merge_option(args, - #{default_options.join(', ')} - ), &block) - end - EOS - end - - # Get/set the verbose flag controlling output from the FileUtils utilities. - # If verbose is true, then the utility method is echoed to standard output. - # - # Examples: - # verbose # return the current value of the verbose flag - # verbose(v) # set the verbose flag to _v_. - # verbose(v) { code } # Execute code with the verbose flag set temporarily to _v_. - # # Return to the original value when code is done. - def verbose(value=nil) - oldvalue = RakeFileUtils.verbose_flag - RakeFileUtils.verbose_flag = value unless value.nil? - if block_given? - begin - yield - ensure - RakeFileUtils.verbose_flag = oldvalue - end - end - RakeFileUtils.verbose_flag - end - - # Get/set the nowrite flag controlling output from the FileUtils utilities. - # If verbose is true, then the utility method is echoed to standard output. - # - # Examples: - # nowrite # return the current value of the nowrite flag - # nowrite(v) # set the nowrite flag to _v_. - # nowrite(v) { code } # Execute code with the nowrite flag set temporarily to _v_. - # # Return to the original value when code is done. - def nowrite(value=nil) - oldvalue = RakeFileUtils.nowrite_flag - RakeFileUtils.nowrite_flag = value unless value.nil? - if block_given? - begin - yield - ensure - RakeFileUtils.nowrite_flag = oldvalue - end - end - oldvalue - end - - # Use this function to prevent protentially destructive ruby code from - # running when the :nowrite flag is set. - # - # Example: - # - # when_writing("Building Project") do - # project.build - # end - # - # The following code will build the project under normal conditions. If the - # nowrite(true) flag is set, then the example will print: - # DRYRUN: Building Project - # instead of actually building the project. - # - def when_writing(msg=nil) - if RakeFileUtils.nowrite_flag - puts "DRYRUN: #{msg}" if msg - else - yield - end - end - - # Merge the given options with the default values. - def rake_merge_option(args, defaults) - if Hash === args.last - defaults.update(args.last) - args.pop - end - args.push defaults - args - end - private :rake_merge_option - - # Send the message to the default rake output (which is $stderr). - def rake_output_message(message) - $stderr.puts(message) - end - private :rake_output_message - - # Check that the options do not contain options not listed in +optdecl+. An - # ArgumentError exception is thrown if non-declared options are found. - def rake_check_options(options, *optdecl) - h = options.dup - optdecl.each do |name| - h.delete name - end - raise ArgumentError, "no such option: #{h.keys.join(' ')}" unless h.empty? - end - private :rake_check_options - - extend self -end - -############################################################################# -# Include the FileUtils file manipulation functions in the top level module, -# but mark them private so that they don't unintentionally define methods on -# other objects. - -include RakeFileUtils -private(*FileUtils.instance_methods(false)) -private(*RakeFileUtils.instance_methods(false)) - -###################################################################### -module Rake - - ########################################################################### - # A FileList is essentially an array with a few helper methods defined to - # make file manipulation a bit easier. - # - # FileLists are lazy. When given a list of glob patterns for possible files - # to be included in the file list, instead of searching the file structures - # to find the files, a FileList holds the pattern for latter use. - # - # This allows us to define a number of FileList to match any number of - # files, but only search out the actual files when then FileList itself is - # actually used. The key is that the first time an element of the - # FileList/Array is requested, the pending patterns are resolved into a real - # list of file names. - # - class FileList - - include Cloneable - - # == Method Delegation - # - # The lazy evaluation magic of FileLists happens by implementing all the - # array specific methods to call +resolve+ before delegating the heavy - # lifting to an embedded array object (@items). - # - # In addition, there are two kinds of delegation calls. The regular kind - # delegates to the @items array and returns the result directly. Well, - # almost directly. It checks if the returned value is the @items object - # itself, and if so will return the FileList object instead. - # - # The second kind of delegation call is used in methods that normally - # return a new Array object. We want to capture the return value of these - # methods and wrap them in a new FileList object. We enumerate these - # methods in the +SPECIAL_RETURN+ list below. - - # List of array methods (that are not in +Object+) that need to be - # delegated. - ARRAY_METHODS = (Array.instance_methods - Object.instance_methods).map { |n| n.to_s } - - # List of additional methods that must be delegated. - MUST_DEFINE = %w[to_a inspect] - - # List of methods that should not be delegated here (we define special - # versions of them explicitly below). - MUST_NOT_DEFINE = %w[to_a to_ary partition *] - - # List of delegated methods that return new array values which need - # wrapping. - SPECIAL_RETURN = %w[ - map collect sort sort_by select find_all reject grep - compact flatten uniq values_at - + - & | - ] - - DELEGATING_METHODS = (ARRAY_METHODS + MUST_DEFINE - MUST_NOT_DEFINE).collect{ |s| s.to_s }.sort.uniq - - # Now do the delegation. - DELEGATING_METHODS.each_with_index do |sym, i| - if SPECIAL_RETURN.include?(sym) - ln = __LINE__+1 - class_eval %{ - def #{sym}(*args, &block) - resolve - result = @items.send(:#{sym}, *args, &block) - FileList.new.import(result) - end - }, __FILE__, ln - else - ln = __LINE__+1 - class_eval %{ - def #{sym}(*args, &block) - resolve - result = @items.send(:#{sym}, *args, &block) - result.object_id == @items.object_id ? self : result - end - }, __FILE__, ln - end - end - - # Create a file list from the globbable patterns given. If you wish to - # perform multiple includes or excludes at object build time, use the - # "yield self" pattern. - # - # Example: - # file_list = FileList.new('lib/**/*.rb', 'test/test*.rb') - # - # pkg_files = FileList.new('lib/**/*') do |fl| - # fl.exclude(/\bCVS\b/) - # end - # - def initialize(*patterns) - @pending_add = [] - @pending = false - @exclude_patterns = DEFAULT_IGNORE_PATTERNS.dup - @exclude_procs = DEFAULT_IGNORE_PROCS.dup - @exclude_re = nil - @items = [] - patterns.each { |pattern| include(pattern) } - yield self if block_given? - end - - # Add file names defined by glob patterns to the file list. If an array - # is given, add each element of the array. - # - # Example: - # file_list.include("*.java", "*.cfg") - # file_list.include %w( math.c lib.h *.o ) - # - def include(*filenames) - # TODO: check for pending - filenames.each do |fn| - if fn.respond_to? :to_ary - include(*fn.to_ary) - else - @pending_add << fn - end - end - @pending = true - self - end - alias :add :include - - # Register a list of file name patterns that should be excluded from the - # list. Patterns may be regular expressions, glob patterns or regular - # strings. In addition, a block given to exclude will remove entries that - # return true when given to the block. - # - # Note that glob patterns are expanded against the file system. If a file - # is explicitly added to a file list, but does not exist in the file - # system, then an glob pattern in the exclude list will not exclude the - # file. - # - # Examples: - # FileList['a.c', 'b.c'].exclude("a.c") => ['b.c'] - # FileList['a.c', 'b.c'].exclude(/^a/) => ['b.c'] - # - # If "a.c" is a file, then ... - # FileList['a.c', 'b.c'].exclude("a.*") => ['b.c'] - # - # If "a.c" is not a file, then ... - # FileList['a.c', 'b.c'].exclude("a.*") => ['a.c', 'b.c'] - # - def exclude(*patterns, &block) - patterns.each do |pat| - @exclude_patterns << pat - end - if block_given? - @exclude_procs << block - end - resolve_exclude if ! @pending - self - end - - - # Clear all the exclude patterns so that we exclude nothing. - def clear_exclude - @exclude_patterns = [] - @exclude_procs = [] - calculate_exclude_regexp if ! @pending - self - end - - # Define equality. - def ==(array) - to_ary == array - end - - # Return the internal array object. - def to_a - resolve - @items - end - - # Return the internal array object. - def to_ary - to_a - end - - # Lie about our class. - def is_a?(klass) - klass == Array || super(klass) - end - alias kind_of? is_a? - - # Redefine * to return either a string or a new file list. - def *(other) - result = @items * other - case result - when Array - FileList.new.import(result) - else - result - end - end - - # Resolve all the pending adds now. - def resolve - if @pending - @pending = false - @pending_add.each do |fn| resolve_add(fn) end - @pending_add = [] - resolve_exclude - end - self - end - - def calculate_exclude_regexp - ignores = [] - @exclude_patterns.each do |pat| - case pat - when Regexp - ignores << pat - when /[*?]/ - Dir[pat].each do |p| ignores << p end - else - ignores << Regexp.quote(pat) - end - end - if ignores.empty? - @exclude_re = /^$/ - else - re_str = ignores.collect { |p| "(" + p.to_s + ")" }.join("|") - @exclude_re = Regexp.new(re_str) - end - end - - def resolve_add(fn) - case fn - when %r{[*?\[\{]} - add_matching(fn) - else - self << fn - end - end - private :resolve_add - - def resolve_exclude - calculate_exclude_regexp - reject! { |fn| exclude?(fn) } - self - end - private :resolve_exclude - - # Return a new FileList with the results of running +sub+ against each - # element of the oringal list. - # - # Example: - # FileList['a.c', 'b.c'].sub(/\.c$/, '.o') => ['a.o', 'b.o'] - # - def sub(pat, rep) - inject(FileList.new) { |res, fn| res << fn.sub(pat,rep) } - end - - # Return a new FileList with the results of running +gsub+ against each - # element of the original list. - # - # Example: - # FileList['lib/test/file', 'x/y'].gsub(/\//, "\\") - # => ['lib\\test\\file', 'x\\y'] - # - def gsub(pat, rep) - inject(FileList.new) { |res, fn| res << fn.gsub(pat,rep) } - end - - # Same as +sub+ except that the oringal file list is modified. - def sub!(pat, rep) - each_with_index { |fn, i| self[i] = fn.sub(pat,rep) } - self - end - - # Same as +gsub+ except that the original file list is modified. - def gsub!(pat, rep) - each_with_index { |fn, i| self[i] = fn.gsub(pat,rep) } - self - end - - # Apply the pathmap spec to each of the included file names, returning a - # new file list with the modified paths. (See String#pathmap for - # details.) - def pathmap(spec=nil) - collect { |fn| fn.pathmap(spec) } - end - - # Return a new FileList with String#ext method applied - # to each member of the array. - # - # This method is a shortcut for: - # - # array.collect { |item| item.ext(newext) } - # - # +ext+ is a user added method for the Array class. - def ext(newext='') - collect { |fn| fn.ext(newext) } - end - - - # Grep each of the files in the filelist using the given pattern. If a - # block is given, call the block on each matching line, passing the file - # name, line number, and the matching line of text. If no block is given, - # a standard emac style file:linenumber:line message will be printed to - # standard out. - def egrep(pattern, *options) - each do |fn| - open(fn, "rb", *options) do |inf| - count = 0 - inf.each do |line| - count += 1 - if pattern.match(line) - if block_given? - yield fn, count, line - else - puts "#{fn}:#{count}:#{line}" - end - end - end - end - end - end - - # Return a new file list that only contains file names from the current - # file list that exist on the file system. - def existing - select { |fn| File.exist?(fn) } - end - - # Modify the current file list so that it contains only file name that - # exist on the file system. - def existing! - resolve - @items = @items.select { |fn| File.exist?(fn) } - self - end - - # FileList version of partition. Needed because the nested arrays should - # be FileLists in this version. - def partition(&block) # :nodoc: - resolve - result = @items.partition(&block) - [ - FileList.new.import(result[0]), - FileList.new.import(result[1]), - ] - end - - # Convert a FileList to a string by joining all elements with a space. - def to_s - resolve - self.join(' ') - end - - # Add matching glob patterns. - def add_matching(pattern) - Dir[pattern].each do |fn| - self << fn unless exclude?(fn) - end - end - private :add_matching - - # Should the given file name be excluded? - def exclude?(fn) - calculate_exclude_regexp unless @exclude_re - fn =~ @exclude_re || @exclude_procs.any? { |p| p.call(fn) } - end - - DEFAULT_IGNORE_PATTERNS = [ - /(^|[\/\\])CVS([\/\\]|$)/, - /(^|[\/\\])\.svn([\/\\]|$)/, - /\.bak$/, - /~$/ - ] - DEFAULT_IGNORE_PROCS = [ - proc { |fn| fn =~ /(^|[\/\\])core$/ && ! File.directory?(fn) } - ] -# @exclude_patterns = DEFAULT_IGNORE_PATTERNS.dup - - def import(array) - @items = array - self - end - - class << self - # Create a new file list including the files listed. Similar to: - # - # FileList.new(*args) - def [](*args) - new(*args) - end - end - end # FileList -end - -module Rake - class << self - - # Yield each file or directory component. - def each_dir_parent(dir) # :nodoc: - old_length = nil - while dir != '.' && dir.length != old_length - yield(dir) - old_length = dir.length - dir = File.dirname(dir) - end - end - end -end # module Rake - -# Alias FileList to be available at the top level. -FileList = Rake::FileList - -############################################################################# -module Rake - - # Default Rakefile loader used by +import+. - class DefaultLoader - def load(fn) - Kernel.load(File.expand_path(fn)) - end - end - - # EarlyTime is a fake timestamp that occurs _before_ any other time value. - class EarlyTime - include Comparable - include Singleton - - def <=>(other) - -1 - end - - def to_s - "" - end - end - - EARLY = EarlyTime.instance -end # module Rake - -############################################################################# -# Extensions to time to allow comparisons with an early time class. -# -class Time - alias rake_original_time_compare :<=> - def <=>(other) - if Rake::EarlyTime === other - - other.<=>(self) - else - rake_original_time_compare(other) - end - end -end # class Time - -module Rake - - #################################################################### - # The NameSpace class will lookup task names in the the scope - # defined by a +namespace+ command. - # - class NameSpace - - # Create a namespace lookup object using the given task manager - # and the list of scopes. - def initialize(task_manager, scope_list) - @task_manager = task_manager - @scope = scope_list.dup - end - - # Lookup a task named +name+ in the namespace. - def [](name) - @task_manager.lookup(name, @scope) - end - - # Return the list of tasks defined in this and nested namespaces. - def tasks - @task_manager.tasks_in_scope(@scope) - end - end # NameSpace - - - #################################################################### - # The TaskManager module is a mixin for managing tasks. - module TaskManager - # Track the last comment made in the Rakefile. - attr_accessor :last_description - alias :last_comment :last_description # Backwards compatibility - - def initialize - super - @tasks = Hash.new - @rules = Array.new - @scope = Array.new - @last_description = nil - end - - def create_rule(*args, &block) - pattern, arg_names, deps = resolve_args(args) - pattern = Regexp.new(Regexp.quote(pattern) + '$') if String === pattern - @rules << [pattern, deps, block] - end - - def define_task(task_class, *args, &block) - task_name, arg_names, deps = resolve_args(args) - task_name = task_class.scope_name(@scope, task_name) - deps = [deps] unless deps.respond_to?(:to_ary) - deps = deps.collect {|d| d.to_s } - task = intern(task_class, task_name) - task.set_arg_names(arg_names) unless arg_names.empty? - task.add_description(@last_description) - @last_description = nil - task.enhance(deps, &block) - task - end - - # Lookup a task. Return an existing task if found, otherwise - # create a task of the current type. - def intern(task_class, task_name) - @tasks[task_name.to_s] ||= task_class.new(task_name, self) - end - - # Find a matching task for +task_name+. - def [](task_name, scopes=nil) - task_name = task_name.to_s - self.lookup(task_name, scopes) or - enhance_with_matching_rule(task_name) or - synthesize_file_task(task_name) or - fail "Don't know how to build task '#{task_name}'" - end - - def synthesize_file_task(task_name) - return nil unless File.exist?(task_name) - define_task(Rake::FileTask, task_name) - end - - # Resolve the arguments for a task/rule. Returns a triplet of - # [task_name, arg_name_list, prerequisites]. - def resolve_args(args) - if args.last.is_a?(Hash) - deps = args.pop - resolve_args_with_dependencies(args, deps) - else - resolve_args_without_dependencies(args) - end - end - - # Resolve task arguments for a task or rule when there are no - # dependencies declared. - # - # The patterns recognized by this argument resolving function are: - # - # task :t - # task :t, [:a] - # task :t, :a (deprecated) - # - def resolve_args_without_dependencies(args) - task_name = args.shift - if args.size == 1 && args.first.respond_to?(:to_ary) - arg_names = args.first.to_ary - else - arg_names = args - end - [task_name, arg_names, []] - end - private :resolve_args_without_dependencies - - # Resolve task arguments for a task or rule when there are - # dependencies declared. - # - # The patterns recognized by this argument resolving function are: - # - # task :t => [:d] - # task :t, [a] => [:d] - # task :t, :needs => [:d] (deprecated) - # task :t, :a, :needs => [:d] (deprecated) - # - def resolve_args_with_dependencies(args, hash) # :nodoc: - fail "Task Argument Error" if hash.size != 1 - key, value = hash.map { |k, v| [k,v] }.first - if args.empty? - task_name = key - arg_names = [] - deps = value - elsif key == :needs - task_name = args.shift - arg_names = args - deps = value - else - task_name = args.shift - arg_names = key - deps = value - end - deps = [deps] unless deps.respond_to?(:to_ary) - [task_name, arg_names, deps] - end - private :resolve_args_with_dependencies - - # If a rule can be found that matches the task name, enhance the - # task with the prerequisites and actions from the rule. Set the - # source attribute of the task appropriately for the rule. Return - # the enhanced task or nil of no rule was found. - def enhance_with_matching_rule(task_name, level=0) - fail Rake::RuleRecursionOverflowError, - "Rule Recursion Too Deep" if level >= 16 - @rules.each do |pattern, extensions, block| - if md = pattern.match(task_name) - task = attempt_rule(task_name, extensions, block, level) - return task if task - end - end - nil - rescue Rake::RuleRecursionOverflowError => ex - ex.add_target(task_name) - fail ex - end - - # List of all defined tasks in this application. - def tasks - @tasks.values.sort_by { |t| t.name } - end - - # List of all the tasks defined in the given scope (and its - # sub-scopes). - def tasks_in_scope(scope) - prefix = scope.join(":") - tasks.select { |t| - /^#{prefix}:/ =~ t.name - } - end - - # Clear all tasks in this application. - def clear - @tasks.clear - @rules.clear - end - - # Lookup a task, using scope and the scope hints in the task name. - # This method performs straight lookups without trying to - # synthesize file tasks or rules. Special scope names (e.g. '^') - # are recognized. If no scope argument is supplied, use the - # current scope. Return nil if the task cannot be found. - def lookup(task_name, initial_scope=nil) - initial_scope ||= @scope - task_name = task_name.to_s - if task_name =~ /^rake:/ - scopes = [] - task_name = task_name.sub(/^rake:/, '') - elsif task_name =~ /^(\^+)/ - scopes = initial_scope[0, initial_scope.size - $1.size] - task_name = task_name.sub(/^(\^+)/, '') - else - scopes = initial_scope - end - lookup_in_scope(task_name, scopes) - end - - # Lookup the task name - def lookup_in_scope(name, scope) - n = scope.size - while n >= 0 - tn = (scope[0,n] + [name]).join(':') - task = @tasks[tn] - return task if task - n -= 1 - end - nil - end - private :lookup_in_scope - - # Return the list of scope names currently active in the task - # manager. - def current_scope - @scope.dup - end - - # Evaluate the block in a nested namespace named +name+. Create - # an anonymous namespace if +name+ is nil. - def in_namespace(name) - name ||= generate_name - @scope.push(name) - ns = NameSpace.new(self, @scope) - yield(ns) - ns - ensure - @scope.pop - end - - private - - # Generate an anonymous namespace name. - def generate_name - @seed ||= 0 - @seed += 1 - "_anon_#{@seed}" - end - - def trace_rule(level, message) - puts "#{" "*level}#{message}" if Rake.application.options.trace_rules - end - - # Attempt to create a rule given the list of prerequisites. - def attempt_rule(task_name, extensions, block, level) - sources = make_sources(task_name, extensions) - prereqs = sources.collect { |source| - trace_rule level, "Attempting Rule #{task_name} => #{source}" - if File.exist?(source) || Rake::Task.task_defined?(source) - trace_rule level, "(#{task_name} => #{source} ... EXIST)" - source - elsif parent = enhance_with_matching_rule(source, level+1) - trace_rule level, "(#{task_name} => #{source} ... ENHANCE)" - parent.name - else - trace_rule level, "(#{task_name} => #{source} ... FAIL)" - return nil - end - } - task = FileTask.define_task({task_name => prereqs}, &block) - task.sources = prereqs - task - end - - # Make a list of sources from the list of file name extensions / - # translation procs. - def make_sources(task_name, extensions) - extensions.collect { |ext| - case ext - when /%/ - task_name.pathmap(ext) - when %r{/} - ext - when /^\./ - task_name.ext(ext) - when String - ext - when Proc - if ext.arity == 1 - ext.call(task_name) - else - ext.call - end - else - fail "Don't know how to handle rule dependent: #{ext.inspect}" - end - }.flatten - end - - end # TaskManager - - ###################################################################### - # Rake main application object. When invoking +rake+ from the - # command line, a Rake::Application object is created and run. - # - class Application - include TaskManager - - # The name of the application (typically 'rake') - attr_reader :name - - # The original directory where rake was invoked. - attr_reader :original_dir - - # Name of the actual rakefile used. - attr_reader :rakefile - - # List of the top level task names (task names from the command line). - attr_reader :top_level_tasks - - DEFAULT_RAKEFILES = ['rakefile', 'Rakefile', 'rakefile.rb', 'Rakefile.rb'].freeze - - # Initialize a Rake::Application object. - def initialize - super - @name = 'rake' - @rakefiles = DEFAULT_RAKEFILES.dup - @rakefile = nil - @pending_imports = [] - @imported = [] - @loaders = {} - @default_loader = Rake::DefaultLoader.new - @original_dir = Dir.pwd - @top_level_tasks = [] - add_loader('rb', DefaultLoader.new) - add_loader('rf', DefaultLoader.new) - add_loader('rake', DefaultLoader.new) - @tty_output = STDOUT.tty? - end - - # Run the Rake application. The run method performs the following three steps: - # - # * Initialize the command line options (+init+). - # * Define the tasks (+load_rakefile+). - # * Run the top level tasks (+run_tasks+). - # - # If you wish to build a custom rake command, you should call +init+ on your - # application. The define any tasks. Finally, call +top_level+ to run your top - # level tasks. - def run - standard_exception_handling do - init - load_rakefile - top_level - end - end - - # Initialize the command line parameters and app name. - def init(app_name='rake') - standard_exception_handling do - @name = app_name - handle_options - collect_tasks - end - end - - # Find the rakefile and then load it and any pending imports. - def load_rakefile - standard_exception_handling do - raw_load_rakefile - end - end - - # Run the top level tasks of a Rake application. - def top_level - standard_exception_handling do - if options.show_tasks - display_tasks_and_comments - elsif options.show_prereqs - display_prerequisites - else - top_level_tasks.each { |task_name| invoke_task(task_name) } - end - end - end - - # Add a loader to handle imported files ending in the extension - # +ext+. - def add_loader(ext, loader) - ext = ".#{ext}" unless ext =~ /^\./ - @loaders[ext] = loader - end - - # Application options from the command line - def options - @options ||= OpenStruct.new - end - - # private ---------------------------------------------------------------- - - def invoke_task(task_string) - name, args = parse_task_string(task_string) - t = self[name] - t.invoke(*args) - end - - def parse_task_string(string) - if string =~ /^([^\[]+)(\[(.*)\])$/ - name = $1 - args = $3.split(/\s*,\s*/) - else - name = string - args = [] - end - [name, args] - end - - # Provide standard execption handling for the given block. - def standard_exception_handling - begin - yield - rescue SystemExit => ex - # Exit silently with current status - raise - rescue OptionParser::InvalidOption => ex - # Exit silently - exit(false) - rescue Exception => ex - # Exit with error message - $stderr.puts "#{name} aborted!" - $stderr.puts ex.message - if options.trace - $stderr.puts ex.backtrace.join("\n") - else - $stderr.puts ex.backtrace.find {|str| str =~ /#{@rakefile}/ } || "" - $stderr.puts "(See full trace by running task with --trace)" - end - exit(false) - end - end - - # True if one of the files in RAKEFILES is in the current directory. - # If a match is found, it is copied into @rakefile. - def have_rakefile - @rakefiles.each do |fn| - if File.exist?(fn) - others = Dir.glob(fn, File::FNM_CASEFOLD) - return others.size == 1 ? others.first : fn - elsif fn == '' - return fn - end - end - return nil - end - - # True if we are outputting to TTY, false otherwise - def tty_output? - @tty_output - end - - # Override the detected TTY output state (mostly for testing) - def tty_output=( tty_output_state ) - @tty_output = tty_output_state - end - - # We will truncate output if we are outputting to a TTY or if we've been - # given an explicit column width to honor - def truncate_output? - tty_output? || ENV['RAKE_COLUMNS'] - end - - # Display the tasks and comments. - def display_tasks_and_comments - displayable_tasks = tasks.select { |t| - t.comment && t.name =~ options.show_task_pattern - } - if options.full_description - displayable_tasks.each do |t| - puts "#{name} #{t.name_with_args}" - t.full_comment.split("\n").each do |line| - puts " #{line}" - end - puts - end - else - width = displayable_tasks.collect { |t| t.name_with_args.length }.max || 10 - max_column = truncate_output? ? terminal_width - name.size - width - 7 : nil - displayable_tasks.each do |t| - printf "#{name} %-#{width}s # %s\n", - t.name_with_args, max_column ? truncate(t.comment, max_column) : t.comment - end - end - end - - def terminal_width - if ENV['RAKE_COLUMNS'] - result = ENV['RAKE_COLUMNS'].to_i - else - result = unix? ? dynamic_width : 80 - end - (result < 10) ? 80 : result - rescue - 80 - end - - # Calculate the dynamic width of the - def dynamic_width - @dynamic_width ||= (dynamic_width_stty.nonzero? || dynamic_width_tput) - end - - def dynamic_width_stty - %x{stty size 2>/dev/null}.split[1].to_i - end - - def dynamic_width_tput - %x{tput cols 2>/dev/null}.to_i - end - - def unix? - RUBY_PLATFORM =~ /(aix|darwin|linux|(net|free|open)bsd|cygwin|solaris|irix|hpux)/i - end - - def windows? - Win32.windows? - end - - def truncate(string, width) - if string.length <= width - string - else - ( string[0, width-3] || "" ) + "..." - end - end - - # Display the tasks and prerequisites - def display_prerequisites - tasks.each do |t| - puts "#{name} #{t.name}" - t.prerequisites.each { |pre| puts " #{pre}" } - end - end - - # A list of all the standard options used in rake, suitable for - # passing to OptionParser. - def standard_rake_options - [ - ['--classic-namespace', '-C', "Put Task and FileTask in the top level namespace", - lambda { |value| - require 'rake/classic_namespace' - options.classic_namespace = true - } - ], - ['--describe', '-D [PATTERN]', "Describe the tasks (matching optional PATTERN), then exit.", - lambda { |value| - options.show_tasks = true - options.full_description = true - options.show_task_pattern = Regexp.new(value || '') - } - ], - ['--dry-run', '-n', "Do a dry run without executing actions.", - lambda { |value| - verbose(true) - nowrite(true) - options.dryrun = true - options.trace = true - } - ], - ['--execute', '-e CODE', "Execute some Ruby code and exit.", - lambda { |value| - eval(value) - exit - } - ], - ['--execute-print', '-p CODE', "Execute some Ruby code, print the result, then exit.", - lambda { |value| - puts eval(value) - exit - } - ], - ['--execute-continue', '-E CODE', - "Execute some Ruby code, then continue with normal task processing.", - lambda { |value| eval(value) } - ], - ['--libdir', '-I LIBDIR', "Include LIBDIR in the search path for required modules.", - lambda { |value| $:.push(value) } - ], - ['--prereqs', '-P', "Display the tasks and dependencies, then exit.", - lambda { |value| options.show_prereqs = true } - ], - ['--quiet', '-q', "Do not log messages to standard output.", - lambda { |value| verbose(false) } - ], - ['--rakefile', '-f [FILE]', "Use FILE as the rakefile.", - lambda { |value| - value ||= '' - @rakefiles.clear - @rakefiles << value - } - ], - ['--rakelibdir', '--rakelib', '-R RAKELIBDIR', - "Auto-import any .rake files in RAKELIBDIR. (default is 'rakelib')", - lambda { |value| options.rakelib = value.split(':') } - ], - ['--require', '-r MODULE', "Require MODULE before executing rakefile.", - lambda { |value| - begin - require value - rescue LoadError => ex - begin - rake_require value - rescue LoadError => ex2 - raise ex - end - end - } - ], - ['--rules', "Trace the rules resolution.", - lambda { |value| options.trace_rules = true } - ], - ['--no-search', '--nosearch', '-N', "Do not search parent directories for the Rakefile.", - lambda { |value| options.nosearch = true } - ], - ['--silent', '-s', "Like --quiet, but also suppresses the 'in directory' announcement.", - lambda { |value| - verbose(false) - options.silent = true - } - ], - ['--system', '-g', - "Using system wide (global) rakefiles (usually '~/.rake/*.rake').", - lambda { |value| options.load_system = true } - ], - ['--no-system', '--nosystem', '-G', - "Use standard project Rakefile search paths, ignore system wide rakefiles.", - lambda { |value| options.ignore_system = true } - ], - ['--tasks', '-T [PATTERN]', "Display the tasks (matching optional PATTERN) with descriptions, then exit.", - lambda { |value| - options.show_tasks = true - options.show_task_pattern = Regexp.new(value || '') - options.full_description = false - } - ], - ['--trace', '-t', "Turn on invoke/execute tracing, enable full backtrace.", - lambda { |value| - options.trace = true - verbose(true) - } - ], - ['--verbose', '-v', "Log message to standard output.", - lambda { |value| verbose(true) } - ], - ['--version', '-V', "Display the program version.", - lambda { |value| - puts "rake, version #{RAKEVERSION}" - exit - } - ] - ] - end - - # Read and handle the command line options. - def handle_options - options.rakelib = ['rakelib'] - - OptionParser.new do |opts| - opts.banner = "rake [-f rakefile] {options} targets..." - opts.separator "" - opts.separator "Options are ..." - - opts.on_tail("-h", "--help", "-H", "Display this help message.") do - puts opts - exit - end - - standard_rake_options.each { |args| opts.on(*args) } - end.parse! - - # If class namespaces are requested, set the global options - # according to the values in the options structure. - if options.classic_namespace - $show_tasks = options.show_tasks - $show_prereqs = options.show_prereqs - $trace = options.trace - $dryrun = options.dryrun - $silent = options.silent - end - end - - # Similar to the regular Ruby +require+ command, but will check - # for *.rake files in addition to *.rb files. - def rake_require(file_name, paths=$LOAD_PATH, loaded=$") - return false if loaded.include?(file_name) - paths.each do |path| - fn = file_name + ".rake" - full_path = File.join(path, fn) - if File.exist?(full_path) - load full_path - loaded << fn - return true - end - end - fail LoadError, "Can't find #{file_name}" - end - - def find_rakefile_location - here = Dir.pwd - while ! (fn = have_rakefile) - Dir.chdir("..") - if Dir.pwd == here || options.nosearch - return nil - end - here = Dir.pwd - end - [fn, here] - ensure - Dir.chdir(Rake.original_dir) - end - - def raw_load_rakefile # :nodoc: - rakefile, location = find_rakefile_location - if (! options.ignore_system) && - (options.load_system || rakefile.nil?) && - system_dir && File.directory?(system_dir) - puts "(in #{Dir.pwd})" unless options.silent - glob("#{system_dir}/*.rake") do |name| - add_import name - end - else - fail "No Rakefile found (looking for: #{@rakefiles.join(', ')})" if - rakefile.nil? - @rakefile = rakefile - Dir.chdir(location) - puts "(in #{Dir.pwd})" unless options.silent - $rakefile = @rakefile if options.classic_namespace - load File.expand_path(@rakefile) if @rakefile && @rakefile != '' - options.rakelib.each do |rlib| - glob("#{rlib}/*.rake") do |name| - add_import name - end - end - end - load_imports - end - - def glob(path, &block) - Dir[path.gsub("\\", '/')].each(&block) - end - private :glob - - # The directory path containing the system wide rakefiles. - def system_dir - @system_dir ||= - begin - if ENV['RAKE_SYSTEM'] - ENV['RAKE_SYSTEM'] - else - standard_system_dir - end - end - end - - # The standard directory containing system wide rake files. - if Win32.windows? - def standard_system_dir #:nodoc: - Win32.win32_system_dir - end - else - def standard_system_dir #:nodoc: - File.join(File.expand_path('~'), '.rake') - end - end - private :standard_system_dir - - # Collect the list of tasks on the command line. If no tasks are - # given, return a list containing only the default task. - # Environmental assignments are processed at this time as well. - def collect_tasks - @top_level_tasks = [] - ARGV.each do |arg| - if arg =~ /^(\w+)=(.*)$/ - ENV[$1] = $2 - else - @top_level_tasks << arg unless arg =~ /^-/ - end - end - @top_level_tasks.push("default") if @top_level_tasks.size == 0 - end - - # Add a file to the list of files to be imported. - def add_import(fn) - @pending_imports << fn - end - - # Load the pending list of imported files. - def load_imports - while fn = @pending_imports.shift - next if @imported.member?(fn) - if fn_task = lookup(fn) - fn_task.invoke - end - ext = File.extname(fn) - loader = @loaders[ext] || @default_loader - loader.load(fn) - @imported << fn - end - end - - # Warn about deprecated use of top level constant names. - def const_warning(const_name) - @const_warning ||= false - if ! @const_warning - $stderr.puts %{WARNING: Deprecated reference to top-level constant '#{const_name}' } + - %{found at: #{rakefile_location}} # ' - $stderr.puts %{ Use --classic-namespace on rake command} - $stderr.puts %{ or 'require "rake/classic_namespace"' in Rakefile} - end - @const_warning = true - end - - def rakefile_location - begin - fail - rescue RuntimeError => ex - ex.backtrace.find {|str| str =~ /#{@rakefile}/ } || "" - end - end - end -end - - -class Module - # Rename the original handler to make it available. - alias :rake_original_const_missing :const_missing - - # Check for deprecated uses of top level (i.e. in Object) uses of - # Rake class names. If someone tries to reference the constant - # name, display a warning and return the proper object. Using the - # --classic-namespace command line option will define these - # constants in Object and avoid this handler. - def const_missing(const_name) - case const_name - when :Task - Rake.application.const_warning(const_name) - Rake::Task - when :FileTask - Rake.application.const_warning(const_name) - Rake::FileTask - when :FileCreationTask - Rake.application.const_warning(const_name) - Rake::FileCreationTask - when :RakeApp - Rake.application.const_warning(const_name) - Rake::Application - else - rake_original_const_missing(const_name) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/alt_system.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/alt_system.rb deleted file mode 100644 index 510c40c9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/alt_system.rb +++ /dev/null @@ -1,108 +0,0 @@ -# -# Copyright (c) 2008 James M. Lawrence -# -# Permission is hereby granted, free of charge, to any person -# obtaining a copy of this software and associated documentation files -# (the "Software"), to deal in the Software without restriction, -# including without limitation the rights to use, copy, modify, merge, -# publish, distribute, sublicense, and/or sell copies of the Software, -# and to permit persons to whom the Software is furnished to do so, -# subject to the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS -# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -# - -require 'rbconfig' - -# -# Alternate implementations of system() and backticks `` on Windows -# for ruby-1.8 and earlier. -# -module Rake::AltSystem - WINDOWS = Config::CONFIG["host_os"] =~ %r!(msdos|mswin|djgpp|mingw)! - - class << self - def define_module_function(name, &block) - define_method(name, &block) - module_function(name) - end - end - - if WINDOWS and RUBY_VERSION < "1.9.0" - RUNNABLE_EXTS = %w[com exe bat cmd] - RUNNABLE_PATTERN = %r!\.(#{RUNNABLE_EXTS.join('|')})\Z!i - - define_module_function :kernel_system, &Kernel.method(:system) - define_module_function :kernel_backticks, &Kernel.method(:'`') - - module_function - - def repair_command(cmd) - "call " + ( - if cmd =~ %r!\A\s*\".*?\"! - # already quoted - cmd - elsif match = cmd.match(%r!\A\s*(\S+)!) - if match[1] =~ %r!/! - # avoid x/y.bat interpretation as x with option /y - %Q!"#{match[1]}"! + match.post_match - else - # a shell command will fail if quoted - cmd - end - else - # empty or whitespace - cmd - end - ) - end - - def find_runnable(file) - if file =~ RUNNABLE_PATTERN - file - else - RUNNABLE_EXTS.each { |ext| - if File.exist?(test = "#{file}.#{ext}") - return test - end - } - nil - end - end - - def system(cmd, *args) - repaired = ( - if args.empty? - [repair_command(cmd)] - elsif runnable = find_runnable(cmd) - [File.expand_path(runnable), *args] - else - # non-existent file - [cmd, *args] - end - ) - kernel_system(*repaired) - end - - def backticks(cmd) - kernel_backticks(repair_command(cmd)) - end - - define_module_function :'`', &method(:backticks) - else - # Non-Windows or ruby-1.9+: same as Kernel versions - define_module_function :system, &Kernel.method(:system) - define_module_function :backticks, &Kernel.method(:'`') - define_module_function :'`', &Kernel.method(:'`') - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/classic_namespace.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/classic_namespace.rb deleted file mode 100644 index feb75699..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/classic_namespace.rb +++ /dev/null @@ -1,8 +0,0 @@ -# The following classes used to be in the top level namespace. -# Loading this file enables compatibility with older Rakefile that -# referenced Task from the top level. - -Task = Rake::Task -FileTask = Rake::FileTask -FileCreationTask = Rake::FileCreationTask -RakeApp = Rake::Application diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/clean.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/clean.rb deleted file mode 100644 index 4ee2c5ac..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/clean.rb +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env ruby - -# The 'rake/clean' file defines two file lists (CLEAN and CLOBBER) and -# two rake tasks (:clean and :clobber). -# -# [:clean] Clean up the project by deleting scratch files and backup -# files. Add files to the CLEAN file list to have the :clean -# target handle them. -# -# [:clobber] Clobber all generated and non-source files in a project. -# The task depends on :clean, so all the clean files will -# be deleted as well as files in the CLOBBER file list. -# The intent of this task is to return a project to its -# pristine, just unpacked state. - -require 'rake' - -CLEAN = Rake::FileList["**/*~", "**/*.bak", "**/core"] -CLEAN.clear_exclude.exclude { |fn| - fn.pathmap("%f") == 'core' && File.directory?(fn) -} - -desc "Remove any temporary products." -task :clean do - CLEAN.each { |fn| rm_r fn rescue nil } -end - -CLOBBER = Rake::FileList.new - -desc "Remove any generated file." -task :clobber => [:clean] do - CLOBBER.each { |fn| rm_r fn rescue nil } -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/compositepublisher.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/compositepublisher.rb deleted file mode 100644 index d771ccce..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/compositepublisher.rb +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env ruby - -module Rake - - # Manage several publishers as a single entity. - class CompositePublisher - def initialize - @publishers = [] - end - - # Add a publisher to the composite. - def add(pub) - @publishers << pub - end - - # Upload all the individual publishers. - def upload - @publishers.each { |p| p.upload } - end - end - -end - - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/ftptools.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/ftptools.rb deleted file mode 100644 index 4cd02f3e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/ftptools.rb +++ /dev/null @@ -1,153 +0,0 @@ -#!/usr/bin/env ruby - -# = Tools for FTP uploading. -# -# This file is still under development and is not released for general -# use. - -require 'date' -require 'net/ftp' - -module Rake # :nodoc: - - #################################################################### - # Note: Not released for general use. - class FtpFile - attr_reader :name, :size, :owner, :group, :time - - def self.date - @date_class ||= Date - end - - def self.time - @time_class ||= Time - end - - def initialize(path, entry) - @path = path - @mode, line, @owner, @group, size, d1, d2, d3, @name = entry.split(' ') - @size = size.to_i - @time = determine_time(d1, d2, d3) - end - - def path - File.join(@path, @name) - end - - def directory? - @mode[0] == ?d - end - - def mode - parse_mode(@mode) - end - - def symlink? - @mode[0] == ?l - end - - private # -------------------------------------------------------- - - def parse_mode(m) - result = 0 - (1..9).each do |i| - result = 2*result + ((m[i]==?-) ? 0 : 1) - end - result - end - - def determine_time(d1, d2, d3) - now = self.class.time.now - if /:/ =~ d3 - h, m = d3.split(':') - result = Time.parse("#{d1} #{d2} #{now.year} #{d3}") - if result > now - result = Time.parse("#{d1} #{d2} #{now.year-1} #{d3}") - end - else - result = Time.parse("#{d1} #{d2} #{d3}") - end - result -# elements = ParseDate.parsedate("#{d1} #{d2} #{d3}") -# if elements[0].nil? -# today = self.class.date.today -# if elements[1] > today.month -# elements[0] = today.year - 1 -# else -# elements[0] = today.year -# end -# end -# elements = elements.collect { |el| el.nil? ? 0 : el } -# Time.mktime(*elements[0,7]) - end - end - - #################################################################### - # Manage the uploading of files to an FTP account. - class FtpUploader - - # Log uploads to standard output when true. - attr_accessor :verbose - - class << FtpUploader - # Create an uploader and pass it to the given block as +up+. - # When the block is complete, close the uploader. - def connect(path, host, account, password) - up = self.new(path, host, account, password) - begin - yield(up) - ensure - up.close - end - end - end - - # Create an FTP uploader targetting the directory +path+ on +host+ - # using the given account and password. +path+ will be the root - # path of the uploader. - def initialize(path, host, account, password) - @created = Hash.new - @path = path - @ftp = Net::FTP.new(host, account, password) - makedirs(@path) - @ftp.chdir(@path) - end - - # Create the directory +path+ in the uploader root path. - def makedirs(path) - route = [] - File.split(path).each do |dir| - route << dir - current_dir = File.join(route) - if @created[current_dir].nil? - @created[current_dir] = true - puts "Creating Directory #{current_dir}" if @verbose - @ftp.mkdir(current_dir) rescue nil - end - end - end - - # Upload all files matching +wildcard+ to the uploader's root - # path. - def upload_files(wildcard) - Dir[wildcard].each do |fn| - upload(fn) - end - end - - # Close the uploader. - def close - @ftp.close - end - - private # -------------------------------------------------------- - - # Upload a single file to the uploader's root path. - def upload(file) - puts "Uploading #{file}" if @verbose - dir = File.dirname(file) - makedirs(dir) - @ftp.putbinaryfile(file, file) unless File.directory?(file) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/publisher.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/publisher.rb deleted file mode 100644 index 65cc01fb..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/publisher.rb +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/env ruby - -# Copyright 2003, 2004, 2005, 2006, 2007, 2008 by Jim Weirich (jim@weirichhouse.org) -# All rights reserved. - -# Permission is granted for use, copying, modification, distribution, -# and distribution of modified versions of this work as long as the -# above copyright notice is included. - -# Configuration information about an upload host system. -# * name :: Name of host system. -# * webdir :: Base directory for the web information for the -# application. The application name (APP) is appended to -# this directory before using. -# * pkgdir :: Directory on the host system where packages can be -# placed. -HostInfo = Struct.new(:name, :webdir, :pkgdir) - -# Manage several publishers as a single entity. -class CompositePublisher - def initialize - @publishers = [] - end - - # Add a publisher to the composite. - def add(pub) - @publishers << pub - end - - # Upload all the individual publishers. - def upload - @publishers.each { |p| p.upload } - end -end - -# Publish an entire directory to an existing remote directory using -# SSH. -class SshDirPublisher - def initialize(host, remote_dir, local_dir) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - end - - def upload - run %{scp -rq #{@local_dir}/* #{@host}:#{@remote_dir}} - end -end - -# Publish an entire directory to a fresh remote directory using SSH. -class SshFreshDirPublisher < SshDirPublisher - def upload - run %{ssh #{@host} rm -rf #{@remote_dir}} rescue nil - run %{ssh #{@host} mkdir #{@remote_dir}} - super - end -end - -# Publish a list of files to an existing remote directory. -class SshFilePublisher - # Create a publisher using the give host information. - def initialize(host, remote_dir, local_dir, *files) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - @files = files - end - - # Upload the local directory to the remote directory. - def upload - @files.each do |fn| - run %{scp -q #{@local_dir}/#{fn} #{@host}:#{@remote_dir}} - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/rubyforgepublisher.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/rubyforgepublisher.rb deleted file mode 100644 index a91265fd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/rubyforgepublisher.rb +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env ruby - -require 'rake/contrib/sshpublisher' - -module Rake - - class RubyForgePublisher < SshDirPublisher - attr_reader :project, :proj_id, :user - - def initialize(projname, user) - super( - "#{user}@rubyforge.org", - "/var/www/gforge-projects/#{projname}", - "html") - end - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/sshpublisher.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/sshpublisher.rb deleted file mode 100644 index d77fcc37..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/sshpublisher.rb +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env ruby - -require 'rake/contrib/compositepublisher' - -module Rake - - # Publish an entire directory to an existing remote directory using - # SSH. - class SshDirPublisher - def initialize(host, remote_dir, local_dir) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - end - - def upload - sh %{scp -rq #{@local_dir}/* #{@host}:#{@remote_dir}} - end - end - - # Publish an entire directory to a fresh remote directory using SSH. - class SshFreshDirPublisher < SshDirPublisher - def upload - sh %{ssh #{@host} rm -rf #{@remote_dir}} rescue nil - sh %{ssh #{@host} mkdir #{@remote_dir}} - super - end - end - - # Publish a list of files to an existing remote directory. - class SshFilePublisher - # Create a publisher using the give host information. - def initialize(host, remote_dir, local_dir, *files) - @host = host - @remote_dir = remote_dir - @local_dir = local_dir - @files = files - end - - # Upload the local directory to the remote directory. - def upload - @files.each do |fn| - sh %{scp -q #{@local_dir}/#{fn} #{@host}:#{@remote_dir}} - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/sys.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/sys.rb deleted file mode 100644 index d7e95545..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/contrib/sys.rb +++ /dev/null @@ -1,209 +0,0 @@ -#!/usr/bin/env ruby - -#-- -# Copyright 2003, 2004, 2005, 2006, 2007, 2008 by Jim Weirich (jim@weirichhouse.org) -# -# Permission is hereby granted, free of charge, to any person obtaining -# a copy of this software and associated documentation files (the -# "Software"), to deal in the Software without restriction, including -# without limitation the rights to use, copy, modify, merge, publish, -# distribute, sublicense, and/or sell copies of the Software, and to -# permit persons to whom the Software is furnished to do so, subject to -# the following conditions: -# -# The above copyright notice and this permission notice shall be -# included in all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -#++ -# -begin - require 'ftools' -rescue LoadError -end -require 'rbconfig' - -###################################################################### -# Sys provides a number of file manipulation tools for the convenience -# of writing Rakefiles. All commands in this module will announce -# their activity on standard output if the $verbose flag is set -# ($verbose = true is the default). You can control this by globally -# setting $verbose or by using the +verbose+ and +quiet+ methods. -# -# Sys has been deprecated in favor of the FileUtils module available -# in Ruby 1.8. -# -module Sys - RUBY = Config::CONFIG['ruby_install_name'] - - # Install all the files matching +wildcard+ into the +dest_dir+ - # directory. The permission mode is set to +mode+. - def install(wildcard, dest_dir, mode) - Dir[wildcard].each do |fn| - File.install(fn, dest_dir, mode, $verbose) - end - end - - # Run the system command +cmd+. - def run(cmd) - log cmd - system(cmd) or fail "Command Failed: [#{cmd}]" - end - - # Run a Ruby interpreter with the given arguments. - def ruby(*args) - run "#{RUBY} #{args.join(' ')}" - end - - # Copy a single file from +file_name+ to +dest_file+. - def copy(file_name, dest_file) - log "Copying file #{file_name} to #{dest_file}" - File.copy(file_name, dest_file) - end - - # Copy all files matching +wildcard+ into the directory +dest_dir+. - def copy_files(wildcard, dest_dir) - for_matching_files(wildcard, dest_dir) { |from, to| copy(from, to) } - end - - # Link +file_name+ to +dest_file+. - def link(file_name, dest_file) - log "Linking file #{file_name} to #{dest_file}" - File.link(file_name, dest_file) - end - - # Link all files matching +wildcard+ into the directory +dest_dir+. - def link_files(wildcard, dest_dir) - for_matching_files(wildcard, dest_dir) { |from, to| link(from, to) } - end - - # Symlink +file_name+ to +dest_file+. - def symlink(file_name, dest_file) - log "Symlinking file #{file_name} to #{dest_file}" - File.symlink(file_name, dest_file) - end - - # Symlink all files matching +wildcard+ into the directory +dest_dir+. - def symlink_files(wildcard, dest_dir) - for_matching_files(wildcard, dest_dir) { |from, to| link(from, to) } - end - - # Remove all files matching +wildcard+. If a matching file is a - # directory, it must be empty to be removed. used +delete_all+ to - # recursively delete directories. - def delete(*wildcards) - wildcards.each do |wildcard| - Dir[wildcard].each do |fn| - if File.directory?(fn) - log "Deleting directory #{fn}" - Dir.delete(fn) - else - log "Deleting file #{fn}" - File.delete(fn) - end - end - end - end - - # Recursively delete all files and directories matching +wildcard+. - def delete_all(*wildcards) - wildcards.each do |wildcard| - Dir[wildcard].each do |fn| - next if ! File.exist?(fn) - if File.directory?(fn) - Dir["#{fn}/*"].each do |subfn| - next if subfn=='.' || subfn=='..' - delete_all(subfn) - end - log "Deleting directory #{fn}" - Dir.delete(fn) - else - log "Deleting file #{fn}" - File.delete(fn) - end - end - end - end - - # Make the directories given in +dirs+. - def makedirs(*dirs) - dirs.each do |fn| - log "Making directory #{fn}" - File.makedirs(fn) - end - end - - # Make +dir+ the current working directory for the duration of - # executing the given block. - def indir(dir) - olddir = Dir.pwd - Dir.chdir(dir) - yield - ensure - Dir.chdir(olddir) - end - - # Split a file path into individual directory names. - # - # For example: - # split_all("a/b/c") => ['a', 'b', 'c'] - def split_all(path) - head, tail = File.split(path) - return [tail] if head == '.' || tail == '/' - return [head, tail] if head == '/' - return split_all(head) + [tail] - end - - # Write a message to standard out if $verbose is enabled. - def log(msg) - print " " if $trace && $verbose - puts msg if $verbose - end - - # Perform a block with $verbose disabled. - def quiet(&block) - with_verbose(false, &block) - end - - # Perform a block with $verbose enabled. - def verbose(&block) - with_verbose(true, &block) - end - - # Perform a block with each file matching a set of wildcards. - def for_files(*wildcards) - wildcards.each do |wildcard| - Dir[wildcard].each do |fn| - yield(fn) - end - end - end - - extend(self) - - private # ---------------------------------------------------------- - - def for_matching_files(wildcard, dest_dir) - Dir[wildcard].each do |fn| - dest_file = File.join(dest_dir, fn) - parent = File.dirname(dest_file) - makedirs(parent) if ! File.directory?(parent) - yield(fn, dest_file) - end - end - - def with_verbose(v) - oldverbose = $verbose - $verbose = v - yield - ensure - $verbose = oldverbose - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/gempackagetask.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/gempackagetask.rb deleted file mode 100644 index 1e4632a2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/gempackagetask.rb +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/env ruby - -# Define a package task library to aid in the definition of GEM -# packages. - -require 'rubygems' -require 'rake' -require 'rake/packagetask' -require 'rubygems/user_interaction' -require 'rubygems/builder' - -module Rake - - # Create a package based upon a Gem spec. Gem packages, as well as - # zip files and tar/gzipped packages can be produced by this task. - # - # In addition to the Rake targets generated by PackageTask, a - # GemPackageTask will also generate the following tasks: - # - # ["package_dir/name-version.gem"] - # Create a Ruby GEM package with the given name and version. - # - # Example using a Ruby GEM spec: - # - # require 'rubygems' - # - # spec = Gem::Specification.new do |s| - # s.platform = Gem::Platform::RUBY - # s.summary = "Ruby based make-like utility." - # s.name = 'rake' - # s.version = PKG_VERSION - # s.requirements << 'none' - # s.require_path = 'lib' - # s.autorequire = 'rake' - # s.files = PKG_FILES - # s.description = < [:gem] - desc "Build the gem file #{gem_file}" - task :gem => ["#{package_dir}/#{gem_file}"] - file "#{package_dir}/#{gem_file}" => [package_dir] + @gem_spec.files do - when_writing("Creating GEM") { - Gem::Builder.new(gem_spec).build - verbose(true) { - mv gem_file, "#{package_dir}/#{gem_file}" - } - } - end - end - - def gem_file - if @gem_spec.platform == Gem::Platform::RUBY - "#{package_name}.gem" - else - "#{package_name}-#{@gem_spec.platform}.gem" - end - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/loaders/makefile.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/loaders/makefile.rb deleted file mode 100644 index be717ec7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/loaders/makefile.rb +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env ruby - -module Rake - - # Makefile loader to be used with the import file loader. - class MakefileLoader - SPACE_MARK = "__&NBSP;__" - - # Load the makefile dependencies in +fn+. - def load(fn) - open(fn) do |mf| - lines = mf.read - lines.gsub!(/\\ /, SPACE_MARK) - lines.gsub!(/#[^\n]*\n/m, "") - lines.gsub!(/\\\n/, ' ') - lines.split("\n").each do |line| - process_line(line) - end - end - end - - private - - # Process one logical line of makefile data. - def process_line(line) - file_tasks, args = line.split(':') - return if args.nil? - dependents = args.split.map { |d| respace(d) } - file_tasks.strip.split.each do |file_task| - file_task = respace(file_task) - file file_task => dependents - end - end - - def respace(str) - str.gsub(/#{SPACE_MARK}/, ' ') - end - end - - # Install the handler - Rake.application.add_loader('mf', MakefileLoader.new) -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/packagetask.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/packagetask.rb deleted file mode 100644 index 71b66a64..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/packagetask.rb +++ /dev/null @@ -1,184 +0,0 @@ -#!/usr/bin/env ruby - -# Define a package task libarary to aid in the definition of -# redistributable package files. - -require 'rake' -require 'rake/tasklib' - -module Rake - - # Create a packaging task that will package the project into - # distributable files (e.g zip archive or tar files). - # - # The PackageTask will create the following targets: - # - # [:package] - # Create all the requested package files. - # - # [:clobber_package] - # Delete all the package files. This target is automatically - # added to the main clobber target. - # - # [:repackage] - # Rebuild the package files from scratch, even if they are not out - # of date. - # - # ["package_dir/name-version.tgz"] - # Create a gzipped tar package (if need_tar is true). - # - # ["package_dir/name-version.tar.gz"] - # Create a gzipped tar package (if need_tar_gz is true). - # - # ["package_dir/name-version.tar.bz2"] - # Create a bzip2'd tar package (if need_tar_bz2 is true). - # - # ["package_dir/name-version.zip"] - # Create a zip package archive (if need_zip is true). - # - # Example: - # - # Rake::PackageTask.new("rake", "1.2.3") do |p| - # p.need_tar = true - # p.package_files.include("lib/**/*.rb") - # end - # - class PackageTask < TaskLib - # Name of the package (from the GEM Spec). - attr_accessor :name - - # Version of the package (e.g. '1.3.2'). - attr_accessor :version - - # Directory used to store the package files (default is 'pkg'). - attr_accessor :package_dir - - # True if a gzipped tar file (tgz) should be produced (default is false). - attr_accessor :need_tar - - # True if a gzipped tar file (tar.gz) should be produced (default is false). - attr_accessor :need_tar_gz - - # True if a bzip2'd tar file (tar.bz2) should be produced (default is false). - attr_accessor :need_tar_bz2 - - # True if a zip file should be produced (default is false) - attr_accessor :need_zip - - # List of files to be included in the package. - attr_accessor :package_files - - # Tar command for gzipped or bzip2ed archives. The default is 'tar'. - attr_accessor :tar_command - - # Zip command for zipped archives. The default is 'zip'. - attr_accessor :zip_command - - # Create a Package Task with the given name and version. - def initialize(name=nil, version=nil) - init(name, version) - yield self if block_given? - define unless name.nil? - end - - # Initialization that bypasses the "yield self" and "define" step. - def init(name, version) - @name = name - @version = version - @package_files = Rake::FileList.new - @package_dir = 'pkg' - @need_tar = false - @need_tar_gz = false - @need_tar_bz2 = false - @need_zip = false - @tar_command = 'tar' - @zip_command = 'zip' - end - - # Create the tasks defined by this task library. - def define - fail "Version required (or :noversion)" if @version.nil? - @version = nil if :noversion == @version - - desc "Build all the packages" - task :package - - desc "Force a rebuild of the package files" - task :repackage => [:clobber_package, :package] - - desc "Remove package products" - task :clobber_package do - rm_r package_dir rescue nil - end - - task :clobber => [:clobber_package] - - [ - [need_tar, tgz_file, "z"], - [need_tar_gz, tar_gz_file, "z"], - [need_tar_bz2, tar_bz2_file, "j"] - ].each do |(need, file, flag)| - if need - task :package => ["#{package_dir}/#{file}"] - file "#{package_dir}/#{file}" => [package_dir_path] + package_files do - chdir(package_dir) do - sh %{#{@tar_command} #{flag}cvf #{file} #{package_name}} - end - end - end - end - - if need_zip - task :package => ["#{package_dir}/#{zip_file}"] - file "#{package_dir}/#{zip_file}" => [package_dir_path] + package_files do - chdir(package_dir) do - sh %{#{@zip_command} -r #{zip_file} #{package_name}} - end - end - end - - directory package_dir - - file package_dir_path => @package_files do - mkdir_p package_dir rescue nil - @package_files.each do |fn| - f = File.join(package_dir_path, fn) - fdir = File.dirname(f) - mkdir_p(fdir) if !File.exist?(fdir) - if File.directory?(fn) - mkdir_p(f) - else - rm_f f - safe_ln(fn, f) - end - end - end - self - end - - def package_name - @version ? "#{@name}-#{@version}" : @name - end - - def package_dir_path - "#{package_dir}/#{package_name}" - end - - def tgz_file - "#{package_name}.tgz" - end - - def tar_gz_file - "#{package_name}.tar.gz" - end - - def tar_bz2_file - "#{package_name}.tar.bz2" - end - - def zip_file - "#{package_name}.zip" - end - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb deleted file mode 100644 index 8d7dad3c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/rake_test_loader.rb +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env ruby - -# Load the test files from the command line. - -ARGV.each { |f| load f unless f =~ /^-/ } diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/rdoctask.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/rdoctask.rb deleted file mode 100644 index 660f3a2f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/rdoctask.rb +++ /dev/null @@ -1,209 +0,0 @@ -#!/usr/bin/env ruby - -require 'rake' -require 'rake/tasklib' - -module Rake - - # Create a documentation task that will generate the RDoc files for - # a project. - # - # The RDocTask will create the following targets: - # - # [rdoc] - # Main task for this RDOC task. - # - # [:clobber_rdoc] - # Delete all the rdoc files. This target is automatically - # added to the main clobber target. - # - # [:rerdoc] - # Rebuild the rdoc files from scratch, even if they are not out - # of date. - # - # Simple Example: - # - # Rake::RDocTask.new do |rd| - # rd.main = "README.rdoc" - # rd.rdoc_files.include("README.rdoc", "lib/**/*.rb") - # end - # - # The +rd+ object passed to the block is an RDocTask object. See the - # attributes list for the RDocTask class for available customization options. - # - # == Specifying different task names - # - # You may wish to give the task a different name, such as if you are - # generating two sets of documentation. For instance, if you want to have a - # development set of documentation including private methods: - # - # Rake::RDocTask.new(:rdoc_dev) do |rd| - # rd.main = "README.doc" - # rd.rdoc_files.include("README.rdoc", "lib/**/*.rb") - # rd.options << "--all" - # end - # - # The tasks would then be named :rdoc_dev, :clobber_rdoc_dev, and - # :rerdoc_dev. - # - # If you wish to have completely different task names, then pass a Hash as - # first argument. With the :rdoc, :clobber_rdoc and - # :rerdoc options, you can customize the task names to your liking. - # For example: - # - # Rake::RDocTask.new(:rdoc => "rdoc", :clobber_rdoc => "rdoc:clean", :rerdoc => "rdoc:force") - # - # This will create the tasks :rdoc, :rdoc_clean and - # :rdoc:force. - # - class RDocTask < TaskLib - # Name of the main, top level task. (default is :rdoc) - attr_accessor :name - - # Name of directory to receive the html output files. (default is "html") - attr_accessor :rdoc_dir - - # Title of RDoc documentation. (defaults to rdoc's default) - attr_accessor :title - - # Name of file to be used as the main, top level file of the - # RDoc. (default is none) - attr_accessor :main - - # Name of template to be used by rdoc. (defaults to rdoc's default) - attr_accessor :template - - # List of files to be included in the rdoc generation. (default is []) - attr_accessor :rdoc_files - - # Additional list of options to be passed rdoc. (default is []) - attr_accessor :options - - # Whether to run the rdoc process as an external shell (default is false) - attr_accessor :external - - attr_accessor :inline_source - - # Create an RDoc task with the given name. See the RDocTask class overview - # for documentation. - def initialize(name = :rdoc) # :yield: self - if name.is_a?(Hash) - invalid_options = name.keys.map { |k| k.to_sym } - [:rdoc, :clobber_rdoc, :rerdoc] - if !invalid_options.empty? - raise ArgumentError, "Invalid option(s) passed to RDocTask.new: #{invalid_options.join(", ")}" - end - end - - @name = name - @rdoc_files = Rake::FileList.new - @rdoc_dir = 'html' - @main = nil - @title = nil - @template = nil - @external = false - @inline_source = true - @options = [] - yield self if block_given? - define - end - - # Create the tasks defined by this task lib. - def define - if rdoc_task_name != "rdoc" - desc "Build the RDOC HTML Files" - else - desc "Build the #{rdoc_task_name} HTML Files" - end - task rdoc_task_name - - desc "Force a rebuild of the RDOC files" - task rerdoc_task_name => [clobber_task_name, rdoc_task_name] - - desc "Remove rdoc products" - task clobber_task_name do - rm_r rdoc_dir rescue nil - end - - task :clobber => [clobber_task_name] - - directory @rdoc_dir - task rdoc_task_name => [rdoc_target] - file rdoc_target => @rdoc_files + [Rake.application.rakefile] do - rm_r @rdoc_dir rescue nil - @before_running_rdoc.call if @before_running_rdoc - args = option_list + @rdoc_files - if @external - argstring = args.join(' ') - sh %{ruby -Ivendor vendor/rd #{argstring}} - else - require 'rdoc/rdoc' - RDoc::RDoc.new.document(args) - end - end - self - end - - def option_list - result = @options.dup - result << "-o" << @rdoc_dir - result << "--main" << quote(main) if main - result << "--title" << quote(title) if title - result << "-T" << quote(template) if template - result << "--inline-source" if inline_source && !@options.include?("--inline-source") && !@options.include?("-S") - result - end - - def quote(str) - if @external - "'#{str}'" - else - str - end - end - - def option_string - option_list.join(' ') - end - - # The block passed to this method will be called just before running the - # RDoc generator. It is allowed to modify RDocTask attributes inside the - # block. - def before_running_rdoc(&block) - @before_running_rdoc = block - end - - private - - def rdoc_target - "#{rdoc_dir}/index.html" - end - - def rdoc_task_name - case name - when Hash - (name[:rdoc] || "rdoc").to_s - else - name.to_s - end - end - - def clobber_task_name - case name - when Hash - (name[:clobber_rdoc] || "clobber_rdoc").to_s - else - "clobber_#{name}" - end - end - - def rerdoc_task_name - case name - when Hash - (name[:rerdoc] || "rerdoc").to_s - else - "re#{name}" - end - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/ruby182_test_unit_fix.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/ruby182_test_unit_fix.rb deleted file mode 100755 index f02c7879..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/ruby182_test_unit_fix.rb +++ /dev/null @@ -1,23 +0,0 @@ -module Test - module Unit - module Collector - class Dir - undef collect_file - def collect_file(name, suites, already_gathered) - # loadpath = $:.dup - dir = File.dirname(File.expand_path(name)) - $:.unshift(dir) unless $:.first == dir - if(@req) - @req.require(name) - else - require(name) - end - find_test_cases(already_gathered).each{|t| add_suite(suites, t.suite)} - ensure - # $:.replace(loadpath) - $:.delete_at $:.rindex(dir) - end - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/runtest.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/runtest.rb deleted file mode 100644 index 3f1d2052..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/runtest.rb +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'test/unit/assertions' - -module Rake - include Test::Unit::Assertions - - def run_tests(pattern='test/test*.rb', log_enabled=false) - Dir["#{pattern}"].each { |fn| - puts fn if log_enabled - begin - load fn - rescue Exception => ex - puts "Error in #{fn}: #{ex.message}" - puts ex.backtrace - assert false - end - } - end - - extend self -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/tasklib.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/tasklib.rb deleted file mode 100644 index c7fd9813..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/tasklib.rb +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env ruby - -require 'rake' - -module Rake - - # Base class for Task Libraries. - class TaskLib - include Cloneable - - # Make a symbol by pasting two strings together. - # - # NOTE: DEPRECATED! This method is kinda stupid. I don't know why - # I didn't just use string interpolation. But now other task - # libraries depend on this so I can't remove it without breaking - # other people's code. So for now it stays for backwards - # compatibility. BUT DON'T USE IT. - def paste(a,b) # :nodoc: - (a.to_s + b.to_s).intern - end - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/testtask.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/testtask.rb deleted file mode 100644 index 4bc32aac..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/testtask.rb +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/env ruby - -# Define a task library for running unit tests. - -require 'rake' -require 'rake/tasklib' - -module Rake - - # Create a task that runs a set of tests. - # - # Example: - # - # Rake::TestTask.new do |t| - # t.libs << "test" - # t.test_files = FileList['test/test*.rb'] - # t.verbose = true - # end - # - # If rake is invoked with a "TEST=filename" command line option, - # then the list of test files will be overridden to include only the - # filename specified on the command line. This provides an easy way - # to run just one test. - # - # If rake is invoked with a "TESTOPTS=options" command line option, - # then the given options are passed to the test process after a - # '--'. This allows Test::Unit options to be passed to the test - # suite. - # - # Examples: - # - # rake test # run tests normally - # rake test TEST=just_one_file.rb # run just one test file. - # rake test TESTOPTS="-v" # run in verbose mode - # rake test TESTOPTS="--runner=fox" # use the fox test runner - # - class TestTask < TaskLib - - # Name of test task. (default is :test) - attr_accessor :name - - # List of directories to added to $LOAD_PATH before running the - # tests. (default is 'lib') - attr_accessor :libs - - # True if verbose test output desired. (default is false) - attr_accessor :verbose - - # Test options passed to the test suite. An explicit - # TESTOPTS=opts on the command line will override this. (default - # is NONE) - attr_accessor :options - - # Request that the tests be run with the warning flag set. - # E.g. warning=true implies "ruby -w" used to run the tests. - attr_accessor :warning - - # Glob pattern to match test files. (default is 'test/test*.rb') - attr_accessor :pattern - - # Style of test loader to use. Options are: - # - # * :rake -- Rake provided test loading script (default). - # * :testrb -- Ruby provided test loading script. - # * :direct -- Load tests using command line loader. - # - attr_accessor :loader - - # Array of commandline options to pass to ruby when running test loader. - attr_accessor :ruby_opts - - # Explicitly define the list of test files to be included in a - # test. +list+ is expected to be an array of file names (a - # FileList is acceptable). If both +pattern+ and +test_files+ are - # used, then the list of test files is the union of the two. - def test_files=(list) - @test_files = list - end - - # Create a testing task. - def initialize(name=:test) - @name = name - @libs = ["lib"] - @pattern = nil - @options = nil - @test_files = nil - @verbose = false - @warning = false - @loader = :rake - @ruby_opts = [] - yield self if block_given? - @pattern = 'test/test*.rb' if @pattern.nil? && @test_files.nil? - define - end - - # Create the tasks defined by this task lib. - def define - lib_path = @libs.join(File::PATH_SEPARATOR) - desc "Run tests" + (@name==:test ? "" : " for #{@name}") - task @name do - run_code = '' - RakeFileUtils.verbose(@verbose) do - run_code = - case @loader - when :direct - "-e 'ARGV.each{|f| load f}'" - when :testrb - "-S testrb #{fix}" - when :rake - rake_loader - end - @ruby_opts.unshift( "-I\"#{lib_path}\"" ) - @ruby_opts.unshift( "-w" ) if @warning - ruby @ruby_opts.join(" ") + - " \"#{run_code}\" " + - file_list.collect { |fn| "\"#{fn}\"" }.join(' ') + - " #{option_list}" - end - end - self - end - - def option_list # :nodoc: - ENV['TESTOPTS'] || @options || "" - end - - def file_list # :nodoc: - if ENV['TEST'] - FileList[ ENV['TEST'] ] - else - result = [] - result += @test_files.to_a if @test_files - result += FileList[ @pattern ].to_a if @pattern - FileList[result] - end - end - - def fix # :nodoc: - case RUBY_VERSION - when '1.8.2' - find_file 'rake/ruby182_test_unit_fix' - else - nil - end || '' - end - - def rake_loader # :nodoc: - find_file('rake/rake_test_loader') or - fail "unable to find rake test loader" - end - - def find_file(fn) # :nodoc: - $LOAD_PATH.each do |path| - file_path = File.join(path, "#{fn}.rb") - return file_path if File.exist? file_path - end - nil - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/win32.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/win32.rb deleted file mode 100644 index d0a19bf2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/lib/rake/win32.rb +++ /dev/null @@ -1,55 +0,0 @@ - -module Rake - require 'rake/alt_system' - - # Win 32 interface methods for Rake. Windows specific functionality - # will be placed here to collect that knowledge in one spot. - module Win32 - - # Error indicating a problem in locating the home directory on a - # Win32 system. - class Win32HomeError < RuntimeError - end - - class << self - # True if running on a windows system. - def windows? - AltSystem::WINDOWS - end - - # Run a command line on windows. - def rake_system(*cmd) - AltSystem.system(*cmd) - end - - # The standard directory containing system wide rake files on - # Win 32 systems. Try the following environment variables (in - # order): - # - # * HOME - # * HOMEDRIVE + HOMEPATH - # * APPDATA - # * USERPROFILE - # - # If the above are not defined, the return nil. - def win32_system_dir #:nodoc: - win32_shared_path = ENV['HOME'] - if win32_shared_path.nil? && ENV['HOMEDRIVE'] && ENV['HOMEPATH'] - win32_shared_path = ENV['HOMEDRIVE'] + ENV['HOMEPATH'] - end - - win32_shared_path ||= ENV['APPDATA'] - win32_shared_path ||= ENV['USERPROFILE'] - raise Win32HomeError, "Unable to determine home path environment variable." if - win32_shared_path.nil? or win32_shared_path.empty? - normalize(File.join(win32_shared_path, 'Rake')) - end - - # Normalize a win32 path so that the slashes are all forward slashes. - def normalize(path) - path.gsub(/\\/, '/') - end - - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/capture_stdout.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/capture_stdout.rb deleted file mode 100644 index 8b664adc..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/capture_stdout.rb +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env ruby - -require 'stringio' - -# Mix-in for capturing standard output. -module CaptureStdout - def capture_stdout - s = StringIO.new - oldstdout = $stdout - $stdout = s - yield - s.string - ensure - $stdout = oldstdout - end - - def capture_stderr - s = StringIO.new - oldstderr = $stderr - $stderr = s - yield - s.string - ensure - $stderr = oldstderr - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/check_expansion.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/check_expansion.rb deleted file mode 100644 index 659cf71e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/check_expansion.rb +++ /dev/null @@ -1,5 +0,0 @@ -if ARGV[0] != ARGV[1] - exit 1 -else - exit 0 -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/check_no_expansion.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/check_no_expansion.rb deleted file mode 100644 index 24f586a7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/check_no_expansion.rb +++ /dev/null @@ -1,5 +0,0 @@ -if ARGV[0] != ARGV[1] - exit 0 -else - exit 1 -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/contrib/test_sys.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/contrib/test_sys.rb deleted file mode 100644 index 37a5dc9f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/contrib/test_sys.rb +++ /dev/null @@ -1,47 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'test/filecreation' -require 'rake/contrib/sys' - -class TestSys < Test::Unit::TestCase - include FileCreation - -# def test_delete -# create_file("testdata/a") -# Sys.delete_all("testdata/a") -# assert ! File.exist?("testdata/a") -# end - -# def test_copy -# create_file("testdata/a") -# Sys.copy("testdata/a", "testdata/b") -# assert File.exist?("testdata/b") -# end - -# def test_for_files -# test_files = ["testdata/a.pl", "testdata/c.pl", "testdata/b.rb"] -# test_files.each { |fn| create_file(fn) } -# list = [] -# Sys.for_files("testdata/*.pl", "testdata/*.rb") { |fn| -# list << fn -# } -# assert_equal test_files.sort, list.sort -# end - -# def test_indir -# here = Dir.pwd -# Sys.makedirs("testdata/dir") -# assert_equal "#{here}/testdata/dir", Sys.indir("testdata/dir") { Dir.pwd } -# assert_equal here, Dir.pwd -# end - - def test_split_all - assert_equal ['a'], Sys.split_all('a') - assert_equal ['..'], Sys.split_all('..') - assert_equal ['/'], Sys.split_all('/') - assert_equal ['a', 'b'], Sys.split_all('a/b') - assert_equal ['/', 'a', 'b'], Sys.split_all('/a/b') - assert_equal ['..', 'a', 'b'], Sys.split_all('../a/b') - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/chains/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/chains/Rakefile deleted file mode 100644 index 31bdc257..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/chains/Rakefile +++ /dev/null @@ -1,15 +0,0 @@ -# -*- ruby -*- - -task :default => "play.app" - -file "play.scpt" => "base" do |t| - cp t.prerequisites.first, t.name -end - -rule ".app" => ".scpt" do |t| - cp t.source, t.name -end - -file 'base' do - touch 'base' -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/default/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/default/Rakefile deleted file mode 100644 index 22ed5e0c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/default/Rakefile +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env ruby - -if ENV['TESTTOPSCOPE'] - puts "TOPSCOPE" -end - -task :default do - puts "DEFAULT" -end - -task :other => [:default] do - puts "OTHER" -end - -task :task_scope do - if ENV['TESTTASKSCOPE'] - puts "TASKSCOPE" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/dryrun/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/dryrun/Rakefile deleted file mode 100644 index 0a68a0d6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/dryrun/Rakefile +++ /dev/null @@ -1,22 +0,0 @@ -# - -task :default => ["temp_main"] - -file "temp_main" => [:all_apps] do touch "temp_main" end - -task :all_apps => [:one, :two] -task :one => ["temp_one"] -task :two => ["temp_two"] - -file "temp_one" do |t| - touch "temp_one" -end -file "temp_two" do |t| - touch "temp_two" -end - -task :clean do - ["temp_one", "temp_two", "temp_main"].each do |file| - rm_f file - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/file_creation_task/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/file_creation_task/Rakefile deleted file mode 100644 index 94641b69..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/file_creation_task/Rakefile +++ /dev/null @@ -1,33 +0,0 @@ -#!/usr/bin/env ruby - -N = 2 - -task :default => :run - -BUILD_DIR = 'build' -task :clean do - rm_rf 'build' - rm_rf 'src' -end - -task :run - -TARGET_DIR = 'build/copies' - -FileList['src/*'].each do |src| - directory TARGET_DIR - target = File.join TARGET_DIR, File.basename(src) - file target => [src, TARGET_DIR] do - cp src, target - # sleep 3 if src !~ /foo#{N-1}$/ # I'm commenting out this sleep, it doesn't seem to do anything. - end - task :run => target -end - -task :prep => :clean do - mkdir_p 'src' - N.times do |n| - puts "DBG: Touching src/foo#{n}" - touch "src/foo#{n}" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/imports/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/imports/Rakefile deleted file mode 100644 index 6a60f612..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/imports/Rakefile +++ /dev/null @@ -1,19 +0,0 @@ -# -*- ruby -*- - -require 'rake/loaders/makefile' - -task :default - -task :other do - puts "OTHER" -end - -file "dynamic_deps" do |t| - open(t.name, "w") do |f| f.puts "puts 'DYNAMIC'" end -end - -import "dynamic_deps" -import "static_deps" -import "static_deps" -import "deps.mf" -puts "FIRST" diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/imports/deps.mf b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/imports/deps.mf deleted file mode 100644 index 04643d0d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/imports/deps.mf +++ /dev/null @@ -1 +0,0 @@ -default: other diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/multidesc/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/multidesc/Rakefile deleted file mode 100644 index 53424819..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/multidesc/Rakefile +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env ruby - -task :b - -desc "A" -task :a - -desc "B" -task :b - -desc "A2" -task :a - -task :c - -desc "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -task :d diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/namespace/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/namespace/Rakefile deleted file mode 100644 index 6de98eda..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/namespace/Rakefile +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env ruby - -desc "copy" -task :copy do - puts "COPY" -end - -namespace "nest" do - desc "nest copy" - task :copy do - puts "NEST COPY" - end - task :xx => :copy -end - -anon_ns = namespace do - desc "anonymous copy task" - task :copy do - puts "ANON COPY" - end -end - -desc "Top level task to run the anonymous version of copy" -task :anon => anon_ns[:copy] - -namespace "very" do - namespace "nested" do - task "run" => "rake:copy" - end -end - -namespace "a" do - desc "Run task in the 'a' namespace" - task "run" do - puts "IN A" - end -end - -namespace "b" do - desc "Run task in the 'b' namespace" - task "run" => "a:run" do - puts "IN B" - end -end - -namespace "file1" do - file "xyz.rb" do - puts "XYZ1" - end -end - -namespace "file2" do - file "xyz.rb" do - puts "XYZ2" - end -end - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/rakelib/test1.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/rakelib/test1.rb deleted file mode 100644 index bb1c419b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/rakelib/test1.rb +++ /dev/null @@ -1,3 +0,0 @@ -task :default do - puts "TEST1" -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/rbext/rakefile.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/rbext/rakefile.rb deleted file mode 100644 index 670604d7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/rbext/rakefile.rb +++ /dev/null @@ -1,3 +0,0 @@ -task :default do - puts "OK" -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/sample.mf b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/sample.mf deleted file mode 100644 index 778e9d45..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/sample.mf +++ /dev/null @@ -1,14 +0,0 @@ -# Comments -a: a1 a2 a3 a4 -b: b1 b2 b3 \ - b4 b5 b6\ -# Mid: Comment -b7 - - a : a5 a6 a7 -c: c1 -d: d1 d2 \ - -e f : e1 f1 - -g\ 0: g1 g\ 2 g\ 3 g4 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/statusreturn/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/statusreturn/Rakefile deleted file mode 100644 index 68023052..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/statusreturn/Rakefile +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env ruby - -task :exit5 do - exit(5) -end - -task :normal do -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/unittest/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/unittest/Rakefile deleted file mode 100644 index 9c3b8ac1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/data/unittest/Rakefile +++ /dev/null @@ -1 +0,0 @@ -# Empty Rakefile for Unit Test diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/filecreation.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/filecreation.rb deleted file mode 100644 index 7a8bc878..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/filecreation.rb +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env ruby - -module FileCreation - OLDFILE = "testdata/old" - NEWFILE = "testdata/new" - - def create_timed_files(oldfile, *newfiles) - return if File.exist?(oldfile) && newfiles.all? { |newfile| File.exist?(newfile) } - old_time = create_file(oldfile) - newfiles.each do |newfile| - while create_file(newfile) <= old_time - sleep(0.1) - File.delete(newfile) rescue nil - end - end - end - - def create_dir(dirname) - FileUtils.mkdir_p(dirname) unless File.exist?(dirname) - File.stat(dirname).mtime - end - - def create_file(name) - create_dir(File.dirname(name)) - FileUtils.touch(name) unless File.exist?(name) - File.stat(name).mtime - end - - def delete_file(name) - File.delete(name) rescue nil - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/functional.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/functional.rb deleted file mode 100644 index 6a5c6025..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/functional.rb +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env ruby - -begin - require 'rubygems' - gem 'session' - require 'session' -rescue LoadError - puts "UNABLE TO RUN FUNCTIONAL TESTS" - puts "No Session Found (gem install session)" -end - -if defined?(Session) - puts "RUNNING WITH SESSIONS" - require 'test/session_functional' -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/in_environment.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/in_environment.rb deleted file mode 100644 index fb02eba9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/in_environment.rb +++ /dev/null @@ -1,30 +0,0 @@ -module InEnvironment - private - - # Create an environment for a test. At the completion of the yielded - # block, the environment is restored to its original conditions. - def in_environment(settings) - original_settings = set_env(settings) - yield - ensure - set_env(original_settings) - end - - # Set the environment according to the settings hash. - def set_env(settings) # :nodoc: - result = {} - settings.each do |k, v| - result[k] = ENV[k] - if k == 'PWD' - result[k] = Dir.pwd - Dir.chdir(v) - elsif v.nil? - ENV.delete(k) - else - ENV[k] = v - end - end - result - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/rake_test_setup.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/rake_test_setup.rb deleted file mode 100644 index da38d97e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/rake_test_setup.rb +++ /dev/null @@ -1,24 +0,0 @@ -# Common setup for all test files. - -begin - require 'rubygems' - gem 'flexmock' -rescue LoadError - # got no gems -end - -require 'flexmock/test_unit' - -if RUBY_VERSION >= "1.9.0" - class Test::Unit::TestCase -# def passed? -# true -# end - end -end - -module TestMethods - def assert_exception(ex, msg=nil, &block) - assert_raise(ex, msg, &block) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/reqfile.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/reqfile.rb deleted file mode 100644 index 5372544b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/reqfile.rb +++ /dev/null @@ -1,3 +0,0 @@ -# For --require testing - -TESTING_REQUIRE << 1 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/reqfile2.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/reqfile2.rb deleted file mode 100644 index 65993907..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/reqfile2.rb +++ /dev/null @@ -1,3 +0,0 @@ -# For --require testing - -TESTING_REQUIRE << 2 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/session_functional.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/session_functional.rb deleted file mode 100644 index 730e2d5d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/session_functional.rb +++ /dev/null @@ -1,339 +0,0 @@ -#!/usr/bin/env ruby - -begin - require 'rubygems' -rescue LoadError => ex -end -require 'test/unit' -require 'fileutils' -require 'session' -require 'test/in_environment' -require 'test/rake_test_setup' - -# Version 2.1.9 of session has a bug where the @debug instance -# variable is not initialized, causing warning messages. This snippet -# of code fixes that problem. -module Session - class AbstractSession - alias old_initialize initialize - def initialize(*args) - @debug = nil - old_initialize(*args) - end - end -end - -class FunctionalTest < Test::Unit::TestCase - include InEnvironment - include TestMethods - - RUBY_COMMAND = 'ruby' - - def setup - @rake_path = File.expand_path("bin/rake") - lib_path = File.expand_path("lib") - @ruby_options = "-I#{lib_path} -I." - @verbose = ! ENV['VERBOSE'].nil? - if @verbose - puts - puts - puts "--------------------------------------------------------------------" - puts name - puts "--------------------------------------------------------------------" - end - end - - def test_rake_default - Dir.chdir("test/data/default") do rake end - assert_match(/^DEFAULT$/, @out) - assert_status - end - - def test_rake_error_on_bad_task - Dir.chdir("test/data/default") do rake "xyz" end - assert_match(/rake aborted/, @err) - assert_status(1) - end - - def test_env_availabe_at_top_scope - Dir.chdir("test/data/default") do rake "TESTTOPSCOPE=1" end - assert_match(/^TOPSCOPE$/, @out) - assert_status - end - - def test_env_availabe_at_task_scope - Dir.chdir("test/data/default") do rake "TESTTASKSCOPE=1 task_scope" end - assert_match(/^TASKSCOPE$/, @out) - assert_status - end - - def test_multi_desc - in_environment( - 'RAKE_COLUMNS' => "80", - "PWD" => "test/data/multidesc" - ) do - rake "-T" - end - assert_match %r{^rake a *# A / A2 *$}, @out - assert_match %r{^rake b *# B *$}, @out - assert_no_match %r{^rake c}, @out - assert_match %r{^rake d *# x{65}\.\.\.$}, @out - end - - def test_long_description - in_environment("PWD" => "test/data/multidesc") do - rake "--describe" - end - assert_match %r{^rake a\n *A / A2 *$}m, @out - assert_match %r{^rake b\n *B *$}m, @out - assert_match %r{^rake d\n *x{80}}m, @out - assert_no_match %r{^rake c\n}m, @out - end - - def test_rbext - in_environment("PWD" => "test/data/rbext") do - rake "-N" - end - assert_match %r{^OK$}, @out - end - - def test_system - in_environment('RAKE_SYSTEM' => 'test/data/sys') do - rake '-g', "sys1" - end - assert_match %r{^SYS1}, @out - end - - def test_system_excludes_rakelib_files_too - in_environment('RAKE_SYSTEM' => 'test/data/sys') do - rake '-g', "sys1", '-T', 'extra' - end - assert_no_match %r{extra:extra}, @out - end - - def test_by_default_rakelib_files_are_include - in_environment('RAKE_SYSTEM' => 'test/data/sys') do - rake '-T', 'extra' - end - assert_match %r{extra:extra}, @out - end - - def test_implicit_system - in_environment('RAKE_SYSTEM' => File.expand_path('test/data/sys'), "PWD" => "/") do - rake "sys1", "--trace" - end - assert_match %r{^SYS1}, @out - end - - def test_no_system - in_environment('RAKE_SYSTEM' => 'test/data/sys') do - rake '-G', "sys1" - end - assert_match %r{^Don't know how to build task}, @err # emacs wart: ' - end - - def test_nosearch_with_rakefile_uses_local_rakefile - in_environment("PWD" => "test/data/default") do - rake "--nosearch" - end - assert_match %r{^DEFAULT}, @out - end - - def test_nosearch_without_rakefile_finds_system - in_environment( - "PWD" => "test/data/nosearch", - "RAKE_SYSTEM" => File.expand_path("test/data/sys") - ) do - rake "--nosearch", "sys1" - end - assert_match %r{^SYS1}, @out - end - - def test_nosearch_without_rakefile_and_no_system_fails - in_environment("PWD" => "test/data/nosearch", "RAKE_SYSTEM" => "not_exist") do - rake "--nosearch" - end - assert_match %r{^No Rakefile found}, @err - end - - def test_dry_run - in_environment("PWD" => "test/data/default") do rake "-n", "other" end - assert_match %r{Execute \(dry run\) default}, @out - assert_match %r{Execute \(dry run\) other}, @out - assert_no_match %r{DEFAULT}, @out - assert_no_match %r{OTHER}, @out - end - - # Test for the trace/dry_run bug found by Brian Chandler - def test_dry_run_bug - in_environment("PWD" => "test/data/dryrun") do - rake - end - FileUtils.rm_f "test/data/dryrun/temp_one" - in_environment("PWD" => "test/data/dryrun") do - rake "--dry-run" - end - assert_no_match(/No such file/, @out) - assert_status - end - - # Test for the trace/dry_run bug found by Brian Chandler - def test_trace_bug - in_environment("PWD" => "test/data/dryrun") do - rake - end - FileUtils.rm_f "test/data/dryrun/temp_one" - in_environment("PWD" => "test/data/dryrun") do - rake "--trace" - end - assert_no_match(/No such file/, @out) - assert_status - end - - def test_imports - open("test/data/imports/static_deps", "w") do |f| - f.puts 'puts "STATIC"' - end - FileUtils.rm_f "test/data/imports/dynamic_deps" - in_environment("PWD" => "test/data/imports") do - rake - end - assert File.exist?("test/data/imports/dynamic_deps"), - "'dynamic_deps' file should exist" - assert_match(/^FIRST$\s+^DYNAMIC$\s+^STATIC$\s+^OTHER$/, @out) - assert_status - FileUtils.rm_f "test/data/imports/dynamic_deps" - FileUtils.rm_f "test/data/imports/static_deps" - end - - def test_rules_chaining_to_file_task - remove_chaining_files - in_environment("PWD" => "test/data/chains") do - rake - end - assert File.exist?("test/data/chains/play.app"), - "'play.app' file should exist" - assert_status - remove_chaining_files - end - - def test_file_creation_task - in_environment("PWD" => "test/data/file_creation_task") do - rake "prep" - rake "run" - rake "run" - end - assert(@err !~ /^cp src/, "Should not recopy data") - end - - def test_dash_f_with_no_arg_foils_rakefile_lookup - rake "-I test/data/rakelib -rtest1 -f" - assert_match(/^TEST1$/, @out) - end - - def test_dot_rake_files_can_be_loaded_with_dash_r - rake "-I test/data/rakelib -rtest2 -f" - assert_match(/^TEST2$/, @out) - end - - def test_can_invoke_task_in_toplevel_namespace - in_environment("PWD" => "test/data/namespace") do - rake "copy" - end - assert_match(/^COPY$/, @out) - end - - def test_can_invoke_task_in_nested_namespace - in_environment("PWD" => "test/data/namespace") do - rake "nest:copy" - assert_match(/^NEST COPY$/, @out) - end - end - - def test_tasks_can_reference_task_in_same_namespace - in_environment("PWD" => "test/data/namespace") do - rake "nest:xx" - assert_match(/^NEST COPY$/m, @out) - end - end - - def test_tasks_can_reference_task_in_other_namespaces - in_environment("PWD" => "test/data/namespace") do - rake "b:run" - assert_match(/^IN A\nIN B$/m, @out) - end - end - - def test_anonymous_tasks_can_be_invoked_indirectly - in_environment("PWD" => "test/data/namespace") do - rake "anon" - assert_match(/^ANON COPY$/m, @out) - end - end - - def test_rake_namespace_refers_to_toplevel - in_environment("PWD" => "test/data/namespace") do - rake "very:nested:run" - assert_match(/^COPY$/m, @out) - end - end - - def test_file_task_are_not_scoped_by_namespaces - in_environment("PWD" => "test/data/namespace") do - rake "xyz.rb" - assert_match(/^XYZ1\nXYZ2$/m, @out) - end - end - - def test_rake_returns_status_error_values - in_environment("PWD" => "test/data/statusreturn") do - rake "exit5" - assert_status(5) - end - end - - def test_rake_returns_no_status_error_on_normal_exit - in_environment("PWD" => "test/data/statusreturn") do - rake "normal" - assert_status(0) - end - end - - private - - def remove_chaining_files - %w(play.scpt play.app base).each do |fn| - FileUtils.rm_f File.join("test/data/chains", fn) - end - end - - class << self - def format_command - @format_command ||= lambda { |ruby_options, rake_path, options| - "ruby #{ruby_options} #{rake_path} #{options}" - } - end - - def format_command=(fmt_command) - @format_command = fmt_command - end - end - - def rake(*option_list) - options = option_list.join(' ') - shell = Session::Shell.new - command = self.class.format_command[@ruby_options, @rake_path, options] - puts "COMMAND: [#{command}]" if @verbose - @out, @err = shell.execute command - @status = shell.exit_status - puts "STATUS: [#{@status}]" if @verbose - puts "OUTPUT: [#{@out}]" if @verbose - puts "ERROR: [#{@err}]" if @verbose - puts "PWD: [#{Dir.pwd}]" if @verbose - shell.close - end - - def assert_status(expected_status=0) - assert_equal expected_status, @status - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/shellcommand.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/shellcommand.rb deleted file mode 100755 index 58db8a08..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/shellcommand.rb +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env ruby - -exit((ARGV[0] || "0").to_i) diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_application.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_application.rb deleted file mode 100644 index c7fadb65..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_application.rb +++ /dev/null @@ -1,675 +0,0 @@ -#!/usr/bin/env ruby - -begin - require 'rubygems' -rescue LoadError - # got no gems -end - -require 'test/unit' -require 'rake' -require 'test/rake_test_setup' -require 'test/capture_stdout' -require 'test/in_environment' - -TESTING_REQUIRE = [ ] - -###################################################################### -class TestApplication < Test::Unit::TestCase - include CaptureStdout - include InEnvironment - include TestMethods - - def setup - @app = Rake::Application.new - @app.options.rakelib = [] - end - - def test_constant_warning - err = capture_stderr do @app.instance_eval { const_warning("Task") } end - assert_match(/warning/i, err) - assert_match(/deprecated/i, err) - assert_match(/Task/i, err) - end - - def test_display_tasks - @app.options.show_task_pattern = // - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "t") - out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t/, out) - assert_match(/# COMMENT/, out) - end - - def test_display_tasks_with_long_comments - in_environment('RAKE_COLUMNS' => '80') do - @app.options.show_task_pattern = // - @app.last_description = "1234567890" * 8 - @app.define_task(Rake::Task, "t") - out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t/, out) - assert_match(/# 12345678901234567890123456789012345678901234567890123456789012345\.\.\./, out) - end - end - - def test_display_tasks_with_task_name_wider_than_tty_display - in_environment('RAKE_COLUMNS' => '80') do - @app.options.show_task_pattern = // - description = "something short" - task_name = "task name" * 80 - @app.last_description = "something short" - @app.define_task(Rake::Task, task_name ) - out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end - # Ensure the entire task name is output and we end up showing no description - assert_match(/rake #{task_name} # .../, out) - end - end - - def test_display_tasks_with_very_long_task_name_to_a_non_tty_shows_name_and_comment - @app.options.show_task_pattern = // - @app.tty_output = false - description = "something short" - task_name = "task name" * 80 - @app.last_description = "something short" - @app.define_task(Rake::Task, task_name ) - out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end - # Ensure the entire task name is output and we end up showing no description - assert_match(/rake #{task_name} # #{description}/, out) - end - - def test_display_tasks_with_long_comments_to_a_non_tty_shows_entire_comment - @app.options.show_task_pattern = // - @app.tty_output = false - @app.last_description = "1234567890" * 8 - @app.define_task(Rake::Task, "t") - out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t/, out) - assert_match(/# #{@app.last_description}/, out) - end - - def test_display_tasks_with_long_comments_to_a_non_tty_with_columns_set_truncates_comments - in_environment("RAKE_COLUMNS" => '80') do - @app.options.show_task_pattern = // - @app.tty_output = false - @app.last_description = "1234567890" * 8 - @app.define_task(Rake::Task, "t") - out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t/, out) - assert_match(/# 12345678901234567890123456789012345678901234567890123456789012345\.\.\./, out) - end - end - - def test_display_tasks_with_full_descriptions - @app.options.show_task_pattern = // - @app.options.full_description = true - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "t") - out = capture_stdout do @app.instance_eval { display_tasks_and_comments } end - assert_match(/^rake t$/, out) - assert_match(/^ {4}COMMENT$/, out) - end - - def test_finding_rakefile - assert_match(/Rakefile/i, @app.instance_eval { have_rakefile }) - end - - def test_not_finding_rakefile - @app.instance_eval { @rakefiles = ['NEVER_FOUND'] } - assert( ! @app.instance_eval do have_rakefile end ) - assert_nil @app.rakefile - end - - def test_load_rakefile - in_environment("PWD" => "test/data/unittest") do - @app.instance_eval do - handle_options - options.silent = true - load_rakefile - end - assert_equal "rakefile", @app.rakefile.downcase - assert_match(%r(unittest$), Dir.pwd) - end - end - - def test_load_rakefile_from_subdir - in_environment("PWD" => "test/data/unittest/subdir") do - @app.instance_eval do - handle_options - options.silent = true - load_rakefile - end - assert_equal "rakefile", @app.rakefile.downcase - assert_match(%r(unittest$), Dir.pwd) - end - end - - def test_load_rakefile_not_found - in_environment("PWD" => "/", "RAKE_SYSTEM" => 'not_exist') do - @app.instance_eval do - handle_options - options.silent = true - end - ex = assert_exception(RuntimeError) do - @app.instance_eval do raw_load_rakefile end - end - assert_match(/no rakefile found/i, ex.message) - end - end - - def test_load_from_system_rakefile - in_environment('RAKE_SYSTEM' => 'test/data/sys') do - @app.options.rakelib = [] - @app.instance_eval do - handle_options - options.silent = true - options.load_system = true - options.rakelib = [] - load_rakefile - end - assert_equal "test/data/sys", @app.system_dir - assert_nil @app.rakefile - end - end - - def test_windows - assert ! (@app.windows? && @app.unix?) - end - - def test_loading_imports - mock = flexmock("loader") - mock.should_receive(:load).with("x.dummy").once - @app.instance_eval do - add_loader("dummy", mock) - add_import("x.dummy") - load_imports - end - end - - def test_building_imported_files_on_demand - mock = flexmock("loader") - mock.should_receive(:load).with("x.dummy").once - mock.should_receive(:make_dummy).with_no_args.once - @app.instance_eval do - intern(Rake::Task, "x.dummy").enhance do mock.make_dummy end - add_loader("dummy", mock) - add_import("x.dummy") - load_imports - end - end - - def test_handle_options_should_strip_options_from_ARGV - assert !@app.options.trace - - valid_option = '--trace' - ARGV.clear - ARGV << valid_option - - @app.handle_options - - assert !ARGV.include?(valid_option) - assert @app.options.trace - end - - def test_good_run - ran = false - ARGV.clear - ARGV << '--rakelib=""' - @app.options.silent = true - @app.instance_eval do - intern(Rake::Task, "default").enhance { ran = true } - end - in_environment("PWD" => "test/data/default") do - @app.run - end - assert ran - end - - def test_display_task_run - ran = false - ARGV.clear - ARGV << '-f' << '-s' << '--tasks' << '--rakelib=""' - @app.last_description = "COMMENT" - @app.define_task(Rake::Task, "default") - out = capture_stdout { @app.run } - assert @app.options.show_tasks - assert ! ran - assert_match(/rake default/, out) - assert_match(/# COMMENT/, out) - end - - def test_display_prereqs - ran = false - ARGV.clear - ARGV << '-f' << '-s' << '--prereqs' << '--rakelib=""' - @app.last_description = "COMMENT" - t = @app.define_task(Rake::Task, "default") - t.enhance([:a, :b]) - @app.define_task(Rake::Task, "a") - @app.define_task(Rake::Task, "b") - out = capture_stdout { @app.run } - assert @app.options.show_prereqs - assert ! ran - assert_match(/rake a$/, out) - assert_match(/rake b$/, out) - assert_match(/rake default\n( *(a|b)\n){2}/m, out) - end - - def test_bad_run - @app.intern(Rake::Task, "default").enhance { fail } - ARGV.clear - ARGV << '-f' << '-s' << '--rakelib=""' - assert_exception(SystemExit) { - err = capture_stderr { @app.run } - assert_match(/see full trace/, err) - } - ensure - ARGV.clear - end - - def test_bad_run_with_trace - @app.intern(Rake::Task, "default").enhance { fail } - ARGV.clear - ARGV << '-f' << '-s' << '-t' - assert_exception(SystemExit) { - err = capture_stderr { capture_stdout { @app.run } } - assert_no_match(/see full trace/, err) - } - ensure - ARGV.clear - end - - def test_run_with_bad_options - @app.intern(Rake::Task, "default").enhance { fail } - ARGV.clear - ARGV << '-f' << '-s' << '--xyzzy' - assert_exception(SystemExit) { - err = capture_stderr { capture_stdout { @app.run } } - } - ensure - ARGV.clear - end -end - - -###################################################################### -class TestApplicationOptions < Test::Unit::TestCase - include CaptureStdout - include TestMethods - - def setup - clear_argv - RakeFileUtils.verbose_flag = false - RakeFileUtils.nowrite_flag = false - TESTING_REQUIRE.clear - end - - def teardown - clear_argv - RakeFileUtils.verbose_flag = false - RakeFileUtils.nowrite_flag = false - end - - def clear_argv - while ! ARGV.empty? - ARGV.pop - end - end - - def test_default_options - opts = command_line - assert_nil opts.classic_namespace - assert_nil opts.dryrun - assert_nil opts.full_description - assert_nil opts.ignore_system - assert_nil opts.load_system - assert_nil opts.nosearch - assert_equal ['rakelib'], opts.rakelib - assert_nil opts.show_prereqs - assert_nil opts.show_task_pattern - assert_nil opts.show_tasks - assert_nil opts.silent - assert_nil opts.trace - assert_equal ['rakelib'], opts.rakelib - assert ! RakeFileUtils.verbose_flag - assert ! RakeFileUtils.nowrite_flag - end - - def test_dry_run - flags('--dry-run', '-n') do |opts| - assert opts.dryrun - assert opts.trace - assert RakeFileUtils.verbose_flag - assert RakeFileUtils.nowrite_flag - end - end - - def test_describe - flags('--describe') do |opts| - assert opts.full_description - assert opts.show_tasks - assert_equal(//.to_s, opts.show_task_pattern.to_s) - end - end - - def test_describe_with_pattern - flags('--describe=X') do |opts| - assert opts.full_description - assert opts.show_tasks - assert_equal(/X/.to_s, opts.show_task_pattern.to_s) - end - end - - def test_execute - $xyzzy = 0 - flags('--execute=$xyzzy=1', '-e $xyzzy=1') do |opts| - assert_equal 1, $xyzzy - assert_equal :exit, @exit - $xyzzy = 0 - end - end - - def test_execute_and_continue - $xyzzy = 0 - flags('--execute-continue=$xyzzy=1', '-E $xyzzy=1') do |opts| - assert_equal 1, $xyzzy - assert_not_equal :exit, @exit - $xyzzy = 0 - end - end - - def test_execute_and_print - $xyzzy = 0 - flags('--execute-print=$xyzzy="pugh"', '-p $xyzzy="pugh"') do |opts| - assert_equal 'pugh', $xyzzy - assert_equal :exit, @exit - assert_match(/^pugh$/, @out) - $xyzzy = 0 - end - end - - def test_help - flags('--help', '-H', '-h') do |opts| - assert_match(/\Arake/, @out) - assert_match(/\boptions\b/, @out) - assert_match(/\btargets\b/, @out) - assert_equal :exit, @exit - assert_equal :exit, @exit - end - end - - def test_libdir - flags(['--libdir', 'xx'], ['-I', 'xx'], ['-Ixx']) do |opts| - $:.include?('xx') - end - ensure - $:.delete('xx') - end - - def test_rakefile - flags(['--rakefile', 'RF'], ['--rakefile=RF'], ['-f', 'RF'], ['-fRF']) do |opts| - assert_equal ['RF'], @app.instance_eval { @rakefiles } - end - end - - def test_rakelib - flags(['--rakelibdir', 'A:B:C'], ['--rakelibdir=A:B:C'], ['-R', 'A:B:C'], ['-RA:B:C']) do |opts| - assert_equal ['A', 'B', 'C'], opts.rakelib - end - end - - def test_require - flags(['--require', 'test/reqfile'], '-rtest/reqfile2', '-rtest/reqfile3') do |opts| - end - assert TESTING_REQUIRE.include?(1) - assert TESTING_REQUIRE.include?(2) - assert TESTING_REQUIRE.include?(3) - assert_equal 3, TESTING_REQUIRE.size - end - - def test_missing_require - ex = assert_exception(LoadError) do - flags(['--require', 'test/missing']) do |opts| - end - end - assert_match(/no such file/, ex.message) - assert_match(/test\/missing/, ex.message) - end - - def test_prereqs - flags('--prereqs', '-P') do |opts| - assert opts.show_prereqs - end - end - - def test_quiet - flags('--quiet', '-q') do |opts| - assert ! RakeFileUtils.verbose_flag - assert ! opts.silent - end - end - - def test_no_search - flags('--nosearch', '--no-search', '-N') do |opts| - assert opts.nosearch - end - end - - def test_silent - flags('--silent', '-s') do |opts| - assert ! RakeFileUtils.verbose_flag - assert opts.silent - end - end - - def test_system - flags('--system', '-g') do |opts| - assert opts.load_system - end - end - - def test_no_system - flags('--no-system', '-G') do |opts| - assert opts.ignore_system - end - end - - def test_trace - flags('--trace', '-t') do |opts| - assert opts.trace - assert RakeFileUtils.verbose_flag - assert ! RakeFileUtils.nowrite_flag - end - end - - def test_trace_rules - flags('--rules') do |opts| - assert opts.trace_rules - end - end - - def test_tasks - flags('--tasks', '-T') do |opts| - assert opts.show_tasks - assert_equal(//.to_s, opts.show_task_pattern.to_s) - end - flags(['--tasks', 'xyz'], ['-Txyz']) do |opts| - assert opts.show_tasks - assert_equal(/xyz/, opts.show_task_pattern) - end - end - - def test_verbose - flags('--verbose', '-V') do |opts| - assert RakeFileUtils.verbose_flag - assert ! opts.silent - end - end - - def test_version - flags('--version', '-V') do |opts| - assert_match(/\bversion\b/, @out) - assert_match(/\b#{RAKEVERSION}\b/, @out) - assert_equal :exit, @exit - end - end - - def test_classic_namespace - flags(['--classic-namespace'], ['-C', '-T', '-P', '-n', '-s', '-t']) do |opts| - assert opts.classic_namespace - assert_equal opts.show_tasks, $show_tasks - assert_equal opts.show_prereqs, $show_prereqs - assert_equal opts.trace, $trace - assert_equal opts.dryrun, $dryrun - assert_equal opts.silent, $silent - end - end - - def test_bad_option - capture_stderr do - ex = assert_exception(OptionParser::InvalidOption) do - flags('--bad-option') - end - if ex.message =~ /^While/ # Ruby 1.9 error message - assert_match(/while parsing/i, ex.message) - else # Ruby 1.8 error message - assert_match(/(invalid|unrecognized) option/i, ex.message) - assert_match(/--bad-option/, ex.message) - end - end - end - - def test_task_collection - command_line("a", "b") - assert_equal ["a", "b"], @tasks.sort - end - - def test_default_task_collection - command_line() - assert_equal ["default"], @tasks - end - - def test_environment_definition - ENV.delete('TESTKEY') - command_line("a", "TESTKEY=12") - assert_equal ["a"], @tasks.sort - assert '12', ENV['TESTKEY'] - end - - private - - def flags(*sets) - sets.each do |set| - ARGV.clear - @out = capture_stdout { - @exit = catch(:system_exit) { opts = command_line(*set) } - } - yield(@app.options) if block_given? - end - end - - def command_line(*options) - options.each do |opt| ARGV << opt end - @app = Rake::Application.new - def @app.exit(*args) - throw :system_exit, :exit - end - @app.instance_eval do - handle_options - collect_tasks - end - @tasks = @app.top_level_tasks - @app.options - end -end - -class TestTaskArgumentParsing < Test::Unit::TestCase - def setup - @app = Rake::Application.new - end - - def test_name_only - name, args = @app.parse_task_string("name") - assert_equal "name", name - assert_equal [], args - end - - def test_empty_args - name, args = @app.parse_task_string("name[]") - assert_equal "name", name - assert_equal [], args - end - - def test_one_argument - name, args = @app.parse_task_string("name[one]") - assert_equal "name", name - assert_equal ["one"], args - end - - def test_two_arguments - name, args = @app.parse_task_string("name[one,two]") - assert_equal "name", name - assert_equal ["one", "two"], args - end - - def test_can_handle_spaces_between_args - name, args = @app.parse_task_string("name[one, two,\tthree , \tfour]") - assert_equal "name", name - assert_equal ["one", "two", "three", "four"], args - end - - def test_keeps_embedded_spaces - name, args = @app.parse_task_string("name[a one ana, two]") - assert_equal "name", name - assert_equal ["a one ana", "two"], args - end - -end - -class TestTaskArgumentParsing < Test::Unit::TestCase - include InEnvironment - - def test_terminal_width_using_env - app = Rake::Application.new - in_environment('RAKE_COLUMNS' => '1234') do - assert_equal 1234, app.terminal_width - end - end - - def test_terminal_width_using_stty - app = Rake::Application.new - flexmock(app, - :unix? => true, - :dynamic_width_stty => 1235, - :dynamic_width_tput => 0) - in_environment('RAKE_COLUMNS' => nil) do - assert_equal 1235, app.terminal_width - end - end - - def test_terminal_width_using_tput - app = Rake::Application.new - flexmock(app, - :unix? => true, - :dynamic_width_stty => 0, - :dynamic_width_tput => 1236) - in_environment('RAKE_COLUMNS' => nil) do - assert_equal 1236, app.terminal_width - end - end - - def test_terminal_width_using_hardcoded_80 - app = Rake::Application.new - flexmock(app, :unix? => false) - in_environment('RAKE_COLUMNS' => nil) do - assert_equal 80, app.terminal_width - end - end - - def test_terminal_width_with_failure - app = Rake::Application.new - flexmock(app).should_receive(:unix?).and_throw(RuntimeError) - in_environment('RAKE_COLUMNS' => nil) do - assert_equal 80, app.terminal_width - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_clean.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_clean.rb deleted file mode 100644 index da04ad14..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_clean.rb +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake/clean' - -class TestClean < Test::Unit::TestCase - include Rake - def test_clean - assert Task['clean'], "Should define clean" - assert Task['clobber'], "Should define clobber" - assert Task['clobber'].prerequisites.include?("clean"), - "Clobber should require clean" - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_definitions.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_definitions.rb deleted file mode 100644 index 5fba312e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_definitions.rb +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'fileutils' -require 'rake' -require 'test/filecreation' -require 'test/rake_test_setup' - -###################################################################### -class TestDefinitions < Test::Unit::TestCase - include Rake - include TestMethods - - EXISTINGFILE = "testdata/existing" - - def setup - Task.clear - end - - def test_task - done = false - task :one => [:two] do done = true end - task :two - task :three => [:one, :two] - check_tasks(:one, :two, :three) - assert done, "Should be done" - end - - def test_file_task - done = false - file "testdata/one" => "testdata/two" do done = true end - file "testdata/two" - file "testdata/three" => ["testdata/one", "testdata/two"] - check_tasks("testdata/one", "testdata/two", "testdata/three") - assert done, "Should be done" - end - - def check_tasks(n1, n2, n3) - t = Task[n1] - assert Task === t, "Should be a Task" - assert_equal n1.to_s, t.name - assert_equal [n2.to_s], t.prerequisites.collect{|n| n.to_s} - t.invoke - t2 = Task[n2] - assert_equal FileList[], t2.prerequisites - t3 = Task[n3] - assert_equal [n1.to_s, n2.to_s], t3.prerequisites.collect{|n|n.to_s} - end - - def test_incremental_definitions - runs = [] - task :t1 => [:t2] do runs << "A"; 4321 end - task :t1 => [:t3] do runs << "B"; 1234 end - task :t1 => [:t3] - task :t2 - task :t3 - Task[:t1].invoke - assert_equal ["A", "B"], runs - assert_equal ["t2", "t3"], Task[:t1].prerequisites - end - - def test_missing_dependencies - task :x => ["testdata/missing"] - assert_exception(RuntimeError) { Task[:x].invoke } - end - - def test_implicit_file_dependencies - runs = [] - create_existing_file - task :y => [EXISTINGFILE] do |t| runs << t.name end - Task[:y].invoke - assert_equal runs, ['y'] - end - - private # ---------------------------------------------------------- - - def create_existing_file - Dir.mkdir File.dirname(EXISTINGFILE) unless - File.exist?(File.dirname(EXISTINGFILE)) - open(EXISTINGFILE, "w") do |f| f.puts "HI" end unless - File.exist?(EXISTINGFILE) - end - -end - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_earlytime.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_earlytime.rb deleted file mode 100644 index e63bd543..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_earlytime.rb +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' - -class TestEarlyTime < Test::Unit::TestCase - def test_create - early = Rake::EarlyTime.instance - time = Time.mktime(1970, 1, 1, 0, 0, 0) - assert early <= Time.now - assert early < Time.now - assert early != Time.now - assert Time.now > early - assert Time.now >= early - assert Time.now != early - end - - def test_equality - early = Rake::EarlyTime.instance - assert_equal early, early, "two early times should be equal" - end - - def test_original_time_compare_is_not_messed_up - t1 = Time.mktime(1970, 1, 1, 0, 0, 0) - t2 = Time.now - assert t1 < t2 - assert t2 > t1 - assert t1 == t1 - assert t2 == t2 - end - - def test_to_s - assert_equal "", Rake::EARLY.to_s - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_extension.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_extension.rb deleted file mode 100644 index 4a5784cf..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_extension.rb +++ /dev/null @@ -1,63 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' -require 'stringio' - -###################################################################### -class TestExtension < Test::Unit::TestCase - - module Redirect - def error_redirect - old_err = $stderr - result = StringIO.new - $stderr = result - yield - result - ensure - $stderr = old_err - end - end - - class Sample - extend Redirect - - def duplicate_method - :original - end - - OK_ERRS = error_redirect do - rake_extension("a") do - def ok_method - end - end - end - - - DUP_ERRS = error_redirect do - rake_extension("duplicate_method") do - def duplicate_method - :override - end - end - end - end - - def test_methods_actually_exist - sample = Sample.new - sample.ok_method - sample.duplicate_method - end - - def test_no_warning_when_defining_ok_method - assert_equal "", Sample::OK_ERRS.string - end - - def test_extension_complains_when_a_method_that_is_present - assert_match(/warning:/i, Sample::DUP_ERRS.string) - assert_match(/already exists/i, Sample::DUP_ERRS.string) - assert_match(/duplicate_method/i, Sample::DUP_ERRS.string) - assert_equal :original, Sample.new.duplicate_method - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_file_creation_task.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_file_creation_task.rb deleted file mode 100644 index 1544e14d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_file_creation_task.rb +++ /dev/null @@ -1,62 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'fileutils' -require 'rake' -require 'test/filecreation' - -###################################################################### -class TestFileCreationTask < Test::Unit::TestCase - include Rake - include FileCreation - - DUMMY_DIR = 'testdata/dummy_dir' - - def setup - Task.clear - end - - def teardown - FileUtils.rm_rf DUMMY_DIR - end - - def test_file_needed - create_dir DUMMY_DIR - fc_task = Task[DUMMY_DIR] - assert_equal DUMMY_DIR, fc_task.name - FileUtils.rm_rf fc_task.name - assert fc_task.needed?, "file should be needed" - FileUtils.mkdir fc_task.name - assert_equal nil, fc_task.prerequisites.collect{|n| Task[n].timestamp}.max - assert ! fc_task.needed?, "file should not be needed" - end - - def test_directory - directory DUMMY_DIR - fc_task = Task[DUMMY_DIR] - assert_equal DUMMY_DIR, fc_task.name - assert FileCreationTask === fc_task - end - - def test_no_retriggers_on_filecreate_task - create_timed_files(OLDFILE, NEWFILE) - t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE]) - t2 = Rake.application.intern(FileCreationTask, NEWFILE) - assert ! t2.needed?, "Should not need to build new file" - assert ! t1.needed?, "Should not need to rebuild old file because of new" - end - - def test_no_retriggers_on_file_task - create_timed_files(OLDFILE, NEWFILE) - t1 = Rake.application.intern(FileCreationTask, OLDFILE).enhance([NEWFILE]) - t2 = Rake.application.intern(FileCreationTask, NEWFILE) - assert ! t2.needed?, "Should not need to build new file" - assert ! t1.needed?, "Should not need to rebuild old file because of new" - end - - def test_very_early_timestamp - t1 = Rake.application.intern(FileCreationTask, OLDFILE) - assert t1.timestamp < Time.now - assert t1.timestamp < Time.now - 1000000 - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_file_task.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_file_task.rb deleted file mode 100644 index bfb08f9c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_file_task.rb +++ /dev/null @@ -1,143 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'fileutils' -require 'rake' -require 'test/filecreation' -require 'test/rake_test_setup' - -###################################################################### -class TestFileTask < Test::Unit::TestCase - include Rake - include FileCreation - include TestMethods - - def setup - Task.clear - @runs = Array.new - FileUtils.rm_f NEWFILE - FileUtils.rm_f OLDFILE - end - - def test_file_need - name = "testdata/dummy" - file name - ftask = Task[name] - assert_equal name.to_s, ftask.name - File.delete(ftask.name) rescue nil - assert ftask.needed?, "file should be needed" - open(ftask.name, "w") { |f| f.puts "HI" } - assert_equal nil, ftask.prerequisites.collect{|n| Task[n].timestamp}.max - assert ! ftask.needed?, "file should not be needed" - File.delete(ftask.name) rescue nil - end - - def test_file_times_new_depends_on_old - create_timed_files(OLDFILE, NEWFILE) - - t1 = Rake.application.intern(FileTask, NEWFILE).enhance([OLDFILE]) - t2 = Rake.application.intern(FileTask, OLDFILE) - assert ! t2.needed?, "Should not need to build old file" - assert ! t1.needed?, "Should not need to rebuild new file because of old" - end - - def test_file_times_old_depends_on_new - create_timed_files(OLDFILE, NEWFILE) - - t1 = Rake.application.intern(FileTask,OLDFILE).enhance([NEWFILE]) - t2 = Rake.application.intern(FileTask, NEWFILE) - assert ! t2.needed?, "Should not need to build new file" - preq_stamp = t1.prerequisites.collect{|t| Task[t].timestamp}.max - assert_equal t2.timestamp, preq_stamp - assert t1.timestamp < preq_stamp, "T1 should be older" - assert t1.needed?, "Should need to rebuild old file because of new" - end - - def test_file_depends_on_task_depend_on_file - create_timed_files(OLDFILE, NEWFILE) - - file NEWFILE => [:obj] do |t| @runs << t.name end - task :obj => [OLDFILE] do |t| @runs << t.name end - file OLDFILE do |t| @runs << t.name end - - Task[:obj].invoke - Task[NEWFILE].invoke - assert ! @runs.include?(NEWFILE) - end - - def test_existing_file_depends_on_non_existing_file - create_file(OLDFILE) - delete_file(NEWFILE) - file NEWFILE - file OLDFILE => NEWFILE - assert_nothing_raised do Task[OLDFILE].invoke end - end - - # I have currently disabled this test. I'm not convinced that - # deleting the file target on failure is always the proper thing to - # do. I'm willing to hear input on this topic. - def ztest_file_deletes_on_failure - task :obj - file NEWFILE => [:obj] do |t| - FileUtils.touch NEWFILE - fail "Ooops" - end - assert Task[NEWFILE] - begin - Task[NEWFILE].invoke - rescue Exception - end - assert( ! File.exist?(NEWFILE), "NEWFILE should be deleted") - end - -end - -###################################################################### -class TestDirectoryTask < Test::Unit::TestCase - include Rake - - def setup - rm_rf "testdata", :verbose=>false - end - - def teardown - rm_rf "testdata", :verbose=>false - end - - def test_directory - desc "DESC" - directory "testdata/a/b/c" - assert_equal FileCreationTask, Task["testdata"].class - assert_equal FileCreationTask, Task["testdata/a"].class - assert_equal FileCreationTask, Task["testdata/a/b/c"].class - assert_nil Task["testdata"].comment - assert_equal "DESC", Task["testdata/a/b/c"].comment - assert_nil Task["testdata/a/b"].comment - verbose(false) { - Task['testdata/a/b'].invoke - } - assert File.exist?("testdata/a/b") - assert ! File.exist?("testdata/a/b/c") - end - - if Rake::Win32.windows? - def test_directory_win32 - desc "WIN32 DESC" - FileUtils.mkdir_p("testdata") - Dir.chdir("testdata") do - directory 'c:/testdata/a/b/c' - assert_equal FileCreationTask, Task['c:/testdata'].class - assert_equal FileCreationTask, Task['c:/testdata/a'].class - assert_equal FileCreationTask, Task['c:/testdata/a/b/c'].class - assert_nil Task['c:/testdata'].comment - assert_equal "WIN32 DESC", Task['c:/testdata/a/b/c'].comment - assert_nil Task['c:/testdata/a/b'].comment - verbose(false) { - Task['c:/testdata/a/b'].invoke - } - assert File.exist?('c:/testdata/a/b') - assert ! File.exist?('c:/testdata/a/b/c') - end - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_filelist.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_filelist.rb deleted file mode 100644 index 84ee82cc..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_filelist.rb +++ /dev/null @@ -1,623 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' - -require 'test/capture_stdout' -require 'test/rake_test_setup' - -class TestFileList < Test::Unit::TestCase - FileList = Rake::FileList - include CaptureStdout - include TestMethods - - def setup - create_test_data - end - - def teardown -# FileList.select_default_ignore_patterns - FileUtils.rm_rf("testdata") - end - - def test_delgating_methods_do_not_include_to_a_or_to_ary - assert ! FileList::DELEGATING_METHODS.include?("to_a"), "should not include to_a" - assert ! FileList::DELEGATING_METHODS.include?(:to_a), "should not include to_a" - assert ! FileList::DELEGATING_METHODS.include?("to_ary"), "should not include to_ary" - assert ! FileList::DELEGATING_METHODS.include?(:to_ary), "should not include to_ary" - end - - def test_create - fl = FileList.new - assert_equal 0, fl.size - end - - def test_create_with_args - fl = FileList.new("testdata/*.c", "x") - assert_equal ["testdata/abc.c", "testdata/x.c", "testdata/xyz.c", "x"].sort, - fl.sort - end - - def test_create_with_block - fl = FileList.new { |f| f.include("x") } - assert_equal ["x"], fl.resolve - end - - def test_create_with_brackets - fl = FileList["testdata/*.c", "x"] - assert_equal ["testdata/abc.c", "testdata/x.c", "testdata/xyz.c", "x"].sort, - fl.sort - end - - def test_create_with_brackets_and_filelist - fl = FileList[FileList["testdata/*.c", "x"]] - assert_equal ["testdata/abc.c", "testdata/x.c", "testdata/xyz.c", "x"].sort, - fl.sort - end - - def test_include_with_another_array - fl = FileList.new.include(["x", "y", "z"]) - assert_equal ["x", "y", "z"].sort, fl.sort - end - - def test_include_with_another_filelist - fl = FileList.new.include(FileList["testdata/*.c", "x"]) - assert_equal ["testdata/abc.c", "testdata/x.c", "testdata/xyz.c", "x"].sort, - fl.sort - end - - def test_append - fl = FileList.new - fl << "a.rb" << "b.rb" - assert_equal ['a.rb', 'b.rb'], fl - end - - def test_add_many - fl = FileList.new - fl.include %w(a d c) - fl.include('x', 'y') - assert_equal ['a', 'd', 'c', 'x', 'y'], fl - assert_equal ['a', 'd', 'c', 'x', 'y'], fl.resolve - end - - def test_add_return - f = FileList.new - g = f << "x" - assert_equal f.object_id, g.object_id - h = f.include("y") - assert_equal f.object_id, h.object_id - end - - def test_match - fl = FileList.new - fl.include('test/test*.rb') - assert fl.include?("test/test_filelist.rb") - assert fl.size > 3 - fl.each { |fn| assert_match(/\.rb$/, fn) } - end - - def test_add_matching - fl = FileList.new - fl << "a.java" - fl.include("test/*.rb") - assert_equal "a.java", fl[0] - assert fl.size > 2 - assert fl.include?("test/test_filelist.rb") - end - - def test_multiple_patterns - create_test_data - fl = FileList.new - fl.include('*.c', '*xist*') - assert_equal [], fl - fl.include('testdata/*.c', 'testdata/*xist*') - assert_equal [ - 'testdata/x.c', 'testdata/xyz.c', 'testdata/abc.c', 'testdata/existing' - ].sort, fl.sort - end - - def test_square_bracket_pattern - fl = FileList.new - fl.include("testdata/abc.[ch]") - assert fl.size == 2 - assert fl.include?("testdata/abc.c") - assert fl.include?("testdata/abc.h") - end - - def test_curly_bracket_pattern - fl = FileList.new - fl.include("testdata/abc.{c,h}") - assert fl.size == 2 - assert fl.include?("testdata/abc.c") - assert fl.include?("testdata/abc.h") - end - - def test_reject - fl = FileList.new - fl.include %w(testdata/x.c testdata/abc.c testdata/xyz.c testdata/existing) - fl.reject! { |fn| fn =~ %r{/x} } - assert_equal [ - 'testdata/abc.c', 'testdata/existing' - ], fl - end - - def test_exclude - fl = FileList['testdata/x.c', 'testdata/abc.c', 'testdata/xyz.c', 'testdata/existing'] - fl.each { |fn| touch fn, :verbose => false } - x = fl.exclude(%r{/x.+\.}) - assert_equal FileList, x.class - assert_equal %w(testdata/x.c testdata/abc.c testdata/existing), fl - assert_equal fl.object_id, x.object_id - fl.exclude('testdata/*.c') - assert_equal ['testdata/existing'], fl - fl.exclude('testdata/existing') - assert_equal [], fl - end - - def test_excluding_via_block - fl = FileList['testdata/a.c', 'testdata/b.c', 'testdata/xyz.c'] - fl.exclude { |fn| fn.pathmap('%n') == 'xyz' } - assert fl.exclude?("xyz.c"), "Should exclude xyz.c" - assert_equal ['testdata/a.c', 'testdata/b.c'], fl - end - - def test_exclude_return_on_create - fl = FileList['testdata/*'].exclude(/.*\.[hcx]$/) - assert_equal ['testdata/existing', 'testdata/cfiles'].sort, fl.sort - assert_equal FileList, fl.class - end - - def test_exclude_with_string_return_on_create - fl = FileList['testdata/*'].exclude('testdata/abc.c') - assert_equal %w(testdata/existing testdata/cfiles testdata/x.c testdata/abc.h testdata/abc.x testdata/xyz.c).sort, fl.sort - assert_equal FileList, fl.class - end - - def test_default_exclude - fl = FileList.new - fl.clear_exclude - fl.include("**/*~", "**/*.bak", "**/core") - assert fl.member?("testdata/core"), "Should include core" - assert fl.member?("testdata/x.bak"), "Should include .bak files" - end - - def test_unique - fl = FileList.new - fl << "x.c" << "a.c" << "b.rb" << "a.c" - assert_equal ['x.c', 'a.c', 'b.rb', 'a.c'], fl - fl.uniq! - assert_equal ['x.c', 'a.c', 'b.rb'], fl - end - - def test_to_string - fl = FileList.new - fl << "a.java" << "b.java" - assert_equal "a.java b.java", fl.to_s - assert_equal "a.java b.java", "#{fl}" - end - - def test_to_array - fl = FileList['a.java', 'b.java'] - assert_equal ['a.java', 'b.java'], fl.to_a - assert_equal Array, fl.to_a.class - assert_equal ['a.java', 'b.java'], fl.to_ary - assert_equal Array, fl.to_ary.class - end - - def test_to_s_pending - fl = FileList['testdata/abc.*'] - result = fl.to_s - assert_match(%r{testdata/abc\.c}, result) - assert_match(%r{testdata/abc\.h}, result) - assert_match(%r{testdata/abc\.x}, result) - assert_match(%r{(testdata/abc\..\b ?){2}}, result) - end - - def test_inspect_pending - fl = FileList['testdata/abc.*'] - result = fl.inspect - assert_match(%r{"testdata/abc\.c"}, result) - assert_match(%r{"testdata/abc\.h"}, result) - assert_match(%r{"testdata/abc\.x"}, result) - assert_match(%r|^\[("testdata/abc\..", ){2}"testdata/abc\.."\]$|, result) - end - - def test_sub - fl = FileList["testdata/*.c"] - f2 = fl.sub(/\.c$/, ".o") - assert_equal FileList, f2.class - assert_equal ["testdata/abc.o", "testdata/x.o", "testdata/xyz.o"].sort, - f2.sort - f3 = fl.gsub(/\.c$/, ".o") - assert_equal FileList, f3.class - assert_equal ["testdata/abc.o", "testdata/x.o", "testdata/xyz.o"].sort, - f3.sort - end - - def test_claim_to_be_a_kind_of_array - fl = FileList['testdata/*.c'] - assert fl.is_a?(Array) - assert fl.kind_of?(Array) - end - - def test_claim_to_be_a_kind_of_filelist - fl = FileList['testdata/*.c'] - assert fl.is_a?(FileList) - assert fl.kind_of?(FileList) - end - - def test_claim_to_be_a_filelist_instance - fl = FileList['testdata/*.c'] - assert fl.instance_of?(FileList) - end - - def test_dont_claim_to_be_an_array_instance - fl = FileList['testdata/*.c'] - assert ! fl.instance_of?(Array) - end - - def test_sub! - f = "x/a.c" - fl = FileList[f, "x/b.c"] - res = fl.sub!(/\.c$/, ".o") - assert_equal ["x/a.o", "x/b.o"].sort, fl.sort - assert_equal "x/a.c", f - assert_equal fl.object_id, res.object_id - end - - def test_sub_with_block - fl = FileList["src/org/onestepback/a.java", "src/org/onestepback/b.java"] -# The block version doesn't work the way I want it to ... -# f2 = fl.sub(%r{^src/(.*)\.java$}) { |x| "classes/" + $1 + ".class" } - f2 = fl.sub(%r{^src/(.*)\.java$}, "classes/\\1.class") - assert_equal [ - "classes/org/onestepback/a.class", - "classes/org/onestepback/b.class" - ].sort, - f2.sort - end - - def test_string_ext - assert_equal "one.net", "one.two".ext("net") - assert_equal "one.net", "one.two".ext(".net") - assert_equal "one.net", "one".ext("net") - assert_equal "one.net", "one".ext(".net") - assert_equal "one.two.net", "one.two.c".ext(".net") - assert_equal "one/two.net", "one/two.c".ext(".net") - assert_equal "one.x/two.net", "one.x/two.c".ext(".net") - assert_equal "one.x/two.net", "one.x/two".ext(".net") - assert_equal ".onerc.net", ".onerc.dot".ext("net") - assert_equal ".onerc.net", ".onerc".ext("net") - assert_equal ".a/.onerc.net", ".a/.onerc".ext("net") - assert_equal "one", "one.two".ext('') - assert_equal "one", "one.two".ext - assert_equal ".one", ".one.two".ext - assert_equal ".one", ".one".ext - assert_equal ".", ".".ext("c") - assert_equal "..", "..".ext("c") - # These only need to work in windows - if Rake::Win32.windows? - assert_equal "one.x\\two.net", "one.x\\two.c".ext(".net") - assert_equal "one.x\\two.net", "one.x\\two".ext(".net") - end - end - - def test_filelist_ext - assert_equal FileList['one.c', '.one.c'], - FileList['one.net', '.one'].ext('c') - end - - def test_gsub - create_test_data - fl = FileList["testdata/*.c"] - f2 = fl.gsub(/a/, "A") - assert_equal ["testdAtA/Abc.c", "testdAtA/x.c", "testdAtA/xyz.c"].sort, - f2.sort - end - - def test_gsub! - create_test_data - f = FileList["testdata/*.c"] - f.gsub!(/a/, "A") - assert_equal ["testdAtA/Abc.c", "testdAtA/x.c", "testdAtA/xyz.c"].sort, - f.sort - end - - def test_egrep_with_output - files = FileList['test/test*.rb'] - the_line_number = __LINE__ + 1 - out = capture_stdout do files.egrep(/PUGH/) end - assert_match(/:#{the_line_number}:/, out) - end - - def test_egrep_with_block - files = FileList['test/test*.rb'] - found = false - the_line_number = __LINE__ + 1 - files.egrep(/XYZZY/) do |fn, ln, line | - assert_equal 'test/test_filelist.rb', fn - assert_equal the_line_number, ln - assert_match(/files\.egrep/, line) - found = true - end - assert found, "should have found a matching line" - end - - def test_existing - fl = FileList['testdata/abc.c', 'testdata/notthere.c'] - assert_equal ["testdata/abc.c"], fl.existing - assert fl.existing.is_a?(FileList) - end - - def test_existing! - fl = FileList['testdata/abc.c', 'testdata/notthere.c'] - result = fl.existing! - assert_equal ["testdata/abc.c"], fl - assert_equal fl.object_id, result.object_id - end - - def test_ignore_special - f = FileList['testdata/*'] - assert ! f.include?("testdata/CVS"), "Should not contain CVS" - assert ! f.include?("testdata/.svn"), "Should not contain .svn" - assert ! f.include?("testdata/.dummy"), "Should not contain dot files" - assert ! f.include?("testdata/x.bak"), "Should not contain .bak files" - assert ! f.include?("testdata/x~"), "Should not contain ~ files" - assert ! f.include?("testdata/core"), "Should not contain core files" - end - - def test_clear_ignore_patterns - f = FileList['testdata/*', 'testdata/.svn'] - f.clear_exclude - assert f.include?("testdata/abc.c") - assert f.include?("testdata/xyz.c") - assert f.include?("testdata/CVS") - assert f.include?("testdata/.svn") - assert f.include?("testdata/x.bak") - assert f.include?("testdata/x~") - end - - def test_exclude_with_alternate_file_seps - fl = FileList.new - assert fl.exclude?("x/CVS/y") - assert fl.exclude?("x\\CVS\\y") - assert fl.exclude?("x/.svn/y") - assert fl.exclude?("x\\.svn\\y") - assert fl.exclude?("x/core") - assert fl.exclude?("x\\core") - end - - def test_add_default_exclude_list - fl = FileList.new - fl.exclude(/~\d+$/) - assert fl.exclude?("x/CVS/y") - assert fl.exclude?("x\\CVS\\y") - assert fl.exclude?("x/.svn/y") - assert fl.exclude?("x\\.svn\\y") - assert fl.exclude?("x/core") - assert fl.exclude?("x\\core") - assert fl.exclude?("x/abc~1") - end - - def test_basic_array_functions - f = FileList['b', 'c', 'a'] - assert_equal 'b', f.first - assert_equal 'b', f[0] - assert_equal 'a', f.last - assert_equal 'a', f[2] - assert_equal 'a', f[-1] - assert_equal ['a', 'b', 'c'], f.sort - f.sort! - assert_equal ['a', 'b', 'c'], f - end - - def test_flatten - assert_equal ['a', 'testdata/x.c', 'testdata/xyz.c', 'testdata/abc.c'].sort, - ['a', FileList['testdata/*.c']].flatten.sort - end - - def test_clone_and_dup - a = FileList['a', 'b', 'c'] - c = a.clone - d = a.dup - a << 'd' - assert_equal ['a', 'b', 'c', 'd'], a - assert_equal ['a', 'b', 'c'], c - assert_equal ['a', 'b', 'c'], d - end - - def test_dup_and_clone_replicate_taint - a = FileList['a', 'b', 'c'] - a.taint - c = a.clone - d = a.dup - assert c.tainted?, "Clone should be tainted" - assert d.tainted?, "Dup should be tainted" - end - - def test_duped_items_will_thaw - a = FileList['a', 'b', 'c'] - a.freeze - d = a.dup - d << 'more' - assert_equal ['a', 'b', 'c', 'more'], d - end - - def test_cloned_items_stay_frozen - a = FileList['a', 'b', 'c'] - a.freeze - c = a.clone - assert_exception(TypeError, RuntimeError) do - c << 'more' - end - end - - def test_array_comparisons - fl = FileList['b', 'b'] - a = ['b', 'a'] - b = ['b', 'b'] - c = ['b', 'c'] - assert_equal( 1, fl <=> a ) - assert_equal( 0, fl <=> b ) - assert_equal( -1, fl <=> c ) - assert_equal( -1, a <=> fl ) - assert_equal( 0, b <=> fl ) - assert_equal( 1, c <=> fl ) - end - - def test_array_equality - a = FileList['a', 'b'] - b = ['a', 'b'] - assert a == b - assert b == a -# assert a.eql?(b) -# assert b.eql?(a) - assert ! a.equal?(b) - assert ! b.equal?(a) - end - - def test_enumeration_methods - a = FileList['a', 'b'] - b = a.collect { |it| it.upcase } - assert_equal ['A', 'B'], b - assert_equal FileList, b.class - - b = a.map { |it| it.upcase } - assert_equal ['A', 'B'], b - assert_equal FileList, b.class - - b = a.sort - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.sort_by { |it| it } - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.find_all { |it| it == 'b'} - assert_equal ['b'], b - assert_equal FileList, b.class - - b = a.select { |it| it.size == 1 } - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.reject { |it| it == 'b' } - assert_equal ['a'], b - assert_equal FileList, b.class - - b = a.grep(/./) - assert_equal ['a', 'b'], b - assert_equal FileList, b.class - - b = a.partition { |it| it == 'b' } - assert_equal [['b'], ['a']], b - assert_equal Array, b.class - assert_equal FileList, b[0].class - assert_equal FileList, b[1].class - - b = a.zip(['x', 'y']).to_a - assert_equal [['a', 'x'], ['b', 'y']], b - assert_equal Array, b.class - assert_equal Array, b[0].class - assert_equal Array, b[1].class - end - - def test_array_operators - a = ['a', 'b'] - b = ['c', 'd'] - f = FileList['x', 'y'] - g = FileList['w', 'z'] - - r = f + g - assert_equal ['x', 'y', 'w', 'z'], r - assert_equal FileList, r.class - - r = a + g - assert_equal ['a', 'b', 'w', 'z'], r - assert_equal Array, r.class - - r = f + b - assert_equal ['x', 'y', 'c', 'd'], r - assert_equal FileList, r.class - - r = FileList['w', 'x', 'y', 'z'] - f - assert_equal ['w', 'z'], r - assert_equal FileList, r.class - - r = FileList['w', 'x', 'y', 'z'] & f - assert_equal ['x', 'y'], r - assert_equal FileList, r.class - - r = f * 2 - assert_equal ['x', 'y', 'x', 'y'], r - assert_equal FileList, r.class - - r = f * ',' - assert_equal 'x,y', r - assert_equal String, r.class - - r = f | ['a', 'x'] - assert_equal ['a', 'x', 'y'].sort, r.sort - assert_equal FileList, r.class - end - - def test_other_array_returning_methods - f = FileList['a', nil, 'b'] - r = f.compact - assert_equal ['a', 'b'], r - assert_equal FileList, r.class - - f = FileList['a', 'b'] - r = f.concat(['x', 'y']) - assert_equal ['a', 'b', 'x', 'y'], r - assert_equal FileList, r.class - - f = FileList['a', ['b', 'c'], FileList['d', 'e']] - r = f.flatten - assert_equal ['a', 'b', 'c', 'd', 'e'], r - assert_equal FileList, r.class - - f = FileList['a', 'b', 'a'] - r = f.uniq - assert_equal ['a', 'b'], r - assert_equal FileList, r.class - - f = FileList['a', 'b', 'c', 'd'] - r = f.values_at(1,3) - assert_equal ['b', 'd'], r - assert_equal FileList, r.class - end - - def test_file_utils_can_use_filelists - cfiles = FileList['testdata/*.c'] - - cp cfiles, @cdir, :verbose => false - - assert File.exist?(File.join(@cdir, 'abc.c')) - assert File.exist?(File.join(@cdir, 'xyz.c')) - assert File.exist?(File.join(@cdir, 'x.c')) - end - - def create_test_data - verbose(false) do - - mkdir "testdata" unless File.exist? "testdata" - mkdir "testdata/CVS" rescue nil - mkdir "testdata/.svn" rescue nil - @cdir = "testdata/cfiles" - mkdir @cdir rescue nil - touch "testdata/.dummy" - touch "testdata/x.bak" - touch "testdata/x~" - touch "testdata/core" - touch "testdata/x.c" - touch "testdata/xyz.c" - touch "testdata/abc.c" - touch "testdata/abc.h" - touch "testdata/abc.x" - touch "testdata/existing" - end - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_fileutils.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_fileutils.rb deleted file mode 100644 index 20d96507..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_fileutils.rb +++ /dev/null @@ -1,251 +0,0 @@ -#!/usr/bin/env ruby - -require 'rake' -require 'test/unit' -require 'test/filecreation' -require 'fileutils' -require 'stringio' -require 'test/rake_test_setup' - -class TestFileUtils < Test::Unit::TestCase - include FileCreation - include TestMethods - - def setup - File.chmod(0750,"test/shellcommand.rb") - end - - def teardown - FileUtils.rm_rf("testdata") - FileUtils::LN_SUPPORTED[0] = true - end - - def test_rm_one_file - create_file("testdata/a") - FileUtils.rm_rf "testdata/a" - assert ! File.exist?("testdata/a") - end - - def test_rm_two_files - create_file("testdata/a") - create_file("testdata/b") - FileUtils.rm_rf ["testdata/a", "testdata/b"] - assert ! File.exist?("testdata/a") - assert ! File.exist?("testdata/b") - end - - def test_rm_filelist - list = Rake::FileList.new << "testdata/a" << "testdata/b" - list.each { |fn| create_file(fn) } - FileUtils.rm_r list - assert ! File.exist?("testdata/a") - assert ! File.exist?("testdata/b") - end - - def test_ln - create_dir("testdata") - open("testdata/a", "w") { |f| f.puts "TEST_LN" } - RakeFileUtils.safe_ln("testdata/a", "testdata/b", :verbose => false) - assert_equal "TEST_LN\n", open("testdata/b") { |f| f.read } - end - - class BadLink - include RakeFileUtils - attr_reader :cp_args - def initialize(klass) - @failure_class = klass - end - def cp(*args) - @cp_args = args - end - def ln(*args) - fail @failure_class, "ln not supported" - end - public :safe_ln - end - - def test_safe_ln_failover_to_cp_on_standard_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(StandardError) - c.safe_ln "a", "b" - assert_equal ['a', 'b'], c.cp_args - c.safe_ln "x", "y" - assert_equal ['x', 'y'], c.cp_args - end - - def test_safe_ln_failover_to_cp_on_not_implemented_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(NotImplementedError) - c.safe_ln "a", "b" - assert_equal ['a', 'b'], c.cp_args - end - - def test_safe_ln_fails_on_script_error - FileUtils::LN_SUPPORTED[0] = true - c = BadLink.new(ScriptError) - assert_exception(ScriptError) do c.safe_ln "a", "b" end - end - - def test_verbose - verbose true - assert_equal true, verbose - verbose false - assert_equal false, verbose - verbose(true) { - assert_equal true, verbose - } - assert_equal false, verbose - end - - def test_nowrite - nowrite true - assert_equal true, nowrite - nowrite false - assert_equal false, nowrite - nowrite(true){ - assert_equal true, nowrite - } - assert_equal false, nowrite - end - - def test_file_utils_methods_are_available_at_top_level - create_file("testdata/a") - rm_rf "testdata/a" - assert ! File.exist?("testdata/a") - end - - def test_fileutils_methods_dont_leak - obj = Object.new - assert_exception(NoMethodError) { obj.copy } # from FileUtils - assert_exception(NoMethodError) { obj.ruby } # from RubyFileUtils - end - - def test_sh - verbose(false) { sh %{ruby test/shellcommand.rb} } - assert true, "should not fail" - end - - # If the :sh method is invoked directly from a test unit instance - # (under mini/test), the mini/test version of fail is invoked rather - # than the kernel version of fail. So we run :sh from within a - # non-test class to avoid the problem. - class Sh - include FileUtils - def run(*args) - sh(*args) - end - def self.run(*args) - new.run(*args) - end - end - - def test_sh_with_a_single_string_argument - ENV['RAKE_TEST_SH'] = 'someval' - verbose(false) { - sh %{ruby test/check_expansion.rb #{env_var} someval} - } - end - - def test_sh_with_multiple_arguments - ENV['RAKE_TEST_SH'] = 'someval' - verbose(false) { - Sh.run 'ruby', 'test/check_no_expansion.rb', env_var, 'someval' - } - end - - def test_sh_failure - assert_exception(RuntimeError) { - verbose(false) { Sh.run %{ruby test/shellcommand.rb 1} } - } - end - - def test_sh_special_handling - count = 0 - verbose(false) { - sh(%{ruby test/shellcommand.rb}) do |ok, res| - assert(ok) - assert_equal 0, res.exitstatus - count += 1 - end - sh(%{ruby test/shellcommand.rb 1}) do |ok, res| - assert(!ok) - assert_equal 1, res.exitstatus - count += 1 - end - } - assert_equal 2, count, "Block count should be 2" - end - - def test_sh_noop - verbose(false) { sh %{test/shellcommand.rb 1}, :noop=>true } - assert true, "should not fail" - end - - def test_sh_bad_option - ex = assert_exception(ArgumentError) { - verbose(false) { sh %{test/shellcommand.rb}, :bad_option=>true } - } - assert_match(/bad_option/, ex.message) - end - - def test_sh_verbose - out = redirect_stderr { - verbose(true) { - sh %{test/shellcommand.rb}, :noop=>true - } - } - assert_match(/^test\/shellcommand\.rb$/, out) - end - - def test_sh_no_verbose - out = redirect_stderr { - verbose(false) { - sh %{test/shellcommand.rb}, :noop=>true - } - } - assert_equal '', out - end - - def test_ruby_with_a_single_string_argument - ENV['RAKE_TEST_SH'] = 'someval' - verbose(false) { - ruby %{test/check_expansion.rb #{env_var} someval} - } - end - - def test_ruby_with_multiple_arguments - ENV['RAKE_TEST_SH'] = 'someval' - verbose(false) { - ruby 'test/check_no_expansion.rb', env_var, 'someval' - } - end - - def test_split_all - assert_equal ['a'], RakeFileUtils.split_all('a') - assert_equal ['..'], RakeFileUtils.split_all('..') - assert_equal ['/'], RakeFileUtils.split_all('/') - assert_equal ['a', 'b'], RakeFileUtils.split_all('a/b') - assert_equal ['/', 'a', 'b'], RakeFileUtils.split_all('/a/b') - assert_equal ['..', 'a', 'b'], RakeFileUtils.split_all('../a/b') - end - - private - - def redirect_stderr - old_err = $stderr - $stderr = StringIO.new - yield - $stderr.string - ensure - $stderr = old_err - end - - def windows? - ! File::ALT_SEPARATOR.nil? - end - - def env_var - windows? ? '%RAKE_TEST_SH%' : '$RAKE_TEST_SH' - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_ftp.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_ftp.rb deleted file mode 100644 index 15765900..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_ftp.rb +++ /dev/null @@ -1,59 +0,0 @@ -#!/usr/bin/env ruby - -require 'date' -require 'time' -require 'test/unit' -require 'rake/contrib/ftptools' - -class FakeDate - def self.today - Date.new(2003,10,3) - end - def self.now - Time.local(2003,10,3,12,00,00) - end -end - - -class TestFtpFile < Test::Unit::TestCase - - def setup - Rake::FtpFile.class_eval { @date_class = FakeDate; @time_class = FakeDate } - end - - def test_general - file = Rake::FtpFile.new("here", "-rw-r--r-- 1 a279376 develop 121770 Mar 6 14:50 wiki.pl") - assert_equal "wiki.pl", file.name - assert_equal "here/wiki.pl", file.path - assert_equal "a279376", file.owner - assert_equal "develop", file.group - assert_equal 0644, file.mode - assert_equal 121770, file.size - assert_equal Time.mktime(2003,3,6,14,50,0,0), file.time - assert ! file.directory? - assert ! file.symlink? - end - - def test_far_date - file = Rake::FtpFile.new(".", "drwxr-xr-x 3 a279376 develop 4096 Nov 26 2001 vss") - assert_equal Time.mktime(2001,11,26,0,0,0,0), file.time - end - - def test_close_date - file = Rake::FtpFile.new(".", "drwxr-xr-x 3 a279376 develop 4096 Nov 26 15:35 vss") - assert_equal Time.mktime(2002,11,26,15,35,0,0), file.time - end - - def test_directory - file = Rake::FtpFile.new(".", "drwxrwxr-x 9 a279376 develop 4096 Mar 13 14:32 working") - assert file.directory? - assert !file.symlink? - end - - def test_symlink - file = Rake::FtpFile.new(".", "lrwxrwxrwx 1 a279376 develop 64 Mar 26 2002 xtrac -> /home/a279376/working/ics/development/java/com/fmr/fwp/ics/xtrac") - assert_equal 'xtrac', file.name - assert file.symlink? - assert !file.directory? - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_invocation_chain.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_invocation_chain.rb deleted file mode 100644 index 3d74e45c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_invocation_chain.rb +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' -require 'test/rake_test_setup' - -###################################################################### -class TestAnEmptyInvocationChain < Test::Unit::TestCase - include TestMethods - - def setup - @empty = Rake::InvocationChain::EMPTY - end - - def test_should_be_able_to_add_members - assert_nothing_raised do - @empty.append("A") - end - end - - def test_to_s - assert_equal "TOP", @empty.to_s - end -end - -###################################################################### -class TestAnInvocationChainWithOneMember < Test::Unit::TestCase - include TestMethods - - def setup - @empty = Rake::InvocationChain::EMPTY - @first_member = "A" - @chain = @empty.append(@first_member) - end - - def test_should_report_first_member_as_a_member - assert @chain.member?(@first_member) - end - - def test_should_fail_when_adding_original_member - ex = assert_exception RuntimeError do - @chain.append(@first_member) - end - assert_match(/circular +dependency/i, ex.message) - assert_match(/A.*=>.*A/, ex.message) - end - - def test_to_s - assert_equal "TOP => A", @chain.to_s - end - -end - -###################################################################### -class TestAnInvocationChainWithMultipleMember < Test::Unit::TestCase - include TestMethods - - def setup - @first_member = "A" - @second_member = "B" - ch = Rake::InvocationChain::EMPTY.append(@first_member) - @chain = ch.append(@second_member) - end - - def test_should_report_first_member_as_a_member - assert @chain.member?(@first_member) - end - - def test_should_report_second_member_as_a_member - assert @chain.member?(@second_member) - end - - def test_should_fail_when_adding_original_member - ex = assert_exception RuntimeError do - @chain.append(@first_member) - end - assert_match(/A.*=>.*B.*=>.*A/, ex.message) - end -end - - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_makefile_loader.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_makefile_loader.rb deleted file mode 100644 index ab07074f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_makefile_loader.rb +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' -require 'rake/loaders/makefile' - -class TestMakefileLoader < Test::Unit::TestCase - include Rake - - def test_parse - Task.clear - loader = Rake::MakefileLoader.new - loader.load("test/data/sample.mf") - %w(a b c d).each do |t| - assert Task.task_defined?(t), "#{t} should be a defined task" - end - assert_equal %w(a1 a2 a3 a4 a5 a6 a7).sort, Task['a'].prerequisites.sort - assert_equal %w(b1 b2 b3 b4 b5 b6 b7).sort, Task['b'].prerequisites.sort - assert_equal %w(c1).sort, Task['c'].prerequisites.sort - assert_equal %w(d1 d2).sort, Task['d'].prerequisites.sort - assert_equal %w(e1 f1).sort, Task['e'].prerequisites.sort - assert_equal %w(e1 f1).sort, Task['f'].prerequisites.sort - assert_equal ["g1", "g 2", "g 3", "g4"].sort, Task['g 0'].prerequisites.sort - assert_equal 7, Task.tasks.size - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_multitask.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_multitask.rb deleted file mode 100644 index ee9be773..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_multitask.rb +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' - -###################################################################### -class TestMultiTask < Test::Unit::TestCase - include Rake - - def setup - Task.clear - @runs = Array.new - end - - def test_running_multitasks - task :a do 3.times do |i| @runs << "A#{i}"; sleep 0.01; end end - task :b do 3.times do |i| @runs << "B#{i}"; sleep 0.01; end end - multitask :both => [:a, :b] - Task[:both].invoke - assert_equal 6, @runs.size - assert @runs.index("A0") < @runs.index("A1") - assert @runs.index("A1") < @runs.index("A2") - assert @runs.index("B0") < @runs.index("B1") - assert @runs.index("B1") < @runs.index("B2") - end - - def test_all_multitasks_wait_on_slow_prerequisites - task :slow do 3.times do |i| @runs << "S#{i}"; sleep 0.05 end end - task :a => [:slow] do 3.times do |i| @runs << "A#{i}"; sleep 0.01 end end - task :b => [:slow] do 3.times do |i| @runs << "B#{i}"; sleep 0.01 end end - multitask :both => [:a, :b] - Task[:both].invoke - assert_equal 9, @runs.size - assert @runs.index("S0") < @runs.index("S1") - assert @runs.index("S1") < @runs.index("S2") - assert @runs.index("S2") < @runs.index("A0") - assert @runs.index("S2") < @runs.index("B0") - assert @runs.index("A0") < @runs.index("A1") - assert @runs.index("A1") < @runs.index("A2") - assert @runs.index("B0") < @runs.index("B1") - assert @runs.index("B1") < @runs.index("B2") - end -end - - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_namespace.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_namespace.rb deleted file mode 100644 index 4b5a17fe..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_namespace.rb +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env ruby - -begin - require 'rubygems' -rescue LoadError - # got no gems -end - -require 'test/unit' -require 'flexmock/test_unit' -require 'rake' -require 'test/rake_test_setup' - -class TestNameSpace < Test::Unit::TestCase - include TestMethods - - class TM - include Rake::TaskManager - end - - def test_namespace_creation - mgr = TM.new - ns = Rake::NameSpace.new(mgr, []) - assert_not_nil ns - end - - def test_namespace_lookup - mgr = TM.new - ns = mgr.in_namespace("n") do - mgr.define_task(Rake::Task, "t") - end - - assert_not_nil ns["t"] - assert_equal mgr["n:t"], ns["t"] - end - - def test_namespace_reports_tasks_it_owns - mgr = TM.new - nns = nil - ns = mgr.in_namespace("n") do - mgr.define_task(Rake::Task, :x) - mgr.define_task(Rake::Task, :y) - nns = mgr.in_namespace("nn") do - mgr.define_task(Rake::Task, :z) - end - end - mgr.in_namespace("m") do - mgr.define_task(Rake::Task, :x) - end - - assert_equal ["n:nn:z", "n:x", "n:y"], - ns.tasks.map { |tsk| tsk.name } - assert_equal ["n:nn:z"], nns.tasks.map {|t| t.name} - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_package_task.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_package_task.rb deleted file mode 100644 index 62043e60..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_package_task.rb +++ /dev/null @@ -1,118 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake/packagetask' -require 'test/rake_test_setup' - -class TestPackageTask < Test::Unit::TestCase - include Rake - include TestMethods - - def test_create - pkg = Rake::PackageTask.new("pkgr", "1.2.3") { |p| - p.package_files << "install.rb" - p.package_files.include( - '[A-Z]*', - 'bin/**/*', - 'lib/**/*.rb', - 'test/**/*.rb', - 'doc/**/*', - 'build/rubyapp.rb', - '*.blurb') - p.package_files.exclude(/\bCVS\b/) - p.package_files.exclude(/~$/) - p.package_dir = 'pkg' - p.need_tar = true - p.need_tar_gz = true - p.need_tar_bz2 = true - p.need_zip = true - } - assert_equal "pkg", pkg.package_dir - assert pkg.package_files.include?("bin/rake") - assert "pkgr", pkg.name - assert "1.2.3", pkg.version - assert Task[:package] - assert Task['pkg/pkgr-1.2.3.tgz'] - assert Task['pkg/pkgr-1.2.3.tar.gz'] - assert Task['pkg/pkgr-1.2.3.tar.bz2'] - assert Task['pkg/pkgr-1.2.3.zip'] - assert Task["pkg/pkgr-1.2.3"] - assert Task[:clobber_package] - assert Task[:repackage] - end - - def test_missing_version - assert_exception(RuntimeError) { - pkg = Rake::PackageTask.new("pkgr") { |p| } - } - end - - def test_no_version - pkg = Rake::PackageTask.new("pkgr", :noversion) { |p| } - assert "pkgr", pkg.send(:package_name) - end - - def test_clone - pkg = Rake::PackageTask.new("x", :noversion) - p2 = pkg.clone - pkg.package_files << "y" - p2.package_files << "x" - assert_equal ["y"], pkg.package_files - assert_equal ["x"], p2.package_files - end -end - - -begin - require 'rubygems' - require 'rake/gempackagetask' -rescue Exception - puts "WARNING: RubyGems not installed" -end - -if ! defined?(Gem) - puts "WARNING: Unable to test GemPackaging ... requires RubyGems" -else - class TestGemPackageTask < Test::Unit::TestCase - def test_gem_package - gem = Gem::Specification.new do |g| - g.name = "pkgr" - g.version = "1.2.3" - g.files = FileList["x"].resolve - end - pkg = Rake::GemPackageTask.new(gem) do |p| - p.package_files << "y" - end - assert_equal ["x", "y"], pkg.package_files - assert_equal "pkgr-1.2.3.gem", pkg.gem_file - end - - def test_gem_package_with_current_platform - gem = Gem::Specification.new do |g| - g.name = "pkgr" - g.version = "1.2.3" - g.files = FileList["x"].resolve - g.platform = Gem::Platform::CURRENT - end - pkg = Rake::GemPackageTask.new(gem) do |p| - p.package_files << "y" - end - assert_equal ["x", "y"], pkg.package_files - assert_match(/^pkgr-1\.2\.3-(\S+)\.gem$/, pkg.gem_file) - end - - def test_gem_package_with_ruby_platform - gem = Gem::Specification.new do |g| - g.name = "pkgr" - g.version = "1.2.3" - g.files = FileList["x"].resolve - g.platform = Gem::Platform::RUBY - end - pkg = Rake::GemPackageTask.new(gem) do |p| - p.package_files << "y" - end - assert_equal ["x", "y"], pkg.package_files - assert_equal "pkgr-1.2.3.gem", pkg.gem_file - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_pathmap.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_pathmap.rb deleted file mode 100644 index 4ba1a681..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_pathmap.rb +++ /dev/null @@ -1,210 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' - -# ==================================================================== -class TestPathMap < Test::Unit::TestCase - include TestMethods - - def test_returns_self_with_no_args - assert_equal "abc.rb", "abc.rb".pathmap - end - - def test_s_returns_file_separator - sep = File::ALT_SEPARATOR || File::SEPARATOR - assert_equal sep, "abc.rb".pathmap("%s") - assert_equal sep, "".pathmap("%s") - assert_equal "a#{sep}b", "a/b".pathmap("%d%s%f") - end - - def test_f_returns_basename - assert_equal "abc.rb", "abc.rb".pathmap("%f") - assert_equal "abc.rb", "this/is/a/dir/abc.rb".pathmap("%f") - assert_equal "abc.rb", "/this/is/a/dir/abc.rb".pathmap("%f") - end - - def test_n_returns_basename_without_extension - assert_equal "abc", "abc.rb".pathmap("%n") - assert_equal "abc", "abc".pathmap("%n") - assert_equal "abc", "this/is/a/dir/abc.rb".pathmap("%n") - assert_equal "abc", "/this/is/a/dir/abc.rb".pathmap("%n") - assert_equal "abc", "/this/is/a/dir/abc".pathmap("%n") - end - - def test_d_returns_dirname - assert_equal ".", "abc.rb".pathmap("%d") - assert_equal "/", "/abc".pathmap("%d") - assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%d") - assert_equal "/this/is/a/dir", "/this/is/a/dir/abc.rb".pathmap("%d") - end - - def test_9d_returns_partial_dirname - assert_equal "this/is", "this/is/a/dir/abc.rb".pathmap("%2d") - assert_equal "this", "this/is/a/dir/abc.rb".pathmap("%1d") - assert_equal ".", "this/is/a/dir/abc.rb".pathmap("%0d") - assert_equal "dir", "this/is/a/dir/abc.rb".pathmap("%-1d") - assert_equal "a/dir", "this/is/a/dir/abc.rb".pathmap("%-2d") - assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%100d") - assert_equal "this/is/a/dir", "this/is/a/dir/abc.rb".pathmap("%-100d") - end - - def test_x_returns_extension - assert_equal "", "abc".pathmap("%x") - assert_equal ".rb", "abc.rb".pathmap("%x") - assert_equal ".rb", "abc.xyz.rb".pathmap("%x") - assert_equal "", ".depends".pathmap("%x") - assert_equal "", "dir/.depends".pathmap("%x") - end - - def test_X_returns_everything_but_extension - assert_equal "abc", "abc".pathmap("%X") - assert_equal "abc", "abc.rb".pathmap("%X") - assert_equal "abc.xyz", "abc.xyz.rb".pathmap("%X") - assert_equal "ab.xyz", "ab.xyz.rb".pathmap("%X") - assert_equal "a.xyz", "a.xyz.rb".pathmap("%X") - assert_equal "abc", "abc.rb".pathmap("%X") - assert_equal "ab", "ab.rb".pathmap("%X") - assert_equal "a", "a.rb".pathmap("%X") - assert_equal ".depends", ".depends".pathmap("%X") - assert_equal "a/dir/.depends", "a/dir/.depends".pathmap("%X") - assert_equal "/.depends", "/.depends".pathmap("%X") - end - - def test_p_returns_entire_pathname - assert_equal "abc.rb", "abc.rb".pathmap("%p") - assert_equal "this/is/a/dir/abc.rb", "this/is/a/dir/abc.rb".pathmap("%p") - assert_equal "/this/is/a/dir/abc.rb", "/this/is/a/dir/abc.rb".pathmap("%p") - end - - def test_dash_returns_empty_string - assert_equal "", "abc.rb".pathmap("%-") - assert_equal "abc.rb", "abc.rb".pathmap("%X%-%x") - end - - def test_percent_percent_returns_percent - assert_equal "a%b", "".pathmap("a%%b") - end - - def test_undefined_percent_causes_error - ex = assert_exception(ArgumentError) { - "dir/abc.rb".pathmap("%z") - } - end - - def test_pattern_returns_substitutions - assert_equal "bin/org/osb", - "src/org/osb/Xyz.java".pathmap("%{src,bin}d") - end - - def test_pattern_can_use_backreferences - assert_equal "dir/hi/is", "dir/this/is".pathmap("%{t(hi)s,\\1}p") - end - - def test_pattern_with_star_replacement_string_uses_block - assert_equal "src/ORG/osb", - "src/org/osb/Xyz.java".pathmap("%{/org,*}d") { |d| d.upcase } - assert_equal "Xyz.java", - "src/org/osb/Xyz.java".pathmap("%{.*,*}f") { |f| f.capitalize } - end - - def test_pattern_with_no_replacement_nor_block_substitutes_empty_string - assert_equal "bc.rb", "abc.rb".pathmap("%{a}f") - end - - def test_pattern_works_with_certain_valid_operators - assert_equal "dir/xbc.rb", "dir/abc.rb".pathmap("%{a,x}p") - assert_equal "d1r", "dir/abc.rb".pathmap("%{i,1}d") - assert_equal "xbc.rb", "dir/abc.rb".pathmap("%{a,x}f") - assert_equal ".Rb", "dir/abc.rb".pathmap("%{r,R}x") - assert_equal "xbc", "dir/abc.rb".pathmap("%{a,x}n") - end - - def test_multiple_patterns - assert_equal "this/is/b/directory/abc.rb", - "this/is/a/dir/abc.rb".pathmap("%{a,b;dir,\\0ectory}p") - end - - def test_partial_directory_selection_works_with_patterns - assert_equal "this/is/a/long", - "this/is/a/really/long/path/ok.rb".pathmap("%{/really/,/}5d") - end - - def test_pattern_with_invalid_operator - ex = assert_exception(ArgumentError) do - "abc.xyz".pathmap("%{src,bin}z") - end - assert_match(/unknown.*pathmap.*spec.*z/i, ex.message) - end - - def test_works_with_windows_separators - if File::ALT_SEPARATOR - assert_equal "abc", 'dir\abc.rb'.pathmap("%n") - assert_equal 'this\is\a\dir', - 'this\is\a\dir\abc.rb'.pathmap("%d") - end - end - - def test_complex_patterns - sep = "".pathmap("%s") - assert_equal "dir/abc.rb", "dir/abc.rb".pathmap("%d/%n%x") - assert_equal "./abc.rb", "abc.rb".pathmap("%d/%n%x") - assert_equal "Your file extension is '.rb'", - "dir/abc.rb".pathmap("Your file extension is '%x'") - assert_equal "bin/org/onstepback/proj/A.class", - "src/org/onstepback/proj/A.java".pathmap("%{src,bin}d/%n.class") - assert_equal "src_work/bin/org/onstepback/proj/A.class", - "src_work/src/org/onstepback/proj/A.java".pathmap('%{\bsrc\b,bin}X.class') - assert_equal ".depends.bak", ".depends".pathmap("%X.bak") - assert_equal "d#{sep}a/b/c#{sep}file.txt", "a/b/c/d/file.txt".pathmap("%-1d%s%3d%s%f") - end -end - -class TestPathMapExplode < Test::Unit::TestCase - def setup - String.class_eval { public :pathmap_explode } - end - - def teardown - String.class_eval { protected :pathmap_explode } - end - - def test_explode - assert_equal ['a'], 'a'.pathmap_explode - assert_equal ['a', 'b'], 'a/b'.pathmap_explode - assert_equal ['a', 'b', 'c'], 'a/b/c'.pathmap_explode - assert_equal ['/', 'a'], '/a'.pathmap_explode - assert_equal ['/', 'a', 'b'], '/a/b'.pathmap_explode - assert_equal ['/', 'a', 'b', 'c'], '/a/b/c'.pathmap_explode - if File::ALT_SEPARATOR - assert_equal ['c:.', 'a'], 'c:a'.pathmap_explode - assert_equal ['c:.', 'a', 'b'], 'c:a/b'.pathmap_explode - assert_equal ['c:.', 'a', 'b', 'c'], 'c:a/b/c'.pathmap_explode - assert_equal ['c:/', 'a'], 'c:/a'.pathmap_explode - assert_equal ['c:/', 'a', 'b'], 'c:/a/b'.pathmap_explode - assert_equal ['c:/', 'a', 'b', 'c'], 'c:/a/b/c'.pathmap_explode - end - end -end - -class TestPathMapPartial < Test::Unit::TestCase - def test_pathmap_partial - @path = "1/2/file" - def @path.call(n) - pathmap_partial(n) - end - assert_equal("1", @path.call(1)) - assert_equal("1/2", @path.call(2)) - assert_equal("1/2", @path.call(3)) - assert_equal(".", @path.call(0)) - assert_equal("2", @path.call(-1)) - assert_equal("1/2", @path.call(-2)) - assert_equal("1/2", @path.call(-3)) - end -end - -class TestFileListPathMap < Test::Unit::TestCase - def test_file_list_supports_pathmap - assert_equal ['a', 'b'], FileList['dir/a.rb', 'dir/b.rb'].pathmap("%n") - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_pseudo_status.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_pseudo_status.rb deleted file mode 100644 index b7d1dcc2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_pseudo_status.rb +++ /dev/null @@ -1,26 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' - -require 'test/capture_stdout' -require 'test/rake_test_setup' - -class PseudoStatusTest < Test::Unit::TestCase - def test_with_zero_exit_status - s = Rake::PseudoStatus.new - assert_equal 0, s.exitstatus - assert_equal 0, s.to_i - assert_equal 0, s >> 8 - assert ! s.stopped? - assert s.exited? - end - def test_with_99_exit_status - s = Rake::PseudoStatus.new(99) - assert_equal 99, s.exitstatus - assert_equal 25344, s.to_i - assert_equal 99, s >> 8 - assert ! s.stopped? - assert s.exited? - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_rake.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_rake.rb deleted file mode 100644 index c9959657..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_rake.rb +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' - -class TestRake < Test::Unit::TestCase - def test_each_dir_parent - assert_equal ['a'], alldirs('a') - assert_equal ['a/b', 'a'], alldirs('a/b') - assert_equal ['/a/b', '/a', '/'], alldirs('/a/b') - if File.dirname("c:/foo") == "c:" - # Under Unix - assert_equal ['c:/a/b', 'c:/a', 'c:'], alldirs('c:/a/b') - assert_equal ['c:a/b', 'c:a'], alldirs('c:a/b') - else - # Under Windows - assert_equal ['c:/a/b', 'c:/a', 'c:/'], alldirs('c:/a/b') - assert_equal ['c:a/b', 'c:a'], alldirs('c:a/b') - end - end - - def alldirs(fn) - result = [] - Rake.each_dir_parent(fn) { |d| result << d } - result - end - - def test_can_override_application - old_app = Rake.application - fake_app = Object.new - Rake.application = fake_app - assert_equal fake_app, Rake.application - ensure - Rake.application = old_app - end - - def test_original_dir_reports_current_dir - assert_equal Dir.pwd, Rake.original_dir - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_rdoc_task.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_rdoc_task.rb deleted file mode 100644 index d1a55ed8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_rdoc_task.rb +++ /dev/null @@ -1,88 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake/rdoctask' -require 'test/rake_test_setup' - -class TestRDocTask < Test::Unit::TestCase - include Rake - include TestMethods - - def setup - Task.clear - end - - def test_tasks_creation - Rake::RDocTask.new - assert Task[:rdoc] - assert Task[:clobber_rdoc] - assert Task[:rerdoc] - end - - def test_tasks_creation_with_custom_name_symbol - rd = Rake::RDocTask.new(:rdoc_dev) - assert Task[:rdoc_dev] - assert Task[:clobber_rdoc_dev] - assert Task[:rerdoc_dev] - assert_equal :rdoc_dev, rd.name - end - - def test_tasks_creation_with_custom_name_string - rd = Rake::RDocTask.new("rdoc_dev") - assert Task[:rdoc_dev] - assert Task[:clobber_rdoc_dev] - assert Task[:rerdoc_dev] - assert_equal "rdoc_dev", rd.name - end - - def test_tasks_creation_with_custom_name_hash - options = { :rdoc => "rdoc", :clobber_rdoc => "rdoc:clean", :rerdoc => "rdoc:force" } - rd = Rake::RDocTask.new(options) - assert Task[:"rdoc"] - assert Task[:"rdoc:clean"] - assert Task[:"rdoc:force"] - assert_raises(RuntimeError) { Task[:clobber_rdoc] } - assert_equal options, rd.name - end - - def test_tasks_creation_with_custom_name_hash_will_use_default_if_an_option_isnt_given - rd = Rake::RDocTask.new(:clobber_rdoc => "rdoc:clean") - assert Task[:rdoc] - assert Task[:"rdoc:clean"] - assert Task[:rerdoc] - end - - def test_tasks_creation_with_custom_name_hash_raises_exception_if_invalid_option_given - assert_raises(ArgumentError) do - Rake::RDocTask.new(:foo => "bar") - end - - begin - Rake::RDocTask.new(:foo => "bar") - rescue ArgumentError => e - assert_match(/foo/, e.message) - end - end - - def test_inline_source_is_enabled_by_default - rd = Rake::RDocTask.new - assert rd.option_list.include?('--inline-source') - end - - def test_inline_source_option_is_only_appended_if_option_not_already_given - rd = Rake::RDocTask.new - rd.options << '--inline-source' - assert_equal 1, rd.option_list.grep('--inline-source').size - - rd = Rake::RDocTask.new - rd.options << '-S' - assert_equal 1, rd.option_list.grep('-S').size - assert_equal 0, rd.option_list.grep('--inline-source').size - end - - def test_inline_source_option_can_be_disabled - rd = Rake::RDocTask.new - rd.inline_source = false - assert !rd.option_list.include?('--inline-source') - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_require.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_require.rb deleted file mode 100644 index 6c2158f8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_require.rb +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' -require 'test/rake_test_setup' - -# ==================================================================== -class TestRequire < Test::Unit::TestCase - include TestMethods - - def test_can_load_rake_library - app = Rake::Application.new - assert app.instance_eval { - rake_require("test2", ['test/data/rakelib'], []) - } - end - - def test_wont_reload_rake_library - app = Rake::Application.new - assert ! app.instance_eval { - rake_require("test2", ['test/data/rakelib'], ['test2']) - } - end - - def test_throws_error_if_library_not_found - app = Rake::Application.new - ex = assert_exception(LoadError) { - assert app.instance_eval { - rake_require("testx", ['test/data/rakelib'], []) - } - } - assert_match(/x/, ex.message) - end -end - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_rules.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_rules.rb deleted file mode 100644 index d2210aa9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_rules.rb +++ /dev/null @@ -1,349 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'fileutils' -require 'rake' -require 'test/filecreation' -require 'test/rake_test_setup' - -###################################################################### -class TestRules < Test::Unit::TestCase - include Rake - include FileCreation - include TestMethods - - SRCFILE = "testdata/abc.c" - SRCFILE2 = "testdata/xyz.c" - FTNFILE = "testdata/abc.f" - OBJFILE = "testdata/abc.o" - FOOFILE = "testdata/foo" - DOTFOOFILE = "testdata/.foo" - - def setup - Task.clear - @runs = [] - end - - def teardown - FileList['testdata/*'].uniq.each do |f| rm_r(f, :verbose=>false) end - end - - def test_multiple_rules1 - create_file(FTNFILE) - delete_file(SRCFILE) - delete_file(OBJFILE) - rule(/\.o$/ => ['.c']) do @runs << :C end - rule(/\.o$/ => ['.f']) do @runs << :F end - t = Task[OBJFILE] - t.invoke - Task[OBJFILE].invoke - assert_equal [:F], @runs - end - - def test_multiple_rules2 - create_file(FTNFILE) - delete_file(SRCFILE) - delete_file(OBJFILE) - rule(/\.o$/ => ['.f']) do @runs << :F end - rule(/\.o$/ => ['.c']) do @runs << :C end - Task[OBJFILE].invoke - assert_equal [:F], @runs - end - - def test_create_with_source - create_file(SRCFILE) - rule(/\.o$/ => ['.c']) do |t| - @runs << t.name - assert_equal OBJFILE, t.name - assert_equal SRCFILE, t.source - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_single_dependent - create_file(SRCFILE) - rule(/\.o$/ => '.c') do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_rule_can_be_created_by_string - create_file(SRCFILE) - rule '.o' => ['.c'] do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_rule_prereqs_can_be_created_by_string - create_file(SRCFILE) - rule '.o' => '.c' do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_plain_strings_as_dependents_refer_to_files - create_file(SRCFILE) - rule '.o' => SRCFILE do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - - def test_file_names_beginning_with_dot_can_be_tricked_into_refering_to_file - verbose(false) do - chdir("testdata") do - create_file('.foo') - rule '.o' => "./.foo" do |t| - @runs << t.name - end - Task[OBJFILE].invoke - assert_equal [OBJFILE], @runs - end - end - end - - def test_file_names_beginning_with_dot_can_be_wrapped_in_lambda - verbose(false) do - chdir("testdata") do - create_file(".foo") - rule '.o' => lambda{".foo"} do |t| - @runs << "#{t.name} - #{t.source}" - end - Task[OBJFILE].invoke - assert_equal ["#{OBJFILE} - .foo"], @runs - end - end - end - - def test_file_names_containing_percent_can_be_wrapped_in_lambda - verbose(false) do - chdir("testdata") do - create_file("foo%x") - rule '.o' => lambda{"foo%x"} do |t| - @runs << "#{t.name} - #{t.source}" - end - Task[OBJFILE].invoke - assert_equal ["#{OBJFILE} - foo%x"], @runs - end - end - end - - def test_non_extension_rule_name_refers_to_file - verbose(false) do - chdir("testdata") do - create_file("abc.c") - rule "abc" => '.c' do |t| - @runs << t.name - end - Task["abc"].invoke - assert_equal ["abc"], @runs - end - end - end - - def test_pathmap_automatically_applies_to_name - verbose(false) do - chdir("testdata") do - create_file("zzabc.c") - rule ".o" => 'zz%{x,a}n.c' do |t| - @runs << "#{t.name} - #{t.source}" - end - Task["xbc.o"].invoke - assert_equal ["xbc.o - zzabc.c"], @runs - end - end - end - - def test_plain_strings_are_just_filenames - verbose(false) do - chdir("testdata") do - create_file("plainname") - rule ".o" => 'plainname' do |t| - @runs << "#{t.name} - #{t.source}" - end - Task["xbc.o"].invoke - assert_equal ["xbc.o - plainname"], @runs - end - end - end - - def test_rule_runs_when_explicit_task_has_no_actions - create_file(SRCFILE) - create_file(SRCFILE2) - delete_file(OBJFILE) - rule '.o' => '.c' do |t| - @runs << t.source - end - file OBJFILE => [SRCFILE2] - Task[OBJFILE].invoke - assert_equal [SRCFILE], @runs - end - - def test_close_matches_on_name_do_not_trigger_rule - create_file("testdata/x.c") - rule '.o' => ['.c'] do |t| - @runs << t.name - end - assert_exception(RuntimeError) { Task['testdata/x.obj'].invoke } - assert_exception(RuntimeError) { Task['testdata/x.xyo'].invoke } - end - - def test_rule_rebuilds_obj_when_source_is_newer - create_timed_files(OBJFILE, SRCFILE) - rule(/\.o$/ => ['.c']) do - @runs << :RULE - end - Task[OBJFILE].invoke - assert_equal [:RULE], @runs - end - - def test_rule_with_two_sources_runs_if_both_sources_are_present - create_timed_files(OBJFILE, SRCFILE, SRCFILE2) - rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do - @runs << :RULE - end - Task[OBJFILE].invoke - assert_equal [:RULE], @runs - end - - def test_rule_with_two_sources_but_one_missing_does_not_run - create_timed_files(OBJFILE, SRCFILE) - delete_file(SRCFILE2) - rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do - @runs << :RULE - end - Task[OBJFILE].invoke - assert_equal [], @runs - end - - def test_rule_with_two_sources_builds_both_sources - task 'x.aa' - task 'x.bb' - rule '.a' => '.aa' do - @runs << "A" - end - rule '.b' => '.bb' do - @runs << "B" - end - rule ".c" => ['.a', '.b'] do - @runs << "C" - end - Task["x.c"].invoke - assert_equal ["A", "B", "C"], @runs.sort - end - - def test_second_rule_runs_when_first_rule_doesnt - create_timed_files(OBJFILE, SRCFILE) - delete_file(SRCFILE2) - rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do - @runs << :RULE1 - end - rule OBJFILE => [lambda{SRCFILE}] do - @runs << :RULE2 - end - Task[OBJFILE].invoke - assert_equal [:RULE2], @runs - end - - def test_second_rule_doest_run_if_first_triggers - create_timed_files(OBJFILE, SRCFILE, SRCFILE2) - rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do - @runs << :RULE1 - end - rule OBJFILE => [lambda{SRCFILE}] do - @runs << :RULE2 - end - Task[OBJFILE].invoke - assert_equal [:RULE1], @runs - end - - def test_second_rule_doest_run_if_first_triggers_with_reversed_rules - create_timed_files(OBJFILE, SRCFILE, SRCFILE2) - rule OBJFILE => [lambda{SRCFILE}] do - @runs << :RULE1 - end - rule OBJFILE => [lambda{SRCFILE}, lambda{SRCFILE2}] do - @runs << :RULE2 - end - Task[OBJFILE].invoke - assert_equal [:RULE1], @runs - end - - def test_rule_with_proc_dependent_will_trigger - ran = false - mkdir_p("testdata/src/jw") - create_file("testdata/src/jw/X.java") - rule %r(classes/.*\.class) => [ - proc { |fn| fn.pathmap("%{classes,testdata/src}d/%n.java") } - ] do |task| - assert_equal task.name, 'classes/jw/X.class' - assert_equal task.source, 'testdata/src/jw/X.java' - @runs << :RULE - end - Task['classes/jw/X.class'].invoke - assert_equal [:RULE], @runs - ensure - rm_r("testdata/src", :verbose=>false) rescue nil - end - - def test_proc_returning_lists_are_flattened_into_prereqs - ran = false - mkdir_p("testdata/flatten") - create_file("testdata/flatten/a.txt") - task 'testdata/flatten/b.data' do |t| - ran = true - touch t.name, :verbose => false - end - rule '.html' => - proc { |fn| - [ - fn.ext("txt"), - "testdata/flatten/b.data" - ] - } do |task| - end - Task['testdata/flatten/a.html'].invoke - assert ran, "Should have triggered flattened dependency" - ensure - rm_r("testdata/flatten", :verbose=>false) rescue nil - end - - def test_recursive_rules_will_work_as_long_as_they_terminate - actions = [] - create_file("testdata/abc.xml") - rule '.y' => '.xml' do actions << 'y' end - rule '.c' => '.y' do actions << 'c'end - rule '.o' => '.c' do actions << 'o'end - rule '.exe' => '.o' do actions << 'exe'end - Task["testdata/abc.exe"].invoke - assert_equal ['y', 'c', 'o', 'exe'], actions - end - - def test_recursive_rules_that_dont_terminate_will_overflow - create_file("testdata/a.a") - prev = 'a' - ('b'..'z').each do |letter| - rule ".#{letter}" => ".#{prev}" do |t| puts "#{t.name}" end - prev = letter - end - ex = assert_exception(Rake::RuleRecursionOverflowError) { - Task["testdata/a.z"].invoke - } - assert_match(/a\.z => testdata\/a.y/, ex.message) - end - - def test_rules_with_bad_dependents_will_fail - rule "a" => [ 1 ] do |t| puts t.name end - assert_exception(RuntimeError) do Task['a'].invoke end - end - -end - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_task_arguments.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_task_arguments.rb deleted file mode 100644 index 520a16fc..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_task_arguments.rb +++ /dev/null @@ -1,89 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' - -###################################################################### -class TestTaskArguments < Test::Unit::TestCase - def teardown - ENV.delete('rev') - ENV.delete('VER') - end - - def test_empty_arg_list_is_empty - ta = Rake::TaskArguments.new([], []) - assert_equal({}, ta.to_hash) - end - - def test_multiple_values_in_args - ta = Rake::TaskArguments.new([:a, :b, :c], [:one, :two, :three]) - assert_equal({:a => :one, :b => :two, :c => :three}, ta.to_hash) - end - - def test_to_s - ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2, 3]) - assert_equal ta.to_hash.inspect, ta.to_s - assert_equal ta.to_hash.inspect, ta.inspect - end - - def test_enumerable_behavior - ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2 ,3]) - assert_equal [10, 20, 30], ta.collect { |k,v| v * 10 }.sort - end - - def test_named_args - ta = Rake::TaskArguments.new(["aa", "bb"], [1, 2]) - assert_equal 1, ta.aa - assert_equal 1, ta[:aa] - assert_equal 1, ta["aa"] - assert_equal 2, ta.bb - assert_nil ta.cc - end - - def test_args_knows_its_names - ta = Rake::TaskArguments.new(["aa", "bb"], [1, 2]) - assert_equal ["aa", "bb"], ta.names - end - - def test_extra_names_are_nil - ta = Rake::TaskArguments.new(["aa", "bb", "cc"], [1, 2]) - assert_nil ta.cc - end - - def test_args_can_reference_env_values - ta = Rake::TaskArguments.new(["aa"], [1]) - ENV['rev'] = "1.2" - ENV['VER'] = "2.3" - assert_equal "1.2", ta.rev - assert_equal "2.3", ta.ver - end - - def test_creating_new_argument_scopes - parent = Rake::TaskArguments.new(['p'], [1]) - child = parent.new_scope(['c', 'p']) - assert_equal({:p=>1}, child.to_hash) - assert_equal 1, child.p - assert_equal 1, child["p"] - assert_equal 1, child[:p] - assert_nil child.c - end - - def test_child_hides_parent_arg_names - parent = Rake::TaskArguments.new(['aa'], [1]) - child = Rake::TaskArguments.new(['aa'], [2], parent) - assert_equal 2, child.aa - end - - def test_default_arguments_values_can_be_merged - ta = Rake::TaskArguments.new(["aa", "bb"], [nil, "original_val"]) - ta.with_defaults({ :aa => 'default_val' }) - assert_equal 'default_val', ta[:aa] - assert_equal 'original_val', ta[:bb] - end - - def test_default_arguements_that_dont_match_names_are_ignored - ta = Rake::TaskArguments.new(["aa", "bb"], [nil, "original_val"]) - ta.with_defaults({ "cc" => "default_val" }) - assert_nil ta[:cc] - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_task_manager.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_task_manager.rb deleted file mode 100644 index 2b373162..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_task_manager.rb +++ /dev/null @@ -1,173 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake' -require 'test/rake_test_setup' - -class TaskManager - include Rake::TaskManager -end - -class TestTaskManager < Test::Unit::TestCase - include TestMethods - - def setup - @tm = TaskManager.new - end - - def test_create_task_manager - assert_not_nil @tm - assert_equal [], @tm.tasks - end - - def test_define_task - t = @tm.define_task(Rake::Task, :t) - assert_equal "t", t.name - assert_equal @tm, t.application - end - - def test_name_lookup - t = @tm.define_task(Rake::Task, :t) - assert_equal t, @tm[:t] - end - - def test_namespace_task_create - @tm.in_namespace("x") do - t = @tm.define_task(Rake::Task, :t) - assert_equal "x:t", t.name - end - assert_equal ["x:t"], @tm.tasks.collect { |t| t.name } - end - - def test_anonymous_namespace - anon_ns = @tm.in_namespace(nil) do - t = @tm.define_task(Rake::Task, :t) - assert_equal "_anon_1:t", t.name - end - task = anon_ns[:t] - assert_equal "_anon_1:t", task.name - end - - def test_create_filetask_in_namespace - @tm.in_namespace("x") do - t = @tm.define_task(Rake::FileTask, "fn") - assert_equal "fn", t.name - end - assert_equal ["fn"], @tm.tasks.collect { |t| t.name } - end - - def test_namespace_yields_same_namespace_as_returned - yielded_namespace = nil - returned_namespace = @tm.in_namespace("x") do |ns| - yielded_namespace = ns - end - assert_equal returned_namespace, yielded_namespace - end - - def test_name_lookup_with_implicit_file_tasks - t = @tm["README"] - assert_equal "README", t.name - assert Rake::FileTask === t - end - - def test_name_lookup_with_nonexistent_task - assert_exception(RuntimeError) { - t = @tm["DOES NOT EXIST"] - } - end - - def test_name_lookup_in_multiple_scopes - aa = nil - bb = nil - xx = @tm.define_task(Rake::Task, :xx) - top_z = @tm.define_task(Rake::Task, :z) - @tm.in_namespace("a") do - aa = @tm.define_task(Rake::Task, :aa) - mid_z = @tm.define_task(Rake::Task, :z) - @tm.in_namespace("b") do - bb = @tm.define_task(Rake::Task, :bb) - bot_z = @tm.define_task(Rake::Task, :z) - - assert_equal ["a", "b"], @tm.current_scope - - assert_equal bb, @tm["a:b:bb"] - assert_equal aa, @tm["a:aa"] - assert_equal xx, @tm["xx"] - assert_equal bot_z, @tm["z"] - assert_equal mid_z, @tm["^z"] - assert_equal top_z, @tm["^^z"] - assert_equal top_z, @tm["rake:z"] - end - - assert_equal ["a"], @tm.current_scope - - assert_equal bb, @tm["a:b:bb"] - assert_equal aa, @tm["a:aa"] - assert_equal xx, @tm["xx"] - assert_equal bb, @tm["b:bb"] - assert_equal aa, @tm["aa"] - assert_equal mid_z, @tm["z"] - assert_equal top_z, @tm["^z"] - assert_equal top_z, @tm["rake:z"] - end - - assert_equal [], @tm.current_scope - - assert_equal [], xx.scope - assert_equal ['a'], aa.scope - assert_equal ['a', 'b'], bb.scope - end - - def test_lookup_with_explicit_scopes - t1, t2, t3, s = (0...4).collect { nil } - t1 = @tm.define_task(Rake::Task, :t) - @tm.in_namespace("a") do - t2 = @tm.define_task(Rake::Task, :t) - s = @tm.define_task(Rake::Task, :s) - @tm.in_namespace("b") do - t3 = @tm.define_task(Rake::Task, :t) - end - end - assert_equal t1, @tm[:t, []] - assert_equal t2, @tm[:t, ["a"]] - assert_equal t3, @tm[:t, ["a", "b"]] - assert_equal s, @tm[:s, ["a", "b"]] - assert_equal s, @tm[:s, ["a"]] - end - - def test_correctly_scoped_prerequisites_are_invoked - values = [] - @tm = Rake::Application.new - @tm.define_task(Rake::Task, :z) do values << "top z" end - @tm.in_namespace("a") do - @tm.define_task(Rake::Task, :z) do values << "next z" end - @tm.define_task(Rake::Task, :x => :z) - end - - @tm["a:x"].invoke - assert_equal ["next z"], values - end - -end - -class TestTaskManagerArgumentResolution < Test::Unit::TestCase - def test_good_arg_patterns - assert_equal [:t, [], []], task(:t) - assert_equal [:t, [], [:x]], task(:t => :x) - assert_equal [:t, [], [:x, :y]], task(:t => [:x, :y]) - - assert_equal [:t, [:a, :b], []], task(:t, :a, :b) - assert_equal [:t, [], [:x]], task(:t, :needs => :x) - assert_equal [:t, [:a, :b], [:x]], task(:t, :a, :b, :needs => :x) - assert_equal [:t, [:a, :b], [:x, :y]], task(:t, :a, :b, :needs => [:x, :y]) - - assert_equal [:t, [:a, :b], []], task(:t, [:a, :b]) - assert_equal [:t, [:a, :b], [:x]], task(:t, [:a, :b] => :x) - assert_equal [:t, [:a, :b], [:x, :y]], task(:t, [:a, :b] => [:x, :y]) - end - - def task(*args) - tm = TaskManager.new - tm.resolve_args(args) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_tasklib.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_tasklib.rb deleted file mode 100644 index c61fa1c2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_tasklib.rb +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake/tasklib' - - -class TestTaskLib < Test::Unit::TestCase - def test_paste - tl = Rake::TaskLib.new - assert_equal :ab, tl.paste(:a, :b) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_tasks.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_tasks.rb deleted file mode 100644 index 8b424c5e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_tasks.rb +++ /dev/null @@ -1,374 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'fileutils' -require 'rake' -require 'test/filecreation' -require 'test/capture_stdout' -require 'test/rake_test_setup' - -###################################################################### -class TestTask < Test::Unit::TestCase - include CaptureStdout - include Rake - include TestMethods - - def setup - Task.clear - end - - def test_create - arg = nil - t = task(:name) { |task| arg = task; 1234 } - assert_equal "name", t.name - assert_equal [], t.prerequisites - assert t.needed? - t.execute(0) - assert_equal t, arg - assert_nil t.source - assert_equal [], t.sources - end - - def test_inspect - t = task(:foo, :needs => [:bar, :baz]) - assert_equal " [bar, baz]>", t.inspect - end - - def test_invoke - runlist = [] - t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } - t2 = task(:t2) { |t| runlist << t.name } - t3 = task(:t3) { |t| runlist << t.name } - assert_equal ["t2", "t3"], t1.prerequisites - t1.invoke - assert_equal ["t2", "t3", "t1"], runlist - end - - def test_invoke_with_circular_dependencies - runlist = [] - t1 = task(:t1 => [:t2]) { |t| runlist << t.name; 3321 } - t2 = task(:t2 => [:t1]) { |t| runlist << t.name } - assert_equal ["t2"], t1.prerequisites - assert_equal ["t1"], t2.prerequisites - ex = assert_exception RuntimeError do - t1.invoke - end - assert_match(/circular dependency/i, ex.message) - assert_match(/t1 => t2 => t1/, ex.message) - end - - def test_dry_run_prevents_actions - Rake.application.options.dryrun = true - runlist = [] - t1 = task(:t1) { |t| runlist << t.name; 3321 } - out = capture_stdout { t1.invoke } - assert_match(/execute .*t1/i, out) - assert_match(/dry run/i, out) - assert_no_match(/invoke/i, out) - assert_equal [], runlist - ensure - Rake.application.options.dryrun = false - end - - def test_tasks_can_be_traced - Rake.application.options.trace = true - t1 = task(:t1) - out = capture_stdout { - t1.invoke - } - assert_match(/invoke t1/i, out) - assert_match(/execute t1/i, out) - ensure - Rake.application.options.trace = false - end - - def test_no_double_invoke - runlist = [] - t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } - t2 = task(:t2 => [:t3]) { |t| runlist << t.name } - t3 = task(:t3) { |t| runlist << t.name } - t1.invoke - assert_equal ["t3", "t2", "t1"], runlist - end - - def test_can_double_invoke_with_reenable - runlist = [] - t1 = task(:t1) { |t| runlist << t.name } - t1.invoke - t1.reenable - t1.invoke - assert_equal ["t1", "t1"], runlist - end - - def test_clear - t = task("t" => "a") { } - t.clear - assert t.prerequisites.empty?, "prerequisites should be empty" - assert t.actions.empty?, "actions should be empty" - end - - def test_clear_prerequisites - t = task("t" => ["a", "b"]) - assert_equal ['a', 'b'], t.prerequisites - t.clear_prerequisites - assert_equal [], t.prerequisites - end - - def test_clear_actions - t = task("t") { } - t.clear_actions - assert t.actions.empty?, "actions should be empty" - end - - def test_find - task :tfind - assert_equal "tfind", Task[:tfind].name - ex = assert_exception(RuntimeError) { Task[:leaves] } - assert_equal "Don't know how to build task 'leaves'", ex.message - end - - def test_defined - assert ! Task.task_defined?(:a) - task :a - assert Task.task_defined?(:a) - end - - def test_multi_invocations - runs = [] - p = proc do |t| runs << t.name end - task({:t1=>[:t2,:t3]}, &p) - task({:t2=>[:t3]}, &p) - task(:t3, &p) - Task[:t1].invoke - assert_equal ["t1", "t2", "t3"], runs.sort - end - - def test_task_list - task :t2 - task :t1 => [:t2] - assert_equal ["t1", "t2"], Task.tasks.collect {|t| t.name} - end - - def test_task_gives_name_on_to_s - task :abc - assert_equal "abc", Task[:abc].to_s - end - - def test_symbols_can_be_prerequisites - task :a => :b - assert_equal ["b"], Task[:a].prerequisites - end - - def test_strings_can_be_prerequisites - task :a => "b" - assert_equal ["b"], Task[:a].prerequisites - end - - def test_arrays_can_be_prerequisites - task :a => ["b", "c"] - assert_equal ["b", "c"], Task[:a].prerequisites - end - - def test_filelists_can_be_prerequisites - task :a => FileList.new.include("b", "c") - assert_equal ["b", "c"], Task[:a].prerequisites - end - - def test_investigation_output - t1 = task(:t1 => [:t2, :t3]) { |t| runlist << t.name; 3321 } - task(:t2) - task(:t3) - out = t1.investigation - assert_match(/class:\s*Rake::Task/, out) - assert_match(/needed:\s*true/, out) - assert_match(/pre-requisites:\s*--t[23]/, out) - end - - - def test_extended_comments - desc %{ - This is a comment. - - And this is the extended comment. - name -- Name of task to execute. - rev -- Software revision to use. - } - t = task(:t, :name, :rev) - assert_equal "[name,rev]", t.arg_description - assert_equal "This is a comment.", t.comment - assert_match(/^\s*name -- Name/, t.full_comment) - assert_match(/^\s*rev -- Software/, t.full_comment) - assert_match(/\A\s*This is a comment\.$/, t.full_comment) - end - - def test_multiple_comments - desc "line one" - t = task(:t) - desc "line two" - task(:t) - assert_equal "line one / line two", t.comment - end - - def test_settable_comments - t = task(:t) - t.comment = "HI" - assert_equal "HI", t.comment - end -end - -###################################################################### -class TestTaskWithArguments < Test::Unit::TestCase - include CaptureStdout - include Rake - include TestMethods - - def setup - Task.clear - end - - def test_no_args_given - t = task :t - assert_equal [], t.arg_names - end - - def test_args_given - t = task :t, :a, :b - assert_equal [:a, :b], t.arg_names - end - - def test_name_and_needs - t = task(:t => [:pre]) - assert_equal "t", t.name - assert_equal [], t.arg_names - assert_equal ["pre"], t.prerequisites - end - - def test_name_and_explicit_needs - t = task(:t, :needs => [:pre]) - assert_equal "t", t.name - assert_equal [], t.arg_names - assert_equal ["pre"], t.prerequisites - end - - def test_name_args_and_explicit_needs - t = task(:t, :x, :y, :needs => [:pre]) - assert_equal "t", t.name - assert_equal [:x, :y], t.arg_names - assert_equal ["pre"], t.prerequisites - end - - def test_illegal_keys_in_task_name_hash - assert_exception RuntimeError do - t = task(:t, :x, :y => 1, :needs => [:pre]) - end - end - - def test_arg_list_is_empty_if_no_args_given - t = task(:t) { |tt, args| assert_equal({}, args.to_hash) } - t.invoke(1, 2, 3) - end - - def test_tasks_can_access_arguments_as_hash - t = task :t, :a, :b, :c do |tt, args| - assert_equal({:a => 1, :b => 2, :c => 3}, args.to_hash) - assert_equal 1, args[:a] - assert_equal 2, args[:b] - assert_equal 3, args[:c] - assert_equal 1, args.a - assert_equal 2, args.b - assert_equal 3, args.c - end - t.invoke(1, 2, 3) - end - - def test_actions_of_various_arity_are_ok_with_args - notes = [] - t = task(:t, :x) do - notes << :a - end - t.enhance do | | - notes << :b - end - t.enhance do |task| - notes << :c - assert_kind_of Task, task - end - t.enhance do |t2, args| - notes << :d - assert_equal t, t2 - assert_equal({:x => 1}, args.to_hash) - end - assert_nothing_raised do t.invoke(1) end - assert_equal [:a, :b, :c, :d], notes - end - - def test_arguments_are_passed_to_block - t = task(:t, :a, :b) { |tt, args| - assert_equal( { :a => 1, :b => 2 }, args.to_hash ) - } - t.invoke(1, 2) - end - - def test_extra_parameters_are_ignored - t = task(:t, :a) { |tt, args| - assert_equal 1, args.a - assert_nil args.b - } - t.invoke(1, 2) - end - - def test_arguments_are_passed_to_all_blocks - counter = 0 - t = task :t, :a - task :t do |tt, args| - assert_equal 1, args.a - counter += 1 - end - task :t do |tt, args| - assert_equal 1, args.a - counter += 1 - end - t.invoke(1) - assert_equal 2, counter - end - - def test_block_with_no_parameters_is_ok - t = task(:t) { } - t.invoke(1, 2) - end - - def test_name_with_args - desc "T" - t = task(:tt, :a, :b) - assert_equal "tt", t.name - assert_equal "T", t.comment - assert_equal "[a,b]", t.arg_description - assert_equal "tt[a,b]", t.name_with_args - assert_equal [:a, :b],t.arg_names - end - - def test_named_args_are_passed_to_prereqs - value = nil - pre = task(:pre, :rev) { |t, args| value = args.rev } - t = task(:t, :name, :rev, :needs => [:pre]) - t.invoke("bill", "1.2") - assert_equal "1.2", value - end - - def test_args_not_passed_if_no_prereq_names - pre = task(:pre) { |t, args| - assert_equal({}, args.to_hash) - assert_equal "bill", args.name - } - t = task(:t, :name, :rev, :needs => [:pre]) - t.invoke("bill", "1.2") - end - - def test_args_not_passed_if_no_arg_names - pre = task(:pre, :rev) { |t, args| - assert_equal({}, args.to_hash) - } - t = task(:t, :needs => [:pre]) - t.invoke("bill", "1.2") - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_test_task.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_test_task.rb deleted file mode 100644 index a8d7d4d5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_test_task.rb +++ /dev/null @@ -1,77 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'rake/testtask' - -class TestTestTask < Test::Unit::TestCase - include Rake - include TestMethods - - def setup - Task.clear - ENV.delete('TEST') - end - - def teardown - FileUtils.rm_rf("testdata") - end - - def test_no_task - assert ! Task.task_defined?(:test) - end - - def test_defaults - tt = Rake::TestTask.new do |t| end - assert_not_nil tt - assert_equal :test, tt.name - assert_equal ['lib'], tt.libs - assert_equal 'test/test*.rb', tt.pattern - assert_equal false, tt.verbose - assert Task.task_defined?(:test) - end - - def test_non_defaults - tt = Rake::TestTask.new(:example) do |t| - t.libs = ['src', 'ext'] - t.pattern = 'test/tc_*.rb' - t.verbose = true - end - assert_not_nil tt - assert_equal :example, tt.name - assert_equal ['src', 'ext'], tt.libs - assert_equal 'test/tc_*.rb', tt.pattern - assert_equal true, tt.verbose - assert Task.task_defined?(:example) - end - - def test_pattern - tt = Rake::TestTask.new do |t| - t.pattern = '*.rb' - end - assert_equal ['install.rb'], tt.file_list.to_a - end - - def test_env_test - ENV['TEST'] = 'testfile.rb' - tt = Rake::TestTask.new do |t| - t.pattern = '*' - end - assert_equal ["testfile.rb"], tt.file_list.to_a - end - - def test_test_files - tt = Rake::TestTask.new do |t| - t.test_files = FileList['a.rb', 'b.rb'] - end - assert_equal ["a.rb", 'b.rb'], tt.file_list.to_a - end - - def test_both_pattern_and_test_files - tt = Rake::TestTask.new do |t| - t.test_files = FileList['a.rb', 'b.rb'] - t.pattern = '*.rb' - end - assert_equal ['a.rb', 'b.rb', 'install.rb'], tt.file_list.to_a - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_top_level_functions.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_top_level_functions.rb deleted file mode 100644 index 19390287..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_top_level_functions.rb +++ /dev/null @@ -1,86 +0,0 @@ -#!/usr/bin/env ruby - -begin - require 'rubygems' -rescue LoadError - # got no gems -end - -require 'test/unit' -require 'flexmock/test_unit' -require 'test/capture_stdout' -require 'test/rake_test_setup' -require 'rake' - -class TestTopLevelFunctions < Test::Unit::TestCase - include CaptureStdout - include TestMethods - - def setup - super - @app = Rake.application - Rake.application = flexmock("app") - end - - def teardown - Rake.application = @app - super - end - - def test_namespace - Rake.application.should_receive(:in_namespace).with("xyz", any).once - namespace "xyz" do end - end - - def test_import - Rake.application.should_receive(:add_import).with("x").once.ordered - Rake.application.should_receive(:add_import).with("y").once.ordered - Rake.application.should_receive(:add_import).with("z").once.ordered - import('x', 'y', 'z') - end - - def test_when_writing - out = capture_stdout do - when_writing("NOTWRITING") do - puts "WRITING" - end - end - assert_equal "WRITING\n", out - end - - def test_when_not_writing - RakeFileUtils.nowrite_flag = true - out = capture_stdout do - when_writing("NOTWRITING") do - puts "WRITING" - end - end - assert_equal "DRYRUN: NOTWRITING\n", out - ensure - RakeFileUtils.nowrite_flag = false - end - - def test_missing_constants_task - Rake.application.should_receive(:const_warning).with(:Task).once - Object.const_missing(:Task) - end - - def test_missing_constants_file_task - Rake.application.should_receive(:const_warning).with(:FileTask).once - Object.const_missing(:FileTask) - end - - def test_missing_constants_file_creation_task - Rake.application.should_receive(:const_warning).with(:FileCreationTask).once - Object.const_missing(:FileCreationTask) - end - - def test_missing_constants_rake_app - Rake.application.should_receive(:const_warning).with(:RakeApp).once - Object.const_missing(:RakeApp) - end - - def test_missing_other_constant - assert_exception(NameError) do Object.const_missing(:Xyz) end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_win32.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_win32.rb deleted file mode 100644 index f68a492f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/rake-0.8.7/test/test_win32.rb +++ /dev/null @@ -1,72 +0,0 @@ -#!/usr/bin/env ruby - -require 'test/unit' -require 'test/rake_test_setup' -require 'test/in_environment' - -require 'rake' - -class TestWin32 < Test::Unit::TestCase - include InEnvironment - include TestMethods - - Win32 = Rake::Win32 - - def test_win32_system_dir_uses_home_if_defined - in_environment('RAKE_SYSTEM' => nil, 'HOME' => 'C:\\HP') do - assert_equal "C:/HP/Rake", Win32.win32_system_dir - end - end - - def test_win32_system_dir_uses_homedrive_homepath_when_no_home_defined - in_environment( - 'RAKE_SYSTEM' => nil, - 'HOME' => nil, - 'HOMEDRIVE' => "C:", - 'HOMEPATH' => "\\HP" - ) do - assert_equal "C:/HP/Rake", Win32.win32_system_dir - end - end - - def test_win32_system_dir_uses_appdata_when_no_home_or_home_combo - in_environment( - 'RAKE_SYSTEM' => nil, - 'HOME' => nil, - 'HOMEDRIVE' => nil, - 'HOMEPATH' => nil, - 'APPDATA' => "C:\\Documents and Settings\\HP\\Application Data" - ) do - assert_equal "C:/Documents and Settings/HP/Application Data/Rake", Win32.win32_system_dir - end - end - - def test_win32_system_dir_fallback_to_userprofile_otherwise - in_environment( - 'RAKE_SYSTEM' => nil, - 'HOME' => nil, - 'HOMEDRIVE' => nil, - 'HOMEPATH' => nil, - 'APPDATA' => nil, - 'USERPROFILE' => "C:\\Documents and Settings\\HP" - ) do - assert_equal "C:/Documents and Settings/HP/Rake", Win32.win32_system_dir - end - end - - def test_win32_system_dir_nil_of_no_env_vars - in_environment( - 'RAKE_SYSTEM' => nil, - 'HOME' => nil, - 'HOMEDRIVE' => nil, - "HOMEPATH" => nil, - 'APPDATA' => nil, - "USERPROFILE" => nil - ) do - assert_exception(Rake::Win32::Win32HomeError) do - Win32.win32_system_dir - end - end - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/COPYING b/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/COPYING deleted file mode 100644 index 860df538..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/COPYING +++ /dev/null @@ -1,18 +0,0 @@ -Copyright (c) 2009 Ryan Tomayko - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/README b/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/README deleted file mode 100644 index 214c268a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/README +++ /dev/null @@ -1,46 +0,0 @@ - Shotgun - -This is an automatic reloading version of the rackup command that's shipped with -Rack. It can be used as an alternative to the complex reloading logic provided -by web frameworks or in environments that don't support application reloading. - -The shotgun command starts one of Rack's supported servers (e.g., mongrel, thin, -webrick) and listens for requests but does not load any part of the actual -application. Each time a request is received, it forks, loads the application in -the child process, processes the request, and exits the child process. The -result is clean, application-wide reloading of all source files and templates on -each request. - -Usage ------ - -Installation: - - gem install shotgun - -Starting a server with a rackup file: - - shotgun config.ru - -Using Thin and starting on port 6000 instead of 9393 (default): - - shotgun --server=thin --port=6000 config.ru - -Running Sinatra apps: - - shotgun hello.rb - -See 'shotgun --help' for more advanced usage. - -Links ------ - -Shotgun: http://github.com/rtomayko/shotgun -Rack: http://rack.rubyforge.org/ -Sinatra: http://www.sinatrarb.com/ - -The reloading system in Ian Bicking's webware framework served as inspiration -for the approach taken in Shotgun. Ian lays down the pros and cons of this -approach in the following article: - -http://ianbicking.org/docs/Webware_reload.html diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/Rakefile deleted file mode 100644 index 1221147f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/Rakefile +++ /dev/null @@ -1,42 +0,0 @@ -require 'rake/clean' -require 'rake/testtask' - -task :default => [:test] -task :spec => :test - -Rake::TestTask.new(:test) do |t| - t.test_files = FileList['test/spec_*.rb'] - t.ruby_opts = ['-rubygems'] if defined? Gem -end - -require 'rubygems' -$spec = eval(File.read('shotgun.gemspec')) - -def package(ext='') - "pkg/#{$spec.name}-#{$spec.version}" + ext -end - -desc 'Build packages' -task :package => %w[.gem .tar.gz].map { |e| package(e) } - -desc 'Build and install as local gem' -task :install => package('.gem') do - sh "gem install #{package('.gem')}" -end - -directory 'pkg/' -CLOBBER.include('pkg') - -file package('.gem') => %W[pkg/ #{$spec.name}.gemspec] + $spec.files do |f| - sh "gem build #{$spec.name}.gemspec" - mv File.basename(f.name), f.name -end - -file package('.tar.gz') => %w[pkg/] + $spec.files do |f| - sh <<-SH - git archive \ - --prefix=#{$spec.name}-#{$spec.version}/ \ - --format=tar \ - HEAD | gzip > #{f.name} - SH -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/bin/shotgun b/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/bin/shotgun deleted file mode 100755 index d618d297..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/bin/shotgun +++ /dev/null @@ -1,143 +0,0 @@ -#!/usr/bin/env ruby - -require 'optparse' - -begin - require 'thin' - server = 'thin' -rescue LoadError - server = nil -end - -env = ENV['RACK_ENV'] || 'development' -browse = false -options = {:Port => 9393, :Host => 'localhost', :AccessLog => [], :Path => '/'} - -opts = OptionParser.new("", 24, ' ') { |opts| - opts.banner = "Usage: shotgun [ruby options] [rack options] [rackup config]" - - opts.separator "" - opts.separator "Ruby options:" - - lineno = 1 - opts.on("-e", "--eval LINE", "evaluate a LINE of code") { |line| - eval line, TOPLEVEL_BINDING, "-e", lineno - lineno += 1 - } - - opts.on("-d", "--debug", "set debugging flags (set $DEBUG to true)") { - $DEBUG = true - } - opts.on("-w", "--warn", "turn warnings on for your script") { - $-w = true - } - - opts.on("-I", "--include PATH", - "specify $LOAD_PATH (may be used more than once)") { |path| - $LOAD_PATH.unshift(*path.split(":")) - } - - opts.on("-r", "--require LIBRARY", - "require the library, before executing your script") { |library| - require library - } - - opts.separator "" - opts.separator "Rack options:" - opts.on("-s", "--server SERVER", "server (webrick, mongrel, thin, etc.)") { |s| - server = s - } - - opts.on("-o", "--host HOST", "listen on HOST (default: 0.0.0.0)") { |host| - options[:Host] = host - } - - opts.on("-p", "--port PORT", "use PORT (default: 9393)") { |port| - options[:Port] = port - } - - opts.on("-E", "--env ENVIRONMENT", "use ENVIRONMENT for defaults (default: development)") { |e| - env = e - } - - opts.separator "" - opts.separator "Shotgun options:" - - opts.on("-u", "--url URL", "specify url path (default: /)") { |url| - options[:Path] = url - } - - opts.on("-O", "--browse", "open browser immediately after starting") { |browse| - browse = true - } - - opts.on_tail("-h", "--help", "show this message") do - puts opts - exit - end - - opts.on_tail("--version", "show version") do - require 'rack' - puts "Rack #{Rack.version}" - exit - end - - opts.parse! ARGV -} - -config = ARGV[0] || "config.ru" -abort "configuration #{config} not found" unless File.exist? config - -if config =~ /\.ru$/ && File.read(config)[/^#\\(.*)/] - opts.parse! $1.split(/\s+/) -end - -require 'rack' -require 'rack/utils' -require 'rack/request' -require 'rack/response' -require 'rack/lint' -require 'rack/commonlogger' -require 'rack/showexceptions' - -unless server = Rack::Handler.get(server) - begin - server = Rack::Handler::Mongrel - rescue LoadError => e - server = Rack::Handler::WEBrick - end -end - -app_wrapper = - lambda do |inner_app| - case env - when 'development' - Rack::Builder.new { - use Rack::CommonLogger, STDERR unless server.name =~ /CGI/ - use Rack::ShowExceptions - use Rack::Lint - run inner_app - }.to_app - when 'deployment', 'production' - Rack::Builder.new { - use Rack::CommonLogger, STDERR unless server.name =~ /CGI/ - run inner_app - }.to_app - else - inner_app - end - end - -ENV['RACK_ENV'] = env - -require 'shotgun' -app = Shotgun.new(config, app_wrapper) - -server.run app, options do |inst| - puts "== Shotgun starting #{server.to_s} on http://#{options[:Host]}:#{options[:Port]}" - - if browse - require 'launchy' - Launchy.open("http://#{options[:Host]}:#{options[:Port]}#{options[:Path]}") - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/lib/shotgun.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/lib/shotgun.rb deleted file mode 100644 index 6239b77e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/lib/shotgun.rb +++ /dev/null @@ -1,98 +0,0 @@ -require 'rack' -require 'rack/utils' -require 'thread' - -class Shotgun - include Rack::Utils - attr_reader :rackup_file - - def initialize(rackup_file, wrapper=nil) - @rackup_file = rackup_file - @wrapper = wrapper || lambda { |inner_app| inner_app } - enable_copy_on_write - end - - def call(env) - dup.call!(env) - end - - def call!(env) - @env = env - @reader, @writer = IO.pipe - - if @child = fork - proceed_as_parent - else - proceed_as_child - end - end - - # ==== Stuff that happens in the parent process - - def proceed_as_parent - rand # Reseeds - @writer.close - result = Marshal.load(@reader) - @reader.close - Process.wait(@child) - if result.length == 3 - result - else - [500, {'Content-Type'=>'text/html;charset=utf-8'}, [format_error(result)]] - end - end - - def format_error(result) - message, backtrace = result - "

    FAIL

    #{escape_html(message)}

    " + - "
    #{escape_html(backtrace.join("\n"))}
    " - end - - # ==== Stuff that happens in the forked child process. - - def proceed_as_child - @reader.close - app = assemble_app - status, headers, body = app.call(@env) - Marshal.dump([status, headers.to_hash, slurp(body)], @writer) - @writer.close - rescue Object => boom - Marshal.dump(["#{boom.class.name}: #{boom.to_s}", boom.backtrace], @writer) - ensure - exit! 0 - end - - def assemble_app - @wrapper.call(inner_app) - end - - def inner_app - if rackup_file =~ /\.ru$/ - config = File.read(rackup_file) - eval "Rack::Builder.new {( #{config}\n )}.to_app", nil, rackup_file - else - require rackup_file - if defined? Sinatra::Application - Sinatra::Application.set :reload, false - Sinatra::Application.set :logging, false - Sinatra::Application.set :raise_errors, true - Sinatra::Application - else - Object.const_get(File.basename(rackup_file, '.rb').capitalize) - end - end - end - - def slurp(body) - return body if body.respond_to? :to_ary - return [body] if body.respond_to? :to_str - - buf = [] - body.each { |part| buf << part } - buf - end - - def enable_copy_on_write - GC.copy_on_write_friendly = true if GC.respond_to?(:copy_on_write_friendly=) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/shotgun.gemspec b/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/shotgun.gemspec deleted file mode 100644 index cfc6400c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/shotgun-0.5/shotgun.gemspec +++ /dev/null @@ -1,33 +0,0 @@ -Gem::Specification.new do |s| - s.specification_version = 2 if s.respond_to? :specification_version= - s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= - - s.name = 'shotgun' - s.version = '0.5' - s.date = '2010-01-16' - - s.description = "Because reloading sucks." - s.summary = s.description - - s.authors = ["Ryan Tomayko"] - s.email = "r@tomayko.com" - - s.files = %w[ - README - COPYING - Rakefile - shotgun.gemspec - lib/shotgun.rb - bin/shotgun - ] - s.executables = ['shotgun'] - s.test_files = s.files.select {|path| path =~ /^test\/.*_test.rb/} - - s.extra_rdoc_files = %w[README] - s.add_dependency 'rack', '>= 0.9.1' - s.add_dependency 'launchy', '>= 0.3.3', '< 1.0' - - s.homepage = "http://github.com/rtomayko/shotgun/" - s.require_paths = %w[lib] - s.rubygems_version = '1.1.1' -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/AUTHORS b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/AUTHORS deleted file mode 100644 index 372390f2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/AUTHORS +++ /dev/null @@ -1,41 +0,0 @@ -Sinatra was designed and developed by Blake Mizerany (bmizerany) in -California. Continued development would not be possible without the ongoing -financial support provided by [Heroku](http://heroku.com) and the emotional -support provided by Adam Wiggins (adamwiggins) of Heroku, Chris Wanstrath (defunkt), -PJ Hyett (pjhyett), and the rest of the GitHub crew. - -Special thanks to the following extraordinary individuals, who-out which -Sinatra would not be possible: - -* Ryan Tomayko (rtomayko) for constantly fixing whitespace errors 60d5006 -* Ezra Zygmuntowicz (ezmobius) for initial help and letting Blake steal - some of merbs internal code. -* Christopher Schneid (cschneid) for The Book, the blog (gittr.com), - irclogger.com, and a bunch of useful patches. -* Markus Prinz (cypher) for patches over the years, caring about - the README, and hanging in there when times were rough. -* Simon Rozet (sr) for a ton of doc patches, HAML options, and all that - advocacy stuff he's going to do for 1.0. -* Erik Kastner (kastner) for fixing `MIME_TYPES` under Rack 0.5. -* Ben Bleything (bleything) for caring about HTTP status codes and doc fixes. -* Igal Koshevoy (igal) for root path detection under Thin/Passenger. -* Jon Crosby (jcrosby) for coffee breaks, doc fixes, and just because, man. -* Karel Minarik (karmi) for screaming until the website came back up. -* Jeremy Evans (jeremyevans) for unbreaking optional path params (twice!) -* The GitHub guys for stealing Blake's table. -* Nickolas Means (nmeans) for Sass template support. -* Victor Hugo Borja (vic) for splat'n routes specs and doco. -* Avdi Grimm (avdi) for basic RSpec support. -* Jack Danger Canty for a more accurate root directory and for making me - watch [this](http://www.youtube.com/watch?v=ueaHLHgskkw) just now. -* Mathew Walker for making escaped paths work with static files. -* Millions of Us for having the problem that led to Sinatra's conception. -* Songbird for the problems that helped Sinatra's future become realized. -* Rick Olson (technoweenie) for the killer plug at RailsConf '08. -* Steven Garcia for the amazing custom artwork you see on 404's and 500's -* Pat Nakajima (nakajima) for fixing non-nested params in nested params Hash's. - -and last but not least: - -* Frank Sinatra (chairman of the board) for having so much class he - deserves a web-framework named after him. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/CHANGES b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/CHANGES deleted file mode 100644 index 64fd2dbf..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/CHANGES +++ /dev/null @@ -1,385 +0,0 @@ -= 0.9.4 / 2009-07-26 - - * The app_file and run options should be properly detected - on Debian when installed from apt package. - - * The :show_exceptions option now defaults to false in all - cases for subclasses of Sinatra::Base. - - * Fix webrick server handler not found errors when starting - from the command line without mongrel or thin [#231]. - - * Fix locals not being passed to layouts. - - * Fix 'Illegal Seek' errors running under Apache/CGI. - -= 0.9.3 / unreleased - -= 0.9.2 / 2009-05-18 - - * This version is compatible with Rack 1.0. [Rein Henrichs] - - * The development-mode unhandled exception / error page has been - greatly enhanced, functionally and aesthetically. The error - page is used when the :show_exceptions option is enabled and an - exception propagates outside of a route handler or before filter. - [Simon Rozet / Matte Noble / Ryan Tomayko] - - * Backtraces that move through templates now include filenames and - line numbers where possible. [#51 / S. Brent Faulkner] - - * All templates now have an app-level option for setting default - template options (:haml, :sass, :erb, :builder). The app-level - option value must be a Hash if set and is merged with the - template options specified to the render method (Base#haml, - Base#erb, Base#builder). [S. Brent Faulkner, Ryan Tomayko] - - * The method signature for all template rendering methods has - been unified: "def engine(template, options={}, locals={})". - The options Hash now takes the generic :views, :layout, and - :locals options but also any template-specific options. The - generic options are removed before calling the template specific - render method. Locals may be specified using either the - :locals key in the options hash or a second Hash option to the - rendering method. [#191 / Ryan Tomayko] - - * The receiver is now passed to "configure" blocks. This - allows for the following idiom in top-level apps: - configure { |app| set :foo, app.root + '/foo' } - [TJ Holowaychuck / Ryan Tomayko] - - * The "sinatra/test" lib is deprecated and will be removed in - Sinatra 1.0. This includes the Sinatra::Test module and - Sinatra::TestHarness class in addition to all the framework - test helpers that were deprecated in 0.9.1. The Rack::Test - lib should be used instead: http://gitrdoc.com/brynary/rack-test - [#176 / Simon Rozet] - - * Development mode source file reloading has been removed. The - "shotgun" (http://rtomayko.github.com/shotgun/) program can be - used to achieve the same basic functionality in most situations. - Passenger users should use the "tmp/always_restart.txt" - file (http://tinyurl.com/c67o4h). [#166 / Ryan Tomayko] - - * Auto-requiring template libs in the erb, builder, haml, and - sass methods is deprecated due to thread-safety issues. You must - require the template libs explicitly in your app file. [Simon Rozet] - - * A new Sinatra::Base#route_missing method was added. route_missing - is sent when no route matches the request or all route handlers - pass. The default implementation forwards the request to the - downstream app when running as middleware (i.e., "@app" is - non-nil), or raises a NotFound exception when no downstream app - is defined. Subclasses can override this method to perform custom - route miss logic. [Jon Crosby] - - * A new Sinatra::Base#route_eval method was added. The method - yields to the block and throws :halt with the result. Subclasses - can override this method to tap into the route execution logic. - [TJ Holowaychuck] - - * Fix the "-x" (enable request mutex / locking) command line - argument. Passing -x now properly sets the :lock option. - [S. Brent Faulkner, Ryan Tomayko] - - * Fix writer ("foo=") and predicate ("foo?") methods in extension - modules not being added to the registering class. - [#172 / Pat Nakajima] - - * Fix in-file templates when running alongside activesupport and - fatal errors when requiring activesupport before sinatra - [#178 / Brian Candler] - - * Fix various issues running on Google AppEngine. - [Samuel Goebert, Simon Rozet] - - * Fix in-file templates __END__ detection when __END__ exists with - other stuff on a line [Yoji Shidara] - -= 0.9.1.1 / 2009-03-09 - - * Fix directory traversal vulnerability in default static files - route. See [#177] for more info. - -= 0.9.1 / 2009-03-01 - - * Sinatra now runs under Ruby 1.9.1 [#61] - - * Route patterns (splats, :named, or Regexp captures) are now - passed as arguments to the block. [#140] - - * The "helpers" method now takes a variable number of modules - along with the normal block syntax. [#133] - - * New request-level #forward method for middleware components: passes - the env to the downstream app and merges the response status, headers, - and body into the current context. [#126] - - * Requests are now automatically forwarded to the downstream app when - running as middleware and no matching route is found or all routes - pass. - - * New simple API for extensions/plugins to add DSL-level and - request-level methods. Use Sinatra.register(mixin) to extend - the DSL with all public methods defined in the mixin module; - use Sinatra.helpers(mixin) to make all public methods defined - in the mixin module available at the request level. [#138] - See http://www.sinatrarb.com/extensions.html for details. - - * Named parameters in routes now capture the "." character. This makes - routes like "/:path/:filename" match against requests like - "/foo/bar.txt"; in this case, "params[:filename]" is "bar.txt". - Previously, the route would not match at all. - - * Added request-level "redirect back" to redirect to the referring - URL. - - * Added a new "clean_trace" option that causes backtraces dumped - to rack.errors and displayed on the development error page to - omit framework and core library backtrace lines. The option is - enabled by default. [#77] - - * The ERB output buffer is now available to helpers via the @_out_buf - instance variable. - - * It's now much easier to test sessions in unit tests by passing a - ":session" option to any of the mock request methods. e.g., - get '/', {}, :session => { 'foo' => 'bar' } - - * The testing framework specific files ('sinatra/test/spec', - 'sinatra/test/bacon', 'sinatra/test/rspec', etc.) have been deprecated. - See http://sinatrarb.com/testing.html for instructions on setting up - a testing environment with these frameworks. - - * The request-level #send_data method from Sinatra 0.3.3 has been added - for compatibility but is deprecated. - - * Fix :provides causing crash on any request when request has no - Accept header [#139] - - * Fix that ERB templates were evaluated twice per "erb" call. - - * Fix app-level middleware not being run when the Sinatra application is - run as middleware. - - * Fixed some issues with running under Rack's CGI handler caused by - writing informational stuff to stdout. - - * Fixed that reloading was sometimes enabled when starting from a - rackup file [#110] - - * Fixed that "." in route patterns erroneously matched any character - instead of a literal ".". [#124] - -= 0.9.0.4 / 2009-01-25 - - * Using halt with more than 1 args causes ArgumentError [#131] - * using halt in a before filter doesn't modify response [#127] - * Add deprecated Sinatra::EventContext to unbreak plugins [#130] - * Give access to GET/POST params in filters [#129] - * Preserve non-nested params in nested params hash [#117] - * Fix backtrace dump with Rack::Lint [#116] - -= 0.9.0.3 / 2009-01-21 - - * Fall back on mongrel then webrick when thin not found. [#75] - * Use :environment instead of :env in test helpers to - fix deprecation warnings coming from framework. - * Make sinatra/test/rspec work again [#113] - * Fix app_file detection on windows [#118] - * Fix static files with Rack::Lint in pipeline [#121] - -= 0.9.0.2 / 2009-01-18 - - * Halting a before block should stop processing of routes [#85] - * Fix redirect/halt in before filters [#85] - -= 0.9.0 / 2009-01-18 - - * Works with and requires Rack >= 0.9.1 - - * Multiple Sinatra applications can now co-exist peacefully within a - single process. The new "Sinatra::Base" class can be subclassed to - establish a blank-slate Rack application or middleware component. - Documentation on using these features is forth-coming; the following - provides the basic gist: http://gist.github.com/38605 - - * Parameters with subscripts are now parsed into a nested/recursive - Hash structure. e.g., "post[title]=Hello&post[body]=World" yields - params: {'post' => {'title' => 'Hello', 'body' => 'World'}}. - - * Regular expressions may now be used in route pattens; captures are - available at "params[:captures]". - - * New ":provides" route condition takes an array of mime types and - matches only when an Accept request header is present with a - corresponding type. [cypher] - - * New request-level "pass" method; immediately exits the current block - and passes control to the next matching route. - - * The request-level "body" method now takes a block; evaluation is - deferred until an attempt is made to read the body. The block must - return a String or Array. - - * New "route conditions" system for attaching rules for when a route - matches. The :agent and :host route options now use this system. - - * New "dump_errors" option controls whether the backtrace is dumped to - rack.errors when an exception is raised from a route. The option is - enabled by default for top-level apps. - - * Better default "app_file", "root", "public", and "views" location - detection; changes to "root" and "app_file" automatically cascade to - other options that depend on them. - - * Error mappings are now split into two distinct layers: exception - mappings and custom error pages. Exception mappings are registered - with "error(Exception)" and are run only when the app raises an - exception. Custom error pages are registered with "error(status_code)", - where "status_code" is an integer, and are run any time the response - has the status code specified. It's also possible to register an error - page for a range of status codes: "error(500..599)". - - * In-file templates are now automatically imported from the file that - requires 'sinatra'. The use_in_file_templates! method is still available - for loading templates from other files. - - * Sinatra's testing support is no longer dependent on Test::Unit. Requiring - 'sinatra/test' adds the Sinatra::Test module and Sinatra::TestHarness - class, which can be used with any test framework. The 'sinatra/test/unit', - 'sinatra/test/spec', 'sinatra/test/rspec', or 'sinatra/test/bacon' files - can be required to setup a framework-specific testing environment. See the - README for more information. - - * Added support for Bacon (test framework). The 'sinatra/test/bacon' file - can be required to setup Sinatra test helpers on Bacon::Context. - - * Deprecated "set_option" and "set_options"; use "set" instead. - - * Deprecated the "env" option ("options.env"); use "environment" instead. - - * Deprecated the request level "stop" method; use "halt" instead. - - * Deprecated the request level "entity_tag" method; use "etag" instead. - Both "entity_tag" and "etag" were previously supported. - - * Deprecated the request level "headers" method (HTTP response headers); - use "response['Header-Name']" instead. - - * Deprecated "Sinatra.application"; use "Sinatra::Application" instead. - - * Deprecated setting Sinatra.application = nil to reset an application. - This should no longer be necessary. - - * Deprecated "Sinatra.default_options"; use - "Sinatra::Default.set(key, value)" instead. - - * Deprecated the "ServerError" exception. All Exceptions are now - treated as internal server errors and result in a 500 response - status. - - * Deprecated the "get_it", "post_it", "put_it", "delete_it", and "head_it" - test helper methods. Use "get", "post", "put", "delete", and "head", - respectively, instead. - - * Removed Event and EventContext classes. Applications are defined in a - subclass of Sinatra::Base; each request is processed within an - instance. - -= 0.3.3 / 2009-01-06 - - * Pin to Rack 0.4.0 (this is the last release on Rack 0.4) - - * Log unhandled exception backtraces to rack.errors. - - * Use RACK_ENV environment variable to establish Sinatra - environment when given. Thin sets this when started with - the -e argument. - - * BUG: raising Sinatra::NotFound resulted in a 500 response - code instead of 404. - - * BUG: use_in_file_templates! fails with CR/LF (#45) - - * BUG: Sinatra detects the app file and root path when run under - thin/passenger. - -= 0.3.2 - - * BUG: Static and send_file read entire file into String before - sending. Updated to stream with 8K chunks instead. - - * Rake tasks and assets for building basic documentation website. - See http://sinatra.rubyforge.org - - * Various minor doc fixes. - -= 0.3.1 - - * Unbreak optional path parameters [jeremyevans] - -= 0.3.0 - - * Add sinatra.gemspec w/ support for github gem builds. Forks can now - enable the build gem option in github to get free username-sinatra.gem - builds: gem install username-sinatra.gem --source=http://gems.github.com/ - - * Require rack-0.4 gem; removes frozen rack dir. - - * Basic RSpec support; require 'sinatra/test/rspec' instead of - 'sinatra/test/spec' to use. [avdi] - - * before filters can modify request environment vars used for - routing (e.g., PATH_INFO, REQUEST_METHOD, etc.) for URL rewriting - type functionality. - - * In-file templates now uses @@ instead of ## as template separator. - - * Top-level environment test predicates: development?, test?, production? - - * Top-level "set", "enable", and "disable" methods for tweaking - app options. [rtomayko] - - * Top-level "use" method for building Rack middleware pipelines - leading to app. See README for usage. [rtomayko] - - * New "reload" option - set false to disable reloading in development. - - * New "host" option - host/ip to bind to [cschneid] - - * New "app_file" option - override the file to reload in development - mode [cschneid] - - * Development error/not_found page cleanup [sr, adamwiggins] - - * Remove a bunch of core extensions (String#to_param, String#from_param, - Hash#from_params, Hash#to_params, Hash#symbolize_keys, Hash#pass) - - * Various grammar and formatting fixes to README; additions on - community and contributing [cypher] - - * Build RDoc using Hanna template: http://sinatrarb.rubyforge.org/api - - * Specs, documentation and fixes for splat'n routes [vic] - - * Fix whitespace errors across all source files. [rtomayko] - - * Fix streaming issues with Mongrel (body not closed). [bmizerany] - - * Fix various issues with environment not being set properly (configure - blocks not running, error pages not registering, etc.) [cypher] - - * Fix to allow locals to be passed to ERB templates [cschneid] - - * Fix locking issues causing random errors during reload in development. - - * Fix for escaped paths not resolving static files [Matthew Walker] - -= 0.2.1 - - * File upload fix and minor tweaks. - -= 0.2.0 - - * Initial gem release of 0.2 codebase. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/LICENSE b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/LICENSE deleted file mode 100644 index 145fdff5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Copyright (c) 2007, 2008, 2009 Blake Mizerany - -Permission is hereby granted, free of charge, to any person -obtaining a copy of this software and associated documentation -files (the "Software"), to deal in the Software without -restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the -Software is furnished to do so, subject to the following -conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR -OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/README.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/README.rdoc deleted file mode 100644 index 11f0d8b8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/README.rdoc +++ /dev/null @@ -1,573 +0,0 @@ -= Sinatra - -Sinatra is a DSL for quickly creating web-applications in Ruby with minimal -effort: - - # myapp.rb - require 'rubygems' - require 'sinatra' - get '/' do - 'Hello world!' - end - -Install the gem and run with: - - sudo gem install sinatra - ruby myapp.rb - -View at: http://localhost:4567 - -== Routes - -In Sinatra, a route is an HTTP method paired with an URL matching pattern. -Each route is associated with a block: - - get '/' do - .. show something .. - end - - post '/' do - .. create something .. - end - - put '/' do - .. update something .. - end - - delete '/' do - .. annihilate something .. - end - -Routes are matched in the order they are defined. The first route that -matches the request is invoked. - -Route patterns may include named parameters, accessible via the -params hash: - - get '/hello/:name' do - # matches "GET /hello/foo" and "GET /hello/bar" - # params[:name] is 'foo' or 'bar' - "Hello #{params[:name]}!" - end - -You can also access named parameters via block parameters: - - get '/hello/:name' do |n| - "Hello #{n}!" - end - -Route patterns may also include splat (or wildcard) parameters, accessible -via the params[:splat] array. - - get '/say/*/to/*' do - # matches /say/hello/to/world - params[:splat] # => ["hello", "world"] - end - - get '/download/*.*' do - # matches /download/path/to/file.xml - params[:splat] # => ["path/to/file", "xml"] - end - -Route matching with Regular Expressions: - - get %r{/hello/([\w]+)} do - "Hello, #{params[:captures].first}!" - end - -Or with a block parameter: - - get %r{/hello/([\w]+)} do |c| - "Hello, #{c}!" - end - -Routes may include a variety of matching conditions, such as the user agent: - - get '/foo', :agent => /Songbird (\d\.\d)[\d\/]*?/ do - "You're using Songbird version #{params[:agent][0]}" - end - - get '/foo' do - # Matches non-songbird browsers - end - -== Static Files - -Static files are served from the ./public directory. You can specify -a different location by setting the :public option: - - set :public, File.dirname(__FILE__) + '/static' - -Note that the public directory name is not included in the URL. A file -./public/css/style.css is made available as -http://example.com/css/style.css. - -== Views / Templates - -Templates are assumed to be located directly under the ./views -directory. To use a different views directory: - - set :views, File.dirname(__FILE__) + '/templates' - -One important thing to remember is that you always have to reference -templates with symbols, even if they're in a subdirectory (in this -case use :'subdir/template'). Rendering methods will render -any strings passed to them directly. - -=== Haml Templates - -The haml gem/library is required to render HAML templates: - - ## You'll need to require haml in your app - require 'haml' - - get '/' do - haml :index - end - -Renders ./views/index.haml. - -{Haml's options}[http://haml.hamptoncatlin.com/docs/rdoc/classes/Haml.html] -can be set globally through Sinatra's configurations, -see {Options and Configurations}[http://www.sinatrarb.com/configuration.html], -and overridden on an individual basis. - - set :haml, {:format => :html5 } # default Haml format is :xhtml - - get '/' do - haml :index, :haml_options => {:format => :html4 } # overridden - end - - -=== Erb Templates - - ## You'll need to require erb in your app - require 'erb' - - get '/' do - erb :index - end - -Renders ./views/index.erb - -=== Builder Templates - -The builder gem/library is required to render builder templates: - - ## You'll need to require builder in your app - require 'builder' - - get '/' do - content_type 'application/xml', :charset => 'utf-8' - builder :index - end - -Renders ./views/index.builder. - -=== Sass Templates - -The sass gem/library is required to render Sass templates: - - ## You'll need to require haml or sass in your app - require 'sass' - - get '/stylesheet.css' do - content_type 'text/css', :charset => 'utf-8' - sass :stylesheet - end - -Renders ./views/stylesheet.sass. - -{Sass' options}[http://haml.hamptoncatlin.com/docs/rdoc/classes/Sass.html] -can be set globally through Sinatra's configurations, -see {Options and Configurations}[http://www.sinatrarb.com/configuration.html], -and overridden on an individual basis. - - set :sass, {:style => :compact } # default Sass style is :nested - - get '/stylesheet.css' do - content_type 'text/css', :charset => 'utf-8' - sass :stylesheet, :sass_options => {:style => :expanded } # overridden - end - - -=== Inline Templates - - get '/' do - haml '%div.title Hello World' - end - -Renders the inlined template string. - -=== Accessing Variables in Templates - -Templates are evaluated within the same context as route handlers. Instance -variables set in route handlers are direcly accessible by templates: - - get '/:id' do - @foo = Foo.find(params[:id]) - haml '%h1= @foo.name' - end - -Or, specify an explicit Hash of local variables: - - get '/:id' do - foo = Foo.find(params[:id]) - haml '%h1= foo.name', :locals => { :foo => foo } - end - -This is typically used when rendering templates as partials from within -other templates. - -=== In-file Templates - -Templates may be defined at the end of the source file: - - require 'rubygems' - require 'sinatra' - - get '/' do - haml :index - end - - __END__ - - @@ layout - %html - = yield - - @@ index - %div.title Hello world!!!!! - -NOTE: In-file templates defined in the source file that requires sinatra -are automatically loaded. Call the use_in_file_templates! -method explicitly if you have in-file templates in other source files. - -=== Named Templates - -Templates may also be defined using the top-level template method: - - template :layout do - "%html\n =yield\n" - end - - template :index do - '%div.title Hello World!' - end - - get '/' do - haml :index - end - -If a template named "layout" exists, it will be used each time a template -is rendered. You can disable layouts by passing :layout => false. - - get '/' do - haml :index, :layout => !request.xhr? - end - -== Helpers - -Use the top-level helpers method to define helper methods for use in -route handlers and templates: - - helpers do - def bar(name) - "#{name}bar" - end - end - - get '/:name' do - bar(params[:name]) - end - -== Filters - -Before filters are evaluated before each request within the context of the -request and can modify the request and response. Instance variables set in -filters are accessible by routes and templates: - - before do - @note = 'Hi!' - request.path_info = '/foo/bar/baz' - end - - get '/foo/*' do - @note #=> 'Hi!' - params[:splat] #=> 'bar/baz' - end - -== Halting - -To immediately stop a request during a before filter or route use: - - halt - -You can also specify a body when halting ... - - halt 'this will be the body' - -Or set the status and body ... - - halt 401, 'go away!' - -== Passing - -A route can punt processing to the next matching route using pass: - - get '/guess/:who' do - pass unless params[:who] == 'Frank' - "You got me!" - end - - get '/guess/*' do - "You missed!" - end - -The route block is immediately exited and control continues with the next -matching route. If no matching route is found, a 404 is returned. - -== Configuration - -Run once, at startup, in any environment: - - configure do - ... - end - -Run only when the environment (RACK_ENV environment variable) is set to -:production: - - configure :production do - ... - end - -Run when the environment is set to either :production or -:test: - - configure :production, :test do - ... - end - -== Error handling - -Error handlers run within the same context as routes and before filters, which -means you get all the goodies it has to offer, like haml, erb, -halt, etc. - -=== Not Found - -When a Sinatra::NotFound exception is raised, or the response's status -code is 404, the not_found handler is invoked: - - not_found do - 'This is nowhere to be found' - end - -=== Error - -The +error+ handler is invoked any time an exception is raised from a route -block or before filter. The exception object can be obtained from the -sinatra.error Rack variable: - - error do - 'Sorry there was a nasty error - ' + env['sinatra.error'].name - end - -Custom errors: - - error MyCustomError do - 'So what happened was...' + request.env['sinatra.error'].message - end - -Then, if this happens: - - get '/' do - raise MyCustomError, 'something bad' - end - -You get this: - - So what happened was... something bad - -Sinatra installs special not_found and error handlers when -running under the development environment. - -== Mime types - -When using send_file or static files you may have mime types Sinatra -doesn't understand. Use +mime+ to register them by file extension: - - mime :foo, 'text/foo' - -== Rack Middleware - -Sinatra rides on Rack[http://rack.rubyforge.org/], a minimal standard -interface for Ruby web frameworks. One of Rack's most interesting capabilities -for application developers is support for "middleware" -- components that sit -between the server and your application monitoring and/or manipulating the -HTTP request/response to provide various types of common functionality. - -Sinatra makes building Rack middleware pipelines a cinch via a top-level -+use+ method: - - require 'sinatra' - require 'my_custom_middleware' - - use Rack::Lint - use MyCustomMiddleware - - get '/hello' do - 'Hello World' - end - -The semantics of +use+ are identical to those defined for the -Rack::Builder[http://rack.rubyforge.org/doc/classes/Rack/Builder.html] DSL -(most frequently used from rackup files). For example, the +use+ method -accepts multiple/variable args as well as blocks: - - use Rack::Auth::Basic do |username, password| - username == 'admin' && password == 'secret' - end - -Rack is distributed with a variety of standard middleware for logging, -debugging, URL routing, authentication, and session handling. Sinatra uses -many of of these components automatically based on configuration so you -typically don't have to +use+ them explicitly. - -== Testing - -Sinatra tests can be written using any Rack-based testing library -or framework. {Rack::Test}[http://gitrdoc.com/brynary/rack-test] is -recommended: - - require 'my_sinatra_app' - require 'rack/test' - - class MyAppTest < Test::Unit::TestCase - include Rack::Test::Methods - - def app - Sinatra::Application - end - - def test_my_default - get '/' - assert_equal 'Hello World!', last_response.body - end - - def test_with_params - get '/meet', :name => 'Frank' - assert_equal 'Hello Frank!', last_response.body - end - - def test_with_rack_env - get '/', {}, 'HTTP_USER_AGENT' => 'Songbird' - assert_equal "You're using Songbird!", last_response.body - end - end - -NOTE: The built-in Sinatra::Test module and Sinatra::TestHarness class -are deprecated as of the 0.9.2 release. - -== Sinatra::Base - Middleware, Libraries, and Modular Apps - -Defining your app at the top-level works well for micro-apps but has -considerable drawbacks when building reuseable components such as Rack -middleware, Rails metal, simple libraries with a server component, or -even Sinatra extensions. The top-level DSL pollutes the Object namespace -and assumes a micro-app style configuration (e.g., a single application -file, ./public and ./views directories, logging, exception detail page, -etc.). That's where Sinatra::Base comes into play: - - require 'sinatra/base' - - class MyApp < Sinatra::Base - set :sessions, true - set :foo, 'bar' - - get '/' do - 'Hello world!' - end - end - -The MyApp class is an independent Rack component that can act as -Rack middleware, a Rack application, or Rails metal. You can +use+ or -+run+ this class from a rackup +config.ru+ file; or, control a server -component shipped as a library: - - MyApp.run! :host => 'localhost', :port => 9090 - -The methods available to Sinatra::Base subclasses are exactly as those -available via the top-level DSL. Most top-level apps can be converted to -Sinatra::Base components with two modifications: - -* Your file should require +sinatra/base+ instead of +sinatra+; - otherwise, all of Sinatra's DSL methods are imported into the main - namespace. -* Put your app's routes, error handlers, filters, and options in a subclass - of Sinatra::Base. - -+Sinatra::Base+ is a blank slate. Most options are disabled by default, -including the built-in server. See {Options and Configuration}[http://sinatra.github.com/configuration.html] -for details on available options and their behavior. - -SIDEBAR: Sinatra's top-level DSL is implemented using a simple delegation -system. The +Sinatra::Application+ class -- a special subclass of -Sinatra::Base -- receives all :get, :put, :post, :delete, :before, -:error, :not_found, :configure, and :set messages sent to the -top-level. Have a look at the code for yourself: here's the -{Sinatra::Delegator mixin}[http://github.com/sinatra/sinatra/blob/master/lib/sinatra/base.rb#L1064] -being {included into the main namespace}[http://github.com/sinatra/sinatra/blob/master/lib/sinatra/main.rb#L25]. - -== Command line - -Sinatra applications can be run directly: - - ruby myapp.rb [-h] [-x] [-e ENVIRONMENT] [-p PORT] [-s HANDLER] - -Options are: - - -h # help - -p # set the port (default is 4567) - -e # set the environment (default is development) - -s # specify rack server/handler (default is thin) - -x # turn on the mutex lock (default is off) - -== The Bleeding Edge - -If you would like to use Sinatra's latest bleeding code, create a local -clone and run your app with the sinatra/lib directory on the -LOAD_PATH: - - cd myapp - git clone git://github.com/sinatra/sinatra.git - ruby -Isinatra/lib myapp.rb - -Alternatively, you can add the sinatra/lib directory to the -LOAD_PATH in your application: - - $LOAD_PATH.unshift File.dirname(__FILE__) + '/sinatra/lib' - require 'rubygems' - require 'sinatra' - - get '/about' do - "I'm running version " + Sinatra::VERSION - end - -To update the Sinatra sources in the future: - - cd myproject/sinatra - git pull - -== More - -* {Project Website}[http://sinatra.github.com/] - Additional documentation, - news, and links to other resources. -* {Contributing}[http://sinatra.github.com/contributing.html] - Find a bug? Need - help? Have a patch? -* {Lighthouse}[http://sinatra.lighthouseapp.com] - Issue tracking and release - planning. -* {Twitter}[http://twitter.com/sinatra] -* {Mailing List}[http://groups.google.com/group/sinatrarb] -* {IRC: #sinatra}[irc://chat.freenode.net/#sinatra] on http://freenode.net diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/Rakefile deleted file mode 100644 index c541c340..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/Rakefile +++ /dev/null @@ -1,138 +0,0 @@ -require 'rake/clean' -require 'rake/testtask' -require 'fileutils' - -task :default => [:test, :compat] -task :spec => :test - -# SPECS =============================================================== - -task(:test) { puts "==> Running main test suite" } - -Rake::TestTask.new(:test) do |t| - t.test_files = FileList['test/*_test.rb'] - t.ruby_opts = ['-rubygems'] if defined? Gem -end - -desc "Run < 0.9.x compatibility specs" -task :compat do - begin - require 'mocha' - require 'test/spec' - at_exit { exit 0 } # disable test-spec at_exit runner - - puts "==> Running compat test suite" - Rake::TestTask.new(:compat) do |t| - t.test_files = FileList['compat/*_test.rb'] - t.ruby_opts = ['-rubygems'] if defined? Gem - end - rescue LoadError - warn 'Skipping compat tests. mocha and/or test-spec gems not installed.' - end -end - -# PACKAGING ============================================================ - -# Load the gemspec using the same limitations as github -def spec - @spec ||= - begin - require 'rubygems/specification' - data = File.read('sinatra.gemspec') - spec = nil - Thread.new { spec = eval("$SAFE = 3\n#{data}") }.join - spec - end -end - -def package(ext='') - "pkg/sinatra-#{spec.version}" + ext -end - -desc 'Build packages' -task :package => %w[.gem .tar.gz].map {|e| package(e)} - -desc 'Build and install as local gem' -task :install => package('.gem') do - sh "gem install #{package('.gem')}" -end - -directory 'pkg/' -CLOBBER.include('pkg') - -file package('.gem') => %w[pkg/ sinatra.gemspec] + spec.files do |f| - sh "gem build sinatra.gemspec" - mv File.basename(f.name), f.name -end - -file package('.tar.gz') => %w[pkg/] + spec.files do |f| - sh <<-SH - git archive \ - --prefix=sinatra-#{source_version}/ \ - --format=tar \ - HEAD | gzip > #{f.name} - SH -end - -# Rubyforge Release / Publish Tasks ================================== - -desc 'Publish gem and tarball to rubyforge' -task 'release' => [package('.gem'), package('.tar.gz')] do |t| - sh <<-end - rubyforge add_release sinatra sinatra #{spec.version} #{package('.gem')} && - rubyforge add_file sinatra sinatra #{spec.version} #{package('.tar.gz')} - end -end - -# Website ============================================================ -# Building docs requires HAML and the hanna gem: -# gem install mislav-hanna --source=http://gems.github.com - -task 'doc' => ['doc:api'] - -desc 'Generate Hanna RDoc under doc/api' -task 'doc:api' => ['doc/api/index.html'] - -file 'doc/api/index.html' => FileList['lib/**/*.rb','README.rdoc'] do |f| - rb_files = f.prerequisites - sh((<<-end).gsub(/\s+/, ' ')) - hanna --charset utf8 \ - --fmt html \ - --inline-source \ - --line-numbers \ - --main README.rdoc \ - --op doc/api \ - --title 'Sinatra API Documentation' \ - #{rb_files.join(' ')} - end -end -CLEAN.include 'doc/api' - -# Gemspec Helpers ==================================================== - -def source_version - line = File.read('lib/sinatra/base.rb')[/^\s*VERSION = .*/] - line.match(/.*VERSION = '(.*)'/)[1] -end - -task 'sinatra.gemspec' => FileList['{lib,test,compat}/**','Rakefile','CHANGES','*.rdoc'] do |f| - # read spec file and split out manifest section - spec = File.read(f.name) - head, manifest, tail = spec.split(" # = MANIFEST =\n") - # replace version and date - head.sub!(/\.version = '.*'/, ".version = '#{source_version}'") - head.sub!(/\.date = '.*'/, ".date = '#{Date.today.to_s}'") - # determine file list from git ls-files - files = `git ls-files`. - split("\n"). - sort. - reject{ |file| file =~ /^\./ }. - reject { |file| file =~ /^doc/ }. - map{ |file| " #{file}" }. - join("\n") - # piece file back together and write... - manifest = " s.files = %w[\n#{files}\n ]\n" - spec = [head,manifest,tail].join(" # = MANIFEST =\n") - File.open(f.name, 'w') { |io| io.write(spec) } - puts "updated #{f.name}" -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/app_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/app_test.rb deleted file mode 100644 index 1a17eb63..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/app_test.rb +++ /dev/null @@ -1,282 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -context "Sinatra" do - - setup do - Sinatra.application = nil - end - - specify "should put all DSL methods on (main)" do - object = Object.new - methods = %w[get put post head delete configure template helpers set] - methods.each do |method| - object.private_methods.map { |m| m.to_sym }.should.include(method.to_sym) - end - end - - specify "should handle result of nil" do - get '/' do - nil - end - - get_it '/' - should.be.ok - body.should == '' - end - - specify "handles events" do - get '/:name' do - 'Hello ' + params["name"] - end - - get_it '/Blake' - - should.be.ok - body.should.equal 'Hello Blake' - end - - - specify "handles splats" do - get '/hi/*' do - params["splat"].kind_of?(Array).should.equal true - params["splat"].first - end - - get_it '/hi/Blake' - - should.be.ok - body.should.equal 'Blake' - end - - specify "handles multiple splats" do - get '/say/*/to/*' do - params["splat"].join(' ') - end - - get_it '/say/hello/to/world' - - should.be.ok - body.should.equal 'hello world' - end - - specify "allow empty splats" do - get '/say/*/to*/*' do - params["splat"].join(' ') - end - - get_it '/say/hello/to/world' - - should.be.ok - body.should.equal 'hello world' # second splat is empty - - get_it '/say/hello/tomy/world' - - should.be.ok - body.should.equal 'hello my world' - end - - specify "gives access to underlying response header Hash" do - get '/' do - header['X-Test'] = 'Is this thing on?' - headers 'X-Test2' => 'Foo', 'X-Test3' => 'Bar' - '' - end - - get_it '/' - should.be.ok - headers.should.include 'X-Test' - headers['X-Test'].should.equal 'Is this thing on?' - headers.should.include 'X-Test3' - headers['X-Test3'].should.equal 'Bar' - end - - specify "follows redirects" do - get '/' do - redirect '/blake' - end - - get '/blake' do - 'Mizerany' - end - - get_it '/' - should.be.redirection - body.should.equal '' - - follow! - should.be.ok - body.should.equal 'Mizerany' - end - - specify "renders a body with a redirect" do - helpers do - def foo ; 'blah' ; end - end - get "/" do - redirect 'foo', :foo - end - get_it '/' - should.be.redirection - headers['Location'].should.equal 'foo' - body.should.equal 'blah' - end - - specify "redirects permanently with 301 status code" do - get "/" do - redirect 'foo', 301 - end - get_it '/' - should.be.redirection - headers['Location'].should.equal 'foo' - status.should.equal 301 - body.should.be.empty - end - - specify "stop sets content and ends event" do - get '/set_body' do - stop 'Hello!' - stop 'World!' - fail 'stop should have halted' - end - - get_it '/set_body' - - should.be.ok - body.should.equal 'Hello!' - - end - - specify "should easily set response Content-Type" do - get '/foo.html' do - content_type 'text/html', :charset => 'utf-8' - "

    Hello, World

    " - end - - get_it '/foo.html' - should.be.ok - headers['Content-Type'].should.equal 'text/html;charset=utf-8' - body.should.equal '

    Hello, World

    ' - - get '/foo_test.xml' do - content_type :xml - "" - end - - get_it '/foo_test.xml' - should.be.ok - headers['Content-Type'].should.equal 'application/xml' - body.should.equal '' - end - - specify "supports conditional GETs with last_modified" do - modified_at = Time.now - get '/maybe' do - last_modified modified_at - 'response body, maybe' - end - - get_it '/maybe' - should.be.ok - body.should.equal 'response body, maybe' - - get_it '/maybe', :env => { 'HTTP_IF_MODIFIED_SINCE' => modified_at.httpdate } - status.should.equal 304 - body.should.equal '' - end - - specify "supports conditional GETs with entity_tag" do - get '/strong' do - entity_tag 'FOO' - 'foo response' - end - - get_it '/strong' - should.be.ok - body.should.equal 'foo response' - - get_it '/strong', {}, - 'HTTP_IF_NONE_MATCH' => '"BAR"' - should.be.ok - body.should.equal 'foo response' - - get_it '/strong', {}, - 'HTTP_IF_NONE_MATCH' => '"FOO"' - status.should.equal 304 - body.should.equal '' - - get_it '/strong', {}, - 'HTTP_IF_NONE_MATCH' => '"BAR", *' - status.should.equal 304 - body.should.equal '' - end - - specify "delegates HEAD requests to GET handlers" do - get '/invisible' do - "I am invisible to the world" - end - - head_it '/invisible' - should.be.ok - body.should.not.equal "I am invisible to the world" - body.should.equal '' - end - - - specify "supports PUT" do - put '/' do - 'puted' - end - put_it '/' - assert_equal 'puted', body - end - - specify "rewrites POSTs with _method param to PUT" do - put '/' do - 'puted' - end - post_it '/', :_method => 'PUT' - assert_equal 'puted', body - end - - specify "rewrites POSTs with lowercase _method param to PUT" do - put '/' do - 'puted' - end - post_it '/', :_method => 'put' - body.should.equal 'puted' - end - - specify "does not rewrite GETs with _method param to PUT" do - get '/' do - 'getted' - end - get_it '/', :_method => 'put' - should.be.ok - body.should.equal 'getted' - end - - specify "ignores _method query string parameter on non-POST requests" do - post '/' do - 'posted' - end - put '/' do - 'booo' - end - post_it "/?_method=PUT" - should.be.ok - body.should.equal 'posted' - end - - specify "does not read body if content type is not url encoded" do - post '/foo.xml' do - request.env['CONTENT_TYPE'].should.be == 'application/xml' - request.content_type.should.be == 'application/xml' - request.body.read - end - - post_it '/foo.xml', '', :content_type => 'application/xml' - @response.should.be.ok - @response.body.should.be == '' - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/application_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/application_test.rb deleted file mode 100644 index af8d33b2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/application_test.rb +++ /dev/null @@ -1,262 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -require 'uri' - -class TesterWithEach - def each - yield 'foo' - yield 'bar' - yield 'baz' - end -end - -context "An app returns" do - - setup do - Sinatra.application = nil - end - - specify "404 if no events found" do - request = Rack::MockRequest.new(@app) - get_it '/' - should.be.not_found - body.should.equal '

    Not Found

    ' - end - - specify "200 if success" do - get '/' do - 'Hello World' - end - get_it '/' - should.be.ok - body.should.equal 'Hello World' - end - - specify "an objects result from each if it has it" do - - get '/' do - TesterWithEach.new - end - - get_it '/' - should.be.ok - body.should.equal 'foobarbaz' - - end - - specify "404 if NotFound is raised" do - - get '/' do - raise Sinatra::NotFound - end - - get_it '/' - should.be.not_found - - end - -end - -context "Application#configure blocks" do - - setup do - Sinatra.application = nil - end - - specify "run when no environment specified" do - ref = false - configure { ref = true } - ref.should.equal true - end - - specify "run when matching environment specified" do - ref = false - configure(:test) { ref = true } - ref.should.equal true - end - - specify "do not run when no matching environment specified" do - configure(:foo) { flunk "block should not have been executed" } - configure(:development, :production, :foo) { flunk "block should not have been executed" } - end - - specify "accept multiple environments" do - ref = false - configure(:foo, :test, :bar) { ref = true } - ref.should.equal true - end - -end - -context "Events in an app" do - - setup do - Sinatra.application = nil - end - - specify "evaluate in a clean context" do - helpers do - def foo - 'foo' - end - end - - get '/foo' do - foo - end - - get_it '/foo' - should.be.ok - body.should.equal 'foo' - end - - specify "get access to request, response, and params" do - get '/:foo' do - params["foo"] + params["bar"] - end - - get_it '/foo?bar=baz' - should.be.ok - body.should.equal 'foobaz' - end - - specify "can filters by agent" do - - get '/', :agent => /Windows/ do - request.env['HTTP_USER_AGENT'] - end - - get_it '/', :env => { :agent => 'Windows' } - should.be.ok - body.should.equal 'Windows' - - get_it '/', :env => { :agent => 'Mac' } - should.not.be.ok - - end - - specify "can use regex to get parts of user-agent" do - - get '/', :agent => /Windows (NT)/ do - params[:agent].first - end - - get_it '/', :env => { :agent => 'Windows NT' } - - body.should.equal 'NT' - - end - - specify "can deal with spaces in paths" do - - path = '/path with spaces' - - get path do - "Look ma, a path with spaces!" - end - - get_it URI.encode(path) - - body.should.equal "Look ma, a path with spaces!" - end - - specify "route based on host" do - - get '/' do - 'asdf' - end - - get_it '/' - assert ok? - assert_equal('asdf', body) - - get '/foo', :host => 'foo.sinatrarb.com' do - 'in foo!' - end - - get '/foo', :host => 'bar.sinatrarb.com' do - 'in bar!' - end - - get_it '/foo', {}, 'HTTP_HOST' => 'foo.sinatrarb.com' - assert ok? - assert_equal 'in foo!', body - - get_it '/foo', {}, 'HTTP_HOST' => 'bar.sinatrarb.com' - assert ok? - assert_equal 'in bar!', body - - get_it '/foo' - assert not_found? - - end - -end - - -context "Options in an app" do - - setup do - Sinatra.application = nil - @app = Sinatra::application - end - - specify "can be set singly on app" do - @app.set :foo, 1234 - @app.options.foo.should.equal 1234 - end - - specify "can be set singly from top-level" do - set_option :foo, 1234 - @app.options.foo.should.equal 1234 - end - - specify "can be set multiply on app" do - @app.options.foo.should.be.nil - @app.set :foo => 1234, - :bar => 'hello, world' - @app.options.foo.should.equal 1234 - @app.options.bar.should.equal 'hello, world' - end - - specify "can be set multiply from top-level" do - @app.options.foo.should.be.nil - set_options :foo => 1234, - :bar => 'hello, world' - @app.options.foo.should.equal 1234 - @app.options.bar.should.equal 'hello, world' - end - - specify "can be enabled on app" do - @app.options.foo.should.be.nil - @app.enable :sessions, :foo, :bar - @app.options.sessions.should.equal true - @app.options.foo.should.equal true - @app.options.bar.should.equal true - end - - specify "can be enabled from top-level" do - @app.options.foo.should.be.nil - enable :sessions, :foo, :bar - @app.options.sessions.should.equal true - @app.options.foo.should.equal true - @app.options.bar.should.equal true - end - - specify "can be disabled on app" do - @app.options.foo.should.be.nil - @app.disable :sessions, :foo, :bar - @app.options.sessions.should.equal false - @app.options.foo.should.equal false - @app.options.bar.should.equal false - end - - specify "can be enabled from top-level" do - @app.options.foo.should.be.nil - disable :sessions, :foo, :bar - @app.options.sessions.should.equal false - @app.options.foo.should.equal false - @app.options.bar.should.equal false - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/builder_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/builder_test.rb deleted file mode 100644 index 5abc83bd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/builder_test.rb +++ /dev/null @@ -1,101 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -context "Builder" do - - setup do - Sinatra.application = nil - end - - context "without layouts" do - - setup do - Sinatra.application = nil - end - - specify "should render" do - - get '/no_layout' do - builder 'xml.instruct!' - end - - get_it '/no_layout' - should.be.ok - body.should == %(\n) - - end - - specify "should render inline block" do - - get '/no_layout_and_inlined' do - @name = "Frank & Mary" - builder do |xml| - xml.couple @name - end - end - - get_it '/no_layout_and_inlined' - should.be.ok - body.should == %(Frank & Mary\n) - - end - - end - - - - context "Templates (in general)" do - - setup do - Sinatra.application = nil - end - - specify "are read from files if Symbols" do - - get '/from_file' do - @name = 'Blue' - builder :foo, :views_directory => File.dirname(__FILE__) + "/views" - end - - get_it '/from_file' - should.be.ok - body.should.equal %(You rock Blue!\n) - - end - - specify "use layout.ext by default if available" do - - get '/' do - builder :foo, :views_directory => File.dirname(__FILE__) + "/views/layout_test" - end - - get_it '/' - should.be.ok - body.should.equal "\nis foo!\n\n" - - end - - specify "renders without layout" do - - get '/' do - builder :no_layout, :views_directory => File.dirname(__FILE__) + "/views/no_layout" - end - - get_it '/' - should.be.ok - body.should.equal "No Layout!\n" - - end - - specify "raises error if template not found" do - - get '/' do - builder :not_found - end - - lambda { get_it '/' }.should.raise(Errno::ENOENT) - - end - - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/compat_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/compat_test.rb deleted file mode 100644 index 00978197..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/compat_test.rb +++ /dev/null @@ -1,12 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -context "Compat" do - setup do - Sinatra.application = nil - @app = Sinatra.application - end - - specify "makes EventContext available" do - assert_same Sinatra::Default, Sinatra::EventContext - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/custom_error_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/custom_error_test.rb deleted file mode 100644 index e4fdb759..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/custom_error_test.rb +++ /dev/null @@ -1,62 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -context "Custom Errors" do - - setup do - Sinatra.application = nil - end - - specify "override the default 404" do - - get_it '/' - should.be.not_found - body.should.equal '

    Not Found

    ' - - error Sinatra::NotFound do - 'Custom 404' - end - - get_it '/' - should.be.not_found - body.should.equal 'Custom 404' - - end - - specify "override the default 500" do - Sinatra.application.options.raise_errors = false - - get '/' do - raise 'asdf' - end - - get_it '/' - status.should.equal 500 - body.should.equal '

    Internal Server Error

    ' - - - error do - 'Custom 500 for ' + request.env['sinatra.error'].message - end - - get_it '/' - - get_it '/' - status.should.equal 500 - body.should.equal 'Custom 500 for asdf' - - Sinatra.application.options.raise_errors = true - end - - class UnmappedError < RuntimeError; end - - specify "should bring unmapped error back to the top" do - get '/' do - raise UnmappedError, 'test' - end - - assert_raises(UnmappedError) do - get_it '/' - end - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/erb_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/erb_test.rb deleted file mode 100644 index 51a79593..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/erb_test.rb +++ /dev/null @@ -1,136 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -context "Erb" do - - setup do - Sinatra.application = nil - end - - context "without layouts" do - - setup do - Sinatra.application = nil - end - - specify "should render" do - - get '/no_layout' do - erb '<%= 1 + 1 %>' - end - - get_it '/no_layout' - should.be.ok - body.should == '2' - - end - - specify "should take an options hash with :locals set with a string" do - get '/locals' do - erb '<%= foo %>', :locals => {:foo => "Bar"} - end - - get_it '/locals' - should.be.ok - body.should == 'Bar' - end - - specify "should take an options hash with :locals set with a complex object" do - get '/locals-complex' do - erb '<%= foo[0] %>', :locals => {:foo => ["foo", "bar", "baz"]} - end - - get_it '/locals-complex' - should.be.ok - body.should == 'foo' - end - end - - context "with layouts" do - - setup do - Sinatra.application = nil - end - - specify "can be inline" do - - layout do - %Q{This is <%= yield %>!} - end - - get '/lay' do - erb 'Blake' - end - - get_it '/lay' - should.be.ok - body.should.equal 'This is Blake!' - - end - - specify "can use named layouts" do - - layout :pretty do - %Q{

    <%= yield %>

    } - end - - get '/pretty' do - erb 'Foo', :layout => :pretty - end - - get '/not_pretty' do - erb 'Bar' - end - - get_it '/pretty' - body.should.equal '

    Foo

    ' - - get_it '/not_pretty' - body.should.equal 'Bar' - - end - - specify "can be read from a file if they're not inlined" do - - get '/foo' do - @title = 'Welcome to the Hello Program' - erb 'Blake', :layout => :foo_layout, - :views_directory => File.dirname(__FILE__) + "/views" - end - - get_it '/foo' - body.should.equal "Welcome to the Hello Program\nHi Blake\n" - - end - - end - - context "Templates (in general)" do - - specify "are read from files if Symbols" do - - get '/from_file' do - @name = 'Alena' - erb :foo, :views_directory => File.dirname(__FILE__) + "/views" - end - - get_it '/from_file' - - body.should.equal 'You rock Alena!' - - end - - specify "use layout.ext by default if available" do - - get '/layout_from_file' do - erb :foo, :views_directory => File.dirname(__FILE__) + "/views/layout_test" - end - - get_it '/layout_from_file' - should.be.ok - body.should.equal "x This is foo! x \n" - - end - - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/events_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/events_test.rb deleted file mode 100644 index 42cdb95c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/events_test.rb +++ /dev/null @@ -1,78 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -context "Simple Events" do - def simple_request_hash(method, path) - Rack::Request.new({ - 'REQUEST_METHOD' => method.to_s.upcase, - 'PATH_INFO' => path - }) - end - - class MockResult < Struct.new(:block, :params) - end - - def invoke_simple(path, request_path, &b) - params = nil - get path do - params = self.params - b.call if b - end - get_it request_path - MockResult.new(b, params) - end - - setup { Sinatra.application = nil } - - specify "return last value" do - block = Proc.new { 'Simple' } - result = invoke_simple('/', '/', &block) - result.should.not.be.nil - result.block.should.be block - result.params.should.equal Hash.new - end - - specify "takes params in path" do - result = invoke_simple('/:foo/:bar', '/a/b') - result.should.not.be.nil - result.params.should.equal "foo" => 'a', "bar" => 'b' - - # unscapes - Sinatra.application = nil - result = invoke_simple('/:foo/:bar', '/a/blake%20mizerany') - result.should.not.be.nil - result.params.should.equal "foo" => 'a', "bar" => 'blake mizerany' - end - - specify "takes optional params in path" do - result = invoke_simple('/?:foo?/?:bar?', '/a/b') - result.should.not.be.nil - result.params.should.equal "foo" => 'a', "bar" => 'b' - - Sinatra.application = nil - result = invoke_simple('/?:foo?/?:bar?', '/a/') - result.should.not.be.nil - result.params.should.equal "foo" => 'a', "bar" => nil - - Sinatra.application = nil - result = invoke_simple('/?:foo?/?:bar?', '/a') - result.should.not.be.nil - result.params.should.equal "foo" => 'a', "bar" => nil - - Sinatra.application = nil - result = invoke_simple('/:foo?/?:bar?', '/') - result.should.not.be.nil - result.params.should.equal "foo" => nil, "bar" => nil - end - - specify "ignores to many /'s" do - result = invoke_simple('/x/y', '/x//y') - result.should.not.be.nil - end - - specify "understands splat" do - invoke_simple('/foo/*', '/foo/bar').should.not.be.nil - invoke_simple('/foo/*', '/foo/bar/baz').should.not.be.nil - invoke_simple('/foo/*', '/foo/baz').should.not.be.nil - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/filter_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/filter_test.rb deleted file mode 100644 index 0a52ec6f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/filter_test.rb +++ /dev/null @@ -1,30 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -context "before filters" do - - setup do - Sinatra.application = nil - @app = Sinatra.application - end - - specify "should be executed in the order defined" do - invoked = 0x0 - @app.before { invoked = 0x01 } - @app.before { invoked |= 0x02 } - @app.get('/') { 'Hello World' } - get_it '/' - should.be.ok - body.should.be == 'Hello World' - invoked.should.be == 0x03 - end - - specify "should be capable of modifying the request" do - @app.get('/foo') { 'foo' } - @app.get('/bar') { 'bar' } - @app.before { request.path_info = '/bar' } - get_it '/foo' - should.be.ok - body.should.be == 'bar' - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/haml_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/haml_test.rb deleted file mode 100644 index 532414cd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/haml_test.rb +++ /dev/null @@ -1,236 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -context "Haml" do - - setup do - Sinatra.application = nil - end - - context "without layouts" do - - setup do - Sinatra.application = nil - end - - specify "should render" do - - get '/no_layout' do - haml '== #{1+1}' - end - - get_it '/no_layout' - should.be.ok - body.should == "2\n" - - end - end - - context "with layouts" do - - setup do - Sinatra.application = nil - end - - specify "can be inline" do - - layout do - '== This is #{yield}!' - end - - get '/lay' do - haml 'Blake' - end - - get_it '/lay' - should.be.ok - body.should.equal "This is Blake\n!\n" - - end - - specify "can use named layouts" do - - layout :pretty do - '%h1== #{yield}' - end - - get '/pretty' do - haml 'Foo', :layout => :pretty - end - - get '/not_pretty' do - haml 'Bar' - end - - get_it '/pretty' - body.should.equal "

    Foo

    \n" - - get_it '/not_pretty' - body.should.equal "Bar\n" - - end - - specify "can be read from a file if they're not inlined" do - - get '/foo' do - @title = 'Welcome to the Hello Program' - haml 'Blake', :layout => :foo_layout, - :views_directory => File.dirname(__FILE__) + "/views" - end - - get_it '/foo' - body.should.equal "Welcome to the Hello Program\nHi Blake\n" - - end - - specify "can be read from file and layout from text" do - get '/foo' do - haml 'Test', :layout => '== Foo #{yield}' - end - - get_it '/foo' - - body.should.equal "Foo Test\n" - end - - end - - context "Templates (in general)" do - - setup do - Sinatra.application = nil - end - - specify "are read from files if Symbols" do - - get '/from_file' do - @name = 'Alena' - haml :foo, :views_directory => File.dirname(__FILE__) + "/views" - end - - get_it '/from_file' - - body.should.equal "You rock Alena!\n" - - end - - specify "use layout.ext by default if available" do - - get '/' do - haml :foo, :views_directory => File.dirname(__FILE__) + "/views/layout_test" - end - - get_it '/' - should.be.ok - body.should.equal "x This is foo!\n x\n" - - end - - specify "renders without layout" do - - get '/' do - haml :no_layout, :views_directory => File.dirname(__FILE__) + "/views/no_layout" - end - - get_it '/' - should.be.ok - body.should.equal "

    No Layout!

    \n" - - end - - specify "can render with no layout" do - layout do - "X\n= yield\nX" - end - - get '/' do - haml 'blake', :layout => false - end - - get_it '/' - - body.should.equal "blake\n" - end - - specify "raises error if template not found" do - get '/' do - haml :not_found - end - - lambda { get_it '/' }.should.raise(Errno::ENOENT) - end - - specify "use layout.ext by default if available" do - - template :foo do - 'asdf' - end - - get '/' do - haml :foo, :layout => false, - :views_directory => File.dirname(__FILE__) + "/views/layout_test" - end - - get_it '/' - should.be.ok - body.should.equal "asdf\n" - - end - - end - - describe 'Options passed to the HAML interpreter' do - setup do - Sinatra.application = nil - end - - specify 'default to filename and line of caller' do - - get '/' do - haml 'foo' - end - - Haml::Engine.expects(:new).with('foo', {:filename => __FILE__, - :line => (__LINE__-4)}).returns(stub(:render => 'foo')) - - get_it '/' - should.be.ok - - end - - specify 'can be configured by passing :options to haml' do - - get '/' do - haml 'foo', :options => {:format => :html4} - end - - Haml::Engine.expects(:new).with('foo', {:filename => __FILE__, - :line => (__LINE__-4), :format => :html4}).returns(stub(:render => 'foo')) - - get_it '/' - should.be.ok - - end - - specify 'can be configured using set_option :haml' do - - configure do - set_option :haml, :format => :html4, - :escape_html => true - end - - get '/' do - haml 'foo' - end - - Haml::Engine.expects(:new).with('foo', {:filename => __FILE__, - :line => (__LINE__-4), :format => :html4, - :escape_html => true}).returns(stub(:render => 'foo')) - - get_it '/' - should.be.ok - - end - - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/helper.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/helper.rb deleted file mode 100644 index 696fe96e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/helper.rb +++ /dev/null @@ -1,33 +0,0 @@ -require 'rubygems' -require 'mocha' - -# disable warnings in compat specs. -$VERBOSE = nil - -$:.unshift File.dirname(File.dirname(__FILE__)) + "/lib" - -ENV['RACK_ENV'] ||= 'test' - -require 'sinatra' -require 'sinatra/test' -require 'sinatra/test/unit' -require 'sinatra/test/spec' - -module Sinatra::Test - # we need to remove the new test helper methods since they conflict with - # the top-level methods of the same name. - %w(get head post put delete).each do |verb| - remove_method verb - end - include Sinatra::Delegator -end - -class Test::Unit::TestCase - include Sinatra::Test - - PASSTHROUGH_EXCEPTIONS = [] unless const_defined?(:PASSTHROUGH_EXCEPTIONS) - - def setup - @app = lambda { |env| Sinatra::Application.call(env) } - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/mapped_error_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/mapped_error_test.rb deleted file mode 100644 index e6256b47..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/mapped_error_test.rb +++ /dev/null @@ -1,72 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class FooError < RuntimeError; end - -context "Mapped errors" do - - setup do - Sinatra.application = nil - Sinatra.application.options.raise_errors = false - end - - specify "are rescued and run in context" do - - error FooError do - 'MAPPED ERROR!' - end - - get '/' do - raise FooError - end - - get_it '/' - - should.be.server_error - body.should.equal 'MAPPED ERROR!' - - end - - specify "renders empty if no each method on result" do - - error FooError do - nil - end - - get '/' do - raise FooError - end - - get_it '/' - - should.be.server_error - body.should.be.empty - - end - - specify "doesn't override status if set" do - - error FooError do - status(200) - end - - get '/' do - raise FooError - end - - get_it '/' - - should.be.ok - - end - - specify "raises errors when the raise_errors option is set" do - Sinatra.application.options.raise_errors = true - error FooError do - end - get '/' do - raise FooError - end - assert_raises(FooError) { get_it('/') } - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/pipeline_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/pipeline_test.rb deleted file mode 100644 index a9eb360a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/pipeline_test.rb +++ /dev/null @@ -1,45 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class UpcaseMiddleware - def initialize(app, *args, &block) - @app = app - @args = args - @block = block - end - def call(env) - env['PATH_INFO'] = env['PATH_INFO'].to_s.upcase - @app.call(env) - end -end - -context "Middleware Pipelines" do - - setup do - Sinatra.application = nil - @app = Sinatra.application - end - - teardown do - Sinatra.application = nil - end - - specify "should add middleware with use" do - block = Proc.new { |env| } - @app.use UpcaseMiddleware - @app.use UpcaseMiddleware, "foo", "bar" - @app.use UpcaseMiddleware, "foo", "bar", &block - @app.send(:middleware).should.include([UpcaseMiddleware, [], nil]) - @app.send(:middleware).should.include([UpcaseMiddleware, ["foo", "bar"], nil]) - @app.send(:middleware).should.include([UpcaseMiddleware, ["foo", "bar"], block]) - end - - specify "should run middleware added with use" do - get('/foo') { "FAIL!" } - get('/FOO') { "PASS!" } - use UpcaseMiddleware - get_it '/foo' - should.be.ok - body.should.equal "PASS!" - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/public/foo.xml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/public/foo.xml deleted file mode 100644 index 74d9a6d3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/public/foo.xml +++ /dev/null @@ -1 +0,0 @@ - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/sass_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/sass_test.rb deleted file mode 100644 index 1b9745cc..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/sass_test.rb +++ /dev/null @@ -1,67 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -context "Sass" do - - setup do - Sinatra.application = nil - end - - context "Templates (in general)" do - - setup do - Sinatra.application = nil - end - - specify "are read from files if Symbols" do - - get '/from_file' do - sass :foo, :views_directory => File.dirname(__FILE__) + "/views" - end - - get_it '/from_file' - should.be.ok - body.should.equal "#sass {\n background_color: #FFF; }\n" - - end - - specify "raise an error if template not found" do - get '/' do - sass :not_found - end - - lambda { get_it '/' }.should.raise(Errno::ENOENT) - end - - specify "ignore default layout file with .sass extension" do - get '/' do - sass :foo, :views_directory => File.dirname(__FILE__) + "/views/layout_test" - end - - get_it '/' - should.be.ok - body.should.equal "#sass {\n background_color: #FFF; }\n" - end - - specify "ignore explicitly specified layout file" do - get '/' do - sass :foo, :layout => :layout, :views_directory => File.dirname(__FILE__) + "/views/layout_test" - end - - get_it '/' - should.be.ok - body.should.equal "#sass {\n background_color: #FFF; }\n" - end - - it "passes :sass option to the Sass engine" do - get '/' do - sass "#sass\n :background-color #FFF\n :color #000\n", :sass => {:style => :compact} - end - - get_it '/' - should.be.ok - body.should.equal "#sass { background-color: #FFF; color: #000; }\n" - end - - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/sessions_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/sessions_test.rb deleted file mode 100644 index 9d9622db..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/sessions_test.rb +++ /dev/null @@ -1,42 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -context "Sessions" do - - setup { Sinatra.application = nil } - - specify "should be off by default" do - get '/asdf' do - session[:test] = true - "asdf" - end - - get '/test' do - session[:test] == true ? "true" : "false" - end - - get_it '/asdf', {}, 'HTTP_HOST' => 'foo.sinatrarb.com' - assert ok? - assert !include?('Set-Cookie') - end - - specify "should be able to store data accross requests" do - set_option :sessions, true - set_option :environment, :not_test # necessary because sessions are disabled - - get '/foo' do - session[:test] = true - "asdf" - end - - get '/bar' do - session[:test] == true ? "true" : "false" - end - - get_it '/foo', :env => { :host => 'foo.sinatrarb.com' } - assert ok? - assert include?('Set-Cookie') - - set_option :environment, :test - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/streaming_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/streaming_test.rb deleted file mode 100644 index cf3727be..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/streaming_test.rb +++ /dev/null @@ -1,133 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -context "Static files (by default)" do - - setup do - Sinatra.application = nil - Sinatra.application.options.public = File.dirname(__FILE__) + '/public' - end - - specify "are served from root/public" do - get_it '/foo.xml' - should.be.ok - headers['Content-Length'].should.equal '12' - headers['Content-Type'].should.equal 'application/xml' - body.should.equal "\n" - end - - specify "are not served when verb is not GET or HEAD" do - post_it '/foo.xml' - # these should actually be giving back a 405 Method Not Allowed but that - # complicates the routing logic quite a bit. - should.be.not_found - status.should.equal 404 - end - - specify "are served when verb is HEAD but missing a body" do - head_it '/foo.xml' - should.be.ok - headers['Content-Length'].should.equal '12' - headers['Content-Type'].should.equal 'application/xml' - body.should.equal "" - end - - # static files override dynamic/internal events and ... - specify "are served when conflicting events exists" do - get '/foo.xml' do - 'this is not foo.xml!' - end - get_it '/foo.xml' - should.be.ok - body.should.equal "\n" - end - - specify "are irrelevant when request_method is not GET/HEAD" do - put '/foo.xml' do - 'putted!' - end - put_it '/foo.xml' - should.be.ok - body.should.equal 'putted!' - - get_it '/foo.xml' - should.be.ok - body.should.equal "\n" - end - - specify "include a Last-Modified header" do - last_modified = File.mtime(Sinatra.application.options.public + '/foo.xml') - get_it('/foo.xml') - should.be.ok - body.should.not.be.empty - headers['Last-Modified'].should.equal last_modified.httpdate - end - - # Deprecated. Use: ConditionalGet middleware. - specify "are not served when If-Modified-Since matches" do - last_modified = File.mtime(Sinatra.application.options.public + '/foo.xml') - @request = Rack::MockRequest.new(Sinatra.application) - @response = @request.get('/foo.xml', 'HTTP_IF_MODIFIED_SINCE' => last_modified.httpdate) - status.should.equal 304 - body.should.be.empty - end - - specify "should omit Content-Disposition headers" do - get_it('/foo.xml') - should.be.ok - headers['Content-Disposition'].should.be.nil - headers['Content-Transfer-Encoding'].should.be.nil - end - - specify "should be served even if their path is url escaped" do - get_it('/fo%6f.xml') - should.be.ok - body.should.equal "\n" - end - -end - -context "SendData" do - - setup do - Sinatra.application = nil - end - - # Deprecated. send_data is going away. - specify "should send the data with options" do - get '/' do - send_data 'asdf', :status => 500 - end - - get_it '/' - - should.be.server_error - body.should.equal 'asdf' - end - - # Deprecated. The Content-Disposition is no longer handled by sendfile. - specify "should include a Content-Disposition header" do - get '/' do - send_file File.dirname(__FILE__) + '/public/foo.xml', - :disposition => 'attachment' - end - - get_it '/' - - should.be.ok - headers['Content-Disposition'].should.not.be.nil - headers['Content-Disposition'].should.equal 'attachment; filename="foo.xml"' - end - - specify "should include a Content-Disposition header when :disposition set to attachment" do - get '/' do - send_file File.dirname(__FILE__) + '/public/foo.xml', - :disposition => 'attachment' - end - - get_it '/' - - should.be.ok - headers['Content-Disposition'].should.not.be.nil - headers['Content-Disposition'].should.equal 'attachment; filename="foo.xml"' - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/sym_params_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/sym_params_test.rb deleted file mode 100644 index 2172be0c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/sym_params_test.rb +++ /dev/null @@ -1,19 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -context "Symbol Params" do - - setup do - Sinatra.application = nil - end - - specify "should be accessable as Strings or Symbols" do - get '/' do - params[:foo] + params['foo'] - end - - get_it '/', :foo => "X" - assert_equal('XX', body) - end - -end - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/template_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/template_test.rb deleted file mode 100644 index 1e27578f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/template_test.rb +++ /dev/null @@ -1,30 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -context "Templates" do - - specify "are read from files if Symbols" do - - get '/from_file' do - @name = 'Alena' - erb :foo, :views_directory => File.dirname(__FILE__) + "/views" - end - - get_it '/from_file' - - body.should.equal 'You rock Alena!' - - end - - specify "use layout.ext by default if available" do - - get '/layout_from_file' do - erb :foo, :views_directory => File.dirname(__FILE__) + "/views/layout_test" - end - - get_it '/layout_from_file' - should.be.ok - body.should.equal "x This is foo! x \n" - - end - -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/use_in_file_templates_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/use_in_file_templates_test.rb deleted file mode 100644 index 265f07de..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/use_in_file_templates_test.rb +++ /dev/null @@ -1,47 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -context "Rendering in file templates" do - - setup do - Sinatra.application = nil - use_in_file_templates! - end - - specify "should set template" do - assert Sinatra.application.templates[:foo] - end - - specify "should set layout" do - assert Sinatra.application.templates[:layout] - end - - specify "should render without layout if specified" do - get '/' do - haml :foo, :layout => false - end - - get_it '/' - assert_equal "this is foo\n", body - end - - specify "should render with layout if specified" do - get '/' do - haml :foo - end - - get_it '/' - assert_equal "X\nthis is foo\nX\n", body - end - -end - -__END__ - -@@ foo -this is foo - -@@ layout -X -= yield -X - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo.builder b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo.builder deleted file mode 100644 index dfa91a64..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo.builder +++ /dev/null @@ -1 +0,0 @@ -xml.exclaim "You rock #{@name}!" diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo.erb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo.erb deleted file mode 100644 index fac96378..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo.erb +++ /dev/null @@ -1 +0,0 @@ -You rock <%= @name %>! \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo.haml deleted file mode 100644 index 0fcc4f40..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo.haml +++ /dev/null @@ -1 +0,0 @@ -== You rock #{@name}! \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo.sass deleted file mode 100644 index 12340f70..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo.sass +++ /dev/null @@ -1,2 +0,0 @@ -#sass - :background_color #FFF \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo_layout.erb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo_layout.erb deleted file mode 100644 index 6e39e8c7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo_layout.erb +++ /dev/null @@ -1,2 +0,0 @@ -<%= @title %> -Hi <%= yield %> diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo_layout.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo_layout.haml deleted file mode 100644 index 5c041fb0..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/foo_layout.haml +++ /dev/null @@ -1,2 +0,0 @@ -== #{@title} -== Hi #{yield} diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/foo.builder b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/foo.builder deleted file mode 100644 index 910eb1de..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/foo.builder +++ /dev/null @@ -1 +0,0 @@ -xml.this "is foo!" diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/foo.erb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/foo.erb deleted file mode 100644 index 10872edd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/foo.erb +++ /dev/null @@ -1 +0,0 @@ -This is foo! \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/foo.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/foo.haml deleted file mode 100644 index 10872edd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/foo.haml +++ /dev/null @@ -1 +0,0 @@ -This is foo! \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/foo.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/foo.sass deleted file mode 100644 index 12340f70..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/foo.sass +++ /dev/null @@ -1,2 +0,0 @@ -#sass - :background_color #FFF \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/layout.builder b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/layout.builder deleted file mode 100644 index 9491f574..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/layout.builder +++ /dev/null @@ -1,3 +0,0 @@ -xml.layout do - xml << yield -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/layout.erb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/layout.erb deleted file mode 100644 index 7fec122a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/layout.erb +++ /dev/null @@ -1 +0,0 @@ -x <%= yield %> x diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/layout.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/layout.haml deleted file mode 100644 index 75efae53..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/layout.haml +++ /dev/null @@ -1 +0,0 @@ -== x #{yield} x diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/layout.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/layout.sass deleted file mode 100644 index b2ee9d07..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/layout_test/layout.sass +++ /dev/null @@ -1,2 +0,0 @@ -b0rked! -= yield \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/no_layout/no_layout.builder b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/no_layout/no_layout.builder deleted file mode 100644 index cbf4be6d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/no_layout/no_layout.builder +++ /dev/null @@ -1 +0,0 @@ -xml.foo "No Layout!" diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/no_layout/no_layout.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/no_layout/no_layout.haml deleted file mode 100644 index 0e6bd342..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/compat/views/no_layout/no_layout.haml +++ /dev/null @@ -1 +0,0 @@ -%h1 No Layout! \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra.rb deleted file mode 100644 index 8ba17244..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra.rb +++ /dev/null @@ -1,8 +0,0 @@ -libdir = File.dirname(__FILE__) -$LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir) - -require 'sinatra/base' -require 'sinatra/main' -require 'sinatra/compat' - -use_in_file_templates! diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/base.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/base.rb deleted file mode 100644 index aee52fcb..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/base.rb +++ /dev/null @@ -1,1119 +0,0 @@ -require 'thread' -require 'time' -require 'uri' -require 'rack' -require 'rack/builder' -require 'sinatra/showexceptions' - -module Sinatra - VERSION = '0.9.4' - - # The request object. See Rack::Request for more info: - # http://rack.rubyforge.org/doc/classes/Rack/Request.html - class Request < Rack::Request - def user_agent - @env['HTTP_USER_AGENT'] - end - - # Returns an array of acceptable media types for the response - def accept - @env['HTTP_ACCEPT'].to_s.split(',').map { |a| a.strip } - end - - # Override Rack 0.9.x's #params implementation (see #72 in lighthouse) - def params - self.GET.update(self.POST) - rescue EOFError, Errno::ESPIPE - self.GET - end - end - - # The response object. See Rack::Response and Rack::ResponseHelpers for - # more info: - # http://rack.rubyforge.org/doc/classes/Rack/Response.html - # http://rack.rubyforge.org/doc/classes/Rack/Response/Helpers.html - class Response < Rack::Response - def finish - @body = block if block_given? - if [204, 304].include?(status.to_i) - header.delete "Content-Type" - [status.to_i, header.to_hash, []] - else - body = @body || [] - body = [body] if body.respond_to? :to_str - if body.respond_to?(:to_ary) - header["Content-Length"] = body.to_ary. - inject(0) { |len, part| len + part.bytesize }.to_s - end - [status.to_i, header.to_hash, body] - end - end - end - - class NotFound < NameError #:nodoc: - def code ; 404 ; end - end - - # Methods available to routes, before filters, and views. - module Helpers - # Set or retrieve the response status code. - def status(value=nil) - response.status = value if value - response.status - end - - # Set or retrieve the response body. When a block is given, - # evaluation is deferred until the body is read with #each. - def body(value=nil, &block) - if block_given? - def block.each ; yield call ; end - response.body = block - else - response.body = value - end - end - - # Halt processing and redirect to the URI provided. - def redirect(uri, *args) - status 302 - response['Location'] = uri - halt(*args) - end - - # Halt processing and return the error status provided. - def error(code, body=nil) - code, body = 500, code.to_str if code.respond_to? :to_str - response.body = body unless body.nil? - halt code - end - - # Halt processing and return a 404 Not Found. - def not_found(body=nil) - error 404, body - end - - # Set multiple response headers with Hash. - def headers(hash=nil) - response.headers.merge! hash if hash - response.headers - end - - # Access the underlying Rack session. - def session - env['rack.session'] ||= {} - end - - # Look up a media type by file extension in Rack's mime registry. - def media_type(type) - Base.media_type(type) - end - - # Set the Content-Type of the response body given a media type or file - # extension. - def content_type(type, params={}) - media_type = self.media_type(type) - fail "Unknown media type: %p" % type if media_type.nil? - if params.any? - params = params.collect { |kv| "%s=%s" % kv }.join(', ') - response['Content-Type'] = [media_type, params].join(";") - else - response['Content-Type'] = media_type - end - end - - # Set the Content-Disposition to "attachment" with the specified filename, - # instructing the user agents to prompt to save. - def attachment(filename=nil) - response['Content-Disposition'] = 'attachment' - if filename - params = '; filename="%s"' % File.basename(filename) - response['Content-Disposition'] << params - end - end - - # Use the contents of the file at +path+ as the response body. - def send_file(path, opts={}) - stat = File.stat(path) - last_modified stat.mtime - - content_type media_type(opts[:type]) || - media_type(File.extname(path)) || - response['Content-Type'] || - 'application/octet-stream' - - response['Content-Length'] ||= (opts[:length] || stat.size).to_s - - if opts[:disposition] == 'attachment' || opts[:filename] - attachment opts[:filename] || path - elsif opts[:disposition] == 'inline' - response['Content-Disposition'] = 'inline' - end - - halt StaticFile.open(path, 'rb') - rescue Errno::ENOENT - not_found - end - - # Rack response body used to deliver static files. The file contents are - # generated iteratively in 8K chunks. - class StaticFile < ::File #:nodoc: - alias_method :to_path, :path - def each - rewind - while buf = read(8192) - yield buf - end - end - end - - # Set the last modified time of the resource (HTTP 'Last-Modified' header) - # and halt if conditional GET matches. The +time+ argument is a Time, - # DateTime, or other object that responds to +to_time+. - # - # When the current request includes an 'If-Modified-Since' header that - # matches the time specified, execution is immediately halted with a - # '304 Not Modified' response. - def last_modified(time) - time = time.to_time if time.respond_to?(:to_time) - time = time.httpdate if time.respond_to?(:httpdate) - response['Last-Modified'] = time - halt 304 if time == request.env['HTTP_IF_MODIFIED_SINCE'] - time - end - - # Set the response entity tag (HTTP 'ETag' header) and halt if conditional - # GET matches. The +value+ argument is an identifier that uniquely - # identifies the current version of the resource. The +strength+ argument - # indicates whether the etag should be used as a :strong (default) or :weak - # cache validator. - # - # When the current request includes an 'If-None-Match' header with a - # matching etag, execution is immediately halted. If the request method is - # GET or HEAD, a '304 Not Modified' response is sent. - def etag(value, kind=:strong) - raise TypeError, ":strong or :weak expected" if ![:strong,:weak].include?(kind) - value = '"%s"' % value - value = 'W/' + value if kind == :weak - response['ETag'] = value - - # Conditional GET check - if etags = env['HTTP_IF_NONE_MATCH'] - etags = etags.split(/\s*,\s*/) - halt 304 if etags.include?(value) || etags.include?('*') - end - end - - ## Sugar for redirect (example: redirect back) - def back ; request.referer ; end - - end - - # Template rendering methods. Each method takes a the name of a template - # to render as a Symbol and returns a String with the rendered output, - # as well as an optional hash with additional options. - # - # `template` is either the name or path of the template as symbol - # (Use `:'subdir/myview'` for views in subdirectories), or a string - # that will be rendered. - # - # Possible options are: - # :layout If set to false, no layout is rendered, otherwise - # the specified layout is used (Ignored for `sass`) - # :locals A hash with local variables that should be available - # in the template - module Templates - def erb(template, options={}, locals={}) - require_warn('ERB') unless defined?(::ERB) - - render :erb, template, options, locals - end - - def haml(template, options={}, locals={}) - require_warn('Haml') unless defined?(::Haml::Engine) - - render :haml, template, options, locals - end - - def sass(template, options={}, locals={}) - require_warn('Sass') unless defined?(::Sass::Engine) - - options[:layout] = false - render :sass, template, options, locals - end - - def builder(template=nil, options={}, locals={}, &block) - require_warn('Builder') unless defined?(::Builder) - - options, template = template, nil if template.is_a?(Hash) - template = lambda { block } if template.nil? - render :builder, template, options, locals - end - - private - def render(engine, template, options={}, locals={}) - # merge app-level options - options = self.class.send(engine).merge(options) if self.class.respond_to?(engine) - - # extract generic options - layout = options.delete(:layout) - layout = :layout if layout.nil? || layout == true - views = options.delete(:views) || self.class.views || "./views" - locals = options.delete(:locals) || locals || {} - - # render template - data, options[:filename], options[:line] = lookup_template(engine, template, views) - output = __send__("render_#{engine}", template, data, options, locals) - - # render layout - if layout - data, options[:filename], options[:line] = lookup_layout(engine, layout, views) - if data - output = __send__("render_#{engine}", layout, data, options, locals) { output } - end - end - - output - end - - def lookup_template(engine, template, views_dir, filename = nil, line = nil) - case template - when Symbol - if cached = self.class.templates[template] - lookup_template(engine, cached[:template], views_dir, cached[:filename], cached[:line]) - else - path = ::File.join(views_dir, "#{template}.#{engine}") - [ ::File.read(path), path, 1 ] - end - when Proc - filename, line = self.class.caller_locations.first if filename.nil? - [ template.call, filename, line.to_i ] - when String - filename, line = self.class.caller_locations.first if filename.nil? - [ template, filename, line.to_i ] - else - raise ArgumentError - end - end - - def lookup_layout(engine, template, views_dir) - lookup_template(engine, template, views_dir) - rescue Errno::ENOENT - nil - end - - def render_erb(template, data, options, locals, &block) - original_out_buf = defined?(@_out_buf) && @_out_buf - data = data.call if data.kind_of? Proc - - instance = ::ERB.new(data, nil, nil, '@_out_buf') - locals_assigns = locals.to_a.collect { |k,v| "#{k} = locals[:#{k}]" } - - filename = options.delete(:filename) || '(__ERB__)' - line = options.delete(:line) || 1 - line -= 1 if instance.src =~ /^#coding:/ - - render_binding = binding - eval locals_assigns.join("\n"), render_binding - eval instance.src, render_binding, filename, line - @_out_buf, result = original_out_buf, @_out_buf - result - end - - def render_haml(template, data, options, locals, &block) - ::Haml::Engine.new(data, options).render(self, locals, &block) - end - - def render_sass(template, data, options, locals, &block) - ::Sass::Engine.new(data, options).render - end - - def render_builder(template, data, options, locals, &block) - options = { :indent => 2 }.merge(options) - filename = options.delete(:filename) || '' - line = options.delete(:line) || 1 - xml = ::Builder::XmlMarkup.new(options) - if data.respond_to?(:to_str) - eval data.to_str, binding, filename, line - elsif data.kind_of?(Proc) - data.call(xml) - end - xml.target! - end - - def require_warn(engine) - warn "Auto-require of #{engine} is deprecated; add require '#{engine}' to your app." - require engine.downcase - end - end - - # Base class for all Sinatra applications and middleware. - class Base - include Rack::Utils - include Helpers - include Templates - - attr_accessor :app - - def initialize(app=nil) - @app = app - yield self if block_given? - end - - # Rack call interface. - def call(env) - dup.call!(env) - end - - attr_accessor :env, :request, :response, :params - - def call!(env) - @env = env - @request = Request.new(env) - @response = Response.new - @params = nil - - invoke { dispatch! } - invoke { error_block!(response.status) } - - status, header, body = @response.finish - - # Never produce a body on HEAD requests. Do retain the Content-Length - # unless it's "0", in which case we assume it was calculated erroneously - # for a manual HEAD response and remove it entirely. - if @env['REQUEST_METHOD'] == 'HEAD' - body = [] - header.delete('Content-Length') if header['Content-Length'] == '0' - end - - [status, header, body] - end - - # Access options defined with Base.set. - def options - self.class - end - - # Exit the current block, halts any further processing - # of the request, and returns the specified response. - def halt(*response) - response = response.first if response.length == 1 - throw :halt, response - end - - # Pass control to the next matching route. - # If there are no more matching routes, Sinatra will - # return a 404 response. - def pass - throw :pass - end - - # Forward the request to the downstream app -- middleware only. - def forward - fail "downstream app not set" unless @app.respond_to? :call - status, headers, body = @app.call(@request.env) - @response.status = status - @response.body = body - @response.headers.merge! headers - nil - end - - private - # Run before filters and then locate and run a matching route. - def route! - # enable nested params in Rack < 1.0; allow indifferent access - @params = - if Rack::Utils.respond_to?(:parse_nested_query) - indifferent_params(@request.params) - else - nested_params(@request.params) - end - - # before filters - self.class.filters.each { |block| instance_eval(&block) } - - # routes - if routes = self.class.routes[@request.request_method] - original_params = @params - path = unescape(@request.path_info) - - routes.each do |pattern, keys, conditions, block| - if match = pattern.match(path) - values = match.captures.to_a - params = - if keys.any? - keys.zip(values).inject({}) do |hash,(k,v)| - if k == 'splat' - (hash[k] ||= []) << v - else - hash[k] = v - end - hash - end - elsif values.any? - {'captures' => values} - else - {} - end - @params = original_params.merge(params) - @block_params = values - - catch(:pass) do - conditions.each { |cond| - throw :pass if instance_eval(&cond) == false } - route_eval(&block) - end - end - end - end - - route_missing - end - - # Run a route block and throw :halt with the result. - def route_eval(&block) - throw :halt, instance_eval(&block) - end - - # No matching route was found or all routes passed. The default - # implementation is to forward the request downstream when running - # as middleware (@app is non-nil); when no downstream app is set, raise - # a NotFound exception. Subclasses can override this method to perform - # custom route miss logic. - def route_missing - if @app - forward - else - raise NotFound - end - end - - # Enable string or symbol key access to the nested params hash. - def indifferent_params(params) - params = indifferent_hash.merge(params) - params.each do |key, value| - next unless value.is_a?(Hash) - params[key] = indifferent_params(value) - end - end - - # Recursively replace the params hash with a nested indifferent - # hash. Rack 1.0 has a built in implementation of this method - remove - # this once Rack 1.0 is required. - def nested_params(params) - return indifferent_hash.merge(params) if !params.keys.join.include?('[') - params.inject indifferent_hash do |res, (key,val)| - if key.include?('[') - head = key.split(/[\]\[]+/) - last = head.pop - head.inject(res){ |hash,k| hash[k] ||= indifferent_hash }[last] = val - else - res[key] = val - end - res - end - end - - def indifferent_hash - Hash.new {|hash,key| hash[key.to_s] if Symbol === key } - end - - # Run the block with 'throw :halt' support and apply result to the response. - def invoke(&block) - res = catch(:halt) { instance_eval(&block) } - return if res.nil? - - case - when res.respond_to?(:to_str) - @response.body = [res] - when res.respond_to?(:to_ary) - res = res.to_ary - if Fixnum === res.first - if res.length == 3 - @response.status, headers, body = res - @response.body = body if body - headers.each { |k, v| @response.headers[k] = v } if headers - elsif res.length == 2 - @response.status = res.first - @response.body = res.last - else - raise TypeError, "#{res.inspect} not supported" - end - else - @response.body = res - end - when res.respond_to?(:each) - @response.body = res - when (100...599) === res - @response.status = res - end - - res - end - - # Dispatch a request with error handling. - def dispatch! - route! - rescue NotFound => boom - handle_not_found!(boom) - rescue ::Exception => boom - handle_exception!(boom) - end - - def handle_not_found!(boom) - @env['sinatra.error'] = boom - @response.status = 404 - @response.body = ['

    Not Found

    '] - error_block! boom.class, NotFound - end - - def handle_exception!(boom) - @env['sinatra.error'] = boom - - dump_errors!(boom) if options.dump_errors? - raise boom if options.raise_errors? || options.show_exceptions? - - @response.status = 500 - error_block! boom.class, Exception - end - - # Find an custom error block for the key(s) specified. - def error_block!(*keys) - errmap = self.class.errors - keys.each do |key| - if block = errmap[key] - res = instance_eval(&block) - return res - end - end - nil - end - - def dump_errors!(boom) - backtrace = clean_backtrace(boom.backtrace) - msg = ["#{boom.class} - #{boom.message}:", - *backtrace].join("\n ") - @env['rack.errors'].write(msg) - end - - def clean_backtrace(trace) - return trace unless options.clean_trace? - - trace.reject { |line| - line =~ /lib\/sinatra.*\.rb/ || - (defined?(Gem) && line.include?(Gem.dir)) - }.map! { |line| line.gsub(/^\.\//, '') } - end - - @routes = {} - @filters = [] - @conditions = [] - @templates = {} - @middleware = [] - @errors = {} - @prototype = nil - @extensions = [] - - class << self - attr_accessor :routes, :filters, :conditions, :templates, - :middleware, :errors - - # Sets an option to the given value. If the value is a proc, - # the proc will be called every time the option is accessed. - def set(option, value=self) - if value.kind_of?(Proc) - metadef(option, &value) - metadef("#{option}?") { !!__send__(option) } - metadef("#{option}=") { |val| set(option, Proc.new{val}) } - elsif value == self && option.respond_to?(:to_hash) - option.to_hash.each { |k,v| set(k, v) } - elsif respond_to?("#{option}=") - __send__ "#{option}=", value - else - set option, Proc.new{value} - end - self - end - - # Same as calling `set :option, true` for each of the given options. - def enable(*opts) - opts.each { |key| set(key, true) } - end - - # Same as calling `set :option, false` for each of the given options. - def disable(*opts) - opts.each { |key| set(key, false) } - end - - # Define a custom error handler. Optionally takes either an Exception - # class, or an HTTP status code to specify which errors should be - # handled. - def error(codes=Exception, &block) - if codes.respond_to? :each - codes.each { |err| error(err, &block) } - else - @errors[codes] = block - end - end - - # Sugar for `error(404) { ... }` - def not_found(&block) - error 404, &block - end - - # Define a named template. The block must return the template source. - def template(name, &block) - filename, line = caller_locations.first - templates[name] = { :filename => filename, :line => line, :template => block } - end - - # Define the layout template. The block must return the template source. - def layout(name=:layout, &block) - template name, &block - end - - # Load embeded templates from the file; uses the caller's __FILE__ - # when no file is specified. - def use_in_file_templates!(file=nil) - file ||= caller_files.first - app, data = - ::IO.read(file).split(/^__END__$/, 2) rescue nil - - if data - data.gsub!(/\r\n/, "\n") - lines = app.count("\n") + 1 - template = nil - data.each_line do |line| - lines += 1 - if line =~ /^@@\s*(.*)/ - template = '' - templates[$1.to_sym] = { :filename => file, :line => lines, :template => template } - elsif template - template << line - end - end - end - end - - # Look up a media type by file extension in Rack's mime registry. - def media_type(type) - return type if type.nil? || type.to_s.include?('/') - type = ".#{type}" unless type.to_s[0] == ?. - Rack::Mime.mime_type(type, nil) - end - - # Define a before filter. Filters are run before all requests - # within the same context as route handlers and may access/modify the - # request and response. - def before(&block) - @filters << block - end - - # Add a route condition. The route is considered non-matching when the - # block returns false. - def condition(&block) - @conditions << block - end - - private - def host_name(pattern) - condition { pattern === request.host } - end - - def user_agent(pattern) - condition { - if request.user_agent =~ pattern - @params[:agent] = $~[1..-1] - true - else - false - end - } - end - alias_method :agent, :user_agent - - def provides(*types) - types = [types] unless types.kind_of? Array - types.map!{|t| media_type(t)} - - condition { - matching_types = (request.accept & types) - unless matching_types.empty? - response.headers['Content-Type'] = matching_types.first - true - else - false - end - } - end - - public - # Defining a `GET` handler also automatically defines - # a `HEAD` handler. - def get(path, opts={}, &block) - conditions = @conditions.dup - route('GET', path, opts, &block) - - @conditions = conditions - route('HEAD', path, opts, &block) - end - - def put(path, opts={}, &bk); route 'PUT', path, opts, &bk end - def post(path, opts={}, &bk); route 'POST', path, opts, &bk end - def delete(path, opts={}, &bk); route 'DELETE', path, opts, &bk end - def head(path, opts={}, &bk); route 'HEAD', path, opts, &bk end - - private - def route(verb, path, options={}, &block) - # Because of self.options.host - host_name(options.delete(:host)) if options.key?(:host) - - options.each {|option, args| send(option, *args)} - - pattern, keys = compile(path) - conditions, @conditions = @conditions, [] - - define_method "#{verb} #{path}", &block - unbound_method = instance_method("#{verb} #{path}") - block = - if block.arity != 0 - lambda { unbound_method.bind(self).call(*@block_params) } - else - lambda { unbound_method.bind(self).call } - end - - invoke_hook(:route_added, verb, path, block) - - (routes[verb] ||= []). - push([pattern, keys, conditions, block]).last - end - - def invoke_hook(name, *args) - extensions.each { |e| e.send(name, *args) if e.respond_to?(name) } - end - - def compile(path) - keys = [] - if path.respond_to? :to_str - special_chars = %w{. + ( )} - pattern = - path.to_str.gsub(/((:\w+)|[\*#{special_chars.join}])/) do |match| - case match - when "*" - keys << 'splat' - "(.*?)" - when *special_chars - Regexp.escape(match) - else - keys << $2[1..-1] - "([^/?&#]+)" - end - end - [/^#{pattern}$/, keys] - elsif path.respond_to?(:keys) && path.respond_to?(:match) - [path, path.keys] - elsif path.respond_to? :match - [path, keys] - else - raise TypeError, path - end - end - - public - # Makes the methods defined in the block and in the Modules given - # in `extensions` available to the handlers and templates - def helpers(*extensions, &block) - class_eval(&block) if block_given? - include(*extensions) if extensions.any? - end - - def extensions - (@extensions + (superclass.extensions rescue [])).uniq - end - - def register(*extensions, &block) - extensions << Module.new(&block) if block_given? - @extensions += extensions - extensions.each do |extension| - extend extension - extension.registered(self) if extension.respond_to?(:registered) - end - end - - def development?; environment == :development end - def production?; environment == :production end - def test?; environment == :test end - - # Set configuration options for Sinatra and/or the app. - # Allows scoping of settings for certain environments. - def configure(*envs, &block) - yield self if envs.empty? || envs.include?(environment.to_sym) - end - - # Use the specified Rack middleware - def use(middleware, *args, &block) - @prototype = nil - @middleware << [middleware, args, block] - end - - # Run the Sinatra app as a self-hosted server using - # Thin, Mongrel or WEBrick (in that order) - def run!(options={}) - set options - handler = detect_rack_handler - handler_name = handler.name.gsub(/.*::/, '') - puts "== Sinatra/#{Sinatra::VERSION} has taken the stage " + - "on #{port} for #{environment} with backup from #{handler_name}" unless handler_name =~/cgi/i - handler.run self, :Host => host, :Port => port do |server| - trap(:INT) do - ## Use thins' hard #stop! if available, otherwise just #stop - server.respond_to?(:stop!) ? server.stop! : server.stop - puts "\n== Sinatra has ended his set (crowd applauds)" unless handler_name =~/cgi/i - end - end - rescue Errno::EADDRINUSE => e - puts "== Someone is already performing on port #{port}!" - end - - # The prototype instance used to process requests. - def prototype - @prototype ||= new - end - - # Create a new instance of the class fronted by its middleware - # pipeline. The object is guaranteed to respond to #call but may not be - # an instance of the class new was called on. - def new(*args, &bk) - builder = Rack::Builder.new - builder.use Rack::Session::Cookie if sessions? && !test? - builder.use Rack::CommonLogger if logging? - builder.use Rack::MethodOverride if methodoverride? - builder.use ShowExceptions if show_exceptions? - - @middleware.each { |c,a,b| builder.use(c, *a, &b) } - builder.run super - builder.to_app - end - - def call(env) - synchronize { prototype.call(env) } - end - - def reset!(base=superclass) - @routes = base.dupe_routes - @templates = base.templates.dup - @conditions = [] - @filters = base.filters.dup - @errors = base.errors.dup - @middleware = base.middleware.dup - @prototype = nil - @extensions = [] - end - - protected - def dupe_routes - routes.inject({}) do |hash,(request_method,routes)| - hash[request_method] = routes.dup - hash - end - end - - private - def detect_rack_handler - servers = Array(self.server) - servers.each do |server_name| - begin - return Rack::Handler.get(server_name.downcase) - rescue LoadError - rescue NameError - end - end - fail "Server handler (#{servers.join(',')}) not found." - end - - def inherited(subclass) - subclass.reset! self - super - end - - @@mutex = Mutex.new - def synchronize(&block) - if lock? - @@mutex.synchronize(&block) - else - yield - end - end - - def metadef(message, &block) - (class << self; self; end). - send :define_method, message, &block - end - - public - CALLERS_TO_IGNORE = [ - /\/sinatra(\/(base|main|showexceptions|compat))?\.rb$/, # all sinatra code - /\(.*\)/, # generated code - /custom_require\.rb$/, # rubygems require hacks - /active_support/, # active_support require hacks - ] unless self.const_defined?('CALLERS_TO_IGNORE') - - # add rubinius (and hopefully other VM impls) ignore patterns ... - CALLERS_TO_IGNORE.concat(RUBY_IGNORE_CALLERS) if defined?(RUBY_IGNORE_CALLERS) - - # Like Kernel#caller but excluding certain magic entries and without - # line / method information; the resulting array contains filenames only. - def caller_files - caller_locations. - map { |file,line| file } - end - - def caller_locations - caller(1). - map { |line| line.split(/:(?=\d|in )/)[0,2] }. - reject { |file,line| CALLERS_TO_IGNORE.any? { |pattern| file =~ pattern } } - end - end - - set :raise_errors, true - set :dump_errors, false - set :clean_trace, true - set :show_exceptions, false - set :sessions, false - set :logging, false - set :methodoverride, false - set :static, false - set :environment, (ENV['RACK_ENV'] || :development).to_sym - - set :run, false - set :server, %w[thin mongrel webrick] - set :host, '0.0.0.0' - set :port, 4567 - - set :app_file, nil - set :root, Proc.new { app_file && File.expand_path(File.dirname(app_file)) } - set :views, Proc.new { root && File.join(root, 'views') } - set :public, Proc.new { root && File.join(root, 'public') } - set :lock, false - - # static files route - get(/.*[^\/]$/) do - pass unless options.static? && options.public? - public_dir = File.expand_path(options.public) - path = File.expand_path(public_dir + unescape(request.path_info)) - pass if path[0, public_dir.length] != public_dir - pass unless File.file?(path) - send_file path, :disposition => nil - end - - error ::Exception do - response.status = 500 - content_type 'text/html' - '

    Internal Server Error

    ' - end - - configure :development do - get '/__sinatra__/:image.png' do - filename = File.dirname(__FILE__) + "/images/#{params[:image]}.png" - content_type :png - send_file filename - end - - error NotFound do - content_type 'text/html' - - (<<-HTML).gsub(/^ {8}/, '') - - - - - - -

    Sinatra doesn't know this ditty.

    - -
    - Try this: -
    #{request.request_method.downcase} '#{request.path_info}' do\n  "Hello World"\nend
    -
    - - - HTML - end - end - end - - # Base class for classic style (top-level) applications. - class Default < Base - set :raise_errors, Proc.new { test? } - set :show_exceptions, Proc.new { development? } - set :dump_errors, true - set :sessions, false - set :logging, Proc.new { ! test? } - set :methodoverride, true - set :static, true - set :run, Proc.new { ! test? } - - def self.register(*extensions, &block) #:nodoc: - added_methods = extensions.map {|m| m.public_instance_methods }.flatten - Delegator.delegate(*added_methods) - super(*extensions, &block) - end - end - - # The top-level Application. All DSL methods executed on main are delegated - # to this class. - class Application < Default - end - - # Sinatra delegation mixin. Mixing this module into an object causes all - # methods to be delegated to the Sinatra::Application class. Used primarily - # at the top-level. - module Delegator #:nodoc: - def self.delegate(*methods) - methods.each do |method_name| - eval <<-RUBY, binding, '(__DELEGATE__)', 1 - def #{method_name}(*args, &b) - ::Sinatra::Application.send(#{method_name.inspect}, *args, &b) - end - private #{method_name.inspect} - RUBY - end - end - - delegate :get, :put, :post, :delete, :head, :template, :layout, :before, - :error, :not_found, :configures, :configure, :set, :set_option, - :set_options, :enable, :disable, :use, :development?, :test?, - :production?, :use_in_file_templates!, :helpers - end - - # Create a new Sinatra application. The block is evaluated in the new app's - # class scope. - def self.new(base=Base, options={}, &block) - base = Class.new(base) - base.send :class_eval, &block if block_given? - base - end - - # Extend the top-level DSL with the modules provided. - def self.register(*extensions, &block) - Default.register(*extensions, &block) - end - - # Include the helper modules provided in Sinatra's request context. - def self.helpers(*extensions, &block) - Default.helpers(*extensions, &block) - end -end - -class String #:nodoc: - # Define String#each under 1.9 for Rack compatibility. This should be - # removed once Rack is fully 1.9 compatible. - alias_method :each, :each_line unless ''.respond_to? :each - - # Define String#bytesize as an alias to String#length for Ruby 1.8.6 and - # earlier. - alias_method :bytesize, :length unless ''.respond_to? :bytesize -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/compat.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/compat.rb deleted file mode 100644 index b0ebd38f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/compat.rb +++ /dev/null @@ -1,266 +0,0 @@ -# Sinatra 0.3.x compatibility module. -# -# The following code makes Sinatra 0.9.x compatible with Sinatra 0.3.x to -# ease the transition to the final 1.0 release. Everything defined in this -# file will be removed for the 1.0 release. - -require 'ostruct' -require 'sinatra/base' -require 'sinatra/main' - -# Like Kernel#warn but outputs the location that triggered the warning. -def sinatra_warn(*message) #:nodoc: - line = caller. - detect { |line| line !~ /(?:lib\/sinatra\/|__DELEGATE__)/ }. - sub(/:in .*/, '') - warn "#{line}: warning: #{message.join(' ')}" -end - -# Rack now supports evented and swiftiplied mongrels through separate -# handler. -if ENV['SWIFT'] - sinatra_warn 'the SWIFT environment variable is deprecated;', - 'use Rack::Handler::SwiftipliedMongrel instead.' - require 'swiftcore/swiftiplied_mongrel' - puts "Using Swiftiplied Mongrel" -elsif ENV['EVENT'] - sinatra_warn 'the EVENT environment variable is deprecated;', - 'use Rack::Handler::EventedMongrel instead.' - require 'swiftcore/evented_mongrel' - puts "Using Evented Mongrel" -end - -# Make Rack 0.9.0 backward compatibile with 0.4.0 mime types. This isn't -# technically a Sinatra issue but many Sinatra apps access the old -# MIME_TYPES constants due to Sinatra example code. -require 'rack/file' -module Rack #:nodoc: - class File #:nodoc: - def self.const_missing(const_name) - if const_name == :MIME_TYPES - hash = Hash.new { |hash,key| Rack::Mime::MIME_TYPES[".#{key}"] } - const_set :MIME_TYPES, hash - sinatra_warn 'Rack::File::MIME_TYPES is deprecated; use Rack::Mime instead.' - hash - else - super - end - end - end -end - -module Sinatra - module Compat #:nodoc: - end - - # Make Sinatra::EventContext an alias for Sinatra::Default to unbreak plugins. - def self.const_missing(const_name) #:nodoc: - if const_name == :EventContext - const_set :EventContext, Sinatra::Default - sinatra_warn 'Sinatra::EventContext is deprecated; use Sinatra::Default instead.' - Sinatra::Default - else - super - end - end - - # The ServerError exception is deprecated. Any exception is considered an - # internal server error. - class ServerError < RuntimeError - def initialize(*args, &block) - sinatra_warn 'Sinatra::ServerError is deprecated;', - 'use another exception, error, or Kernel#fail instead.' - end - def code ; 500 ; end - end - - class Default < Base - def self.const_missing(const_name) #:nodoc: - if const_name == :FORWARD_METHODS - sinatra_warn 'Sinatra::Application::FORWARD_METHODS is deprecated;', - 'use Sinatra::Delegator::METHODS instead.' - const_set :FORWARD_METHODS, Sinatra::Delegator::METHODS - Sinatra::Delegator::METHODS - else - super - end - end - - # Deprecated. Use: response['Header-Name'] - def header(header=nil) - sinatra_warn "The 'header' method is deprecated; use 'headers' instead." - headers(header) - end - - # Deprecated. Use: halt - def stop(*args, &block) - sinatra_warn "The 'stop' method is deprecated; use 'halt' instead." - halt(*args, &block) - end - - # Deprecated. Use: etag - def entity_tag(*args, &block) - sinatra_warn "The 'entity_tag' method is deprecated; use 'etag' instead." - etag(*args, &block) - end - - # Deprecated. Use the #attachment helper and return the data as a String or - # Array. - def send_data(data, options={}) - sinatra_warn "The 'send_data' method is deprecated. use attachment, status, content_type, etc. helpers instead." - - status options[:status] if options[:status] - attachment options[:filename] if options[:disposition] == 'attachment' - content_type options[:type] if options[:type] - halt data - end - - # The :views_directory, :options, :haml, and :sass options are deprecated. - def render(engine, template, options={}, locals={}, &bk) - if options.key?(:views_directory) - sinatra_warn "The :views_directory option is deprecated; use :views instead." - options[:views] = options.delete(:views_directory) - end - [:options, engine.to_sym].each do |key| - if options.key?(key) - sinatra_warn "Passing :#{key} => {} to #{engine} is deprecated; " + - "merge options directly into hash instead." - options.merge! options.delete(key) - end - end - super(engine, template, options, locals, &bk) - end - - # Throwing halt with a Symbol and the to_result convention are - # deprecated. Override the invoke method to detect those types of return - # values. - def invoke(&block) #:nodoc: - res = super - case - when res.kind_of?(Symbol) - sinatra_warn "Invoking the :#{res} helper by returning a Symbol is deprecated;", - "call the helper directly instead." - @response.body = __send__(res) - when res.respond_to?(:to_result) - sinatra_warn "The to_result convention is deprecated." - @response.body = res.to_result(self) - end - res - end - - def options #:nodoc: - Options.new(self.class) - end - - class Options < Struct.new(:target) #:nodoc: - def method_missing(name, *args, &block) - if target.respond_to?(name) - target.__send__(name, *args, &block) - elsif args.empty? && name.to_s !~ /=$/ - sinatra_warn 'accessing undefined options will raise a NameError in Sinatra 1.0' - nil - else - super - end - end - end - - class << self - # Deprecated. Options are stored directly on the class object. - def options - sinatra_warn "The 'options' class method is deprecated; use 'self' instead." - Options.new(self) - end - - # Deprecated. Use: configure - def configures(*args, &block) - sinatra_warn "The 'configures' method is deprecated; use 'configure' instead." - configure(*args, &block) - end - - # Deprecated. Use: set - def default_options - sinatra_warn "Sinatra::Application.default_options is deprecated; use 'set' instead." - fake = lambda { |options| set(options) } - def fake.merge!(options) ; call(options) ; end - fake - end - - # Deprecated. Use: set - def set_option(*args, &block) - sinatra_warn "The 'set_option' method is deprecated; use 'set' instead." - set(*args, &block) - end - - def set_options(*args, &block) - sinatra_warn "The 'set_options' method is deprecated; use 'set' instead." - set(*args, &block) - end - - # Deprecated. Use: set :environment, ENV - def env=(value) - sinatra_warn "The :env option is deprecated; use :environment instead." - set :environment, value - end - - # Deprecated. Use: options.environment - def env - sinatra_warn "The :env option is deprecated; use :environment instead." - environment - end - end - - # Deprecated. Missing messages are no longer delegated to @response. - def method_missing(name, *args, &b) #:nodoc: - if @response.respond_to?(name) - sinatra_warn "The '#{name}' method is deprecated; use 'response.#{name}' instead." - @response.send(name, *args, &b) - else - super - end - end - end - - class << self - # Deprecated. Use: Sinatra::Application - def application - sinatra_warn "Sinatra.application is deprecated; use Sinatra::Application instead." - Sinatra::Application - end - - # Deprecated. Use: Sinatra::Application.reset! - def application=(value) - raise ArgumentError unless value.nil? - sinatra_warn "Setting Sinatra.application to nil is deprecated; create a new instance instead." - Sinatra.class_eval do - remove_const :Application - const_set :Application, Class.new(Sinatra::Default) - end - end - - def build_application - sinatra_warn "Sinatra.build_application is deprecated; use Sinatra::Application instead." - Sinatra::Application - end - - def options - sinatra_warn "Sinatra.options is deprecated; use Sinatra::Application.option_name instead." - Sinatra::Application.options - end - - def port - sinatra_warn "Sinatra.port is deprecated; use Sinatra::Application.port instead." - options.port - end - - def host - sinatra_warn "Sinatra.host is deprecated; use Sinatra::Application.host instead." - options.host - end - - def env - sinatra_warn "Sinatra.env is deprecated; use Sinatra::Application.environment instead." - options.environment - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/images/404.png b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/images/404.png deleted file mode 100644 index 902110e16191774a1e91bafb86b9a6e9d5c12357..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23305 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 Jy^eFt{{fdPQLz93 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/images/500.png b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/images/500.png deleted file mode 100644 index 57c84c3d966c190121141e56c38759bb24aaae2e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31056 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 A2LJ#7 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/main.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/main.rb deleted file mode 100644 index ee7f5b81..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/main.rb +++ /dev/null @@ -1,35 +0,0 @@ -require 'sinatra/base' - -module Sinatra - class Default < Base - - # we assume that the first file that requires 'sinatra' is the - # app_file. all other path related options are calculated based - # on this path by default. - set :app_file, caller_files.first || $0 - - set :run, Proc.new { $0 == app_file } - - if run? && ARGV.any? - require 'optparse' - OptionParser.new { |op| - op.on('-x') { set :lock, true } - op.on('-e env') { |val| set :environment, val.to_sym } - op.on('-s server') { |val| set :server, val } - op.on('-p port') { |val| set :port, val.to_i } - }.parse!(ARGV.dup) - end - end -end - -include Sinatra::Delegator - -def mime(ext, type) - ext = ".#{ext}" unless ext.to_s[0] == ?. - Rack::Mime::MIME_TYPES[ext.to_s] = type -end - -at_exit do - raise $! if $! - Sinatra::Application.run! if Sinatra::Application.run? -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/showexceptions.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/showexceptions.rb deleted file mode 100644 index 9f787686..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/showexceptions.rb +++ /dev/null @@ -1,303 +0,0 @@ -require 'rack/showexceptions' - -module Sinatra - class ShowExceptions < Rack::ShowExceptions - def initialize(app) - @app = app - @template = ERB.new(TEMPLATE) - end - - def frame_class(frame) - if frame.filename =~ /lib\/sinatra.*\.rb/ - "framework" - elsif (defined?(Gem) && frame.filename.include?(Gem.dir)) || - frame.filename =~ /\/bin\/(\w+)$/ - "system" - else - "app" - end - end - -TEMPLATE = < - - - - <%=h exception.class %> at <%=h path %> - - - - - - -
    - - -
    -

    BACKTRACE

    -

    (expand)

    - -
    - -
      - - <% id = 1 %> - <% frames.each do |frame| %> - <% if frame.context_line && frame.context_line != "#" %> - -
    • - <%=h frame.filename %> in - <%=h frame.function %> -
    • - -
    • - <% if frame.pre_context %> -
        - <% frame.pre_context.each do |line| %> -
      1. <%=h line %>
      2. - <% end %> -
      - <% end %> - -
        -
      1. <%= - h frame.context_line %>
      2. -
      - - <% if frame.post_context %> -
        - <% frame.post_context.each do |line| %> -
      1. <%=h line %>
      2. - <% end %> -
      - <% end %> -
      -
    • - - <% end %> - - <% id += 1 %> - <% end %> - -
    -
    - -
    -

    GET

    - <% unless req.GET.empty? %> - - - - - - <% req.GET.sort_by { |k, v| k.to_s }.each { |key, val| %> - - - - - <% } %> -
    VariableValue
    <%=h key %>
    <%=h val.inspect %>
    - <% else %> -

    No GET data.

    - <% end %> -
    -
    - -
    -

    POST

    - <% unless req.POST.empty? %> - - - - - - <% req.POST.sort_by { |k, v| k.to_s }.each { |key, val| %> - - - - - <% } %> -
    VariableValue
    <%=h key %>
    <%=h val.inspect %>
    - <% else %> -

    No POST data.

    - <% end %> -
    -
    - -
    - - <% unless req.cookies.empty? %> - - - - - - <% req.cookies.each { |key, val| %> - - - - - <% } %> -
    VariableValue
    <%=h key %>
    <%=h val.inspect %>
    - <% else %> -

    No cookie data.

    - <% end %> -
    -
    - -
    -

    Rack ENV

    - - - - - - <% env.sort_by { |k, v| k.to_s }.each { |key, val| %> - - - - - <% } %> -
    VariableValue
    <%=h key %>
    <%=h val %>
    -
    -
    - -

    You're seeing this error because you use you have -enabled the show_exceptions option.

    -
    - - -HTML - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test.rb deleted file mode 100644 index 6954eb59..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test.rb +++ /dev/null @@ -1,128 +0,0 @@ -require 'sinatra/base' - -warn 'Sinatra::Test is deprecated; use Rack::Test instead.' - -module Sinatra - module Test - include Rack::Utils - - def self.included(base) - Sinatra::Default.set(:environment, :test) - end - - attr_reader :app, :request, :response - - def self.deprecate(framework) - warn <<-EOF -Warning: support for the #{framework} testing framework is deprecated and -will be dropped in Sinatra 1.0. See -for more information. - EOF - end - - def make_request(verb, path, body=nil, options={}) - @app = Sinatra::Application if @app.nil? && defined?(Sinatra::Application) - fail "@app not set - cannot make request" if @app.nil? - - @request = Rack::MockRequest.new(@app) - options = { :lint => true }.merge(options || {}) - - case - when body.respond_to?(:to_hash) - options.merge! body.delete(:env) if body.key?(:env) - options[:input] = param_string(body) - when body.respond_to?(:to_str) - options[:input] = body - when body.nil? - options[:input] = '' - else - raise ArgumentError, "body must be a Hash, String, or nil" - end - - yield @request if block_given? - @response = @request.request(verb, path, rack_options(options)) - end - - def get(path, *args, &b) ; make_request('GET', path, *args, &b) ; end - def head(path, *args, &b) ; make_request('HEAD', path, *args, &b) ; end - def post(path, *args, &b) ; make_request('POST', path, *args, &b) ; end - def put(path, *args, &b) ; make_request('PUT', path, *args, &b) ; end - def delete(path, *args, &b) ; make_request('DELETE', path, *args, &b) ; end - - def follow! - make_request 'GET', @response.location - end - - def body ; @response.body ; end - def status ; @response.status ; end - - # Delegate other missing methods to @response. - def method_missing(name, *args, &block) - if @response && @response.respond_to?(name) - @response.send(name, *args, &block) - else - super - end - end - - # Also check @response since we delegate there. - def respond_to?(symbol, include_private=false) - super || (@response && @response.respond_to?(symbol, include_private)) - end - - private - - RACK_OPTIONS = { - :accept => 'HTTP_ACCEPT', - :agent => 'HTTP_USER_AGENT', - :host => 'HTTP_HOST', - :session => 'rack.session', - :cookies => 'HTTP_COOKIE', - :content_type => 'CONTENT_TYPE' - } - - def rack_options(opts) - opts.merge(:lint => true).inject({}) do |hash,(key,val)| - key = RACK_OPTIONS[key] || key - hash[key] = val - hash - end - end - - def param_string(value, prefix = nil) - case value - when Array - value.map { |v| - param_string(v, "#{prefix}[]") - } * "&" - when Hash - value.map { |k, v| - param_string(v, prefix ? "#{prefix}[#{escape(k)}]" : escape(k)) - } * "&" - else - "#{prefix}=#{escape(value)}" - end - end - - if defined? Sinatra::Compat - # Deprecated. Use: "get" instead of "get_it". - %w(get head post put delete).each do |verb| - eval <<-RUBY, binding, __FILE__, __LINE__ - def #{verb}_it(*args, &block) - sinatra_warn "The #{verb}_it method is deprecated; use #{verb} instead." - make_request('#{verb.upcase}', *args, &block) - end - RUBY - end - end - end - - class TestHarness - include Test - - def initialize(app=nil) - @app = app || Sinatra::Application - @app.set(:environment, :test) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test/bacon.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test/bacon.rb deleted file mode 100644 index 66c0b135..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test/bacon.rb +++ /dev/null @@ -1,19 +0,0 @@ -require 'bacon' -require 'sinatra/test' - -Sinatra::Test.deprecate('Bacon') - -Sinatra::Default.set( - :environment => :test, - :run => false, - :raise_errors => true, - :logging => false -) - -module Sinatra::Test - def should - @response.should - end -end - -Bacon::Context.send(:include, Sinatra::Test) diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test/rspec.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test/rspec.rb deleted file mode 100644 index 971b96f6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test/rspec.rb +++ /dev/null @@ -1,13 +0,0 @@ -require 'sinatra/test' -require 'sinatra/test/unit' -require 'spec' -require 'spec/interop/test' - -Sinatra::Test.deprecate('RSpec') - -Sinatra::Default.set( - :environment => :test, - :run => false, - :raise_errors => true, - :logging => false -) diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test/spec.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test/spec.rb deleted file mode 100644 index daffe32c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test/spec.rb +++ /dev/null @@ -1,11 +0,0 @@ -require 'test/spec' -require 'sinatra/test' -require 'sinatra/test/unit' - -Sinatra::Test.deprecate('test/spec') - -module Sinatra::Test - def should - @response.should - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test/unit.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test/unit.rb deleted file mode 100644 index a7e60b3a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/lib/sinatra/test/unit.rb +++ /dev/null @@ -1,13 +0,0 @@ -require 'sinatra/test' -require 'test/unit' - -Sinatra::Test.deprecate('test/unit') - -Test::Unit::TestCase.send :include, Sinatra::Test - -Sinatra::Default.set( - :environment => :test, - :run => false, - :raise_errors => true, - :logging => false -) diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/sinatra.gemspec b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/sinatra.gemspec deleted file mode 100644 index 7269c4cd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/sinatra.gemspec +++ /dev/null @@ -1,125 +0,0 @@ -Gem::Specification.new do |s| - s.specification_version = 2 if s.respond_to? :specification_version= - s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= - - s.name = 'sinatra' - s.version = '0.9.4' - s.date = '2009-07-26' - - s.description = "Classy web-development dressed in a DSL" - s.summary = "Classy web-development dressed in a DSL" - - s.authors = ["Blake Mizerany"] - s.email = "sinatrarb@googlegroups.com" - - # = MANIFEST = - s.files = %w[ - AUTHORS - CHANGES - LICENSE - README.rdoc - Rakefile - compat/app_test.rb - compat/application_test.rb - compat/builder_test.rb - compat/compat_test.rb - compat/custom_error_test.rb - compat/erb_test.rb - compat/events_test.rb - compat/filter_test.rb - compat/haml_test.rb - compat/helper.rb - compat/mapped_error_test.rb - compat/pipeline_test.rb - compat/public/foo.xml - compat/sass_test.rb - compat/sessions_test.rb - compat/streaming_test.rb - compat/sym_params_test.rb - compat/template_test.rb - compat/use_in_file_templates_test.rb - compat/views/foo.builder - compat/views/foo.erb - compat/views/foo.haml - compat/views/foo.sass - compat/views/foo_layout.erb - compat/views/foo_layout.haml - compat/views/layout_test/foo.builder - compat/views/layout_test/foo.erb - compat/views/layout_test/foo.haml - compat/views/layout_test/foo.sass - compat/views/layout_test/layout.builder - compat/views/layout_test/layout.erb - compat/views/layout_test/layout.haml - compat/views/layout_test/layout.sass - compat/views/no_layout/no_layout.builder - compat/views/no_layout/no_layout.haml - lib/sinatra.rb - lib/sinatra/base.rb - lib/sinatra/compat.rb - lib/sinatra/images/404.png - lib/sinatra/images/500.png - lib/sinatra/main.rb - lib/sinatra/showexceptions.rb - lib/sinatra/test.rb - lib/sinatra/test/bacon.rb - lib/sinatra/test/rspec.rb - lib/sinatra/test/spec.rb - lib/sinatra/test/unit.rb - sinatra.gemspec - test/base_test.rb - test/builder_test.rb - test/contest.rb - test/data/reload_app_file.rb - test/erb_test.rb - test/extensions_test.rb - test/filter_test.rb - test/haml_test.rb - test/helper.rb - test/helpers_test.rb - test/mapped_error_test.rb - test/middleware_test.rb - test/options_test.rb - test/render_backtrace_test.rb - test/request_test.rb - test/response_test.rb - test/result_test.rb - test/route_added_hook_test.rb - test/routing_test.rb - test/sass_test.rb - test/server_test.rb - test/sinatra_test.rb - test/static_test.rb - test/templates_test.rb - test/test_test.rb - test/views/error.builder - test/views/error.erb - test/views/error.haml - test/views/error.sass - test/views/foo/hello.test - test/views/hello.builder - test/views/hello.erb - test/views/hello.haml - test/views/hello.sass - test/views/hello.test - test/views/layout2.builder - test/views/layout2.erb - test/views/layout2.haml - test/views/layout2.test - ] - # = MANIFEST = - - s.test_files = s.files.select {|path| path =~ /^test\/.*_test.rb/} - - s.extra_rdoc_files = %w[README.rdoc LICENSE] - s.add_dependency 'rack', '>= 0.9.1' - s.add_development_dependency 'shotgun', '>= 0.2', '< 1.0' - s.add_development_dependency 'rack-test', '>= 0.3.0' - - s.has_rdoc = true - s.homepage = "http://sinatra.rubyforge.org" - s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Sinatra", "--main", "README.rdoc"] - s.require_paths = %w[lib] - s.rubyforge_project = 'sinatra' - s.rubygems_version = '1.1.1' -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/base_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/base_test.rb deleted file mode 100644 index 7a5d1130..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/base_test.rb +++ /dev/null @@ -1,160 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class BaseTest < Test::Unit::TestCase - def test_default - assert true - end - - describe 'Sinatra::Base subclasses' do - class TestApp < Sinatra::Base - get '/' do - 'Hello World' - end - end - - it 'include Rack::Utils' do - assert TestApp.included_modules.include?(Rack::Utils) - end - - it 'processes requests with #call' do - assert TestApp.respond_to?(:call) - - request = Rack::MockRequest.new(TestApp) - response = request.get('/') - assert response.ok? - assert_equal 'Hello World', response.body - end - - class TestApp < Sinatra::Base - get '/state' do - @foo ||= "new" - body = "Foo: #{@foo}" - @foo = 'discard' - body - end - end - - it 'does not maintain state between requests' do - request = Rack::MockRequest.new(TestApp) - 2.times do - response = request.get('/state') - assert response.ok? - assert_equal 'Foo: new', response.body - end - end - - it "passes the subclass to configure blocks" do - ref = nil - TestApp.configure { |app| ref = app } - assert_equal TestApp, ref - end - - it "allows the configure block arg to be omitted and does not change context" do - context = nil - TestApp.configure { context = self } - assert_equal self, context - end - end - - describe "Sinatra::Base as Rack middleware" do - app = lambda { |env| - headers = {'X-Downstream' => 'true'} - headers['X-Route-Missing'] = env['sinatra.route-missing'] || '' - [210, headers, ['Hello from downstream']] } - - class TestMiddleware < Sinatra::Base - end - - it 'creates a middleware that responds to #call with .new' do - middleware = TestMiddleware.new(app) - assert middleware.respond_to?(:call) - end - - it 'exposes the downstream app' do - middleware = TestMiddleware.new(app) - assert_same app, middleware.app - end - - class TestMiddleware < Sinatra::Base - def route_missing - env['sinatra.route-missing'] = '1' - super - end - - get '/' do - 'Hello from middleware' - end - end - - middleware = TestMiddleware.new(app) - request = Rack::MockRequest.new(middleware) - - it 'intercepts requests' do - response = request.get('/') - assert response.ok? - assert_equal 'Hello from middleware', response.body - end - - it 'automatically forwards requests downstream when no matching route found' do - response = request.get('/missing') - assert_equal 210, response.status - assert_equal 'Hello from downstream', response.body - end - - it 'calls #route_missing before forwarding downstream' do - response = request.get('/missing') - assert_equal '1', response['X-Route-Missing'] - end - - class TestMiddleware < Sinatra::Base - get '/low-level-forward' do - app.call(env) - end - end - - it 'can call the downstream app directly and return result' do - response = request.get('/low-level-forward') - assert_equal 210, response.status - assert_equal 'true', response['X-Downstream'] - assert_equal 'Hello from downstream', response.body - end - - class TestMiddleware < Sinatra::Base - get '/explicit-forward' do - response['X-Middleware'] = 'true' - res = forward - assert_nil res - assert_equal 210, response.status - assert_equal 'true', response['X-Downstream'] - assert_equal ['Hello from downstream'], response.body - 'Hello after explicit forward' - end - end - - it 'forwards the request downstream and integrates the response into the current context' do - response = request.get('/explicit-forward') - assert_equal 210, response.status - assert_equal 'true', response['X-Downstream'] - assert_equal 'Hello after explicit forward', response.body - assert_equal '28', response['Content-Length'] - end - - app_content_length = lambda {|env| - [200, {'Content-Length' => '16'}, 'From downstream!']} - - class TestMiddlewareContentLength < Sinatra::Base - get '/forward' do - res = forward - 'From after explicit forward!' - end - end - - middleware_content_length = TestMiddlewareContentLength.new(app_content_length) - request_content_length = Rack::MockRequest.new(middleware_content_length) - - it "sets content length for last response" do - response = request_content_length.get('/forward') - assert_equal '28', response['Content-Length'] - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/builder_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/builder_test.rb deleted file mode 100644 index 04ab3a58..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/builder_test.rb +++ /dev/null @@ -1,65 +0,0 @@ -require File.dirname(__FILE__) + '/helper' -require 'builder' - -class BuilderTest < Test::Unit::TestCase - def builder_app(&block) - mock_app { - set :views, File.dirname(__FILE__) + '/views' - get '/', &block - } - get '/' - end - - it 'renders inline Builder strings' do - builder_app { builder 'xml.instruct!' } - assert ok? - assert_equal %{\n}, body - end - - it 'renders inline blocks' do - builder_app { - @name = "Frank & Mary" - builder do |xml| - xml.couple @name - end - } - assert ok? - assert_equal "Frank & Mary\n", body - end - - it 'renders .builder files in views path' do - builder_app { - @name = "Blue" - builder :hello - } - assert ok? - assert_equal %(You're my boy, Blue!\n), body - end - - it "renders with inline layouts" do - mock_app { - layout do - %(xml.layout { xml << yield }) - end - get('/') { builder %(xml.em 'Hello World') } - } - get '/' - assert ok? - assert_equal "\nHello World\n\n", body - end - - it "renders with file layouts" do - builder_app { - builder %(xml.em 'Hello World'), :layout => :layout2 - } - assert ok? - assert_equal "\nHello World\n\n", body - end - - it "raises error if template not found" do - mock_app { - get('/') { builder :no_such_template } - } - assert_raise(Errno::ENOENT) { get('/') } - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/contest.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/contest.rb deleted file mode 100644 index de716010..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/contest.rb +++ /dev/null @@ -1,64 +0,0 @@ -require "test/unit" - -# Test::Unit loads a default test if the suite is empty, and the only -# purpose of that test is to fail. As having empty contexts is a common -# practice, we decided to overwrite TestSuite#empty? in order to -# allow them. Having a failure when no tests have been defined seems -# counter-intuitive. -class Test::Unit::TestSuite - unless method_defined?(:empty?) - def empty? - false - end - end -end - -# We added setup, test and context as class methods, and the instance -# method setup now iterates on the setup blocks. Note that all setup -# blocks must be defined with the block syntax. Adding a setup instance -# method defeats the purpose of this library. -class Test::Unit::TestCase - def self.setup(&block) - setup_blocks << block - end - - def setup - self.class.setup_blocks.each do |block| - instance_eval(&block) - end - end - - def self.context(name, &block) - subclass = Class.new(self.superclass) - subclass.setup_blocks.unshift(*setup_blocks) - subclass.class_eval(&block) - const_set(context_name(name), subclass) - end - - def self.test(name, &block) - define_method(test_name(name), &block) - end - - class << self - alias_method :should, :test - alias_method :describe, :context - end - -private - - def self.setup_blocks - @setup_blocks ||= [] - end - - def self.context_name(name) - "Test#{sanitize_name(name).gsub(/(^| )(\w)/) { $2.upcase }}".to_sym - end - - def self.test_name(name) - "test_#{sanitize_name(name).gsub(/\s+/,'_')}".to_sym - end - - def self.sanitize_name(name) - name.gsub(/\W+/, ' ').strip - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/data/reload_app_file.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/data/reload_app_file.rb deleted file mode 100644 index 673ab7cd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/data/reload_app_file.rb +++ /dev/null @@ -1,3 +0,0 @@ -$reload_count += 1 - -$reload_app.get('/') { 'Hello from reload file' } diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/erb_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/erb_test.rb deleted file mode 100644 index cc68c5ce..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/erb_test.rb +++ /dev/null @@ -1,81 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class ERBTest < Test::Unit::TestCase - def erb_app(&block) - mock_app { - set :views, File.dirname(__FILE__) + '/views' - get '/', &block - } - get '/' - end - - it 'renders inline ERB strings' do - erb_app { erb '<%= 1 + 1 %>' } - assert ok? - assert_equal '2', body - end - - it 'renders .erb files in views path' do - erb_app { erb :hello } - assert ok? - assert_equal "Hello World\n", body - end - - it 'takes a :locals option' do - erb_app { - locals = {:foo => 'Bar'} - erb '<%= foo %>', :locals => locals - } - assert ok? - assert_equal 'Bar', body - end - - it "renders with inline layouts" do - mock_app { - layout { 'THIS. IS. <%= yield.upcase %>!' } - get('/') { erb 'Sparta' } - } - get '/' - assert ok? - assert_equal 'THIS. IS. SPARTA!', body - end - - it "renders with file layouts" do - erb_app { - erb 'Hello World', :layout => :layout2 - } - assert ok? - assert_equal "ERB Layout!\nHello World\n", body - end - - it "renders erb with blocks" do - mock_app { - def container - @_out_buf << "THIS." - yield - @_out_buf << "SPARTA!" - end - def is; "IS." end - get '/' do - erb '<% container do %> <%= is %> <% end %>' - end - } - get '/' - assert ok? - assert_equal 'THIS. IS. SPARTA!', body - end - - it "can be used in a nested fashion for partials and whatnot" do - mock_app { - template(:inner) { "<%= 'hi' %>" } - template(:outer) { "<%= erb :inner %>" } - get '/' do - erb :outer - end - } - - get '/' - assert ok? - assert_equal 'hi', body - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/extensions_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/extensions_test.rb deleted file mode 100644 index 7977c29a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/extensions_test.rb +++ /dev/null @@ -1,100 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class ExtensionsTest < Test::Unit::TestCase - module FooExtensions - def foo - end - - private - def im_hiding_in_ur_foos - end - end - - module BarExtensions - def bar - end - end - - module BazExtensions - def baz - end - end - - module QuuxExtensions - def quux - end - end - - module PainExtensions - def foo=(name); end - def bar?(name); end - def fizz!(name); end - end - - it 'will add the methods to the DSL for the class in which you register them and its subclasses' do - Sinatra::Base.register FooExtensions - assert Sinatra::Base.respond_to?(:foo) - - Sinatra::Default.register BarExtensions - assert Sinatra::Default.respond_to?(:bar) - assert Sinatra::Default.respond_to?(:foo) - assert !Sinatra::Base.respond_to?(:bar) - end - - it 'allows extending by passing a block' do - Sinatra::Base.register { - def im_in_ur_anonymous_module; end - } - assert Sinatra::Base.respond_to?(:im_in_ur_anonymous_module) - end - - it 'will make sure any public methods added via Default#register are delegated to Sinatra::Delegator' do - Sinatra::Default.register FooExtensions - assert Sinatra::Delegator.private_instance_methods. - map { |m| m.to_sym }.include?(:foo) - assert !Sinatra::Delegator.private_instance_methods. - map { |m| m.to_sym }.include?(:im_hiding_in_ur_foos) - end - - it 'will handle special method names' do - Sinatra::Default.register PainExtensions - assert Sinatra::Delegator.private_instance_methods. - map { |m| m.to_sym }.include?(:foo=) - assert Sinatra::Delegator.private_instance_methods. - map { |m| m.to_sym }.include?(:bar?) - assert Sinatra::Delegator.private_instance_methods. - map { |m| m.to_sym }.include?(:fizz!) - end - - it 'will not delegate methods on Base#register' do - Sinatra::Base.register QuuxExtensions - assert !Sinatra::Delegator.private_instance_methods.include?("quux") - end - - it 'will extend the Sinatra::Default application by default' do - Sinatra.register BazExtensions - assert !Sinatra::Base.respond_to?(:baz) - assert Sinatra::Default.respond_to?(:baz) - end - - module BizzleExtension - def bizzle - bizzle_option - end - - def self.registered(base) - fail "base should be BizzleApp" unless base == BizzleApp - fail "base should have already extended BizzleExtension" unless base.respond_to?(:bizzle) - base.set :bizzle_option, 'bizzle!' - end - end - - class BizzleApp < Sinatra::Base - end - - it 'sends .registered to the extension module after extending the class' do - BizzleApp.register BizzleExtension - assert_equal 'bizzle!', BizzleApp.bizzle_option - assert_equal 'bizzle!', BizzleApp.bizzle - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/filter_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/filter_test.rb deleted file mode 100644 index 38f0495b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/filter_test.rb +++ /dev/null @@ -1,99 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class FilterTest < Test::Unit::TestCase - it "executes filters in the order defined" do - count = 0 - mock_app do - get('/') { 'Hello World' } - before { - assert_equal 0, count - count = 1 - } - before { - assert_equal 1, count - count = 2 - } - end - - get '/' - assert ok? - assert_equal 2, count - assert_equal 'Hello World', body - end - - it "allows filters to modify the request" do - mock_app { - get('/foo') { 'foo' } - get('/bar') { 'bar' } - before { request.path_info = '/bar' } - } - - get '/foo' - assert ok? - assert_equal 'bar', body - end - - it "can modify instance variables available to routes" do - mock_app { - before { @foo = 'bar' } - get('/foo') { @foo } - } - - get '/foo' - assert ok? - assert_equal 'bar', body - end - - it "allows redirects in filters" do - mock_app { - before { redirect '/bar' } - get('/foo') do - fail 'before block should have halted processing' - 'ORLY?!' - end - } - - get '/foo' - assert redirect? - assert_equal '/bar', response['Location'] - assert_equal '', body - end - - it "does not modify the response with its return value" do - mock_app { - before { 'Hello World!' } - get '/foo' do - assert_equal [], response.body - 'cool' - end - } - - get '/foo' - assert ok? - assert_equal 'cool', body - end - - it "does modify the response with halt" do - mock_app { - before { halt 302, 'Hi' } - get '/foo' do - "should not happen" - end - } - - get '/foo' - assert_equal 302, response.status - assert_equal 'Hi', body - end - - it "gives you access to params" do - mock_app { - before { @foo = params['foo'] } - get('/foo') { @foo } - } - - get '/foo?foo=cool' - assert ok? - assert_equal 'cool', body - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/haml_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/haml_test.rb deleted file mode 100644 index 3d6ed69e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/haml_test.rb +++ /dev/null @@ -1,90 +0,0 @@ -require File.dirname(__FILE__) + '/helper' -require 'haml' - -class HAMLTest < Test::Unit::TestCase - def haml_app(&block) - mock_app { - set :views, File.dirname(__FILE__) + '/views' - get '/', &block - } - get '/' - end - - it 'renders inline HAML strings' do - haml_app { haml '%h1 Hiya' } - assert ok? - assert_equal "

    Hiya

    \n", body - end - - it 'renders .haml files in views path' do - haml_app { haml :hello } - assert ok? - assert_equal "

    Hello From Haml

    \n", body - end - - it "renders with inline layouts" do - mock_app { - layout { %q(%h1= 'THIS. IS. ' + yield.upcase) } - get('/') { haml '%em Sparta' } - } - get '/' - assert ok? - assert_equal "

    THIS. IS. SPARTA

    \n", body - end - - it "renders with file layouts" do - haml_app { - haml 'Hello World', :layout => :layout2 - } - assert ok? - assert_equal "

    HAML Layout!

    \n

    Hello World

    \n", body - end - - it "raises error if template not found" do - mock_app { - get('/') { haml :no_such_template } - } - assert_raise(Errno::ENOENT) { get('/') } - end - - it "passes HAML options to the Haml engine" do - mock_app { - get '/' do - haml "!!!\n%h1 Hello World", :format => :html5 - end - } - get '/' - assert ok? - assert_equal "\n

    Hello World

    \n", body - end - - it "passes default HAML options to the Haml engine" do - mock_app { - set :haml, {:format => :html5} - get '/' do - haml "!!!\n%h1 Hello World" - end - } - get '/' - assert ok? - assert_equal "\n

    Hello World

    \n", body - end - - it "merges the default HAML options with the overrides and passes them to the Haml engine" do - mock_app { - set :haml, {:format => :html5, :attr_wrapper => '"'} # default HAML attr are - get '/' do - haml "!!!\n%h1{:class => :header} Hello World" - end - get '/html4' do - haml "!!!\n%h1{:class => 'header'} Hello World", :format => :html4 - end - } - get '/' - assert ok? - assert_equal "\n

    Hello World

    \n", body - get '/html4' - assert ok? - assert_match(/^ '/foo') - assert_equal 302, response.status - assert_equal '/foo', response['Location'] - end - end - - describe 'error' do - it 'sets a status code and halts' do - mock_app { - get '/' do - error 501 - fail 'error should halt' - end - } - - get '/' - assert_equal 501, status - assert_equal '', body - end - - it 'takes an optional body' do - mock_app { - get '/' do - error 501, 'FAIL' - fail 'error should halt' - end - } - - get '/' - assert_equal 501, status - assert_equal 'FAIL', body - end - - it 'uses a 500 status code when first argument is a body' do - mock_app { - get '/' do - error 'FAIL' - fail 'error should halt' - end - } - - get '/' - assert_equal 500, status - assert_equal 'FAIL', body - end - end - - describe 'not_found' do - it 'halts with a 404 status' do - mock_app { - get '/' do - not_found - fail 'not_found should halt' - end - } - - get '/' - assert_equal 404, status - assert_equal '', body - end - end - - describe 'headers' do - it 'sets headers on the response object when given a Hash' do - mock_app { - get '/' do - headers 'X-Foo' => 'bar', 'X-Baz' => 'bling' - 'kthx' - end - } - - get '/' - assert ok? - assert_equal 'bar', response['X-Foo'] - assert_equal 'bling', response['X-Baz'] - assert_equal 'kthx', body - end - - it 'returns the response headers hash when no hash provided' do - mock_app { - get '/' do - headers['X-Foo'] = 'bar' - 'kthx' - end - } - - get '/' - assert ok? - assert_equal 'bar', response['X-Foo'] - end - end - - describe 'session' do - it 'uses the existing rack.session' do - mock_app { - get '/' do - session[:foo] - end - } - - get '/', {}, { 'rack.session' => { :foo => 'bar' } } - assert_equal 'bar', body - end - - it 'creates a new session when none provided' do - mock_app { - get '/' do - assert session.empty? - session[:foo] = 'bar' - 'Hi' - end - } - - get '/' - assert_equal 'Hi', body - end - end - - describe 'media_type' do - include Sinatra::Helpers - - it "looks up media types in Rack's MIME registry" do - Rack::Mime::MIME_TYPES['.foo'] = 'application/foo' - assert_equal 'application/foo', media_type('foo') - assert_equal 'application/foo', media_type('.foo') - assert_equal 'application/foo', media_type(:foo) - end - - it 'returns nil when given nil' do - assert media_type(nil).nil? - end - - it 'returns nil when media type not registered' do - assert media_type(:bizzle).nil? - end - - it 'returns the argument when given a media type string' do - assert_equal 'text/plain', media_type('text/plain') - end - end - - describe 'content_type' do - it 'sets the Content-Type header' do - mock_app { - get '/' do - content_type 'text/plain' - 'Hello World' - end - } - - get '/' - assert_equal 'text/plain', response['Content-Type'] - assert_equal 'Hello World', body - end - - it 'takes media type parameters (like charset=)' do - mock_app { - get '/' do - content_type 'text/html', :charset => 'utf-8' - "

    Hello, World

    " - end - } - - get '/' - assert ok? - assert_equal 'text/html;charset=utf-8', response['Content-Type'] - assert_equal "

    Hello, World

    ", body - end - - it "looks up symbols in Rack's mime types dictionary" do - Rack::Mime::MIME_TYPES['.foo'] = 'application/foo' - mock_app { - get '/foo.xml' do - content_type :foo - "I AM FOO" - end - } - - get '/foo.xml' - assert ok? - assert_equal 'application/foo', response['Content-Type'] - assert_equal 'I AM FOO', body - end - - it 'fails when no mime type is registered for the argument provided' do - mock_app { - get '/foo.xml' do - content_type :bizzle - "I AM FOO" - end - } - - assert_raise(RuntimeError) { get '/foo.xml' } - end - end - - describe 'send_file' do - setup do - @file = File.dirname(__FILE__) + '/file.txt' - File.open(@file, 'wb') { |io| io.write('Hello World') } - end - - def teardown - File.unlink @file - @file = nil - end - - def send_file_app(opts={}) - path = @file - mock_app { - get '/file.txt' do - send_file path, opts - end - } - end - - it "sends the contents of the file" do - send_file_app - get '/file.txt' - assert ok? - assert_equal 'Hello World', body - end - - it 'sets the Content-Type response header if a mime-type can be located' do - send_file_app - get '/file.txt' - assert_equal 'text/plain', response['Content-Type'] - end - - it 'sets the Content-Length response header' do - send_file_app - get '/file.txt' - assert_equal 'Hello World'.length.to_s, response['Content-Length'] - end - - it 'sets the Last-Modified response header' do - send_file_app - get '/file.txt' - assert_equal File.mtime(@file).httpdate, response['Last-Modified'] - end - - it "returns a 404 when not found" do - mock_app { - get '/' do - send_file 'this-file-does-not-exist.txt' - end - } - get '/' - assert not_found? - end - - it "does not set the Content-Disposition header by default" do - send_file_app - get '/file.txt' - assert_nil response['Content-Disposition'] - end - - it "sets the Content-Disposition header when :disposition set to 'attachment'" do - send_file_app :disposition => 'attachment' - get '/file.txt' - assert_equal 'attachment; filename="file.txt"', response['Content-Disposition'] - end - - it "sets the Content-Disposition header when :filename provided" do - send_file_app :filename => 'foo.txt' - get '/file.txt' - assert_equal 'attachment; filename="foo.txt"', response['Content-Disposition'] - end - end - - describe 'last_modified' do - setup do - now = Time.now - mock_app { - get '/' do - body { 'Hello World' } - last_modified now - 'Boo!' - end - } - @now = now - end - - it 'sets the Last-Modified header to a valid RFC 2616 date value' do - get '/' - assert_equal @now.httpdate, response['Last-Modified'] - end - - it 'returns a body when conditional get misses' do - get '/' - assert_equal 200, status - assert_equal 'Boo!', body - end - - it 'halts when a conditional GET matches' do - get '/', {}, { 'HTTP_IF_MODIFIED_SINCE' => @now.httpdate } - assert_equal 304, status - assert_equal '', body - end - end - - describe 'etag' do - setup do - mock_app { - get '/' do - body { 'Hello World' } - etag 'FOO' - 'Boo!' - end - } - end - - it 'sets the ETag header' do - get '/' - assert_equal '"FOO"', response['ETag'] - end - - it 'returns a body when conditional get misses' do - get '/' - assert_equal 200, status - assert_equal 'Boo!', body - end - - it 'halts when a conditional GET matches' do - get '/', {}, { 'HTTP_IF_NONE_MATCH' => '"FOO"' } - assert_equal 304, status - assert_equal '', body - end - - it 'should handle multiple ETag values in If-None-Match header' do - get '/', {}, { 'HTTP_IF_NONE_MATCH' => '"BAR", *' } - assert_equal 304, status - assert_equal '', body - end - - it 'uses a weak etag with the :weak option' do - mock_app { - get '/' do - etag 'FOO', :weak - "that's weak, dude." - end - } - get '/' - assert_equal 'W/"FOO"', response['ETag'] - end - end - - describe 'back' do - it "makes redirecting back pretty" do - mock_app { - get '/foo' do - redirect back - end - } - - get '/foo', {}, 'HTTP_REFERER' => 'http://github.com' - assert redirect? - assert_equal "http://github.com", response.location - end - end - - module ::HelperOne; def one; '1'; end; end - module ::HelperTwo; def two; '2'; end; end - - describe 'Adding new helpers' do - it 'takes a list of modules to mix into the app' do - mock_app { - helpers ::HelperOne, ::HelperTwo - - get '/one' do - one - end - - get '/two' do - two - end - } - - get '/one' - assert_equal '1', body - - get '/two' - assert_equal '2', body - end - - it 'takes a block to mix into the app' do - mock_app { - helpers do - def foo - 'foo' - end - end - - get '/' do - foo - end - } - - get '/' - assert_equal 'foo', body - end - - it 'evaluates the block in class context so that methods can be aliased' do - mock_app { - helpers do - alias_method :h, :escape_html - end - - get '/' do - h('42 < 43') - end - } - - get '/' - assert ok? - assert_equal '42 < 43', body - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/mapped_error_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/mapped_error_test.rb deleted file mode 100644 index fa57d9a1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/mapped_error_test.rb +++ /dev/null @@ -1,155 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class FooError < RuntimeError -end - -class FooNotFound < Sinatra::NotFound -end - -class MappedErrorTest < Test::Unit::TestCase - def test_default - assert true - end - - describe 'Exception Mappings' do - it 'invokes handlers registered with ::error when raised' do - mock_app { - set :raise_errors, false - error(FooError) { 'Foo!' } - get '/' do - raise FooError - end - } - get '/' - assert_equal 500, status - assert_equal 'Foo!', body - end - - it 'uses the Exception handler if no matching handler found' do - mock_app { - set :raise_errors, false - error(Exception) { 'Exception!' } - get '/' do - raise FooError - end - } - - get '/' - assert_equal 500, status - assert_equal 'Exception!', body - end - - it "sets env['sinatra.error'] to the rescued exception" do - mock_app { - set :raise_errors, false - error(FooError) { - assert env.include?('sinatra.error') - assert env['sinatra.error'].kind_of?(FooError) - 'looks good' - } - get '/' do - raise FooError - end - } - get '/' - assert_equal 'looks good', body - end - - it "raises without calling the handler when the raise_errors options is set" do - mock_app { - set :raise_errors, true - error(FooError) { "she's not there." } - get '/' do - raise FooError - end - } - assert_raise(FooError) { get '/' } - end - - it "never raises Sinatra::NotFound beyond the application" do - mock_app { - set :raise_errors, true - get '/' do - raise Sinatra::NotFound - end - } - assert_nothing_raised { get '/' } - assert_equal 404, status - end - - it "cascades for subclasses of Sinatra::NotFound" do - mock_app { - set :raise_errors, true - error(FooNotFound) { "foo! not found." } - get '/' do - raise FooNotFound - end - } - assert_nothing_raised { get '/' } - assert_equal 404, status - assert_equal 'foo! not found.', body - end - - it 'has a not_found method for backwards compatibility' do - mock_app { - not_found do - "Lost, are we?" - end - } - - get '/test' - assert_equal 404, status - assert_equal "Lost, are we?", body - end - end - - describe 'Custom Error Pages' do - it 'allows numeric status code mappings to be registered with ::error' do - mock_app { - set :raise_errors, false - error(500) { 'Foo!' } - get '/' do - [500, {}, 'Internal Foo Error'] - end - } - get '/' - assert_equal 500, status - assert_equal 'Foo!', body - end - - it 'allows ranges of status code mappings to be registered with :error' do - mock_app { - set :raise_errors, false - error(500..550) { "Error: #{response.status}" } - get '/' do - [507, {}, 'A very special error'] - end - } - get '/' - assert_equal 507, status - assert_equal 'Error: 507', body - end - - class FooError < RuntimeError - end - - it 'runs after exception mappings and overwrites body' do - mock_app { - set :raise_errors, false - error FooError do - response.status = 502 - 'from exception mapping' - end - error(500) { 'from 500 handler' } - error(502) { 'from custom error page' } - - get '/' do - raise FooError - end - } - get '/' - assert_equal 502, status - assert_equal 'from custom error page', body - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/middleware_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/middleware_test.rb deleted file mode 100644 index 2ebef29a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/middleware_test.rb +++ /dev/null @@ -1,68 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class MiddlewareTest < Test::Unit::TestCase - setup do - @app = mock_app(Sinatra::Default) { - get '/*' do - response.headers['X-Tests'] = env['test.ran']. - map { |n| n.split('::').last }. - join(', ') - env['PATH_INFO'] - end - } - end - - class MockMiddleware < Struct.new(:app) - def call(env) - (env['test.ran'] ||= []) << self.class.to_s - app.call(env) - end - end - - class UpcaseMiddleware < MockMiddleware - def call(env) - env['PATH_INFO'] = env['PATH_INFO'].upcase - super - end - end - - it "is added with Sinatra::Application.use" do - @app.use UpcaseMiddleware - get '/hello-world' - assert ok? - assert_equal '/HELLO-WORLD', body - end - - class DowncaseMiddleware < MockMiddleware - def call(env) - env['PATH_INFO'] = env['PATH_INFO'].downcase - super - end - end - - it "runs in the order defined" do - @app.use UpcaseMiddleware - @app.use DowncaseMiddleware - get '/Foo' - assert_equal "/foo", body - assert_equal "UpcaseMiddleware, DowncaseMiddleware", response['X-Tests'] - end - - it "resets the prebuilt pipeline when new middleware is added" do - @app.use UpcaseMiddleware - get '/Foo' - assert_equal "/FOO", body - @app.use DowncaseMiddleware - get '/Foo' - assert_equal '/foo', body - assert_equal "UpcaseMiddleware, DowncaseMiddleware", response['X-Tests'] - end - - it "works when app is used as middleware" do - @app.use UpcaseMiddleware - @app = @app.new - get '/Foo' - assert_equal "/FOO", body - assert_equal "UpcaseMiddleware", response['X-Tests'] - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/options_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/options_test.rb deleted file mode 100644 index 19f5ea2d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/options_test.rb +++ /dev/null @@ -1,372 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class OptionsTest < Test::Unit::TestCase - setup do - @base = Sinatra.new(Sinatra::Base) - @default = Sinatra.new(Sinatra::Default) - @base.set :environment, :development - @default.set :environment, :development - end - - it 'sets options to literal values' do - @base.set(:foo, 'bar') - assert @base.respond_to?(:foo) - assert_equal 'bar', @base.foo - end - - it 'sets options to Procs' do - @base.set(:foo, Proc.new { 'baz' }) - assert @base.respond_to?(:foo) - assert_equal 'baz', @base.foo - end - - it "sets multiple options with a Hash" do - @base.set :foo => 1234, - :bar => 'Hello World', - :baz => Proc.new { 'bizzle' } - assert_equal 1234, @base.foo - assert_equal 'Hello World', @base.bar - assert_equal 'bizzle', @base.baz - end - - it 'inherits option methods when subclassed' do - @base.set :foo, 'bar' - @base.set :biz, Proc.new { 'baz' } - - sub = Class.new(@base) - assert sub.respond_to?(:foo) - assert_equal 'bar', sub.foo - assert sub.respond_to?(:biz) - assert_equal 'baz', sub.biz - end - - it 'overrides options in subclass' do - @base.set :foo, 'bar' - @base.set :biz, Proc.new { 'baz' } - sub = Class.new(@base) - sub.set :foo, 'bling' - assert_equal 'bling', sub.foo - assert_equal 'bar', @base.foo - end - - it 'creates setter methods when first defined' do - @base.set :foo, 'bar' - assert @base.respond_to?('foo=') - @base.foo = 'biz' - assert_equal 'biz', @base.foo - end - - it 'creates predicate methods when first defined' do - @base.set :foo, 'hello world' - assert @base.respond_to?(:foo?) - assert @base.foo? - @base.set :foo, nil - assert !@base.foo? - end - - it 'uses existing setter methods if detected' do - class << @base - def foo - @foo - end - def foo=(value) - @foo = 'oops' - end - end - - @base.set :foo, 'bam' - assert_equal 'oops', @base.foo - end - - it "sets multiple options to true with #enable" do - @base.enable :sessions, :foo, :bar - assert @base.sessions - assert @base.foo - assert @base.bar - end - - it "sets multiple options to false with #disable" do - @base.disable :sessions, :foo, :bar - assert !@base.sessions - assert !@base.foo - assert !@base.bar - end - - it 'enables MethodOverride middleware when :methodoverride is enabled' do - @base.set :methodoverride, true - @base.put('/') { 'okay' } - @app = @base - post '/', {'_method'=>'PUT'}, {} - assert_equal 200, status - assert_equal 'okay', body - end - - describe 'clean_trace' do - def clean_backtrace(trace) - Sinatra::Base.new.send(:clean_backtrace, trace) - end - - it 'is enabled on Base' do - assert @base.clean_trace? - end - - it 'is enabled on Default' do - assert @default.clean_trace? - end - - it 'does nothing when disabled' do - backtrace = [ - "./lib/sinatra/base.rb", - "./myapp:42", - ("#{Gem.dir}/some/lib.rb" if defined?(Gem)) - ].compact - - klass = Class.new(Sinatra::Base) - klass.disable :clean_trace - - assert_equal backtrace, klass.new.send(:clean_backtrace, backtrace) - end - - it 'removes sinatra lib paths from backtrace when enabled' do - backtrace = [ - "./lib/sinatra/base.rb", - "./lib/sinatra/compat.rb:42", - "./lib/sinatra/main.rb:55 in `foo'" - ] - assert clean_backtrace(backtrace).empty? - end - - it 'removes ./ prefix from backtrace paths when enabled' do - assert_equal ['myapp.rb:42'], clean_backtrace(['./myapp.rb:42']) - end - - if defined?(Gem) - it 'removes gem lib paths from backtrace when enabled' do - assert clean_backtrace(["#{Gem.dir}/some/lib"]).empty? - end - end - end - - describe 'run' do - it 'is disabled on Base' do - assert ! @base.run? - end - - it 'is enabled on Default when not in test environment' do - @default.set :environment, :development - assert @default.development? - assert @default.run? - - @default.set :environment, :development - assert @default.run? - end - - # TODO: it 'is enabled when $0 == app_file' - end - - describe 'raise_errors' do - it 'is enabled on Base' do - assert @base.raise_errors? - end - - it 'is enabled on Default only in test' do - @default.set(:environment, :development) - assert @default.development? - assert ! @default.raise_errors? - - @default.set(:environment, :production) - assert ! @default.raise_errors? - - @default.set(:environment, :test) - assert @default.raise_errors? - end - end - - describe 'show_exceptions' do - %w[development test production none].each do |environment| - it "is disabled on Base in #{environment} environments" do - @base.set(:environment, environment) - assert ! @base.show_exceptions? - end - end - - it 'is enabled on Default only in development' do - @base.set(:environment, :development) - assert @default.development? - assert @default.show_exceptions? - - @default.set(:environment, :test) - assert ! @default.show_exceptions? - - @base.set(:environment, :production) - assert ! @base.show_exceptions? - end - - it 'returns a friendly 500' do - klass = Sinatra.new(Sinatra::Default) - mock_app(klass) { - enable :show_exceptions - - get '/' do - raise StandardError - end - } - - get '/' - assert_equal 500, status - assert body.include?("StandardError") - assert body.include?("show_exceptions option") - end - end - - describe 'dump_errors' do - it 'is disabled on Base' do - assert ! @base.dump_errors? - end - - it 'is enabled on Default' do - assert @default.dump_errors? - end - - it 'dumps exception with backtrace to rack.errors' do - klass = Sinatra.new(Sinatra::Default) - - mock_app(klass) { - disable :raise_errors - - error do - error = @env['rack.errors'].instance_variable_get(:@error) - error.rewind - - error.read - end - - get '/' do - raise - end - } - - get '/' - assert body.include?("RuntimeError") && body.include?("options_test.rb") - end - end - - describe 'sessions' do - it 'is disabled on Base' do - assert ! @base.sessions? - end - - it 'is disabled on Default' do - assert ! @default.sessions? - end - - # TODO: it 'uses Rack::Session::Cookie when enabled' do - end - - describe 'logging' do - it 'is disabled on Base' do - assert ! @base.logging? - end - - it 'is enabled on Default when not in test environment' do - assert @default.logging? - - @default.set :environment, :test - assert ! @default.logging - end - - # TODO: it 'uses Rack::CommonLogger when enabled' do - end - - describe 'static' do - it 'is disabled on Base' do - assert ! @base.static? - end - - it 'is enabled on Default' do - assert @default.static? - end - - # TODO: it setup static routes if public is enabled - # TODO: however, that's already tested in static_test so... - end - - describe 'host' do - it 'defaults to 0.0.0.0' do - assert_equal '0.0.0.0', @base.host - assert_equal '0.0.0.0', @default.host - end - end - - describe 'port' do - it 'defaults to 4567' do - assert_equal 4567, @base.port - assert_equal 4567, @default.port - end - end - - describe 'server' do - it 'is one of thin, mongrel, webrick' do - assert_equal %w[thin mongrel webrick], @base.server - assert_equal %w[thin mongrel webrick], @default.server - end - end - - describe 'app_file' do - it 'is nil' do - assert @base.app_file.nil? - assert @default.app_file.nil? - end - end - - describe 'root' do - it 'is nil if app_file is not set' do - assert @base.root.nil? - assert @default.root.nil? - end - - it 'is equal to the expanded basename of app_file' do - @base.app_file = __FILE__ - assert_equal File.expand_path(File.dirname(__FILE__)), @base.root - - @default.app_file = __FILE__ - assert_equal File.expand_path(File.dirname(__FILE__)), @default.root - end - end - - describe 'views' do - it 'is nil if root is not set' do - assert @base.views.nil? - assert @default.views.nil? - end - - it 'is set to root joined with views/' do - @base.root = File.dirname(__FILE__) - assert_equal File.dirname(__FILE__) + "/views", @base.views - - @default.root = File.dirname(__FILE__) - assert_equal File.dirname(__FILE__) + "/views", @default.views - end - end - - describe 'public' do - it 'is nil if root is not set' do - assert @base.public.nil? - assert @default.public.nil? - end - - it 'is set to root joined with public/' do - @base.root = File.dirname(__FILE__) - assert_equal File.dirname(__FILE__) + "/public", @base.public - - @default.root = File.dirname(__FILE__) - assert_equal File.dirname(__FILE__) + "/public", @default.public - end - end - - describe 'lock' do - it 'is disabled by default' do - assert ! @base.lock? - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/render_backtrace_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/render_backtrace_test.rb deleted file mode 100644 index 350beba4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/render_backtrace_test.rb +++ /dev/null @@ -1,145 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -require 'sass/error' - -class RenderBacktraceTest < Test::Unit::TestCase - VIEWS = File.dirname(__FILE__) + '/views' - - def assert_raise_at(filename, line, exception = RuntimeError) - f, l = nil - assert_raise(exception) do - begin - get('/') - rescue => e - f, l = e.backtrace.first.split(':') - raise - end - end - assert_equal(filename, f, "expected #{exception.name} in #{filename}, was #{f}") - assert_equal(line, l.to_i, "expected #{exception.name} in #{filename} at line #{line}, was at line #{l}") - end - - def backtrace_app(&block) - mock_app { - use_in_file_templates! - set :views, RenderBacktraceTest::VIEWS - template :builder_template do - 'raise "error"' - end - template :erb_template do - '<% raise "error" %>' - end - template :haml_template do - '%h1= raise "error"' - end - template :sass_template do - '+syntax-error' - end - get '/', &block - } - end - - it "provides backtrace for Builder template" do - backtrace_app { builder :error } - assert_raise_at(File.join(VIEWS,'error.builder'), 2) - end - - it "provides backtrace for ERB template" do - backtrace_app { erb :error } - assert_raise_at(File.join(VIEWS,'error.erb'), 2) - end - - it "provides backtrace for HAML template" do - backtrace_app { haml :error } - assert_raise_at(File.join(VIEWS,'error.haml'), 2) - end - - it "provides backtrace for Sass template" do - backtrace_app { sass :error } - assert_raise_at(File.join(VIEWS,'error.sass'), 2, Sass::SyntaxError) - end - - it "provides backtrace for ERB template with locals" do - backtrace_app { erb :error, {}, :french => true } - assert_raise_at(File.join(VIEWS,'error.erb'), 3) - end - - it "provides backtrace for HAML template with locals" do - backtrace_app { haml :error, {}, :french => true } - assert_raise_at(File.join(VIEWS,'error.haml'), 3) - end - - it "provides backtrace for inline Builder string" do - backtrace_app { builder "raise 'Ack! Thbbbt!'"} - assert_raise_at(__FILE__, (__LINE__-1)) - end - - it "provides backtrace for inline ERB string" do - backtrace_app { erb "<% raise 'bidi-bidi-bidi' %>" } - assert_raise_at(__FILE__, (__LINE__-1)) - end - - it "provides backtrace for inline HAML string" do - backtrace_app { haml "%h1= raise 'Lions and tigers and bears! Oh, my!'" } - assert_raise_at(__FILE__, (__LINE__-1)) - end - - # it "provides backtrace for inline Sass string" do - # backtrace_app { sass '+buh-bye' } - # assert_raise_at(__FILE__, (__LINE__-1), Sass::SyntaxError) - # end - - it "provides backtrace for named Builder template" do - backtrace_app { builder :builder_template } - assert_raise_at(__FILE__, (__LINE__-68)) - end - - it "provides backtrace for named ERB template" do - backtrace_app { erb :erb_template } - assert_raise_at(__FILE__, (__LINE__-70)) - end - - it "provides backtrace for named HAML template" do - backtrace_app { haml :haml_template } - assert_raise_at(__FILE__, (__LINE__-72)) - end - - # it "provides backtrace for named Sass template" do - # backtrace_app { sass :sass_template } - # assert_raise_at(__FILE__, (__LINE__-74), Sass::SyntaxError) - # end - - it "provides backtrace for in file Builder template" do - backtrace_app { builder :builder_in_file } - assert_raise_at(__FILE__, (__LINE__+22)) - end - - it "provides backtrace for in file ERB template" do - backtrace_app { erb :erb_in_file } - assert_raise_at(__FILE__, (__LINE__+20)) - end - - it "provides backtrace for in file HAML template" do - backtrace_app { haml :haml_in_file } - assert_raise_at(__FILE__, (__LINE__+18)) - end - - # it "provides backtrace for in file Sass template" do - # backtrace_app { sass :sass_in_file } - # assert_raise_at(__FILE__, (__LINE__+16), Sass::SyntaxError) - # end -end - -__END__ - -@@ builder_in_file -raise "bif" - -@@ erb_in_file -<% raise "bam" %> - -@@ haml_in_file -%h1= raise "pow" - -@@ sass_in_file -+blam diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/request_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/request_test.rb deleted file mode 100644 index 44dac6cb..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/request_test.rb +++ /dev/null @@ -1,18 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class RequestTest < Test::Unit::TestCase - it 'responds to #user_agent' do - request = Sinatra::Request.new({'HTTP_USER_AGENT' => 'Test'}) - assert request.respond_to?(:user_agent) - assert_equal 'Test', request.user_agent - end - - it 'parses POST params when Content-Type is form-dataish' do - request = Sinatra::Request.new( - 'REQUEST_METHOD' => 'PUT', - 'CONTENT_TYPE' => 'application/x-www-form-urlencoded', - 'rack.input' => StringIO.new('foo=bar') - ) - assert_equal 'bar', request.params['foo'] - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/response_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/response_test.rb deleted file mode 100644 index 5aa5f4e6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/response_test.rb +++ /dev/null @@ -1,42 +0,0 @@ -# encoding: utf-8 - -require File.dirname(__FILE__) + '/helper' - -class ResponseTest < Test::Unit::TestCase - setup do - @response = Sinatra::Response.new - end - - it "initializes with 200, text/html, and empty body" do - assert_equal 200, @response.status - assert_equal 'text/html', @response['Content-Type'] - assert_equal [], @response.body - end - - it 'uses case insensitive headers' do - @response['content-type'] = 'application/foo' - assert_equal 'application/foo', @response['Content-Type'] - assert_equal 'application/foo', @response['CONTENT-TYPE'] - end - - it 'writes to body' do - @response.body = 'Hello' - @response.write ' World' - assert_equal 'Hello World', @response.body - end - - [204, 304].each do |status_code| - it "removes the Content-Type header and body when response status is #{status_code}" do - @response.status = status_code - @response.body = ['Hello World'] - assert_equal [status_code, {}, []], @response.finish - end - end - - it 'Calculates the Content-Length using the bytesize of the body' do - @response.body = ['Hello', 'World!', '✈'] - status, headers, body = @response.finish - assert_equal '14', headers['Content-Length'] - assert_equal @response.body, body - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/result_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/result_test.rb deleted file mode 100644 index 5100abf4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/result_test.rb +++ /dev/null @@ -1,98 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class ResultTest < Test::Unit::TestCase - it "sets response.body when result is a String" do - mock_app { - get '/' do - 'Hello World' - end - } - - get '/' - assert ok? - assert_equal 'Hello World', body - end - - it "sets response.body when result is an Array of Strings" do - mock_app { - get '/' do - ['Hello', 'World'] - end - } - - get '/' - assert ok? - assert_equal 'HelloWorld', body - end - - it "sets response.body when result responds to #each" do - mock_app { - get '/' do - res = lambda { 'Hello World' } - def res.each ; yield call ; end - res - end - } - - get '/' - assert ok? - assert_equal 'Hello World', body - end - - it "sets response.body to [] when result is nil" do - mock_app { - get '/' do - nil - end - } - - get '/' - assert ok? - assert_equal '', body - end - - it "sets status, headers, and body when result is a Rack response tuple" do - mock_app { - get '/' do - [205, {'Content-Type' => 'foo/bar'}, 'Hello World'] - end - } - - get '/' - assert_equal 205, status - assert_equal 'foo/bar', response['Content-Type'] - assert_equal 'Hello World', body - end - - it "sets status and body when result is a two-tuple" do - mock_app { - get '/' do - [409, 'formula of'] - end - } - - get '/' - assert_equal 409, status - assert_equal 'formula of', body - end - - it "raises a TypeError when result is a non two or three tuple Array" do - mock_app { - get '/' do - [409, 'formula of', 'something else', 'even more'] - end - } - - assert_raise(TypeError) { get '/' } - end - - it "sets status when result is a Fixnum status code" do - mock_app { - get('/') { 205 } - } - - get '/' - assert_equal 205, status - assert_equal '', body - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/route_added_hook_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/route_added_hook_test.rb deleted file mode 100644 index 08fdd925..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/route_added_hook_test.rb +++ /dev/null @@ -1,59 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -module RouteAddedTest - @routes, @procs = [], [] - def self.routes ; @routes ; end - def self.procs ; @procs ; end - def self.route_added(verb, path, proc) - @routes << [verb, path] - @procs << proc - end -end - -class RouteAddedHookTest < Test::Unit::TestCase - setup { - RouteAddedTest.routes.clear - RouteAddedTest.procs.clear - } - - it "should be notified of an added route" do - mock_app(Class.new(Sinatra::Base)) { - register RouteAddedTest - get('/') {} - } - - assert_equal [["GET", "/"], ["HEAD", "/"]], - RouteAddedTest.routes - end - - it "should include hooks from superclass" do - a = Class.new(Class.new(Sinatra::Base)) - b = Class.new(a) - - a.register RouteAddedTest - b.class_eval { post("/sub_app_route") {} } - - assert_equal [["POST", "/sub_app_route"]], - RouteAddedTest.routes - end - - it "should only run once per extension" do - mock_app(Class.new(Sinatra::Base)) { - register RouteAddedTest - register RouteAddedTest - get('/') {} - } - - assert_equal [["GET", "/"], ["HEAD", "/"]], - RouteAddedTest.routes - end - - it "should pass route blocks as an argument" do - mock_app(Class.new(Sinatra::Base)) { - register RouteAddedTest - get('/') {} - } - - assert_kind_of Proc, RouteAddedTest.procs.first - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/routing_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/routing_test.rb deleted file mode 100644 index a8591cae..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/routing_test.rb +++ /dev/null @@ -1,784 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -# Helper method for easy route pattern matching testing -def route_def(pattern) - mock_app { get(pattern) { } } -end - -class RegexpLookAlike - class MatchData - def captures - ["this", "is", "a", "test"] - end - end - - def match(string) - ::RegexpLookAlike::MatchData.new if string == "/this/is/a/test/" - end - - def keys - ["one", "two", "three", "four"] - end -end - -class RoutingTest < Test::Unit::TestCase - %w[get put post delete].each do |verb| - it "defines #{verb.upcase} request handlers with #{verb}" do - mock_app { - send verb, '/hello' do - 'Hello World' - end - } - - request = Rack::MockRequest.new(@app) - response = request.request(verb.upcase, '/hello', {}) - assert response.ok? - assert_equal 'Hello World', response.body - end - end - - it "defines HEAD request handlers with HEAD" do - mock_app { - head '/hello' do - response['X-Hello'] = 'World!' - 'remove me' - end - } - - request = Rack::MockRequest.new(@app) - response = request.request('HEAD', '/hello', {}) - assert response.ok? - assert_equal 'World!', response['X-Hello'] - assert_equal '', response.body - end - - it "404s when no route satisfies the request" do - mock_app { - get('/foo') { } - } - get '/bar' - assert_equal 404, status - end - - it "overrides the content-type in error handlers" do - mock_app { - before { content_type 'text/plain' } - error Sinatra::NotFound do - content_type "text/html" - "

    Not Found

    " - end - } - - get '/foo' - assert_equal 404, status - assert_equal 'text/html', response["Content-Type"] - assert_equal "

    Not Found

    ", response.body - end - - it 'takes multiple definitions of a route' do - mock_app { - user_agent(/Foo/) - get '/foo' do - 'foo' - end - - get '/foo' do - 'not foo' - end - } - - get '/foo', {}, 'HTTP_USER_AGENT' => 'Foo' - assert ok? - assert_equal 'foo', body - - get '/foo' - assert ok? - assert_equal 'not foo', body - end - - it "exposes params with indifferent hash" do - mock_app { - get '/:foo' do - assert_equal 'bar', params['foo'] - assert_equal 'bar', params[:foo] - 'well, alright' - end - } - get '/bar' - assert_equal 'well, alright', body - end - - it "merges named params and query string params in params" do - mock_app { - get '/:foo' do - assert_equal 'bar', params['foo'] - assert_equal 'biz', params['baz'] - end - } - get '/bar?baz=biz' - assert ok? - end - - it "supports named params like /hello/:person" do - mock_app { - get '/hello/:person' do - "Hello #{params['person']}" - end - } - get '/hello/Frank' - assert_equal 'Hello Frank', body - end - - it "supports optional named params like /?:foo?/?:bar?" do - mock_app { - get '/?:foo?/?:bar?' do - "foo=#{params[:foo]};bar=#{params[:bar]}" - end - } - - get '/hello/world' - assert ok? - assert_equal "foo=hello;bar=world", body - - get '/hello' - assert ok? - assert_equal "foo=hello;bar=", body - - get '/' - assert ok? - assert_equal "foo=;bar=", body - end - - it "supports single splat params like /*" do - mock_app { - get '/*' do - assert params['splat'].kind_of?(Array) - params['splat'].join "\n" - end - } - - get '/foo' - assert_equal "foo", body - - get '/foo/bar/baz' - assert_equal "foo/bar/baz", body - end - - it "supports mixing multiple splat params like /*/foo/*/*" do - mock_app { - get '/*/foo/*/*' do - assert params['splat'].kind_of?(Array) - params['splat'].join "\n" - end - } - - get '/bar/foo/bling/baz/boom' - assert_equal "bar\nbling\nbaz/boom", body - - get '/bar/foo/baz' - assert not_found? - end - - it "supports mixing named and splat params like /:foo/*" do - mock_app { - get '/:foo/*' do - assert_equal 'foo', params['foo'] - assert_equal ['bar/baz'], params['splat'] - end - } - - get '/foo/bar/baz' - assert ok? - end - - it "matches a dot ('.') as part of a named param" do - mock_app { - get '/:foo/:bar' do - params[:foo] - end - } - - get '/user@example.com/name' - assert_equal 200, response.status - assert_equal 'user@example.com', body - end - - it "matches a literal dot ('.') outside of named params" do - mock_app { - get '/:file.:ext' do - assert_equal 'pony', params[:file] - assert_equal 'jpg', params[:ext] - 'right on' - end - } - - get '/pony.jpg' - assert_equal 200, response.status - assert_equal 'right on', body - end - - it "literally matches . in paths" do - route_def '/test.bar' - - get '/test.bar' - assert ok? - get 'test0bar' - assert not_found? - end - - it "literally matches $ in paths" do - route_def '/test$/' - - get '/test$/' - assert ok? - end - - it "literally matches + in paths" do - route_def '/te+st/' - - get '/te%2Bst/' - assert ok? - get '/teeeeeeest/' - assert not_found? - end - - it "literally matches () in paths" do - route_def '/test(bar)/' - - get '/test(bar)/' - assert ok? - end - - it "supports basic nested params" do - mock_app { - get '/hi' do - params["person"]["name"] - end - } - - get "/hi?person[name]=John+Doe" - assert ok? - assert_equal "John Doe", body - end - - it "exposes nested params with indifferent hash" do - mock_app { - get '/testme' do - assert_equal 'baz', params['bar']['foo'] - assert_equal 'baz', params['bar'][:foo] - 'well, alright' - end - } - get '/testme?bar[foo]=baz' - assert_equal 'well, alright', body - end - - it "supports deeply nested params" do - expected_params = { - "emacs" => { - "map" => { "goto-line" => "M-g g" }, - "version" => "22.3.1" - }, - "browser" => { - "firefox" => {"engine" => {"name"=>"spidermonkey", "version"=>"1.7.0"}}, - "chrome" => {"engine" => {"name"=>"V8", "version"=>"1.0"}} - }, - "paste" => {"name"=>"hello world", "syntax"=>"ruby"} - } - mock_app { - get '/foo' do - assert_equal expected_params, params - 'looks good' - end - } - get '/foo', expected_params - assert ok? - assert_equal 'looks good', body - end - - it "preserves non-nested params" do - mock_app { - get '/foo' do - assert_equal "2", params["article_id"] - assert_equal "awesome", params['comment']['body'] - assert_nil params['comment[body]'] - 'looks good' - end - } - - get '/foo?article_id=2&comment[body]=awesome' - assert ok? - assert_equal 'looks good', body - end - - it "matches paths that include spaces encoded with %20" do - mock_app { - get '/path with spaces' do - 'looks good' - end - } - - get '/path%20with%20spaces' - assert ok? - assert_equal 'looks good', body - end - - it "matches paths that include spaces encoded with +" do - mock_app { - get '/path with spaces' do - 'looks good' - end - } - - get '/path+with+spaces' - assert ok? - assert_equal 'looks good', body - end - - it "URL decodes named parameters and splats" do - mock_app { - get '/:foo/*' do - assert_equal 'hello world', params['foo'] - assert_equal ['how are you'], params['splat'] - nil - end - } - - get '/hello%20world/how%20are%20you' - assert ok? - end - - it 'supports regular expressions' do - mock_app { - get(/^\/foo...\/bar$/) do - 'Hello World' - end - } - - get '/foooom/bar' - assert ok? - assert_equal 'Hello World', body - end - - it 'makes regular expression captures available in params[:captures]' do - mock_app { - get(/^\/fo(.*)\/ba(.*)/) do - assert_equal ['orooomma', 'f'], params[:captures] - 'right on' - end - } - - get '/foorooomma/baf' - assert ok? - assert_equal 'right on', body - end - - it 'supports regular expression look-alike routes' do - mock_app { - get(RegexpLookAlike.new) do - assert_equal 'this', params[:one] - assert_equal 'is', params[:two] - assert_equal 'a', params[:three] - assert_equal 'test', params[:four] - 'right on' - end - } - - get '/this/is/a/test/' - assert ok? - assert_equal 'right on', body - end - - it 'raises a TypeError when pattern is not a String or Regexp' do - assert_raise(TypeError) { - mock_app { get(42){} } - } - end - - it "returns response immediately on halt" do - mock_app { - get '/' do - halt 'Hello World' - 'Boo-hoo World' - end - } - - get '/' - assert ok? - assert_equal 'Hello World', body - end - - it "halts with a response tuple" do - mock_app { - get '/' do - halt 295, {'Content-Type' => 'text/plain'}, 'Hello World' - end - } - - get '/' - assert_equal 295, status - assert_equal 'text/plain', response['Content-Type'] - assert_equal 'Hello World', body - end - - it "halts with an array of strings" do - mock_app { - get '/' do - halt %w[Hello World How Are You] - end - } - - get '/' - assert_equal 'HelloWorldHowAreYou', body - end - - it "transitions to the next matching route on pass" do - mock_app { - get '/:foo' do - pass - 'Hello Foo' - end - - get '/*' do - assert !params.include?('foo') - 'Hello World' - end - } - - get '/bar' - assert ok? - assert_equal 'Hello World', body - end - - it "transitions to 404 when passed and no subsequent route matches" do - mock_app { - get '/:foo' do - pass - 'Hello Foo' - end - } - - get '/bar' - assert not_found? - end - - it "passes when matching condition returns false" do - mock_app { - condition { params[:foo] == 'bar' } - get '/:foo' do - 'Hello World' - end - } - - get '/bar' - assert ok? - assert_equal 'Hello World', body - - get '/foo' - assert not_found? - end - - it "does not pass when matching condition returns nil" do - mock_app { - condition { nil } - get '/:foo' do - 'Hello World' - end - } - - get '/bar' - assert ok? - assert_equal 'Hello World', body - end - - it "passes to next route when condition calls pass explicitly" do - mock_app { - condition { pass unless params[:foo] == 'bar' } - get '/:foo' do - 'Hello World' - end - } - - get '/bar' - assert ok? - assert_equal 'Hello World', body - - get '/foo' - assert not_found? - end - - it "passes to the next route when host_name does not match" do - mock_app { - host_name 'example.com' - get '/foo' do - 'Hello World' - end - } - get '/foo' - assert not_found? - - get '/foo', {}, { 'HTTP_HOST' => 'example.com' } - assert_equal 200, status - assert_equal 'Hello World', body - end - - it "passes to the next route when user_agent does not match" do - mock_app { - user_agent(/Foo/) - get '/foo' do - 'Hello World' - end - } - get '/foo' - assert not_found? - - get '/foo', {}, { 'HTTP_USER_AGENT' => 'Foo Bar' } - assert_equal 200, status - assert_equal 'Hello World', body - end - - it "makes captures in user agent pattern available in params[:agent]" do - mock_app { - user_agent(/Foo (.*)/) - get '/foo' do - 'Hello ' + params[:agent].first - end - } - get '/foo', {}, { 'HTTP_USER_AGENT' => 'Foo Bar' } - assert_equal 200, status - assert_equal 'Hello Bar', body - end - - it "filters by accept header" do - mock_app { - get '/', :provides => :xml do - request.env['HTTP_ACCEPT'] - end - } - - get '/', {}, { 'HTTP_ACCEPT' => 'application/xml' } - assert ok? - assert_equal 'application/xml', body - assert_equal 'application/xml', response.headers['Content-Type'] - - get '/', {}, { :accept => 'text/html' } - assert !ok? - end - - it "allows multiple mime types for accept header" do - types = ['image/jpeg', 'image/pjpeg'] - - mock_app { - get '/', :provides => types do - request.env['HTTP_ACCEPT'] - end - } - - types.each do |type| - get '/', {}, { 'HTTP_ACCEPT' => type } - assert ok? - assert_equal type, body - assert_equal type, response.headers['Content-Type'] - end - end - - it 'degrades gracefully when optional accept header is not provided' do - mock_app { - get '/', :provides => :xml do - request.env['HTTP_ACCEPT'] - end - get '/' do - 'default' - end - } - get '/' - assert ok? - assert_equal 'default', body - end - - it 'passes a single url param as block parameters when one param is specified' do - mock_app { - get '/:foo' do |foo| - assert_equal 'bar', foo - end - } - - get '/bar' - assert ok? - end - - it 'passes multiple params as block parameters when many are specified' do - mock_app { - get '/:foo/:bar/:baz' do |foo, bar, baz| - assert_equal 'abc', foo - assert_equal 'def', bar - assert_equal 'ghi', baz - end - } - - get '/abc/def/ghi' - assert ok? - end - - it 'passes regular expression captures as block parameters' do - mock_app { - get(/^\/fo(.*)\/ba(.*)/) do |foo, bar| - assert_equal 'orooomma', foo - assert_equal 'f', bar - 'looks good' - end - } - - get '/foorooomma/baf' - assert ok? - assert_equal 'looks good', body - end - - it "supports mixing multiple splat params like /*/foo/*/* as block parameters" do - mock_app { - get '/*/foo/*/*' do |foo, bar, baz| - assert_equal 'bar', foo - assert_equal 'bling', bar - assert_equal 'baz/boom', baz - 'looks good' - end - } - - get '/bar/foo/bling/baz/boom' - assert ok? - assert_equal 'looks good', body - end - - it 'raises an ArgumentError with block arity > 1 and too many values' do - mock_app { - get '/:foo/:bar/:baz' do |foo, bar| - 'quux' - end - } - - assert_raise(ArgumentError) { get '/a/b/c' } - end - - it 'raises an ArgumentError with block param arity > 1 and too few values' do - mock_app { - get '/:foo/:bar' do |foo, bar, baz| - 'quux' - end - } - - assert_raise(ArgumentError) { get '/a/b' } - end - - it 'succeeds if no block parameters are specified' do - mock_app { - get '/:foo/:bar' do - 'quux' - end - } - - get '/a/b' - assert ok? - assert_equal 'quux', body - end - - it 'passes all params with block param arity -1 (splat args)' do - mock_app { - get '/:foo/:bar' do |*args| - args.join - end - } - - get '/a/b' - assert ok? - assert_equal 'ab', body - end - - it 'allows custom route-conditions to be set via route options' do - protector = Module.new { - def protect(*args) - condition { - unless authorize(params["user"], params["password"]) - halt 403, "go away" - end - } - end - } - - mock_app { - register protector - - helpers do - def authorize(username, password) - username == "foo" && password == "bar" - end - end - - get "/", :protect => true do - "hey" - end - } - - get "/" - assert forbidden? - assert_equal "go away", body - - get "/", :user => "foo", :password => "bar" - assert ok? - assert_equal "hey", body - end - - # NOTE Block params behaves differently under 1.8 and 1.9. Under 1.8, block - # param arity is lax: declaring a mismatched number of block params results - # in a warning. Under 1.9, block param arity is strict: mismatched block - # arity raises an ArgumentError. - - if RUBY_VERSION >= '1.9' - - it 'raises an ArgumentError with block param arity 1 and no values' do - mock_app { - get '/foo' do |foo| - 'quux' - end - } - - assert_raise(ArgumentError) { get '/foo' } - end - - it 'raises an ArgumentError with block param arity 1 and too many values' do - mock_app { - get '/:foo/:bar/:baz' do |foo| - 'quux' - end - } - - assert_raise(ArgumentError) { get '/a/b/c' } - end - - else - - it 'does not raise an ArgumentError with block param arity 1 and no values' do - mock_app { - get '/foo' do |foo| - 'quux' - end - } - - silence_warnings { get '/foo' } - assert ok? - assert_equal 'quux', body - end - - it 'does not raise an ArgumentError with block param arity 1 and too many values' do - mock_app { - get '/:foo/:bar/:baz' do |foo| - 'quux' - end - } - - silence_warnings { get '/a/b/c' } - assert ok? - assert_equal 'quux', body - end - - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/sass_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/sass_test.rb deleted file mode 100644 index c8d6a731..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/sass_test.rb +++ /dev/null @@ -1,79 +0,0 @@ -require File.dirname(__FILE__) + '/helper' -require 'sass' - -class SassTest < Test::Unit::TestCase - def sass_app(&block) - mock_app { - set :views, File.dirname(__FILE__) + '/views' - get '/', &block - } - get '/' - end - - it 'renders inline Sass strings' do - sass_app { sass "#sass\n :background-color #FFF\n" } - assert ok? - assert_equal "#sass {\n background-color: #FFF; }\n", body - end - - it 'renders .sass files in views path' do - sass_app { sass :hello } - assert ok? - assert_equal "#sass {\n background-color: #FFF; }\n", body - end - - it 'ignores the layout option' do - sass_app { sass :hello, :layout => :layout2 } - assert ok? - assert_equal "#sass {\n background-color: #FFF; }\n", body - end - - it "raises error if template not found" do - mock_app { - get('/') { sass :no_such_template } - } - assert_raise(Errno::ENOENT) { get('/') } - end - - it "passes SASS options to the Sass engine" do - sass_app { - sass "#sass\n :background-color #FFF\n :color #000\n", :style => :compact - } - assert ok? - assert_equal "#sass { background-color: #FFF; color: #000; }\n", body - end - - it "passes default SASS options to the Sass engine" do - mock_app { - set :sass, {:style => :compact} # default Sass style is :nested - get '/' do - sass "#sass\n :background-color #FFF\n :color #000\n" - end - } - get '/' - assert ok? - assert_equal "#sass { background-color: #FFF; color: #000; }\n", body - end - - it "merges the default SASS options with the overrides and passes them to the Sass engine" do - mock_app { - set :sass, {:style => :compact, :attribute_syntax => :alternate } # default Sass attribute_syntax is :normal (with : in front) - get '/' do - sass "#sass\n background-color: #FFF\n color: #000\n" - end - get '/raised' do - sass "#sass\n :background-color #FFF\n :color #000\n", :style => :expanded # retains global attribute_syntax settings - end - get '/expanded_normal' do - sass "#sass\n :background-color #FFF\n :color #000\n", :style => :expanded, :attribute_syntax => :normal - end - } - get '/' - assert ok? - assert_equal "#sass { background-color: #FFF; color: #000; }\n", body - assert_raise(Sass::SyntaxError) { get('/raised') } - get '/expanded_normal' - assert ok? - assert_equal "#sass {\n background-color: #FFF;\n color: #000;\n}\n", body - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/server_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/server_test.rb deleted file mode 100644 index 76d4ef97..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/server_test.rb +++ /dev/null @@ -1,47 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -module Rack::Handler - class Mock - extend Test::Unit::Assertions - - def self.run(app, options={}) - assert(app < Sinatra::Base) - assert_equal 9001, options[:Port] - assert_equal 'foo.local', options[:Host] - yield new - end - - def stop - end - end - - register 'mock', 'Rack::Handler::Mock' -end - -class ServerTest < Test::Unit::TestCase - setup do - mock_app { - set :server, 'mock' - set :host, 'foo.local' - set :port, 9001 - } - $stdout = File.open('/dev/null', 'wb') - end - - def teardown - $stdout = STDOUT - end - - it "locates the appropriate Rack handler and calls ::run" do - @app.run! - end - - it "sets options on the app before running" do - @app.run! :sessions => true - assert @app.sessions? - end - - it "falls back on the next server handler when not found" do - @app.run! :server => %w[foo bar mock] - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/sinatra_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/sinatra_test.rb deleted file mode 100644 index 5c695b22..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/sinatra_test.rb +++ /dev/null @@ -1,13 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class SinatraTest < Test::Unit::TestCase - it 'creates a new Sinatra::Base subclass on new' do - app = - Sinatra.new do - get '/' do - 'Hello World' - end - end - assert_same Sinatra::Base, app.superclass - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/static_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/static_test.rb deleted file mode 100644 index 896d46c1..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/static_test.rb +++ /dev/null @@ -1,80 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class StaticTest < Test::Unit::TestCase - setup do - mock_app { - set :static, true - set :public, File.dirname(__FILE__) - } - end - - it 'serves GET requests for files in the public directory' do - get "/#{File.basename(__FILE__)}" - assert ok? - assert_equal File.read(__FILE__), body - assert_equal File.size(__FILE__).to_s, response['Content-Length'] - assert response.headers.include?('Last-Modified') - end - - it 'produces a body that can be iterated over multiple times' do - env = Rack::MockRequest.env_for("/#{File.basename(__FILE__)}") - status, headers, body = @app.call(env) - buf1, buf2 = [], [] - body.each { |part| buf1 << part } - body.each { |part| buf2 << part } - assert_equal buf1.join, buf2.join - assert_equal File.read(__FILE__), buf1.join - end - - it 'serves HEAD requests for files in the public directory' do - head "/#{File.basename(__FILE__)}" - assert ok? - assert_equal '', body - assert_equal File.size(__FILE__).to_s, response['Content-Length'] - assert response.headers.include?('Last-Modified') - end - - it 'serves files in preference to custom routes' do - @app.get("/#{File.basename(__FILE__)}") { 'Hello World' } - get "/#{File.basename(__FILE__)}" - assert ok? - assert body != 'Hello World' - end - - it 'does not serve directories' do - get "/" - assert not_found? - end - - it 'passes to the next handler when the static option is disabled' do - @app.set :static, false - get "/#{File.basename(__FILE__)}" - assert not_found? - end - - it 'passes to the next handler when the public option is nil' do - @app.set :public, nil - get "/#{File.basename(__FILE__)}" - assert not_found? - end - - it '404s when a file is not found' do - get "/foobarbaz.txt" - assert not_found? - end - - it 'serves files when .. path traverses within public directory' do - get "/data/../#{File.basename(__FILE__)}" - assert ok? - assert_equal File.read(__FILE__), body - end - - it '404s when .. path traverses outside of public directory' do - mock_app { - set :static, true - set :public, File.dirname(__FILE__) + '/data' - } - get "/../#{File.basename(__FILE__)}" - assert not_found? - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/templates_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/templates_test.rb deleted file mode 100644 index d2febc91..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/templates_test.rb +++ /dev/null @@ -1,122 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -class TemplatesTest < Test::Unit::TestCase - def render_app(&block) - mock_app { - def render_test(template, data, options, locals, &block) - inner = block ? block.call : '' - data + inner - end - set :views, File.dirname(__FILE__) + '/views' - get '/', &block - template(:layout3) { "Layout 3!\n" } - } - get '/' - end - - def with_default_layout - layout = File.dirname(__FILE__) + '/views/layout.test' - File.open(layout, 'wb') { |io| io.write "Layout!\n" } - yield - ensure - File.unlink(layout) rescue nil - end - - it 'renders String templates directly' do - render_app { render :test, 'Hello World' } - assert ok? - assert_equal 'Hello World', body - end - - it 'renders Proc templates using the call result' do - render_app { render :test, Proc.new {'Hello World'} } - assert ok? - assert_equal 'Hello World', body - end - - it 'looks up Symbol templates in views directory' do - render_app { render :test, :hello } - assert ok? - assert_equal "Hello World!\n", body - end - - it 'uses the default layout template if not explicitly overridden' do - with_default_layout do - render_app { render :test, :hello } - assert ok? - assert_equal "Layout!\nHello World!\n", body - end - end - - it 'uses the default layout template if not really overriden' do - with_default_layout do - render_app { render :test, :hello, :layout => true } - assert ok? - assert_equal "Layout!\nHello World!\n", body - end - end - - it 'uses the layout template specified' do - render_app { render :test, :hello, :layout => :layout2 } - assert ok? - assert_equal "Layout 2!\nHello World!\n", body - end - - it 'uses layout templates defined with the #template method' do - render_app { render :test, :hello, :layout => :layout3 } - assert ok? - assert_equal "Layout 3!\nHello World!\n", body - end - - it 'loads templates from source file with use_in_file_templates!' do - mock_app { - use_in_file_templates! - } - assert_equal "this is foo\n\n", @app.templates[:foo][:template] - assert_equal "X\n= yield\nX\n", @app.templates[:layout][:template] - end - - it 'loads templates from specified views directory' do - render_app { render :test, :hello, :views => options.views + '/foo' } - - assert_equal "from another views directory\n", body - end - - test 'use_in_file_templates simply ignores IO errors' do - assert_nothing_raised { - mock_app { - use_in_file_templates!('/foo/bar') - } - } - - assert @app.templates.empty? - end - - it 'passes locals to the layout' do - mock_app { - template :my_layout do - 'Hello <%= name %>!<%= yield %>' - end - - get '/' do - erb '

    content

    ', { :layout => :my_layout }, { :name => 'Mike'} - end - } - - get '/' - assert ok? - assert_equal 'Hello Mike!

    content

    ', body - end -end - -# __END__ : this is not the real end of the script. - -__END__ - -@@ foo -this is foo - -@@ layout -X -= yield -X diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/test_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/test_test.rb deleted file mode 100644 index 23527e40..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/test_test.rb +++ /dev/null @@ -1,152 +0,0 @@ -require File.dirname(__FILE__) + '/helper' - -require 'yaml' - -# silence deprecation warning when requiring sinatra/test -$VERBOSE, v = nil, $VERBOSE -require 'sinatra/test' -$VERBOSE = v - -class TestTest < Test::Unit::TestCase - include Sinatra::Test - - def request - YAML.load(body) - end - - def request_body - request['test.body'] - end - - def request_params - YAML.load(request['test.params']) - end - - setup do - mock_app { - %w[get head post put delete].each { |verb| - send(verb, '/') do - redirect '/redirected' if params[:redirect] - env.update('test.body' => request.body.read) - env.update('test.params' => params.to_yaml) - env.to_yaml - end - } - - get '/redirected' do - "you've been redirected" - end - } - end - - it 'allows GET/HEAD/POST/PUT/DELETE' do - get '/' - assert_equal('GET', request['REQUEST_METHOD']) - - post '/' - assert_equal('POST', request['REQUEST_METHOD']) - - put '/' - assert_equal('PUT', request['REQUEST_METHOD']) - - delete '/' - assert_equal('DELETE', request['REQUEST_METHOD']) - - head '/' - assert response.headers['Content-Length'].to_i > 0 - assert_equal('', body) - end - - it 'allows to specify a body' do - post '/', '42' - assert_equal '42', request_body - end - - it 'allows to specify params' do - get '/', :foo => 'bar' - assert_equal 'bar', request_params['foo'] - end - - it 'supports nested params' do - get '/', :foo => { :x => 'y', :chunky => 'bacon' } - assert_equal "y", request_params['foo']['x'] - assert_equal "bacon", request_params['foo']['chunky'] - end - - it 'provides easy access to response status and body' do - get '/' - assert_equal 200, status - assert body =~ /^---/ - end - - it 'delegates methods to @response' do - get '/' - assert ok? - end - - it 'follows redirect' do - get '/', :redirect => true - follow! - assert_equal "you've been redirected", body - end - - it 'provides sugar for common HTTP headers' do - get '/', :env => { :accept => 'text/plain' } - assert_equal 'text/plain', request['HTTP_ACCEPT'] - - get '/', :env => { :agent => 'TATFT' } - assert_equal 'TATFT', request['HTTP_USER_AGENT'] - - get '/', :env => { :host => '1.2.3.4' } - assert_equal '1.2.3.4', request['HTTP_HOST'] - - get '/', :env => { :session => {'foo' => 'bar'} } - assert_equal({'foo' => 'bar'}, request['rack.session']) - - get '/', :env => { :cookies => 'foo' } - assert_equal 'foo', request['HTTP_COOKIE'] - - get '/', :env => { :content_type => 'text/plain' } - assert_equal 'text/plain', request['CONTENT_TYPE'] - end - - it 'allow to test session easily' do - app = mock_app(Sinatra::Default) { - get '/' do - session['foo'] = 'bar' - 200 - end - - post '/' do - assert_equal 'bar', session['foo'] - session['foo'] || "blah" - end - } - - browser = Sinatra::TestHarness.new(app) - browser.get '/' - browser.post '/', {}, :session => { 'foo' => 'bar' } - assert_equal 'bar', browser.response.body - end - - it 'yields the request object to the block before invoking the application' do - called = false - get '/' do |req| - called = true - assert req.kind_of?(Rack::MockRequest) - end - assert called - end - - it 'sets the environment to :test on include' do - Sinatra::Default.set(:environment, :production) - Class.new { include Sinatra::Test } - assert_equal :test, Sinatra::Default.environment - end - - def test_TestHarness - session = Sinatra::TestHarness.new(@app) - response = session.get('/') - assert_equal 200, response.status - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/error.builder b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/error.builder deleted file mode 100644 index 9cf87d5e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/error.builder +++ /dev/null @@ -1,3 +0,0 @@ -xml.error do - raise "goodbye" -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/error.erb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/error.erb deleted file mode 100644 index b48d1f06..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/error.erb +++ /dev/null @@ -1,3 +0,0 @@ -Hello <%= 'World' %> -<% raise 'Goodbye' unless defined?(french) && french %> -<% raise 'Au revoir' if defined?(french) && french %> diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/error.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/error.haml deleted file mode 100644 index 6019007b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/error.haml +++ /dev/null @@ -1,3 +0,0 @@ -%h1 Hello From Haml -= raise 'goodbye' unless defined?(french) && french -= raise 'au revoir' if defined?(french) && french diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/error.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/error.sass deleted file mode 100644 index 42fc56b3..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/error.sass +++ /dev/null @@ -1,2 +0,0 @@ -#sass - +argle-bargle diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/foo/hello.test b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/foo/hello.test deleted file mode 100644 index 2aba6341..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/foo/hello.test +++ /dev/null @@ -1 +0,0 @@ -from another views directory diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.builder b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.builder deleted file mode 100644 index 16b86d03..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.builder +++ /dev/null @@ -1 +0,0 @@ -xml.exclaim "You're my boy, #{@name}!" diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.erb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.erb deleted file mode 100644 index bcbbc926..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.erb +++ /dev/null @@ -1 +0,0 @@ -Hello <%= 'World' %> diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.haml deleted file mode 100644 index d6852a60..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.haml +++ /dev/null @@ -1 +0,0 @@ -%h1 Hello From Haml diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.sass b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.sass deleted file mode 100644 index 5a4fd574..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.sass +++ /dev/null @@ -1,2 +0,0 @@ -#sass - :background-color #FFF diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.test b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.test deleted file mode 100644 index 980a0d5f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/hello.test +++ /dev/null @@ -1 +0,0 @@ -Hello World! diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/layout2.builder b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/layout2.builder deleted file mode 100644 index 9491f574..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/layout2.builder +++ /dev/null @@ -1,3 +0,0 @@ -xml.layout do - xml << yield -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/layout2.erb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/layout2.erb deleted file mode 100644 index e097f3b6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/layout2.erb +++ /dev/null @@ -1,2 +0,0 @@ -ERB Layout! -<%= yield %> diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/layout2.haml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/layout2.haml deleted file mode 100644 index 58bfc04d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/layout2.haml +++ /dev/null @@ -1,2 +0,0 @@ -%h1 HAML Layout! -%p= yield diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/layout2.test b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/layout2.test deleted file mode 100644 index fb432e3a..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-0.9.4/test/views/layout2.test +++ /dev/null @@ -1 +0,0 @@ -Layout 2! diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/.gitignore b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/.gitignore deleted file mode 100644 index 18977f8b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -doc -dist -tmp diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/LICENSE b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/LICENSE deleted file mode 100644 index 3eb6c2f4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -(The MIT License) - -Copyright (c) 2008-2009 Nicolas Sanguinetti, entp.com - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -'Software'), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/README.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/README.rdoc deleted file mode 100644 index 12022a7b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/README.rdoc +++ /dev/null @@ -1,41 +0,0 @@ -= ContentFor - -Small extension for the Sinatra[http://sinatrarb.com] web framework -that allows you to use the following helpers in your views: - - <% content_for :some_key do %> - ... - <% end %> - - <% yield_content :some_key %> - -This allows you to capture blocks inside views to be rendered later -in this request. For example, to populate different parts of your -layout from your view. - -== Usage - -If you're writing "classic" style apps, then requring -sinatra/content_for should be enough. If you're writing -"classy" apps, then you also need to call -helpers Sinatra::ContentFor in your app definition. - -== And how is this useful? - -For example, some of your views might need a few javascript tags and -stylesheets, but you don't want to force this files in all your pages. -Then you can put <% yield_content :scripts_and_styles %> on -your layout, inside the tag, and each view can call -content_for setting the appropriate set of tags that should -be added to the layout. - -== Warning - -This only works with ERB as a rendering mechanism. I haven't figured -how to make it work with Haml. If you find a way, contact me and I'll -include it. - -== Credits - -Code by foca[http://github.com/foca], inspired on the Ruby on Rails -helpers with the same name. diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/lib/sinatra/content_for.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/lib/sinatra/content_for.rb deleted file mode 100644 index 31848c63..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/lib/sinatra/content_for.rb +++ /dev/null @@ -1,58 +0,0 @@ -module Sinatra - module ContentFor - # Capture a block of content to be rendered later. For example: - # - # <% content_for :head do %> - # - # <% end %> - # - # You can call +content_for+ multiple times with the same key - # (in the example +:head+), and when you render the blocks for - # that key all of them will be rendered, in the same order you - # captured them. - # - # Your blocks can also receive values, which are passed to them - # by yield_content - def content_for(key, &block) - content_blocks[key.to_sym] << block - end - - # Render the captured blocks for a given key. For example: - # - # - # Example - # <% yield_content :head %> - # - # - # Would render everything you declared with content_for - # :head before closing the tag. - # - # You can also pass values to the content blocks by passing them - # as arguments after the key: - # - # <% yield_content :head, 1, 2 %> - # - # Would pass 1 and 2 to all the blocks registered - # for :head. - # - # *NOTICE* that you call this without an = sign. IE, - # in a <% %> block, and not in a <%= %> block. - def yield_content(key, *args) - content_blocks[key.to_sym].map do |content| - if respond_to?(:block_is_haml?) && block_is_haml?(content) - capture_haml(*args, &content) - else - content.call(*args) - end - end.join - end - - private - - def content_blocks - @content_blocks ||= Hash.new {|h,k| h[k] = [] } - end - end - - helpers ContentFor -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/sinatra-content-for.gemspec b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/sinatra-content-for.gemspec deleted file mode 100644 index 63242e6b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/sinatra-content-for.gemspec +++ /dev/null @@ -1,34 +0,0 @@ -Gem::Specification.new do |s| - s.name = "sinatra-content-for" - s.version = "0.2" - s.date = "2009-05-09" - - s.description = "Small Sinatra extension to add a content_for helper similar to Rails'" - s.summary = "Small Sinatra extension to add a content_for helper similar to Rails'" - s.homepage = "http://sinatrarb.com" - - s.authors = ["Nicolás Sanguinetti"] - s.email = "contacto@nicolassanguinetti.info" - - s.require_paths = ["lib"] - s.rubyforge_project = "sinatra-ditties" - s.has_rdoc = true - s.rubygems_version = "1.3.1" - - s.add_dependency "sinatra" - - if s.respond_to?(:add_development_dependency) - s.add_development_dependency "contest" - s.add_development_dependency "sr-mg" - s.add_development_dependency "redgreen" - end - - s.files = %w[ -.gitignore -LICENSE -README.rdoc -sinatra-content-for.gemspec -lib/sinatra/content_for.rb -test/content_for_test.rb -] -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/test/content_for_test.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/test/content_for_test.rb deleted file mode 100644 index c9560f22..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sinatra-content-for-0.2/test/content_for_test.rb +++ /dev/null @@ -1,156 +0,0 @@ -ENV['RACK_ENV'] = 'test' - -begin - require 'rack' -rescue LoadError - require 'rubygems' - require 'rack' -end - -require 'contest' -require 'sinatra/test' -require 'haml' - -begin - require 'redgreen' -rescue LoadError -end - -require File.dirname(__FILE__) + '/../lib/sinatra/content_for' - -Sinatra::Base.set :environment, :test - -module Sinatra - class Base - set :environment, :test - helpers ContentFor - end -end - -class Test::Unit::TestCase - include Sinatra::Test - - class << self - alias_method :it, :test - end - - def mock_app(base=Sinatra::Base, &block) - @app = Sinatra.new(base, &block) - end -end - -class ContentForTest < Test::Unit::TestCase - context 'using erb' do - def erb_app(view) - mock_app { - layout { '<% yield_content :foo %>' } - get('/') { erb view } - } - end - - it 'renders blocks declared with the same key you use when rendering' do - erb_app '<% content_for :foo do %>foo<% end %>' - - get '/' - assert ok? - assert_equal 'foo', body - end - - it 'does not render a block with a different key' do - erb_app '<% content_for :bar do %>bar<% end %>' - - get '/' - assert ok? - assert_equal '', body - end - - it 'renders multiple blocks with the same key' do - erb_app <<-erb_snippet - <% content_for :foo do %>foo<% end %> - <% content_for :foo do %>bar<% end %> - <% content_for :baz do %>WON'T RENDER ME<% end %> - <% content_for :foo do %>baz<% end %> - erb_snippet - - get '/' - assert ok? - assert_equal 'foobarbaz', body - end - - it 'passes values to the blocks' do - mock_app { - layout { '<% yield_content :foo, 1, 2 %>' } - get('/') { erb '<% content_for :foo do |a, b| %><%= a %> <%= b %><% end %>' } - } - - get '/' - assert ok? - assert_equal '1 2', body - end - end - - context 'with haml' do - def haml_app(view) - mock_app { - layout { '= yield_content :foo' } - get('/') { haml view } - } - end - - it 'renders blocks declared with the same key you use when rendering' do - haml_app <<-haml_end -- content_for :foo do - foo -haml_end - - get '/' - assert ok? - assert_equal "foo\n", body - end - - it 'does not render a block with a different key' do - haml_app <<-haml_end -- content_for :bar do - bar -haml_end - - get '/' - assert ok? - assert_equal "\n", body - end - - it 'renders multiple blocks with the same key' do - haml_app <<-haml_end -- content_for :foo do - foo -- content_for :foo do - bar -- content_for :baz do - WON'T RENDER ME -- content_for :foo do - baz -haml_end - - get '/' - assert ok? - assert_equal "foo\nbar\nbaz\n", body - end - - it 'passes values to the blocks' do - mock_app { - layout { '= yield_content :foo, 1, 2' } - get('/') { - haml <<-haml_end -- content_for :foo do |a, b| - %i= a - =b -haml_end - } - } - - get '/' - assert ok? - assert_equal "1\n2\n", body - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/.gitignore b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/.gitignore deleted file mode 100644 index 3a39d3fb..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -Manifest -pkg diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/README.markdown b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/README.markdown deleted file mode 100644 index ced40ba9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/README.markdown +++ /dev/null @@ -1,59 +0,0 @@ -*LOSSLESS* image size reduction for jpg, png and gif in the cloud - - - no image libraries needed, everything done in the interwebs - - less size (up 97% saving) = faster downloads = less bandwidth + happy users - -Install -======= - install ruby + rubygems - sudo gem install smusher - -Usage -===== -Optimize a single image or a whole folder: - - smusher /apps/x/public/images [options] - smusher /apps/x/public/images/x.png [options] - smusher /apps/x/public/images/*.png [options] - -Options: - -q, --quiet no output - -c, --convert-gifs convert gifs to PNGs - --service PunyPng use PunyPng for image optimizing, instead of SmushIt - -v, --version display current version - -Example -====== - smusher /apps/ts/public/images - smushing /apps/rs/public/images/social/facebook_icon.png - 2887 -> 132 = 4% - - smushing /apps/rs/public/images/social/myspace_icon.png - 3136 -> 282 = 8% - - smushing /apps/rs/public/images/dvd/dvd_1.png - 5045 -> 4 = 0% - reverted! - ... - -Protection -========== -Any image that returns a failure code, is larger than before, -or is empty will not be saved. - -TODO -==== - - only optimize 'new' images -> save time when doing on already optimized folder - -JS + CSS -============ -reduce images and minify css + js -> try [reduce](http://github.com/grosser/reduce). - -Authors -====== -###Contributors - - [retr0h](http://geminstallthat.wordpress.com/) - -[Michael Grosser](http://pragmatig.wordpress.com) -grosser.michael@gmail.com -Hereby placed under public domain, do what you want, just do not hold me accountable... \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/Rakefile deleted file mode 100644 index 51bdf855..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/Rakefile +++ /dev/null @@ -1,20 +0,0 @@ -task :default => :spec -require 'spec/rake/spectask' -Spec::Rake::SpecTask.new {|t| t.spec_opts = ['--color']} - -begin - require 'jeweler' - project_name = 'smusher' - Jeweler::Tasks.new do |gem| - gem.name = project_name - gem.summary = "Automatic Lossless Reduction Of All Your Images" - gem.email = "grosser.michael@gmail.com" - gem.homepage = "http://github.com/grosser/#{project_name}" - gem.authors = ["Michael Grosser"] - %w[rake json httpclient].each{|d| gem.add_dependency d} - end - - Jeweler::GemcutterTasks.new -rescue LoadError - puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com" -end \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/VERSION b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/VERSION deleted file mode 100644 index 2b7c5ae0..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/VERSION +++ /dev/null @@ -1 +0,0 @@ -0.4.2 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/bin/smusher b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/bin/smusher deleted file mode 100755 index 83a80f40..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/bin/smusher +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env ruby -require 'rubygems' -require 'optparse' -require 'smusher' - -options = {} -OptionParser.new do |opts| - opts.banner = < #{after}".ljust(40) + " = #{result}" - puts '' - end - end -end \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/lib/smusher/puny_png.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/lib/smusher/puny_png.rb deleted file mode 100644 index ac48b26c..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/lib/smusher/puny_png.rb +++ /dev/null @@ -1,17 +0,0 @@ -module Smusher - class PunyPng - def self.converts_gif_to_png? - false - end - - def self.optimized_image_data_for(file) - url = 'http://www.gracepointafterfive.com/punypng_staging/api/optimize' - response = HTTPClient.post url, { 'img' => File.new(file), 'key' => 'd1b72ab4813da6b69e1d6018303ac690c014599d'} - response = JSON.parse(response.body.content) - raise "puny_png: #{response['error']}" if response['error'] - image_url = response['optimized_url'] - raise "no optimized_url found" unless image_url - open(image_url) { |source| source.read() } - end - end -end \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/lib/smusher/smush_it.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/lib/smusher/smush_it.rb deleted file mode 100644 index d38db523..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/lib/smusher/smush_it.rb +++ /dev/null @@ -1,22 +0,0 @@ -module Smusher - class SmushIt - def self.converts_gif_to_png? - true - end - - def self.optimized_image_data_for(file) - #I leave these urls here, just in case it stops working again... - # url = "http://smush.it/ws.php" # original, redirects to somewhere else.. - # url = "http://developer.yahoo.com/yslow/smushit/ws.php" # official but does not work - # url = "http://smushit.com/ysmush.it/ws.php" # used at the new page but does not hande uploads - # url = "http://smushit.eperf.vip.ac4.yahoo.com/ysmush.it/ws.php" # used at the new page but does not hande uploads - url = 'http://ws1.adq.ac4.yahoo.com/ysmush.it/ws.php' - response = HTTPClient.post url, { 'files[]' => File.new(file)} - response = JSON.parse(response.body.content) - raise "smush.it: #{response['error']}" if response['error'] - image_url = response['dest'] - raise "no dest path found" unless image_url - open(image_url) { |source| source.read() } - end - end -end \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/smusher.gemspec b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/smusher.gemspec deleted file mode 100644 index f09c4494..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/smusher.gemspec +++ /dev/null @@ -1,78 +0,0 @@ -# Generated by jeweler -# DO NOT EDIT THIS FILE DIRECTLY -# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command -# -*- encoding: utf-8 -*- - -Gem::Specification.new do |s| - s.name = %q{smusher} - s.version = "0.4.2" - - s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version= - s.authors = ["Michael Grosser"] - s.date = %q{2009-11-22} - s.default_executable = %q{smusher} - s.email = %q{grosser.michael@gmail.com} - s.executables = ["smusher"] - s.extra_rdoc_files = [ - "README.markdown" - ] - s.files = [ - ".gitignore", - "README.markdown", - "Rakefile", - "VERSION", - "bin/smusher", - "lib/smusher.rb", - "lib/smusher/puny_png.rb", - "lib/smusher/smush_it.rb", - "smusher.gemspec", - "spec/empty/.gitignore", - "spec/images/ad.gif", - "spec/images/add.png", - "spec/images/drink_empty.png", - "spec/images/logo.gif", - "spec/images/people.jpg", - "spec/images/water.JPG", - "spec/images/woman.jpeg", - "spec/out/ad.gif", - "spec/out/people.jpg", - "spec/reduced/add.png", - "spec/reduced/add_puny.png", - "spec/reduced/fam.png", - "spec/smusher/puny_png_spec.rb", - "spec/smusher/smush_it_spec.rb", - "spec/smusher_spec.rb", - "spec/spec_helper.rb" - ] - s.homepage = %q{http://github.com/grosser/smusher} - s.rdoc_options = ["--charset=UTF-8"] - s.require_paths = ["lib"] - s.rubygems_version = %q{1.3.5} - s.summary = %q{Automatic Lossless Reduction Of All Your Images} - s.test_files = [ - "spec/spec_helper.rb", - "spec/smusher_spec.rb", - "spec/smusher/puny_png_spec.rb", - "spec/smusher/smush_it_spec.rb" - ] - - if s.respond_to? :specification_version then - current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION - s.specification_version = 3 - - if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then - s.add_runtime_dependency(%q, [">= 0"]) - s.add_runtime_dependency(%q, [">= 0"]) - s.add_runtime_dependency(%q, [">= 0"]) - else - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - end - else - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - s.add_dependency(%q, [">= 0"]) - end -end - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/empty/.gitignore b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/empty/.gitignore deleted file mode 100644 index e69de29b..00000000 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/ad.gif b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/ad.gif deleted file mode 100644 index 57b499733f149e68f5b20495eac12252c14c6fed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h)6)R7#Qm$ zB&f9J_V!($tK;oCIQ#o}?d>T0`)!t_;nc5ru)FHewutjcNcHtl$p8S!x>NI3P38aq zUUJmBrF!#PT9l#P?(ReFLPFR80Hd$vS8UWRNWPJu-?qQ(>C<7Js_4pNny+2sd`ao z&-3wbA^8LV00000EC2ui01yBR000J%z!hgm5*Uv(+Gfc)IVprF;qeFrJf2N+F-kom zzZm0UvDiGK=BS~IR4S7k*=Ep)NEEgt(hHze19UAGB0dy45+)22C@wcF1}zF9B0LL; z1uz{hI0!P52@V)93nm2x7aa(z5DEzi1{gadr!@mC85s}|uL&&}C2SuB3}XWzAP$kg RI|t4OGtmIk7}eE506T1-p$-55 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/add.png b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/add.png deleted file mode 100644 index 6332fefea4be19eeadf211b0b202b272e8564898..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 733 zcmV<30wVp1P)9VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/drink_empty.png b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/drink_empty.png deleted file mode 100644 index a40211ed412d95be06d475239a37c35fea158538..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 433 zcmV;i0Z#sjP)awcLgG1Ps>cqvbu;_Vq%$)JuarzB@HWl1!ZPF;C7L( zfnnMp{=@G#I2=L#pCCC))^Xy>1k(9bGie+eiDo<>3#hIg$F>C#B&%FfLPtmE4jr9a zG;-_{Q4m3n>C>c45seEj&?r%+MTanmAQ|J49v^ggr_Bq`JW!*DM#w+}NzbLsGCexH z(&UkQs(hlcVXn_1f*?uzfvMA@#REld=}z(wK;rh8c|(_Lw3$2sh-%+83%t?gYAR0w zBx>IpebHxQ^qXe@vKcLNP9XT_ljCh!!_LrUl~Y!8E6yeB4A{0s@_S@RP$z*(3_rfS z*ERu>_6-ID8Z@Z$!T^IKJgo@`D=KGHs4-;769x8Jz^zQ(5VWl+{_JvPk$HSoZ`Px@ bZR7F{-p6Gno?>^M00000NkvXXu0mjfT}81Z diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/logo.gif b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/logo.gif deleted file mode 100644 index 740ed0d55697b987803f6f4694bbc82227d5374b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 945 zcmZ?wbhEHbWMj}{XlG!!apT6#n>TOWx^?^Z?K^kw+`W7E-o1PG@85s$;K9R(4<9{x z^!V}PCr_R{efsp-vuDqrKY#J!#mkp3U%h(u`t|EKZ{ECn_wN1s_a8rg{QUXz*RNl{ zef##~$B$pXe*OOa`|sbs|NsAI7zLvtFo;7y@h1z=b^jT3KyC!(2?mZn273;f7Yi30 zd4Cl%g?hpG;^_@TCn2cVpnmE*i{QwUS94i>@n9XRI6!q1b@ceQ=zLH s*C!mV({-Q5*$nQojmS75LP0QF~{zyJUM diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/people.jpg b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/people.jpg deleted file mode 100644 index 5eb39f440af109508a1fddf7fc470a2323c33bd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2458 zcmbW#c{J4T9tZI6m|>V-hOvw-O9n%ONOnm?M)sPCEEOS3izZQwin0^3rHQOripWl~ zmF&#eLM3L&$d9p&ROagUyXW3>?qB!b_j8`lKhNhp=kq$x!0t7~Y zI9-73?ws79zXJR-ATIFkyii^~*dMzMwSoW_2n^kFxU%3X6)Lm6VoM zzpAONt8Zv*>geox`>y+aPcNA=IyOEr`C;nI+&q;=XM9~?vR2pDH#XT@-?x9eKmhn} z)^7b9_8%_9u8Ru-0Yjj_T_CRD-3>-Sxc6!D2px5Ro(~k3KX{i{#55(Zs+|v|<+vj1 zacu;KR5Hm$9AIs4 zvnLoK3UI z8f{USlVjP%rrdG!4n~s*r5;?8+l7_-`BtwYDvGeHIrn+P4I21bSXB6^UxV$N5p7Dw}~)EWy~jK75J znEP|3{-Kzxa*u~CAVZzV9hjH;Qfe+b{$$fq0Ttbo3}@tMEyZoz7G7Y@95)h6S*{c8 z!&Fv`bkj(`0$r0*ynN@*!kELno)1q=DpjXU?5S2~Toqplk-E7dn&5h?z};fgn|~;_ zCe7O+khpK})yKCx%FQbl>VqBH`9JpBpdh$(P!Ae7jSBWrd_5X}HPuW5D;_IS3JI_M zdaE*W{fTZnGCQjwnVDn7|F$#Mi};3sx^Iu2&xuB9mlsL7_G&Al?Ce);GVh+X9-nPG zIP@ra+L(u?%=NOn6s_%P&8l(yx_Y!Ezg_7|Rhpn_QrnJFRakI2wv-vuL?o48x}106 zrkBEAxQpuT%%XE!QJoGE?=W(h&F)NpMhQs1Wwl(N}n(WibBI)tt2 ziBkfBn=Wn*dx8ZE(BQ+3FWh8JN44{a(rFo1+4$t9$mcAvgMbFk(&#$VKk=JY&%*H2jFE@#nZnR-bj<5-`QqNN{*Rb@KI@OZY}%- zs!OD1v+Wx!X^H9cQV|uO&tuD&b(sc}V%BE{UG81#j8cu{vI~RjGcjBg2ekE+@piH1 z0~6pmW@g}u!t`{1LYeYVNkHx}?uXtxTkFazXl~y1!~XM0)yHF=ABw-$19thIde5V| zKbi)Wwh(*v`hu?-K#}nzh&IG1UyL!#J#5m}9kAy5CQ18b=~e}K^)vg9i*tUkgwtu% z+5lEB8PpJYsG2{fWj1sth@^tHQG&PRIrO6QzkZU8Vjs(9J1Uq53(uG=_F3SvJd;g+ zG!E)RHp+|-Buf6Ud$roz9*~s0>}ot?#;(?CR)}0Ld&dFnBi%+0J$7@ap_4`}`Vd&u ze)wFW42XJR8%7P&E%c+fx%(ZIk5vCg4^nGs@NEC-i?iw{_i83KrSmV*i;7+Cu6DSP zV&Zjx{Xb>0Bz~%lYkhR;^Ytf$u?+$Um>MBX&1B1u>4#$~>gP^Ja)2-5W9lbu>q6FV zJ~AF?J;%76rW>R$ClpS?2?$)wk!q}23o|QWR=N5pNjW9Mp8?1oBhQ!lYT6zO+39o6 zqefnd2k>O`jC3!^%ORm2h@Q7X0&wltd;*MKOGGj$$47!x!iP4ArZZU?Vl&gH>E7oj z*W8L<&q~X)Efaq#7KdaoH)70vKZ(W?-m9%r8Be*Y85A|om5)*Jb0?z72bRG1FD~`( z_!;^zre;J@dwmXT7>tD>15}xYidEg6fdQyVrRhQ2P>RD-pEL|~uRdc~a#7f9MOAQL zu1iCPHUIRb3aCC~%Vc3_!Fd6mni-7h$PcYUETx{POaav1ff#xc%iG?it^I|~g)JL$ z#rG8`zBF9b>gE6y`LD+u z2lZ6nCyCD`aLZm?I}R&=1+qhoTOK<1XkmRqL^CXlaS{$~@+N`XaJB=?ozYe z{lrBV15M&gJEgO55cc4=T$+2pfE?sz<@W9S$KJAbs@_-?4b9jb`?ld0Zeu$1jq+h3 zR%W)Xo2y)918U^ciqYZAii1L uIXV9vXnPf5@=g=SKNBWkaHM$F|B-svwSn)HVA+%3hfAHL{nw9hKKuhU1#2Dv diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/water.JPG b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/water.JPG deleted file mode 100644 index c824b19b9ef50ed6efd4c702d9050d4221823b66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4719 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 z z7=opy?L-6XX~Nw&yi{a%&e&HXm&Z1D&vG6lX6$@z)#N2^QUi=+DulK?gX0__&%Z-tqcbzo5FCx8gw>$<+I$%;q;LblofPs4t2~YG#YYtu>8pC-trIi7@-;MlWz9_o-)gtLtI=X8 za_Gt%$e7BSeSXxj<{521D%x5hqKq53k@|M_%Xno|$%L=eFh0>!dc z2zvZ4*JH58CKR{?%5ZL!sbnu5~z)QA=^3=D-o4}1zt6dM~tangy zUk=~+Xh$(xZ6W$zRI(l=z8$igX+z!j(+h!3VYn{l=S|JLP zn_QK~hdt-$pi}y@z@K{*_FrEY{^AHRH~oRaQwcScq08<%zfx6?4B_Ad(a!&KeTMP2 zyG*OTlTgQFqsmCOMfn# zPwGA$6nTZa%LR*AW#>+_mY&AK;)MdOWw)o5UcuS(z2Js}mp~^uQ7=U(oT#g9M3~hS zjJV0SS9ehg+3xqyqMh{R830ol8BfCvFM%dJ8OouD3=>t0*oD6i!zc3eG_YDzim-T$GDJgA)d1WGspWxErS=Wl0?O)y!zC99 zD_gQwPtD=zl6uM}>WNrG1C)SJy?H}7nypM&ws&KeW!Ny2tyY=5}X; zZt4C&CS{gHBwkTf_Y{4!XyD!#(>eC|jj5_aMwG=_XWNHu(`Rjts-HiGp1O%*{TTvQ z|8C2S$h`R`8maW~?k~=mfV_s&)5SqvzpgX2+eHjF$tj7dlvK`riGPI8UXIiV>Y#t` mE+VA!8dgeL_j*;Hz6fagNO=h~Cz;&a`ow^9G1`s2{Q5uJ;diV6 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/woman.jpeg b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/images/woman.jpeg deleted file mode 100644 index 4eb9e73044cea9918462dbb70df1d66dc434587f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2572 zcma)-c|2768^_O?EoRI#!;FljMiY@smZU2;8IxVv>Y9h}Bn`FqambdzCYjdoO3pZHYWhAnUSdx z073x3U3dVSZvh-N*v%&l009^P0Q$nxBA{sC&T>5qxIYqBKqx?fK@mta06r=u;T5?_&^Q0gHo?#Np~12zi6u5@h@yZJba928D@& zqTghNngC8-!$5pD$=XE%8=Y35NwFcr@bCSrCIey&;R@ng9RD(GU2!D!qgL`R5<(6T z0vE3LjS~E#gB8m7zmHC9E~t90KDo5X1H^TuP7aoWY`8f@Oh>q18?!6P5BYgoC#u?}EDlj4{Vu7Tn z@aorGu0h?*9#WVhaX1&{N)=G&#(EtT_i6|kMT8zeIHZ!ji{GY0%3HkVc6}$_;dIb) zdR&-)51x@tk&->`zE@=CNs217ysl1~*?ah!p67Dl-6!^BL7cVT@(7jto5qZ6{NB0a ztfWpYF{mI{KJ7@-9pdfBOIOkZ_;q6bu_+l$wo3+|IyARlCzCe)id`Z3!<8q!-InGr zOd(Punf&RjwGRnkteoL;$er;A2A`FE4PJJxjD{37>3@L~K2jlM!(fdzkyYKGRm-71 zrs+b~UI*>_oN9*-KUtppIGF2SKk{d&;d3>?mnqP#Da9-9Z=0T4l{xB?9@M@S{acgG zTqjl}`C2>~NGZ%=S?(UI(@IZ!*9Y}rWK8wdv+NutAMiGTuWLdO`j8m9)U7wjqvV#kaZVlb z&~U!avI1f+2}JyB?kR^IJ+S?9Lg1uq;y`|&hiN(DRH7`(UkNE)+@KQ0i>NfYw?JNw zX-Vs*5N>nHOYzF#SM4GUGmX~VW^M=gA}zfltA=e$xv)vrzUhG_?I@b5ye;w9?8fl% z4@+aips|S*k3hT4Pk-n??4VK|tGZvDHKX7K>D_ZV=aUP%aUPxTWptW%_3T95MzrkR zT}W+@N+~le|Hioi@0`_GIKF3=ofTaB<{wu>>Fg7oXuN#B=B>RCD}G!gDnBIRe>>rI z{EvWws_Vw*uqU5UUPbRQqQ%FC?TcV@bJTP_LbFv)zUO_i$%}Ikh?M_*XXM!t+~?HD z;bqHs~)+;BGG+DMyG8E3F-wLpw%|QQQOZV!yY{G?C7X zFz6%W`%d)kA5^@=39ZjTn*b=LtiFtOqJ)Qc(B$L<|p3$V^OKJt`pJCGA8tUPcqhhzP&DAcJ`d}!j7Hf z*(c|{bGvMgGzHHNMy!P?GC%d6G=>Ks&po7OcTJ{?0a-vt#=i(kwci9}yYlq-ddg)P zUpszFgzx&i@R!2H`aox~-#;rd{oS7=W;=%@OGwFB8lQ0>Ji1@#5qQ8%rBW5$J=s2y zph^2FYt5BjH0Rs<5-{k?o|q+zW^tDVJGZ$0`#r>BcR8hla#_^TE|#L%5j%kTfr9Ro zvnOeBe#8;Gzjp`rbjxE6(-M+>uL<4zSkCM{E9aj-hUY7S57So)N5P307!13Ng#n!+(;<1=yld z#CYfKxzf97@qq?qPV!F)hFWD5b`)KnNh!5z_VopVPe&Mxz<{e%L-X^QRu)>8F~8d< z{%CxBpe#SIjoAn}>T-mv-LRVJA7z*G`ie%$Gm4J2Y>$lhP#YE|Qb6sMyBvx@zd>bj z|298(dBodF+s{kW{8hfXJ0TsCynrdRk3dg1NAPOI2x`nn;(b?L8h{_Fn)0*VM7vMOnr}8qP7ncvrPkTMiza?rzmB!1BAwcDeqQab&j QR{gr~{;(H%`kTZ50k-unhyVZp diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/out/ad.gif b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/out/ad.gif deleted file mode 100644 index 57b499733f149e68f5b20495eac12252c14c6fed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmV-(0gV1fNk%w1VGsZd0M!5h)6)R7#Qm$ zB&f9J_V!($tK;oCIQ#o}?d>T0`)!t_;nc5ru)FHewutjcNcHtl$p8S!x>NI3P38aq zUUJmBrF!#PT9l#P?(ReFLPFR80Hd$vS8UWRNWPJu-?qQ(>C<7Js_4pNny+2sd`ao z&-3wbA^8LV00000EC2ui01yBR000J%z!hgm5*Uv(+Gfc)IVprF;qeFrJf2N+F-kom zzZm0UvDiGK=BS~IR4S7k*=Ep)NEEgt(hHze19UAGB0dy45+)22C@wcF1}zF9B0LL; z1uz{hI0!P52@V)93nm2x7aa(z5DEzi1{gadr!@mC85s}|uL&&}C2SuB3}XWzAP$kg RI|t4OGtmIk7}eE506T1-p$-55 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/out/people.jpg b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/out/people.jpg deleted file mode 100644 index 5eb39f440af109508a1fddf7fc470a2323c33bd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2458 zcmbW#c{J4T9tZI6m|>V-hOvw-O9n%ONOnm?M)sPCEEOS3izZQwin0^3rHQOripWl~ zmF&#eLM3L&$d9p&ROagUyXW3>?qB!b_j8`lKhNhp=kq$x!0t7~Y zI9-73?ws79zXJR-ATIFkyii^~*dMzMwSoW_2n^kFxU%3X6)Lm6VoM zzpAONt8Zv*>geox`>y+aPcNA=IyOEr`C;nI+&q;=XM9~?vR2pDH#XT@-?x9eKmhn} z)^7b9_8%_9u8Ru-0Yjj_T_CRD-3>-Sxc6!D2px5Ro(~k3KX{i{#55(Zs+|v|<+vj1 zacu;KR5Hm$9AIs4 zvnLoK3UI z8f{USlVjP%rrdG!4n~s*r5;?8+l7_-`BtwYDvGeHIrn+P4I21bSXB6^UxV$N5p7Dw}~)EWy~jK75J znEP|3{-Kzxa*u~CAVZzV9hjH;Qfe+b{$$fq0Ttbo3}@tMEyZoz7G7Y@95)h6S*{c8 z!&Fv`bkj(`0$r0*ynN@*!kELno)1q=DpjXU?5S2~Toqplk-E7dn&5h?z};fgn|~;_ zCe7O+khpK})yKCx%FQbl>VqBH`9JpBpdh$(P!Ae7jSBWrd_5X}HPuW5D;_IS3JI_M zdaE*W{fTZnGCQjwnVDn7|F$#Mi};3sx^Iu2&xuB9mlsL7_G&Al?Ce);GVh+X9-nPG zIP@ra+L(u?%=NOn6s_%P&8l(yx_Y!Ezg_7|Rhpn_QrnJFRakI2wv-vuL?o48x}106 zrkBEAxQpuT%%XE!QJoGE?=W(h&F)NpMhQs1Wwl(N}n(WibBI)tt2 ziBkfBn=Wn*dx8ZE(BQ+3FWh8JN44{a(rFo1+4$t9$mcAvgMbFk(&#$VKk=JY&%*H2jFE@#nZnR-bj<5-`QqNN{*Rb@KI@OZY}%- zs!OD1v+Wx!X^H9cQV|uO&tuD&b(sc}V%BE{UG81#j8cu{vI~RjGcjBg2ekE+@piH1 z0~6pmW@g}u!t`{1LYeYVNkHx}?uXtxTkFazXl~y1!~XM0)yHF=ABw-$19thIde5V| zKbi)Wwh(*v`hu?-K#}nzh&IG1UyL!#J#5m}9kAy5CQ18b=~e}K^)vg9i*tUkgwtu% z+5lEB8PpJYsG2{fWj1sth@^tHQG&PRIrO6QzkZU8Vjs(9J1Uq53(uG=_F3SvJd;g+ zG!E)RHp+|-Buf6Ud$roz9*~s0>}ot?#;(?CR)}0Ld&dFnBi%+0J$7@ap_4`}`Vd&u ze)wFW42XJR8%7P&E%c+fx%(ZIk5vCg4^nGs@NEC-i?iw{_i83KrSmV*i;7+Cu6DSP zV&Zjx{Xb>0Bz~%lYkhR;^Ytf$u?+$Um>MBX&1B1u>4#$~>gP^Ja)2-5W9lbu>q6FV zJ~AF?J;%76rW>R$ClpS?2?$)wk!q}23o|QWR=N5pNjW9Mp8?1oBhQ!lYT6zO+39o6 zqefnd2k>O`jC3!^%ORm2h@Q7X0&wltd;*MKOGGj$$47!x!iP4ArZZU?Vl&gH>E7oj z*W8L<&q~X)Efaq#7KdaoH)70vKZ(W?-m9%r8Be*Y85A|om5)*Jb0?z72bRG1FD~`( z_!;^zre;J@dwmXT7>tD>15}xYidEg6fdQyVrRhQ2P>RD-pEL|~uRdc~a#7f9MOAQL zu1iCPHUIRb3aCC~%Vc3_!Fd6mni-7h$PcYUETx{POaav1ff#xc%iG?it^I|~g)JL$ z#rG8`zBF9b>gE6y`LD+u z2lZ6nCyCD`aLZm?I}R&=1+qhoTOK<1XkmRqL^CXlaS{$~@+N`XaJB=?ozYe z{lrBV15M&gJEgO55cc4=T$+2pfE?sz<@W9S$KJAbs@_-?4b9jb`?ld0Zeu$1jq+h3 zR%W)Xo2y)918U^ciqYZAii1L uIXV9vXnPf5@=g=SKNBWkaHM$F|B-svwSn)HVA+%3hfAHL{nw9hKKuhU1#2Dv diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/reduced/add.png b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/reduced/add.png deleted file mode 100644 index d6d26db7c071da62daed91569d69ed280969707b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 680 zcmV;Z0$2TsP)r0bi7>E5^wl4*Pq=s22s3|2_C~w(pii%F#mUC;0&h~CDox05fEu9k&6}6$;Xrwzh z55ogy;?&Yb>g!OVjUotY!>_;I6-`IWh#vTTdEmO9=f1h`BmhbOlix0M({;=akA!S> ziKylYL0JBxI^6KQf|6RxNYQ99^F)DeT1vD}N(xAl0q)`4zcD-3=e`utjSZ??dFU?1+Ft(-FYv@mRG(DYIW@q7h%)*EqPGx?D}b1|`F!X3-4C>%^yo@T@iQu(6-qGaf5q|s3cCoM7h z+Ck1#K|WOp<7yimG%U1mz*ey$G)yEMWzIk@K^SsE`2(5gSs-D4ZGd^h0FAd1SzRen zICLCNxJ=jdnatdtbTYg1B9);@38%H64WDm4L!DEx$YkXy=3lq*U-KP7M#~=nDAU0J O00009VHk(~TedF+gQSL8D5xnVSSWAVY>J9b+m>@{iq7_KE}go~11+5s4;8hc+i0Xa zI1j@EX5!S+Me6HNqKzU5YQwL;-W5$p%ZMKMeR<%zp69-~?<4?8|C8S?bklXr4v&Ov zb&06v2|-x?qB`90yn>Qi%Sh2^G4n)$ZdyvTPf9}1)_buUT7>`e2G&2VU@~Bb(o+Mz zi4)>IxlSY${Dj4k={-9RzU^W5g9|2V5RZ2ZulL9s2xQbZ@r6eP9Ra5u(s|C0Nj#&4>wTSkb?%#=9?@ z^oxDy-O@tyN{L@by(WWvQ3%CyEu8x{+#Jb4-h&K9Owi)2pgg+heWDyked|3R$$kL@A z#sp1v-r+=G4B8D6DqsDH0@7OztA7aT9qc1Py{()w`m``?Y0&gi2=ROcc-9+nU^I6< zT=e_Y=vSnG@?3Ue{BW5ONFttcE!R-R_W4O01|0-|K-YNXLo2`4Qv z`r1LxR6#yf3FB%T95gJnaKKivA~Z}S9A(ZxEDK}O3T04USJ P00000NkvXXu0mjf^IS-S diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/reduced/fam.png b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/reduced/fam.png deleted file mode 100644 index 119a267d46ddbd8ad502794a514f1faae0c35253..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 381 zcmV-@0fPRCP)IMa3k)(p`+Z2i*N~d1tMZk%S_C&x`1&!x;VJvzM7 zouFoNYAW8dysnesy14VA>PVx^x;`W$%Lzio`nLGiAYTq>rywT-qDo+6< zYTp`t(Pv}yn`Z#B87*^8Ao%B#<84{P&d_C*Q&w{;&L!&%*tSLTdt^vZCxJ=~Kfb)z zHUW|L4F&@mG^q2!0D~hutqBM#DrZ!vF=WUS1@>9MtxVkzw5=)r>~dw1d3;rG)}y#> btrue - FileUtils.mkdir @out - copy 'people.jpg' - copy 'ad.gif' - - @file = File.join(@out,'people.jpg') - end - - describe :optimize_image do - it "stores the image in an reduced size" do - original_size = size - Smusher.optimize_image(@file) - size.should < original_size - end - - it "does not append newline" do - copy 'add.png' - file = File.join(@out, 'add.png') - Smusher.optimize_image file - # pure File.read() will omit trailing \n - File.readlines(file).last.split('').last.should_not == "\n" - end - - it "can be called with an array of files" do - original_size = size - Smusher.optimize_image([@file]) - size.should < original_size - end - - it "it does nothing if size stayed the same" do - original_size = size - Smusher::SmushIt.should_receive(:optimized_image_data_for).and_return File.read(@file) - Smusher.optimize_image(@file) - size.should == original_size - end - - it "does not save images whoes size got larger" do - original_size = size - Smusher::SmushIt.should_receive(:optimized_image_data_for).and_return File.read(@file)*2 - Smusher.optimize_image(@file) - size.should == original_size - end - - it "does not save images if their size is error-sugesting-small" do - original_size = size - Smusher::SmushIt.should_receive(:optimized_image_data_for).and_return 'oops...' - Smusher.optimize_image(@file) - size.should == original_size - end - - describe "gif handling" do - before do - copy 'logo.gif' - @file = File.join(@out,'logo.gif') - @file_png = File.join(@out,'logo.png') - end - - it "converts gifs to png even if they have the same size" do - pending - copy 'ad.gif' - file = File.join(@out,'ad.gif') - original_size = size - Smusher.optimize_image(file) - File.size(File.join(@out,'ad.png')).should == original_size - end - - it "stores converted .gifs in .png files" do - Smusher.optimize_image(@file) - File.exist?(@file).should == false - File.exist?(@file_png).should == true - end - - it "does not rename gifs, if optimizing failed" do - Smusher::SmushIt.should_receive(:optimized_image_data_for).and_return File.read(@file) - Smusher.optimize_image(@file) - File.exist?(@file).should == true - File.exist?(@file_png).should == false - end - end - - describe 'options' do - it "does not produce output when :quiet is given" do - $stdout.should_receive(:write).never - Smusher.optimize_image(@file,:quiet=>true) - end - - it "raises when an unknown option was given" do - lambda{Smusher.optimize_image(@file,:q=>true)}.should raise_error - end - end - end - - describe :optimize_images_in_folder do - before do - FileUtils.rm @file - @files = [] - %w[add.png drink_empty.png].each do |image_name| - copy image_name - @files << File.join(@out,image_name) - end - @before = @files.map {|f|File.size(f)} - end - - it "optimizes all images" do - Smusher.optimize_images_in_folder(@out) - new_sizes = @files.map {|f|File.size(f)} - new_sizes.size.times {|i| new_sizes[i].should < @before[i]} - end - - it "does not convert gifs" do - copy 'logo.gif' - Smusher.optimize_images_in_folder(@out) - File.exist?(File.join(@out,'logo.png')).should == false - end - - it "converts gifs to png when option was given" do - copy 'logo.gif' - Smusher.optimize_images_in_folder(@out,:convert_gifs=>true) - File.exist?(File.join(@out,'logo.png')).should == true - end - end - - describe :sanitize_folder do - it "cleans a folders trailing slash" do - Smusher.send(:sanitize_folder,"xx/").should == 'xx' - end - - it "does not clean if there is no trailing slash" do - Smusher.send(:sanitize_folder,"/x/ccx").should == '/x/ccx' - end - end - - describe :images_in_folder do - it "finds all non-gif images" do - folder = File.join(ROOT,'images') - all = %w[add.png drink_empty.png people.jpg water.JPG woman.jpeg].map{|name|"#{folder}/#{name}"} - result = Smusher.send(:images_in_folder,folder) - (all+result).uniq.size.should == all.size - end - - it "finds nothing if folder is empty" do - Smusher.send(:images_in_folder,File.join(ROOT,'empty')).should == [] - end - end - - describe :size do - it "find the size of a file" do - Smusher.send(:size,@file).should == File.size(@file) - end - - it "and_return 0 for missing file" do - Smusher.send(:size,File.join(ROOT,'xxxx','dssdfsddfs')).should == 0 - end - end - - describe :logging do - it "yields" do - val = 0 - Smusher.send(:with_logging,@file,false) {val = 1} - val.should == 1 - end - end - - it "has a VERSION" do - Smusher::VERSION.should =~ /^\d+\.\d+\.\d+$/ - end -end \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/spec_helper.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/spec_helper.rb deleted file mode 100644 index 223b7e77..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/smusher-0.4.2/spec/spec_helper.rb +++ /dev/null @@ -1,8 +0,0 @@ -# ---- requirements -require 'rubygems' -require 'spec' - -$LOAD_PATH << 'lib' -require 'smusher' - -ROOT = File.expand_path(File.dirname(__FILE__)) \ No newline at end of file diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/Rakefile b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/Rakefile deleted file mode 100644 index 414d7b90..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/Rakefile +++ /dev/null @@ -1,19 +0,0 @@ -require "rubygems" -require "rake/testtask" -require "rake/gempackagetask" - -task :default => :test - -Rake::TestTask.new do |t| - t.libs << "test" - t.test_files = FileList["test/test_*.rb"] - t.verbose = true -end - -Rake::GemPackageTask.new(eval(IO.read(File.join(File.dirname(__FILE__), "sprockets.gemspec")))) do |pkg| - require File.join(File.dirname(__FILE__), "lib", "sprockets", "version") - raise "Error: Sprockets::Version doesn't match gemspec" if Sprockets::Version::STRING != pkg.version.to_s - - pkg.need_zip = true - pkg.need_tar = true -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/bin/sprocketize b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/bin/sprocketize deleted file mode 100755 index c65e4a13..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/bin/sprocketize +++ /dev/null @@ -1,54 +0,0 @@ -#!/usr/bin/env ruby - -require File.join(File.dirname(__FILE__), *%w".. lib sprockets") -require "optparse" - -load_path = (ENV["SPROCKETS_PATH"] || "").split(":") -filenames = [] -options = { :load_path => load_path, :source_files => filenames, :expand_paths => false } - -OptionParser.new do |opts| - opts.summary_width = 28 - opts.banner = "Usage: sprocketize [options] filename [filename ...]" - - def opts.show_usage - puts self - exit - end - - opts.on("-C DIRECTORY", "--directory=DIRECTORY", "Change to DIRECTORY before doing anything") do |directory| - Dir.chdir(directory) - end - - opts.on("-I DIRECTORY", "--include-dir=DIRECTORY", "Adds the directory to the Sprockets load path") do |directory| - load_path << directory - end - - opts.on("-a DIRECTORY", "--asset-root=DIRECTORY", "Copy provided assets into DIRECTORY") do |directory| - options[:asset_root] = directory - end - - opts.on_tail("-h", "--help", "Shows this help message") do - opts.show_usage - end - - opts.on_tail("-v", "--version", "Shows version") do - puts Sprockets::Version::STRING - exit - end - - opts.show_usage if ARGV.empty? - - begin - opts.order(ARGV) do |filename| - filenames << filename - end - rescue OptionParser::ParseError => e - opts.warn e.message - opts.show_usage - end -end - -secretary = Sprockets::Secretary.new(options) -secretary.install_assets if options[:asset_root] -print secretary.concatenation diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/ext/nph-sprockets.cgi b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/ext/nph-sprockets.cgi deleted file mode 100755 index f1e85fef..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/ext/nph-sprockets.cgi +++ /dev/null @@ -1,127 +0,0 @@ -#!/usr/bin/env ruby - -# This is a simple CGI wrapper around Sprockets. -# -# Copy it into a directory on your site with CGI enabled. When invoked, the -# script will search its directory and parent directories for a YAML file named -# "config/sprockets.yml" in order to load configuration information. -# -# If you set the environment variable "sprockets_generate_output_file" to -# "true" the concatenation will be cached to disk. Use it in conjunction with -# URL rewriting to cache your Sprockets output on the first request. -# -# Assuming a site layout like this: -# -# mysite/ -# config/ -# sprockets.yml -# javascripts/ -# mysite.js -# ... -# public/ -# index.html -# nph-sprockets.cgi (this file) -# vendor/ -# sprockets/ -# prototype/ -> ... -# scriptaculous/ -> ... -# -# mysite/config/sprockets.yml might look like this: -# -# :load_path: -# - javascripts -# - vendor/sprockets/*/src -# :source_files: -# - javascripts/mysite.js -# - javascripts/*.js -# :output_file: public/sprockets.js -# -# The -# -# And you might have the following Apache configuration: -# -# -# ServerName mysite.example.org -# DocumentRoot "/path/to/mysite/public" -# -# -# Options +ExecCGI +FollowSymLinks -# AddHandler cgi-script .cgi -# -# RewriteEngine on -# RewriteCond /sprockets.js !-f -# RewriteRule ^sprockets\.js /nph-sprockets.cgi [P,L] -# -# -# -# All requests to /sprockets.js will transparently proxy /nph-sprockets.cgi if -# mysite/public/sprockets.js does not exist. In production, you can add -# -# SetEnv sprockets_generate_output_file true -# -# to your Apache configuration and mysites/public/sprockets.js will be cached -# on the first request to /sprockets.js. - -require "yaml" -require "fileutils" - -def respond_with(options = {}) - options = { :code => 200, :content => "", :type => "text/plain" }.merge(options) - print "HTTP/1.0 #{options[:code]}\r\n" - print "Content-Type: #{options[:type]}\r\n" - print "Content-Length: #{options[:content].length}\r\n" - print "\r\n#{options[:content]}" - $stdout.flush - exit! -end - -def search_upwards_for(filename) - pwd = original_pwd = Dir.pwd - loop do - return File.expand_path(filename) if File.file?(filename) - Dir.chdir("..") - respond_with(:code => 500, :content => "couldn't find config/sprockets.yml") if Dir.pwd == pwd - pwd = Dir.pwd - end -ensure - Dir.chdir(original_pwd) -end - -def generate_output_file? - (ENV["REDIRECT_sprockets_generate_output_file"] || ENV["sprockets_generate_output_file"]) =~ /true/i -end - -configuration_file = search_upwards_for("config/sprockets.yml") -sprockets_root = File.dirname(File.dirname(configuration_file)) -configuration = YAML.load(IO.read(configuration_file)) - -begin - if File.directory?(sprockets_dir = File.join(sprockets_root, "vendor/gems/sprockets/lib")) - $:.unshift sprockets_dir - elsif File.directory?(sprockets_dir = File.join(sprockets_root, "vendor/sprockets/lib")) - $:.unshift sprockets_dir - else - require "rubygems" - end - - require "sprockets" - -rescue Exception => e - respond_with(:code => 500, :content => "couldn't find sprockets: #{e}") -end - -begin - secretary = Sprockets::Secretary.new( - :root => sprockets_root, - :load_path => configuration[:load_path], - :source_files => configuration[:source_files] - ) - - secretary.concatenation.save_to(File.join(sprockets_root, configuration[:output_file])) if generate_output_file? - respond_with(:content => secretary.concatenation.to_s, :type => "text/javascript") - -rescue Exception => e - respond_with(:code => 500, :content => "couldn't generate concatenated javascript: #{e}") -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets.rb deleted file mode 100644 index 6271f035..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets.rb +++ /dev/null @@ -1,42 +0,0 @@ -$:.unshift File.dirname(__FILE__) - -require "yaml" -require "fileutils" - -module Sprockets - class << self - def running_on_windows? - RUBY_PLATFORM =~ /(win|w)32$/ - end - - def absolute?(location) - same_when_expanded?(location) || platform_absolute_path?(location) - end - - protected - def same_when_expanded?(location) - location[0, 1] == File.expand_path(location)[0, 1] - end - - def platform_absolute_path?(location) - false - end - - if Sprockets.running_on_windows? - def platform_absolute_path?(location) - location[0, 1] == File::SEPARATOR && File.expand_path(location) =~ /[A-Za-z]:[\/\\]/ - end - end - end -end - -require "sprockets/version" -require "sprockets/error" -require "sprockets/environment" -require "sprockets/pathname" -require "sprockets/source_line" -require "sprockets/source_file" -require "sprockets/concatenation" -require "sprockets/preprocessor" -require "sprockets/secretary" - diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/concatenation.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/concatenation.rb deleted file mode 100644 index 3ea7abc6..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/concatenation.rb +++ /dev/null @@ -1,36 +0,0 @@ -module Sprockets - class Concatenation - attr_reader :source_lines - - def initialize - @source_lines = [] - @source_file_mtimes = {} - end - - def record(source_line) - source_lines << source_line - record_mtime_for(source_line.source_file) - source_line - end - - def to_s - source_lines.join - end - - def mtime - @source_file_mtimes.values.max - end - - def save_to(filename) - timestamp = mtime - File.open(filename, "w") { |file| file.write(to_s) } - File.utime(timestamp, timestamp, filename) - true - end - - protected - def record_mtime_for(source_file) - @source_file_mtimes[source_file] ||= source_file.mtime - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/environment.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/environment.rb deleted file mode 100644 index 29f7daec..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/environment.rb +++ /dev/null @@ -1,52 +0,0 @@ -module Sprockets - class Environment - attr_reader :root, :load_path - - def initialize(root, load_path = []) - @load_path = [@root = Pathname.new(self, root)] - - load_path.reverse_each do |location| - register_load_location(location) - end - end - - def pathname_from(location) - Pathname.new(self, absolute_location_from(location)) - end - - def register_load_location(location) - pathname = pathname_from(location) - load_path.delete(pathname) - load_path.unshift(pathname) - location - end - - def find(location) - if Sprockets.absolute?(location) && File.exists?(location) - pathname_from(location) - else - find_all(location).first - end - end - - def constants(reload = false) - @constants = nil if reload - @constants ||= find_all("constants.yml").inject({}) do |constants, pathname| - contents = YAML.load(pathname.contents) rescue nil - contents = {} unless contents.is_a?(Hash) - constants.merge(contents) - end - end - - protected - def absolute_location_from(location) - location = location.to_s - location = File.join(root.absolute_location, location) unless Sprockets.absolute?(location) - File.expand_path(location) - end - - def find_all(location) - load_path.map { |pathname| pathname.find(location) }.compact - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/error.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/error.rb deleted file mode 100644 index 31a3b673..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/error.rb +++ /dev/null @@ -1,5 +0,0 @@ -module Sprockets - class Error < ::StandardError; end - class LoadError < Error; end - class UndefinedConstantError < Error; end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/pathname.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/pathname.rb deleted file mode 100644 index 8d3b0860..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/pathname.rb +++ /dev/null @@ -1,37 +0,0 @@ -module Sprockets - class Pathname - attr_reader :environment, :absolute_location - - def initialize(environment, absolute_location) - @environment = environment - @absolute_location = File.expand_path(absolute_location) - end - - # Returns a Pathname for the location relative to this pathname's absolute location. - def find(location, kind = :file) - location = File.join(absolute_location, location) - File.send("#{kind}?", location) ? Pathname.new(environment, location) : nil - end - - def parent_pathname - Pathname.new(environment, File.dirname(absolute_location)) - end - - def source_file - SourceFile.new(environment, self) - end - - def contents - IO.read(absolute_location) - end - - def ==(pathname) - environment == pathname.environment && - absolute_location == pathname.absolute_location - end - - def to_s - absolute_location - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/preprocessor.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/preprocessor.rb deleted file mode 100644 index ed9a636d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/preprocessor.rb +++ /dev/null @@ -1,91 +0,0 @@ -module Sprockets - class Preprocessor - attr_reader :environment, :concatenation, :source_files, :asset_paths - - def initialize(environment, options = {}) - @environment = environment - @concatenation = Concatenation.new - @source_files = [] - @asset_paths = [] - @options = options - end - - def require(source_file) - return if source_files.include?(source_file) - source_files << source_file - - source_file.each_source_line do |source_line| - if source_line.require? - require_from_source_line(source_line) - elsif source_line.provide? - provide_from_source_line(source_line) - else - record_source_line(source_line) - end - end - end - - def provide(asset_path) - return if !asset_path || asset_paths.include?(asset_path) - asset_paths << asset_path - end - - protected - attr_reader :options - - def require_from_source_line(source_line) - require pathname_from(source_line).source_file - end - - def provide_from_source_line(source_line) - provide asset_path_from(source_line) - end - - def record_source_line(source_line) - unless source_line.comment? && strip_comments? - concatenation.record(source_line) - end - end - - def strip_comments? - options[:strip_comments] != false - end - - def pathname_from(source_line) - pathname = send(pathname_finder_from(source_line), source_line) - raise_load_error_for(source_line) unless pathname - pathname - end - - def pathname_for_require_from(source_line) - environment.find(location_from(source_line)) - end - - def pathname_for_relative_require_from(source_line) - source_line.source_file.find(location_from(source_line)) - end - - def pathname_finder_from(source_line) - "pathname_for_#{kind_of_require_from(source_line)}_from" - end - - def kind_of_require_from(source_line) - source_line.require[/^(.)/, 1] == '"' ? :relative_require : :require - end - - def location_from(source_line) - location = source_line.require[/^.(.*).$/, 1] - File.join(File.dirname(location), File.basename(location, ".js") + ".js") - end - - def asset_path_from(source_line) - source_line.source_file.find(source_line.provide, :directory) - end - - def raise_load_error_for(source_line) - kind = kind_of_require_from(source_line).to_s.tr("_", " ") - file = File.split(location_from(source_line)).last - raise LoadError, "can't find file for #{kind} `#{file}' (#{source_line.inspect})" - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/secretary.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/secretary.rb deleted file mode 100644 index ded5acca..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/secretary.rb +++ /dev/null @@ -1,106 +0,0 @@ -module Sprockets - class Secretary - DEFAULT_OPTIONS = { - :root => ".", - :load_path => [], - :source_files => [], - :expand_paths => true - } - - attr_reader :environment, :preprocessor - - def initialize(options = {}) - reset!(options) - end - - def reset!(options = @options) - @options = DEFAULT_OPTIONS.merge(options) - @environment = Sprockets::Environment.new(@options[:root]) - @preprocessor = Sprockets::Preprocessor.new(@environment) - - add_load_locations(@options[:load_path]) - add_source_files(@options[:source_files]) - end - - def add_load_location(load_location, options = {}) - add_load_locations([load_location], options) - end - - def add_load_locations(load_locations, options = {}) - expand_paths(load_locations, options).each do |load_location| - environment.register_load_location(load_location) - end - end - - def add_source_file(source_file, options = {}) - add_source_files([source_file], options) - end - - def add_source_files(source_files, options = {}) - expand_paths(source_files, options).each do |source_file| - if pathname = environment.find(source_file) - preprocessor.require(pathname.source_file) - else - raise Sprockets::LoadError, "no such file `#{source_file}'" - end - end - end - - def concatenation - preprocessor.concatenation - end - - def install_assets - if @options[:asset_root] - preprocessor.asset_paths.each do |asset_path| - copy_assets_from(asset_path.absolute_location) - end - end - end - - def source_last_modified - preprocessor.source_files.map { |s| s.mtime }.max - end - - protected - def expand_paths(paths, options = {}) - if options.has_key?(:expand_paths) ? options[:expand_paths] : @options[:expand_paths] - paths.map { |path| Dir[from_root(path)].sort }.flatten.compact - else - paths.map { |path| from_root(path) } - end - end - - def from_root(path) - if Sprockets.absolute?(path) - path - else - File.join(@options[:root], path) - end - end - - def copy_assets_from(asset_path) - relative_file_paths_beneath(asset_path).each do |filename| - source, destination = File.join(asset_path, filename), File.join(asset_root, File.dirname(filename)) - if !File.directory?(source) - FileUtils.mkdir_p(destination) - FileUtils.cp(source, destination) - end - end - end - - def relative_file_paths_beneath(path) - Dir[File.join(path, "**", "*")].map do |filename| - File.join(*path_pieces(filename)[path_pieces(path).length..-1]) - end - end - - def asset_root - from_root(@options[:asset_root]) - end - - def path_pieces(path) - path.split(File::SEPARATOR) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/source_file.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/source_file.rb deleted file mode 100644 index 8dfa5253..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/source_file.rb +++ /dev/null @@ -1,54 +0,0 @@ -module Sprockets - class SourceFile - attr_reader :environment, :pathname - - def initialize(environment, pathname) - @environment = environment - @pathname = pathname - end - - def source_lines - @lines ||= begin - lines = [] - - comments = [] - File.open(pathname.absolute_location) do |file| - file.each do |line| - lines << line = SourceLine.new(self, line, file.lineno) - - if line.begins_pdoc_comment? || comments.any? - comments << line - end - - if line.ends_multiline_comment? - if line.ends_pdoc_comment? - comments.each { |l| l.comment! } - end - comments.clear - end - end - end - - lines - end - end - - def each_source_line(&block) - source_lines.each(&block) - end - - def find(location, kind = :file) - pathname.parent_pathname.find(location, kind) - end - - def ==(source_file) - pathname == source_file.pathname - end - - def mtime - File.mtime(pathname.absolute_location) - rescue Errno::ENOENT - Time.now - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/source_line.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/source_line.rb deleted file mode 100644 index 76c8ee69..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/source_line.rb +++ /dev/null @@ -1,82 +0,0 @@ -module Sprockets - class SourceLine - attr_reader :source_file, :line, :number - - def initialize(source_file, line, number) - @source_file = source_file - @line = line - @number = number - end - - def comment - @comment ||= line[/^\s*\/\/(.*)/, 1] - end - - def comment? - !!comment - end - - def comment! - @comment = line - end - - def begins_multiline_comment? - line =~ /^\s*\/\*(.*)/ - end - - def begins_pdoc_comment? - line =~ /^\s*\/\*\*(.*)/ - end - - def ends_multiline_comment? - line =~ /^(.*)\*\/\s*/ - end - - def ends_pdoc_comment? - line =~ /^(.*)\*\*\/\s*/ - end - - def require - @require ||= (comment || "")[/^=\s+require\s+(\"(.*?)\"|<(.*?)>)\s*$/, 1] - end - - def require? - !!require - end - - def provide - @provide ||= (comment || "")[/^=\s+provide\s+\"(.*?)\"\s*$/, 1] - end - - def provide? - !!provide - end - - def inspect - "line #@number of #{@source_file.pathname}" - end - - def to_s(constants = source_file.environment.constants) - result = line.chomp - interpolate_constants!(result, constants) - strip_trailing_whitespace!(result) - result + $/ - end - - protected - def interpolate_constants!(result, constants) - result.gsub!(/<%=(.*?)%>/) do - constant = $1.strip - if value = constants[constant] - value - else - raise UndefinedConstantError, "couldn't find constant `#{constant}' in #{inspect}" - end - end - end - - def strip_trailing_whitespace!(result) - result.gsub!(/\s+$/, "") - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/version.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/version.rb deleted file mode 100644 index f9303add..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/lib/sprockets/version.rb +++ /dev/null @@ -1,9 +0,0 @@ -module Sprockets - module Version - MAJOR = 1 - MINOR = 0 - TINY = 2 - - STRING = [MAJOR, MINOR, TINY].join(".") - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/one.png b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/one.png deleted file mode 100644 index 5626abf0..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/one.png +++ /dev/null @@ -1 +0,0 @@ -one diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/two.png b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/two.png deleted file mode 100644 index f719efd4..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/assets/images/script_with_assets/two.png +++ /dev/null @@ -1 +0,0 @@ -two diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/assets/stylesheets/script_with_assets.css b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/assets/stylesheets/script_with_assets.css deleted file mode 100644 index da84fa5f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/assets/stylesheets/script_with_assets.css +++ /dev/null @@ -1 +0,0 @@ -/* nothing */ diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/constants.yml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/constants.yml deleted file mode 100644 index 9ea45ed8..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/constants.yml +++ /dev/null @@ -1 +0,0 @@ -VERSION: 1.0 diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_ignored_when_strip_comments_is_false.js b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_ignored_when_strip_comments_is_false.js deleted file mode 100644 index 43fc8474..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_ignored_when_strip_comments_is_false.js +++ /dev/null @@ -1,8 +0,0 @@ -// This is a double-slash comment that should appear in the resulting output file. -/* This is a slash-star comment that should appear in the resulting output file. */ -/* This is multiline slash-star comment -* that should appear in the resulting -* output file */ -/** - This is not a PDoc comment that should appear in the resulting output file. -*/ diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_removed_by_default.js b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_removed_by_default.js deleted file mode 100644 index d87c260d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/double_slash_comments_that_are_not_requires_should_be_removed_by_default.js +++ /dev/null @@ -1,2 +0,0 @@ -// This is a double-slash comment that should not appear in the resulting output file. -/* This is a slash-star comment that should not appear in the resulting output file. */ diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/multiline_comments_should_be_removed_by_default.js b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/multiline_comments_should_be_removed_by_default.js deleted file mode 100644 index 8b169adb..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/multiline_comments_should_be_removed_by_default.js +++ /dev/null @@ -1,4 +0,0 @@ -/** - * This is a PDoc comment - * that should appear in the resulting output file. -**/ diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_after_it_has_already_been_required_should_do_nothing.js b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_after_it_has_already_been_required_should_do_nothing.js deleted file mode 100644 index 497a4c1b..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_after_it_has_already_been_required_should_do_nothing.js +++ /dev/null @@ -1,5 +0,0 @@ -var before_first_require; -//= require -var after_first_require_and_before_second_require; -//= require -var after_second_require; diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_that_does_not_exist_should_raise_an_error.js b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_that_does_not_exist_should_raise_an_error.js deleted file mode 100644 index cd8230d2..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/requiring_a_file_that_does_not_exist_should_raise_an_error.js +++ /dev/null @@ -1 +0,0 @@ -//= require diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/requiring_a_single_file_should_replace_the_require_comment_with_the_file_contents.js b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/requiring_a_single_file_should_replace_the_require_comment_with_the_file_contents.js deleted file mode 100644 index 86d8a974..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/requiring_a_single_file_should_replace_the_require_comment_with_the_file_contents.js +++ /dev/null @@ -1,3 +0,0 @@ -var before_require; -//= require -var after_require; diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/requiring_the_current_file_should_do_nothing.js b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/requiring_the_current_file_should_do_nothing.js deleted file mode 100644 index d9305bd5..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/requiring_the_current_file_should_do_nothing.js +++ /dev/null @@ -1 +0,0 @@ -//= require "requiring_the_current_file_should_do_nothing" diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/constants.yml b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/constants.yml deleted file mode 100644 index baf4edb9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/constants.yml +++ /dev/null @@ -1,3 +0,0 @@ -ONE: one -TWO: two -HELLO: Hello world! diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/foo.js b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/foo.js deleted file mode 100644 index b8514fef..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/foo.js +++ /dev/null @@ -1 +0,0 @@ -var Foo = { }; diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/foo/bar.js b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/foo/bar.js deleted file mode 100644 index dd4d767d..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/foo/bar.js +++ /dev/null @@ -1,4 +0,0 @@ -//= require "bar" -var FooBar = { }; - -/* Hello! */ diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/foo/foo.js b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/foo/foo.js deleted file mode 100644 index 290e951e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/foo/foo.js +++ /dev/null @@ -1 +0,0 @@ -var FooFoo = { }; diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/script_with_assets.js b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/script_with_assets.js deleted file mode 100644 index 91aa4298..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/fixtures/src/script_with_assets.js +++ /dev/null @@ -1,3 +0,0 @@ -//= provide "../assets" - -var ScriptWithAssets = { }; diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_concatenation.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_concatenation.rb deleted file mode 100644 index 18c490c0..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_concatenation.rb +++ /dev/null @@ -1,28 +0,0 @@ -require "test_helper" - -class ConcatenationTest < Test::Unit::TestCase - def setup - @concatenation = Sprockets::Concatenation.new - @environment = environment_for_fixtures - end - - def test_record - assert_equal [], @concatenation.source_lines - assert_equal "hello\n", @concatenation.record(source_line("hello\n")).to_s - assert_equal "world\n", @concatenation.record(source_line("world\n")).to_s - assert_equal ["hello\n", "world\n"], @concatenation.source_lines.map { |source_line| source_line.to_s } - end - - def test_to_s - @concatenation.record(source_line("hello\n")) - @concatenation.record(source_line("world\n")) - assert_equal "hello\nworld\n", @concatenation.to_s - end - - def test_save_to - filename = File.join(FIXTURES_PATH, "output.js") - @concatenation.save_to(filename) - assert_equal @concatenation.to_s, IO.read(filename) - File.unlink(filename) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_environment.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_environment.rb deleted file mode 100644 index a65e3bf7..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_environment.rb +++ /dev/null @@ -1,64 +0,0 @@ -require "test_helper" - -class EnvironmentTest < Test::Unit::TestCase - def test_load_path_locations_become_pathnames_for_absolute_locations_from_the_root - environment = Sprockets::Environment.new("/root", ["/a", "b"]) - assert_load_path_equals ["/a", "/root/b", "/root"], environment - end - - def test_pathname_from_for_location_with_leading_slash_should_return_a_pathname_with_the_location_unchanged - environment = Sprockets::Environment.new("/root") - assert_absolute_location "/a", environment.pathname_from("/a") - end - - def test_pathname_from_for_relative_location_should_return_a_pathname_for_the_expanded_absolute_location_from_root - environment = Sprockets::Environment.new("/root") - assert_absolute_location "/root/a", environment.pathname_from("a") - assert_absolute_location "/root/a", environment.pathname_from("./a") - assert_absolute_location "/a", environment.pathname_from("../a") - end - - def test_register_load_location_should_unshift_the_location_onto_the_load_path - environment = Sprockets::Environment.new("/root") - environment.register_load_location("a") - assert_load_path_equals ["/root/a", "/root"], environment - environment.register_load_location("b") - assert_load_path_equals ["/root/b", "/root/a", "/root"], environment - end - - def test_register_load_location_should_remove_already_existing_locations_before_unshifting - environment = Sprockets::Environment.new("/root") - environment.register_load_location("a") - environment.register_load_location("b") - assert_load_path_equals ["/root/b", "/root/a", "/root"], environment - environment.register_load_location("a") - assert_load_path_equals ["/root/a", "/root/b", "/root"], environment - end - - def test_find_should_return_the_first_matching_pathname_in_the_load_path - environment = environment_for_fixtures - first_pathname = environment.find("foo.js") - assert_absolute_location_ends_with "src/foo.js", first_pathname - - environment.register_load_location(File.join(FIXTURES_PATH, "src", "foo")) - second_pathname = environment.find("foo.js") - assert_not_equal first_pathname, second_pathname - assert_absolute_location_ends_with "foo/foo.js", second_pathname - end - - def test_find_should_return_nil_when_no_matching_source_file_is_found - environment = environment_for_fixtures - assert_nil environment.find("nonexistent.js") - end - - def test_constants_should_return_a_hash_of_all_constants_defined_in_the_load_path - constants = environment_for_fixtures.constants - assert_kind_of Hash, constants - assert_equal %w(HELLO ONE TWO VERSION), constants.keys.sort - end - - protected - def assert_load_path_equals(load_path_absolute_locations, environment) - assert load_path_absolute_locations.zip(environment.load_path).map { |location, pathname| File.expand_path(location) == pathname.absolute_location }.all? - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_helper.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_helper.rb deleted file mode 100644 index fcb2ad44..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_helper.rb +++ /dev/null @@ -1,55 +0,0 @@ -require File.join(File.dirname(__FILE__), *%w".. lib sprockets") -require "test/unit" -require "fileutils" -require "tmpdir" - -class Test::Unit::TestCase - FIXTURES_PATH = File.expand_path(File.join(File.dirname(__FILE__), "fixtures")) unless defined?(FIXTURES_PATH) - - protected - def location_for_fixture(fixture) - File.join(FIXTURES_PATH, fixture) - end - - def content_of_fixture(fixture) - IO.read(location_for_fixture(fixture)) - end - - def environment_for_fixtures - Sprockets::Environment.new(FIXTURES_PATH, source_directories_in_fixtures_path) - end - - def source_directories_in_fixtures_path - Dir[File.join(FIXTURES_PATH, "**", "src")] - end - - def assert_absolute_location(location, pathname) - assert_equal File.expand_path(location), pathname.absolute_location - end - - def assert_absolute_location_ends_with(location_ending, pathname) - assert pathname.absolute_location[/#{Regexp.escape(location_ending)}$/] - end - - def pathname(location, environment = @environment) - Sprockets::Pathname.new(environment, File.join(FIXTURES_PATH, location)) - end - - def source_file(location, environment = @environment) - Sprockets::SourceFile.new(environment, pathname(location, environment)) - end - - def source_line(line, source_file = nil, line_number = 1) - Sprockets::SourceLine.new(source_file || source_file("dummy"), line, line_number) - end - - def with_temporary_directory - path = File.join(Dir.tmpdir, [caller[0][/`(.*)'/, 1], Time.now.to_f].join("_")) - begin - FileUtils.mkdir(path) - yield path - ensure - FileUtils.rm_rf(path) - end - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_pathname.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_pathname.rb deleted file mode 100644 index 7860a704..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_pathname.rb +++ /dev/null @@ -1,43 +0,0 @@ -require "test_helper" - -class PathnameTest < Test::Unit::TestCase - def setup - @environment = environment_for_fixtures - end - - def test_absolute_location_is_automatically_expanded - expanded_location = File.expand_path(File.join(FIXTURES_PATH, "foo")) - assert_absolute_location expanded_location, pathname("foo") - assert_absolute_location expanded_location, pathname("./foo") - assert_absolute_location expanded_location, pathname("./foo/../foo") - end - - def test_find_should_return_a_pathname_for_the_location_relative_to_the_absolute_location_of_the_pathname - assert_absolute_location_ends_with "src/foo/bar.js", pathname("src/foo").find("bar.js") - end - - def test_find_should_return_nil_when_the_location_relative_to_the_absolute_location_of_the_pathname_is_not_a_file_or_does_not_exist - assert_nil pathname("src/foo").find("nonexistent.js") - end - - def test_parent_pathname_should_return_a_pathname_for_the_parent_directory - assert_absolute_location_ends_with "src", pathname("src/foo").parent_pathname - assert_absolute_location_ends_with "foo", pathname("src/foo/foo.js").parent_pathname - end - - def test_source_file_should_return_a_source_file_for_the_pathname - source_file = pathname("src/foo.js").source_file - assert_kind_of Sprockets::SourceFile, source_file - assert_equal pathname("src/foo.js"), source_file.pathname - end - - def test_equality_of_pathnames - assert_equal pathname("src/foo.js"), pathname("src/foo.js") - assert_equal pathname("src/foo.js"), pathname("src/foo/../foo.js") - assert_not_equal pathname("src/foo.js"), pathname("src/foo/foo.js") - end - - def test_to_s_should_return_absolute_location - assert_equal pathname("src/foo.js").to_s, pathname("src/foo.js").absolute_location - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_preprocessor.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_preprocessor.rb deleted file mode 100644 index 1933767f..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_preprocessor.rb +++ /dev/null @@ -1,107 +0,0 @@ -require "test_helper" - -class PreprocessorTest < Test::Unit::TestCase - def setup - @environment = environment_for_fixtures - @preprocessor = Sprockets::Preprocessor.new(@environment) - end - - def test_double_slash_comments_that_are_not_requires_should_be_removed_by_default - require_file_for_this_test - assert_concatenation_does_not_contain_line "// This is a double-slash comment that should not appear in the resulting output file." - assert_concatenation_contains_line "/* This is a slash-star comment that should not appear in the resulting output file. */" - end - - def test_double_slash_comments_that_are_not_requires_should_be_ignored_when_strip_comments_is_false - @preprocessor = Sprockets::Preprocessor.new(@environment, :strip_comments => false) - require_file_for_this_test - assert_concatenation_contains_line "// This is a double-slash comment that should appear in the resulting output file." - assert_concatenation_contains_line "/* This is a slash-star comment that should appear in the resulting output file. */" - - assert_concatenation_contains_line "/* This is multiline slash-star comment" - assert_concatenation_contains_line "* that should appear in the resulting" - assert_concatenation_contains_line "* output file */" - - assert_concatenation_contains_line "This is not a PDoc comment that should appear in the resulting output file." - end - - def test_multiline_comments_should_be_removed_by_default - require_file_for_this_test - assert_concatenation_does_not_contain_line "/**" - assert_concatenation_does_not_contain_line " * This is a PDoc comment" - assert_concatenation_does_not_contain_line " * that should appear in the resulting output file." - assert_concatenation_does_not_contain_line "**/" - end - - def test_requiring_a_single_file_should_replace_the_require_comment_with_the_file_contents - require_file_for_this_test - assert_concatenation_contains <<-LINES - var before_require; - var Foo = { }; - var after_require; - LINES - end - - def test_requiring_a_file_that_does_not_exist_should_raise_an_error - assert_raises(Sprockets::LoadError) do - require_file_for_this_test - end - end - - def test_requiring_the_current_file_should_do_nothing - require_file_for_this_test - assert_equal "", output_text - end - - def test_requiring_a_file_after_it_has_already_been_required_should_do_nothing - require_file_for_this_test - assert_concatenation_contains <<-LINES - var before_first_require; - var Foo = { }; - var after_first_require_and_before_second_require; - var after_second_require; - LINES - end - - protected - attr_reader :environment, :preprocessor - - def concatenation - preprocessor.concatenation - end - - def output_text - preprocessor.concatenation.to_s - end - - def source_lines_matching(line) - concatenation.source_lines.select { |source_line| source_line.line.strip == line } - end - - def require_file(location) - preprocessor.require(environment.find(location).source_file) - end - - def require_file_for_this_test - require_file(file_for_this_test) - end - - def file_for_this_test - caller.map { |c| c[/`(.*?)'$/, 1] }.grep(/^test_/).first[5..-1] + ".js" - end - - def assert_concatenation_does_not_contain_line(line) - assert source_lines_matching(line).empty?, "Expected #{line.inspect} to not exist" - end - - def assert_concatenation_contains_line(line) - assert source_lines_matching(line).any?, "Expected #{line.inspect} to exist" - end - - def assert_concatenation_contains(indented_text) - lines = indented_text.split($/) - initial_indent = lines.first[/^\s*/].length - unindented_text = lines.map { |line| line[initial_indent..-1] }.join($/) - assert output_text[unindented_text] - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_secretary.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_secretary.rb deleted file mode 100644 index a2e33250..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_secretary.rb +++ /dev/null @@ -1,83 +0,0 @@ -require "test_helper" - -class SecretaryTest < Test::Unit::TestCase - def test_load_locations_are_not_expanded_when_expand_paths_is_false - secretary = Sprockets::Secretary.new(:root => FIXTURES_PATH) - secretary.add_load_location("src/**/", :expand_paths => false) - - assert_equal [File.join(FIXTURES_PATH, "src/**"), FIXTURES_PATH], - secretary.environment.load_path.map { |pathname| pathname.absolute_location } - end - - def test_load_locations_are_expanded_when_expand_paths_is_true - secretary = Sprockets::Secretary.new(:root => FIXTURES_PATH) - secretary.add_load_location("src/**/", :expand_paths => true) - - assert_equal [File.join(FIXTURES_PATH, "src", "foo"), File.join(FIXTURES_PATH, "src"), FIXTURES_PATH], - secretary.environment.load_path.map { |pathname| pathname.absolute_location } - end - - def test_source_files_are_not_expanded_when_expand_paths_is_false - secretary = Sprockets::Secretary.new(:root => FIXTURES_PATH) - assert_raises(Sprockets::LoadError) do - secretary.add_source_file("src/f*.js", :expand_paths => false) - end - end - - def test_source_files_are_expanded_when_expand_paths_is_true - secretary = Sprockets::Secretary.new(:root => FIXTURES_PATH) - secretary.add_source_file("src/f*.js", :expand_paths => true) - - assert_equal [File.join(FIXTURES_PATH, "src", "foo.js")], - secretary.preprocessor.source_files.map { |source_file| source_file.pathname.absolute_location } - end - - def test_install_assets_into_empty_directory - with_temporary_directory do |temp| - secretary = Sprockets::Secretary.new(:root => FIXTURES_PATH, :asset_root => temp) - secretary.add_source_file("src/script_with_assets.js") - - assert_equal [], Dir[File.join(temp, "**", "*")] - secretary.install_assets - assert_equal paths_relative_to(temp, - "images", "images/script_with_assets", "images/script_with_assets/one.png", - "images/script_with_assets/two.png", "stylesheets", "stylesheets/script_with_assets.css"), - Dir[File.join(temp, "**", "*")].sort - end - end - - def test_install_assets_into_nonexistent_directory - with_temporary_directory do |temp| - temp = File.join(temp, "assets") - secretary = Sprockets::Secretary.new(:root => FIXTURES_PATH, :asset_root => temp) - secretary.add_source_file("src/script_with_assets.js") - - assert_equal [], Dir[File.join(temp, "**", "*")] - secretary.install_assets - assert_equal paths_relative_to(temp, - "images", "images/script_with_assets", "images/script_with_assets/one.png", - "images/script_with_assets/two.png", "stylesheets", "stylesheets/script_with_assets.css"), - Dir[File.join(temp, "**", "*")].sort - end - end - - def test_install_assets_into_subdirectories_that_already_exist - with_temporary_directory do |temp| - secretary = Sprockets::Secretary.new(:root => FIXTURES_PATH, :asset_root => temp) - secretary.add_source_file("src/script_with_assets.js") - - FileUtils.mkdir_p(File.join(temp, "images", "script_with_assets")) - assert_equal paths_relative_to(temp, "images", "images/script_with_assets"), Dir[File.join(temp, "**", "*")] - secretary.install_assets - assert_equal paths_relative_to(temp, - "images", "images/script_with_assets", "images/script_with_assets/one.png", - "images/script_with_assets/two.png", "stylesheets", "stylesheets/script_with_assets.css"), - Dir[File.join(temp, "**", "*")].sort - end - end - - protected - def paths_relative_to(root, *paths) - paths.map { |path| File.join(root, path) } - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_source_file.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_source_file.rb deleted file mode 100644 index 6c3d8945..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_source_file.rb +++ /dev/null @@ -1,34 +0,0 @@ -require "test_helper" -require "enumerator" -Enumerator = Enumerable::Enumerator unless defined?(Enumerator) # for 1.9.1 compatibility - -class SourceFileTest < Test::Unit::TestCase - def setup - @environment = environment_for_fixtures - end - - def test_each_source_line - source_file_lines = Enumerator.new(source_file("src/foo/bar.js"), :each_source_line).to_a - assert_equal content_of_fixture("src/foo/bar.js"), source_file_lines.map { |line| line.line }.join - assert_equal 4, source_file_lines.length - end - - def test_find_should_return_pathname_for_file_relative_to_the_current_pathname - assert_absolute_location_ends_with "test/fixtures/src/foo/bar.js", source_file("src/foo/foo.js").find("bar.js") - end - - def test_find_should_return_nil_for_nonexistent_file - assert_nil source_file("src/foo/foo.js").find("nonexistent.js") - end - - def test_equality_of_source_files - assert_equal source_file("src/foo/foo.js"), source_file("src/foo/foo.js") - assert_equal source_file("src/foo/foo.js"), source_file("src/foo/../foo/foo.js") - assert_not_equal source_file("src/foo/foo.js"), source_file("src/foo.js") - assert_not_equal source_file("src/foo/foo.js"), source_file("src/foo/bar.js") - end - - def test_mtime_should_return_now_if_file_does_not_exist - assert source_file("src/foo/nonexistent.js").mtime.instance_of?(Time) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_source_line.rb b/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_source_line.rb deleted file mode 100644 index bd2d8181..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/sprockets-1.0.2/test/test_source_line.rb +++ /dev/null @@ -1,89 +0,0 @@ -require "test_helper" - -class SourceLineTest < Test::Unit::TestCase - def test_line_that_begins_with_double_slash_should_be_a_comment - assert source_line("//").comment? - assert source_line("//test").comment? - assert source_line("//= require").comment? - assert source_line("//= require ").comment? - assert source_line(" //").comment? - assert source_line("\t//").comment? - end - - def test_line_that_begins_a_multiline_comment - assert source_line(" /*").begins_multiline_comment? - assert source_line(" /**").begins_multiline_comment? - end - - def test_line_that_begins_a_pdoc_comment - assert !source_line(" /*").begins_pdoc_comment? - assert source_line(" /**").begins_pdoc_comment? - end - - def test_line_that_ends_a_multiline_comment - assert source_line(" */").ends_multiline_comment? - assert source_line(" **/").ends_multiline_comment? - end - - def test_line_that_ends_a_pdoc_comment - assert !source_line(" */").ends_pdoc_comment? - assert source_line(" **/").ends_pdoc_comment? - end - - def test_line_that_contains_but_does_not_begin_with_double_slash_should_not_be_a_comment - assert !source_line("f //").comment? - assert !source_line("f //= require ").comment? - end - - def test_comment_should_be_extracted_from_comment_lines - assert_equal "test", source_line("//test").comment - assert_equal " test", source_line("// test").comment - assert_equal nil, source_line("f //test").comment - end - - def test_line_that_contains_require_comment_should_be_a_require - assert source_line("//= require ").require? - assert !source_line("//= require").require? - assert source_line("//= require \"foo\"").require? - assert !source_line("//= require f").require? - end - - def test_require_should_be_extracted_from_require_lines - assert_nil source_line("//= require").require - assert_equal "", source_line("//= require ").require - assert_equal "", source_line("//= require ").require - assert_equal "\"foo\"", source_line("//= require \"foo\"").require - end - - def test_line_that_contains_a_provide_comment_should_be_a_provide - assert source_line("//= provide \"../assets\"").provide? - assert !source_line("//= provide").provide? - assert !source_line("//= provide <../assets>").provide? - end - - def test_provide_should_be_extracted_from_provide_lines - assert_nil source_line("//= provide").provide - assert_equal "../assets", source_line("//= provide \"../assets\"").provide - end - - def test_inspect_should_include_source_file_location_and_line_number - environment = environment_for_fixtures - pathname = Sprockets::Pathname.new(environment, "/a/b/c.js") - source_file = Sprockets::SourceFile.new(environment, pathname) - assert_equal "line 25 of #{File.expand_path("/a/b/c.js")}", source_line("hello", source_file, 25).inspect - end - - def test_interpolation_of_constants - assert_equal %(var VERSION = "1.0";\n), source_line('var VERSION = "<%= VERSION %>";').to_s("VERSION" => "1.0") - end - - def test_interpolation_of_missing_constant_raises_undefined_constant_error - assert_raises(Sprockets::UndefinedConstantError) do - source_line('<%= NONEXISTENT %>').to_s("VERSION" => "1.0") - end - end - - def test_to_s_should_strip_trailing_whitespace_before_adding_line_ending - assert_equal "hello();\n", source_line("hello(); \t \r\n").to_s({}) - end -end diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/History.txt b/lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/History.txt deleted file mode 100644 index cd4a548e..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/History.txt +++ /dev/null @@ -1,3 +0,0 @@ -=== 1.0.0 2009-08-27 - -* Ruby 1.9 compatibility diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/Manifest.txt b/lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/Manifest.txt deleted file mode 100644 index 50b749dd..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/Manifest.txt +++ /dev/null @@ -1,64 +0,0 @@ -History.txt -Manifest.txt -README.rdoc -Rakefile -lib/templater.rb -lib/templater/actions/action.rb -lib/templater/actions/directory.rb -lib/templater/actions/empty_directory.rb -lib/templater/actions/file.rb -lib/templater/actions/template.rb -lib/templater/capture_helpers.rb -lib/templater/cli/generator.rb -lib/templater/cli/manifold.rb -lib/templater/cli/parser.rb -lib/templater/core_ext/kernel.rb -lib/templater/core_ext/string.rb -lib/templater/description.rb -lib/templater/discovery.rb -lib/templater/generator.rb -lib/templater/manifold.rb -lib/templater/spec/helpers.rb -script/console -script/destroy -script/generate -spec/actions/directory_spec.rb -spec/actions/empty_directory_spec.rb -spec/actions/file_spec.rb -spec/actions/template_spec.rb -spec/core_ext/string_spec.rb -spec/generator/actions_spec.rb -spec/generator/arguments_spec.rb -spec/generator/desc_spec.rb -spec/generator/destination_root_spec.rb -spec/generator/empty_directories_spec.rb -spec/generator/files_spec.rb -spec/generator/generators_spec.rb -spec/generator/glob_spec.rb -spec/generator/invocations_spec.rb -spec/generator/invoke_spec.rb -spec/generator/options_spec.rb -spec/generator/render_spec.rb -spec/generator/source_root_spec.rb -spec/generator/templates_spec.rb -spec/manifold_spec.rb -spec/options_parser_spec.rb -spec/results/erb.rbs -spec/results/file.rbs -spec/results/random.rbs -spec/results/simple_erb.rbs -spec/spec_helper.rb -spec/spec_helpers_spec.rb -spec/templater_spec.rb -spec/templates/erb.rbt -spec/templates/glob/README -spec/templates/glob/arg.js -spec/templates/glob/hellothar.%feh% -spec/templates/glob/hellothar.html.%feh% -spec/templates/glob/subfolder/jessica_alba.jpg -spec/templates/glob/subfolder/monkey.rb -spec/templates/glob/test.rb -spec/templates/literals_erb.rbt -spec/templates/simple.rbt -spec/templates/simple_erb.rbt -templater.gemspec diff --git a/lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/README.rdoc b/lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/README.rdoc deleted file mode 100644 index 8072eef9..00000000 --- a/lib/middleman/vendor/gems/ruby/1.9.1/gems/templater-1.0.0/README.rdoc +++ /dev/null @@ -1,266 +0,0 @@ -= Templater - -* http://github.com/jnicklas/templater - -== Summary - -Templater is a Ruby framework for building code generators. - -== Description - -Templater has the ability to both copy files from A to B and also to render templates using ERB. Templater consists of four parts: - -- Actions (File copying routines, templates generation and directories creation routines). -- Generators (set of rules). -- Manifolds (generator suites). -- The command line interface. - -Hierarchy is pretty simple: manifold has one or many public and private generators. Public ones are supposed to be called -by end user. Generators have one or more action that specify what they do, where they take files, how they name resulting -files and so forth. - -== Idea behind Templater - -Templater is designed to be flexible and designed to be reflective. Generators created with templater are definitions of what goes where, they provide no interface for the user. This allows you to use templater generators inside your own code, or with the bundled CLI interface, or with your own interface. - -== Example - -This is how to create a very simple system for generating things: - - module MyGenerators - - extend Templater::Manifold - - class BlogGenerator < Templater::Generator - # directory this generator uses as source root when searching - # for files, directories, templates - def self.source_root - File.join(File.dirname(__FILE__), 'templates') - end - - # uses blog.rbt template (note conventional trailing t) - # placing resulting file to blog.rb relatively to - # destination root - template :blog, 'blog.rb' - - # does simple copy of me.jpg placing resulting file to me.jpg relatively to - # destination root - file :me, 'me.jpg' - - # creates empty directory public/javascripts relatively to - # destination root - empty_directory :javascripts, File.join("public", "javascripts") - end - - class WikiGenerator < Templater::Generator - - def self.source_root - File.join(File.dirname(__FILE__), 'templates') - end - - template :wiki, 'wiki.rb' - file :img, 'wiki.jpg' - - end - - # The generators are added to the manifold, and assigned the names 'wiki' and 'blog'. - # So you can call them

    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